commit 33ace2769208e8ba2d96c2367ac38b3157e76b90 Author: lishenfeng Date: Wed Nov 13 09:42:42 2024 +0800 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..44e168b --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +node_modules/ +/.pnp +.pnp.js +unpackage/ + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +yarn.lock +build.7z diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json new file mode 100644 index 0000000..07d9281 --- /dev/null +++ b/.hbuilderx/launch.json @@ -0,0 +1,23 @@ +{ + // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 + "version" : "0.0", + "configurations" : [ + { + "app-plus" : { + "launchtype" : "local" + }, + "default" : { + "launchtype" : "local" + }, + "mp-weixin" : { + "launchtype" : "local" + }, + "type" : "uniCloud" + }, + { + "playground" : "standard", + "type" : "uni-app:app-android" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fe5bd20 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.formatOnSave": true, + "editor.formatOnPaste": true +} \ No newline at end of file diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..3069563 --- /dev/null +++ b/App.vue @@ -0,0 +1,92 @@ + + + diff --git a/compent/formZdy/index.vue b/compent/formZdy/index.vue new file mode 100644 index 0000000..b9140c7 --- /dev/null +++ b/compent/formZdy/index.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..b507463 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + +
+ + + diff --git a/main.js b/main.js new file mode 100644 index 0000000..cc81e61 --- /dev/null +++ b/main.js @@ -0,0 +1,56 @@ +// #ifndef VUE3 +import Vue from 'vue' +import uView from '@/uni_modules/uview-ui' +Vue.use(uView) +import App from './App' +import { + $http +} from '@escook/request-miniprogram' +Vue.config.productionTip = false +uni.$http = $http +$http.baseUrl = 'http://local.gunshiiot.com:18083' +// 请求拦截器 +$http.beforeRequest = function (options) { + if (options.url.indexOf('/doLogin') == -1) { + options.header = { + 'Authorization': 'Bearer ' + uni.getStorageSync('Gs-Token') + } + } +} +// 响应拦截器 +$http.afterRequest = function (options) { + if (options.data.code == 405) { + uni.redirectTo({ + url: '/pages/login/login' + }) + } + // uni.hideLoading() +} +uni.$showMsg = function (title = '数据请求失败了', duration = 1500) { + return uni.showToast({ + title, + duration, + icon: 'none' + }) +} +Vue.config.productionTip = false +App.mpType = 'app' + +const app = new Vue({ + ...App +}) +app.$mount() +// #endif + +// #ifdef VUE3 +import { + createSSRApp +} from 'vue' +import App from './App.vue' +export function createApp() { + const app = createSSRApp(App) + return { + app + } +} +// #endif \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..a86662d --- /dev/null +++ b/manifest.json @@ -0,0 +1,125 @@ +{ + "name" : "小玉潭水库", + "appid" : "__UNI__7573222", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : 1, + "transformPx" : false, + "app-plus" : { + /* 5+App特有相关 */ + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "nvueStyleCompiler" : "uni-app", + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : { + "VideoPlayer" : {}, + "Messaging" : {}, + "Camera" : {}, + "Maps" : {}, + "Contacts" : {} + }, + /* 模块配置 */ + "distribute" : { + /* 应用发布信息 */ + "android" : { + /* android打包配置 */ + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : { + "dSYMs" : false + }, + /* ios打包配置 */ + "sdkConfigs" : { + "ad" : {}, + "maps" : { + "amap" : { + "name" : "4799ff37874e604a22b910b44ca948e5", + "appkey_ios" : "755dafdf984df7a1609fb30f6861bd17", + "appkey_android" : "755dafdf984df7a1609fb30f6861bd17" + } + } + }, + "splashscreen" : { + "androidStyle" : "common" + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + } + } + }, + /* SDK配置 */ + "quickapp" : {}, + /* 快应用特有相关 */ + "mp-weixin" : { + /* 小程序特有相关 */ + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "vueVersion" : "2", + "h5" : { + "template" : "template.html", + "sdkConfigs" : { + "maps" : { + "amap" : { + "key" : "4799ff37874e604a22b910b44ca948e5", + "securityJsCode" : "", + "serviceHost" : "" + } + } + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..ce80f28 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,128 @@ +{ + "name": "tsg-app", + "version": "1.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@escook/request-miniprogram": "^0.2.1", + "crypto-js": "^4.2.0", + "echarts": "^4.9.0", + "es6-promise": "^4.2.8", + "flv.js": "^1.6.2", + "moment": "^2.30.1" + } + }, + "node_modules/@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "node_modules/@escook/request-miniprogram": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/@escook/request-miniprogram/-/request-miniprogram-0.2.1.tgz", + "integrity": "sha512-ueWV5YsaEm/ycQZuEjMiA88GFMhfBQSjy9GrP9omy4xAQajkGTbYIlnhzsDfWzRPmRC1fKmAiKMrCVcgS+SHcQ==" + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "dependencies": { + "zrender": "4.3.2" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/flv.js": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz", + "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", + "dependencies": { + "es6-promise": "^4.2.8", + "webworkify-webpack": "^2.1.5" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/webworkify-webpack": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", + "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" + }, + "node_modules/zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" + } + }, + "dependencies": { + "@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "@escook/request-miniprogram": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/@escook/request-miniprogram/-/request-miniprogram-0.2.1.tgz", + "integrity": "sha512-ueWV5YsaEm/ycQZuEjMiA88GFMhfBQSjy9GrP9omy4xAQajkGTbYIlnhzsDfWzRPmRC1fKmAiKMrCVcgS+SHcQ==" + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "echarts": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-4.9.0.tgz", + "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==", + "requires": { + "zrender": "4.3.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "flv.js": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/flv.js/-/flv.js-1.6.2.tgz", + "integrity": "sha512-xre4gUbX1MPtgQRKj2pxJENp/RnaHaxYvy3YToVVCrSmAWUu85b9mug6pTXF6zakUjNP2lFWZ1rkSX7gxhB/2A==", + "requires": { + "es6-promise": "^4.2.8", + "webworkify-webpack": "^2.1.5" + } + }, + "moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, + "webworkify-webpack": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/webworkify-webpack/-/webworkify-webpack-2.1.5.tgz", + "integrity": "sha512-2akF8FIyUvbiBBdD+RoHpoTbHMQF2HwjcxfDvgztAX5YwbZNyrtfUMgvfgFVsgDhDPVTlkbb5vyasqDHfIDPQw==" + }, + "zrender": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz", + "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..547af8c --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@escook/request-miniprogram": "^0.2.1", + "crypto-js": "^4.2.0", + "echarts": "^4.9.0", + "es6-promise": "^4.2.8", + "flv.js": "^1.6.2", + "moment": "^2.30.1" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..2119879 --- /dev/null +++ b/pages.json @@ -0,0 +1,253 @@ +{ + "easycom": { + "^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [{ + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/upgrade/index", + "style": { + "navigationBarTitleText": "", + "navigationStyle": "custom", + "app-plus": { + "bounce": "none", + "animationType": "none", + "background": "transparent" + } + } + }, + + { + "path": "pages/xcrw/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/xcrw/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/stlljk/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/spjk/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/spjk/spbf/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/aqjc/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/homeIndex/index", + "style": { + "navigationBarTitleText": "", + "enablePullDownRefresh": true, + "app-plus": { + "pullToRefresh": { + "support": true, + "style": "default", + "offset": "70px" + } + } + } + }, + + { + "path": "pages/mypage/mypage", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wtcl/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wxyh/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wxyh/formZdy/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/xcrw/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/wtcl/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/mypage/compents/xcrw/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/personInfo/personInfo", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/modifyPassword/modifyPassword", + "style": { + "navigationBarTitleText": "" + } + }, + + { + "path": "pages/wxyh/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/wtcl/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/wtcl/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/detail/qxyj", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/detail/wyyj", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/yj/detail/aiyj", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/messageList/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/messageList/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/skInfo/detail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/skInfo/waterDatail/index", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/ylzList/detail/index", + "style": { + "navigationBarTitleText": "" + } + } + + ], + "usingComponents": { + "map": "/uni_modules/@dcloudio/uni-map/components/uni-map/uni-map" + }, + + "tabBar": { + "color": "#333333", + "selectedColor": "#59A7FF", + "list": [{ + "pagePath": "pages/homeIndex/index", + "iconPath": "/static/tabs/home.png", + "selectedIconPath": "static/tabs/home2.png", + "text": "首页" + }, + { + "pagePath": "pages/mypage/mypage", + "iconPath": "/static/images/my2_icon@2x.png", + "selectedIconPath": "static/images/my2_icon@2x2.png", + "text": "我的" + } + ] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "backgroundColorTop": "transparent", + "navigationStyle": "custom", + "app-plus": { + "background": "#efeff4" + } + }, + "subPackages": [{ + "root": "subpkg", + "pages": [{ + "path": "rainDetail/rainDetail" + }] + }], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "uni-app", + "navigationBarBackgroundColor": "#F8F8F8", + "backgroundColor": "#F8F8F8", + "backgroundColorTop": "transparent", + "navigationStyle": "custom", + "app-plus": { + "background": "#efeff4" + } + } +} \ No newline at end of file diff --git a/pages/addressBook/addressBook.vue b/pages/addressBook/addressBook.vue new file mode 100644 index 0000000..02120d9 --- /dev/null +++ b/pages/addressBook/addressBook.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/pages/addressBook/follow.vue b/pages/addressBook/follow.vue new file mode 100644 index 0000000..de2078d --- /dev/null +++ b/pages/addressBook/follow.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/pages/addressBook/myDept.vue b/pages/addressBook/myDept.vue new file mode 100644 index 0000000..ea38bfd --- /dev/null +++ b/pages/addressBook/myDept.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/pages/aqjc/dataUrl/index.js b/pages/aqjc/dataUrl/index.js new file mode 100644 index 0000000..ab1b093 --- /dev/null +++ b/pages/aqjc/dataUrl/index.js @@ -0,0 +1,3 @@ +export const imageUrl060 = 'data:image/png;base64,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'; +export const imageUrl090 = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB3kAAAJrCAYAAADtQClzAAAgAElEQVR4nOzdB7RcZb338f/MnHPSewIJIfTekSaIAoJgRbD3q2LDglfFclXsevWqV0WvvYtexK6gIkVR6b33EkogpJCenDbzro3f/b7P2u+eOTMnJwlJvp+1zjrJlD27zJzZ+/k9/+epNBqNkCRJkiRpbVUqlZ6ImBERD3W4qLERMTEiHvEaVZIkSZKkoVXdR5IkSZKkETIqIqYNY1FZyDvFgyBJkiRJUnsMeSVJkiRJIyULanfJino7XN7MiNjBoyBJkiRJUnsMeSVJkiRJI2XLiNgrIro6XN52EbGbR0GSJEmSpPYY8kqSJEmSRspWhLw9HS5vJ0NeSZIkSZLaZ8grSZIkSRopWzFc86gOl7djROzsNaokSZIkSe3xAlqSJEmSNFKmE/R2GvJmz5k9jLl8JUmSJEnaLBnySpIkSZJGyriImBAR3R0ub3JETDHklSRJkiSpPYa8kiRJkqSR0sNPV4fLGx0RYwx5JUmSJElqjyGvJEmSJGmkdRrWNrg+NeSVJEmSJKkNhrySJEmSpJEywHIaHS4ve96gR0GSJEmSpPYY8kqSJEmSRsogAa8hryRJkiRJ65AhryRJkiRppNRZTr3D5Q0a8kqSJEmS1D5DXkmSJEnSSOq0ijeGWf0rSZIkSdJmy5BXkiRJkjRSKmu5HINeSZIkSZLaYMgrSZIkSdrQKiMQEEuSJEmStNkw5JUkSZIkSZIkSZKkjYghryRJkiRJkiRJkiRtRLoqFUfEkiRJkiQ9MXiNKkmSJElqNBqb/T4YipW8kiRJkiRJkiRJkrQRMeSVJEmSJEmSJEmSpI2IIa8kSZIkSZIkSZIkbUQMeSVJkiRJkiRJkiRpI2LIK0mSJEmSJEmSJEkbEUNeSZIkSZIkSZIkSdqIGPJKkiRJkiRJkiRJ0kbEkFeSJEmSJEmSJEmSNiKGvJIkSZIkSZIkSZK0ETHklSRJkiSNlMowlzPc50mSJEmStFky5JUkSZIkSZIkSZKkjYghryRJkiTpiaLhkZAkSZIkaWiGvJIkSZKkkdZpWNso/JYkSZIkSS0Y8kqSJEmSRkqd+XUHO1zeIEGvIa8kSZIkSW0w5JUkSZIkjZQBltPf4fL6DXklSZIkSWqfIa8kSZIkaaQMENQOdLi8PqqAJUmSJElSGwx5JUmSJEkjJQ9rO63kXZMM2SxJkiRJkoZgyCtJkiRJGil9hLWdzsnbO4zqX0mSJEmSNluGvJIkSZKkkbI2IW+fR0GSJEmSpPYY8kqSJEmSRkr/MIdd7reSV5IkSZKk9hnySpIkSZJGSp2Qt9Lh8urDqP6VJEmSJGmzZcgrSZIkSRopVap4ax0urzaM6l9JkiRJkjZbhrySJEmSpJHSzXVmd4fL6yHo7bQCWJIkSZKkzZIhryRJkiRppIwmrO3pcHnjkoBYkiRJkiQNwQtoSZIkSdJIGRMRXcOo5B0fEaOs5JUkSZIkqT2GvJIkSZKkkZKHvF0dLm8sIa/XqJIkSZIktcELaEmSJEnSSOnhOrPW4fJ6qP61kleSJEmSpDYY8kqSJEmSRkqN68xOrzW7hzGPryRJkiRJmy1DXkmSJEnSSBnFcjqtyB3LUM8Nj4QkSZIkSUPrdJ4kSZIkSZKaWRARiyKir8M99EBETDPklSRJkiSpPVbySpIkSdKGM24T2/fZkMtThlHJOzoiJq6jdVob2XZMKjy/0sH21RyGWpIkSZK0LhjySpIkSdL6Mb4k1H01QWArEyJir8JzD+hgjcc8QQPUVKehcKd2iIgthrlery+MgrVbROzf5vO3jIgjR35zJEmSJEmbO0NeSZIkSRq+CR1Mg/OMiHhe4bYT2whsd46IkyNiVnLbayLiqS2e00N1bKY7It4REdtvxlP2bM8+DOb/fQr/7uIY7hER05s891URcVDy//0i4sXJ/MNFVR5fZdnZMT4+IrZpI9CXJEmSJKkthrySJEmSNHxZaLttm8/Ogr9nErrmlkTEwfy72TDAWTh4aGHY39ElgXFqx4h4GfPc9kbE23mdfyN43Nw8GBFvZZuzMPc/IuJpEfEGAvCPE/QW1agAXpXcPoHgvVnImx3D90XEvhGxlGrel0fEmyLiGK/DJUmSJEkjwYtLSZIkSRq+w6gKbefaqj8iVib/zwLEeQynPJNQsGwY4Oy+mwl284D4riHmes2Gdz6FgLKX13iYCtSXbobH+y4C76B6NztuJ0XEURFxbEQ8vTCkdZWffSKiEREDVPBmBiPi0Yjoa/Ja3VRtTybEz47xI7z+czeCobMlSZIkSRuBzXWoLkmSJEkaCTcT3P2Z4C8LButNlrsmIu7kOmwPQr89CHtfFBE7EQheQ5Xo1oSzhxIQZ6HkHyLiXF7n4Rbrv1shVH4gIi6NiF9ExOzN8MgPsm+Dqtws9H0oIi6MiD0J0Nckj9+Z/X8ix/M9EbGC4Dzb9wsJz8tkQf3iiLiaqt4s4L2H98pTHLJZkiRJkjQSrOSVJEmSpOH7E4Hq01jCIUNUaq4m5HtdRDwnIuYwnO/eDPt8O4/LqkEPj4h3sswdGG75Sdxfobq0THadt2tEfJ9lBwFlFvqeHxFXbabHexG/+whd/xIRt/B7fiGcz8L31zKX7oXM45s/f4CfBseyOMR2Fsb/OiK2YqjtlVRUr+Z1JEmSJElaa1bySpIkSVL7uvlZRbg3l+DuyIj4JcMhZ8P6/oRgNVUnFMxDvyw83C4iLouISVSbnsPjV1MZnFfznk+F70LCxXyo4PERMYPK0aXctjfr9veIeC/z0XaxXs8l7P3jZnTMu6iMzvb97gTfvYTzB0TEP9h/y5PnZGH7JRFxQkScERH3sd+7OB6TWM6BEXET74PgeBxIOPyBiLifiu2dOJZZB4Ark8BYkiRJkqRhsZJXkiRJktq3BWHpVCo1G4R8d7GErEr25RHxymSJYwgEJxH0HcBzstBxQUTcwRDKNzFscBD4ns9PFsreSNXwRIYXnk1w+KqIODWp8B3H668k7M2qgF/Ga7+R5y3cjI53dpyOIXSdEBFvZWjsXo7JoQzNvLwwx+6tEfF7hng+hMrfHSPihYS42ZDMb4uITyWhehf7/rHkdbO5kZ/Jscpe8wJeq1j9K0mSJElSR6zklSRJkqT2zYqIg6gMncKwvNnPvSzhNwR7WfD6LcK8Xamg3YcQNrv/p4SvVYZpfirPzULbs6m+rRPwzmcZ3YTHPRGxC8veitD5Yl4/u/04wuMPEA7vwXyz2c83CDv3Isgc3MSPfTZc8gsIVutUV68gdO0n8O5hX6bBa4P5eLOg9yUR8SPC+VdRxT2asHcvHtvg+JzCXMmnUa3744j4DPv6awzPnc3L+8+IWLIB94skSZIkaSNnJa8kSZIktW8MweoWVIDWGNb3QZaQDbN8erK0BtW3cwgG+wgZsyrSycz1eii3PZkAcF+euxsVuouo3n0Z1aTZMu+OiMsj4ssEtffwnNEMHbyE9TwrIr4YEdfyGhMZUvrfCCU3dVkl7s8IW1dybH5B0D0qCb+rhZB3OnPr3sdw2K/nGGb79ndU5H4iIm6LiGU8p48w9xIqpr/H487muOzFcl49xLzNkiRJkiQNyUpeSZIkSWrfOMLBeYSyW1C5mXokIv4r+f8thLGvIdRdQWXuBQSLWVB8dUQMMD/vrTwvW/7TWP4cKk67mbd3a4b/vYlK3+t5zp0R8X6GFc7C4Jt5jZmEvtNYzvVUsm7qHuUn2N6H2f9dyZDbF1Plmzqc+57ObXvy/Gs5VkdQvX0H4XEQtmcV3MdS7Xs2x29Hhny+n3D5rsL8v5IkSZIkdcyQV5IkSZLaM46hkddQ4ZkFrdsXQt4dqKo9I7ltIT+LCPhWUK17NRW9Mxn6eXduuzd57v08t0YV6ik8fgeqircgZFydvFaNqtH7GGL4cK79ssd+jv/P3QyGai4zhn3ST+DexfEsVjU3GFJ7Hsf4swy3/SL294kEtj2FuXwHGB56JcHu03hctpy/EA6PZvmSJEmSJA2bIa8kSZIktScbXvmoiLiQ6tDRBHmXJM/+d4LY1SVLrBHurSLQ3ZVAeGeG/H0a87bm/hYRNzBs8248NqvefS3DCw8Q+FYKr3NyRDybit8BqnZ/QzXx+QwzfM//v3obVL4NxW0ZSTOYX3dfKnerBOGPErbXCvv+74S1ryA8n8Hw2TOo5t6WoDgNbLMQ+DDm8s3mQv4jgfIJXH/vznujWDksSZIkSVJHnJNXkiRJktoziWF7lxK2XkeoNyt59mEtlrSGYZR3Y6jgYwh3JxO63kslb+5u/l/lOf9BSPgAQzr/MyL+m2rSVFaVelVEnBsRv46Ib0XEeQS+2VDC20XE7U+wY74uw91uKpuz4ZefQxVzF7cvZf82ChW5y1mnJ7G/3hoRz+CYZ8fklxHxKYbmTsPhhyLi5xHxXX5fSFicHdvTqCT+WTKPryRJkiRJw2IlryRJkiS1byVBXlAd+3oqa0/nvlVNlpSFe9sQNv6FoLBGRehUhoJelczvOp7hgfej+nQm4W4f1b5zGPY5W9ZHC6/1dYYavoVrvqzydAFB438STl5NaL30CXLsG4XfIyXbT8+MiBcTdJ/JXMhT2LfZENZHc9/9yWs+nQB/Jvt8HvsvG7r5r4T9V3C80s7TvyLYfSwiZrPs8zm2h1BlfTah/X0E/5IkSZIkdcyQV5IkSZLaszgifkR4Ggyl/MOIOIn5bf9OqDieADYIcucwh+vuzIl7FUP9Psy8vhO5NhuXrEVW3fu2iDiQgPB6hlv+EJW72xMcryqZT/Yhln0AQxPfz5DSE6hMPZz1fX5E/HiEj30+DPFAh8/r5/dIzxOcheqfZC7kN0fEzdx+IVXNl0XEcyPiGxGxJHleNq/usyLiJwS934yIXQiLswrf/Ql/9ymEvFWOz6si4skE8zcQKGcB9nwel71nvhIRD47w9kqSJEmSNhOGvJIkSZLUngUMfZyHgVmQ+QUqNl8dEccztO9hVNgGc7a+np8vUmW7BUHgw9z/p4j4M6FibiXDNd/N0L41Kj/HEVZux/Xcswvzu46nyvQpBLqLGAr6HbzmrcwbfD7PHemQNw93+4d4XFEvIehIV/JmIetFVC/fnNz+FALXMwjh388+P5ttuIhgPKv8fSrh89EE5BOoBH4/gW+6rVlw/HKG8L6aat9TmXf5D1RlZ3PyHkqwLEmSJEnSsBjySpIkSVJ7BglNU9mwvO+OiJdSEXoBwyDnKgzJfE5E/A+3TU7mhM3DvrGFitzHqPrNKnVfGREHcfuWVP/eRyXp1MIww9myT6GC9ZeEx1mg+caIeB+Vpt8luBxLeDyS1bMDhd/t6iOsHumQ9ybm002P2xHsjzdTSftFKnS/RAh+O/PpBvtoBv8ew3E5i1B6ZwL/R5NlZ9XRO1DhfR5zAD+b17iY33m4O9JVy5IkSZKkzYghryRJkiStncUEd79h6OXHkqVlVbhfJazt47ZxzM9bIXzMAtmjSuZnzefn3Zrq0aAC9yEqRPtZRjrMcxY63hER/6TqOBsi+kgC5l/zmL0IPu8lgG42j/Bw5OFupwHmwDoMPdOANwtm30tV7Xncdg9z5f6SYbRvTx4/merozB9Z1veT+7sLlbzncP+VhMP/Rnj8A+7Pho7+PNXDI7nfJUmSJEmbGUNeSZIkSfp/Kvx0KqtCfYSfSOZpbSTzrua35RW4lxPIZtWicxm+uVryug8RNo4lICyrks2fl80F/PHk9r0IGH/HdmXr8zEqXLM5e0cTLtdLljkceVjb6fIG10HIW7YvT2bd3lU41r8iCH+08LyFhMBVhnu+ubC8/sJyzuZ3/v9vMI9zvj5XUDX8YjoAlK1jjODxkCRJkiRtogx5JUmSJOlfxhCKjl+LkK1eEhQ3kv9XuQ7LKkKvI+QdJPjdlaGEi689it/HEDiOTW7Ll19L/v8Y948nhMyec2BS8ZuFizdGxHJuH+DncoYhXhv5uncalFdGeKjmAwjS+5Lbqsyp+1UqnKcn961mGOaphWMwSGXvU9mXq6nWbqaX41vj8ZdGxMG8t4L9PJ+w9+CSkLfKY+4i9JckSZIkqZQhryRJkiT9SxbE7cO8t+uyknIlwylnQeBOhXDzkJLHDxLM7h0Re3Jbq0C0kjxmAQHlpOQ5WZC4lDB4FkMOT+fnt2u57V2F3+3KQ+qRCHuz+YtPIOAthtZ/5bbjC69TpZp6GiF66nbmTm5n/dL7+wnSpxf2aYOK4RlNKnl7eZ4hryRJkiSpKUNeSZIkSfqXPHwdu45D3kHm8c0qQnu4Lqvw+qNKHt9LYDmOMLSTEHSQELe4PTWWeyOvvV1EPI3w94K12LbR/C7bjlbGJhWwZcNRt2svhkK+kZ/ivnqEat07CvdVCGWrJcFrFoZPGca6VFhWveS16i2qnQcNeCVJkiRJQzHklSRJkqR/6aVqc32Z9wTa7zcQJB9H1fCVw1zOaMLLng6fN44wem1C3h0j4uURcVtE/LwwVHNq/jCWff8w10mSJEmSpHXCkFeSJEmSlPkzYesLqSq+ZRh7pZvq1Vobj011DeM5qdkR8UqC85+1CHglSZIkSdoklM3/I0mSJEnaPP2WoYxfHRHbDGMPDHc+3bUZHjubR/ffqMT+SUSsWYtlSZIkSZK0UTDklSRJkiTlsvlgz4yIBRHxWgLUTgzy2E7D3nry04lxrGc2TPQPGWpakiRJkqRNniGvJEmSJCm1isA08yaC1Hbl4W6nYe1wKnmzeX9fHxFzIuJ7w5xrV5IkSZKkjZIhryRJkiSpaDHB6ZYR8Ubm2k31bOA9VmGI5r1Yz7kbeH0kSZIkSVqvDHklSZIkSWUeiohvRsQeEfGKwv1rM4dumUqHj39ZRDyNgPdGj54kSZIkaXNjyCtJkiRJaua2iPhORBwREScmjxnYgNW8J0TEcxhS+ooNtA6SJEmSJG1QXe5+SZIkSVILV0bElIh4ZUQsjYgLGcZ54QbYaUdHxEsi4mcRcYEHTZIkSZK0uTLklSRJkiQN5S8RMTUiXkXQOz0izl1Pey0byrkREYdExGsi4mx+JEmSJEnabBnySpIkSZLa8YuImBARr4+IRyLiqohYtB72XFY1PC0iToqIf0bEmR4tSZIkSdLmzjl5JUmSJEntGIyIMyLiboLXfdbDXsuqePePiHdGxK0R8ZOIqHu0JEmSJEmbO0NeSZIkSVK7VkfEdyPiwYg4mLl616UtIuKAiPger7vGIyVJkiRJkiGvJEmSJKkzyyLiyoiYGRF7r8N9V6VaOJsL+PKIWO5xkiRJkiTpXwx5JUmSJGnjUHkCreUlEfEw1byTk9vXdh3T52fz8D6JqmFJkiRJkpQw5JUkSZKk1vYrubcnIl4UEe+IiHGF+8Yyh+wrOtyv2fXZ2yLiWSX37RQR746I3Z8gxyobtvmqiJjVZG7ekQik942I6byOJEmSJElKdLkzJEmSJKnU+Ig4MiLeHxFPLTzgmRHx2YjYNiJGR8QXI6LOfVnAe1pEzOO2M9vcvS+OiP+OiGsiYinVsrn3RcRhEXFERJwYEYNPgEN2aUQcyM/1rHOD+zoNeYuPn04V78MsW5IkSZIkJazklSRJkqRyWZXudyLi8MK9Ewhkb42IX0TEuyJiN+7LKnxPiYj/iYi/RcSHI6LW5v7NHvvziFgYEW9Obs8qWp8cEV+JiENYnyfCtdxq5ubdinWMJHwebiVv/vz9Ga75KsJjSZIkSZKUMOSVJEmSpHKzCRlXFe7Nhk7emqrbtxJoHsp9ezN880ci4pMRsV0SgLYyMyL2Ilj+BtWx+Vy3WRXxPRHxg4i4nGGg2wlRuwiYm/2MxMhO10bEoxFxEOH3ALc3hnhemToh7zSreCVJkiRJas3hmiVJkiSp3OkRsSgi7ivcO50wc0FELCHo3Ib7DuH21VSg3s8wy9cMsY8PpoI3e869DAGdzXX7d34v4TUvi4jnDhHyTo2I7SNiCh17ywLXCqHqY6zjgmG+B5ZQzfscqpnz16oP8byiRvLc/djHv7eKV5IkSZKkcoa8kiRJklTuDm4tDrdcoeJ0FP9fmFSwZtW/ffy7i/tmtLF/d6BaNxjyOXvNWfzelbCzm8C5NkTIeyDB8qNDPK6RDIn8p7V4D2QB9gH8jOO2/g6XkT9+Cuv/YETcuBbrJEmSJEnSJs2QV5IkSZI6M8DQxD08K6ta7eXfWWXsGP69nIrcdqpaZyXDQld47gDB7oQkcB5gGOdW4e1qKmHPaxH0NghUX85rrY2lDCN9XERswXLWdLi83iTQzkLxX1ElnMuWfe5arqckSZIkSZsMQ15JkiRJ6sx8At5n8qw9IuJOhkb+R0Scxjy64wk92wk8t+X5QUj7ENXCVSqD/061axb6bjnEsrLhk59OuHxni8ftRyh95Qgc/xuYR3df1rvTkHcF16f7UsV7c+H+f47AOmrzklWVr/SYS5IkSdpUVT2ykiRJktSRbMjkKyLiNRHxn4SbdULKqxl2+YsRcSqhbDvz3fYlFbeVZIjoBsvuSx7bPcSysoD1bxFxRFJtXJSt6zERcVFShbw2lhIW1wh5Bzpc1nKeuwVVwcsK9xvWPfE1a1/IKsa3HqL6vB2V5GcU81hv0+J5J9CRoRPbRcTEDtbVjvOSJEmSNhhDXknavI0uNGJ1tdFwHMkwlLmetWi4a/d5lbV4Db/vJEkjKQscvxcR5xO+ZuHk3YSxWbj5+Yi4KyIeIKS9tY3Xnks4Gnw/z+a5+f8P4vtsoCQALfNPlrF3k/t3JyAbyQrZm5P5idsZojq1iudkgfgtI7hOm5K1DUmLWp0fdXruNJsq7DLZ8NsviYjduG93ziWzz81YgtWDWyw7e9yeEXFsRDyXZb0qIk6JiCNbPC8Laz/BulXYpm6GOy8LZ7P7P8nrHE+QvEtEPCUiDmnyGtnw4oe2t4skSZIkaWTZ61SSNg+1pOE4lc3xdziN1JmZDC/5Z4ZvbOboiLgkIhZzf9ZIvCNDVK5qY49OoHEvmydwZxqrHxniOVmQvAONvwvbeI1xDJM5n8bFrMF50UZ4tCtJI3/w3d1pdZQkaeRdS6XucwhSb0n+Pp8ZEX+iUvbINkPLRYRKwd/9sfy7n8rc7eP/VTA+WvhuKDPI9/mzWddi6Ppc5rgtOz8YrqUMtdwgTOvk+6qLbb2O5WyOspBxDkNXF89ZshB0K45pOhR2dr6zU/I+eWyIc7hcFrjuw3De1xbu25ZQ82o6L7Tjowwpfl3Je3M16/8YHR5ex/ncEoLYfXnOFTy+lpzHTaZS/hA6O+Tnqt+lU0G6n6pJEJ69n34WEV+JiDdT2T4tIqYy3PmFSQeHKrdl8z4/j/PidyThc3aeez0V5kXZ3NfviYj3RcRtm+n7VpIkSdIGYsgrSWuvGMKNlLziYG0bX3cjUC024AWNgZ+gkexhgtRXUC3xaRrliipUNDyJ5wbPeyvD8f28yf5Iw8kZNC7/hoa9rDHxO0M06lZoeMsaBL/dxnZnDXMvo5oqa0B8QUT8mO0caSP1HiguZzzHKG0kfxrzNN6+DrZDklSu7G98g++tLCi7pvD9UifQOpEgqZ3Q8t5k6Nk8kF3Gd8CDfI8OJiFgO987f6bqcTuGkM7NoZPV59bB8V5KSDemyXlEM9PY1s31+20q3/FZKP/VQniZdSL4D45Z9rjvJ/e9k7mhl/O++ElEnD3Ea81kmPHphK3v4Nwi9/6ImBURL4yIl7ax7odSaf7FJvf3J/NJB532nk/1+iKGVL4iefwOvPZsQt6ZfD5+S8eJ7P38KSrq82HNe1jOjnxOxvCcW6gcnslQ4D10ANyJz+Yo1j/7nLw8In4ZEX+IiFdTLXxr8n4ucz3r8YGIeG0b+0qSJEmSRozDV0pS+/Yq6RzTTcPaU0rum00D0o6EmJ3ooVq2OPzbWBpB2zWdhrtmr581Bu6RDOV4Pw1ehw8xJOBKGsNydxO+HtKk0bnCtszi//VkyL3HaNScOcQ29dEQd2TSoNdK1oD9Rvb/QzQKnlhynLpooJ9DuL1Tm8vPjaJBdscOnhNUM08v3Pbk5Phm++xtJZVX2fF6L8+XJK1b+fCuPYQ86fVT9u8DI+JNEfFrvgdzXYRYJ9KJKfgOfwrf7xNL1vpizh22owPU6iTwvJnv0GwZT+f7uh2DBFavKjw2+//vhzGkcjsqbP/4Dp83g3OIdqpQn6iqHf6kTo6Iz9IprT+5PTvP+DDH6kLCxHzfZvvsNOZUHsu51pwh9k32Xn4RwwyfxfvqRcn9O/Me+19+7zTE8ip0Fvgm79ey88BaoTq5j/ffh+kweB7v/9x0zk235/z7XKqKz2N//Jw5fp+XzCfdxflk1unw3yPiGZxrfpeq+n4qcb9EwH0ez5vCee8kOhn8JyPV3BARP4qId/G72ftyCcftuayTJEmSJK03hrySNLQphJcfL/Ti76bx9ns0GB2X3DeFaoascvRbVJN24q0M/bYPz8mH7/t3AsV2VFi/rJL3siaPb1AdlM8VOEjD2U9pgH4S1RTFYDSrFrmPf1doYPsDVUJb8rwZyeMrbMtnqchYQWPkTJbV10bFcj5P3+o2Qthu1mGQiqJVVFocmwx/meuhYiVbt/+iofLlDAk4lOy4PIvGv1PbDOCrNAK+i+fmuljG+3nMRIYXLDbA/zEi9qeB3u9xSVq3sg48r+Fv9Ml8JwZ/f7PvtS/zHfrH5HtsDOHTfxMu/Z3bt+Tc4Kd02ClayPdoFgqfROg1j8ecy7nF++ns9NsORvr4LVWWW/L/GZzX/GEd7blx7K+eDp83cSMeaWoqVaJ7E0ruPcTPvkknwPycJgs0b+R7vy9ZdlaFekBE/CAiPsRxfCr37Umlavbe/BjvmXtK1i+VHZejOP5fJTg+ILk/C3xvIgC+NCLeMsTyduZz8dsWj1lMGJoPM93D9txLMPxIYZtv43zsK9z/S0LYt7B+O3J+/fVkiPNeznfPYLjlOwhm1/3+FBIAACAASURBVHC+O5sK3vO476Hkeb/kvOw8OtHtzPnilTx/6yE6113POlvJK0mSJGm9snFY0qauSoPhZBoPh/qZVAj3xhCmZXPrHVH4uzmaKtlbaJB7Ew2bwZDHx9PQd1hEnNDBfj6UkPdS5g8LGmQ/RtC8Z5vL2ZJqkHOGmO92BXP7bUfFxj5UMpxEOP1u9l+uwfCRecXFzlROzGDfZvvhM8xR2JM85xLC04MJdh8gYF5JQ9ujbWzTahrT8+GL9ysJbYNjcxhVJXlj529oYJzAcZrK7XX2wYuTOdm+TrXVUKazvXex345u4znZfHpfoKF2h+T2/dhfb+L/Bzep1LqH6po3t1H9LElaO1sSKl1ZqGqsE5Su5lwgHaq5h6Fm/04om1c2Psbj1/A9WubjSSelLyX3X0Y4/FKGYP5dB9MEDNDpLB+B49X8fyTn4k1NTKpZOzGG57YaSeSJah/OcQ7kfXFgi5+DOMb70Xkv70CYHe+P0DEtDbt35pzpVs6frqPyNAhG38l5yIPcXzY9R6rCuVBeAbugEMjvxW3B++7IIZZ3AiFnb8l9Vc7TRvO6+/MZmsxrfJ+K4uL592NU0l7HOWyD88U38t6fS2A7IwmHBxmN5lvsy1kse1s6SOxQOJ/NdVMZPYvfb+NzOINzsvcx/UfZ+Wbqd3SulCRJkqT1xjl5JW3KskabXWjUGU+DbDsNh7308L+ZMHAbGnoeKDSoTqSh6jAa6z5Cw9jlDBF3Oo1TezFUcDuqVC1kjV5fI3zMX2trGoXbHUp4H0LAn5bcN4mwcSz/filVHNvTQDiVxrfbGN4uf81R7IMBGsOeTiPl82mcm0sI+SD7P9/fDRodf8o29tJgXqVxbjlDFV/DUH7NGq5H8fi8ujUbUu9nhJ7pvLUz2bbTadDLGw8X8jp7JMMf9hLqHkfVyCBz2WUB+V9bDGVZoZJkd6qr30TI+/ukUqXMZPZZo1C1chTVNPmQ18+lc0GZb1NxchCvty7mhJakzUmt8L2Vu4fhXudyLnAPoVyD76x/Er6NTp6bf4/8me+3PMRbSeg7PllO0U/5PpvHd3D+mDpVw1mHqAuSOUfb9QsqLf/G983zCs8fSIZZzr9TKgSOnaqzvE5D5NU8r1b4Tt8YrOR7+1TOP1p9L1c4vzsqGaI6kvPOYjjezflfPp/t/cljbuQ9FgSaU9voNDdIp7dnEobuUegMOIFzpC6C1FEtlpW/7r1NzpfG0elxH4LpvKPd1mz3s4eYF3p6EhTfz2fus5xn9dAhr+x1HyMcv4jPy0o6YP6j5LE7Mt9xXp1/Jds9jvsGGI692ag4uXnJtCSSJEmStF4Y8kralFWpMD2cYdumtjH3XC+h8IFUWmaNmz+kMe7opCGuSsNSjYbfQYaim0PIewHh4yIaUodqIMsdREXtZwu3z2fOtZcnjXytjGEovwd4btF0GrQahI5H0sB3Bw1UF7EvvkWDXD4P2bEMd/fkZF3/zj54Ko1nvyLkbSRzyk1l/3yafbQd++5ZydyDL+T1vpFUg1TY3klUMB9LY2aVgP2ZVE/9otAg/Caqg1dRFb1LUll0DCFrPndig8bJJTQg3sMQgsfQEN+s2qqb5Syigf96qp+z7buzxbF5iOrotxcacrcmLMj33REMH11mGRUu2XvyLzSMS5KGbyqdncYUzhWW8N3YT8ecrQjFBuk41MV3U/o938dc9bvzHZtXSebh7Ty+M8sqA5fSQWwMy00rLB8maBrPfZ1cyy3i9b/Ld97TqG4MtmU030PT+Q5qsB/+J6nqbNdSzpv6O3zegiFGHnkiu4Fw9WF+D9WpsMEQy98tdAybWvLcVbzv8vdlhX0cScBb4TGL29hHfXRA+DwVq1sw8km6Dhck1bNTOQ9b2mR5EzlPLDvHrvI5eD7/v5/z0kHev4v5rDQLxbv4qXDeeA2fv+3pyFfs+FhhWXkHhTXsl62ZUmMly5vIudNq9uHlnI8ewjno5/iM1Bm5pp/PXXeL9/X4Nqp9JUmSJGlEGfJqc9PVZmVAtUlDxdgOKhrSZYzpIIQZ1WS4szK1QpVE8f8bWmUDVxgO0JizhB74W7SxPqsZki3/+7iKyoqZVFzkuvl/F/eNYnvzxp3vJe+VI6m0aMdJBJajC41+Wah3BRXDe7WxnAkEp83mZVtOw9qWSQPZxwgW38ycgacy7NyZyftqd6p+g/X7AwH6Vey7fDjL/0mqkIPA/P007p3GY/clTD+UfTWfBue8cbPK+uxEmHowVRmLCGDfQKj858LndRvW/SzmI96a4/MI87odSeVK2pA8lX2eVzU9wr+3oRE/bURsJMNt7kRjeb6+M5JhoJt5jLkbTyx8D3dTNdLD+2hCMl9cmevYf2MNeSVprY2lk9fE5DslH3FhZXKONZq/1YN8v3QVKjcbSaXkNL4b0vvmsPwJTUbmqPO9M4rvxPT7bXu+QyYWKofbMUBw9xaqeQ9OOhqtpuPasyuVyuPzjjYaj6/yIAHXeR3u3B5CwU6HXR5LKL4xDtfcS+j4Ds5zhjrf3JP31kWFx5a9J+byXtuV91t2LnRf4TETef/e0ca6DnCu+e+s7yfoMJabwBy1g6zPTOYX/meT5U3l3KzMSjr/3c85bNZJ4eecx+XXZWWdEXPpZ7GLIPWpnIueXtKesRUdFR7m/bQ/we12rMMbGFnmSQxZfi0V89kcxO9lew+nwriP5e+RLOMznEuWabYPJEmSJGmdMeTVpmIsgUsxmK3RSJaHbfvRUJLPPVVtMqzqNOZvurYQmr6YeT2bVfalZlHxeC0NDHV6iQ/V6PMiXqOdMHl3ft9Or/JsGLKftPG8daUY6o4iuFq+flfj/xpk+NtJNH61qq7MjWe9f1i4fUqh0bGeDCu8lPsmJSFvevyOZDjgoVQJPLPw7oMMFfzXwnPK5hIr0826NGs4yz4Dn4qI9/DemUWgeigN0/00Yv+Ix5/FbX9iu19D49d5NDQ+h3WdTOXyTwsh75NpTPw2j/0+30GX0Og2i5D5gaRCopvG6Mk0OG7PnHNbsH/6WeZ1hc/+e5Mh81YTAi8l8F5O9estNOjluvibsJrj+EK250k0RI4qNNLnc76NSv4eDLLNQ1WLBwHy+MJt91EdvQXvmUuGWMYi9ovf5ZK09hbSaSmtnG3w3VxLvgMGk3/ngVy98JxKEu42Cvd1JctppisJi9Pn1pLlDnQYhlY5J7iMACwdJriP754JU6ZM6d9qq616586dO2b58uU1zomHY7id/Dbm6QcuJ+CdVZijucxJnJ8Ut7fsHOI2OgueSpi8D+FwajJh7FVtruuq5LV7CvdV+DxE8l6e1GJZY1qMMjPAtdANBNX3ca61kvt66LDQrBNuJfk9yOMXcR4XJddkOzBSyrWcI83nMbdwjnkYFbq7MGpLvo5dnPN1MTLLIazXIOfHv+fcudXIPI8Mo3pdkiRJktaKDcNqVz68VbN5JnsI0Ra3GXB0E5qVzRlVZXmt5rRMdREE/aikB/V0hrf9FRf2e1GpcA8X9wsYUrfYsJA1CryWRot07qZjCc6+VbKdY3i9eTQIZPvjk4RR2Wu9ngrHoSqJX0wjXtl6FR1AGPQhXvcTVGc8ULKP8sbC4VTX9vC8YoVxT9LLfRt+pxUEDbb/tA04t9qDhJbPZ47boTyb/TSv8LjivHf9NM69g2M9ivdN2XZOZyi6ocxgWYcSRD6PgDF9X9faPH6jaPBb2OT+BvcdQVVQViV8BiHqSVSLjGM7syGVz2E/3sjPx9im7D33O+aH/QnVFbex31Ofonr1Dzz/4zxmNQ2VryupEBmksfJBPm9vIFR+Mu/9Uxm2L3UY1R1v4zN3N1Uds5KGz1m8H24uNNpP53M/nQrZT9HAtxt/s9KQ904+E5OTeXUf5qedRvdxhXkPg7kSf0AD6PPZ1hdQhV6mNoxKLklSuZVtVkFu7PLOX8VhkbOROGLatGk3HnnkkfPPPffcA5cvXz6jg/Nx/ctXCRk/1GJ/7MI59JVtnpevZmjlTyVV3JcXHjOG+9o536xybjeWjqUncc5xIfevIQj9Oee1y4YYkabC+WKra8AJrF+NdZ1B0LwqCXDL2ibya5f8Z4DXuZHHF6/9HiLsfj7zYi9KOmMeyG1ZJ7tXJUFxcM69its+S6e9fTjfewHnub1DDMc8tc0pVSRJkiRpxFTdlUpMJ+Aq2pF5id5fEnQFjRRv5mK57P6iCYSynyE8SY0jZMnnh2rHCcmQX0X5vJZfpgd61vDxjIg4hQv4A5oEJAv4fLyxcDE/j0aPstcaxT54Cc+dx9BmW9JAcVib21Oh4aWdRoKd6XWeP3YJc30Wbcu6vYD9+6oO9u90lvlxXi+3B6FbjX37aiqWU70MefbaNl9rXbmGoG/OEMufxPvjVyX3lTVc3cR75dNUlPaUzIW2RZPODGWm8zpnsr/ncMyGWo8yo9jmVkN/T6PjQxbyfoV1rRLS7spQjv9N+JiG109n2bfznsg/J8dQbfsIQWxaGfIn9uuRhOMrqeDto/FyMh0/ZiSfrwHW639pYJxL49ulBMJl1e6nMlR2Xr2bV2GdmHRE2JLPZ/E7MGv0O57OHL+iAfVmqpLPSH5+wvCVPckw3UGD4Jo2Q9eBkkbdOwjBP8z+G1PyuUt1+T0uSRoh+Xf2otGjRz/U3d09UKk8/nX2RJoGZGNwLuHg9Bbrmo0W8nfOv5oFvMVzifO4fvkGger5hfu7ucZqZ9SaMXSCPZ9ljiPkzK3kfLjKfQ9xztbMY7xPWp2T5BXwx3Odsw3nuQt5vdmFKtl8+5dzztRPJfBowtpL6RRZrJy9h317MeeCvWzDTM6tfkNYfl9ybjueEWr+lMytfD3ne3dwzngwx63V52HqBuzUKkmSJGkzZeOwckcRur6nsEeyHtfvpMf526iQK4aPbyeI6mtjb1YJhE/iYv4/CsN//RuVge+jx/RQ79GxVFL+rMk8SAsIzE7gwv5eLs7/QaPBr5tcjC8nRDqIOTdz99PQUdYgs4pGhI/SuLOUhpZ8iNj727zwX0xjSWp0yePGJT3S82qML1FJWTSKfftDjvFHCLlbDTmWez7H6f2EmXkA9yHC24M4hgc0qR74GKHV9m281rpyM++Pw4dY/kG8Z+5qcz1WUtX9LALOlSXvwyNazN1V1KAx6oss90+EosORz0fc6jP0YSp0g/fdtXw2jue9sZyQ9ZcsK/dVGgaz0PUDzOv2KRqIv8/fjffwO/Va3p+rGWr8yRyTE9j37+Y9tmfynD4a+rIOBVfzGo/yvj+Bz0HqdrZrVjKM5jW8R/djPrWg4a84n/Uq/pZk2/RWPld7MmRf8Wd31m1+0hA5jbC63SC+zH8zL94Y/i5fxt/eMgNr+VqSJOUePydsNBpbrlix4pH+/v68gtfRIjr3Hc4jyszhfOHKJt/hKwkuV5bcdznh8TUlU6FM4rygneleeujM92tGS/kGAXFuMcur0wFwqHn/7+fxrTqo5iOjPJ9Off10qsun9tiG67R0e/YhOF3NunTxvKMYHWYfztuLFjP/9EGMjLMn59dzkkrfvGNyhY6A0xgNqcG+yDoEnsyoTKO57nnDEJW83c7LK0mSJGl9M+Td+OXHsIsLy3Z+8p76aaPNBwlwJxT2yEH0kn4fPchfnzymQgD6foKJH7bRCNCVhLIfIHQ5Orn/RC6ws6DoTW0MKf5UQp7zmwSoDeZQ+jKNIpMJX79ED/DLWvSgv5oGgrQasUrAVPZafQTK/YTiQQA0l4aY24bYltwgDS55APWSJhXWh9DwcUZSrXkuIdfWhIP5etzBfu1m6LWfMDzuM4b4O5A1wjyTRqB86Ng8lD+CffS8pKLw6pJlXMB+eEOb27+uXMD+mNpk+VU+Az9ocX8UPjf9DAH9LsLSlSWVDvt2EBpXaMRawv/vLPkMtNvYuobKg+K8r7kdmMP5MzR0TSDM/w2f80N5P+VVyPnnZDeC0t+zbhdROfsQP7+j0a2/5HOygur2mfzNmcNncj+GUp5JMFyc/3hHhln/PfdN4Hgexn2pTyfDpefLWEaj2yFUvt9T0nha4zP8O0LtR5Pb62xL/jOYHKvepJF2RgcV8lV+isezj7+711HB+yGORZmBpOFTkqS1kX/PdzUajcGNfG7cDe33nG+UnXM+m/O7uU3Wsc61TVnF6JaExz8tnD/0cO6VLrPCudORTTqL1pJruhuTjnFB2JpXIu/dxvzCdxOklq1zF+d5H+L1vs11xe/o7PcoVcXLC9XJ3XSiPIXzxUl00LuRc7xnE+Z+tclr1tgnt/N63+K+Xpabv7/HUaX7J6qK830ynnPMRzln/BkdZIsdcVMHdXC9J0mSJEkjwjl5N37ZBfxxSc/pdgKgfDitpfQI7+P3kkJVbdDLezFhaDY86/9wMbyYi+P3Uvn3hw725DY8/lYaEQ5L5py8kLB4kKBpKCcwrNaKFo9bTWXfdBo7JtGQMJpGkd4m82HdTgC2JLltVTLcWCp//k0E4vncT1VCrNnc/yKGB7sqyuWVgFskc91+jfC4OC/nCwhuFxO4ziJkqjJ08K4ct08TBt1AMPZdKhTfQg/6s1vsuz1Zhw+zbtfQaHUe++IGQt6/0ADUrEHwp7xeq/nJ1rXr2GcHsP5Fh3Bsmw1zl1dWFOemW83xOZCQszgf8h7s83ZUaVQaz3u0URLCrxliCObcAI+b2eT+NyXz49bYvnP5fGdVEc9l6LpUjcrezxCc5oHmvnxev0YIPIVOHEsKz5/K5+9ylvUI6ziNauAlbO/ywnvpVbz3HmLfjKbR7X7W8dTksfnfgmJD4zIaRw9mCL9iMNrL39Hi7Wfzd6lR+Pvam8zTu2WyzyslQweWWc1nqGwEhJMJ29/bolNJsP9XOpSmJGkEPP69yxDNMwYHBxuNxrBz3vz7stMOxdXC743ZTwhkP5Vsw5YEhz9p0kFrJ87Nt6Dj6x+S88ptWVZ2/nBW4bt/Atc4lxZu+xLXb4dz/ZHrY/SWd3DO9dLCqDN/ZQSg5zBFR9lUMKkL6Sg4mfOt1ESujZ7FaE5ncd/pBKvfZNqPwcJzF3OteArvi2/QmfQgpu44mOue/yhZn0Eq0/POzdvSuTHf52OSQLyH65j02qxOcP0fnNNlIfSPuS+/jiwevypVym8fYl9JkiRJ0oiyknfjN8jF7wH0ct6+jZ9pDP95WNJr+zMEPMXgv4vQZDKNAVEYiusVXLh36mAeP64Qmn2DsHBxk+G3UpMI5q5tUkHcw/bNoqf4gwRx85NQ9liGjs7njK2wzaNoDJhcCGFqDNN1AI0MJyZz0u7OY/5EY8Jbaaw5mf2UVZF+gUaTSF5vEuv1LCqit2e9ggrRPBRL7UqDTN4g8TIC5KPohb4LAfD85DljCdHqbPutNPy0kjckPUQgN8AcrsF7bxUNVge1CK6D+3YfYn6y9eEiGrqKQ/wGDU9fb7EOa/ibWRbK7USl8h9LArmdCdtz3VQW7PT/L+bx9/xE5n0OAtNioNtui+sKGgb3anL/cuZ7zZeZN1atZHjrnTnuqV0IcD/Peubb8iWGHfwb4e5ZhW0OPkt7U0V7DkOGj+U9dgefgUeoPk6HINyVffsR/r86+bv1dRrTTuHvWvqd1ijsq0tZrzk05hU7hqyg0a/YUWYZ6zWf3/nPYxzrO5O5xacQyj6SNLg2q6RezfqVBbiH8nckHxKwrAIn+Lt2c0nHA0mSOpV//1UqlcqYwcHBvMPScK4Xhxvy5jaFKuJfc348ObntSK5xbmrynL3oZHcL5/T5tcVozvV3YwSl+YXndXE+cUtyWzfn3bNKhlFexcg1uxEcb01lbe6vXF99gHPBXw6xrVfTge4tJVPBNDi3+3oS8AbrNpbX/SnrcFIygtIg50Lf59pwHvsyO+/7X0aR2ZP7d02WO5kRZ5Zzvngs05AcQ4V1hdFdFvP4ZXToe5j3a439ne+/Hbg2O5wOjafSgbPoLSz3dyX3SZIkSdI6YyXvpuFKLnx/NcQ8QbllBIpXJgHSKi56iwFHPalcvZeQMH/MTgQY0/h9Q5t781Eu4u8kZPxLcl9e+fciGhRaDUO6LRffd5VUstUIYLejAWMXqgxnE6Q26B3/Uu5/gMaOUTQG7EHjyt0MDZYP3fU8AsLjaDzYKqkkzsLb3xLwHMEytiEEG8O2XVcYxmsOgftu7MOnsz1Zz/RXU5H7do5t6uVs+zaERfcQMC6iMeZUKqLTQLKLhpM8EJrGuh5POJXqpkry4uS4TqQ3+z38fwaVmXXeC5+K5u7nGO3fpIp2fclC3hdTRZG+X3dmm8vew1X21bE0Jh1BgNnLfTsRci6k8Sg1o6SqYQuqAa4pqVafT/j+YdbnOUlFQBfv57xqezvet82qOPNh7z7C+7c4d9u3WOcoLGMcr7GajiA/T+6bxhzdfTxnNEHjbcxZ9l4qvcuGzjuJRrhraIhsUIWbjQ7wdxr45jIyQCqr8LiEjgI7ss55g+k5fK6+wv74XNLw2ShsV/4ZOjkZdrCH93SVYL1GB45726zGHaADRhdzEB9PmDyfhtFsm09jH6Z/y0bxOodwbLZmnQaTeYyXsH5vKamIDjpXbEtQP9Qw+ZIkPV6l26I69/E7BgcHFzNcc244UwLk559l88q2sob1aOc7+ImuwbXM2xhVZzrDFp/TIsS+k2GBH+bc/EFu72ZffoBReYqWcx6Vnscu49xsfEko3OB86yN0wDuXjnq5VYTJL+JcsqyDY9HHuLb6Q2E6nKUMc5yeC0+hkveXXMN+j2uq73IeejqP66dj4aU87mOcq/2A88H/JFS9i46xQTB+KOd9VzBizVU8fipVyZOSTnZpZ7upjICzF9csB3H/vZzTTWN7ilNzzOLYvK/NfSVJkiRJI8aQd9PwJQK27yS9klvZn4veSwsNN+NKGh16knAvCu+Z13Ih+1/8PqUw1FeZQYKYz3Fh/g+CxNSTqHj9QIthSoML8a4mDUE1Qtbjec2VXKgv50J/FmHaqwhD70i2bx/m+t2GcHJ7KnGXEhavpKf8fBoOJtAIM4lA5mz+nw0/+0UaJ7bi9T9a0piwB68zgeWtoTrvyzz/O8njK/Qkfx5h6Y5s653s+3w7tmGuqp8kzx0kdNyG7d+PgO3EQg/4ILz7J+Fbvn8nsQ8u4f9zWY+raPR4MJp7mPuHqhxe1wboVPAc9nHeiPlRPkdlxtPI9cwkzHs3DUqTabjbjkrg4pxlexPE9iTHfRzDG5dVXzZYj68Tbs5NhumezmfsQNbpDTSCPVqynNzfGALvjXRuSOUB7+hC545T6XxwOoHu5ckQfzclHT3y6t9LmF/tOPbB+fxtWEWnh7yxa2vmgX4l/38z7/kL6UxxG42Nr+azVWU49r35m7ANnR5WJPu5zt+JF7HOacVrg/0+mxB/EY1yOxP0306IfSUdOd7O34dn8/fx7jbfi3exDV/geH2A1z6Sz+fMkr+rs3nclnQAeTkNm4+x/Tewj/9Bw+jJJa/7Vh53pXPySpLaVa02La6t1uv14OfeWq32VG5vdZ7RzCK++x7p8HmLk45gm4KfUWnaxTnBGs6vm7mZn6LldBAsDoWcW1XoNBucv/9giH34Hc5DyjqLXcv1TjtThATVvGfQkS09fvXknDM4N3snt38+uf1znEuelIS8wTb/kfPBPXluvrysc+UHC536FrO/xrE+6T7bmTC4j+UUDbIverg+W0i4fBb76VHe28XPxFTO189sc19JkiRJ0ogx5N00LOXi/lkMa9VKhcDy3JIL+rIGlUcJNt/Oa8xMLqT3JQi5i17THyagaGWQqrsvUjl3ekkl4jGEIM/h4ryZPhqCyoYyHaBH+5WEY/uzbw4laNqHXvGzCFPzkCQfnvhCquxG04AwSLB0JEHMd2n0WMZyemmAyOeHuome9jcTYu9JY0G+zytJdfRpBKAnUen7NMKd5zOMdmoKc6lezzruw7b2UUX5Rh67E+uR6qXy7zQqNZfRy31+yTDKNdapltz2VG7LG0v+i+qEbPtewvsvDYFT+TxbxYrhDeFswv2tCGC34n3QbLjpCvvhLLZvVhKK5vunWWXFIhrQ0mB/IeH61U1e71cElk/m87EqWY/lBKqNpJK4lYepkng3lSNlnTC24r1S4XP+Wqo3zmUO4+/yeb2ehq7cnmzfTVS9f5l99HUqeX9MtWreWPltGtQu4DVP4W9BPmThJ/lb8hwaJSdz/zvoBDGHUPQkKjlyP+aYblGoVOnmdY5lex6hEa6Hjg0r+UxO5Pk38LtSMqxhKyuSSuK8aiTYhocIusv+tt7HZ2cMjb75e2lvjlVw/KuF4Q2Dv72vY38WK7QlSSqVVfEy5+7//Z2ocPsW1Wp1Wa1Wa1D5O6rDa8b8O68+jOcNJiNsrK9phWr89LEPeoZRgRxN1nmA64j3c02VnyM32y/5Pqjy7wr/rnMeXSsZdSk3WDhvj+T8s9nrDXBt0mx/93ZwLBrMYTuuxevV6SB6DNcti5PH9tFp78Mlzx9Mpgf5R3J/nU7DE5Nzt9sZbnpacs2SP34+14fvo+K4u3COtoJzsIvptPgo5+Fl1bn5Miuc7723cPu6UBylRpIkSZIMeTchpxOsDBXyHsoF4rVtbvo/CcI+ScDVm1R2Nhgi6wsEgN8hxHusxfIqBD8NLpqPpvEjrca9nF7WX+J1b2myrP4WF7p1qlrvIOA9nMrXKYSofYS4cwtVcIPJ86ZTQXgvQz0HDRejCJ1yeXB7PtXBryNQ6iFk2p6K4mMJScdxnO5kn17H8/eht/9eNLpkYdgzCsMbjycc+hHhe14NeiVDneW98SeVBOQVGi+25LV/zLFaRpidNnJUSypN8+Gocz8nsNyRRpMfEihe2aS6utqiYWp96iPMO5p1fhuNUs0spRJjJe//SUnj30Iqe+9v8tzrqc5O32OLeX83G4pwkFC1OMTyI9y+lOVNbFHRkfopof5eTULe/Pgfl+vUeAAAIABJREFUSaD6vSRUzKuKZ1AV/gVub/Beq9Gx4XQayz7OPno31Rg9yevcSqPaIkYeuJVwNHc3QzkH29dHQ9v/ctsD/I17buG7K68QSatE8v04nuVez2cvn/+3m3X/fvI34KPs23HDGGrvOhomFyW3ncnftlUlj7+PfbWIdRmbHMuf8fe5QUeAk0v+zh1BA+TZHa6nJGkzl1XqNvH4eWC1Wu2pVCrTk2DvTZw7t6tOR7XqEOdXRQ06X41lVJHi3K7rQj7qx+hk6pqJnDf8qsOOVLM5Ny+eowzwnX8Oo6ocO8T5cHo+XkluawwRtjaaTLsTLZ6X3182ZU9+f7P7yjzC+eGkJvf30in0Jv799CScrXN+dCHn6EXjOId+ajI9UYPzvzodkYNzuaVcgx3F8ci3fxWdcg9JptVJ9/cg54VTWOb2PH8U+6ArCb3zZVY4h1tJh8N11Tmhm3PZmzeR4cwlSZIkjRBD3k3HQwR4ByeVZGWeQYCwqM0tv4/haI+nemx80it8kHBjEUFWUEF6ZYvldVEB+n0aArIhtn5TCDIv4ueNVFx+sMmyRhHUDDWM2FbJHJ730vjwa17jqyyjLCzekgaF1GR+yp6zmmB0WwK6HdgfH6X6cyt68vfTeHRn8ty9aEi4i/unEnD/tlD9upB1fpQGtO7C8GHHMsRyd8lQYqN4zW/wey63v46hpNNWv7H0gr+BRoujWMdXFPb3BYSkV9NANobQ97b4/00Z5pB/a6vYGBME3D8iVMyGrf5QIZCsJ40+jcIw6Ev5XeNx9yf/LxrkMel96VxzZc8Jnrc8qeDIb2u2Hq0spSpibJPHLuJzfCIdAz6dLPd7vJe3I/gckwSgFxDkfpSA92PcV+Nz9k7+LqWv+QU+C8+kUn1N4f6P8Nmo8Xk6pbCv/0FQXFxuUV6Nu5TPQz4MerO5a2vJ/lyZ3NauweRvav68QRoTm70v8sf389p5xfjfk+UM8nc9XUaF9+05PLeT9Vwf6pvQMJuStDnJvm+iVqutqVarUwYGBvJz4FcMYx/k3wOf6PB5A5z3fG497vfB9HyL6uWbCAM7CXknct5fHA1kgPP5xQSRWw4xzUIaqDaS2yptPK/4/ZuGxM2eU0lC5KJqi/vK7Mw6tgqVb2BkmPy6Ml92lfPNRUwjk25rldv34bw03S+7sI/TsHgJ53x7FbY/H0L863QALg4tnS1vAWHtHoUgt3hc0nUY4HysOsQxWhujeZ1b19HyJUmSJG2kDHk3LZ9M5rQssycXxs3mgmpWafkXfn5AQJOHfKNp0AiW25/0rG6mwjyYLyEwej09ss8refyvuQBvpaeNi+k0mJrGfriR7T2/RTVwT8n+yIPAapPn7UiDxVSGlz2LcDN7nW9x/1LC3NTbCa4e5HM5lhB6Mr3cL+Sxq5LKwHSYsCBYeyn7456Sdetina9MAq2gIvChku28OXmt9xLkFRsWRhE2X8ty11DJUAx5t6Rha26sXzUaf7Zlm/MqiHm8J77Bft6PfZ432IxN9m+jUOnQSD4rjWR4vLLPTiOprKgUllcZohGsUfhMps+LkvubGSBcH8fweEX9DFU9lQbNA3jPVmno+h3/n0AFab6PVvPZmkq1y+5JBcMggeyeyWemQQPdfsmcumk1S4VOJVvxvEFef8tkXy/n79ecJtuS2pr32yGsa1fJUMxdSYXGYMnxbVc6vGJ+TMuOYfq+qBcaZPPHrWKfdSWPK4a8C3mPPmM9Dmc5lCrrdXOT6mVJ0hPb4504u7q6xlQqlaX1er0vG96Z797eIc5bUnXOGXqocBxo8zu1wXlvlZCu3uF3cacafNdO7Orqiq222ur+SqVSe/jhh2f39fXVC+fK7XiQ8/3iPqpzTZN3tqttwp2h0nOgZvcv4N8zSh5X41rippLwtTe5NiuOPhTJdVkXIxVVC4FwvpxBrnt2SIboTu/vT45TFJ5fdtzSc711FfAGr7HUKl5JkiRJRYa8m5Y7CV12KgkRg4DmHoY9LfNYi8b5HgKZ7ySVbn0MZxxceA8mF+6t1JOKzj8QipbZusVQzcF2LKW390WFeU9TeUPRMQRIdSoWf1mojCzq57nTaQi4gtdoVak2h0DpO/QU34ltmEiYWmY2w5Kdxj5M54f6Cr3NDylpbEqDx+D4T6Cauyw0X8zyRxeW9d2SRrRKsp1zWMeXcd++hOTZfQdyzAeTdS9rADyQ228quW9dqtKItDsNjXnDyGz2URYAX8Y8qHmj0ahkON+isqHwhtLsOa2WNdR90eF6bM3vCSX31ameHUUnjq2Txqo5BOL9/G3ZKvneWEo1b4Vwd5skQK3y+C0Lc2bnQegvqA6fUtiesdw2htt3LhyHAYYGz8PlZuq81p8Zrj0N2tP9VnyvDuf4Nnt+O8tqNrTiUI3o0zkOzf52bghdfE+UVfFLkp7YZtNxKFauXDnQ398/UKvV+qhqPZ9z7sE2Q6w+zmsPYmqPJR2Ewy/l3OEHSVXvutLg/PyE7u7uSQcccMD1K1eunDFv3rzZfKcdznlOu5YOIxjenLW6BhspD7dYTqtrTEmSJEnaaBjybnr+i/mvTips2XYEld9qssWjCFdm8O++JHzpYgjXGuFMHpSdw+0nE5ItoxIvC3veQHh2bknF6yhCoceorJ3P7TNY799y3zMY1rWZB6ggPYbhd1c0eVwvc4l1U+18D8Mm3zBEY1UfFQXvoUr2ihZB8kT2waGEYudw+1fYph6Gs/1YyXPfQSj/1+R18/3+3wx7+yWGuL64JGDOg/kz2G9fjog3Fx5TI+CbTDD0aGHosmah9RiGx63w/jiNx+Zh7TG8J7L/v4aguWye2IOYG3VJk9dZVwaZh3aAsG9iMmfxPOZNHcftaUXuZS3eTxujoYbbW8R9M3gvptWlkQT+dyTP6aNyc5AwuDi/dbWwrEgqMRbwN6lYjVCsACkOe1dJAtxW318NXmcx61Yv3Lexa2fYxvUtn/O72ZDYkqQnnoMZkeUIOl9lIe+SgYGBbev1+gzWdhwdq/pbnAenBpI5TMd30IEqfdzEZISNdaXB+lX6+/uXV6vV7PVm9Pc/fmqyGx02f0anwIt870qSJEmSnogMeTc9VxDEzS4MwXsoQc6dTbb4zVRqZmHcy5kndynLyebiei0B6c3Jc/6X0PgDzK/5TwLHp7EOZzK/ZBqWNQiCv8U8rvsS0AYVhJ9mOOcVDFHcqvKzTqXeZ2ikKQvleqginUPgehNDWl/FfL+/T0LV1DiqFl9IZdqvuG9Uk3UZwzDZJybzj72EoW+ns9/P5Pj8MXne/jznFLY/n8urh5/7WdcTCdSuSNZ3gP2ZN7hdw++DOdZzqMy8m/V7Bccm26ZvNgljiw5mzt0G87PuxhDbddbz6YS705KK6vtKlvNC9v/6VqcTwVKqRHcl4F1DR4MFrHveEDlI+H/NEyxAW18WDvN1hlO9eWMbjxkJN6/7l5AkaaMxieuC7Jz/2XRSzOffzeak7Wo0GqNqtVovwzUfTmfHSck0LUPJR/F4XofnU/mQxi9ZT52yss5kYwcHB9c89thjd6xevXoFU6tk59rbR8SHuAb6Eee4F7SY5kWSJEmSpPXOkHfTlFV/visiTmXrphOmntFia2czbNVdzJ2avzd2JujL5i79duE52Rxdp0fEG6kMze9fSpVtWWA0SMh6Go1FWXD4N+5byPDNe/L817RxdM6lKveFDDvcW7g/n4/pHCpcj2cO4LdRHftBwut0Ps5g3Z5GteEHCaSDKuXHStZjOSHzFsxbO4HnfZX/ZxWFX2M/PpXwdjbh+u+Z8zgbkvkt7O9fJY1I7yCoLg451k3D2bE0iNVZZnb8PkdD3EzmBb6QucLOZjvb/exXCKeDKo67qbRusI07UsGZBdKXEqLPLzz/BQSp323zNdeFNVRBZ1WGe/A+yStG8rl6RxOOX7yZBrySJGnTNSep2j2Wc9zu4tZWq9UpAwMDq3fZZZer582bd8zq1avH0slx8jCmCRjutAJl00usM41GY2ytVssqmOfRCXQN11Nb05H1g3Ry/DmVvRfwmI1dWaV0caSQdVlN/URQnOO3uC/S0W2K80RXhhgppziaTaXk9rLXKv67bHmtXiOtih9q5Jd0+9rtWNFqO4ZafqVkyqF2Xy/dL63m7C7uk+Kymu3/SovlNntOs/vWp011jm9JkiS1yZB30/RXKkNnEQwexBBrrapiv0av9XzuzXxOqXlUYF5ZEqAGQ0PfQ/VjHoT+jeD3kZKhO/P5cOfT8HNOstys8vjtDBd3A6HkUB6m+vffqT6eV3h8H7f/mqrZD9Mb/woqbn/MReeNDP2cz2U8wNzD+dy9+cXTVklAmFrFsMXbUMn6b4S0X0zmnPo8++vJhLwzWM6n+Z1v86uo3s2Hsr2Mn+7CMHmzaAQ7gArVPvb3N6mEWEmF5QqOxUeT4LidKt7guN/ARewotj0PubP3yfn8O1vvN5XMyTyOhrFPPwGGcV3NcV5OgD+Z2/Phfy9iOzaFRjtJkqTMPnQkPIaAd0aruW5Hjx49pl6vP7bzzjuvWbFixdkXX3zxC+r1+nbr4bpxFZ0Wu+k82irEaSUPlpeUrHOd879xlUplabVaXTM4OJh18ls6evTo+ZVKZQ8eN5H1OIdrhsPZf+/kHP8X3Pe3jXge3tGcD08pmdZiGR1HHx6BwH1DBGGtgtuiQX56hlhWP49pJLfl14Sjmy/+8euOfjrLDrVuFdalj2u5/LXyUZxqTT4Tq/mZxrGs8rj8urHV3Na9rF8nHTLKAuhm+rkmnZIE4ivYzglsUzP58uvJcRrgp5dO2WWjbDX4XFb4LFeGCL3zfbWKz33+d6jC+jfb7338jVmXc4e30qDt45IN9PqSJEl6gjDk3XR9jeGD/4uQ96whtvSBJrffUZiHs2hVyTC8y6mwbaZB5WpRnZDtJx0elTOoRljeZJk3UtH6MapQv8d95/LcI7jITEPwLKz8LL/TeUPvZpvLhmq7nKrbbHi3p0TEpwpVrWsIlvPQ9y6qBPJ5alcRCh/NMNfFC9Di/KXBBWdWUXA9F7N30zA2novVfi5ABwh6O7WSnzKPEpoHDQtlnQj62effGMZrrwvLGL53O45H3kgxyPpvSvPwSpKkzVMWbDyJcPIZjOgzqcme6CMkyM6Jjurp6Xmwp6dnWU9Pz6P777//kr6+vovvvPPO/Xp7e6O3t7deqVTq1Wo1C1aqlUqlUa/Xx/T1lc188ris4+O2vMZ9TSoK8/Dk+3R03IGpYPo6DE8ahHDP4nlnlQR32fnea2u12nFz5sx5cLvttrtx2bJl/bVa7aGZM2devGjRoifzuOz572U0nt8z0tA/6TB6HJ1ZX0FH0j9T2Tuc8+wNqcZoT1sUrmuy66nnEGp/h1FuhjoO+XEtPq6eBI2jCuFm8b3Q7rHOg8Jmj69zf6vwMDfAuf/4kiAvH+2ni46tC7leHExCxyr3Ty6sT75toxlBaAGdoge4b0yhHWaA/Z4HkssJeQeSzg7dSQfVKNy+K9eTd/OcfLSnPtazuH7pMkYTmPYOEVan8mvLsUM8rsLfnQb7oIfn5tMhLSoJT4sdDvq5zkxD6x6utx/l9mry+EE6smxFB+5gXw8k78dxhc4HecBbYV/1JsuscdyLYXKDa+QGy9tQQW+z63RJkiRtRgx5Nw2VwoVFhcaGk5hnt0bQ2ZVcXDcKF1XFHsX5fflFf6sL5bLHDPW8ZvfXk3Vr92JpkEC10uT1Bgn17qaaNn/dQSpMD+fC+L7k+YNUsabrWCcYnlLYl+nrzKdS9280/BS38dvJeq5grt5qsr8XUvm6bIh9Xick7mM9i1WyxbCy1mGv61Sz90YfoXwtaXCJwnHrZzjsaLOxZW00CuvRzCAVyOkQhQ0DXkmStJHbns6dhxN2bt0iuJnPOeQlTBOSTQ1yVLVaXTJq1Kjp9Xr9kTFjxlQPO+ywm2bNmrVw9erVy1asWDG5UqlsXavVsrl7F9ZqtdqCBQtm33rrrTv39/cXQ7I6591fIQB9L0FK8fw+r6zLRlQ5knX+8TArPytJFe4vmjwmO08/btq0aUv222+//mXLlt1Wr9dX9vT07L1mzZqeSqWSDd+8ipFs9mBamPsY2edvjK6zD2FvFkq/lKreP9Lx8r6N5C20moC62B7wGJ1Vz2Y//qxsWO+CZsFrfn6dB6WpeuEYt3ud0OC5zR5f56eddo5eAt6ZjLJUvEZazOtN5XM0PwkLRzOaUhBYputTT0LY/2DbzySQG+RaMt2n/Vz7TWS5c5hGqZfXm0VYuiDZx3nInP2cGBF7JSNUVZLq3FqL0LtBQLwV79+hQtvcatarnSrvPfnMncU2D9IBZSxT+RQ7Mach7yB/M7oYLWss1co7st7Z9dzthcA2D13fxfN+SEC7OqmSnlF4Th/H6DjmH7+fdoMGr7u4ZN80OE73bOBqXkegkiRJkiHvJiC7QDmMntgrkuGI1nBB8j6GJz6Yi8P8gnPMCIZuxcB4fWvQINGsl3J+cf4I8+FOSR63lP3WwzDRaY//1eyjnmQ5XVwwP6+k8SnvHbwlyz2ax6b7ZiXLGJU8Pn3NQR7zzCEuFgc55l1ckC7n3z1N5h5aF8enkfQWb6ZOgN7s2IykGsf44jaWuWodr4skSdL6kJ377U2QcjTnupNbXOfdTrB7EaHkQkKOLCSKlStX7jp37tyJXV1dXdVq9eaenp5dKpXKw2PHjq2PHTu2u9FojBsYGFjU1dX1eAfD3t7eFePGjastW7asUq8/ns/cx3lWHsLUOS/+Qxv7Ir82Ge7Qvu10+Bubref9998/+8orr9xlzZo1uw4ODkatVpv+wAMP5K//CNOQ7EnVYVbVeipDo55FVW8WkO/O/MbP5+dCpoj5SzIFzBNVPRldKLUPAWNWWX16Mk3LcM1iGWUjLm1o2WfkdXTiLU45E1zv3Udn6c8y2tRkruO2433xEFPilF1bdBNibs9n7CCC3H8U9us43m/5yEev43O6B9etxzF09lebvLcvI+idyXv2Rq4T9+e69POFKX9SOySjSLVbjb4TYXSrqaByMxku/rPJul/B36uH2nj+zsnftO0Ilh8gjF3S5Lgt5DGv4+/O/XQemUjl+t9KnvNSpn/6LOH9XP4e7cFxLxvZ7DhC4N+2sR2SJEnSOmPIu/Gr0Bt1Nhfry7mIbNDQsIKLxG2Tnq2juWjZUD1O14WtWWZZmNlIekLvXdjuLbmvxn5pFYY2CM/r9HguPjYPu1eyrF0KVbqRDD3X6rO3oo0QPu91vDBZl/UdtLcT7ue9nNfHulWbDKMtSZK0qZlM9e2hDK+7OyFGmbwy9UqqNy+hcvDxVDarXiVMigULFsy67LLLZjUajahWq7vV6/WeWq02WK1WB2q1Wne9Xq8ODAz01Wq1LNStd3V19TQajUq1Wg1C3m9zXbIr57uV5Geo8DY/b+5uMk3JUEZRcdfqGmdeo9FoLFiwYOvHHnusq16vz8j3Qbb+2XYTgN/Iz58Z8voVVLhmU7O8hPAou9a6jm09lo63WWB2KcHQX6ny3Fhk+/6VVPEuZf3fHBHfGmL9DyJ8u5jrqtxhDL39ANPm5IFc9t59LoHbMo53u1O7HMh17W+bnPcfRLA4VKeCGpXYx9Mhukw2pc8XmIv5fXSE2JJ1vo1rseV0pM5D3kl01p3A9dze3PY89scUQsf0fZHth5NZ7zN5D03k/1P4/w/pPJyH5S+ns8EDXDvuT2XsIo7DrnQ8qLN985ps43gqa/ftIOR9GiHtyW1ce40n5N4imcbofv5ezWD9tqRjQY39tTfvxS14nSV8Fp/GaGXfZJvTocDnsL9Hc1ymE9BmFb1Xc0ymUgn8AgLmGiHya3gfzKWC99/p7L2I9VzcJORdyQgFc5OhoSVJkqT1zpB349egN/AMLnp7OK5dXPxcw0XOGBpLurkguXwTm8NlqIajelKJO9zqgHQ5rQLYgWT4rHWpn/Xp4bXWZrvWpXYa9UZK7/p5GUmSpA0iC0z2I/B4Lp39mg2z2kugewFDCt9DQPV/ZeEmIe9tjUbjb729vTN7e3vzathRnG92JVOdDHBul19HZgHw0kajsROB1EWEorXkfLnKOg517ZEvu1nV4VDa6VT4m0qlMikLpgcGBupJEJ2e4/88OX9dwtDPFxI4ZWHv06kSPJ7bs3l7b+bYPIvg/UAqHX9E5eANT+Bz9dxhHO9b+P+ZbNv3mhyT2Wzrhwm2r0rOxbP9+gn+/yICvk9wX/b/j/CeyKexGSrkHUtnhtMII88uCRjHEcLPbyPkzd6rr2Y46mbVyj9k+qNTecxdvOYs5iteQAfgtEo5u9Z+C9fa+ZDJXQSZj/KeeLTwOo9Qpft1AsplDEl8ByHutiXX7vvwXnt78r5dThi6jOreV3IMl0Vzg2xbJ+0CdzIl1OF83lupEjAvpQP0OCp7d+VYjWHfvIbH7sr+qxHy/oXh5P9OOPsDtmcK+yYI0d/E38LlVD1n++QMHnscx2ke7+0xvO/25bWO4L73sM/7eV9cz3DtzfbNX/h78Gae6/y4kiRJ2iAMeTd+DXqZDnJRczQXOEvZsjVJVegULmyupAetgZgkSZL0xDaGgOQQzvUPJRjpKVnrPkKYuQROnyR8W122hQS8masajcbbqR4cLASmlST0zAOlfAqYRr1ez4LQ/6SatZ5MSbKyw9FcVhCwrO1wza3cwPC6zR5XIxgq3r+IoPxSArZXEPK+jGF7L2Yo568xZPPzmGP4c4TrZzAs8A3DrFJe16psxxXJMM5rGNL7VQSeRXMIQfelY3G6z/alCvIoKmGzYa+/nIRuN3FN+uwW80anJjGk7t4lIWluFx7ziaZL+ZcKy5lOxXUz2Tq+lW3J3hefplL4Y1x3lw03vIRq0Lv4LO5PsJmPqHVJyTDZqwkvD6ba9CGu21cRJD/ENqfz1Z5BoPsXfm4lbHw24eiddC74PJ+rVvtiZYdT2VzO9r2SauKjuW1pk8cv5L10LJWz2ftiN/bHLDpKBH93svfR/9KBIBs2+VMMQX0CI3e9gIrq0Xz+gs/TUv7ejWaZdxJeP8hrfYpjtjL5/I3icdfQQeMh/m4t4XisohL47022ayX79xd8zu/tYB9KkiRJI8aQd9PRx4VyDz1/lyaVpHljzGQaeW4sXCRKkiRJemKZStXukwlvdiaYKhstZhmh1KVUOTYIX25pFvAW9FKNevMw98D9/B5LZeLSQnDUTnA7l0BobbQzlUirysahLCY8u56A8EXMh/p8AsDrqAT+JsfhWMLTD1I5+huqTK/vMFhb1/Yl9CqGtd8ivP5RyTF8hIrHcRy39P6s2vn/sHceYFJVafr/qhuaHEQBA4oYMIsEFREkSBAVRRRzGLOOjn8n57A7szvjzOzMjqM74yR1TCgmVKJkUKICEkQUUaKI5AaaDlX/5+z87u6Zu7eqqzpWVb+/56mnuqtu3br5njrved/vI5yRz7INTuP4fA/xeCmCZEka63YAMa0J4l14WQoR/xqlcQw1wQW/JsWg5yAyfAzi/ksIrp/xuzvZcVbONruGgQGBwHuA399NqYNbzPwSCNi7cYP24JhqzTqVIm62DH3PSly0p5HqFaMPYBDfMwSh8uM0tm1hhv1Cpbhob2A5+7F//yXCzbrTu1614vqwgvWdzXIGonwc0XU926EVIu03GFTxCWJv15DQv4ca0gXM7ya+pxXnWDcEXF/sLkCM/5z94b7vDkT4FgxKKCUxIVWywEKWuxvXL/WxCCGEEEKIOkcib/5wgB8x4xB6L2DNgpH32/gxWFKNCDQhhBBCCCFE7dGIVJ6+1IDtR1xrsnq7n+MinUcs8zqElRO8JJ/tdbC/gmjmIi9yuRmvxdIsY1LouYir6uZNVVLlv6HubnXZibi2DOfhpQhQI3BvrkSUdFHHE9ifbpoHEPEm87ttXhbEvBZwnK2JcKfuYRmd6PVi6L31rHs3z9kdcKhX43UHcbjt+f8vROoajtq/p7GMuxFaD2fgQ5j2OKdnJHG4+zRF1JucYppbccvuZ7CF7zbez6MtIvUm9mELjr+P2KZtvJjy9YiG/TmvF3i1Ze+mxvAajqlrOX7mcz04hO8K8yPcvz1Y/+9z3j1DrdhdHIsl1ACOOvDL2XepBoIU4ZqdxHE8iX27kn0+gUEApbicy9kOLRiUciT1cT9ie2xB6D2M17YivAeC+0GWqTGPtgxmfxXR90uh60mFdzx9wvLu4tw8gf3XKiTyNiFSvT8R0Ucjkrt5HUst6Tj7+QiWMxlLOLffVGSzEEIIIYSoDyTy5g/Bj7ZSHsFo36AO7Z5KopqEEEIIIYQQ9UMhMcB9eZyLuBAlWCUQHeYgwM3CWec7Ig/j90DjOlqboD7qF8SstkGICer4puNaPQ5BpqoqbFDPtK7W2bz6p8u8mOaLiCR2ztIPeP1FHMBOlBttZncy7UREsqlpOq5rg5MQTycm2fb/RQ3asMgb98TdsLhe4e2HoG5tMNA4EOSa4URdkMY6JbzPR7loj8fhOc8bXJCMRpwf61NMMwTnvIvfftATCtsiCN7E+dmKGOePqRl8ire+RQy6KGGgRls+U8a2CbaZO+5/R+TvEkTGnbhy2yKQR0VUz2WapojgcxEZSzkPL+d4G0ecemnEPEo9oddY5oLQtaQpovECat9OQnRdzXq64/9PRCJP5rrUlu12NNvxAY6fIxBXl1KH17nav8v162nvO4NyUzH6MJ5lnpMQtY9Pst/2I7qvJ8WguVc72UIDSDqzbHH22xjOxasYMLOH7b6xkuNpA2J6kUReIYQQQghRH0jkzU9i/AgLfsAUMCK2kVy8Qog6pECxZUIIIURK2iDE9EJYOgPnXpQj1YmA7yCwzKQMy7YkNV4DISylYBqPV+s23TgkvhmCTCOEoTKWo8JrD8QQcEojfpc0q0Sga8rnki10ApHnEO+1AhyF+zJsk8SBq4SlAAAgAElEQVS8z6UjOh8g6nglYtbV1KMdhNi7EhH1TUSxbgiFd+MCfB1haQrCWV3SCzfl2iTfuY2ar4MRo8M0jog93oHoarjQW0ds/7PYX8m+N4pmESJvEZHmQWxxZfu5EJG3IsU0fyZu+3OWvSPu3rM4Z3tSG3uhJ+y1Qyzcgvg7iWPiaITcY9m/f+A4DgY+PIab+R7q0wbnVXuuBy/gUA6TYDBIUA/3ZSLar8Q92xTx0XdKxzy3fQsctm0ZmNCdZd1L/HGwfBWcU8Fza46HuHduODH8WxxLc3DKdmfbHMTZPQRRvyvfXcGyXIlA7Yu8CW954xyfl7FMrSOOgUMZ1FLOvr2QwQvNuFY2YppR7NuD7IvZDLYYwTK54/bXrN8Btm8vnMvJBmEEg1lqJCJACCGEEEKITJHIm58kqAkTprIaVUKI/KA6MYeVcS4j93fTeZSqjtpRdLQs8V67iE6vdOhJZ3a6dMExEeP+FtXpLYQQQmQDxxCRew5C4PEpBM5tiBGLEYFWI6amErMSVWwL9CBOtm0lvxVLcMmV83cvXn8Qd5z77q8xjyO8upv7ibg9yOf82NVjaVv8S8T3xWlT7PIinaPo7tXjbIQj8ji2oaX5eygQpo/EFZgqAjrOehRTb3czgu6/E2U8ArF3MDV730NcWojT8BScg3d7ka/TcETWRcz2MeyvMSmOpxj1Xb+ZROSNYg7OzhtpO3aMiOzuhsBb3QGBHdm2zi36Q88pnIrGlRzfUxFHBxMvfSHibidilR/lGJ/uHVvjEXV34jydz7F4DJ87CSEzLGovoe7sl82sD7/jf4Fo+SDHRAfODb/ecGuO0YsRMEdw3M9GcP4MF+orXpu4ELG0G/M/ifPzck9A/cCLqjbWcyvn3jqvtrJPCXHRm3ltJ+vQgevaK3zv6547dwvL8SHLnIwC1v1wL8I5XGv4eGKuFzL/Nuzf3Ux7KwL1pYi8cfZDC35vLGD+3+b8vZl91wxxd0oKkTeo3yyRVwghhBBC1AsSeRsW+uEhRP7jOndOxuVTUzSmc2UvHUk9qCN2A51AYfdGgOuU+R6xhEYs2g8zEHlvoIPp/TSmPZQIue/SsXMjroLK6EWnuRBCCFHbFCDq9vRimTumiBdexv08iGTemOKeW1NciFjTNMWgsRjCVjGiUXMEEsdtvO8e97LOHRFPDJGoiHt1k9Dv0cZ87juh740hMAUOx2ZJavwGtX9juCwbeXU5D9BWSIcYDs5D+d52ST6T8LZRBWL9ZNo56xHj11Kb92K27RDcoB8x3VJEw+MRwW5h2ksQGid7wllt0ItjKlVbK4EQ9znbNSzwRbGUY/Y73vGwOzTdsUkGJmdCY4S7ruzn43HJtkrhiA7c56kEfycCfhWH6Rcct0/ymcMQJYeEHOIbeBjR66ezzjG28a4UAxCnIPYvo7ZwUL92K+9/H6F9rveZHlwTBrJvjuf9DznGtiNCbwidT60YGLnRO84XeoNHNoXi1c9kO+9nW5wTOgaC4/lJ71p2gGXpzjrM4thZxHtt2S7Hse6VHVMJrhvvMmggXDu6BedOJ+ry7vYGoCQQtLuFRHLD2XsO7vt1zKcZ83Hb88dsk1SDWsP1qIUQQgghhKhTJPIKIUQ0UR2bMUa872J0fBRNmC5VZ0B4nkfTgReOLWzFCP0P0pxXEzpR30ki8sa8R3s6cDvQWXUCnYxRAqzbDvcTL+foz9/3MSI/XCcs5nX6Xoi7ogWdO6cz0r611wmajECs/X4a6+5i+r6EyNuU6LeVSeLtfNy876gjt4wQQoiGRyAK9eZ+OACxoUWEQzSBaDSfAUgzuKfvqiRatiaJc/99A9dpMpF3L/fOIoSd24iWHYuA5Nb3GRxxOxGoSnHvlSKctvDE2jiDu1y75z9DIlwh8yhFgGkeIaokWI5zeG8q7ag1Xn3gQyw9ChGmAlG5bZJPlSJU3ki7bxiJJZcSzTwVwe0TBse5ON3hiIPuOPgKAtw09vM6hKVBDJAbgUgXuHvX1HAZjHaIoy+lMRg4gRB2FcdnVBs5vG3cwL6ROIU7s/w+JyEsZlJOKCqqeRDr8Sht6k4ch/NTzKcijXOqMWLhmYj16xFrN7P+7VIcU4WIg8W0uTcgaIeF7oAECTg/ZdDiT5jeicLXI+Q+xrQtmH4Iy/UZ33eQZRqAcNuR/bCU+rLGtn4NUXcTzuG7iYRe4tVZ9vfv1d4++pTP+FzJ+f1xRN3fRuyzUqKh2/G7pgXbpqNXF9cn+D/BeZzgvN/Jb5d1oenLOAfdd63gmnkI1173Xb9k+/j7qwPnaxDNPBnhu9AbILCV4zaqnnFAhTdARQghhBBCiDpHIq8QQvwzhXTCNosQCIfSudUIZ8LW0PsxOuXWpulyKMKpcYWZjUMwDToRYsTidSDyLVWMWUAQiffniPdidPqcwToeRafJTp5PoRMxLPLG6NgZSMfOFjpkmjIqfmeog9bo5OyN6BwnPu8A372OSLgihOhUIu9alisdLvU6oHaz/b+Whsj7BdP9QGkHQgghapBChKdzEUX6I342ihAD4ogLi4i5nY3wcLAe7k2Ba9RF1E6oZFp/2c7kPv8oQqZb7/9AuN2C4BeIR4kkTtxeCKo/jnDyJjznbDIC97Brf/w2oj5ruiJMJp/rxL5dyX47n0Ftg/l/MmLvSsS4JxDZBuDY7U+U7CUIugsRhrvw3kW0P+fjeJyC+J6JMBpFY5azGS7MokqmT9CGiyOkL/Dei7M8YaFuEYLbX2jThV2UpyAOZrIu5aH6p2UI6usRU5sz+GBPinkkEBgrOx6uY791Q5hszH5521vvZELxftzuzVi2oFZ0svP5CKbdzDlwG6LrZzj/n2FbGstxLwMp1yJIHsdzL46fcuYXjzjXvvD2xXamPZDCZdzPi0d2y3A7gzaD5TkhRRrBQbbfKNbxeLZDEa7lDxFkA5owKKPYE5yDQakFzK9DxPfEGTAwAyH5WL6jKwNnNrGOrZk+xu89d7w8xfWqhN9Hx7Edj0UAf5NzNhnN+D1UkwMwhBBCCCGESBuJvEKIfKKARybXtkBUjSNaXkNn29yQQNge1+csOl7WUmvMxzkSvm5mD6Up8p6MMGs4XZbR0WZ0LlxFp4ITe9+qxHFQSN2uHyYRTmN0wJ7L+/uINfs9HXUzI2qEGR2Ay+hc7E4nSRCN9wEdT11w807jM8fR4bOETqQWdH6U4GTZSmdX2NERZo+3PYzOmg50hIfXbRgdukYnzhg6pWJe51bU9vspna+v1nDEtRBCiIZHDEGiO4Od+nMfbZfEtVtOXdYFtDtmcZ+tK9duFIFQcTDD2vbB50o80a7Eey8cMx21joEInMo1Vxnl3Pfrqi7/AZZ5O+2Qpz03bx/E3MtpU07Cob0d96wTgC9g2gsRFYO6vIsYtHcM8wkeIz2xd0E11rMVwnIpYnOLSqZPeLG3I0Mib+CijEqxOR4x7V9CAudRzGupd+zEeH0f7cYoSnkE613KNm+EOPgQAyRStTHLabd2qWSdL6WW7D0I1W0R/oL2ZjwUa+zTmGO+NcJt05BzPaCQc+F8hNRmiLUzEJj70079NbVwV7N9zkdofRYh82zash35/Dba9uNSxFabF5neJMU0hXyvsW0/IznnPgTa0iQCZ4xI6e5st1m4rg/DaXyQdSn2PnMoCTurOF6a8hukB8vYh98xcyO+r4xtfTbznsN3BYlDx3nJPYHjeTwu+gHsmy6ci6fzfe+nEZHfle2cboqTEEIIIYQQNYpEXiFEPhHUX2ud5jolEBKLqfHUlE7Z0/nB79OXjrbf0GnhhN5fhX74Bx0uqdwDPmfRgfANM3uY7/6Ezqf76Pj6LU6QM/g/Gf3oGBqXxCUQp8NoIZ0jB+i0+gAhOdno81F00H2AiH00HXA38T0/Rjz+myfyvsw8P8PJ8gRRc2vpjAo6k9qxHMk6hmJ0/gTcxIj734emPZ8OrL/QqVbI5xbiHjidzsKpER0163HE/D9PcBdCCCEyoQBx4mxcjgMRJVokce3u8UorzMUZuCtLEiUCMbpNipq8UQROvta0p4J5GPf95ikEsYDG3mC9qjhVmySJwa5NDmF5m/G9n1Gb9A1E1CG0U76HmPo6Auks2p8TcPD2RQy+kPjbEYjCc3Eavkk79wJEs8v5jsmIYGUZHj/lnoDVMU2XczzkvCxgnTvx+SO8gXiBYPZ9nNyTQ/PqT1vNb5e52N4f0Sb/TWj6QrZzV9rj7REyzRN+yzkGEpUcPwdoE7tt+W8R7zdhUKFrQ/6Odu8CxPsi2sRFHOvFEZ83zoHTOB5bpxAKj+bcGMCAzmYMkHSDInfQ/n+elJpb+O3hknX+Sjv6z4jR9xKJHec4c+vwXBrlSMp4hM/NAq99PtNzL3/O8fgQ2+4x9s0pOL2D7d6M4/5mnNZj2J6BK7iICOvetN8D4gwUHY5g25zfEX9ge9yDgziqhnRjvrecbbSJY2EH7zenzR/sny1EkB/vxcMv5DfDRo7HP0Zsj/D+O4rjqTqDU4QQQgghhKgyEnmFEPnEcDpGtqXZWVVGh9kndCgV05HSLuLzPXGg7qKj4Wt0XgUj21vRmbMxzZHchdSm2sw8ttDB8zodOWdTk24r8+xXich7He7hVB18y0Pv76OjK5lj6HA6l06iI7qUEfEb6Byp4Lk5o+XNq5vXkk6/D+gUGci6XU5nSjs6vP7oRUMGny+gY6gLHY+GIP5vdPSE+Q7uhb1EyDXlc62JWTsRN8SCJJ1sT9JJ1TYUGSeEEEKkojHCSg9EuiEIUM0jPlOG6LCQe+o0BLNkIlFDJtdqWwbL2wpRLUF79EkGvQ0kcvkcRMxAXJrFYw8D0eaQuDIKAXIEwuJbCGUvc9z04f1vIAi/5Alx+9MUe4tZvphXXiMdKrx2blMG83Vj3a9l0GIpbb2vcX78a5Ko5i2h7z2OeO/DIkTe1mzDfvx9H3VrfdrSjkwWHRxQwva/juUMJ9kU0bY8yEDBuWzTexDbW9A2bp7CcVzB+b2XdS8ipSe8b5qQwnMmAzubsC370x4u9b6jsxer/Spt+INsk9cQ2U9kG5yFEB5FgTeYMnAYt+G7mzCfUzimdtH2/tibz2v85vkSIudJLON073rmrof/TqrPr9gWvbgGfsS2W8xx7LvCvyDC+0l+D+1lmY5BDD6JdbssYpBqnGkPIeHnbH5vBKlAjT3RezsR2Lu8wcHNWL5lfF8v1rMx85xm/5e7Ebc/qeSYE0IIIYQQotaQyCuEyCeW0Tn2l0pixwKK6UAbz/8ldFBc7LlQAjrQedDKq+t0lifynknHw8o0OpeMTocTvXpWxXy+iM6Ww+j8aorQW1lt2t5JBFCfjnQy76CTqdBzQUS5dc5EaH2V799Hp8x6lnEfHY7b6Zw0Otiu5LP7EHtH4TJx87qLCL1CRtkH+6kJnVddWfcHEX+7MEL+O3T0hGsGn0xH0jt0zlyGKN6E5WrKsq1KEmkYo1O1HZ300yvZhkIIIURL7j+9GaB1Pveu8G+rBG2L9xHq5nOf2ZlGBGh9EdwrS6rhLI6Fnmv7c/VJCYLeniROvp20lSbSNroNYesByoO8zDExmWlnM2jvZEqIXIjgdwEuxGcZNDeV486JrN9ivmOY19w0nOHxDJJnkhHEK0/1xNVg3wUDJn8V0XYz2sufhxykG1j/NyKmd8LkkQiPiSSpPfsRb7emsewfM/jxWzx2e+8dZODoPES8a/m94IS/OxkgegfThUuIBOu+G6GyhN8mnT2nus+nXDtOQmw+gd8XtyBOVtA23sLgyWN5PcF2vQpB81JE8M7Uwn4QEfZDPlvCcnXht0xT2s3nIa5fzSCEVl5N2n9le74XWmbXvv8l634R6+pfzwr4PVCCEL/ZO1Y+4fWl7M+moW1fjiv2RyxLqTcw4lXm/RAJQr088bmQee1g++zn98oHCLWt+C3zMNP78eJteAxgX5Xy2+Ukln8fr80JnePH4tZ/rAbOJSGEEEIIIaqMRF4hRD7hRnSPpkOksngyY6T6wdAI8iI6PcKOhgov3tl4vxN/N6FDZi+vhztwomjONTiIENvG/ILOnKB+X1CfrlOKecV4f06KaYwOsWtwK69hvofSoXEoHdB+R0spHU4P4ypuQ2fKdlzIu+msedzbXgV04sRxEAzFpfIOHU5/p8OkGfMP4phPxiERbINuOJ3cdvg5nVJfDq1jATV1P6ST81/pAHqf7bmfzqdVzCuqszPhRdWl2sZCCCEaNoXcK89EDBjMvatNxFYJBLRFCEXTEEpyIS3iIPfGA9WYR3C/TdcdGpDp9NnAAdoQe9OICF7AcXAa7bGLKRVxE7VfJzPw8AsEyBUMXLwWMakHAtdq2lPjObb6IfLdj3D8Au/NR0itrRjwAyz3WPZdkTdIwLXNfpZEBDWE3ILQcbYaETXqM7tpvwbHZ1QN4X0sTzrH0QHEufuJv57pvVeKy7MjbfVPEWx/RRz3uey/h3FxhhnEMu5mHc9AcI0j9vuU0H4NUnXKmeck2s93IuCfg+h4CiJouRdv/Se2dz+uOS+zzH+jlu9Cvte5kr/C9i1j3YrY7kfxKGb953qu4Sj2kMYzhc+VeEJvgmX81Evracm1szPLvovjuQvfEx4g8ST7eAiDHH7g/Wb6Ka8d54m8MX7nuPb/o2zr3RwTX+Hzp3qDa31aIkr3RQwuZhknsY22cU42Ci3nQJKgXq1ivLwQQgghhBA1gkReIUQ+cRCh9z46NSrjR9SV8uOKi5K4WjfiomjBtbPQiyQ7itHoz9JRl05ccyAuBh1Rn3sicUu+I7hGN6LTIRmd6WReUsl3bmCk/k5E3jKctc0RXX8W6nxy4ugjrHsjOlJ+x7L0YZl3h+oX76Q+mJv3V4k3a0uH5nvM63DPAR3Q3KuR1oJ47MW4HpxL4Qoi8nwuQQyexPJU4G65hE71ZrisGtHRmYzGiNXJYquFEEI0XIoYtDSQdkB/HH3hxA/j3rcdcWY+AsgnadSizSbi3A+r6qaNeYJHaYbzKU2jnmq2Ec9QRD1A++Y92qCjKGUxioGK44lfnkFyjDt+fkEb8zKmO4fX1tLmmsD0zpU5krbodbz+EsfjtloQ0eOInlHs8ES5KKJiyiton0ZRHirvETXvRAYO+QralaVJ9t+vcCj/lO25DWHdEFInsP2j3NsxL2K5kH0zkgGhUakyc4hsDtbrARzNe7nWXImje2yo/Xw5btWHafO2QJw12uY/I9J7kFfDdjvvbedY3InzuZDtsA1hdF+afUUfh6KczYsr9yO6C7y6zRW0vRcj9EZdIxJcN0fSzveTdj5B/PYjknezHAl+7/iM5/fNp0kGr2zksZJjbDdu4J0sdxn7ObzvNvN7M9k5IIQQQgghRJ0gkVcIkW88S6fqI5WIrYcizs4MvZ6so85N902Ey450pgSj90+mo2u2N1K/MhJ0chQyXYnXqVnG+8GyxCqZZy/mU5lIeYB5BU7jBCLsSkbkhx3In3uibzumP4/t1gpROdyZVu45MPbTkTSQKOnHGEX/PPHLk731Wk5n2U7ee43XP2N/fhD6nsbUevsj/3dm3dzyfI/vO459E46ZC1NOh1AuOoiEEELUPE25rx6LY7cf7t1Dk3zTAdoEc3i8iYiSi4OHmtIeiBKx0yVoz2QaSX2Qe3Eu3Y+b8pu6NW2TdB3QpbRPVuIaHYWgdREP5758DsfrZsS8RxD6RjD4rT91T10b5q+02abjNL0OUfhy2lGv0LbapUFt/0PcG1wYZg8RwU+QRPM1r12+mdcKk8x3MtcOo02/CifpIBy3USzitT1eGRkjgnspA0BXIfwG+28dYnMZg1FmhwTOsUwT1KXdwfGxi8+U1+G5Vsy2fJ1rZMIbdJpsUEdbnOpvRbw3I/T/RgY8bImYdi2DIpIlLS3leRW/fdJlRhKRXwghhBBCiDpFIq8QIt+I04FwM/FlyfimJxCmQ+DIuZaOlkKER9epdz3C75106gyiPnCqWMZYyK1S4HU+FIVGtScqccKkEw8dsINODKMz8hHWqzTJPSGI3/uYdfwlLoJX6FA5D9dsmNOpMbaDaLSldIS2I27uR3RgBrHaxZ6r40bi87rhJHDOiX/DSRHQjOV+DGE9IOj4OpFn9/m3K9kmMTqSdE8UQoiGTSHRqsO4L5xPlGvLiK1SwT1mCU7J6Yh2O3N8CzahXdEkSbJJZcQY5FWOaJuJk3dvFtcqTkYL2lOtM2yPBVQg/D2E2HsVwuzZiLU34cYdi4C1lQjnsUw7Cof5TxCzxiKKzSUe9z5KZ1yKIDiOxw5FzP4P+yJei9H2jBMdHC4Dk0ysNYTa34deW8DAx0y3+YEUST3jvQGtB/jtEWZx6P/6ioyvYMBC+HrybIrP7KMmcDrXoO0RUdg+f0sRP70rYtBvOkjgFUIIIYQQWYE6tIUQ+cgTROA9keQHeCs6vn4Q8V4sSYek65z4Lm6ec3FbfIqD9Hzcrf3pIG5JJ1uqjpRCL5bZiDBuy3cXe3HOMdYhVafnAqbpzDKloszrzCqgk6qyDunL6DAsoRNxIyPdLyFWeVDEZ26jjtYaOhVbEC94mlcPK8ol1INtOceLtZuHIN/Fc0+XEKVXTudq4KYop5P9BmqS7UvDyev27QnVdC0JIYTIXZog0g3HJTmUtkJUe+AgYuQk7o1zuJfmW4d/VeOazYtmbZzh54LpqyIu1xeBsJus/ZgJrn31n9TUvQARdwgD7K5HxHqKttBu3LuvUtt3JNP+mOPxNY7PL9PGuQdX+sWU7hhPO2lLkgjhhk6MwYgWIfCmQ1SaUE2L6v535IL7PdNzOtMBH5XNX6KsEEIIIYTISyTyCiHykd10bF1BNHCYuxg5HtXZEvfcJ2HW8rgA4TFBR+/D1Os7BQF4cRodQiWMKD+E/4/06v1+iDgZRP4lcG4k41Pev5CR6qmo8Eayu3XtZGbvVvKZEXQAfsq2PYzvOpOOwygas24JYpNj1JYr57VHk9RT+wWOiRKvw3Qr2/srxOVZqKMm7HpeSy3eJUxXWadaOTWNU21jIYQQ+UcLkh+G4Zzsw6CrKLHuAKkWkxF/5nJfyzcCsaiqolGc+38hg9cymU8Hkjoa5ZDwWO61HWtKmN5MTK871vqa2S0MrDuLNpmLA3+aZJbtCL/jaZsFEc3fILL5FZzm3yRt5g7asYNpJ0/iuzZJBPsnVMJDCCGEEEIIkRNI5BVC5CtjiVkbG+qoaY6j9MtJ1ruYjtxkwmBHovNG878TKn9Lh/Cp1Eb7G86IGJ3Fu4ku9NmBGHkUr7WkjlYpwvHndMZNZZopleynT+mcrkzkLSFGLiCd2nEb6RDcyHps8GrEdU/ymYm4ntuyHsU4eLcgaL8S8d1nUPPwdv5PeA6Z56m19SydmgeT1JSrwNnsvrer5/xNxel8VzjSTgghRH7SinvUBaRx9ERcjGIfMavTcO0u5j4tkhP8xszUyVuEOFyV2ON8ZCclSObiwHWDEa40s68Sv/yGV7N1B23eCbSxLsIJfD8u4FdpU/6EAX430W68AGH4Tea1Ngcjs4UQQgghhBCiwSKRVwiRr3xKVLCLUJ7hraOLqJudJKK4AEfnidSO7eDVLIvx2l9x8gR1nxLe80E+H4iPzuX6a1yovwh910HEyNvpXD6BGmtBlPI86gq/iGP2u5Xsp5l0AFZGmeeOCeKJi1j35gjKq0IC6nKm+YOZHUFH91SmaZHk+95H0C327jXNEK+3RNQ/a0T88l8RjwuZJuggnodY/yyi+msRDqoEyzSBeYyi7lxl3Eqn/eY0phVCCJG7dCDS9lwimU9KsSbbaS+8xX1vqfZ72gTtjEzduKXcy3Mlqrmu2Em93lcQfYcx2PCruHZfpr2zkLbTy7STXqFtOJoyGtfw2hTaXJ15vy8JKCNwD7/C8S6xVwghhBBCCCGyHIm8Qoh8pYKOsJuJqYsjap6P8BoVw9ac6c/Fseui7f4LN6hz5D5oZuchFEd1fAV1ddvy/6m4IzpHiLxGZ9wduG+diDrfcxC7COi3zexHiMqVRSr/nTjjIxBRfVy88vF0/HVB/DwaQfoilq+Izu6jcTl/5n2+Ja6lrbiA3f83EsfYMsnyOJF2PWL4VWzPlYjJrUPTNmJ+JyO4diJysJF3n9pCnTq3D3qZ2XTv8zHmGyxLgnU7n47O8xDuN3m1hQOaEWd4fSXbVwghRG7SiPvbBQz8GojYG0U599xZuCdnkF6Ri9REjdjqkqlYm6gBkTcb1ru22I9b9yWE2Cto030DIfcZBgcu4VieyON5HMBX0t4KnL1O0H0EgfhCxOOzaLeNY5pFSerLCiGEEEIIIYTIAiTyCiHymdWIk+cgoA7htU9TrLMTbx/HQXrQ6yjsiAj8dRw9UXxKZ9kq3vuIDuJkUcvOafyYmd1nZk/QsRzgBODf4PL9Thp1ZT9EwPwlbg3fPeNcwt9jHi1wbZyJS6MLwm4Z8ZWrIzpHj/UE1A6I2GcTrzw3yfK04buW03HYhc7JI3nP5zQzu5Oo6y18xw0I9e8xXSkir+ts/CIkQhch2t+FQNyY5TsFp/Qh1AV2y7os1Fl5D+JvZXHYQgghcgt3T+uBS3EwA36aJFmDYu6Js0jGmBeROJFrVCQpa1CXZCq21oQ4m8iC9a5t4tTgHY/oezWDF76L8PsEiSvv0faby+NZBrYF4vAoavK+QZrMFMpmuAGAX2O+rzJgbp7EXiGEEEIIIYTIPiTyCiHymWIcnwNwNZxNZ1WyTqpi4oIDgbQIcdFwpf6E+MZkbKCTLMA5V29JEQPsOt6ewrG7NuL9b7HMi9LcR99EoO5BFHTAZubRBGdGAR2EH3kCaTEu3XURgvI6L976GObxqJn9mE7EKJohUH8J0dZ99918X9hp3Jw6cH/i/8+pv/tkSHzdSUdkmGLE/A64fD+jbuJLrFsFnfYfR9RRHIEDWgghRH7QEceuu/cPqiSSeRuRzNQxAS0AACAASURBVLMYwLUqj46B7dzXKxsklk+49tvuBvYbdzKPc4ludgP9HmLg4cs4exexbRbxcCLwtYi8F/GYhTv4Wdpag6j7ez/Tvkgb2p0vB7JgvYUQQgghhBCiwWMSeYUQeUYBq+NHMS8leu7r1Nd9H6dIEAVYENoEvgO21Iv92+G9Hv5MQBAxGPO+Y0Mln4l7Am94mjidcelGD7rO6e/jtPXn5QTqn6bx+YDw97nY613eOroo5ncQlTckWbc9xGMfwjrMYbmO9KYPnpfiEPFfG0P04NzQ/IP9FvP+d2J1d2K4OyHm7kmxfv78nqLDMtn+qS5RseBCCCFqFndf6opjtx8C1aFJviFB+sVU7jHTGFyULRR6NfOrSpxSDc0b2HEWY/u1YXBZdX7rJtiOlblXY6Hn+mIBj+nU3r2Gmr030qYaR3unDIfve57YO5KBEf0pD/I0bb/xnEtXkHziUlZeMLMJZvZmxMA5IYQQQgghhBB1jEReIUQ+cRode5vp5EsQEVxMJPKPef9o3J0x6uim0zFX4dV+zYRSrrWphOFypgkvR4LI6HQ7e0sQOI+iHm1AKS7YBFHGgYjbmOUK1quA18LsptZvYwTVExBVd+GQCtfljbP9nUP5NZy7B3mtC52IPb3O5/08DvW2wW5cI02J2Ey2/Sp4z3VatmM9nZjc3tumwaOIZfW38zzWJVlt4eoyPzRwQAghRM3Rkmv4IEoD9E5yHwvuNctIdpgWUaM9W/gebZNW1RgoVEFb4BgEuY8y+Gxwv83F34mdECTbU2qiqIrzKeDY2EUpiV0ppi1k+lRtvbpkKqVCnIv3MurrusSSW83s74i3M2iXubIh/0qKzY04gc8jEWY1r08iVeUCBt/dzmMMbbwplaTcCCGEEEIIIYSoRSTyCiHyiaN5nIKgWcKjKZ25RXRSNeFREHL11gbpzD/VNJksX8zriPTr3iZCYmfcm2+UsBwmEGgLcT21JBa5hNfCnagJahm+wX3maE90T+AS6eF9d9x731+X9XRSN69EiN/FPPsiqBbRyZ/w1jORZFseRmdwbbFYIq8QQtQ47RkwdD5Rsyen+IIvuHe9jSC1LIt3xxGIbjVJhwznFfdcrLlGe0TKFmbWrYaW3ZWA+E2K98u9AXvZss2cyD+Rx3Nmdj0C7pcRaJ/ApTuNwQ+biHj+Gw7gq3HE/4q0mT8gHk8nFvpqHMDX0tZ7CTH4syxYdyGEEEIIIYRoUEjkFULkE8tx8d5BvbB9iIdOpFxIR2cXRLdWrPcTeRap24j1Ca9TMpE0HQHZjyL8nHq7Ldm2FUnmkWDajqF7TeCM6chn/e8Ii7z7EOMLK1m2Upy/7UMxzumsayFOlpoW+oP1kcArhBA1QyHOVCfuDkTcTSZgxhkoNBvXohOgttbyoK6a4Erm8Sn1UavqRI0jGJ8YUQe/Mvbz+T3V2F7BvTjV/TuKYPqqOmI34Vw+DlE/0+8PqGD7BS7YVCLvHtohX2TpPX82gxxceYqbqbN7t5ndhbN3JgMhP6RG9SMIwy7C+Toc8r8mKeaPCMOzcM2PZn6Xcp6NpW5vpsecEEIIIYQQQogqIpFXCJFPbOCxnI7R9giNpYi+5Ty3o7PKiYgrdATUKski/Gqj/mE21VQUQghRMzhX5hlmNoCauz2o9x7FfmJmp+HafYcY/1zhDoTVe81scjXEzgRCp3Nlbszws6VeuYiqEojDmQ6iC6avqri8BZHXHR+/q+b2cwPahhH7XJBiXUoQhfeGBq9lE3GEXFez93Ezu8XMLubZPd43s59SYmIdbbe/4tAdgTjszr1f8v7jCL0zKb9xMwMv3OMmM3sGsXdTlm4PIYQQQgghhMgbJPIKIfKRFxByB3q1aAsQdQvoBH6dZyGEEEJkH+0osdAPse04hLcoduNWnIXAuzpH7/HdEFkn8n91kkbKvHr7mRBMX1UXrHl1ajOteRyUbyiv4vcWUKLjQJJUk0woNrMPKE/RH6dqsu+MZUk93sooR8h9FxH3Cs4xV+7iWaLMn8KRu57klacQzocj4A4iUnwd7e1puJ1PN7M7ics+j2n/Tpzz+uzeLEIIIYQQQgiRu0jkFULkIzvpnPuIzqu4J/SWEN2sKDkhhBAiu3BiWScEpb4M1joqRcmBLTh25yA2bchiN2Vl9OL9tTU0v6NINGmS4ecas72rGhUdo61VznMm4udePlNVcbZJCpd3VRjLfrk3hcgblJVolUO/rd1AgsU82iPcftvMujPQ4AZcvE8THb6dvyfiqL8eJ/C3mXYcgye/xmCM+6jd6x63ec7edVmw7kIIIYQQQgiRV0jkFULkK07UXWVmJ3kibyHi7wqvnqwQQggh6pcCIpmHMzjLOQHbJlmiBE7dKTh3Z6coDZBL3MWyjq2hZU547Z9MaM7+aB5RLz8dChlkt5t6tZmIvB/RbqvuOlfHhezzpJk9hKCZjFYI44fm6G9rV4f3eaKcB3hu3e7UiB6HwLuW8+wlBlS4QRhXm9koRN0rEXrd9N+ifvZ9xDn3ZL4vUe/34yxYbyGEEEIIIYTICyTyCiHylXJqtL5Ap1+MRzmdjslcQUIIIYSoG5xAdj6RzK7m55nE7UbhBmm9TW3RaUTLFufRfhrJ8+M1NL9A4M1UpA3ih6sqlCY8YbcowwF1wW/TqojL5q1vVWv6htmKsHkozuioGrOF3vbK5bblJ2b2BG7d4UQ5X4bYexUCrXPkfkiM8xu4m5+jbu91xDU70fc1BN8fsN1uZ+BGIBxPYl4rs2C9hRBCCCGEECKnkcgrhMh3diZZv5rqABRCCCFEZhxtZkMQeC8g4jWZ49MJa1OpuTsbR2G+JXF0IDZ3L2JbfRJs26puYycudzWzNmZ2eIbtrdPMrCO/UcvqeTsETCKS2EUU/yri/QrWuSxP2pZbEXtfQ7y9xMxGU3N3NGKvOx/fMbN9iMLu/xdxPF9rZrci5r7B+z8jhn0kAnJ3ROTJ1AJemAXrLYQQQgghhBA5iUReIYQQQgghRG1TQGxrf4TdPjgkk/GumU1H3HXu3S/yeA9dyfO0el6OmiBB1HMjYowzwTm7m2UY8VzbPI7Ie20SkTdf2UFc9as8RiLM/hBnrjs3n+K5jOeZiMDXIQ5f74m57vEocc6DcQefjPPXfeZlamsLIYQQQgghhMgAibxCCCGEEEKI2qItUa0XIO6chpAXhXOyzqPWrhM83zOzAw1gz1zD8xP1vBw1xUHE3kzduAc8Z2y2MJvlOJXjtiEcjz67cdu+Qb1oV6/3XIRcJ+COR7gdh7N3Hs7cvyOOX4RAPIJ450nMbzrXBPfeg8zvRcTeWXno1hdCCCGEEEKIWkEirxBCCCGEEKKmOcbMBnjO3S4p6rxuwsU3G3H3Y2roNwQaU4vYMSVP1reiirVx41kYeVxG/eduZjbQzCZkwTLVB3sQeV8njnuYmd1mZlcT4/y65/p1pVIWm9lS3MBumqEM8nCPBcRBu8ebCMdOBL6PAQ/u9VeIgS5peJtaCCGEEEIIIdJHIq8QQgghhBCipjgTIcfV2+1LvdlkvEfE69sIvFuzzMVZF7jY6tZmtiaPXKKxOv5cbfMsIu9VDVjkDSjhvF3JoIQrqa99GY9RuHWdIPw5Qu9ynL1XIvZegBt4Oc7dSYi9ffj8bWzr19jeE3AUCyGEEEIIIYQIIZFXCCGEEEIIUR1amtk5iDfOvXs2dVmj2Euc62zcuwuJeW2oXInDeYyOwKzFxQg/ZGa9G/qG8KjA4bwCAfdqxN5LeThn7kTE3s1mttrMfm5mzxDRPAzB9wwz+8DMXiCmeQ6CupvfjYi9rzKvyQwEEUIIIYQQQggBEnmFEEIIIYQQVeFY3HfnIfB0NrOmSebzCfU638YBuF5RrP/NeTyPreflCJOtrtr6wMWHF5vZUWZ2opl96C1DQ99OTuz9CBH8Wer0DqUWrxNyLyfK2Qm473Id+D3C+cVMM9zMfsh8nsP9u5hUAOcOvtZzCE9ifhuzYN2FEEIIIYQQot6RyCuEEEIIIYRIFyfinoprN4hkPizJ74oyYl2dwDPXzN4ysy94XfxDFHdC+UEzW5Ul2yOom9zQxcswb1Av1rlQf+W9F+NR2MC3WQUC7sMMWAhinC+klvFaM/sFtXa3I9L+GZfuRQi9lyD2ugEgTyH0uscpbPeLeVxBlPM4M9uQBesuhBBCCCGEEPWGRF4hhBBCCCFEZbQzs144d4civLRJImztMrN3EHWnUcPT1dRMaCv/E5ewXV/PolrEwXIkqrG/EqHnfOBJHKX9QyJvPA/XtTpUIOA+6rl1e/P8H8Q4j8PNv5G6vU7QHc95MIpt/G3E3ldw///UzE7i/b7Ewo8m5nwKIrIQQgghhBBCNDgk8gohhBBCCCGiKCCith9CzWAz62RmrSKmTeCqm48o8yb/79WWTcpAtvFTiOXZIBSW83ywGvNo7D1nsk6Bi7igGt9dWyxgXbqaWWsz28P3lCL07kfgFP/AHUebzOxvZvYSYuw3cewO5RrxAo7cLbh7XVTzdAaSjEbIvQ9hdwrvOTfwMbiq3aCTcxlE8gzXnNVZNGBCCCGEEEIIIWodibxCCCGEEEI0XJy42CRUH7eFmZ2AuNsHZ127JPV2i6lZOhvhxsUyb1O93UppgTPREMazxQlazrJUR+QtR2iryDDCuKKaDuLaZD81ZU9BfHyN7yphffd6Arn45326AwF2He71K6hF7a4t1+PWfZW458/436UAdGda95mbiXV215mJZvYbM+uIGHwuNYFvJyr6NcTe6hzDVaUIp3EXM/urjgMhhBBCCCFEbSORVwghhBBCiIaLE9Q6IMbsM7OeiLvucRr1dgtDWydBbd2lZjYHYXclbjy5GdPDiVxHs912Z9FylXpCb1UoQPBMsF6ZuHJLec7GY8iJ1s+b2S+pMxuIvGWsa2klnxdmH5nZH8xsEgNHLsfV25Mavq9S+/gDM9vKdIsRbocj+AYO3/lM+wgO4KuoEf49M7vazCbgIF6BQF/btCH1wK3PLSQeSOQVQgghhBBC1DoSeYUQQgghhGi4uEjdbmZ2Ga7cAbjQ2kRskVJqaLo6u/OIsP3Yi64V6TOIbfxIlgmEwe/DxpVMl4yEF5dblqFYXOo5gLMNJ3xPZZnOYOBDBS74ApzZ2RgznW2UIuKuxd3rzoNhCLhnEs38mhe9/AXbfTE1ey9k2iuIkH8XQdfFQr/MvNw09+MAnklt4EUMYqkt7sdp7JzehyJoCyGEEEIIIUStI5FXCCGEEEKIhocTp07HsetEkSEIbM0itoQT65ab2QzEkgXU0ayPONR8oAChMEat0bIsWqemCLxNq1gnOOY5gTONa96dxceUW5/NHPcn4HJ3tWBb8pv6EP22zohy4puf4Bx4E3fvCM6N0UQ2j0XI3YVg+w6irrteXcr0Z7MvpiLoTiQyeaSZ3Ukt8ZmIxFNr6Rg7kVrlh/L/92ppuwkhhBBCCCHEP6EfokIIIYQQQjQMnODWnFjTvkQGO/dcW2pJ+iRw9i5AbHGPJYgtqj1aPZwgdDLx1huyrAZtQei5KhR5tZ4zITgGqyIu1wX7EQmvY3DEe2yvmPcsMqOCc+BxxNspOHR7mdltXKve4fXxRIG7FIFlTH8JIu5gPvMegu5MaoS7KOhrzOxWBrNMRlCexvWtpnAx1McgWm8leloIIYQQQgghah2JvEIIIYQQQmROI8TR/XVU87E6uGjZI8zsAoTdPmZ2EoJvWJhyossmM5tlZgsRVD4g6jQbhbdcpA+C0OtZVo/XvH1c1X0dJ7q4EGdjPI3PBByGg7hRlrmbA/YhLN5kZj14zXct6/yoOuVcd56h1u4JRC8PocbtcJy7U9kHO4lwXkFM81Ci5ocg9q4ys9kMTFmKO9h9/nYzuxgReCqi784Mj9Mo3GCYriQh/D7N4zeGA9x97n1i73UMCSGEEEIIITJCIq8QQgghhBDpE0OAuMPMjjKzPyEmZBsFtPXPwHV4rpmdwzKHHZZxRJalOHbnI1p8pkjmWqEHrtWJeVrPuFHoOV0aZ7kjNo4YV4ID/rAsFaNzGSeW72CAyQpEWCfcDjSza3HsXoob9w1q9i5nIMo43h+Ia/cMaoa76/MaM/s5NXMvwo09lHlNxyW8rRopBe5Y/zJJB0+mMX0BYvPVZnYcy/msmU1qGLtZCCGEEEIIUVNI5BVCCCGEECJ9nLDzK5xlJdSAzCZc+741jt3ziD7tzmvhtn85TlIXazqXertLiURVJHPt4I6fbmZWamYrEbXyjcAVmak7MjjmstnNuJXzpDtC78osWKZ8ZT9i73sIuhfi1r2MVIKLiV1+g3rJH5nZWgTbAQi+FxLVvJ5UAjev35nZsYi9lyP2Die9wLmEP62CeD+ca+2jiNQBbsBCB1IfPuScKKBe8M9JWHgPsfdklnNVQ9/xQgghhBBCiPSRyCuEEEIIIUT6tMP9NZnH0izYdjGcocdSw7I3rt0TiQ/1nZEJBMZ1ZjYHEWUBAsRBxYXWOt1wGDphZ2Oer2s+soP6sM4df5YEuTqhhBq87yPgDkXkHYRrdxhu3alcx1yN36e4Prtp+vN8LX+7qObVCLJH4hQexnyHcl2ciDs4nSQDJ9reyYCNx0LvuWvyj7k+/5R1ON3MfoHA+zPEZydI/8DM7jKzB3N0PwkhhBBCCCHqAYm8QgghhBBCpI9rPxeb2T2IdPUpihZQ/7QbolN33LuHR7Tz44glSxE53iWWeatcu3XKGbj6phEPK3KLUs6dBOfbDMS9bI2YzidKEV4Dt+4wrnuDcOxexr55gUEU7vwaQwTyAKYdjthbjGvXifR/MbOOTHMOz8OIrn+NeaUSe3uyDBOJmPY5nhrO7hh5HpG3C/WqnZP3YTM7wHLfyvJJ5BVCCCGEEEKkjUReIYQQQggh0qcCsbSlmTXnU/vqePu5Nnx7Mzvbi2TuieBbEJq2HLFjEa7deTzvr0KcrqgezREGHe+o3nHOsg63aB8ERO3HuqWcGrZ/NrNXSVboZWanUmu3P9e5qYjwu5luCvV3B+GcvZpr+QTOx2f4eyDnaR+mm8pnFyPIhvkS195HIwb9bMeF/DHitCH0ft/Mxnrzc6LzFuq9CyGEEEIIIUTaSOQVQgghhBANlUZVcLEmcH09Rqd/4NBaXAfbsImZdTazvmbWg8jS4xAYwhxAjJqPS2w2QkNdC9Lif+mCcPQZ9UOzkcCRKmdqcjYhHt5sZl3lhK83yhFG/4ZgeiJ1ei9DeL2Cer2TiWD+AgfwDJ6Hcw29hMcsapO/hNg7iMEz30RIHs80bsDMLlb6GL5vBbXNwzjn8TdYzg957yOuzX7d3yMQeLdWsjELSAJowXUk09rBQgghhBBCiDxDIq8QQgghhGiIHEknv3O1rszA1VpGR3w3BFbXOX+Kmd2eRgd9VTkEMakPcaJOfGiD6OuToGboh4i6i4lm3iO3YVbQlfhWJyJ9kqXLWBh6Fv+XvQh9t7A/m7HdJIzXDxWIrou4lk9BeHW1dq8ys8txXE/Blfs5jt63qas8nGn7cm2dj8j7Gp8bTGrCA2Z2jZmNYz4LEPqPwJm7N2Lt9/NdPvHQ/eYw6vG66/yvU2xBd5yNIrmhPXHSL9TifUcIIYQQQgiRA0jkFUIIIYQQDY32dMrfTkf5b3F8pYNzg/0LAqtzkp1Pjce7zOwh6kbWBI3NrINXb/c8IkRbRkQylyFcvINjbR4RofvquWaw+F8KiZONsZ92Zum2KUeAkjs1OQkcmvvYp4cxiELx5/XPfu/69wIO3VE8X4YbdzKPbQi6bjDMi7iAR3i1zd8l5nk8Yu8grsV3mNn1ZvYcn9nE+1W51h5lZt8zsy+b2eskRETRgu/9GetYjlP5WDP7jhy9QgghhBBCNFwk8gohhBBCiIaGi8+8jVqNzhX1YzNbw6MynCv2L0wTx5XpRJ47zWyMF8lZVZoh7g7GuXsejuGwa9eIZP4cwWIBgvW6GhSaRc3RHpGojJqc2co+nJHF1RggUBB6zvRzueCIXY1Y3wMBbivbTWQHTghdgrN3PNfTK83sIsTeyThyZxB7vJxpX6cmrxOGz+Dh7guveE7g/jh/byM6eRPn9gwGAaVzHBSZ2blm9v9YHpe48G1q+EbhHMk/J6nhUa77dzK4aEZokFJMg3tEVYnFYpZI6PARQgghhMglJPIKIYQQQoiGxmWIbS5udZiZPWhmN5rZj9LcDr5rytVa/CGiQadqiLytiX4dRuf/OdT+jYrN3cP3vIm4+zbigESm7OUYXN9OTHovy5e1oJrHUjz0nMnnEjkiUG3CAXoB/8vJm52UIva6mrkTzexCMxttZkMZ4ONi0/9OTV836GcVjymIuZfz7OrlbkDsncH7I3H2ugE4D1Ov9zW+pzVu2/URW+VQ7jcPUDbgVQYapRr80Z1BPfcz/4M4lp0wfasn8rbEXbyBdY6KkBYiEifwCiGEEEKI3EMirxBCCCGEaGi8RXznJMSau+j0/10KJ1Uq5uPsa5rh51wkcyvqPTpnWE+cga0jpj1Ih/0CajwuJpJ0t47erMf1nJ+IGOTqhn6axQtcXZE15jnJSzJ05Qafy4Wo6ASCfTm/qeNyT2Y1ZYieq7nuX4hAO4B6uOdRh3cWbtwPvYE0gxFO3TX6Kzh/x3Euv0lk8q3cQwbjym3CdPd4x3VTBu88wHTumPmVmf3RzDZXsvFeps76OO84W8Xzcd50w3H6uhrF00iaWMz/Oj7FPyHXrhBCCCFEfiCRVwghhBBCNDR+Tce8UVtzDDUWz8ugNq/hsq1AyMrEydcCN9cQXLu9EQGjROJiRAcnQCxEWPgYAU3kBi1wfCYQmrLZ8dmI47qoGvMIhOJM64QeQDTNFdXBOUQ/MrOTzax5Ete9yC7KueavwXXbndrs1xK5vITI5je47roBGX/FuTsIcfgSauhuZsDN+9R478p9ZCjHQ4K6vq9wLtzE95yBEPwYInFxGltodsRrN/I8k+fDzew+MzuE+9JNiNjvIPzOk9ArApzAK5FXCCGEECI/kMgrhBBCCCFymSY4YedmsA7OzfUz/i6lU/824pIz4XRcVK0Ra1M5EGNM1xUR4GwEhmMipo0TybwCEWAJYsEmHak5yWHEcG9GpM9mmnKsNqtibc8YYm0F51YmTl5XT/q0HNrBqzlHT0Zgq44wLuoWd1xv5PGhl+5wCdfykTh+nYN2G/HHT3I9HocT93LuG1twALvo5H/nPnIDKQ0/xl1bjEDszo3v4rCNinJOl1PM7Jd89yN85hIi4R9BpHaDlq4ws6s5TufpGBNCCCGEECL/kMgrhBBCCCFymTvNbGASkTeVSDXT+3ufN30mnE0nfhGd+FsjPuva222JBr0AYbcbr4UpJ1ZzJqLBO0TCpuP0EtmLq7vZ2cymsj+zmQKWraCKy5jA0VrAAIxMROIWnEtVEZfrg4M4eR1dJPLmLKtx9zq3bl9E2YuIVr6E119GUN2MQDud1y+gxvuXeG8u5/h/cQyPxgEcpDSs4tq+oYoby50bvczsF2Z2BPHRa0mGCNzFj3BczmQ5+zBISJZNIYQQQggh8hCJvEIIIYQQIldpZ2b/Rpu2aSjCuBWd9dvoeE8VHduY5/0R7zXBlRjl0i2mc/1jXFVrQp87mrjMftTaPSVJpOtBYkFdp/wcOuRXRUwnco9GOAMN8SfqGMsmgijpqkZKOyGpJSJvywyFpRM4pxtVIeq5vviY8/ck7zoico8ENc6X4dYdiPt+GLXS3b1kBi7eT8xsJzHMzu07meu8E4Sv4e+F1E9/AmfvCO4VnblXLGNeS6i1ng5tzOxKM7sXofdhM/sL58s13GPW8B2buda8xUMIIYQQQgiRp0jkFUIIIYQQucq3EXeLqIX4N289+pvZf1BX8XaE02QEwusXoffdvB9APP59hGDlBNm76VhfwGstiJwdhIPKOXc7JfneYoQ/Jx7Mx7m7WUdjXtECp9++BhSXGriAM3XGN+ZczPRz9ck6BpJ0QtQWuc8aHpO5jwRi73lE7bvo41e55h9A6J1C3XQnDl+KqDsAgdU5hZ9i4M9w5nMhNdndPF7g/nQcgwa2h7ZgIakRdzNvd015CLG4hKSAB5n2EO57U5lmm45HIYQQQggh8huJvEIIIYQQIldxkcf3m9ljdID7Im9zM+uI+HJ4ivVrTJ3cbXS0n4EL+G0643+EaDXGzD4PfXYTnfdGvd3z6bjviasqSvSJE+u8AOfuu9RpLYmYVuQ+rYl9dU7t2Q1kfyZCz+lSzvmRS7GyLsJ3B9eZMxAHK7JguUT1+YTHNDMbTzSzE1vvI9Z5sZlNZJDOHs7v2Z6z93JinwfjDl6Le3cKr53AMdMb4fhIPvvv3pK7e9jNZnYt95S3uM89g4Pc6NNx3/8idYFdHd6vM4jo14r7F0IIIYQQIr+RyCuEEEIIIXIVF9W8HhfvucQhv8+6zKWzvHMl0cctEeFW0KH/W+ZzA2LTfiJk20SIvIXURRzgCQBnJfmeElxaM3HtLvaWVeQnzpF6OgMO1iSp2Sxym4OeqOsc26/j7hT5w0ZE1ddIZuiHs/duBvXM5b1p1FSfz2MqiQ5Deb4E1+8HPO9A5O2LiOs4mYE/Sxh8dAsRzftw7o7hPR+XQPEt6vyuow7vHxkANQYnsRBCCCGEECJPkcgrhBBCCCFylfUs9y+JynSxzN/gtc3EVsZwOSXDRV92IfL5KwjGLlazPXHM38HZu8n7fGuE4AsQiPvhuIpiFyLzm3Tez6VzX+Q/jRH+4tToFPlHgRdPPYRrh0Te/GSv59adgGN2CPeMoTh0J3Kt385AnsW4gIcwzdlENs/m/jKPgT/DqLPrBiX9wcxmUee5N9HQf2LeUexH2A1w837JzH7AACUhhBBCCCFEHiORVwghhBBC5DqT6YAfhihbzvrsTWO9XCf4qYi9/0ls8xjcURWhCOgjcepeSId8Tz4XAlzQdQAAIABJREFUJoEovIjO+oXU2y3VkdagKKQ25/YUAo3Ibfz6wR0Q6XZpn+Y9zk27DOf2EGrlXsHzeFy9k3Dvr+ThxNqLEXnPYpDQu0Q4z2P6M5jHLd4GXMX9I0wBSRKbIyLOg4FNBfm/K4QQQgghhGjYSOQVQgghhKg5CplTuCZjY+rHbkvxTTFcYJnWZm3kiZrBfI5CZMyl2pbVIY4Yey8d7lGCWqskom8MEe5T6uQGNRW/4H3XSX6MmQ2k5m4fHFZRnef7cRfPIq5zLnUYG8p+EP/MkZyLS3mI/MRdC3aa2SEIdMu5Jon8Js5AnsWIvRcRreyOgVG4fadSs/dDygH8Fy7b4bj83WCh75vZR2Y2lmjlFczjFO49t5nZcXzXRK/uc39inr8eUXc3qEN/UMegEEIIIYQQ+Y1EXiGEEEKImiFGx+7MkJjbjNp4R5vZi4iIAQOo2XkQcfcTIhwr42jcpK7W5xYze4XpY8zzTjN7nNjIhoBb77+a2f+j0zss8nYyszvM7AXq4Pqi63piLV293be8znInyh9rZoOp99uPCOcocfdzaiEG9XbfQjiW0NOwGcraL88hob8g9Cwq315F1Fl1gt3V1AoXDYcE5/gq7j1O7B3JPfoyBvtMRwhejbv3CTN7g2vECFy9X6Pt8BIuYecG7sZ7vlN4Iu5fd0+73MzuCW1pdzz2wFEuV7kQQgghhBB5jkReIYQQQojq4Tr5TyQqeDSds77Iex2dsDuIVlyM47MVDp4BdMQepJM3HZxb6Ltm1sbMHvNE3tZ0/PZguQL3UL6TQGT9mBqGLUPOpgcR2gexn/yamc6B95T3f3vim4cxr+4IvmHKiMlcTmf8IiI51akuAm4govv1HNoiidCzSE2cpIYV3AfO4Dqcqg64yE8qOA5WI8JeQjzzCcQzX8a94jXuGy4t4llimgd7Uc53cf96kUSO/6SW77ncm/pyfzqLY++QUJ330bh8n2AAkhBCCCGEECKPkcgrhBBCCFE9muLc+SadvL570zlMv0pHrnP5PIDQ+Aaxwk70ncI8BmUQ6TqQWn4HcY8GdDGz0xCP76EzuCGIvIZw+wviMK8ICbediMLulqT924hp+iC6n8e2jKq3uxf39Awcu865u6EKMdsiv2nEcbQtxxz1ZTwfqIb7OIitz9QNHAs95wJBHO5GBtX05ro7IYfWQdQs5RwLv0eoPRO37hAGG43Gjfs0yRI7SJmYjAA8nDbFDZyHExB7H2EQ0mWIvYey1N+nXMEXCMrfZvDSXzXYQAghhBBCiPxHIq8QQgghRPVIUCNvFsJguB7v6bhqdhDN2A+RtzOdsM8iChybpiB7FN9xD47gnbzemPnsIe7xAkTLZxtIbHAFjuY/Iawbztp3cUIVUB/Rr8vbhpqHw9lWPRHeCyPmvwOn8Hhq9y4hdlOORxFFb465j3PM3R0MVClPY9pU87CIa2Fl5OK5FIjiMYQ757a8USKv4PjfyONtBN9RRCzfQnvAtRue4T6128xexu07lvuSE4evYjDBLKb7nZl1xM3bjftdPwTjU3g8wCAkIYQQQgghRJ4jkVcIIYQQ4h80ykAM9acrQTx0n/9yhEDo4lrPIZKxKcKsUaNvE+6b5kQ8pkN/op5LQrHQTagJuYH/N9FBfFgDiWwsJC61nMjU7+Ckehe37VcQZQ1x91ycVefQUd4mYp4JRPM5OK4XE7NZHDGtED7X8/eUHNsqZTyqOjCkgHOmAtEqEzfvQc65sjSmzRbKeRQxoOZbiHNC+OzyYv1fRKC9Gbduf+4xzyEG7+a64V57lZSP66nHOxjxdh7isKv3ex/3vl4MNtjBfaqI9ocQQgghhBAij5HIK4QQQoiGjnPEdEji3kxGHLF2PZ2oZYgaUYLGMmrCFtMR+4z3esC5iLLpcDy1+Fwt3p/jKjW+u5mZfcr/22nrtWsgIq+rw3svMZlvIpq/7b2/FcF7OJHMPXA8NYmYVxn7Yxqd6Itwa+eS+CTqlxGIf6/m2H5oxLUw6rxIhwTXxxjXxEzcuSV8NpccvUVcew8lOcANsjnZzE4ysw+yYPlEdrGHqP+FCLnOgXuNmd1EvPtioptn0caYxX1sImLwNdTu7cd96T0z+zODxYJBS+7c/TUDnMYynQYmCSGEEEIIkadI5BVCCCFEQ6YRgqmrcfc6bs50BAYnpnalIzVwyjSNEHkTdMD+mrp5rtN/dsT8TqXDN53vXkHtvmHM90JvGUo8p/AeOn4zrYuZq5TRIf4cDqigU7sRdYoHE6F7DhHNUezDARW4dt8xs80NZPuJmuNYajxvQoTJJZpyzjRFqM1UcPXF3bhlVl+32Ktxmys0Jyo/uHfMQOQdxSAcIaLYR5rHWxwzF3DMfImyAasQgh9j2vkM6JrCtKOp23uul1Yxjpjw84mE7kEk9GxioGeFyhUIIYQQQggh8gCJvEIIIYRoyASO3KOoZ9ckDVE0jmjYCVG1MsZRE9Z1yN6O+OrTCFFoUZo1LKfTqTuT2nz9ca4GyxYsfwXLl2ldzFxlPzWOA1rTAT60kkhmxxbcUjPYDys8sVyITBnB9HNysB52cP3IRJwN05T/m2UoEjfPMFEhG/DvF02oh36vRF6RJgcRYeeRHDEAEbc3ztz+pEmMpWb/Eh7TGLh0MbX4zyMdZAHTO4H4bNodziU8kO94kfvcTu0gIYQQQggh8gOJvEIIIYRoyMRxbs5F6H07zW0xFGfMgUqmi+EULsfVdxYCiC8On4RQsDpNQWg3DydojsStE4i8YedddYSaXKUzNQwHsL1PTdLmPUCn+QwcTkvNbG0DEsVF7XEFcx6bg9s4HnquyudbIta2ylDkbecNtMkVcTzuuZabIKTtYyBQG67VQlRGGcfOQlJFuiDgXo9A6+rxvuGJvSt4TOFedynP55BAscgTfHshGF+Dy3cxYu90r069EEIIIYQQIkeRyCuEEEKIhs4uOkIvppO1MlHicFyhf4p4L0pU/Rp1eF2t2G/RUTvFe/9MM/ssDcE4TILl9dtzjb2/i3CzNoS45taIuYNw7/bAaR3FLiJ036Qz/J0GUrNY1A3NGFyQwG3XEAmug5kOMgmmL8xBB7Rxrd2PiNafKP2Xs2C5RO5Q4Qm4s3D5Dvfil50zdxIi7Tpind1jKo7eoTx6MYBtAe+/xecvpDxFb68u8ERq+edSLWwhhBBCCCEESOQVQgghhPhHrVzndOmXpGauzyiikktDryfooA2LE64z9TZe/zKd/77I2wWRtyodrLtxvwUU4qIzXj8Mh1A+4gShjtQvHIxY7gTeFhHrWkEk8yI6w99D3M1UWBeiMlxsaltEmobq4qyqGzgXhd0oXuA6f6VEXlEN9lBjfjp1+N1AtEsQcAcxUOllnL1reExEyB1I3f47eH0qA81+YWZn8P5FHKeXICiPpy2kNAshhBBCCCFyCIm8QgghhBD/qE/3DnGHbxOvHEUbOkdvinivhPp6YeHQia6bcdYuDomyjhOJcvbF2EJcuVE1fxt5y9cJB47RMbsV0dhxhJntMLNtebZ/i6hh3AcB/RyiUYsipnWuuo9xai/CufRBHgvfov65mgEIz2tfNFheM7NHEfyFqC5bSQN5ExfvpQxs6otIO4Pa/58wmOlpIp+HUd/Xibl30854nbIEv6FURDCfC3nMZBDaqiTtDyGEEEIIIUSWIZFXCCGEEOIfLCPO0Llk5ifZJqPpUA13fhYg3rbHXeo7c53gczJ1GpsSFxxQiBP1EW+ebl4P0k57KPQ9jRGYnUtwIw6ca3mvBBF5KKLnqfy/J0/2r9u+x9MR3QOBt2MScXcLYq5zJ72LcL9b4q6oA/rxFS9qYzdYNiLMdeBavLKhbxBRI3yOgDuV+/xIrjdDGKD2LgOaZnC/c47yCYi2gWP3btog7vq02sweZmDYQMpQBA7f2ZSWcGJvsXafEEIIIYQQ2YtEXiGEEEKIf7AZ12c/OkvDccyu3TTCE1UDChBqh+CMucXMfuh1jDqh8T+JCD46VMvXOXGPQbQt9+b3U1zBYZG3gMjnEpbVPb/PexWIuo34Pucg/muO19krYJudQudzT8TdpgjkPm5/bUCsn4YzeznbKF9iYEV209nMjkJgWaN91aB5xczuIrJZIq+oKRIMYnoKsfdiauz2wLm7GnF3Hu2BYpzlUxF7B1Hf93ZSR9y0S83sz7RF3CCq083su7h8ZyMIf9iA4+eFEEIIIYTIaiTyCiGEEEL8gwSRvl15rAhtF1eLd05EHHMjOkWb8X5XRMhi5vlvZvZHM2uN4DvN+2wbOlG3eK8liFOMilkuw5V6MfP7ZkjAXE+NPidEj2HaXKQ14m4vxN1euHib4Iz22c16z2FbLiSWMizSC1HbjKIm9NgcH1whMid8XXLX33sQyv5V21PUMHHuc4/j1u1LTXon4v6YQWCTEHiXUZJiMvfISTiBnTh8DY/XEYX/YmZHmtkVOHy/zjE8lWnepwyEEEIIIYQQIkuQyCuEEEII8b+speP0nFDtVtdm+hKdoWEqEIdXE4N4ZCjecAbxy4URDuH1dMh+5r3m5ndHEpEojrt3AvHPc0Pv7yP6eREdtrsi5pHNtGf7uVjJ883sLCJPw23WONGV68xsPMLuu6xvhY5nUU8M5Vgdk8M7oCD0LCrfXjGu777Qu4g0BieUHYLIJkRNU06bZSwibA/aKn1xkl+Og/dp0gW20SaZx/SDSSgJRN/plKt4jOP2ChJKvsr7U4hxXhFqtwghhBBCCCHqCYm8QgghhBD/Sxyny81mdiwRhUYMohMR90Zsqwrq1iV4rA4JtHFE2VhEbLATJZdEzHNBin2yiWjpZE7BDUyTKxHFjYi4dXWLhxPJ3A1HZFhoOoDreTlupCW4lA7KOSnqmeZmdiLXg7dyeGeUsw7laUwr/rGdEgze8a+5JYhl5yKgPa9tJWoRd+ztZ+DXcu6hl/K4ljq7TsB9jvjwLSR9uLIGrxLTfA3lEIYwn7mIw0WIxWd4wvF0hOWV1KDW/VcIIYQQQoh6QiKvEEIIIcQ/swbx9UycvU6cvZ7YwmT4nftRnZ2JGu4ErWxeuSDwtsWlew4i+pk4hppETPsFriEnwM+kvvE6RTKLLKK/mR3OoIM9ObxjShAui6txzYqFnmv7c/XJXhIftnvJD8E6vMBxMUwir6hDdnOvXExt6KEMXBtJnPNbHI9LEXvfY6DaFBI03LTdzawPg9tmMp+Xcf26hI2rEYPf9ua1QYNDhBBCCCGEqHsk8gohhBBC/DMJ4givoYZdT+rbKZqw+hQg7B6Oa7c37qBjiDv1cYLJVjP7hFjJd+iI3ppDLmXRcLgI9/mLeeBqq+5vxHjoOZPP1fSAmNomWNawuFVBHVPjGlekQSmijtlPLLNLvJhGhPNNlEPow+tTEYQ/wpXrau7OwoF+HYOwzuK9t7y4ZicWn8d9vC9i8Eu4fzfoWBdCCCGEEKLukMgrhBBCCPF/nWOrcbKdg9j7M17PJYdZJkSJKm5d2/GoifqcMepTXkKn8SnU/Atv0/24i+bTMb2U+sgHFAkpspRC4lGNGPFcrgsd98TWqhI4Wksy/HwgDOWSGzCRYtBJMEilM8fHojpeNiGM83Au99TpuHVHI/T2pO7uDMpKfMz99gPEXzfNVWbWj2N4DeUkFiEGd8fROwDR913in6ci9mZ6DRBCCCGEEEJkiEReIYQQQjR0DsFd6gsL5bhG7+d/J3IenyfbyRdVE4jZW73XnOPsMDM7nZjHrhEu20xJ0O48EnE33AZNEHHrOoXfNLM5xN5+IteuyAHcMX0c51Gu16cs4noXFZueDjFP5C3NcGDMrhwczNGM61mriMEwB3E9ftnMBkvkFfWMa9csJMZ5Kvf4ASRqfNPMrmRglUsj+JD77yeIvf1w7bo2wa1m9ikuYTcI6zeUWhjKvJxwPIpjfyrz2KedL4QQQgghRO0gkVcIIYQQDZkCooJ70yEfUEGnZBEdogPyyMUbxKFWIMKsR5xqiQjbmyhG59A5tZbbi67TeQdRkFNxCLn6gNtq8TuFqGmCerwvIFLmMk0Z1NG8iusQ41oaR+zN5Lr5GdeDXKI518jWEdfKUtyRbrBQL7aF0ghEfePOzeU8gpIU1xA5f5eZXcr9+AXim93AlecQgPswYOEyM7uWv+cyKOu3DAobwPHeE8fwBM8lnMv1yoUQQgghhMhKJPIKIYQQoqGz3cxWhJy8MTrof0LcYIs82kYViC8lrKcTd88mcrEvwm7nWl6G/QjLC+lkXsY+UB0/kYu486cxzrVcF3kT3nNVRMkEQrFx3czk84fm4LU2EXr2iRN7W4LbuxNpBUJkCztIz3Au8+fNbBjC7O2Ivi5V42nuz58TxTyF58FMO9LMLkTsdbXzHyHZYDBu4R44e51I/DLnxC4dAUIIIYQQQtQMEnmFEEII0ZCJ41LZ2MC2QQEx1S5icQTi7lkIvmEOIFJU14EWQ0jfRGfvXBy8H1Z/dYSoNzogZFTgQs/lerxWiWiZ7ueD6OJWGc7HReK357O5EtOe8B5R7OJadz6PMfW7uEJEsgux9y0Gq7hBXzeY2c1ENbt6vk9xz/4cp6+r7zvezC4ws+uJcx7Ie6427x/M7CjE3p5EQg/lfBjLvLZrdwghhBBCCFE9JPIKIYQQQjQcmtPpeq6ZXYw4dUaStd9DlPM0nmtC5N1rZmvoAN6r407kAecwWGKpYsb/h0CgzVTwLuUzhXlUi9tdR8d5QpdEXpHNuJSNmQixE3Ho3oTg25/r3Ju89ylO3zkIu26w2HUMHLsUAdildPwFB+9gBOP7+fstIqGXkewhhBBCCCGEqAISeYUQQggh8h/n2j0Rl01f4hOPjFjrOELVamKUFxG/uFPHiBCRdMcB/4qZ7dYm+m+q6gZO5GHN2nIGtRhpCa00wEXkAOUIvXMRcPtTg3cojt0rzex1xN6PqKfvHjNoY9xI3d5RDHJw7YhncAkPpG7v7YjIgUv4HYm9QgghhBBCZI5EXiGEEEKI/MRFnh6BW/ci6oY6cbdZxNqW4cpZgktnMX8LIZLjas92491FqiktkrCZNAQn8p6Jg1GIXOEtHhM5fq9EnB2I8PsSg8JWMaDhXcReN801uHov5/Nv4eqdSP3fPszDRT7PMrMXzextM/tMR4cQQgghhBDpIZFXCCGEECK/aEJty+44bpywe0qSNdyDC8c5aabQObtBx4MQadGVuObtDbCut0gf5058jZhaibwiV1nCYwI1e69H6D0H5+5LHOdO7F3OYwLtkMsRfYdz/E/D4TuO14Ko54tpi7j5zGZwhBBCCCGEECIFEnmFEEIIIfKDdmZ2Ao6YQdR/7JBkzVwk84fUzJtDnT1FiAqRGc4lf7SZPafBESIFBxC2nMh7GjWHM61XLES24NoPz+LedWLvl8yst5n9BKHWOXXHIvau4fESAu5VZnaemZ1Pu+MN5jOOeGfn7B1tZlfw+kuIvWu194UQQgghhIhGIq8QQgghRG5zJM7dK+k8dSJCi4g1SuCKWUWH6kKcNuXa/0JkTMzMTuVDM/NokEQs9CxqZnt9itjrxK2j5FAUeYBLMBiD89Y5ce/i+P4uYu6LiL3LSTr4k5m9ivv3DjM718x+YGbvU9N8KqJuIPZewsNFP/+dxJEP8rButxBCCCGEENVCIq8QQgghRO7h2nDHEMU8EtfuyUnW4gACw3wiEJ17Zp32uRDVwrnk++HI/CiPNmVB6FnUzPZyTsR5ZjaA+HyJvCJf2EHbYhaOXifgDkbsdTV5/4a714m5n5vZ8wi6btp7EIi/x3X0VZy7r+D87Y8oPJC654/z/mq54YUQQgghhPgHEnmFEEIIIXKHVmbWmQ7Pi6nveGSSpf/CzD42s4k4YVbgvBFCVJ8TcKItJY40Xwic/XL4p0c5Lt7KttfnXIcHIfJOzpYVEKKG2M1x/RapIreZ2UVm9jMzu9rMHjazBQi0271yEe46eqeZDTOzb5BKMonzZTIlKIZR+/e/zGyZmT3F593giTIza25m+7UjhRBCCCFEQ0QirxBCCCFE9nOomXWlTp2LQzwDwTeKLWa2kpjEoEP1oPaxEDWKOx+b4F7blEebtoznkmrMo6pu4FyMii41szgCU7ySaVcRNeuci0+Y2a46WkYh6pJiM3vTE3tvoFbvXzgHXuThBsfsYdq3OS9uMrMRZnavmV3Oey4O/4dm1gux2A1u+zXzfRlX/F7cv0IIIYQQQjQ4JPIKIYQQQmQnhbh0XSfppUQyn5JEAHFCwwY6QyeY2RJFMgtRazRnsIXjvTyrERknBrWiGutVzmer4gaO5dj2PMi22p9GfKwTuD7BzXuURF6R57hzYpqZzaXW7v0c+z8ys2vN7HUze5YY5324ducQg+8E3tFmdgs1et8kpvlfGGAzCmdvd0pSuAFtm0lW0KA2IYQQQgjRoJDIK4QQQgiRXTQzs+PMbCiPbmZ2RJIldB2jHxJbOBXBaYf2pxC1yuHEh7oI3uV5tqnLeFSn3uU+xOLiKny35VhUdLCtytMQp4O6vNdTU31lHS2jEPXJQdoogVvXuXpHmtnXiWZ27/2da+l+xF4nDj/HALebcfCOZBCbS094iMh8JwafTq3rMdQGHkNbaJ/2uhBCCCGEaAhI5BVCCCGEyA7amNmpdFoOoOOyRZIl204n5mu4W1bg5hVC1D7OYd8JwWFVnm3vJqQINK2iq7YAZ53xnElk8y5ionPJyduC7dUmjd/WZTgNncjbx8ymy3UoGhA7ce9OJ658NI7e+yhFMZHXlzJAZA4PF8l8sZl9CaF3JEKwG9j2SwbBXYxL+AEE4Slm9riZvUOUsxBCCCGEEHmLRF4hhBBCiPqlA7GDQfzgqUkimRPU/nTRh6+a2bu4eIUQdUcjakMazrPq1K7NRlySQGMiqatKINJWVqM2zJ4cFD1bsL3SEXmNKP19DOZ51Mw+q4NlFCKb2IcIO5u45lEIuLdTj9e9/rSZLabNs4CHa/cMMbO7SFIYRozzDDN7DDHYicX9cf9e6r230Mx26ygQQgghhBD5iEReIYQQQoi6x7XBOpvZhWY23MzOMrNjkyyFc8N9jMvFRRguM7Mt2mdC1AutEBLKcInlG4Ewm6lAGxBH8HQDVVpnOJ9DcRIXVOP765pgOdOtYbwY9/fZZnaIRF7RgClBhH0LgfZyxN6rEHudsPs7njcxQGIJbSHXdroX0XcI7mA3AO4RM3uGzw8lDnoIjuBHiYyW2CuEEEIIIfIKibxCCCGEEHWHE4hONrPLqE3XjY7+KLYTwzzOzOYTYXhA+0qIesUJl+eZ2UcIB/lGIFRWJzK5NUJtmww/1x4ncWEOibwJHvE0t9kuavGeTWrDBzm0rkLUBqWIva7W7otesskFZtYPkfdp2kIbSVBYjhvYlba4m6jmQbh4p1Pj93linJ3ge4mZDcQl/Ee+b4/2phBCCCGEyAck8gohhBBC1D6Hm1lPOht7I+4mYxNukxcRdtdo/wiRFTh36vHE874vF2ZSynkjU/GyPMfq8VaVRcTJOpfhJOJrhWjoxHHjusdzxDE/SJvJPW5FvH3NzD7BEb8KsXcYtXj785hP3V4X8fwS0c3OKXwRLuBJiMDOFbyjoW94IYQQQgiR20jkFUIIIYSoPU7EjXIpdTw7JfmmMurrTqXD0okAn2u/CJFVNMGFbwzAENFU8GqmIm+6kce5jhOfNjPop0girxD/B1eS4gkcty52+SZcvT2p3fs0A+HWkarwEYKuE3FHI/r2Jg3lZdpVL3POXcbzCGr6vmBmEzgnhRBCCCGEyDkk8gohhBBC1CwubrSrFw94dorYUlcbbrWZvWJm86jXuF/7Q4ispBFusV04wUQ0sSpul6p+LtdYiyg1gJSHXQ1E3BYiUz41sz+b2etmNtzM7jCzPmb2SzP7/+ydB5hU9dXGz+yuIL2LiCIIKgqKSBEEpIggTcGGioVorDHty2eK5UtMYkwzRmNMNLE3xIYgIKggVaT3jgJipZdll23zPX/8XXJzndmd2Z3dndl5f88zz+xOnzsz957/ec95zygzG2Nmr/Kbci4oT9LpewHd8u68PUV0L2AJ/RZC70DfTN+ZdAm/x3MKIYQQQgiRMkjkFUIIIYRIDE1JJg4hCdmRLq1IuLlyi81sIvPmlivJL0TSU9/MmpnZEn6/QpSWlYi8FyJAFWhLChEVZ43/NB25/ZjD24PRF9ch9k5iv7zdzF6iS7c3nb+u4O4+xODnsIQeh8vKQBxXzsNF5SnE3o36OIQQQgghRCogkVcIIYQQovRkmNmJZnYOnSFdzeykKB1ph0gwziEZuYDOEyFE8pOFYGDM4y3UZybKwDt0JToB6hFtSCFiwsVMz5vZ+wi3fgH3Njp+n/WJvc7S+QME4RsQdO9jpu9YxN7JzOl1ncI9cV9ZSVfwRIowhBBCCCGESFok8gohhBBCxE9tM2vNrDiXHDzbzJpEeZQ9zI17g/lyq7hMCJE6uE7LmxB3p+pzEwHitZqeQXdiOzOraWb7tUGFiBk3P/dFOm570pE7nH30cITdxxiBsQOL5hnM9R2N48pPsXwex+3fRwy+mNs9ZGa30tn7hjp7hRBCCCFEsiKRVwghhBAidhqb2WlmdhlJwJMRfCPxFbauLjk4z8zW080rhEg9MrDz3EHnV1Ulk/eldWJsZCHwZsUp9B7gmNASJ4j3ZdkvRNy4OOt1OuP/aWYj6JC/3Mz6m9lcM/srYzH20Ok7g5EaVyMIf4+Ybiq/w1+YWSczu9LMupvZH+gYfp7nWi8nByGEEEIIkUxo8S6EEEIIUTLH0i3iEoidsWSOFEe5JP1WM5tpZuOxZN6q5L0QKU8HRDzXlf91Ff44882syMzykuC1pAJ5bK/cUuznp5nZBWZ2PR2JQojSkY2Q6xXWDTOzm+nY7cl1j+Kmsg9R2Fk1P4PQ6wTfa+kI9rp6na1zGzMbSVExa5UdAAAgAElEQVTfb+gCdo//Arb9+fq8hBBCCCFEZSORVwghhBAVTXW6YfcimCQrWYi5A7Fldp0dzaK8Vtehu5b5bdNJNO7UN0uIKsMo3siMKv6R5mJNfTABxSnxWhjHe/tkIJuuvt2lEHycTey9FA8JIcqOK7qY7xN7L8ByeQBWzM5V5R9mNoVueldo8aGZvYwgPJrfo7v9LDN718z+hDX0lcxlv9PMrjCzSYjES1UUI4QQQgghKhOJvEIIIYSoSFqY2a/MrJ+Z/Z3kWbJR18zONLOLSAq257JIOCF3Ecn6jxB6D+obJUSVYyQi3tgq/tEWYU1dkIDHilckDqeg0Fvg63yO9/2uM7Mv6BZ0ts2by+k1CpFu5CP0LqP47gJsnM/HgtnFbX9jVm8OQq+b3/uamQ2iu/5CM+uDI4sTdB+hg/dSM+trZrcxv9d14f+bx1T8J4QQQgghKhwn8tYxs+Zm9jnWNUIIIYQQ5YXr4P0Oj51MFsYh4qEe2Px1MbNWZnZUhNu6rq0tdIBMJpG4hUS/EKLq0cDMjjezL81scRX/fAvYx5V2fxby3TcvTtE2nECBuaIo4lTa49kcRF4nHD2YQu9biFTA/TZXcZpCgeF3sV9ux+zeBxFo8+nKXcG4Defich237YYI7Dp7nzCzMVg7X8htLsTF5d90Cx/Qt6NKkRlhDrM7tjWM4tpzdBnGHmT4jif+44p7rl1puO2FEEIIEQNZzJd6mIDhVTObamafab6IEEIIIcqB+ma2ycx+kCRiydEk2F3nRn+6do+LctuDdOq+zby2lUq4CJEWDOFNLkqDYo4aJLRrksQujXiZw3m8XW3bzWx/is0wr0UxUP1SumSNYRboKIm8QpQrazi5+O1sM7sKkbcH4u3TdO0eRBRew+zePnT2dkfsnYdzy4tYQvdH8B1Jx/AshOBZ7M9E6uIE13MRctf43kUmBasD2W/P813n1hD3czz7O0WgseCOI98zs8Z0oL/pK3hqhU34RjP7i75PQgghhAiSRZVhdYLTngS0Lqh4hWpFJS+FEEIIkShcJfxyrO8qk4Y+S+auFL3VjvJ6dpH4G09stFKWfEKkFdfxZsekwZuuwRqxVinvH2L/WIDYG08n71Yz21HK560sarG96iIIxMt0tpM7BlXTbE8hyp21nD6gq/d2RNz+iHXPm9lM5myvRtz7ADH4KqyaPcH3QzqEJ3P5YCyceyHyvoyArJxa6tGaNYL7bvw0IPJeyuVHM3bmEkRdxy8R/bM4/t0Z4ztvx2N9xnrkdd91/2dmx5rZZYyM2JauH4oQQgghIpOFqHsDic7hZtbbzDpRsb6c4HQygbBsZ4QQQghRFpzIewbJkR3EGRU1LiKDCvvuxDyua7ctifUgBVTfz8HlxFkyr08xG1EhRGLoRXfphDTanqXtpi1C+AwhfMbT+Xys776p0s3rWTWXtsP7EOvxrnQMTk3w6xNCRMaNK/s9gu4Aunov5Xe4ELF3CrGqJ/ZO5/qhdHF2I382l9M7iL0DEXv78fjjmQ38mT6LlGEYDgsdAi/YjW8YjbOHm+H8pJmNMLOnWCO4orBb+Z5cY2Z/NrOvSnjTWXyPZlBM9rHvmNKBZhz3mL82sxvN7L40/lyEEEIIEYEsbJnnE8i+wwKzE1Vrzm7mfDO7kuTmFKoVNyvJKYQQQqQ1ten42l6KjdAGC7ODzLX9Ld2x5YWrtD+VhEsP4pyWUbqusknkvUdHh4uPvtC8XSHSlo7sQ5zN/N402AhFgfPSUAc7y3px3vckrCozU2itGWl2Yry8xhp8tEReISqUPLp0P0SE7YtgN5B4cTaWzJMQaDdyLPA6d4eSMzsbke498mZT+f98mif6ISJP4L4b9DEnPU5o/RejC/z79xPN7BRsk2eTI3Xri+c4bq2kQGAVs5rbxCDyOqvmzlh+7wk83wA6waexfrlMIq8QQgghgvjnBhVh+7GNINZbbPaicmwU1YiLSXpOxdY51Sy1hBBCCFF6vO4sN2+qKZXrU+nQjYUviCWOJpE/kse71DfHMVEcQ7eus+DrwqlOFHHXJe9W+Lp2XQFcrsRdIdKea9kAb6X7hogDL0Ed7/4zzP65NLbHqYwbk/RHjlVCiIrnEM4tCxBi+9Ho4MTe8xBo36UpYg0x44sItv1okHDnP0AEHo8r3gfMdO3rG482guvfQxBMpRnk6cQUPpsrWa94HOIY1Y7PsEFglvz9HPu+xBGoUQzbrDnfn/wI6ylnG/01r8EVmrVI9w9GCCGEEN8mK8o2ySXB6QLTl0iKdiMwbUegejVi73gC4o+1fYUQQogqj0sy3G1mtxBHnMX/Y2N8487y7kcIulkkxK6kgn12ApJdWXSDnUUFvevCOw1L5uBsyDy6MhaRuFtCck4zEYUQHkM4f05bJGZK2w2cR4I73USPrXRqNcJlYnMSvCYh0pE8GhlW0fjQj2LEcxB7r0bsfZFc2U6aI7zO3SHEnj+ke/NNM1uK8DeZjs9unK4glzaFIsN8feMSRmvi/toxFg2FcPJpgNCfg5gboijVf0z6hHXD7XxP3Pfif33uE95YhxqMH/g6huduwziZ1+kcf9x3/MyiqCCLDvDGlbRNhRBCCJHERBN5PQqpSptG4vUlLEL6Ecx4QeyHBMHvM7tXAaoQQghRNTmK5JVz/njZzH6ByLsIgbQk9jGH1+Mz7Ox+QCJsfym3Wh3s03oSpzhxt1mUWGcvr/U9uiyWYDsdazeyECI9aEDXzCES+qJ8CRbipBOu0Ogqip5+r++ZEJWKE+zWBayZL2Q+6o+w0B3HdcuIKyeQN3PC7mBmut6CYPgK4uGDZnYGYq8rbvw/nGwmcFpNw4UoG65JpbuZfRpH0ZAT7L+Lg+EWLqsZQSR2n8/DiLGPsoZ437eG8M6bI/KujuG5XUHAs1h/n8t9ZnBdPgJ0FnOfhRBCCCG+RUkir588qoq3Esy2ZU7JKILdngi843xzRvZokwshhBBVjmoItfcxh2wgCatYRN4gLgHzZzP7nZn9pBQirxNyWzFS4lwcR+pFqdx3wvR65q59RGLuoCyZhRBRuJj93TRZaopy5hm6BC+WyCtE0lBADuw5LPtdDux6mh1+bmbXEFOOxXp5LwUbH3D7wdgzX0sBxwTc8P5OYeIw3GZ+gdj7FiJxusyALy+cSHsDndI5MRQQOWH2ZNYg/nnw0Y77c/m8nfj/EE4MftwaZBC5030lPHeYTu6f0A3+DzMb7hN5w+Rt3emAGmqEEEIIEYl4RF6PIhKii6lon8Ls3suomPuZmY2mO+ZVAqBsbX0hhBCiSlCEu8dButsepfL8pDK8OZcg+Q1iSiy4buITzexMEm3OZeR0Lg+SQ5LFVdq/jbC7TkkSIUQMXEKy9lltLFHOzEBcOIXuL62fhUgeChHy5mLRO578Vx+6dS+n0eFJigl30N05CzvnIQh3Q5nfO51Y+hHi2RH89u/EHno8pzU4zYj4mI/b4D6chmKhL5/HVzHc9kyaYA6wBhoXuN/xfI6PxvjcBXQSj8NqukPg+jDrr+r6HgghhBAiEqURef0UEMRuRNQ9m+rjAdhNuWq4m+nqFUIIIUTyEYqzQ80d+/9Gt6wxl38WM3DrxdF54J63KbOqGsQYkzTG/uw8kirtSI5lBm4X5nG3EZ9MJyn3ubp2hRAxUo39WpixNEKUJ3mIEW493Z+OPiFE8rGXY4ITfNuT/xqO0OucbWaa2fMUFX6O2DgfsfcCOva90SLzEHv/SYx7EbHtHczsncr8X1ec+IUcJWKmkFFzN5rZwhi22wmMfVkY6OSNhJvR+31yoHOw3J7GHF3PqvlCYogxcb7uIkbXtPJdlkkRax7Hh0gFrUIIIYRIc8oq8nq4YORLX7D7LIFNTVUhCyGEEEnNYBIKn8X4IgtJPtfm/924etyD5dy8GB+npZndS4LkcizSciLcziU3jqNT2CW/upnZqWbWMIL9WgHC7lq6dueRhJHlnRAiXs4h6b4hghVjOpDO83HjwdtOkUYExMsrfO8ukcgrRFITJv6dhcPdWATca4irz8OC9xnE3k3E2kvJmfXC/a4rv/llPNYY4t5hdHNey+O5WPkFXGm2qWAxJtaxLXuybaMRwip7Fd20QcIBkfh43IP+gv325TzHU6yRMni8f/FZZcT5eYV8YrHhPNSYv0+PQYQWQgghRBqSKJHXzx6E3mWIvNGSIiGq0AoDQYwQQgghKgbXFfsHM3vZzO4PPGMW4urnERIKhzh57C9FgvtYEmIjiAfuDVid1TCzFoyCGEhH3UnEFkGyme07h64HN07iY6rehRCiNAylY+eNNNt6XjK7LCJCaQXiUOA8FShkm+UnoMtuAsLB2YgTWiMLkfxk06m7jKLHXszfdedtsG5+D8F3K2LiKizau9HZew5x7lpyaZMoVnQzWrtzPOpHnDuW863aR5SIE15vZ3tFO6a1wFloUoTbHPSNq/Oow7lrcsll3dHGtw46l0LU35lZE+yX59HZW5M1U/Bzy/RZMmcSe3jsQNzNxcr/83LfakIIIYRIOcpD5PXILqGL1wU419O144KuLYGEsRBCCCHKD2eR/Fds4ZzQ+vtA0sGbMzaJzoJIXbYeR1MlvzpweQOqz7dTBObHddj+CYu7J7Gjc9Sny/d8ROC2WDIH8booNpvZuyTQ1lI1L4QQZSFEojaUhh2V3nEgLwGiZbzFP6EU7CD2xN3cBHTXbcGS9ThsYJcl6DUKIcqfQ9j9LmYeb1fiWFe08b+ItOOZ3bueebtrsHfuxrizXnTwrkM4dlbOH5hZJ2bG9ic+/4gCzZnsN/L1+UZkFXNzz2M7BgmxXT/h5CcTkbYRRbFeR+4e9vens+5ojuBexG3uIw/q1i63sgaaj/32Gcz99bsnhVjz1Ob1nhW4fin3bUVcMrfStqYQQgghkpbyFHlLwiWER5JcdvY1b5Kk3RQhESyEEEKIxNKKpMdqEhU9SBZ5uK6By+ii/SBC8sMji1lWzpZun5nVJblRyMyq3swZ/GngfttJdIxhfq4Tdzsy178Pc/0bRXi+Am6/0szeoVBsUxSLNSGEKA0tcQ7IJgmfThSQrC6LE0IBwme8tpJ5HDtSyYrUe82JEHmLKKz6DqOPJPIKkXoU4SiznM7ek5gNO4x4ezRi76scXzZxmoN7zeUIj6OJzZcSn3+EANyX7t7OiIIvUeioponIONvku9iGwX10cz6ftyII5R1YCx1DMexyPi8nwC6gW7sDYv4tHAuaIuZvw167BTN7s9iv92Dd4xdxM3ieiykQcEW1f/ZdP4Nu3rtYH91QkRtPCCGEEKlBZYq8LmnyNHNLXIB6J4HPLALeFSSAVZUohBBCJB5njfw/dA25joNRAZF3K6JtSYn+ViSjn+L/O8zsNboUziPZ0SOCyOuoznH+IgTls7A1i2TJnIMls7M8m4jIu0FxghCiHDifDp4pJbgYVEXyEWdLawOa4bO4jNfKfx/Pn0oWpH5RvKydz2EKn2/kuCmESG0+5bSG2NgrnryD2dvv4mSzAmeazXTvnsVc18GIvucwj3cWzjtnEl93QDh2s3vHYfH8cRoet4pjI3nFvqx3PEKI6vsQy4O0Zv7uJPbvrfgc88hXtmL7j+FzKcKmeTzHsUbc17tuFZbNwc8mzNrmHP4fh9jr4VyLHidXOjXwHoQQQgghDlOZIm8uc0lm0c3rqtcGmdl1BKzrCIpmEOzu00cmhBBCJIzPfBbJKzn21sbWzLCBy/PZR0bDVamfwpwoV7T1MxIqToB91syaIRj7qcv8qvMQU9qRLAniWTKvJ6nxAX8HH08IIRJJL2aFj03DmYdHI8zWKsNj5JJAj1doOOjrAk4VavJdqY+9Z1koomuvkOPqscx9FEKkNl8j/n3IiJIRiLw3YsE8nwaIJcTcX/gsmQdz24uJs5dRlPkH4ue+CITtccqbTLHI6sAs2XTm74jj033dvE3YZjM4ZgVZxHpmH0Wp/m3pRNhf8hiLfR3Un1NAG+Z4kMM+vIDu3AYR1jBFiMYreR3rI7yWseREP1W3thBCCCGSnbpULN+F/clBqr9dEPsclYwnkngQQgghROK4moTE6FI84gju680Xc3/f7Et2d0bozcQWzXX9Pkqiaxe3D57yEZfH81ido3T3CiFEoqnLXMUwQluq0o25623jfP3X8N6vjHM+7rPcrx9J7jz2/fkkr2PZh/+bJHZpqY5rxC8q8DM7neT7awi9ZaU2nXwH+QyEEFWPmsxX/S3NDWH2I+MRc+v63nF18mS/Zl9aiBvPa7jhXehz0dmFaOhu9zAFS7Ujbb1QKGQZGRnfusydqih/QDA3jm39EX6VXxRCCCGSnHA4rFMJp8rs5A2yjzkkc7CZ6UAQ1gP7mYEkj+dgU7LKF8QKIYQQovS8R5X5ZbhsxIPX7XUynQpPc6z2ut8WUul+NfPI2pEUj0QOs39d98IbdAOv0+cqhKhAurI/W4fFY7rhra1Ku8YKI1CEED3j6cptiKCRmUId1EW8x7LMMPaTS/deD9/8RiFE1cIVccylg3cCrjZXkP9yXbnvUDgzh85NL082idteyskV1Uwj1n6C+/VGwPyBmQ2gU/VVGinS2R3vMYRvtw3rsJ1nRuniFUIIIYRIKZJJ5PWznNMk5o30IEA9m6D1SuaWvMf8inV0/QohhBAifvZTYOUq/k+jqMqPE3KbMucryOckqub6Zk8VkEA5jXlXQyjeOi7KK9tL8dZ0LJlX0KUghBAVTS9Eyr+YWXYabv1w4Lw096+F5XOdOEXe+swsTCWRN9HW0gWsb42CqBqarylElaWAwsaPmAHfjRm812HD/CKXL2ScyjxOUxB4L0PsHU4cPx9xeCo5NCcI32JmF+AQ8BL335uGX6kt2GH35u9jEcWFEEIIIVKeZBV5PXaS8J3OHIrOVCWeg43NxYjB8xB8l5OAzk+Oly+EEEKkBDl0AAzHfjko8jo7uE5mdr8v+ezhOgNu4xhsJPXPZtb+uYi7kWY7hplLtZrE1ALs5ZTMFkJUFhnM6DM6fBLVnZlueAJtvEJtqs3jLS++ZCbn6XwfF1TNtymE8LGIkxNobzCzq8zs55xPpuN3Hm52Czm9i9h7OW45Lj82kcLL1ziO9Ubw9YTj6YjHuymoWc9c8ZN8Dg6FMe6LQxTmLE2y+b+ZUWakP8FYgHGMjTFef1WjKI7PUAghhBBVgGQXef2s5/SmmZ1BoHoBto83Y+m8mGo8rxoyne1ohBBCiHhYTleuN6PKb9X5Yzrb8ugY8LOf+7rZi92xmutGF29GhOd3tnNruc9kjt2yZBZCJAOtWWfspwhFlI7SdgP757OnM3sQIW7juCqRV4j0YQNzxd9lRvp5ZnYrds7vIdB+yDiBJZwmMZt3BELuEJxxZpE/e5fxZ10Re7uEw+FdoVDI5QP/Zmb1QqHQdT77+VgJI5JOo7t4fpI4YByHaO0XesMI0c6Z6Ltm9iMz65liOdFYyETAXykraiGEECJ9SMWAJofg0Z1eIBEzkArF0xF/95Bk/jCGxxNCCCHEN/N0nT3pfYxFWMRlu5nndRz2Zn7qmVlbunUv4fzYKNtyF5bM3mx9Z8m8Q9tdCJFEdCUxPAFHISEqg2xEmdsYXRSS8C1E2jENkbYz3bze3N6LiaOfpADkcxx43OkNxN7LceDpQzw/jeOa6/IdSZxv4fDh3cr7ZtYkMzPznKKiIu+ycAxz2Qt9XbBuNMvVPP9bdBlX5jg1V5jaktfnfx/uNT9Po4gbD9C8Cu5bsxh5szYJXosQQgghKohUr1rbTsA6jSCuE9WLXbQQFkIIIeIinw6BP5vZw3Sx3ckx9kfEDBt4wOaIu4PpGGjL3MBIfEai4U1s4zaoslwIkaR0oAtmihyBRCXzMe4ZbvzB8Wb2qT4QIdKOfBoX5tPQcDlzeIfSresE2qe5/hOKMR9HaO2N491ZxPND6fj9KCDyNnSjVkKhkH/bfop9fnG461th9ezsmhuY2Q957HHM/11BsWhFs42u3YxAXjBEDrEm65b1VTBvmME661ASvBYhhBBCVBBZbdq0sY0bN1aF7b2Zk0vKtCjBYq0Opy9jqFAUQggh0oFGZnYT77M6c3QP8P/HnB+LtdmlFFS1jDLzqoBE02Kq+l2nwSZ9i4QQSUxDCkbDuA5ojSAqky8Qd7rRzSuRV4j0pRDBdAV2zU6wvcXMeiHmLqeY8nVGoLg81yvM3+3qu+1P2Lf4cXbQ1cLfEEL4bRLDlg77mkYms1YYxPrgFsRo1z38MpbS2yvw09vLKRoq4hJCCCFElSJrxIgRNn78+MPvad26KjESzyWkV5dwm/NJZM8kIN2UJLNDhBBCiMrCE3BdMuY5jqWuYKo2Vs196SBoV4wl834S0VNJ7KyJkEwSQohk5DS6JlenuaAWiuE24r+3V3lssx0cS52A0x6bVSGEWMdpPLH5dcyT/w22zk/6clxu7MrbjErpzCxaN+rMsrKyrFq1apaXl+c6hN3f4dzcXK+7t0YMHa5h377PzQ4eiwD9Jk4/bozaaMTe9+g4XqB1gRBCCCFE4snau3evXXTRRYcf+O233z7yBGvWrKnKm7s2FYau0vD7BKLPmtlKWUgKIYRIUz5j/p83zz4TweNKiqPaMOMqEl8jjIxnfu+GSp7FJYQQ8XIaM/qeY8ZhuiKRNz687RXJ1aIsFGGB6jiH46+6z4QQHhs4TUTkvZnRZQ+R43JFm68iCO9mzvdHCLAvZ2RkWPXq1Y88WLVq1UJ5eXmHRd5wOPyvEjphje7i43nuM+gSHkRxyjgsoy+kUGU43ccfIELPxlJZCCGEEEIkgMP2Kk7odQwdOvTII2Zm/medunLlyqq2racQBI80s/5mdgdJ7GepPlzJ/BMhhBAiXdiDwNuQhLI7LnYneZMRYRt4lszzSeYsYGyCZuILIVKN6hSAGvuyvDT+BPMRGAsr8TWkktCcx7Y6VA4W35s4rvZg9uWyBD++ECL1+YyTKwoZQ57LCat307n7CoLvcgpF3G1+XVBQUCc7OzujqKjo8Nza/Px842/njHevb2RLNIponqjL3N8b6Sz+kZkNQ+x9lznAvbmuP6d5ZvYEou8n+g4KIYQQQpSNLP+9PbHXMWjQoCN/uyo/x/Lly6vK5t5OQtoFlaea2bVmdgXVh6Oo4H+eqkeJvUIIIao6LklzEonki82sQzGWzPuYu/U+nbvuWPmVviFCiBTmBBLQu9mnpTO5PtGyrEU7kQqEEnn7ZCCb7bWnHIRxV0g1i7VqG4m8Qohi2Ic184fM8b7ezIaY2Q/4+zUsk11S79KioqJ6eXl5tcysAU4EGeQHP40jrs8ht7aJ7lw3Q/wGM7sAd6BB7MMmIfh247JunJYi9r5HV7IQQgghhCgFWdHu4hd8Bw48PLbjSHfvkiVLqsq23oNljevcfYFKRzdv8Kd0ML2K4LtGYq8QQogqSGNm7A6jsr5VMZbM2zkevonAu1mWzEKIKkILMzvZzN5RovmwS0MGIm9ZiVck9mY8Jrojtjwp4HXnlsPrdo+5EJG3E/anBcn19oUQScZOM5tuZovM7HHyWlfQaXspjQ73Isomkq/YR33E/mo0gq7bf/ViXzaOsS5nY9/sHIMeM7NVZvYUxaOb5AokhBBCCBEfUUVeP57g279//8PnXmevY9GiRVVhk2djGeOCy5eodLyczt7LSWg/Y2YrKtm6TAghhEgELUjAXGZmHXG1iNRBVcTMrIUUPi2jyy2VEvBCCFEcTlRsz/XzKQJNdwrLmGT3hMh4heI8njfV1lvlKUisYK3qqq4fTfN50UKI2NlHV+9SGhouQXgdjrjq9i0TuG5XArfrl8wJdsfTzuTTLmXNca6ZzTGzyWZ2D2Kvm9t7vpk9iBD9KhbT65V7E0IIIYSIjZhEXg9P7O3bt++RyzzBd8GCBVVhk7uOpGnM4nJzS65ibu8PzWyEmb1OZ+/SJHitQgghRDwchd3jeSR4TkfsjcQhkivT6WxzRVBbtbWFEFWQBiSZi7CxTHdqIXzX4TxeATMDUTKMYB6PBfNOuldTqYurNsfXhvGurWNkOWvPboxRkMgrhIiHHPJbS+ik7YvY683HvZxRZe8kONbfjpg7h9zaULqKL0fUncn1vzSzN+j6Hcz/V2M9/QL7PxWXCiGEEEIUQ6kWovv27Tvyd+/evQ+fe1bO8+bNqwrbez9B7myqCC9H7P0xVYjPc/mKJHitQgghRHHUN7MzSJ70oGOtYZTb7+TY5irw5yLu7tXWFUJUYZqaWR8KW6qERVEZqY5oWaMMD+NZF8c77iYnBUfk1GKeZX3OE407Li/m+H0qfwshRLwUYKX8EbbK7Zib28/MeuLW8yjXJzLPtY95vDOZCzyMrt7hiL3v0GjxWxz0LiDn9mMaLd4m9zZPdvVCCCGEEJEpc7WxJ/j26NHj8Lkn9s6ZM6cqbPIDZjaJgHQslYcuIL2bv58lUF2TBK9VCCGE8NPKN/OqE5270RLQmxA3xlPpv1pbUgiRJhyPoOn2gVv0oR/pmCqLTWZ9uoAbxXm/pojMmSlk05mI7VUSnuAyGMFD8/CFEGVhDafZNDRcztzchxB7J2LlvDKBW9m5BM2is9fl1i5iVrB77ot5vg94DW4/N4DL7/CJva+Tm0vEzHghhBBCiCpDwiyl9u//Zq3ZrVu3w+f+ub0es2bNStXtdgArGRdQjjGzm7B1+zUdvi9QdbguCV6rEEKI9CWLTt1zSIi4Dt7jomyNfMTcOdi3OUvIr/TdEUKkEdXpYjKS2alkE1xeeNugtNuiCKtntxisG6fNZkM+k6wUE3nD5dxh5uZqforI20AirxAiQbj5uX/DLrkfnbw9OH2H3Ne4BDsIuH3mQgqr3qSzdyTdu5ci9k7jtUyks3eImd3C9a4L+SU6jrP1RRBCCCGEKIe5QZ7Y26VLl29d54TfGTNmpPJmz0bsnYulzfedY7WZPVowvp4AACAASURBVMD83ucJVDclwWsVQgiRPtSnU3cAtsxtSa5HYg/V+5OwT1uthLEQIk2pSwy/j/heJAbPcjle4TOP81QU20Pl+Nir6eYdzFxezcgXQiSSz8hlXcXMXifAnmlm95rZ9XTQjsXtJ1FdtGEebwkiszezdxinKWb2npn9m78HIkTfiNjrOnufRjDeF8PzCSGEEEJUWRIu8nocOHDgW5d16tTpiJ2zY9q0aam6XfdSVTgfW5vbzew8M/sTAaZEXiGEEBVBSzM7GaszV3x0El1QkfgEcXcc3bsbfQl1IYRIR5qY2YnM+luob0DC8Lp34+niNbp3w+qo/hZFdJoPpsB4qY7fQohyIJd81nXMAL+FfJebjzuKLtpHcf9JJCs5vYXAeymFqwOxlH6HUWnvMMu3u5ldg+WzGzXzIt3GX+tLIYQQQoh0pNxE3kg44bdDhw5HrvELvu+++24qbv7tVB3OoeJxKFZaQgghRHlxFJ26bt7uJWbmDqwtonQR5TJKYDFV+Muo1lcCXQiR7riFSGe2gUsuH0z3DZJAStvVWp7dsKnObFyknPjyeIwib019r4UQcXA0OcKPObkCqLPMbDS2yTfx/4OsKdYmeON6s4JfZTyas3HuRiHrMlz1vFFpQ7nuGkbUvG9mz5nZArkdCCGEECLdqFCR15Gd/Z+xGe3atTvytzfDd8qUKan4EXzFvJLJCbSvEUIIIfw0oWv3fLp53N+NomwhV8m+HjtmV/W+wcx2a2sKIcQRsrCGLCSRLUQyMwtHjvbYjMdiT3oFccI7uHdonSqEKI4Q89QbsG5wp+kIp+1xDhpJ56zbp/yD6xPd2fsJj+3m8/ZBXO5OYetwRs68Seev6+btwvkAjudPMLP3Y33aQgghhEgHKlzk9XPw4H8Ki9u2bXv43BN7J0+enIqbf28SvAYhhBBVixYkVlxS41wza0V3TiS2MrfvdZIcm80sR98HIYT4FkdTNPMlc/+ESGb24MxxOp10X1CgUBxOqPkV1qdz6QaeEMP9hBDpSyhCnvAA6wrXTTvTzH5uZueY2V/NbIuZPcO+ZUWCreS30bk7E+eNm5jL+z/YOrti1qmMohnACLU+CMLLmOc7HUFaCCGEEKLKUqkir5+cnG9y0Keccsrhcyf2Tpw40YYMGXL4vApQx8wuM7MlzFESQgghouGOz23MrAdJDFe5fnyU43YBs+BnM5dqGUkRJXGFECIyIeYNVmP/uUXb6QieZbKsk2OjIrfXHAq+RtKdWxyNnYmWmdVG8HCnG83sWMUHQohiyChmrEsO3bOuc7cj+xQ3tuyXCLAvMc5saYKLTLdy+pBxNTcxr/d2MxtiZjMo1pqG+Oyspbty2xWI0FPLwV5aCCGEECIpSBqR18MTe1u3bm3Dhg2zVq1aHT53TJgwofJfYOlxC+0/Yq31APYyO1P1zQghhCgXatOl04+khat8OibKE+03s9VUqE+iw+drfSxCCBETw7nRAm2uiEjkjR3P4rS8cVZXd1H8FUmodcVgJyFuXEA8UYjl6leMcchPwu0nhEgeCosReT0+4eQcAs5kLu4QOmyvxVHoFcTgPQl8Z87BwHWALELAdc87iFnl/c1sPh3F7vwMLnMFLg8xe/8Zun9X6vsmhBBCiKpE0om8Hrm5udayZcsj547hw7/JxYwbN67yX2D87CLgdLO/HmWeyf1UZKuaWggh0ptj6dZ1iYrertYJB4hIfEbSZALJlY8RfIUQQsRGmHml2dg8iv9QxF9lWZ+Utrs1FbuIve2UH4MwUlbWmNmnxAst6WxrwRiH3nS2efFDEfHCY3S5uY71z32frxBCBMnHmjlWvuQ0nzm47rg6wsxu5W83S/xp3IZ2J3Brf0mB60eIzFcyk3c4LkiueOttM/uTmwxH0UtP/t+IBfQEimVV+CKEEEKIlCdpRV7HoUOH/uv8+OOPP3x+ySWX2BtvvHHkPEVw83rvNLOxzEYawIzFlxF9N6fKGxFCCJEQskjGdsXOvy1J22oRHjyfDhyXzHjNzDZgL6rEhBBCxE9D9r+b2a+K/+CJgHllEC1LK9ZWRDdsoslnm+VWgMgbRrxwIu/3zeygmQ1G6K3H+Iat2Km+QxGY+39HxW8WIUQKsotu2XiLQfYg5LqRMS/6bOUvxs55Cp2983j8RLETR6PFZvYcz3cp+8XuiM9TcdSb6BN77zOzUbgjjGWk2iF9YYUQQgiRqiS1yBskLy/v8CXNmjWzyy67zJo2bXr43OO1115LmtcahZ0suD+hwvEnnHpSZf1GnJWTQgghkptQhKRvXYp8+tF14zpwmkd5F7vp3HmX48eWBCdHhBAiHRnAe16pYplvcYjjVm4p7x8qQzdwIrqIK5pcxNX9nJc3br14NbMwvbX8x8zCfJ915tYEW6QKIdKDXBwuSluwsp/CKec49CqFrG5+7lAzuxAR2ImxH+AukCj24pC3BNHWibxXsc7qxizf9+nkfQux11k5/xhB+j32ofMpnhFCCCGESClSSuT1yM/PPyzweuceV1xxxeG/xo4de+Rv7/8kw81N/AtB5E3Yy7Qj4fQ4tjbiP9Rw45rj2B71CPS9bgDZkgkhKguXJGmAWHuiz5L5XObm1Y7yulyCdilWZB+SCMnWpyiEEAlhNILcm9qc3yKfU1mE1oPE3wfi7ObdSwdxKom83uutCLtmQxxxQkpTioQnEjNs0egGIUQZceNj2phZZhkfJ4fuWifqzjSz8yhMceedsUl+kQ7fNQn80NyxZ6GZrcCOeQC20RfS2fshr+cx7Jz7sC67ifNpiMRzE2wvLYQQQghRrqSkyGsIvf5zR+PGjQ+fX3nlldawYcMjl7v/x4wZUwmvsljyCCJXsVi/EcuYbgS8LyEGpwqnlSFAj9Tp5scF5F/TbRELPzOzu82sOvOp5sVQze4F/UIIkWjuY39+Ph28zpL5qAjPUYAl8yI6dVZhJaouMyGE+DZnYFM7sRTbpg8dSxJ5v01NCiXrxhCjRyKEWOuOafviFHm3l6GDuLKoy5iFJhW0ts6h8OsYMxuj4mAhRAKpQwFJWUVej0IE3fXMBu+NnbK3JrqB8WWTKW5NFIfo6l2JE1JfOnud2NuL/eZHzOadSvHtEDO7ji7fmdhLzyEPJYQQQgiR1GRhT7KE6t+UpqDgG4esBg0aHPnb+3/UqFH24osvJuPb+8rM/o0V5+1mdquZ/RyLmX9w+ddUw2cQcPstZGqX0lLH63aNRCOspWPFzT7pYmb3RLm9lyBySaPGfO/qUyXaiuB5djHPdRaPf1WMr+eHLBY2YMNzspn9rYT73I6QsjCO9y2EENGoT9euO91Cd02DKPMG92JrNhcrsZUcG+RCIIQQ0fm1mZ2JyPZyHNvpNAoBN6tTJyI1iNWPLsNjhHyn0twvlahN4VbdCiygfpMC1eHFiLwhfh9NmOMbbd0nhBAe+RSSJHoNUkBDwHpE156IvU5Q/SXzeydRtPVRAq3v8+kmXsUa6zxc9C5EcO5Jof94ROiuvKbLEYbn0nzh8lWfJ+g1CSGEEEIkHLcQfZKquQkIXCtTfYZPYWHht/6vW7euXXvttYf/f/755yvplUWlkFlKrmJwI8Hm1QiT4xHgDxBsu0rIcTxQe+xn9pLcijXw7MDjr6B60c9QBOZxVDWWhKv0vB/76SCNCZ4bImy481NJrLnK/tZUi35dgsibScVlLHRCTD6OYN4tJO6gErO4Kky36HiYGZmH4vjshBDCI4Qlc3vswbqxn6tG8YyfMPv25RTzLKDbd28F2T0KIUQqU4eum6OI3/ZjvWiIXx1xzdlhZp9iG+ntW6/j/F19AyLiLaRKa5lcRMyfxXk8x7RjEZlTiULec14FHr9dB+8fzOy7ZvaTKLc5xcz+SLHrLcycVHwhhCiOonK2yy+kwGorrnbueH0N525fdgkud68hyiZqn1VA7ms1z+sE3BFm1oNTb4Tc6Yi+Pcg/DfN1/r7O+VbtS4UQQgiRbGRh99QNi5LPCGomIpCtTrGZSFFxQm+tWrWS8aV5lsLXUjF/Bzads6loHElQmsf5owiwTly9E6uuE6gi/1OgyzcSLhn2PeztLsHKeCO3c929D5jZF2Z2MwmxHSU83vVmtsvMXo1wXT2C4mZ0TWTQXXsGdmyv81xLSniOg4FOc68TONJr+xHC+DIWKS6Bdxei79fF2M7908x+QUX8KyW8HiGE8JPJfq0j4m5HXAqqRdhKhSQZllHJvphkR562qBBCxEx/Yto36cj5J6NPXKHeQxQVGh1J2yiGfJNimsu57jlt7oh4cXJZktg1iblrxfk49aKMM0hmCnmPFem+sQ3Hj2YU766NUKTamNn/LYhTJEoIIUqiotwUimhQeINu2S7kvVxe8jsUcT1HTuwjXDcSsQ8r9HUUT8Y2eiiibhfWcbMRmmeTp+vC6+lHt+8EmjM2yHVJCCGEEMlCFtXs52C525bEx0UELZOpaFuPyJbSgm9RUbnEYF4QnBFn4BnmVIPA8RIEz3ps73+xYJ+C2N6B52pHVfxZnH5K5aP73J6JwXbbPc7pZvZ7M/sNNjl/wcqmL4kAJ/D+Cqua4uzvQlSGX00HRZCdCNLV6PZ1YvC9BNOjSMgdjGG7HQx0KXfjvT8auN1RiMoXISJn8hrnIwp3RkhfSme0n110Tt9mZmOVCBHlQEaEhWDIN/Mok0KOQt//3v4lHGcC0bMLDAf220dh2/eFvuNlJkQC9TT2SReyb20SwZI5THJiJYmKySQYvlZyQAghSsVI7nQ3sfKjxM5fYFE7jmNhIxwWfkWC9v9wWMhm/rkoH7zYI95jXGEKxiehwHlF8R5Fwn+m++xPgRn+q+mMa4RgYYG4UgghKpswx+0JNJu0Y03lhNf/wa1gEkX8CylwSZTY+4mZPcXjO5H3MvJqt/IaprPvnIHT3tmIwP3IL41FoF5VVRpjhBBCCJG6ZCEkrqOj6DgCmgvpQroTEW8FyZKF/B0UyNKZ0+KcwRRiAV6NQDYfW+TaCAV1uF0hAe+DbPub6VAYRIdCJpbH75Kkutl33+LogtjwDkKps2Z+jNfRn0D1Q+yje5Qg8p6FKP1RlOv3EBSHSa49h8ixmaRESd+jDASTuogpxvv+Oe89KPJez+teTrVlbWxTDzBfpR33vyfKcz9uZjfx3f84hm0pRCxkUFwwwGe1bgiuvZkNlM339Ul+H8aitjG/ny/5ba6N4fmOY3GaTQXyHC4PUdQxFGvLBfr0SkUmxTBt2c+4wpKW7KeCFGETup4EwnQ+X83FE0KI0uOKHftQALgGR5rauNGcgFPM7b7jb1uOqRdz/DOOqSqyKT9K2w2szyR2nmU91Z/ChQcD99xN7JGFA5T7bTRgG+9h/V+SY5MQQlQEYYr0PyC3NJZmlPOZoXsx69pnKNjfnKDjhddR/Bp5q048r9dRfCG20dO5fhFNE724jcuNPk9MsSJQaCOEEEIIUWH4u72+YqHnLCRfJCEylADmTM49i93xBDFfp2IlcI0aNSwnJydRD3cGwsmLJJ1KwtteV9NxehCxpRozk/zsYN7SXioNRxBcXoHN85cIrYd4nFiCyqbc9yiqDq/wVXW3QCA1BKKzSY7lRnmsKxFtiyOMUJuJDfKp2IJ7ttKn8z3ykgxHIWw1ZC7XYASU5oi0Z2At/qPAc7rv8s98r/9iXzfdZgSYTKxRo1laf05Hby+JvCKB9EQMPDsg8p5AR1E37CSPpvhiM/Z7f/T9NrfynYxF5L2W38IuEnyeyOsSgFf5CnhuktgYF94+uiP77q7so6pHeJB8hN3lVKZ/xP4l2r5UCCFE7LRjXMlffPvcR7EIHsDx82vfo20m/svjOGjE7UKkMjMpCs6kq9dbB4b4fZxGzNeOwt0TfTFLLjHpbykqFkKIZCGHY/Z6Om2HMxv3fIqjXe7sac4/TlAXbZi4YTKPeyZr6n6cD2Qe73uIzfNZC56Li8ImxN53yY9pDI8QQgghKpQsFoZeYHQyAcpWTk5QPB5x4hLEr+9itTudCrv52KYUpMpHd91119mLL75oBw4kpCF5FV2002IUefPZjl8R/Hmib1aE+Sc7A/dbTYfed6kwbM183WrM1t0ew/PX53kzEYEyfdc1oQrReC2t6AqMJni25/tSEt/BlnoIdsiPU0HuuI95vmP5vw7d4ycjQF1DZ3GYADpEUm9s4Dmv5THP4jav0NWxnsuHYyn9RDEibxZCzGkxvCchYuUSCkG+Ctz+JBJuz9BZcbZvntptJKWn8/sewu8/FlzF8d/5nS/z3b4/+5G7uP409hsiOiEKRNqy3x5CsrRxhP11mH3WOpIAE+kw267OJCGESCgHScQ+zb44zPHzz8R/GyI82deMKhlOTDpRH4lIcfJx2Tqbjt0i1nI9WSf2IobM5bb7KLTNorD3Nq67U3GKECIJOUDB7DoKswbRKNEFcXUlccAHNEQE55KXlh3k9haz7huFyHwp6+kFFGb/k9v1pWj7N+SxnqfId6UKfIUQQghRUQRF3kNU+rpAqRanTZymkugeRpfk+QRai7D0ncntkj6QCYfDds0119hLL71k+/btK+vDOZH3bWxbZsd4n67MqPUvqGtEmOPokUFH61qSVN7spZ8SbOYxk3d3DM9dG4ubbD73Fj6ht77vdiGqvWsW81iFMcwArst3pQA75QHY4WSxHQYFuhsL6Ob9ig7E71AReSVdv2/z/v3fs+bY8jlL6H9z2fsI4m/xXk4mCVicsp/JZ9KohPckRDxM5HfUInAft799ycx+x0L1Ml/xg+u4/yGLSG8G99cxPGdtfkP/wz7FqyKuzqJ0Jb+h+6iEXiRbqYhk0U3dge3Wl6KXSJb4BRSHLGdf9QGFMRprIIQQ5cMq4r5gDJpDcV80WhDnFcqmVlQR3Br8HIRdtw79G05cmdiYL0AIXk3R2V7WlY0Yo+OKaR+JYT0nhEgPQhEKWSubQ+QZH0M87UuBvytw+SvrrjHklJYn8LXuIR+1jP3lZRSKnU/OdCkFNk/S4duT9bUbDXYD++eJ7IOz9fsRQgghRHmS5evADdE5NhCB7WiEhlkkTfZjObmU6rR+VLV59rlbqLCbgpCQ1DagRUVFR4TePXv2xHCPqISxr76LjtOS7GK6cB6L7apHBiLPJ/yfx3ONIdDcTqVhLNbZIaq4wzxubZ+4XM0n+Hqzg4vr0M6PQXi6io7fhxA9zqLy8ReIWM8hyHocoNs2B5vmDcy0zEZAORChkOA73G6ir1syC+H73z6B7fMYtk+1KParIn0JxbngDe4D3mVfelXg8lUsWPfTybuN7nrDdnIFf7fnNxAL19HF0TTQOXwCM4am8/96inayJPL+F04Yb8O2Gsp5cwpPguSy31mEcL6QfYy2pxBClC+5cYhSNSlarcGoj5p0AYvoePFOsiX6kxUvRoxWrFuejEPkuIZi3ZHEIy/zPf+MtVOwU3crwsUoYlCJvEIIS1KR16OIfdUz5I/OQex14uq9NBP8knXuZwl0KDiA+5U31u4iBN+unFayv32Bzt5zyZU6l4QbcRgZx755VwzPJ4QQQggRN1m+4Ock/s5FNPsbVe6FiF6e4HYIy5R1VK51Z4HoLEruxj54Iha8S0h6J6UFVEFBwWGh99FHHy3rQ21hnlEvuriK40fMPwpSkkDbytelanTIdqQy+1iCzVdisM0u5LEyESP8zxsO/J8RsHOO9JqL6/StTdd3AaJ/XQSvbVSQ7yMg99tSF/kSDfcSMNfBms9ZND8Q6D733tMD/O3vXHSP1YfChFyfaFYcRak4Z1qUG6cgmuZFEfoiUcR3e5PPNiorQvLPv8jrSBGH143vfVcz6STdGONz90QUfo19zSIur8Pr8qzKt1D4UBkJyWSkAU4BfXBNaI1QHom9CPSzqCbfEGOXtRBCiIrnEoSvaiRdQ75ZviIyEnfjozJF8S2so5rimPQM68xPSlh/dyXm2YoYIoQQRn4oFebJfsppNmu4kazh3mL9+yRjyDYncKxcDvnNlay1B5IHPZ21/AqaGV5AhO5J3HEbt5tEk8a8CGOchBBCCCHKRJbvzmchAKxB1NjlsxXJQBA4QDDVkiBnC6d3uP/1zIN01cQjCLCeoQN4ky9gDFFRH202aoWRl5dnjRs3Pvx0O3aU2rmtgIByNLbV0RbVndluayJcV1zVZAHdZR/6LjsXO5h7EdZ/SZeev1u1NXM35/tEiIN0p3ni7B7f693r60LzOn2LC4oz6RCMxhUkHn7P32dxXo/vzZ8CAq+fo/k+dSM4LqSw4BiSEv7u3+d8CQpPtCrge+fmotzBe4zFvudgsnehiwrFLRbPpFO+RgxPvI+q4q0kkT2R9+hi7hOi+2J3hAID930+lU7RWJjGd/gKOjv6+n7DW3wici6/pXRO5GZQIHMGs3b7cGyLZMlcxD50Jce7qWzPMvv9CyGEKFdO4ricyTGvkGOliI4XNxQmoPAx3jgjFeOSfN9c6MooFJ3AGvRj1jzF2YI2oUD7T8RAd+EIJYQQxv4/UbNtK4IvOS3AUfB3FLF0I/fzLDmy9Ql0W8qn4Hc1a/Q+5K06kDdYwnO+zGtyjSAXMH7MOUXN4HXN5rWrwUAIIYQQZcYv8q7HNvRrgg1nd/Im14VJaHfB8uwkgpv3uC6HDtZFdL55VW3dCbDcfb/LTIsinvd8FqXmW9BXSoAzatSow+cPP/xwWR5mHeJKF8TFSPwPszAjUcA2jSQQZ9AF6xcUTmYR/wb3eRnx1C/yutfyONv9AV6XE0PbcZ8miD7ec+6k08F4L9tLsDiuXcL82mZUUbrvxs1cNosZo9tJRoR8s3D97/2HfBdX810J8ZpmMIfNL/L6K9C971IeYswdfGdrx2CRnYcYF6s1rqj6bKFQYgEL3pKSj3v5fe0I2IoXt29rwD4xkmDoFXjMiXFLv8w+wVUI/4vCknn8tvawrzaer2mairyuy/9Ets0IFuSto3Q1H8J5YD42W8soWEpURbgQQojyZQyJVJdg/SnFmEqoFk9OwP1DFE82ccHuSooPXkTk/dIX53lkUtjblHjnRmZJVse16x/6bIUQPvLYpyWlE18x7GcNvJJGiOvprn2Ibt4ncRtcn0ARO8zjrSc3dS6OiJ1pquhLN/EbuNN1R+S9kNfo1pdPk9/6TLGJEEIIIcqCX+T1W9l+gahoLAybE+h1R6CbjiDpCXQXUMW2H6HXnV43s95Yp5yN4JfB47j7Hsf9q9ENureyKolzcr5ZDzdr1uybN//FF6V5mP10BgyNIvJ2IWheF+X++xCFInWRno7Q4KeuL/kyDssX7/OsT/C6CZF2EEHuP+hG3Efw3prX5AWUOxDpjc/dmxcaje1YP0djDI9hPMfPSH4U+V5rXTp8N/tsml3i4R6EXqOTwBOjJlF8cD6dzTlRAuIw3+kZvOdQDB26+Wzrh0q4nUgfJtHpuaeY366fJnznJwSsropbtLVkP7o7wnVh9p2xWullc3qafe9QRN4sfgee5XQhv510Ennr8Pvuib19G45DkdhPhfYcvgNrY5zpLYQQIrnwErCDOeY95VuPiMjkJaCbyyucKk0nb6rFJjlsr4OBcTIVhTeawzm//AD3mRCdus6Jqy2dbS1Yd62kEPCZEtZ5Qoj0oyjFi1m9Y/67iK5X00n7AE0nL5FLWpfgQqZNnGbiHnIDz9+J559PfnQ6ecHBiMBdGS32FA00wZyfEEIIIURMZEW5USFdkEZ36OkEQUsQIzb5bluEcFCXhWIjFrve3N7J2Jas8C18s0ign4cg0ZCuzu2IJDsrI/ly5ZVXHj5/6KFSaXxhArQ+dPKtClz/EzO7P8L9PKH7JATW5oid/iTBxRHmyeYiUpyAeFHft83+iiBxF7atl2PpfB/dsYcQrlwAOt4X4E7F4qYRgv7UEt7zWILVaHjfk2voVnzWdzvv/dVGsJ3pE3l/wHdnDF24u3wi2SqKEF7mfT4XIRj2bruXGSinBr6z0ejKdpwXw21FenAIq6fhiP8lzSi6MDBX2qO4pOUJPG6kua4tA7N7Y8X9vv6Ie4BROHESvzfj+T6rpGRkRZLBMaUL+5le7GejWTJvJ1k6lX3SRiVAhRAipWmDw9A1HIenq1umRDLYRqUVW0O+NUksLih+8lLw88ngPWZUkkB9EFHjFGyYv+R11PPFfa7AdwNrt7dxShJCiCC1yAWleiGwN1ZuOjmva1kL3ovwO4FGicUJXut5zzvX97z9aWrojrPIBPJNXYlPetH969agz5OH/VSxihBCCCHioTiR9yv+zvXNsJiJiHEyye8wou8CgqVJdEb5F46fBuxvayIwHsLSeSyLTk/IOI6Os63871n5lnuQk539zQijE074Zszsp5/G7dr7JeLkoIDI24GkRVCoNcSX87B2cdvl+2b2SUC47MfMXz9zqEZ8HmFyjW8bXs/5XTznCgLNmwgk3SzOxxCjO/uqNcfRAfhHHnNcCe93It2HvemYjcRJdBD/PSAoecmfXAoEvHmnbbHTu5rvyK8oAPA+f/e9/DOXD6BK07+tMnzdirWYIz2K27Sh83g3wl1QsPsd7zmS2CbSl6l0xbZkXxiN5nx/34hwfWExhSvH852MZCHQD4vg0rDO95vbyb6mHv835LyqLh6P4jh1Dvu8zjgXRKKA49kCjmEL+V8IIUTy0YAxCicS420jbtsdpSvHJU//QEyYF2X+vfhvarNGjFQQFQsh1iRFnMcjFnyVgjbR9SnYPYbzoGVyeVPIeJ4H+U1sIs5by9p0E7HNuhLiWCGEqE5upqq4PX1JHm0268LRiK4/ohniHVwNFpcwzzxetnGaQxxyEQ5bt7G+n0nBzTzE375c3p283TjWpevlPCKEEEKIWIgm8vrZHbAR3Ubg59lwnUHg0Y7FYxFdUyuiiGUtENu2sOj8GlHT4wtE0S94rNMRfEuy2k0YV1xxxeGHevDBB+N9yDBWWmyVvAAAIABJREFULNci3Hjio5sh+88o9zmKbfIlXan1EcL9LMCa2I97nkcIFN1j/Ny3vd+PkJh5h/u4jsTLEKKN4HYciYA9CKg9EYGXlPB+8+kO/geW3LmB649h3tMaHtcjk+7uk0jSHe+rgP8tttfvMh/3EmykvYRcIR3Ba3iPnwYe9xCvvzPXN+A9T6er8XQE6Y0BkbcdgfVpJbxnkX4c5Ps4iO9NtIVWRwTDRRGu21NM0rI+SdBIScHTArOkQ/wuvBnexXEli0RjH7sa6z7vtX5VBRPdtTl+dMUBwf2uG0e57UGKPbx5u6t9xU1CCCGSj7OId7sTOx5kvbCDgqjZJEz97i0rKXSqRUJVAm/JVCOmPrqU9w8TYxcRt8ezzQ+loFVoTbZXXc4rmgK+2w8yMuhKCg/3FFP8IIQQkSiKYY2ZiuxENHWiazczG0Gjwg0UBE9gPzoL54NE4XJ8r2LF7JzoLqVR4SZG3n3A887xzfUdgjB8lU/sXar4RQghhBDFEYvIG2Q5iZIibDBPZPH4Hgn2POb8uE7W1whY/CJFNkn1vYiSHQNdU18j/n3N62tO8mYvC+caVCmXG/v3l8mxZTWvty9dtmfwmqNZAOcgak5jId4sQkffwxEE8yK282L+XuC77kafPZefXcz7mIbw3If5JKOw93IB5J0ItitjfL/uNdxMdeJY3+XHM1O3Ph3HO3zXhUmE/B3R6mSC3gzscn7P7Q6RsHiS75FHLtWPQTrz2E4Yu5VkXxGzV77ke/sh3+Hg4uVB7J/XRnhcIV7CPvylKLPD6/G7eT/CdZkUchxH4jTft0irQTFE0N7dw+0ff+P7/zgqjz+h694vDIf47c+jg+MWXzFHHkUbZ7DPPhtb9JLsp1OFY3hP/Vgwn+pzBwiyAyF+BuL92vI+pgghhCgzpxA3nsu6YRYiZCOOld2J/eYTN04gnl7AcbEF3Y5V5bhXnpS1ayhMHJLB5xNPYrpZGcTlyqKA95hfiUn47azzTiA2jBZXCiFEcYSreOeoyylOIR/m1sXDzOw64ofR5C/fRHwtzcikaOwm1zYdkfk6hNzROCVO4TSH2/RAiO5Mru5FLv8oDcYtCSGEEKIUlEbkzacy2BAslnJZLp1TawieLuS0HAuUeVTZ+zsvs0nMGwLFMZzCBDZfcH+vi7c2XZoTfY8RSrKqtiLEgwvosB2B2BstWC7Ajthjd4TbRLJx9e77UYTLg/NAg2zGEtlt+3v4nJ4lePwNwnGs5CIYnxm4fXO+Xz/hM/Tjvj93Y5mzl+s9a9l7mBVqfK5PYakTy+yoRlgMvc93cg6vzysYyOI7dyjC5/El9tZCRCKX3/VwChuCtCOhOSvCdX1YnLXDSn02+0nDQviUKPczKoyH+f53ltH/S4L7jQjdv48iAB8i0e235VtEZ/yLvgVuqi8SnZjbnm3UEzv2jCi3XUfxygSKPYrryhZCCJE8ZHL8PBenmedYT1Rn3dACB4feuDk8Tjfj/ez3j0XcXazkaEx466qyCOK1OB7XivN+9Uu5Pq1Mwj5hpLLWpC7uG8/v5CEcpNaqqEEIISKST0ywmDWxN7P3Gtbtr5vZC+STdiRwE+Yg1rq1aCdGtvVl3+3yDJMRgx8hz9eFde5vyfE9zf3naf8uhBBCCD9lXUTv9IkM1REjVzNP9UICFSf+/YUK45epjFvBfbOxJzHE2uMQPT5iBuYkBEmPAiyx6tDx2YpkjScKHhXBMrgymI+AejOv790k/dYtRvQZjhg7kkDyMQLMWOc2zULs97OOYHRnhNvn8Z2ozWfq/8w+i3D7UXT+lsQ0Xsc6TvFwa5J8d0Ty8gTd6s+RTPPIYq72u1GSe+0RFNdTubvZJ/IaXUbRvq+TA0LuXl83enBhF+b2p7O/vTtw/WwKIAYwdztVrYlrsE074yBwls+GOkgOx6SF2F0tpaBDCCFE6pBBt647zv0s4L7wCeuG1+kCHcAok74UV03jvrMCx25RMmUZlVMYOI+VAtaUIj5yKWIbzfe/CY4t0QqFgzSl6HCJ3E2EEGnGPNaKpyP2DmG82WXkLp8mv5fItXMuAvJCYhQnLg+mQO0S8grjKdiZQwOMa3z4FXmrZ8iVLqyEOfBCCCGESELKKvL6A4p8EijZiLgr6GDtQYVaZxabzkL0LTN7hc4yr+u0CIFvLwmb0yJYDmez+BxJxd2pJOy9BWxvLq9ITuSUzXvIwL76aGbA/p0k09G+Su/qSVKlnocNzXKqvn9GJ8RfsX39Pd3Xu6msr8trDyZscjnV9112CCH+pCjJmj18fzI4eY9dFKET70uuO6OE9+OSEhsQ0g6xzUOc/AT/N4L2Y6JcV1aO8hU2aJZK6cjEOaAyFzHZWDddwb7NozUFJ3+Ocr+pLNJysNHb5rvuY+ZWR+rgN7rk/axn/5fjc1Tw8106mvYHHAKMjvbfUpW8sDQboJI5hn3p+cxOahvFlt6ouF5Jcn8KonqZfPiFEEJUGgUcw0J0806N8EK8dcTTJEevwR3mSq5/XcV8cVFEfBNpDEUseE4Z8ca9BaXo/hXfbO91vnVUKM7vew8KAL9PwaAQQqQTBeTEfsHIh6uIH0Zwmogb1qI4GiFi4RAi8yLil6txRxzC2KVZ5BGeJA9xATbPP2ee8Mu4ey3RWlcIIYRIbxIpNBYhgvj5kqTKu3ReXY7dyAiEkvlUobkOs00kcLzZsxOxMMlEVDwagaQ6if5sKvd3+mYhHYPQuIeu4FCUztCYaNeuna1aVeJIo+MQFQt5Df4FtSeknMeCO5PX781tKg9BsTTsRlx/ATGyM3Z3LxLszuMzysYSuWaE117I+/PI4zZHRXk9Yd8po4RtUcCppBldhYg73Uph4x1JXE4U1fkeRupqTgeaRJljWxxtKN7w9il1WfC8FIM1UT0qYj+I8zkbFCO2evyJjtAXfQnMi5lJXhDlPv6u3WAX6UFO0dgWuDwvYHkfZGcJ37MvU7CTtQXHgotJQrYs5ti1DYeCt5jbvSXC/G0hhBCpRZgk5uWM8biFuDRap+k2ChULOG6bb7yMiI0cEtxPVPD2ilScKWJjB4n+Tqy/d7NmOxSDTXkhov5giihkay6ESEcKsLr/FQLqpXT3XkhOz8UX/6AAak0CC/jzEXqXMUZtBMfg3pwWUIDzFPvo83k9P8Tq+RX2+wtjyGcIIYQQogpSUd2k+8xsLsHJv1hAjkT4fQwxZxyWI6vp5N3PDEwvcHJV3Scj4L6HPWewU20a1sPTWKhuKMuLHjx4cCwi7wZea1dEyN2InTkEYTV8wm4WYtU63mMyJDEyfeL0DCoIj2GO6J3YbZ9JguBZPqcTI4i3QVHVS9JEm3kZQlT17lPcbExvO5UURIfo5q1VCpE3oxznc2byHU+HLt7GzKb1V7gO4jfyZhyP055F1V9Y9ISxQG9Mp3k0QdX4bv6KU6xCr7Nn+rGZ/Zrvz1rmStfkszuAc8B+FnXORuk1bnMWr1MkjqPZh7v90FASlk2iPHoex4LZWBV+lMJW1EIIISIziWP074lFXyEBuyxCQZTHAsSq/CjuF6J4jtH2SSl20fHVCftlt377HnafS0p4I++yDhzIGrvURdJCCFEFCJMPuJ81f3/Wpf3M7EEz+5y82ds0RSSqiMzrKHaNF2MQl69nv94Fpyqvq3gqAnAvit+uJ98yRuthIYQQIv2oaMvgfETc1SRnujFv9RzsgW8joHkDIWUVC1ajO20+j5GPVcnJiKxZCI+5dAAejdDbHIF5X2le7N69e61jx46H/16yJOraeAen+li2nonAe4jXUw2RryaXLyEhlcxB1wFEk3nYvzpB/g66lv9A0kxUHHUjfIePYvZcTbpd3f9bA+JniArP7fzmYqEz3fRbA7dtSEflJ8V0zlTHkn1pQOTdT8FAUOQN0Rm+I8JjfYL98d98ydnp2J+/zaIrGt7jPUQFbGP2CSeyP3k/YGfkZpA9zPk72DNNwiYpG7HY/SaO57fwf4i6rzETdnwJorOIncZ8DgMQd08txpJ5FwUzH/AZrFUSXwghqiwFxAUhxsBcxRpiGsWfC4lPduKQUY3jeCYJ0XgdRdKd6jhjiNQhn8S+kfC/nbXya4F3EGJN14Z4eA9xtxtv8TsKHyXyCpGeyE3h26zj9BJud6NxmPoV+9lnyXMsTuDs/7Dved9ibTyaonc3Ym2jr+DtHXI+vYiNRtL1+yT5U+3PhRBCiDSgMufCfsppGovMwST12zBD62dUFL9BwLQyIAatRRDYQOfdKSR13qbCrogKt7kIAKsQLuMKvPr373/4PCMjwxYtWlTcTZezUG5PZ1kBwlsRXQTVuX4eglEq4ITBu1n030Vn5SCCy3Up8h5ShWidxG0J1O8LXN4dwd2Jl5ux4P1FQOT6GQUUz8cg8oZ4rqcQQR/mcT1uZg7eGh43SAY2it2xYPcz3jevtiG/8Xosktxv5ZEIj7fSN4PXs3ueQMK2YeC2xyLAeh3zTXntV7Lwao4VcxYFCvP5DTZnMXQbf99Pcngo2+Nknr8ez7OIx7uCQo2b6eD/Tgp+32KhpA76xoj0Ze2AD/NZn8Ln25uCgkizvA0L5hUk7adzHCnO8loIIUTVoJC5oa9zrLiD7pbziCfyOP7v4BhyOu96XBqPzCgNnttOosc7VFVHm1ASCSNbiZPaUqh4P2tUPyG6w+7hc97O+rQVt3Fx8BzFVkKkJWGJvFHZTXGxywk8Z2Y3kXe8k8Ka5xCClyV4/7mZ0QmT6Ca+gRzE/zIKbypC8BRyG30CM30fJye6JcHbQwghhBBJRGWKvB7eDMnFiEOn0R13PgHKeXQxjidJs57KtXW+GbB5iEIFWKs2JfCpTTXbJViqvIMwsMDXIVwsrpvX0bdv38NC74IFUZtY9yE8PE6H5fG+WcFZdPDuT8FOsxwCxrV0W4+KYTau+KYDsT7iVVaMi6X9CIoL6EZxFQY/R1T3i7zVEVS70TU7hOIGf/LsIgTJ37MQiYWfIH7WZ9FyN/epw3O478BlVKsGZ9Acz/fjlYCNenUSSG6h0xcx9WaEwbOLsXAuJOkUJhG1gS6dl0lctUSM/gox9gc8ZlMSU6t47zX5zS1D6P6Y/8PsGzohEk9m8dSM+/6Zy69nO9dh27j91G+xv/srieYzETyrEt487TURFoQnItAP4bMoq8hbwL76eE6RyGHfv4DCn1WIu+lggS6EEOI/FBETuNNYikTdmuEMYoBmdCnW4Ni9n/hcx4v4KCqHeL+qup543614R8WUB9sogBuNTfO9EV5TEa+1JddlMHPS+7zPYj0ikVeI9KRIx8xi2U+jylKKya5FUL2DXNlr5DVXFeOAVhrc/v0FGmG64rjnivC/T95oPuvk97h+EAVx3ckHeWJvmUbaCSGEECI5SQaR1yMfq6hPmK3YgrkTwwlMbkJg2uqb37sWcTWHhL/HLOycL0FYGogo4QKva3j8JwiQ9pf4ytyT7NtnvXv3tszMb3TlefPmRbpZESJSfZJLuVxek8sLE7a1Kp4tiFuvR5iFLL6NE3lHUHxwKAaRt4CO1VMpYtiLABnydZJ6tOa23yeRM45ZWtlc775vDzD/+t8UQZREmN/JbTynsyT+Dd/hCzj/PQnU6xCAve9ziN9qAypYPc4g+dqA93A/C56ZvNbMKF3t1RD9ilicnE7F6gw6R7tx/wWIvJ8h4G5H2N7INviKzvp9dCYHLa+3UPnai+erwcl9Zh+yOMrkOc/k/W7kdQ1gAeXE4x5Jti8tC/7u3Xy2hfGZnMRC0n2v25EcLO9K710k52ewz9+s+UJCCJHW1KRzpSUi7xgKtRox3qIhx+52jG2YH2EEhYiNagnYTv44IRaRNxU7yMKcylr0lgj2U5A4mt9BJKEm5Ova/TFCRQeK+JoRd+Um9mUJIVKEAnJromR2kVdcQd7lOpzvbiJOmU6MsoBGlEThOSIuYN99Ax3F1+Pitoic3RzySS7H05MCnjW81qnK6QkhhBBVi2QVJvYhLqyki/RkRJULCGQ60DW4EgvXDwlYvAXpLqrrtpPcGYN41hsLqmGIFVOwVJkeS7WyE3p79Ohx+O8oIq/HVwRX3mI/iyrpVBZ5DbFwWZTrMn0dE6n+PhPBagL95XSRZ5TwmPvpcF2LFZAhIk6lItNPFh2wr9BteYDvuZc8G8rz/TaOKtzjEXAXYX/udcM7QbYjQuomxLYLA0m42nTRrA78jk7ivvn8Fl7nvRTQTVtAstbPyXQhn0Cy9n+phv0573Mfl29mdrBRGPIIwm8XRNdCkrrNSPgGBd7aJLU8sfl0LMkLSBwPJUHWiG2wm23qLCBfZR80nPs2TJLEXiIopCjhIJ9xHovC89gHn8I2LW8+5fOZRMXxxylkcy+EEKL8qM/x+kwKOS+kMC7YLePFF3M0jzduEhHHe3FvvKJtZgy3STa8+Ds3SbrftnE+Eher932v8RQKnn9IrPV3rpvBOq4+sXEiu8+EEKnDDgqhlc+Jnb04jq0j7ziSouirEF8XUOy+JIEze41cx1YetxMNMYPoJu5MXudtZq13JGZyHb9/ocv4VWye1yfBsStTHeRCCCFE2UiF7rPPOX2IINue4KUbiZ1+CD6zEMQWIUZ5CZ0C/t+E8PsS3YUu+LmaQGcSc0vnlBR47d//TeNvr169Dp/PmjUreJMQgthnES6vypxI8DqbbRkU1dKNjYhTIYLoWMgjEPcSK57NcnCO3McE40axQkEgGTMSQTWeILkfwt4+kjz7mJ07E1G1iISdE1SPCdy3LqLn7MDlsyl42IUg/SD2zTfzW+saYVZwC15LPgL2K4jdG7n/LqpRs3zvOezbRgvZLzzJLLndiLFBavD7PxmB27Nbrk7ieCTv+W0+h2zf/Vcjen7O/59GePxUpy6LxaG811P5XkQiJwH7t5BPmF9AEcNaFstVRUAXQghRdvYzP7QaYla1gGNJTYq9bic+WKWkYdxks00T0c0Z7zE8FY/53vbakySW1GsohG7PDOuX+CwbUkh5FrHs/wRe7/5YHa6EEFWWg+wHdNyMn/3kf5aSi+lHZ+35jKSbgrA6O8HHim2c5pI7GUY+5GqefyEj636P+1tPxi65Y8GVNM2MQyyuDNqR39mGQ4sQQgghSkEqWYzmkahZRXByKkFLPyrTbsSeeR0VaXNY4O72PUYunajLqGq+jO7g0VS2TaD67sOSkgxdunQ5fO7m9M6YMcN/VbSAuKoHyg0IEgciDj6CIJjOjKMTdVYMtkeD6FSMNCMl+F30dzSejPCZ77usG8UK9yGWLY3hM2iGeJzN823xfWfrkzQ9it9Qq0Bn8lHcxt/FewyW0iGSSjVIJjUiwTSS+byLA6/jY2aIfYGl+hM8nxP8PuA2J1KdGokMts8BhOdWgfnbWSyqsnlPKxEzG1LscYBZfs+w0MiNsP238z6qIqchvl+A2H1aMceJ1Xx+62LoVC+JLH4ji9nHbyvbwwkhhKii7GecxAkcK/IDb7MdsUNLYop1+iLETQGFV2URXA9y/+w4Y4Q9Kbhm8rZXXpK89o2sc9sz4uXHxOnV+VzcOvmXrIer8flkBOL4ELGZ11kdq+Bfl1g60nenjkRkIZKeZuTZjtJHVWoOUig/hwJ2l/v4CcVnrtlkPHmHGQm2xt9OgfocxNLh5EpHkjedS9PLw+RVupIP7Ujn8VsI0XMroOAqkzzDmdhNd2K7SOQVQgghSkmqzpHchRD7IdVwp2Ml2pkgpRvdvYuxh33dF0C1R0CaT7XaiwQWA5nZO4D7vMltInLgwDc6W6dOnQ7P6Z02bVplbYtkwXXgPcsskB+SXHse4TyYgEsXPibh0xmhNxrVCLIXRbGkLc66rjkJE6+LpTEiZXfsktsjvpf0GWSTWDOfPVNdzqtzCrPPiNTRecBnn2zM472djuNTeX3tEZ+/IiH2CIsbP58EigO+Q5euE1XbsvC8ltdWz9fNeybW2DUpODib7d4Q4bwnz78Z67qDJIE/4Xe/i67V+0h67WDh0ZeOoVd9FbdzEjSnLlmow36zKwvPtsVYMh9k+yzgt72ebZWITt4CzYATQggRA9uKKQYKUWRmPncfER91iXOCIzViJYOYsjDg7BOKQQT9KgVjAW97NUEYqex5lgXExEaRQ32S9jsolJ7LNv4tI1oKiW3f9D3GDcTy7v3cE+Nn0gK3nt3Mw/ZEggzWJdcQg0+QS4sQSUt9xjZVdRe6iqCQXMPfKGIeQVfvD2hOmYCwOTvBY4l2U+gzn27dK3Dmcp29fci/OBH63+RTO/F67uH8De6f6I5jP8ea2T/It3jF8xPL6bmEEEKItCBVRV4/njXyLBaXZxFAuQ7Hizkf71ucZlLlPxPhyyUT7kYIvoa5vT+n4m6sz641Ik7s7dChw+GOXsd7771XyZuj0thOhaIT826icrA9n8dbxW3DKo6zDb61BJH3bM4XRLm+uEXWKQjsntjZlgXFXxEuXbDei6rN4igIiMk1fGJu2JeUC0WZ0bOX35L//w0IvwcJ3n9NoudeEknvBCwWPbJYYBzDa3+E3+wvEG2bsiCp43vft2FP1Jj7Hev7fTvuZHHzMM9rdDoM4z0tosL1Ip7jNyTsCkkQH+Vb5FSVDvXmJPDOR8xug3AeiS/oep7GwnBdoENaCCGESBQhjvVdKCbaFEeicTNC1nCELs1zj59qxD2JKODK8MWQmTGIe5kJcAepaI5me9VJopnCK1kfNEJo/yW/Da+T9nfE1Xm85jyfyOti6R+xjnO/u5/F+JzfI5Y8FReh97m8Edd1ZK2+LY3XhUIkO/kUZcuuOXEUMX5qHnmfqymuvo28pcs3vsb1iZyHvp8c1BLW/Jci8o7ERc5b14/B0rkTbl73IAy/Tjw1PzC6KhFkkSPazDFiHc8nhBBCiFJSFURej1wSQetZVLZE1GkUmLPrutAuR8zdxfWzEX2X0v13PRXHv+K2z/OYCyM9cXZ2trVv3/7w366rd8qUKcW+0IEDB37rspLukyLsZJsdhQV2G+yK3dzjxwgkP68KbzQOVrA9zuDvINVIemwOiKSxUItu3Sk+i7U6dE88xvNeztzekkRev3jrJXu8RUaGL9EXjpDACvM+/ALhSn6LroDiz7yOPiSa8rGDzkNQrYdwWovtNApR1+i23crf67nvBn6r/u6QZiShtlEFug074WMRfTeynXcEXvsD/PZdocj/8T7mUajgHudxtos/uXxcii98O7B9B5NAP5FO7Ugsp/J4Cgu8zUnQoSKEEKLq055COVcA9xHHos0IvnuKefdFPlvY4EgIERtePFhaa90iXFUy6XL1YqasGJxljklBt5Qw7zlSEWRlsZpYeRiFuF/7Ps8MRIY/Ef/1DMTUfVjT/Y21wMEY3kNz4sq7KZi8xSfyNib2vI/1wAUSeYVIWorUaV9uHCDvsBgnQq/D9jrE3gnMUF9HzixRXbQHKJBfzvMOZT98ISeXC52OyLqYnEkvCoGupLN3MmJxooq83THp+zi/OXH5D0l2DBVCCCFSjqok8vrZyWkpwpHXLdgIK60MFrCzsdT1uvT2IYYtJ9i4GuvnBxCtnmF+xbeSRgcPfrP+bdu27ZGuXo/Jkycf+XvQoEF2yimnfOsFe/fx3zZF+ZyOzWpsvxos7B8hOHyCisJ0Wjw8g8XwTyNc14qE1nOleNyT2M6bfZflUfCQz/f662IEPD81fAm5agEr5AO+BF0Bvy2/yBni9if4LvM6571q0JosYjyRvzbn7Xkfn/Dco1lUPEzgP49KU5fk/TvfG38iyuNTusY/57daj86KFmyDpxB8t/jucw6v80Ne+8u8hrNZ/BQg6K4LJCX7pOAipAHbugvW9O14b5G6dHaRHFzEb3YV21ULfiGEEBVBmBgkhHDUi+PwF1jNfkDcsJnL/DQndl8RrThTxMQh5rmWlqP5/PyWz7F0BtdLQZvQsO88WYoAD/AbuIhtWtdXTJpB8d69vvEcG3337UIcPpnbxhL/dSdu9tbWH3B5JuvAA3SLtSTO1nxeIUS6coDi6TW4Dl5KzuQS8h4fkS97g/1posgmp7ISQXcwp47kaebT2TuRPGo3rvsJYu9bOCR+ySneBgU/ORTwd6cQ6eUY7+flNKqRk92tX5EQQgjxDVVV5PXwz4LKoGuwJYHNMQQFn/iSCfW53Q4WvwuxUrmO898heDxDFd6y4BPm5OR8S8T1i75t2rQ5fJsg3n28206cONGGDBly5O8U4xOE3lpYZufwWfTy2e+OJ7BLB+YiXrYOzIarxizZr0uwAI6WMGpJgsSfJMnyibo1EHpjESQ/Q2xtwGM08Qmb23nMDC7fGnhN3izVWoHH7Mlz55Os/Tf/f89n+XOsL4mYzW9zHoH+TVzelUVHcZ07h1gozcD6aCfv4zgecyeJJq8iNoR13YMkmrx9oft+DkGE9pwA/hHoAG4eoSM4WWmNbV5fTq3YD0biY58Twgz+35ki71MIIUTVYhWx5J8QDFcgGA4kIbqLeGEWx39P8D2deGQ58ZUoHWE6MCsaWYQmjkWsdRsE1vyFzOM9RIxend+QsXboiCNO9TisQ0/yFYGuJH6uy+N3phjTeLwWrMMl8goh0hnPcWQ9Y+IuxgGvFfvhC7BynkMXbaKOjznESO55x/GcFzMftyvF3tMRe+ci9p5N1+0lFMCvwjluVRlex2U83wMxzn1vRZ7nCo5PL+D4srYMr0EIIYSoMlR1kddPBgmhbJI+RQQKNXz2o2ECGG+w7k6qmJfS2XsVgcj9BD/P0vm7zv9EQRG3devWUa8LXu7ddtiwYdaqVasjfzsmTJiQ4E1SrqzD/tZt3wFswzUEj/dgDfMwFd/pUIHnqte/i+2NR1O6T18s4b7RAvpmWKj5Z6R8zjZvTCKlqU9YPpFChvURLHc/RPhsQjdwBrbIRpVmBy5vE8GmZy8FD8cELm/PazmB39tc9jlN+fwbUK3qCaaFbIv46gjHAAAgAElEQVQDJIW86ogTWNgUhzfXZS4B/48QdQcgUjdCuPW6ES5A8HXzx27kshDdvU243ecscD4LPG8D37ZJRo5G2O3A+zyH70rtCK/Vs7lf7rNk/lwzDIUQQlQyB3E5GcDx7OeIUufS+XEKx7d+xCfziBW6c2wrKW4QJXOoDNsoHDiPFbmGfBOPuoLCthQ4xrNeL/QV6S3g706Bxwj7RNdjiHs3+v53z38na5Q/EPOW9Dk24LPzW213pCOtri/WP0R8HikmFUKIdOQAuZSPmc3bhg7b/hTkbOTyGcQ2iRqdlItA6poN3qHA/VKaEG4lhzSL552D2NuBsXe9Ke55kiK8dTE8nx93HPgxx4R/BK6rx3HrE18jxIkU/o0kDxtGdHbHrJvLGK8IIYQQVYJ0EnkLEae8Repa3yxKL1A6wGWN6XYrINj6giq6hVhYXcPC9wGSSv8kAIrY9ZabG0th2n/ftmXLlv/1t+Piiy/+r9u+9dZbpdkOFclyn1VvVzpA/0qH50XMO30FAXRBKRI7LUkapIIgNZPvTQu2QxaC94FiguImdKK2IKj+ONCVcir393/vNmKfczvfzROxOa5G5aMrYvhBhIrHT0niXIaouc1XmbmcbvZ+JFfnBD6rA9iy3RgommjN7W4lWWU+K7fedNs4wXeq77EiCf5nUN1aHCG6lr3k0QGEzRN9M4X3+ATx45gVnOt7L2FskZwQfhfv6bUI38tu7A+SjSYkvc9lUdiOhc9REV7nDsTdjyhqWcl+rqRZeUIIIURFsZcYuxfHqzyOV28Qq3fkmHwmicdziCs+p3hNlI4MYqL62n6VxilYZD7B51CShXURtzuTRPhO4nlP5G1NXB+MaevxWXsJ8gKKmAdS3LyHcTMluQIdFYg3wwgVbs3w/+ydB5hU5fXGz+wuVYoKggXsghqqKEVB7AiCShUpauwaW0xsUZOY/I0ltthiS+yICoqKiKgIiogIYkNAmigqve8uW+f/fOvvmuu4ZWb2zu6U9/c888zu7OzMnW9m957vvOe8p8B3/Jt87jpCCCH+x1YEzK/Ijb2F6NqJ/8MjKFCfitgbrdNCVRSQQ1pB/qMrHbvdyF/9yP/yWcRWB1PM3wOnhrkU6s/l2KPhCOK3sb6iIyM3O5jz33OI3EYB/ygacG7gXHYXs4wf4fiEEEKIjCaTRN7ICuQwXWueQOg2xq0ILHpi87zRN4toNzoCX8NWpSOiVjdEtPEEKZ9EaTdSKQUF/ytG875u3br1L35l0KBBZdcvvfRSdZ8ukXxM98XddBW6xNt9CEtXmtmZCFIPUkFYmW1xJCdgyeclLWYEsfYJwiVNxtDN+2c+b0ciXlaUOGnHa9zKOk3ENsf4XLagO9ovjOZjizzSJwxPQ2jvhLhakV3vi9hKL8ZO2xNr5yD6Xkql/vMRSaIwG40QgfYYLJAP5OudERXPodLzv7xnng3czIjjOJzjDtGB24zPUWV4CclWCM2Dua/XlZrDBsazhnvLNx/YmxuXxeZmR56zFQJzGypZP/F1xU6orQ9SBDkI2W14b0/guHcp575FvL6vKUqZwvu6VvaIQgghkpR3OP8Wcnh5FMt9i+D7OoJvB5KSg4khok00il8TojhwSS2tTaYXnIUp2PyR+HOTz92mIkqI89v5CkLDvnmO/XBs8XeA1cXV6gffbWspopjG75/APq4qkTdUzjHW5zH8Hb55cosRQogq+ZH/xbNoDDgNQfV8xN6XyGd8FuBoiiLOGSvIz7jnO9Un+vak+H86Ln1zuE9niom+QOydTb6hsu7a8zln3B9xe31fM0BT3+070zRxhW/k283kFI+RyCuEEEJklshbHp7tbAO6QvcksNmPQKHQJ2a1pep4JZXRa0gg9UOAG87My0eoMAs8MVJYWPiL73fbbbey6yFDhpRdjxs37hdfJxEfkCD4F2vlhL1bSc657lLnR/1XMzsWy5eZUVYmriG4q4f4PjuJRV4jYTKYObS7kzD5opL7b+ZzdBvJE/+alBJgf1lOVf6jJDxd4DwJYbMOa/QDm4ZIwoive3KfZyKO4xEC6EkVzF5ZxvvWH7H4SJJSz3EcX3HbETzGZ/z9ldf93h6Bui4bmjejsPQuYR1CvM63qQrdgN1zT4T2Vdzfb8HchOuevC8d+H5PNjT7IHrPR+h+2Zc0qy0aY5HUjuKJ7nQvldd1s4Uk4XyE3dn87WSCTboQQojUZnsFcYsRp6/ishgHCyP5mOlCYXUoIW58o5aeP6+WnjeZWEoCvzOdtVWRxZ701Yj1W8rf0AkUfPpFXvf9AREjSAq55OFYNYnCwR+qeP7yOo39oq+3V8mpwGFGCJEchKJwDhA1Q5icxffkfJw7wlDcTUaTp3iNYrelxEpB5MJKKKRbSaH9wczB7UZzRidyVK/7juswn5PEcsRel6v6ppxzelvcImYgFPvJJ1exd4Tb2wM8zte+27zi/cb6PAohhBASeT12oNJsNkHNHnQe+rvbtvpElDwEEhe0PIGIeSYWxNcQtDzK7esqf+r4KSr6KX/VsmXLsuthw4bZLrvs8vPXjhdeqMrltsZ4l7W518wuQXBzQeBNBHDnI7J1RmB8GWGwsJIDXMlneAsBblDzSYIgi2Pzb5KKsf+9FHFzHIUDFVmWLeU1FiB4FiNoe7yK/XC9iN/bgKCexTzdenyWXyBZs6ac3zFuv43E6FrffcK8f/P53Ncpp1q/lNdzBtY9JyK0/sDjbUDQPpX3ehVdyJ+wRl+xMcmia+dinmcUds91K9lweomjHegO+CuPn8dtA3iciQjP3nqEuM7mfkeS8NpMV/5GHu8d/tY78n/g0QrWICi8zXVJxOc/mwKB3yDunkRBSgsKVSLXZA1rPIdE7TLWRTNrhBBCpBthuj82c94W8ePFW7VVDJZqc3lDEddBUEDyfBhxXlWdWq1IxD8TcfsK3sc9uY9/dFF99rzvV/CYnltQ6yhE3u3l7NlWESvX83UCN6YjSw4yQiQv+vtMPryCtkX8Tz6NBomhNJos5H/5pADF3lKK5r8jj7MfDQtHIuruT45kMueefejoPRR76TNwO3yN3JLXYDOahoQHyinIKyQPMzXC4W92xP12JKeYH4XjWxvOo1soakqmnKEQQggRGBJ5f2IrYlk+a7KUquU1CCst2cB3RZxbi+C2ESHpM6qdXYBzASLXHQgrYwiK8nwBc1aQCQxP7G3evPkvvnYMHz687Hrs2LFBPV28hOnIvAbr5svZ8N9M4OcExFMQy52l8VFUrr9HgiIyAGyLXct3dAVPj8JKrCZpQXV8Hd/77lmWDeAz9g6VmBXhdaeW+mzQ/H+zRdwe+Xdc6hPy9uTnYYLmEm4rT6As9c3NOiDiPsU8366VCK5eQupo3p/P+ZvJ4XcLmam3B4UQxyBCb0cgns1j57FROQLb5Dp8XRH52Pm0YObwJr7O5jU0wTp6JkLtDr7HKeG1NGUj4XUv5LMeJRz77vxdf+ib9ZuoKudS1tvrpgixkWlJJ8YRvu8jKWSz9SV/O1NZ46BsnIQQQohkpCUxx9d0h4j48eKb+rW4hqEUEhpCCep++5puKhczP13J/bJx0pnFftbPFvauu+H8Mp8Y04i5WxAzVsR2X2K+MjYSL5cSt4eImb1xKbvxuztRUFlZEa8Qovbw9r4SepOTtVxWUMB/EoJre65PorD9ffJNQTlj/MBlEaO7+tDV25m8yGo6e58j39OenMXFFPnP4Oebyfl9QW6wPNZX4PbmUR+BdzCvdUoF9wuRa7uKY9yAzfX4CFc3IYQQIi2QyPsT/s62YkRbb22aIxAVIqzMZKPqZpfOZQO7gWBrCkKRE69+S/W16069ExHLL7x9E/SLKC4u/tXXO+20U9n1iBEjyq7HjBkT9NPGQgndpw1YkytYk7sJQh+hEu90khXXEhT+g8SFh6sSvIGOxpsQspKt6r8p1Y31IzZJxdivFSA4Nqzicfy/G5k8CleSUPJ+L1TFbdH8XjQ/MzaExXS/vsffUDtfoq6YZNFHbBIakYzyBOzfcF2CyPoq1f/tq0g0Fvu6nvfne+/vt4Sq1yfYLLTzzQXz+JH3I8zv7USXQZbvks1nLMxjJKKL11ujfDZku2J71JbkdR3E5kbl/F4+HRfz6KCex+vaWsFzCSGEEOlCiGRiHRKQmvlZPbwNRW0WT+akkOW2J24WBbwfKSARfgIx4aoK7uf2HIeb2e/K+VmxT6QdhKOSR30KH/3J7mz+nrxYOouYPUQBdNMIe2ePtRRmFiM0bCUur4Nbj1esuSsuVwlzuhJCVItiFWGkBJ4Quoz8wAFY9venc3UIXb3vcR4Jqnt1DZevydUcS+7zCPIVa2h8eRk3sYO4zxlcb8J14i9x5ikaMu7tMvIdf69kzJvrOP4nudzPOb6rOA9dr0IGIYQQ6YZE3vLZ6JsXVJcA6kcEpyI2uWdQPfYuM0hn87PFdJd+jkA5EpHqFV+XZAeq78K+yu+EiJQlJT/lZ5o2bVp2PXr06LLrZ5999uf7lJbWqD5axHo1oPv5SjYSD5KUex+hfCaViN2xhvFEXiewX0fV4G0Er8lo67aKisVIK+YwxQDZFVgmpzrFPpvh+vz9hCNefx4/z+LzkE3AXt/3N1HA31apb2ZuZXjzsyPFYK+D2SsuKE8Y9zY9nvgbKeB69/e6aoOeJeZPonrdx23ZFA1gI2KI48vYINXh99Yze3Aun6sVJOu0ORdCCJEphIjJCyn8E9Vju6/grqZJhPVxosljvbYkQBifj5NMTwqGy+MkHI0iE93ZCK85HNchiLRriTXbIAD791Gdsdt8hTFEX/N5yGZ8yr4k17dEPNdMxqW4Ism+7IONOP8zYvBePOeXVXRpCSFqj4IIBzqR3GzkshDR8z1c1Y6i23UIrnnTffnKIN5bT2ReSkfucYiqvXCI+IbcxVucD/ZHhPaK+g+g8GgWhUSlvuKu8o4vh5zqEJptnMvFHxGwy8Pl2f5AU8UtdPzuiug7lNzjSn7Pc8srTsFxEUIIIcTPSOStGK96fD3VxvkEIV0JVJ5mwz2aDfHLCI7L2Ax/yNfzCEK8Lt4wgvFBbJx3QZhaHusBxoIn9u6ww09OtZ7YaxGCr0V0BCcItxbPIuz9hQDMrdl/2VSsxAbmY9bbm8GxM9V3PZk5+4JPzPK6LhN+8FGyuZwEiIfftjsdN1CVdfxWVtBQXqey8fdSneesrBvaIt6Pyn63ss7pePA/b10SZx3Z/PRg3k4O1kZeh25TEmT7sGl6nSrZb7BJ0oZcCCFEppHj6xB5Q+9+tSngUp2ZftWJl8IplmjNZ/+xNQEi71b2nV3YM66N+Hl9bDMvL+d33f50IA41YZLe3Uh21yPWjOzK9cbh9OA5r/c53YzGTWaPcvY4Syky9PZp/o7hFVxuYU/9chLt14QQv6RUQldKUuIr9p5JN21vBN8LKQaaREPFHM7xQfwf3sw5aim5il4IzN0QcpdSkD6bfEVrzk1HUXg0l8L+9eRCpiBYe2QhGp/ozAk5L83jfDKrkuPyxga4ub/3c+7JJla8iFzKSu5zNI0lriBpGrGPzlFCCCFSDom8VeOfY5FLcPIt1y54Gk6w8AdsSl4mOFmP6PIiv1uCkFOHwGE0Myt29lUzZyfaGs3r2m3QoMHPt/kFX8czzzxTdu3N900QeYi6DejMvZpg8xmSJUWI4Ku4b2OSDi7AexiR3W+zfTjVea8mURdjVYJbum+gynv9la1JRT+LRbis6r6V/Tya9yNIETWHJFtnLsexGWpFRetsNmHT+X+zkSrYQoTvh9hMqdpaCCFEJtMOIWtOoosmM4Rs3yUeQr5i2cIYBV9PWK5Nq+hYqePrBEpEB/InvpmLkZ3qp5IkL68zthl712dJuPeng2kiceOScuYSLiLh3oLnmk58XELyu1kF1pgl7M+OpnvrZd/P1nMMI9g7zy7n94UQyUEjzqep5KYg/kcxjSbfIvZ6XbY9KQbqg9A7E7F0XUROLV5yEXsX8/hdOR8c7psXPJ/nXIjY24vu3m7kM1oyHu92Xkddfm8UXcI55FafjOI8UkDX7hLfeIBSCubzfWMMnNj7e0Te5YjPH/Ia1qdYLCKEECLDkcgbO99yst/ks0+dzqa5t68LbwLVZbm+Z2iLqFmHzXNzAgxvg92MoCPhczT9Fs116/5yRGmkpXNBQRBxX7lsZQ5vA2ybryUZ9DxJnh1IXqzA4nogQd1jBILZrGVLBOD9sWxZlKgDFklLiI1AaQrMcKvP37r7P9GJTVcbBN+mfK7dpuQD/t/4C02aYVk+l5/nVvI8QgghRCZwKqLVDBU9BUIjYpId4nywEJ2epVzHIhasZy+USu9jY/YjzbgO2uZ6I8nx9nREecnpeiTIr6rg9xYwQmgVRYFHMd83mwT4xHKO9TM6pHZlf+oJuiXEpjtTxFweL7MP2xbRcVzIcy0irtVIESGSl7q4rUnkTW2K+R++CkG0E2OgXGH5eQi/n5HHnEEBeRBJv3zE3gUIpd18nb2n8fzzcex7keL2QxFz69EIs4Zj35v838HkXV/iXBZZnFQeRbwufxH/XowT+BrxN4vHP57HzcEK+njyuH/SaAEhhBCphETe2Ims5lpL9+iXbLQHMIe3M/MvXieQ8GaUhujKe53ga0GElfN+bILz2YQn3LIsHP5lHqVOnZ9GjvrF3vz8hI3l2sBMDLc2v0PozSdREKaqbjQWZWOwXPGErZYkK1ojoOdUYLkr0pscNi7tSDwlo1WjJ0IfyEamCxWpe/F5/5iN0HAsm5dFWBV5tEAI/qaCTgohhBAi0ziVmPpVvfOB4O0P61bzwUrjEApKU1Cor8v+o2EC9yEziR3393UwHY+oWpHo+p1vLWfz/cEUFi4ox/rZSIx/x8VPmP1sqJL3ZytdWuWxmU57IURyUyKr2rSihHPEW/wP7owz3r7kIrqQT5uGKPpNQIU4ReQ0l/DY3ens7cJc3a6IzN5M3q8pZO+Jy98avndFVP+hyeOrGI/Bn0NtRlOJu76V/Ks7F57B4/6F3Oup2Ej3Ij8phBBCpAw5nMxCCuaqRSkBzL+pMhvCxvuPCDoTsEqZT6BVQBdez4iKuXVYPq8mMGqNCFqjYo4n+mZn/+TS5sRer6s3NzchjYPu9d5HR+85VM3lI4S7rt4/I2w9RnW4R2Pu35r7v0XXbyQhnxW2OjzSj6OxH+rIZyCZRN4QHTEd6UY/hg7enZhRM4n/GVNJ1IVJwJ2LXV4ku/L9DynQsSyEEEIkml04b66ViBQYXmI03pjZ/V4TYu/GMT5Oc7p5KhMTk43SGijKXU9C/BDiRRcDnkJiuiL86+d1uru/lZMReeNB+yghhEg9SjmPvEPuYQ9E3p502h6FGDuVoqJlAeWHS3Bw+I7HP4xuWq+zuAcOZfM4ty1BAD6MAqr1FBDtgrtIrGOqQozD+q2Znc/IgBd4rNPJz1zNMYTpQm7HZUMUjy+EEEIkDTl0kmUhOGjjVj2KCJq+JIgZTsDUFbH3VWY8GAHLKr4O8V40xLIkDxGnua9rNeHzeiPxd/h6Xb1jxowpu96yZUvQT7cSG7D62KT8jXV4h2rCi6jm81edf0+39EBssvcicfFWhLVKXSzOcnhvCnmv9HlPDy7FKn0mHbHJQDaf146+mTRdKVJYwGUy1aurfX/b48zsYjMbhEXRN77XkkXVrfn+dwghhBCZjGc/O7cmxp1kIPGIrWFi7xCCbSy/34B4PScFi9kSva94E8ej3SlwXcB+MVqeozjW7ZtuS/CxCiGESD7CxEoLubjzykk0qLhmk2MpNH+TPMWygHKQYbpzXRPHe4i8pyLmHksuZw650rfJ5TnXvoPM7BJmyr+OK8WHPgE2VEmBVRMe9zSacFxe8e9YUx/O+dDIufQjf5tLPilZckpCCCFE1OQgKhYxaL6EKqny7JtE9OQShMxBrDmVIKInG+w3CKo+4BHrEVzUZ+5SRxJWCwhgQoiYn9fWe+DN8B01alTZtRN7N23aFPTTuAq/m0nwjGQm1CWId9t9dte7c3FreBfC+ukIaXewxi8RnHkViK4abzD3/Zi131bF8YjUoBU2Pg9SrFKb1MdyvTM2P27Tsg+biRlYMk/xzSyLZCn3cZ//ESThPKvDHbF7LuLxhBBCiExnEK//5UxfiCQj3m5gFWD+RDbzff0UYSt5DAnqm2O0k5zNHrUjlpVbk3TMjdcVLccaIYRILCvIoUzExvlErJWPR+j1itKXB3h+3kq+Yw45upPpKu7O9Wfk7JbS2XsAudDrON6XEYrD5EnejLCYzqZDtz8dvC7X+gpNJPO5TxtE5OUUPp2Is+CjviYbIYQQIqXI4eS5EYHXExPf932fVdMdpGnEaiycp5vZmQRLf0fsfZ5qsnVsZBsj+rzGDNqvsDYJ8x50QfQtInDJqo3Nb3HxT5qpE3ud0LthQ+AuJi5w+ytC72BEW9fZ+AnJDleRdwEC2g2ItdMRwF2V3lDu74LEpxDUV7J23alQvM03z0qkPnV5r7+upWRVCAG2PdWovSk4qMvn+RX+1qfwfVVzbv5L0cJ5FNzk8D+4OY4Aq+liF0IIITKZesR1xZxjhUgHQoznaB8x1sez2xzuKxBuHcPr3cK+cx8S3x8k6czBEKOK5ibBsQghRCbg8o6P0KhyEpbKPbl+A7H3I9zEghJB82m+cHm8toi9RzNWoAu5nTfIfSzA0awNub6B5ERLyQ2+zWM2p8j+XHJ/C3FKe8pXJB9CPH6Ix92V8+qNvnFayn8LIYRIOXKopMrjwMOcbNtTQbUHHZTr9NZWi68IGt5FwD2KAOZx5vV+FGEJksf74FXLlWKV4roDP2VTX1KbXYuFhYU2cuRIe+6552zdusA/Hkup1KtPkHk3Hb2LENNOpFuyqe93NhKYvk+g18fM/sWajSNw/AHL7Gdres6xSCildMsf6pul8lENLHkOHeWHsREZQDXqJj6rc7EOn05HfrSbhXf5Xfe4D/hu92zdp1Qwe1oIIYTIJDqT0FuCG4wQ6UAWxb/7sA/3k8decBNONqEYXm8hMeSFFB9/w/MkGyGKHCXyCiFEzeIKyR+js/dURN5jycm9SePFFHKTQbniFZC/cYLrWMTeY8irXIo4O55jc92/O5MnaUPB0x9pBMmnE3gEx/Ycr+XTiCL7MN3Jc3wNNG6k2zPYOk/T+A8hhBCpSA6VS1s52dVnw3emr3OshK7HyE2miI1CXwWc8zwehoVzf7p9JxPYOOb5KuTqM6s3jDi8jqptT1mtG0VnYEIoKCj4Weh1rFmzJsinWWxmV/HajzOzO83scoK7cSRAPo34nVIsWK71Wd6eQnBaF1uXv9fWeokqOQCxfn2MdkBOvL+S97URSaELKVRJBPU51h507R7PxsId+1Q+e6/xGY5neHWYDva+Ecm3MBuRd6hoFUIIITKZU0nOvaJPgUgjStmPv1jOrMGwr8uoXowib4jE9oUkyaeQC0hG1EUlhBC1Qyn5lUeIr4YgurahUeUE8mrTEEeDmuFWRNHevZz/+tK4cQgOZ9s4npnkSw+g2O8w7uOKoHajK/kmmmkqyvsV+8a6lTDqbQldxJGjEoQQQoiUIMdnyZzjmwW7GUHRCWZnm1k3qrbmIy5oXlL8bGTuxWSsRlyl2j9IVD1MsOQXLw9CoGzKe9OEzmCvE3VPAp5VtfFi8vPzbcSIEWVfP//88/bjj4GOCnWi92XY155ElZ8Tem8nsVFQwe/lERi+xTp3I1jdh0BxLoGrSA6yCdD/RFDuCiFeiCHBM4EKz2JsfI7BkrtvwP+rdmK+S1eKM7px+0o+a2/ThbuaStLqMJ7Hi0zeZVEAov/BQgghMp0TeP3PZ/pCiLQiTHF1VQXWeXG86PXErU1x7FoQxe8IITKHUIzFIyJ9KabB4n66Yn9Do0oPumfPIuc2FdE1KHu/YtxZ/ouo25vGjZ40cQzi9g/Jm+5PLnUf8qZraRTZl8fx20t7M38jXf28OfDKsQghhEhZcrD9LOVEuAsn1dcRSrI5EZ5Ct+8URMgZnPBrfCZsmlBCl9+f6fj7PcHLg4g7jxF85FFJto33aQvf+5VUJ3buRQXddkTg3JqsgM7L+ynHMHz4cLv77ruDfvgvsWp+jIAul67NaILIjnRdvkiw18/MnmaNH8YWRh3qtc8BiLJH8j/FzURZw4YhmkB7DAneUuy8/49u+W50LFQHz+2gMxuLQRRWuM3vF8wze5UNxoZyOi7ipYTHE0IIIcSvaeGzs410dhFCVMwE9lajKbAUQgiPkIQuEUEJuZk1iLmdsER2hXYXIbxOoOh9JsVEQVBM8fwLOJkdYWaDaUYaTfPGVLqK15CjcfmkljSFLEEMfp840eVp7jKzG2gE8bMPY7imyfVPCCFEqpLjE7mKmEtQjID2BeLh3zmR9qRyazAn0smcBJdLKIubrQQmi+kMdJ29p5tZLzN7itmxX/i6Akvo/PXP7/2GarpliL97I4zWOLm5uda6deuyp/3uu0BHozm78CuwtR6N+H19FQHkCQjDTuS7mjX8lE7gEQiAjyMOrqyN9RI/042ikrGI+OeQdHonyiXyWyJvZp7zKSSw4hV5G/D/ryfH5v4HNmNzMJO/29f4+wvKokgIIYQQ0XESIxreDrDASvwSdXNFh7dOqbJezxEjH5MExyKESC5KZJcuKmGTz3nQ5SoHkndx4/5Oo7niDbpsgyxYX09hvcvDHGpmQxmZdTrXH5D3WUfTy0Ac2DqQrx5DV28XivcjRd6hFA9Ol8grhBAiVfHP4cn1Dc8PIXw1pCrLXdoinPXjuicWTxNJsHwVp22U+Cng+DeBiQtUzkeo6sksjMms7Vo6qI0u67oEMc2oqNuR97TWkl3Dhg0rux43bpytWLEiyIeeii3MA2Z2AcLe3xHKDStdz56lE13RTvT+C0Kc41Gsml2X57nM6uhuZk8gKPrM9k4AACAASURBVKpYoXaoy/+fZ9gQdCfxtEOEvU60uP9dt2D1HStNmMVyDHbPh/B/cB0bC/c5fJO/w4rswoUQQgiRWE4m5n1K6xw4nlhZnW6ueAXPVBSWwynW/fYxe8W9mc0r5xghhEcheSd184rK2IQgOgdh92Sagc7B+WwiuZPZnGOKA1rNdeRG3XmsPU1I/XnOXrghTiS/Fya3up+ZXeXLK3WOyDN1oPBpDTlBuVUKIYRISfwibzji6/XY2RpzZGcxK/M5RN4TuXYnxTN8Fh1zfMKbiA1nf7KQSrQzCFa6YjE8hiDJqzpzwlMbZiotNbPdqLrcDwF4dm2IvVu3/vTWDx061MaPH2/Lly8P8uFfIyC7l0AtDyuWPF7/SGa6DqNz95xyZk252dKLWOMLCEYPRwB+kko/UbMs4X0rYhMwhZkvzoLnpTiP5MEYLeh2pFv3WDM7mqKWHD4PkzimOZrlLIQQQtQ62RRkGcVXIliKfHNh4030Z0dcx/p7qUQBe668FOkqL2Jf34UOKM20FkJ4rGNMmLp5RTTkkldzeZJx5NbcfNzzyKt8ws+fJc8T1OdqPR3F82gUGEr3bj/y018iMj9LXvAoCvgLyGP/BXfKLTQGtGCE3mIVOAghhEhVcio57tJyxNowJ77FiC9uY3gclVvXcXJ9l4TLWwHOY8gk8pkdMYv5EecRePSh2/cZ1jWPRMhKgqqhBE7/NLML6QB+moq0GmfLli02ePBgmzBhws9PvWTJkiAOYyxC793MNM7la9e12xzhtpkvuCuPXObyzsW6+XIe60gsnieoK71G+QLh3vusjqGbfXSMIm99kr6fYhsUTRXmXvwfO5KAfxdun0Ylp3MpmK/CFSGEECJpOIx5+StwcBHBkks317ZqPKondsaa0C2JuE4FtrFeG1OkAyiLwlZX5DpAIq8QwkdJgF2XInMooLt2Hvk613TRm9EafRFZPyC3syxAIXUzFs7zaEY6GbG3Lx27C5jp+yx56kNoDLkKe2mX8zuQho9/6/MqhBAilalM5K2KH7FIe4UT6gAE3/PoQJ2O2DuZTlMRG6vN7B6CkQvoSr2DAOlxugs/9c2MqMM6T0LkdWLvEViVTKyNynIn9A4cOPDn71999VVbtGhREA/9HzNrbGa3mdnfSK64oOxmbu+GcFgVzsb5H3Q9n0cwui/dmx+mmPVastCSgH4qlcDR4O73kO//0RwKGXaJ8TUdw+dhEoURkbNWPFxxREfufwLWPvURcp/jvX+DDmMhhBBCJBeDGK/wqObGJoQQl3i7akMInqVYOsbyHq2mgziV5ix7ry8rRT6PpRRjG3aXORJ1hBDQCket6uQJReZSTI7S2SYfgKg6kDzbAERf55D2OvcJinxyenNo5uhPV+9xuFZ4ncZTaCxox7F45+y65IZmaoSbEEKIVCWI4G0zgsg7nMRPoStuEFYd0xB8piKeiNj4DOsQZydyNmt6OB29D9FVbVgQu26Ga1nnswionND7MFXa82t67Tdv3vzz1yeffLJNnDjRFiyIdFCOi/uxrL6Z+at5VKVfSGfu/jGIdG9T/fcRQWBLAkJ3/TU2M7Isio5hdPWP4G8/ksMJnsvDn2AqiKODpAXvXxeE+hsjft4IAfpwAv8O3L6Uz8DbFFXIgUAIIYRIXg7jyManmBiYKjQm4bljnMcbonCuhK7gWITPzSmYYN2R9WpB0W0q4MaPfI+g04kEuBBCNOB/mgqoRHUIk0f7GmH1HVzT+pGPOYVGFG++blCUktebRwfvcMRbz7ltFkVOkznvNSEvNJz832sc6xSsnIUQQoiUIcgKvUJOmrOYCzuYE2lvTqzzOWm+j5CSr49J1BRgezKDjlNnY3ulmX1Ht68hAnfCgvgFOqkv5r43ElA9ws821caLcIJv//79LSsry+bPr7be7ATBO7Fu/hOdyy4Qexn7Znd7PTPriRg8g66CinDC3l10eJ5uZoeSmHJJqn8FHHymK64b4GrmI/coR+R1RQoX0W37WiVr0IIEY6TYmsX/lvYIspGB92QE/8Z0u3sFEHvxP+gILHy8DuGPsA16mfe3INPfQCGEECLJ2cPM9qG4b6EcVxKCtz+sUw1Xmwb8bv0Yf2+HFOwgq0vXc31i1VQgTPz7O2wtJfIKIYycXq5WQgTIBvKQ4+me7Yfo+jdyxuPJ7QTdEOSaYG5ihN3pPGdvXNw+YUTbB4x4606e6EIE31fJLb0VgzudEEIIUaskahPtOuNuR2g5kZN5D7pMz6Bqy+vwXa2PQNS4+bt/Idg4k25FjxKsnD9h477ad9/f01ntOnqPpuO1IivbhOKE3n79+ll2drZ9/vnn1X2qAjp5d0TQfgBR9m26QHfH2jkbu+spVTzeUQR33fh8usrDP9ChLpG3atr75rGMwkbRHxTfyXtVlcjbBSH2Kb5vS5C+K++xm7t7A1bkflYh+Hscyuf9REReo7hkEqL/OP5XqQtICCGESA2OpZjsXRVnJYzqzsV1cVVT9pmNY4yzmlGcmZVC8VkJe6/iFOp+KyaJfYmvM14IIcK+ixBBsp78zkvkZ4aQf/sbbnAT6KL9KOCGoGXkDJ/meU6i+P9Qckwv0iAzh6aZE8lZD8ZWeiJ5ROWthRBCJDWJrpRey8l0PCLvUDorzzez33LCnMrJPBAP3wxhBsFPZCJhIx0OLgBpw7wJd9/PWeuLqEzrwwzbJxEyaxQn9Pbp06dM6HXMmzevOk+fhz1wQyyqnZA9ko7yEro4V0Uxa6o7AedmhMKxdI1exufYwyUXV2hea7nMp/igJX/zXRFUPWYTUFcVIO+HMP8m39+J9Xg9HrOpb950JHUI2PvyWT+An6+g230S/2/Wlv/UQgghhEhiDqdzchwdRyJxVCfJX5frejH+XkNiwOwUEnn9okiqWE2XsvcupJhyV/ZLQgghq2aRSLYRw02iEH8EDpA30HE7lQ7bcQF3lX9rZneY2bPklk5FZL4Bh8Rx5Fg9sbcvovBAGmQmkp9aoU+HEEKIZKSm7LDyEFamMeR+GGLZqZw0P+JkPhtxTpvMqiny3SOLeRJrEHA/oRMyGzFrC13V0xB6z0LIdF2O/0XQjHX+abVwQu9xxx3308FnZdncuXOr83Du9f2RxJD7bD1GsOjE7avM7Bs+WxXxG4oRGmKD/Rz3u4Huaf8M2b+SxHmEdatKPM4kPuO1NiaIPo+uai8JeyF/7+9WsSa78/nuxOfZVVuewGP9iWKR1yN+pxX/U3ox46U5t89G3H2Z45P9lBBCCJGa1Mc1xDi/KwZLXuIViEtT3II7LwmOIVq2Yo/Zjfj5xdQ4bCGEEGlAHsLpO9gon2ZmnWkGGsZ56SPE4O8DfLk/mtmDiLp9yUkfi/vhavJGH5JTPRh76QFcpuBI9xZdwEIIIUTSUNMzj0oQWtzlISww+tBF2Q3btUmIah8yMD+VNsu1xQGIWpsIUFxH5ac+QasJF2fvfA2By+8Ry3pg0/UUFXM1hhN6HUcffXSZ0Pvxx9VyRHb2L5cjMPZFhB1BtV5l7EpH6P50oXoWwVfx/ZkRRQcLEC97UrDwuAK8X7GVRNEfEGy/4Q7LmSFdVWdGZzpyx9Jd4P4vHIiw+yBWPj9Q3NCert5+vO9ZdFG8TuHIBKot47UcFEIIIURy0IW44Bs5ciQ9nlAbq2CbygJvqnW/5eFi1Jt9uEReIYQQNU0+nbJTycmdwOUcLm8gBk/y5ZWCYA3OhhPoKB7K3N4LyVO78+P75KQPIm99PMf2ITlVd9xf6BMjhBAiGahpkdfPdwg+T7O57I/YOIBuvx85cc6hA3V59A+dUYSYc5qP9XI7RK01vkVojoXtCyRPPqTL1QUtZ2Of7bolb+M+NTpvYsuWLda7d++f7ZtnzZoV70OtIih7FhH2YSxf1lVwfycI3sfa/NEn8A5npvT7BH1+rkfovRjB/FjW7ZWI7upMZxwi70kIs17SLhrrvf24bktA783P9fgBu8ZjeX8P4vbvue8EWTILIYQQaUcPZrY+TWGjEMlAMfFtqom8RXRJOTpQYKm9jBBCiNrAub99xcXlJM9lPm5fLtPICb0esNi7mbzzFHJMbh6vsxy8gLnBLyMwf4oI3ZcuYxeTjqIx4Q1+LoQQQtQatSnyeqynSup15smehI1wT4Q0w5LNiWgfY43h0YIq5Bq1Gk5CFtDtWIC4dSg2Ih5FiGwN2cDvhch7HyLaNdii3EsgdR/rXGPdj07o7dmzZ9nX1RB5DZtgFxA+T3D2KJ235Qm9Awncfk/BgRG0PYbQfR5W0H6ccHg31sHOunkQovI9VAJ+VZ2DTyPc3+pcPlv/4bPpCb1ZFB4UVpCkfY2ObFfYcT+dwcbfey8qLQcz+9foXJ/Oe/5pOe+ZEEIIIVKfDryCqRQ3CpEMePusVBwJ8iOjaTrgpFPZeBshhBCiJnBF/X9jtJzL151MY9BRCKtPkK9cFuCx5PKYM2k++i35xHNpRJqKyHwb1wM4nn/Qcfw4M3vn6BMihBCiNshKolUv4CR9HydUd9K8hc68rmZ2M4Kd/5gPoJrKo16SCNc1SRhRq4DnXIKYa6zVDghmO2JB4roj92FmryGkXcEMjOnY3jqx7O/MoKgxnNDrLr169aruUy6iQ3kpMzbu4fX7yeF1v+oTeAfSzRumI7gyG+YvCOauJDlyNcUKLghtUIufh2ShhOC3Nd3lfnZGSP8//oYjuZn35hYE3t3oNn8aIf1iROL3mdF7Kp3Y70ngFUIIIdKSfbFrLgy4g0OI6uL2VI1StAt2PQW/LUlqCyEym1CS5QhFZrOSXN3pdNa+zai/h8i9XcZYryDJpWv4dzQWPIpjx+k87+9oCLmTnKFrRmpFbsvlv26iYUl/R0IIIWqUZD3xbMY+6s8M3R+F+OZm+Wb77reCE2pjZs52pdsvFHG/TCLMbAhjTdyMpaYIvx0RwT5ijY3btmNx6wKXG+iMvg5rkjP5/RrjsMMOK7NvriafIMI6C9+RCIY7+B6yFx3PF/J3cCEiYlPsmiNtmstjE129pyAWt0WEvDei+CBTeZzO56siZqw1oYjjd3RCR7KBDv32/A+YjPX2CdjhPY+NzghstZeoo0cIIYRIaw4hzppGh4dIHJ7tcKrZD9cW+xPbdk7BY/eS2VbTxb1CiKQlmvFKQtQkq2kSGInb3jTymP/C2tnl73YP+HhcTnQWTR0nk/crJI/1MDmu7TQpncVx7Eb+yuWrbkXsratPihBCiJog2auLirGRcna4l9DNV8zPsvlZC4SiznRr5iAotcrg5IQn4ObQ3byMAOVzuh9WEaAY9sweP9JFeSqiZRuCqScRi2tkPbdt22ZdunSxY445proPNR3xdhPXf8Gu2ugwDSH03ostsEt0jMY6PBa+RFC+iOc6l4q+i2taIE8yVrMOQ+je7cLhbcUG50eslv00xbL9X3wGb8JCbim3DWadx1DZWWOW4kIIIYSoNQ4i9p9EMZhIHGGtbUzsyJ46VTthlxFPd2N/JITIXErJE+k8IJKRNeQnTyf/5mLCPWnWGIObX8uAj3sbDSTX09zhuc25BoRHuL0OXztHymfMbCdE4OfJYR0rtz8hhBCJJpWsjbf6ZnOGEHH35KTrTprfmdmHvvm8O1JJVa0BrynOZl7/Ruy46lDh5p9dsZnq82I2+PWYp3oOVWrXEcwcgth7D4+VUJzQ27FjR8vKyrK33367Ok/lLMguxWblKj5DzkrlDTpEr8Uy+EWE3g/ifJ512Ld8Soeq6z5/wMz68LjvZGBVbDaflSwqHztRcbmeKszmvpklrRB3T6TLuhm3z+S9msTsaXXsCiGEEJlFE4ryHAuVfE44XhFwWGsdFfWJeVM1zvf20N0YsfJdEhyTEKJ2KJbIK1KAVczrfY348K90zfbCtXC8mT0XsPOLy0PNZWyb69rtj9h8NI6Sn+A++Th5xt7kvC6kKWkKou9UXOuEEEKIQEnV+bXZzD7aiU1pY8TKdb77LMHSdS4WGbtg75xJAWsRAq/5uqLr8X0d1m0ZFW9zsXLexvU6ApRPCE6uwsq5BwHVc4ley9zcXGvXrl2Z0OuYMmVKvA/1DJ+XB3gNm+ne/QNzeDcxP2NTAIc9CzHSKdOXY+3Sg7V8kM9gpnAChQKlrMFnvO5SOsq/IZk0EHH3MD6XxViFv0s37/e+Dn4hhBBCZBYHkLxbrnm8NUIJl4JqPFlWxHWsv5dKNGNP/VEKHrvRGTWFv7G2FFcKITKTPIriJfKKVGAt56wvEVWdoHoEuafB5JLGkRsOikIaO77gsU/l0guxdy650udxFjwUpz/XBNLPzN5kNNxEib1CCCGCJFVF3jBWravoCnwRkWgpQl0W1rtrsd9djNi2EXFvWxTPkY6sQCAPMXdpR6rbnBX2bGZJ5GGBspzX/xldEx8xn3cAQdNhiL1fJHKd8vLy7KCDDir7Ojs72954I+68wyPM5L0DS+ptHP+9PuvqoNhM1/NMPn9XmNnVBJyPYT9eFPBzJiPtCICf5vMzl2PcAQG4JwHxvty+nCB9KnNWNmiDKYQQQmQ8bRj7MD7DiuVqi9XsoTZX4/mrO+IlleK/nbl+p5aPI15KfeNTulMYm6l7ZSEynTD/vzWTXaQS39HYMY28r+uy7UvechCiqoshFwX4mkrIk96OqDscEfdIxN45NC68iVNiR8Te0zm+18h9vVbNeEsIIYQoI1VF3pKIE+EWBFwvGN2bzl132/F0sDqr2OOY7zmZk/zWCh4/XSnmEqK72a3b14hvLkDZw8yGIr49gg1JEZX846lEO59ZE1dgTfIQIl5uotYsP/8nh942bdqUdfW+/nqsI3PLcAmM++hedrN57+T1jwv6eH0sxhp6Fl3lp1HJ15lAMN2txN+gg9nrsG+MDfiRFAvsxO3vcZlMUYESS0IIIYQw4tVOfD3PzLZrVRJOMXFzdYRW732KtUsll+cuqaXXHg97c8ypPG9vMYW/x/J6vkyCYxJC1DxNyKOloquCECtxz3NNQEMYndafBpX+iK5vBHyOK6UA8Q6aOYYwhuw4xiB8Tl7VjYX7yswOQhAewVi8ExGCJ9XEWDwhhBDpS3aXLl3S5cX9SGLAJST2IUBdh9VrFha6Lamu6osdVX26B4Pu5EwFNlGpX8imfm+qzZrTZemCjRZ0U37P68nDHnsmSbfjWMtWCOoJ7a4oLi62Fi1alF2+/vrreB6ihI5S974fw2UBQneiKCFx8jZdEbsTzB2L2P49YnM6sobPjOvAGWZm15vZxQjdRQSyD5vZbWb2egb/LQohhBCifFoRPzSiWE92zdHTCleVOREjbaqiK+49r8XY9TKQTpWnKeQ7hhjv9yQuH43CycYV5+5lZnfF+Zpz6EZ1e78ZcT5GrNzM3sLtP++uoecMmq28d91INgfZ7SSESB3O4n/ZPbKSFSlMHrHPWzSzhHHV60eMsxvuckHaOIfJ683mPPoN+b4e5E27kn/9hHzqYnKDR5N/PYhYd3UGNiMJIUSV/PWvf9UiVUE6ibzFvopz1/r5LSLTckSlFxDaVtNReCIC5QEkBJZniIWuR5GvSn4D6zCNmUyrSLAMIOjIYXavV13/A5a6SxHOB1AlV0SwkrAuCyf0Nm/e3HbbbTdbtCiu/EMxQVVz5mb0ojMk0UnD7QR80xDIu1Lh1xF7mXRLWu7A2rqN4o10MrelEOAVbG3up4N3Q4p1bAghhBCiZnAi5bXEUPcS44voiFfk7cIsu1d8Nr7R4Im8T5JAPRZh/rIYRF43xmO/aoiltSHyXsi1c0S6qYaeM2iKKfg9gaT3DPZ8QojMYiTC070SeUUakI9TnCf2emPr+pLD3IW81XcB5oLD5E3nIvYu4Pb2xEU9EYPnkJdcxnH05hzsnCebEjdt1IdQCCF+QiJv1aSTyOtnu0/ELOFkvpaT5EecbNfS7dsPwXcf7reCjW6msZo1yyfgmM783h4EQQexrkvY9Bcwb/Vtvu+GaLkf4u+qiPULbK5LSUmJ7bzzztaqVStbsGBBFL/xKwpJXrRCiOxK8Pddgt/zMEm2d3m+ZgR6K7ktHdiLBJ2z9b6Bv69d+aw8ZWa30uHxGZ81zdwVQgghRHmESHg5B5SXmKkmoidekbc9M+zGxSnyPkES9Ui+Pp+CvmhE3nPZk90RZ4xYGyLv8RS9ug6cv9XQcyaCxrzvOyHwa3yKEJnHSM4d90nkFWmEyzt9gdj7CQ0+zTnn9SOHuQPNLEEVE4b5G/qc5/2M3LR7rqPoLC4gRnsfEbopsdNxNCrtwpjCtfowCiEyHYm8VZOqM3ljxT9zoYgu3zuYizoaEfMskhOu4/dVxMtMmvvlD+KLWbM/0tl7HpVuLuD4D2LdZwQuKxDznCh8NXNnP6c71qMtHb6BCXqFhYVl3bxDhgwp+37cuJhH6zq76j9grzaE2R3n0SmSaLaRqJxBYJlIu+iaoI6ZHULXd2+qExvxmXI2zO9gzfytOnCEEEIIESVNcIopoVhM1AxeB2d1OjnrIdLXj/H3GlBkmp1CnaTFJGZT3ZVmHvu/QxGtf0yCYxJCCCGCYgN5qXdwHXFFDSfjOjeIZqDJzO39PqDnDPO848kx9+C5XBHj2Tz/JITeuxCBjyan5u57OvnpSQjUmdiQJIQQIgoyReQtb9NdhEWus40dwwm2L0LfUIbmv8mJOFOFKSdGvowY6arwRzFXywUkj9GRuYH1eZUE3LkRAq9h++b3Vs4JIjgpKiqyli1bln09bNgwe+GFF2J9CGfnfQWV632wDz4PAbsmWIdonqrsbGaH0w3tCiT2JKm3BOuZNygS2JphVuhCCCGEqD4743jiCgpnaT1TCq+wM9YCz3AKurxsozC4cRIcS3VYS6FuNxycPpdlsxBCiDSkAJvk22j8cXnOYxBf++JM53JZE4lBg2IzIvIMCqqG07XrGo/6k3t2P/83ou6RCL7Xm9kIGpLccX2MO6EQQgjxM5ki8lZGAfbCf0fYPRvLjouo7HoaAfNDZitkGmHE0H8ScPyObt1bEG+fxmq4mE7Nf5Qjqm9kztNaKvNb0tlbbZzQ63BzeocPH25jx46N9SFdhd7F2Mk5sfJfZnZBhCidSKqq+g8lWbIrhI1eb4LOU+naNRKws7BU/NI3w1kIIYQQItZ4ozXWse9TQCZSBy/+izWGTcW4cTNCb/MkOJbq8gl7kwEkt7em9ssRQgghKqSQ+NLlNv+L6HoCwusxdNmOx7VwWYCNCy5mmIZY24G881E0Gx3PiMFx5ChfR+g9FufEM8hbv02OWrbqQoiMIBQKbApo2iKR93+4CuyvzOxGrDvO9Ym9oxEzxzNAPxNnFHnzIi41s6lmdg7BSH+CopcQy/0W185yrS7dvhcz3ykcIZYHImIWFxfbTjvtZCNGjLAxY8bE+uvLOL7HES/vQsz+prrHFQCXMp9jai1bs7j38jfMORvADJEGJH8mcnyTAp5jIoQQQojMpC5JLVNHoUhy9kfgTQcLRVdQsRKHo8YSeYUQQmQABTSs3M1ouqHkOT3bZBeHvoaoOpP7B0Euj+mcBNuQX+2D0NyDOcKPI+pOQnh2OeoryVc/ybzfWRScCSGEyGCy9Ob/Cm8o/7VmNhirDHfyvdDMXJvozZzod0iy464ptmFvPRIx1FV7/w375v4RVmWtqUwrYWZriCTdUn7emK7QQCgpKbGmTZvaqFGj4qnw+BJhdwEWLW5m8+5JsN7/YL0vxw65ptmJSsbrqCS8nerC9Xx/Dt3vD/G+SuAVQgghRHWpTxy+xcze02qKJGYHnIrSoXh6AW5LO7MPUsm8EEKITMF16q4iBzyK0W5OhG2HZfJ/yRMfxSz+oMhj9N2NuCbeZGbLzewwM7uH52xEY80ViLslNISMxXbaib/N9EkVQojMRSJvxeRTseUsMYaY2YPc80Iqqf5sZl2ZQZpplGBzfANi7zSsjp/G9rodSYGtBCyLsXr+ljX1OqFdYHSgb+1CJEnixgm9jRo1stGjR1t2dswPNZuO3hXM47glCazXnkYY/z8ze5SqvkQXGLjumVYEtncTRF5jZm3pKr6d9/1yZjZv1MxdIYQQQgRIU+LJ5STYhEhW3IiXH9NkX+32HPP52hV51qnl4xFC1CxZ1c3HCJEGFDNq7hFcHc+jqaEAwfVZcmJ9aIoIiu0UW91qZqfzXK4ZpSO33UB+ciLdvI9QDHkGObv7KZBsoSItIYTIPLK7dOmit71yirGtmoZd8TZOskcxF6EhouDWJJudWhOU0L35LnN7f8Oa9OJnC30Wzsv5+ULfcdWlSnwTG4rdWcPt1Tn2cDhsdevWtXbt2tn8+fOttDQmh79vOObedGw3xpKlWsdUDd7BvmU3PnOuQm9HBPONAX7mQojHByLuOgH3Mj7rjg/M7GE6i1/B4rowAz/zQgghhEgsWVjkDWcOWsxzOEQZrRDK3f5lXQxL0p4k4YuMsomWgcSNT2JhfAQFiucyuuXRKIoCXTJ1Dxx14rHozmG0iPsMzaihj8GZZrYve4abaug5E0k2cwh3571UIacQmcNI/gffp1mfQpTFIdsofprKrFx3TjzIzA7HyXA/lml1gDbOJcRtH5MPXEwnb1fylB3JB84kT/0tx9GVfGE78tSraF5Szk4IITIAibzRU4xQ6ZJN87Bw7kZnZXt+/l2AJ/ZUYitzID6ks7knAc/eBBzrEXJ3ZY3qEKS4SxesnIuwBltLIFKtyjMn9Obk5JQJvV999VVZh28MLKZT+UiE1WwCutp4b93nagmfu03YXx9PAquQAoTqWCRn8T70xnr5UhJseyPcuwTfA1jWvEmwmQ4zx4QQQgiRnGQhlrWlwOxjvU9xIZG3ZriB5OpajjvV+QG7yHYIPblp8JqEENExkgKP+zSGSYhfUEqO8F1yg2uZo+tm555E/iwbZ4+gmiHC5ADnITIvJ845jPxdexo/ZvPzhRzTIRxTW5xxzUo/rwAAIABJREFUPLE3nrhKCCFEiiCRN3aKEN3ew0qjLqJbX7ot1yOOxaQqpgFhgp73sC3bD4H0BDpPFxF0hJmz1h1BeF8us0lArSX42J+quWqto7Nsbt++vS1YsMCKi2PSJueTkHLB0zEEarNrsZp9M8mqj6nKOwohfU+E87UxBm1OaG9pZgOYqXsV71UL5oE4m+h7mbs7h+BSFYBCCCGESDR1saBzsc91JLBE7MQr8nZA5B0nkTcqzmev457vuRp6zkRSxN72QIpMF6fBaxJCRIdz0NiFAit18grxa4pxcpxOk4srjNqLBpETEXsb0NkbVKFEmMaauTzvEm7vgfNNB5wHP6Oz93OOqQt56t8Qp6zi71pirxBCpCESeeOnkMTHDJJPrRHJvCH832aohbMLLr6gs3cz1s19qCjbRkCUz+ZhFUmfQsThdb6A43jmT3jrVyfeYCQrK8s6dOhgCxcutKKimDTaeXTveh29WxFZazMocoLu+6zj/gR1vbBaXhzFZswJ6wdgyXwBlsw9WN83Scy5ObwvEDxmYme6EEIIIWoPZ4N3BXH2P/U+xE28Iu+BiLzPUqQZLX6Rty1Whv/BKSZakfcsusjuiLPQszZE3pNxI5pOLJ0O7M5MXuesND5NXpMQomqOpRtxTC2OqxIiFSjFVW86nb0baJg4jvznPsQ8GwIumNhKnnIGTTSFOEz2xq45l4aV92jecMd0KGJvB2b6ruZ+mdaYJIQQaY1E3uqzlRPsRwiS3TiBdkQ4W5ahAfIarEwW05Hh1uQUulC/p8psMwFGPX5ns+/3TyAp5X62k5k1Ya3jplOnTrZo0SIrLCyM5SHmEvwcyWUdQVVtivd5HNcsRNijsWPZxzf/2B+wZSMC90LcvZKE24EUKLxEx8y/zGwy74m6doUQQghRG1xIbPOymb2hdyBu4hV5XRfKUDN7nJgyWiI7eQ9H2I1F5B2JM9LtccaitSHytmD/N5u9TzqwllnDrkj3tjR5TUKIqumPCPScRF4houZHzv8fktNsRMHEscRUeeTdigLMs20jpzqdosht2Dcfg5NKMbfPROxtgs2zyxt2JnbZzEVirxBCpAESeYPDdaW+xYm0Lp2fA7Ec246wmYmzTBcwH2IzCZ9TqCQrIXHkunq3EAhtYu2aUIXmxN3GVMdvJHCxeOf1ujm9nTt3tsWLF9v27VHvWUpJ2uRQHdebir0v4jmGgPE+c8tZvxMJ6LJ8s3p3IZBzXbtXY8/cEgsXJ+7exbzdj6orogshhBBCBMDDxH83xigyil9SnU7eYWb2vJktjeH3PJH3KUSC3nTkXso4m2hE3r4cd7yzbWtD5N2IOO3WakoNPWei2UBh6J509K1Pk9clhKgcV2TVycwe1ExeIWJmNbnP93B23N3XkHEQlslrAp6Pm4cD4luIuVsYh3cMl2xysh8iCocQe/tSjLcb+ep1GZqvFkKItEEib7CUYmv2JtVcLsHRD+vhnZjXsCkDZyDkRcyT7U2HwK6Iv0tJJhgV4/shig8iENmAPbHRkdqC4CVmSktLy4TeJUuWWH5+1PuWErpmd6QbthcdygsDX6nYCRPUTUH0dWt3Ol293tcX0oVcitXzE3RIuCTc17U4Z1gIIYQQwo8rWruTZNNVSjhVi3hFXrc5PM3MXiExGC1+kbcZHSz/xEEmWpH3BOLXe+J84bUh8jrXobN97jjpQic+Cz/W4FoKIWqXc/gffLdm8goRNxvIH35AXnN/bJwHUEjXnLhoS4C54SJylJNx/dtKvvVI7KPrkquegTNhETHb8dynFbetVX5QCCFSkyy9bwlhM92RI8zsZiq1rsK+7MJynjCuztQUxHWL/pY5sB8xd+s51mY3Xk4Bwc401nEOQqRna+LmHR/se+lZsX6OnV3zyJEjrXnz5mWXKHHv4Q1Y17nu2PsI1JKFNdgtTzKz+mY2xMz+z8xGU0H4CAk7J/reQidyphUbCCGEECK5OZ6jW6AuolojmyfOjnOPEkb4DPlGskRLfYTaVKIxr7VOSr7bFTOOvcKIZD1AIUTgFJKPEUJUn0UUTDi3j+uxVj6B21zjxe/pqg0yfiihk/hynvc28qknky88g5jlCfKb4xCdr6RI71ZE4R30/gshRGohkTexLOPEOQqB14mTV0Q8YyOfwJkJuI3DfxAb76Gi7Bas+Y5izT5hHWbR+eufW1GfTt4ckk8NfcmoqCkoKCgTet2lRYsW0f7aVgTpsVS6PcgMrtokxHoMNrObuDasrVdivVJKBeFMX8e0EEIIIUSyMZrjSaeOyFTDm81WnblxXnzeKMaiwqYkO2OO7WsRTwhPt+LJ99n7tItDrBdCpC5BzQwVQvzEV4inI2h4eRm3DOeudy/WyYnANcxcy/P+nQ7fExF+LyMX+6KZ/RHR131/CY04t2Ez3UjvoRBCpAYSeWuGGdh4/Q4x009zLDs86mZIZ+9yKtdGYjXsrEtewCKoAfeZzjxeI+HTmBnHe2CZ3J4kUlx2Is6u2V1GjBhhu+66a7S/tpGA6HUzO4AO2U7xPH81qUPSxc3avZ8KvD9jBfMCxQUXEZwtJKh7kW7eqF+sEEIIIUQNchximUTe1MXfydsgxlfRKAVF3nDEdbqwnZEwhvW2EEIIIeLHjVd7yMzONLNzcTfsTudsIvmcXOFIrt9nHu8ddBjvSH7zCvLV28ldu7ziXYzR21HvuxBCJDcSeWuOUqx+b494xqbY/7qERmu6fWNNiKQyk6ksuwWB+yI6U405FYVYhTTHyiSLucYuGOpJwNG0Oq8/Ly/PTj/9dNtjjz2i/RU3p+J8M3vXzDoQqB1UQ++BS34dY2Z/ojv838w3XoOIewkBmbNimWhmfzWzS1nnvnQhX5hhnzEhhBBCJD/7UtDnZoD+oPcrpcmUUTTpzlhe3zmZvhBCCCFEQGylW/YGHm5FDS3sIpo/nKviNeQz25rZnXQat2L82yV0GLt87HlmNh4XwyFqGBFCiOQl1WYepRN1SWS5E+medC7kYKebhehbRJIk3S1z1iNazmV+7BbfzwrolJ3vqyh3QdFeZtYV+5GedNR+GG9Xb25urp122mn24osvln3/3XffVfUrPyD0Potl84N0ay+P5/mrIEQw1ZNZdQMRvQ3rl+lYvrzPGkUy1czmYRt+MaK4/vaFEEIIkUycwbG8rncl5fGsi2O1MC5l3yO70OTAbYzuY58qhBBCiODYyiOtquE1/Z4u3qfN7BSaRg6nIWkFTSxvkUfszki407k4Efh5M5tmZt/qsyCEEMmDhJ7aIYSY2dnMNiNM9mYjvcQ1lyIA78aQfC/Rke6C7/hybltPYuED1iYLIbwIK7hvsR3pQ1frI8yijZlt27bZsGHDyn5t3LhxtmJFlQV1S6hse455wvdhn/x9AGuRRSHAbszNGEwHb4jPh1uPN8xsAnbMJVU83kaO722E87wAjlEIIYQQIiiG8Tj/0YoKkRSsZi/WjKJkJXSFEEKIYNiFR6lfS+u5mvzpS7j+uTj8aFwW3fn+Mbp9XTPJIWY23Mz6cXmfPOgb3DfWoj4hhBABI5G39sjmRDgH4baAbkvv5JiPcLmQ75vRpZmbIetTBxG3pZn9hq7dRqzLQmycX0UEH4WN2I3M6n0Aq+LyulorZevWn4rphg4dauPHj7fly6tszP2ceRouwDmJqrdnEGnjtUMvRtxtYmaHMgerIUHYdF6bq5yrst24HBbEeUxCCCGEEImiDpZxjtlaZSGShonMD3T7rX/obRFCCCECwRttUdsjLtbR1fsKYu/pOAj+DafC5+nq/ZDcrGt0OYLc6yyalcaTn5TYK4QQtYRE3trje06mzpp4KUfhP7k7EXMP3qOGzKlNhBVwstKcZN8OBBPHYee8gq7URgjlnyC0TjGzKwlGXFftPYi9S+J5fVu2bLHBgwfbhAkTbMmSKh/iQzp43czl/lyCxM0Avhyr6vk+W5egCfFZK0BoFkIIIYSoCY6nOO5TrbYQScVjiLzDJPIKkfaEqlGoLoSIDS8fXydJ1m0Lgu6bNBwN4/paunhf4WcuN7m/mV1EU0p37juOizp7hRCiFpDIWzuE6TL1Ok1Xc5sTNLfRwbo3J9kj+Nn38XSmpjjZdOrOMLNLsSjexktylib7kQx0guRkuqLPJui4wsyOROwdRwdwTDihd+DAgfbqq6/aokWLqvrVNwly/sCc5erMEwsjYu/CGhSyDrMS/HbW5/jrIpD/mODnE0IIIYQw4jeTVXNSUdudJamCvxMnHUfrfMD1/iSii2r5eIQQiUPz0IWoOUoQQ5NNEN3kE3tdTnWImZ1KnvU05vK+ZmZXmVlrnA2d0NuNn79Ed+9S/U8RQoiaQyJvclCAtUUdhLaO2DNPpXLqFeyIP8aiuKr5q+nAOl7vFl7LRp/Aa1SH9WA+1Do6f91tt2NpfCmzep/C7vhuM/ss1nXZvHmznXzyyTZx4kRbsKBKp+NX6CpuUs1ArQS75o5YQLtZvE+a2ctYQX9SjceujDrM4HCd0D3N7A5mbGTC500IIYQQtUd3nvkFvQdJg0Te6PCLvDtE7FfSgTBuQgexT5iSZq9PCPE/SuXoJUSN4fKYecy+T0Y2kX92eelnzWwQHbuuMHOwmb1ODvQmGl1Gk0t03b1DEYLHamScEELUDBJ5k4si3hOXJPjKzJZRMeW+vowOy0fN7L9YF6f7WniV4iHEU+/runzt5vS2x8J4RzPbQGLlI+7vZrpdjMXY4Wb2MJZjm2M5ECf09u/f37Kysmz+/PlV3T0oS233nr9DYPQ7Lr9nRsajiL5BB4P5CLtF2CYeZmaPmNm/zOybgJ9LCCGEEMJwZmlGMmmNVqTW8aw6VeQXHWGcd8K4MaWbyGt02N9NAa1EXiHSlxLc49R9J0TiyeUZ8pJ8rbfR1fsuHb4nI/aOIF/tGkMmmNld/Hww4/Y6m9lAOn/HkcPW/xYhhEgQmreRfGzHgngZR/YpXZ13Ytl8MUPtr2dmb6bgWRU7G+MuZnYwgng9up+X+pJRuyFY3ku12UNmdgACpuuEPTHWNXNCb79+/axDhw5llxpksZldTVWcq6A7kM/CE3T5BtllUUQ13hlm9leCuSv4vJ3NWgshhBBCBMlwYoyXtapJQRExdUE1knGhiOtYfy+VKKTzbVsaWxmP47pbLR+HECKx5OOgpnmaQiSeEhxAUqV7vpCc5BXkWW9jxNtg8pPnEjveh7PiqzTlXENH7110+sopRgghEoBE3uQjHFHJNQUR8y+cSF0l9a5m9n9suM9F+Ez3NfF39YZYI1cltpDLZxFzd7tw/RWzckeZ2ftm1h8rwFuZexw1Tujt06dP2aVTp041+foLCYqc+Hqzma3kdTxBYLVfwM+3CsuVwazVIXzuHvPZKQohhBBCBMHxxHZPaTWTgjVYCG6pxsF4CbxY95re/VOp02MdXejfktxMR1Yi/OyagH2HECJ5CPmc5YQQiaUBf2v1U3CdXRPOtdgy305zysm4Tl5IHPc4gvDzjNlzXz9nZveb2QmMixNCCBEQEnmTn3V0qTrmIVieRsdld6x7n8bGNxNwVfJzzGwJ61JcTqXpjwQNfp6lU+T/EIiviadD1Qm97nL88cdbly5doviNQHGd3DdglfYcc4ivQgA+nyrAIJnBLOgLzOwLhHK3Zjea2S4Z8nkTQgghROJoamb7kwyarXVOCkp5P6rTxevZfW6LUSzYSmdLKllFl1RzvVIF15HThKJjIUR60tjMWihPKESN0IInSeXc2jxyq0PItX5ObtoJuX8k1/oi4wdd3roh7pRjyWUPSFGRO1VoWMlxtsAhMzIfHu///2zfxY8T+FunzYoKkcQoeEsNCn1HWcRw+1HMaf2YOQiuOuoeM2uT5mtRSpW8l/z5wdfBm8283v2wNT6Uub27+O57I/Mjxvo6VB+N1X7MCb1HH320HXbYYcG+uuh4D7HfBUef8DrdvOEHzaxnwM+1jbm8g/l8udnHfyNAU5JHCCGEENXhGIrW5kQ4sojaoyWx885xdnOFEGud6Lk5xsfYUE2b6NqgBfHxfmk82sS9h2O47p0ExyOESAxePkUIkXi8v7V0+JubT651MNcuT30EzoN/JracjNj7MLHemcQWj9GQ0zQJXke60IC894AKXk9r3pshPmfQzrx3zkX097w/0XIBI/+uJhfvsS+338ZYRSFEApHIm7psQtRzJ9FbGNp/OeLlpQno6kxWFpjZWo6tGYKnS7J8aGZ9WIurItbjPWyuL6fSbDTVZdfwGFGxZcsW6927t3XvXisOxi5p9m8zG4H4uhE756exTWke8PM5+5Ur6SJ+g7V1Adk/mHcshBBCCBErJyKMPSt7yKShAYn+6nRWeO9lZDV/VWSn4OegIZaDjeN4vamCE93ncqxtMmBUkBCZSkkKzQcVItXx/tbS6W9uCR29gxH83jWzDgh9NzEy731yi14e0+UYn6G55BwEYRE/e7P2/0Zoj6Spb+zfMl9T2Z+w2h5EHn14lEfgYt87zewUurj9ufczeT/b4EiqIiIhEkiOFjfl+Y5/xq4q6jw6fDvTpepOlO+k+esv8n2dTaLQCZIfmNn12IqNosrezXqbyn2dKH6vr5rsfOb0utbcJ83stWie3Am9PXv2tKysX9dLzJw5M6jXWBmLOIG/j3DdF9G/C+//KwE+l0vwTEAkvwyr6+tI0P6LGdG5wb9EIYQQQqQhWSR+jHg1cvyGqB28ZGO870eY+DuL61i6cpshLmel0OfBs5cuSnPL5jwchNqa2dHR7pWEEClHulvPC5EseH9r6fg35/LU/yS36rpFTzKz4xB7V3L7bGb7dkAUHsZlIiMippjZiiR4LalGCxpxdmZ8SiSuYedIRNdPfPdxt93Bmp9Dd3Y0OFdMl/y+j/t+xXUrHvPfvrz8M4ykFEIkAIm86cN7WGK8xz/ksxh8fxvi27IMWIN1rME2vl9PNVgLKogGUGHkOlC/4T5fY0XxPiL5YITS2+iK/rqqJ3VCb48ePX51e6TwO2PGjGBe5a9xSaWXeA2u8uq3BFIuiLobK+9FAT7fBqrw3jSzP7BmT1Al9hSzfIUQQgghKqMDVeSbGKkhkoPqJh3Dvkr9BjE+TgME3pyIcTXJTDonaf0UsTe6HZt1ibxCCCGEqIw1OFC6nGQ/crJ9acj5kTziPNxC3HzYgdyvv5lNN7OXiTcyIZ8dFN8wYq+lLzfusSPvwRM0Rvlx63wXhYuDYmgYGkX39nsRt7dhP/AFj3k9xySRV4gEIZE3vchnvuwb2F+c5fPZvx1Rbmsav/4iX2dvFtVEs7Bk/gMnn5s5qf2TyrBt/M7zdPn+Hvvmmzix/YP1rHTdtm799Y+7du36i++zs39ycJs+fXqQr9nPWo53OvOah/E6+iNuu9exJaDnCmOJ7QTltxHIz2M+9K3YX38X0HMJIYQQIv04ltmv/9U83rQjXuGzVF1kSUsxtouO3+CgVJLpiyKEEEKIKlnPaLkJNKMMwt73OoTgMcQYn5rZ/mY2lA7R3tg5j0PwXZwBS52N5XHdKGPiLPK8BXy/hsvX5YxAcTNyOyHmRnKTL67rTANVNAwnF/0Ddt0eTXB6LOF1NOS5F2ksgBCJQSJverKSk+VkRMsTmXU2FoviuRmwBmFOSmHExmuoTLqOpOLTrIk7uS3kd9ZiH/I6VUZ96Uwdy/0+j+UAtm37ZdFUly5dyq49sdfP1KlTf3VbnJRQQfU5nb1nY0H9mJk9Z2YPmNlnQT0Z4vdDCMjXMiPYm8fwTwI1WTgLIYQQIpJOfP9yBXZiInWJV+TNlK7YVOUHOu9dt017krFCCCGEENGwlbj/LRpDhpJ3vQz74NfILTrBcR/yi4eS0xxBTvMVXw433diN0Xs7425T1eiSEE1LThD+KCIuq1fOfd283tas9UG8F16hrdek0xCROZq9WV3e0xvRHfqTV/eeL4ygW49xLPsjYkvkFSIB/HqQqEgXCuhUPcPMLsfe4gwqp67DHz+dCUecOAqY9zYS4XsDnafupHYJJ1DDGu4D7J1/h2Duvh5vZleYWfN418yJvu7SsWPHX12OO+64skuAbMIWxQVCD/Ow52HrfBkW1kHi5jb8kef7kNkLTkS/hwo8/a8RQgghhEdLugHDVJpL1BMi+dlCAnZ3M+ul90sIIYQQcbCNubuXkKN9kia0c2kiGYWtr3MqvJTmkba4Brqc9g0Um6VbnrEpYule7I2yq7jksJZHmVn3iMeqE/G9E2Tb8RzOFvt+ZiVH4sbwLYjyeOvR7OMEe2dlebXvZ43NrBmvw+soLtGeT4jEoU7e9GctA9CnIfKdxYmyH7e/lmEWeavpZp6NeHs+63A4wYQ3R2AtIuksAo3fMt/2eITLd6KoqiqX3NxfN7a2a9eu7No/x3fKlCnVfa2lVLhdjaWyE/t70mHrvY73fBbX1SWXLuivsAj/PWt3AMGDOnqFEEIIYVTkH0ictUErIkRKkMvecTSJQiGEEEKIeNnMWMGPcFEcyNi50XT4vkejyl0Ihqeb2TE4MJ7F2D0nMH6ZJt2hK2nYcbbHkxBmKyPMfTpFMbe4Hp3CC8htX4LV8tSIvdjhzNGNhnycL9+kscqJ81fxezsgKHuENZ5HiMQikTczCGPfex0nisuoDurMCfGegC18k51S5vV+iaXxRb5g4T6sjVfzGj7B6nkKc337UaH0H8TiH4J4rXl5eWXXBx988M+3eYLv5MmTq/vwW5hh8Tni6x+x0eiCbfX9Ac/PXU4Q9hFVeXXjFcSFEEIIkZYcgovKSyQzhBDJj9d57+hoZrua2Sq9b0KkDSE5cAlRY3hz3PQ399NewDUmzSF32Q8BchCNKh9h0/wwouKpiMDXIAq7ZpMXGE1YEMXzJSvbELb3RgCPBje3+Htfw1JlbCcH/hifv7NxZ/GLvPtH+VjmE9Y30F19lO9nziUzz/d9qJzuYiFEgOhkkllsY77B+Vhe/ED10xi6PRtl2Ho48fMZ1uBWXv/ffRVkXtC1FUuQsxHKswkmnuZ3A/s7cmKvd2nbtm3Z5aSTynPQiAuXlLkD4fUZqrjc+/5fKq6CPOF6s4GvYj6DZu0JIYQQwhB3O/D1J5rLJERKsYYkbAffXG0hRHoQVnG2EDWGZ1sr+9r/sQ0R8ibyljeStx5gZrfjTtmIXOzFdPLujmvhM7gxnsj811RlFnNzD43i+HdCWF0UZc7V7bnW+4r2tvlGF3ocxAjDWFnJGD+PrYi/WZxXSiXyCpFYJPJmJt9x8jsDmwZXqXML1Tx9MnBFFhNEjGAuxAlUiN3pmmsj7nenb+C/ZxPS0HefXRFPq01+fn7ZZb/99rMBAwYE9VoLEfqvZObwPDM7jg7mO+juDpItnOwVuAohhBDCGONwKEmbQBxRRKB4c7NCWtaoyLT1WkfHTAPm4Qkh0odSirWFEInHG2emhohfsx33RSfsnkOzzUK6d/+BwNuMERKXk8tuTmPOo4ziG5SiYu8WRuD1iOL4OyGczirnZ5Hzb0O4LHoW0FnkhyPZnbWOB//zFfB9Ds/jxgR+o3OMEIlDds2ZSyknAmfh+zEzD07jRPIE3axLM2h1tiPwzsUK5EzfDNv/UhW2hRPTZCrY3WWfiGrXlpxkfwzswLZvt7333ttOOeWUsu9feeWVIB52LUK2996fj4334bz37vVuDOKJqqAZ/4dWV+tRhBBCCJEqOGFoT5xkJPImH55YWZ0CvXiFz1QUTDOtE6eIDnzDdr0RnSBCiNSnmJmJKtAWIvF44m4q2wsnmkJiji8QdE82s2O59CQn+46ZzSCX287MhpLPPR5b50lctqTQ63Yzbv9kZnvRpVsejc2sOw6KuRXcp8j3dQG22F34vjG5WP+c3DY4tvhz3I0o0F1Cd25FZPOYHpsoCGxAY1QxIxMl8gqRICTyijy6Ul2V1LlYYvwZsc9ZYIyv5ISRjnxPR+s0KsZG0e3cC7H3bTY965jJ2zDipLgF4XdHbndJzG+rG7gVFBRY69aty74eNGhQ2fVLL71U3eUvQeR1VWKzea2uk/s3ZnYkc4enJNCyqQ4zggfyWXs5YmaDEEIIIdKLHKrOQyRkUinhkil4Mev2aiT6PZE2VteoUAp2xG4nVt6aQYmrZRRouATrvhQNCyFSH5fcX64xCkLUCF6BVCblW+PFiZXzsRh+0cxOwpHQCbldzWwBYu/nXNpj2zya+5yCo+GbKdJgsgFhuyfNV+X9Tz4Yu+bpEbdnEUvvSeNOXcRyF99/ZmYXsGaH8j/fX3DbP6KLN4e1u8TM/sYa+jmM+ckPkk/2C9IrEX6743b5TZDNUEKIXyORV3g47/z/Q9w8G2uLHj5x88MMWqkiXq+rMnoXsdcN/e9G18ljnKCKfcnJLJ+VRicsLtzJuB4nN/PNIoiLwsKfnDR23333sushQ4bYuHHjgni9ubyuWVS8jUJ8PYzbnyCYSgQ5CMuuqOBo1rY8qxEhhBBCpD67cs7PJSEjko98YuH8ahyZF+/GKnoWIyynkliay3ptiuiYSGeWk1Q8na4PibxCpAdZ7M9l1y9E4vHyh3W11lFTREfpAzQknci4vT44E7r4ZCoC6aeIvceSz+1D1+sbXL5N8tf6GmMFJ5UjjtZjfOCUchqKdkccbmpmB7I+E4mv5yHq3sn/+scjHBzbROzPcsgLd6ebN1LkPZAmsV0Rji/2/ex7mslGcEwPI14LIRJEdpcuXbS2wqOEk+K7CJO7Y4fRFdsF9096s+/+2Wlu5VOI0PsBw+k7MvD/QH7+tS8JtTOWZYUMqg8jnH/PSTPMz6tduVRSUlJ2adKkie2zzz42f/786j6kcXwbfOJ2iCTs4XT2ZvHZCNJKJsx8aLdOe1A11pVgZIW6e4QQQoi0w8VSV1FJ/nAVtl+ierTCtm4ODjTR4uLYYWb2Aom0aBnI+/s04ziOwh3nUuLoR6MQQU+k8+COOF+GbA11AAAgAElEQVR5DomoLDrFawK3R/otBaBTM0Toda+xNe/X1+yVZL8nROpzoZl1oCtLDltCJJbOCGBTsRoW0VNKvvAz8tcLyVW7GLY38WgBguUHiL7NaSw5li7Y3cmBxhIj1yT5xFqtyymmO5iGrEfKaSRqhM3zPGK0jb5RjLmM7tsTAXZsxF6sIc/lF8BziKvfICfsp5Q13EbD2Ku+nxXj/NKG9+ehGhoJKETGok5eUR4b6ah0J8MzmNXrrBnamtnVJGqMk+KWCOE33QiT4LqVDtPTmfHQnc7eJwnItnH5gZNbAwKKAp8Q7sTLJj7xMpuTYlxCeVFRkTVv3tyGDx9uY8eODWrZt2NhMofk2GhsULpTDfYUtwch7ocRvf9NN8BIgtybEHufo+JsexSPJYQQQojk5yBipA9k2ZW0NGSkRkOK/mKN+cI+obMgxo6wwgSOCUkUjenC2Zl1yxS+Yu9zLEnG7zLotQuRruTQISaESDzZPEOsoy3E/yhBtHyOztfXKTJ0Xbtn4bLyKmLwA+Swj+c+x1GsNg0B87MktKp/gfGBr/jE2BCFla9VcLyruX9xOZ8tF59PoLlnYznFPBMi4v5i1uajCppwXCx4M/FveQ1BTmT+ewboBkIkBRJ5RUUUU+10I4m480n2+K1EiqmQeo/v60YkdtIJl3R6C0F3DuL3RVhaP01QMY8gw10fgajrn/cwn9kRE0gI7UhFVdyV78XFxbbTTjvZiBEjyr4fM2ZMUEu+3medPAp7k98i9j7Pa14R0HMVUy32te/5+jAX2K3js6y5EEIIIVKXplTXl5JISTUxL1PwEkLZcb7ekM/us06MInHdFEx21uGY62aYxemX/B0fRte4RF4hUp8SzeMVosbw8oCKh6uP19nrcq2TEXuPxonR5RcH87PZZvYfhF9nd9yFZpYBiL2vkM+tzsiSIHEi9Sfkkb3OnrbEXdMqeJ6SKo6/GMfJ8igs57aiSuYYlyLuVub4qPhQiBpCFUOiKrZzAryICp31vvtvQojLYZD6gVhDpCthXv/DrMeD2GC4Lt/bSFwaJ8aVvkTPDtjWNaQLuA1D7hvzmKHqJIWcdXPTpk3LLqNGjbJQKLD8UjFzLP5iZpczC8IFFDdgo3cq3ThBsZ2g6lK6eVeZ2e/oDrgMmxIhhBBCpCa7Ujn/jWZ4JjWeKFsd15Z6/H6DGB+nIfvTeAXm2iDsu2QSP5J4rMveRnkFIYQQQtQmpXSnTiGP6fKJ/2LvMcTM/mFm/cg9PoNj5evsUa4g9/hXcruNk+SdfBqR2mu4OtvMxmlMhhAiEm3GRDSU0rX5JQKmS9zsZGb7MgugO/MkduBEk+6V7MUkNf5kZn8ws/exGnZBwpVmth8dul610z6sUzPE350IPJaytq2pxIobb05vo0aNbPTo0ZadHWhuzM1teJkA6UbmKpzKTIVrmNkb1PtdiuX1PWZ2HkFWK0T0uwhumgT0XEIIIYSoOVpjk+bNiBLpSSl7gixE21howj4ildymghDFU5Ewe8NSumXSudBXCCGEEKlDmO7S6Yi9rknnfvYffRB7RxFvPs99xptZfRpMHuW2Pszy9ZxmvLyn16jTwPd1tJdY2YR7prOXbkGM/Y4+i0KISGTXLOLBiZUHYNswC5F3FjNoc6l4cieeNWlq3eyRi5Xwe3SfjiZYcLOp7mSQ/XbuV58h9fch+L7DHCvHLlx7NhZ1EJJjThaVlpZaw4YNy4TeZ599tuw2N7s3AEo5PlcF9zGziUcidPfG8uRN5mEEgffZ+op1dM/Vl/kZ/6Fybbaq14QQQoiUoC7z9o1xIJq3n96E4nSqCcU5B1jUDi4W/5b4vFkF89qEEEIIIWqDMA02Mxkx4cbsnUxu0Y2G64V74Us4WL5Gp28vOmaH0/CymMdZyf27IvDuxW2Rs23Lw4uJF5rZogpsuusiKuf4YuEQAvSTiNTOYbFlirneREOINdkQ5XoKISKQyCvioRQRbgGXS+hs9f4RFyJkbsfeOIfu39w0XG2vy9lZekylk9fNduhkZo/T3bsYSzNvPY73CbxGZdbedKwWYBXydRVzDSo+oNJSq1evXpnQ63Bib0FBXA9VHtt5nZ8yJ/e3BEeuk/sFrEQ+qmCWQzxsIRBz8ybOotruEmZm/Ju5Gt8oGSiEEEIkNa5D8xTin7l6q9IeL3EV65y5kgy1Pk5VvqJow8Xle1DQKoQQQgiRbOSSx1zAfFsn5g4ysw7M5nU/G2NmH3DpjCD8W2bcliBAPmVmAxlZ2DjKwtUQjTz1EXkfZFRdZI68KaNtdvbNRw+RT94ZcXoqe6p0i5WzWMtpuEcKIWJEIq+Ih3VmttV3QoqstMmjoqmYE+EunICWpnHSZhsVVfPNbISZnW9m19Lleis/M07QX1B1le2b89CNeVZLWbPF3J4dT7dqOBy2OnXqlH3t7+rNz69s/n5MuPf8MTP7EPHVXc6hi/lBKs1WBPR+h7FwvpPZGhcw2/g2gpy7qczbHNSLE0IIIUSgNCOB8hmOIEKI1KeQvY8TeQ+nszeoQk8hhBBCiKApoKlmGZ27RyPmHmZm1+Ng+BbxjbvPsFAodEgoFHINNS0QhffKzs5u6Ubmkff+NIpjDFP0egjW0QfhlLjOd58SGl0i88ANyH/uzO3pmPvMQkyP1YqyHuul7l+R8UjkFfFQ7KsqyqbSxvin3IDqpAPoSN2F7tX5GVKVv4LZsTOY13sCs2zfQxgPY0P8G4TLQ7A58/4W1zHL10uQdEVIjRkn9DrcfF5/V68jNzeQpmoXXHxuZn+j0u18bE1upVv5X7zuoDq4C+gedkL462Z2uZn1NLOOWKjcQxCm5JIQQgiRPLgCt3bEjF8R5wgh0oMPifVdV8sjisOFEEIIkQIUk1tcSmevG0V3HR26bcjXvu+cF10DTVZWlm3fvt1rdtrWsGHDFtu2bQuFw+GFiLaVUYpAm89cXTf39wae535yxEW4PE5jz+TPn2f5hN2mcTjlpAKeXXOsnUlOOG+IOJ+O6yJE1EjkFdWlBAHXmB/gbJr/n73zgJarqv7wmfL6SyWNEEogQIAAoShdOigdIZSAFEVEEVRQrCgWFMU/dlQsCNKldxFBQu+9Q0Io6e31mXlT/us8vhM2h+lv5r0p+1vrrml37ty5c+eeffZvlyYyNZxDb2QRPbmqmSjGwFzKfwSFKG44Zptz3Kyj8z169MZ5TtZW3twTeRsKjWxyYq8hq9cg9nZ1dZXqEK8ic/cZyobY/sR7Ib7aEs6/RfyO57GtfFhJmWYrMO9vjPm6MeYkBPEryDDu1AFeURRFUSqCJlFW7An9SRSlprCBrW+QATOKeYGiKIqiKNlxPVVrrbdqNRJEfO3H5zqaZar1Y9rEGSv0xmIx+1ttb/vmtrW1JXt7e0OJRMKKt0fk+M52DjSGBKhrSFg5iwC5ralOeIkTkHNsS+2sD9OND11bvSh1j4q8SilJcYHtpFzXGITOb1HK90IilErWILbCseLt7zASpMDZJprpz+fxC8aY6UQgueMTYBvTWa+RY/pWsV/b9uu1HHvsseaKK64YuN/RUbJKH2+STWvLMFo1+Sgi1LbFYLmSbOZSMZfja3v7HY7Qey5i7wlarkNRFEVRKoJWyrkuoo+Uoii1wwr6221J/7p3i2k1oyiKoih1hhsrdcwcXtYzxvyMuYqvkdhKlalEIpFqbm4OtLW1taVSqRnWr2pFX1vC2RgzmfWykSLotYVkKOsb/4kxZl9jzJH4UWfg33xFBcuC6Csi+1dRahIVeZVS4nobJBmUlpN1GUCEs+LbPylHsaSOjrzLvA0xsG/A4H6I6Fv7BAKoi+JrEdHwVij9O8fxjVLskO0d4bJ6rdi7YsWKUmzW8NvfT0ayjez/Iv2GtyPi7S/GmKdKLPQ/xDatuHw8n6NGkaIoiqIMPwGcJ6MJaHtRf5OKJ1jvB6BI6qlqkY+tOjSLTJbb1WGtKFVLkv+vzqUVpfw4J9xKPdbDxiTE1qPS7ECKxJFAf39/a19f30ArPCvw2mqJNlmGJJrnjTE/zeMLWF/wTJJTzsfHezeBcmfgO7Wv/9IYc4cKl4qiFIqKvEqpkZP65xB6bXblq5SkONsYs40x5s8MaPWUbTmG6KwAoq4tafw0g7c9bkvJ+m2gmb/h+I3nOO0thPNBE4u93zLrmGOOMVdeeeXA/WXLlpVi0waD9VLEV2swnWKMOdEYswNZvReXuCdfhEzhhzl2kRJuW1EURVGU4ggSpW6wCbSVQuUjxUp19OdHgGNVr0Lvv5mj7K9lJxWlqumnXKiiKOXH/de0At3wYANQf2Bdohk+3ZVOnpRKpXojkcjCQCDQn0qlrK0XiEQGXI5WU/kDPX3z4WoCXm2p5s/Snu9iql8eyZzJtp/7I9tdULuHX1GUUqMir1JO5rPtl4wxPyLT0kYnHUC25T/p1zq3Tn6FOEbCe2Ttbkjms6OTjNcOBF/rCF1Iv9skIqk9dn8yxtxZqglYNBodEHotVuxdsqSkSdYvYDjZ3/7zxph9KIWyA8bLPSWeSL41mHLWiqIoiqKUlCTBXhFsF6Xy6SH4cDAZBMX2mXPrV5NY2oswskpU76k3bDDvOwTyTmXupyhK9dHDtUwDfBSl/DibQQMghx7bSubb+CjTEaH64CR8uD+3beJSqVTcs1EbqGCYLxH8oC+SvftphN4/ktn7PPv0HbJ6f07lwvjwHi5FUaoBLcelDCW25MTJDKYRMnsvpX9qex38Ela8fQbhNo4DZIx4PUoW6kT6Wdn/ZzPR8ZuQGb0Xx8wO9puVasds6RG7zJ4920yaNGlgKSHWUXgTAv/3cAIdZIz5G6VRNhlCZ5415qZwqyiKoihKeWnHtllGOwel8lnB0jmIPXUOy0LL9ia922pgJcGb79WxyGuoUmToaacoSnXSaIxp099OUYaEkXxIPfhCKwlbNvkbxpivZghGjBLouAZ+6x9Sjtn6s/9jjLlLLLfh5y0UW4HwVBJibHDN14wxn6Mf7zeNMQ8aY/Yjy/c0WvkpiqJkRUVeZahZhEBpU0cvM8bsyMB1gTFm2xovc5YSEVhxei+0YFjYydRaxpg1jTG7GmP2pHdvCOeRLYH2JSK6lmIQXEKU1+hS7WBvb685+uijB5bJkycPLCXEiru/MMYcZ4z5hzFmBIbVX/keY0r5YRnYgp7Q5xljNtVroKIoiqKUlZ3Z+KtEwiuVTxj7aDBld10WcHeBtn0nQm81ZSwEWRorYF+GkxsQuY+t30OgKFWPFZ0m6BxZUYaECXzIOD3cQ4a1cb9MueR0dpsrWT+K++fjqy5H8OESkl6sL/Q+qjb+lPPhPCo4TuDzf0clSEVRlIyo8aYMF/+j4fxXETvtwHY5UUr1YOTEGdSXIPRugej4IGJvM6LoKpxj8zA2bKnjWWTB2vdcxOC/U6l6YPX09AwsRx111MCy9tprl2Kzkv+R1XsGpUd2pEezFV93o+RJuUiQAX0a59vX1KhWFEVRlLJxIo6R2/QQVw3WoTSWpRgClDBOYbsWIvLabIhYFR4vG3C5PvZ7vTKHwNQZKngriqIoSk7qtY//cBHA7/z9DJX9+qnMMgKt5DfGmB8PQTntG5gvXYhv0ibGHEzm8DdogfcZyjkfXGZ/qaIoVYyKvMpwEqUnrxUt/2KMWZuB9B+IffXgIIjjBOunzNsdZO3eQ6kOZ1BE6WNrRH/bUyj/fCSN/r8pogEHTXd398ByxBFHmHXXXbfU3ztC3wlbqvvXxpjFxpjZlKK2UXXrlPoD4Rkyov+JqP5LzrdPI7YriqIoilI6PoUNc50e06ohjCOscRAOyCD2bbjA9zVUYS/IJr5va507bPvI2LfsMcz7oihKcSSLKLOvKEpxuP+a/ueGBltp5FxRJlvSTzWZVmxRm0xz9hC24ZhHIsrp2FInIUbHSEy5gepINlHlW0NUBVFRlCpDRV6lEniRzE4bvfSkMWZ/nIE/JKu11rHZDs/So9dlPfSJ75ziv7oXGQLjee7viJO/xlA5F/Fy71JGd3V1dZlZs2aZqVOnrl5KyOsYLfa3vxuh/ydkKh9UBuG1nz4an6fnxWPifLOlWLYq8ecpiqIoSr2yFn3GbJuJt/UsqBpka5FiaUPwHFmgaDsGcbkk1WmGiDgO2mrLQC4H17LNk2rraymKoiiKUsUcQoJHOnE0jsDbzHKNMebrJKYMJUmSn46kAtI2VG38OD7fH9MG5Udk/W6rJ6SiKBIVeZVKwTpHrmbw/TEOoW/x3KdrvPxZyosQe1o4t1op2WFLM08zxnzCGLO5KC8yD5H0WDJ890GwPMcYM6VUO9jZ2WkOO+yw1cu0adNWLyXiDr7DmXynvYhSs+dCydOIySq6jHPr28aYBfQ5vhGDruQ1qhVFURSlznC9OefoD19XpLDbAwTrFSLytpL9W2gGcCVQbRnI5eBfOCk/VXtfTVEURVGUKmQPetqmq3qYoFVIEwGK/yajtmsYv+azVDz8Lm0wzqWP8BNUJbRJUkfhKz+WfVcURVGRV6k43qUsxZGULN6JSCrbi3aDOvm5XhCZvFMo09xIv94tEH39Hry3GGMOQ9y1hsp3OG6zMvSbKBgr9LrlkEMOWb1stNFGpfretmTzBfz2l/Gdz6QU9fEZyqoMFlsi+zyOky0VPYmMXnfspvIbrCl61I3CAGwSJQ0VRVEURfkwJ/Dob3pc6g7XbqTQPmZJxFIVTKuThcaYZcw91qz3g6EoiqIoyrCyFW3i0iXAJBF4G6g89BAVJpdUwE9mbamfGmOOo3yz9U3+Hz7R0/GXrkslxx+XMsFHUZTqpRqjpJX64L/GmOdoMG97tH7VGLMnTehvYTCuByJEb71EUMaxCI+/oVyzXd7kOLxDievHyUrdD4H4Isp7vFyq42WFXsfBBx9sbr31VvPyyyXb/ONEqN1Dn+HtKVGyCwbak6X6IIE16J4yxtxO5J4LLnie36CfMnx9lNfuEWW1u3jtLWPMncaYFRk+w/5+a+C4jFAWJj7IcoiKoiiKUonYMW86Y97/9BeqO5xIW4zIa1TkrWrsHO5oY8wxlEZUFEVRFEUZaqbhC02XlZLCjxdGOLW+5y9QVbCS+DfVLs+g5dxfsK3+YYx5FF/5N4wxO3L/IT3LFKV+UZFXqWSWktn5FKLfLCKVriH78uk6+PVsGeFFiIi25N1yDJKRZOvavrW/NcZcz2sGofJhY8xnjTFfMcacbIzZnWP5L7FeSejo6DAHHHCACQY/KAzw4osvDnbT1uC6mN/+RL7D5/gevzfGXMlxKSURSp7ch3PKfuaMAjJ138IofDjD6y1kJScR7q1SvoqAhQ7ur+K1lQjIEdHrLcp54B4riqIoSqWyC/v1gv5CilJX/AU7+ngVeRVFURRFGQZsZuufs/StdeWYR5I0c0oFz1lewa/7NP14v4Wo+yuSoc4kSeVfJEX9M0viiaIoNYyKvEo18D/Evv/SL/UIBjXbV+ESyvzWKjLLM0QWqxV+Z2OIfJLotIMpc/0U666knMf9lPM4hizY/cn2faKUx8sKvfvtt98HOxoKmeeee64Um36WbN7HybDdDrF6b77fHK+fcSlYhMF0qzFmJn3lQlwvm8RtE0ahLd08AvF8WZbPD9APJBMpsoRdprC7H0Hg7cQY7RACsROFu/j8t0ot4iuKoihKEZzMWy7Tg6codYXL3N8U+1kDExVFURRFGSpsm7ULs/jeuvG9jaJd4ClZEjUqhT78uXPxj+5OO0PrE/8ByT8nU8HRCr7fFhUfFUWpE1TkVaqFTiKxHqZMhe2V8HNjzD5EK91dREm4aqOHss2Wm+jRexDC9/706/07A70T+h7DaPkP5TsOMMZszXp/KGU2rBV6Hfvuu+/qzN5nnnlmsJu2AuflxpgHKN9txd5P8T2uxth5ZdBf4KO8zpKLMP2DXRnmTPSRldyOQNyIYTla9PodiWA8kujDETkyiZNCCLZZvj/heGRif0p4dwnBuJv/VzdLlO25MtUJUVa61v9jiqIoSmnYi61crsdTUeqKFNkwthrObgTpKopSPQT1t1KUIcH91/Q/VzrGkBRyYIYt9uDfGkXv3dPwJVcL/yYR5iuUabYVLq8wxtxojHmD520FzA3p1Xt9lf1+iqIMAhV5lWrDpod+jQzOr9Cnd1tK+15AX9paxe9Ptgyx9mF69X6DKK7t6Nl7J+t1k/H8CKXTbD+H71FK8df0OC5plL0VfPfee++B+1bsfeqpp3K+Jw/mI2I+RunmI8hS3gvDxvaleG8Yfvt8++om2EefBkRfmzHcSmawE3vbWdp4rZl1x7DOaNYbQcRirv2w/TxO4n4K4VmKun3ifiTN8z1CIPbFYSs2L+Q/WOrsakVRFKV6sEFK4xgrhmNcVhRleLHzjvONMcepyKsoVYcG9SrK0OD+a/qfKw0jED2PybA1VyFvLBXxzkAcrTZsos53jTHP49edTQLMX3l8DMkd1ve4FX7ylVX4PRVFKRAVeZVqJE6/gYfI7PwGvQh2Iqv3hjorDfYyg7wVP0+lhPOOCN+/poSv5VX6+Nrj9mWbcIsgfAnHbW4pd8pl9u6xxx4D5Zsff/zxUm36Lr7rfxAst0P83QvR+0bRY6Ma6GfpLnBfm8XSSjTivBzvuZnPaRYCcjsGcSv310BUbs+xrZQQgaNEoN5HxvhbGd4zhszzXgxN2ZO4W5Sp7iMzOaYZxIqiKFXHEYwJt+lPV5W4jJJQvR+IPAlRdUWP1wdcgci7W6XskKIoeaEZhYoydET5pKge80Fjq+SdI9rF+MTwMY3F7/TNKq82lMTWeh7/27HYXX9C3H2W6pdW9N0Mf2lJMm8URalcVORVqpn3iNR6jAHscJHR+dMsQlOtchNZvScipH2FbN0/0BMvxve+laze2TTt/4IxZntjzG+NMZfmmZWaN52dnWbXXXcdEHofeeSRUm12FZFq9+JM/jyOJCv070ef4ntr/PeO5CgPnY5bWMIiK9iJxC0iW9g9dotbt1UIwP7teCYo2QTZSQQaGNGDWGYL94rbHpY+0Y94Bfc7hEDsrxvRTGJFUZRh5RA+/BL9GaoS1yYilaaKTLkJiKVacMcpOQzHq1JZgBN1ojFmXarxKIpS+fQyv9JrmaKUnx4+oVeP9aAI4P88PcNGEviHxnD7PfyFtcDz+MIfx7dr7083xlwnfMKHGmO2xHf+N02gUJTaRUVepRa4xxjzJL0UvovgN5Mevv+os6zeJfQqfowotqMYyHelV+8TrLcMUfcpSh+fwHo7U+r52VLulBV6d95559V9eh966KFSbfpNY8zPKN9txd7P8p13JaP7D6KPsfIBcVFmuRgaiJZsEkJwOwLsgizbW8H5OUL0Hh4pylNPFFnFmejPUka6m6z0+7K8fxvKiHYLUTkiSlfHtAexoihK0TTjXLD8Tw9jVdKHg79YG8EMos9cA7fVJPK6/m6r6mzOkYubscmPILtEUZTK5z3mYSUN+lYUJS2reLKjDg5PqIw20mkkEqTTNxL4eNp4/CP8orVEN77dF/CH72GM2QL/7rn0Jz4WYXsm/jINvhscjSKJSlEqBhV5lVqhA1H3OcRNK1p+jAzV3xPhVE+Czb0IvQ8QzXUc/Yt/R0njpaz3AMLvo0S+2Szg3RFHL0K0KwlW6N1hhx0GNmXF3gceeKCU3/dBvu99GDA2Wu1LZPZeQzaR9gUsHa7EdE+BW1xMhGEjS4voN+wygluF6DtCvN4onhtNeWq3rMk6dvLwzxz7cDalvXsw+J3Y2yUyi2Ni6RXlpDvF0iVE4j4hFrv3qECsKEo98gki5V8potqEUhn04ODvG8TeBBFqC80Gi+CQqyaBoQubqEOFkQ/xD6oGfUpFXkWpGpqZa1VToI2iVCsj2O+2OvgF7XedYIx5rcTbtQkrP8xwDBPYlS08Pg+Bs1b9NPcw/7Ki99co43wZbe6eJLPX+kg351jcXgH7XK2MEj51RakYVORVag1brvgZMlFPoWfrPgxy13vfNVjjQkwPYu0cBNwTGMx3p/n+f0Rf1T9x7E4lE/p8+vpa4fzfpdqhrq73W+Vut912q7N6LXPmzCnF5vv5je8VZZx3pjSJLeV8NWVLVuWxLaW8OBG1O0/jyPW6c+JwmycKtyEMt9NzOhu2h/VaogfxeBwabtu5kL2IY/zPOkVm9EL+Z5kmMK0EoCTIRF+o55qiKDXEp5lfaKnm6sVl0+YzJmYiytjdXaBYsIj3VlNGbAPfsbkEfXlbcIIG8xTIU1TxySbIT8hRIWUwBLGHlqZplfEwt5sYY9ZjX8shHKWoFNOVZZ01hDO9XLyXpV1IA/vQWsa5ZyfHQVEGwzoIAOonVJTyM4lPmFQHx9raRz82xtxBEFgpmEWm6ug020riq2nCVvkDn1/r2ZcLKEf9AskVx5K9exEi73EE323Osfur+keLQrN4lYpEjTelFrGOjl+T1XkGvXo39UTebSnjWw/9L54nmusuRNx9EXD/TpbzG6z3LOvNQRw/lOxfW775YmPMvFLtkBV7t91229WPw+Gwueeee0q1+ZVkLN+BsG2Nv735LvvyXe7VDKOqIiVKKPcO0hD9BaVrWkQfYl80bmeRfYubxDojvWzjNXCG2/XeJWgiEzbr+F9MdJ7FsL6ivn5ORVFqGDe4X1dkJqcy/LQxR2wr8jcMEsDUR3ZrIcJefxWeM6OwEdYoYm7dhl2wGf+dqcaYDbEp8hG6U5TmuyvLOj+hVUU5jmuYkn/fSBPc1s1ca2OCRtcow+cbzpl/8BmZOMcYs0OZPt+d30dnCfBbm/YyG5cx29sG7367TNtW6oegCPRRFKW8uPGjHjLnp5CEMQs/3FWD3J5N5Pkl7b58knxGEz6Xy7CV6qX3sbUfL8cG+zpVVc7jeP2ZpKhTSezZluefyGO7ygeUrOKlopQSFXmVWuZpsnltBufb3vfciMHN0UTmQK0SQR10nNMAACAASURBVFh6FAH3JJrwux68/2KdKEaQFXq/aoz5DOVt98EwuA+BzUXjNxZ73Lq7P2j1tuWWW67O7L377rtL9RO8QemWWynjchBG5V6Ian+nJ7FSX6xkyUVQLCGWMEKuKyHd4onFo3Bqvpll2xHKym9MVv2OZLnYwJTlei4qilLFbICY0YfwowJvdRLGxit2nhigykUxrQuaqtDZ2YC9kM++j0TU3YQsio3pm7YR7zeix28+/5+AKEOYiSkIx+XIIA2xn+myvkNk9P+cecRi9rXU14V+SsRnY02OQTmuSUH2oSnLOmF+hw3KlKUeIHAwG3tSSeZ17NRFBGEMpiy7UnvE9JxQlCHDBf1kqgJRS+zNuGPFsT/iM7m1yO+3A0kd66R5LYl/sgE75DYC0eqh77GP84e/iG/3+8aYO0l4OJMKjkcSCPh9AnQ1QzU/dI6rVCQq8iq1Tk8G48Fmpc4QpVKn0Keg1rFi94+I+P8aZRX/Jgyll/n+bxMNfiu3eyH+2tIfFzL4B+h5fN9gj1lPT4+ZMWPGwH0r9t51V7aEhIKwBvMjZDNfT7/mTxG5Zp0dV5LZ+45eCRSPZJkcoovpfT2Z/8/X+F9NJ6DiFf0hFEWpUvYnW+8G7Ute1bjfbjAOjAkIf2MK3I7LHq6mlirOXkgn3oUY3zemXN6mCLwbCFEwwtj/HI641xDI8xW7c2VffJ/WFOUSOK3j9K00ryVxrv6c7/UFqqGUWsRPiKpEmbDZzH8pUwBBgHlRumPgeBeH6tgyndepPOYyhxhjvszcaAFzvbksdt9f5flVOUpfK7WPOq8VRSk1Nsj+m/jlvk/Chc3s/V+Bn7M5IvFGaV5zbbUaWOZQqXBRHf+aXVSye5as3k8S9PYn7LPZwie8FYkHC4r8rBZa5a0koEzngooyxKjIq9QbrhxrJxPd/xJBJ3sY1Xp5Qft9H2AyfzeRbV8ko9AKvddgDERp3v8GJa/PJFPROUhSDOTSEdfA9gs+fr2971dP2XTTTVdn9d55552l+s49lG9+mijCU/i+P0TAvtQYc632o1CGgDiOOLs8xvIb/mMb0D/7Af0hFEWpQnYUZdHUSVy9uN+u2N8wgcjr+uUXsp1RiMMNVVRhpzvL3GEkpYRnUAkkRZbcSwifz2GPv4HoVkz2cy6GqwRfCkdhH9/p0TKWKs7FM4N7+6DpJeh0OLkPkXkDlp1Z3Lm7CDH6HYTfNwg4mIuQ36kO27ogUCelYxWlkqiH/9xNiH8JEi4uwQd3mDHm8Ty3MQ2Bd8sMr0uB90l8nCVrOVfFxAm6s3bnd4wxn6U/8RWUdX6aJIRvYK+eg4+qEGwlp92oTjOHiiFqMyjKEKMir1JvWMNgEoPOJLLqUgx4BtFyGhFmtc5SIrieJLr+sxhNVgT9rTHmIb7/24hQj+GsceVkUmT+HkgE3igcWG8Mxrlrxd6NN9544L4Ve2+//fZS/gzWgfFPHE024+hLxphdKFGyL/2suhG5u7jfjXOml++ewGCJc78cZdeU+sD+Tx42xhxPn5hjMLR/SjTlcDlDFUVRCqVdRNU/rWNj3ZMq0mnpWiRUC2FRLjnd9w3yX3gFO/pF5iBvUk2ou8b/KxGqAh1EtsilFbBP9crNBPeOM8ashUN2Cn2gp7FsTUnnJOfuMuaBS4To+zrC7xKCaOuhzKiiKIoyOJaJdy/A/3glgXBHE/SWjbXwUe6UYZ0oNpkVeF/Az/eS/mYfwlbtOAtR/Uz8v9Ppj2wryp1B1cNp9Ou9NM+AS2tHHIc9+zAt8VTgVZRhQEVepd7oRdx8FzHlHYS/CMchyEDnRF5XSq1W+/WmcDrZCfuDZLgeSRnZv1DKeAEDtswuHMn1w2ZqnIBYvhZOrEEP6H1977cCmjZtmjnwwAPNLbfcMthN+rjIdGuEHIqRaTMpD0ZYi3KuuJ5yEZZ+cb/LE4O7iHL3ReIeshj6REk/FYgVycuUbX6GqMpfU9rx+5xDiqIolc6OZIe9UKd9r5QP46q6FGrnuPdVqnMoTElym+mwHeWXH8MuTBfg2EnPM/u93mNMryfHlz0uVxtjZtGXV0Xe4SPGskqUtw5T4Wo0wc/rUtp7bYJ2NmTZmv9yP+ewPZeXc/sa23uG+aTObRRFUZRczEVkvJzSzceLxBvjVUixPscLECDT4VrJNVAd5StFZKLWC6tIJnialmEHM3/7Jz6ovfAH/4qM6Qv4rdLRyjqfZO73b+wA7eurKMOEirxKvfEWBkCUyPLdvB5KtkTcmpSYc5PUenDGrMS4ehjR9mT6V+3DwH6nJ3RvxrFKcfysOD6faG8jSj0N6thFIhGz3nrrmYMPPtjcdNNNg/uGHyVO6bQX+N4HUF6kVZT1nsy5kA/9LDGR+dsnll7v9S5PEO5MIw5Lkbmf4x3nflLLYdYUS8mYt/+n8xB9pyD0ap9eRVEqnV0IALtWBM4pSrUToFLNdDIcbeWX9VjWxBZenKXyRn+dVAfKRAo72zB3GI+9o1QGceYfnczhHmNO18z1fKIxZh0E4Ik4gjdCDHblMt0c5Soyg9L183XO96COD4qiKAq4fv3WD/kH7i/HB+dsJ1t94mcEi6XD+ciaqJLyDVrOKZlJ0srjNPygZ5HFexvH7kUen8pYb31Tt3u+Ryu874e/6m1864v1mCvK8KIir1JvyKiiCGJakMWKeusbY0ZQync54udTdXSMXiaT8CGE3v1wylyLAPUy6y2mPN0ijpF1dN0rSnZtQnT3oLN5otGoWXvttc2nP/3pgcfXX3/9YDfpY8+BG8lUXhPHRivibgv3W3DkhTAgR7C04/yTt60s47ltyPH5KSEQRxCFo9xGvGzgJM85AVhmD8ssYj8LOSqE4bjIKFYqi37+a/b/9U0mM+sRcHGz/laKolQoIYKkDO0barX6iTI4glVw/ALYclNxbH2McXgqSxt21fNkLLyAc+tA3l8N33GoWWGMeZaM0G2NMXfU19evOpIiWHURv50TaUeRyb4Ojt2xZP3OoHxzprlFiL6LB5D5+xp9Eucxf+mr94OuKEpd4to81HMf7EcRG39pjPk948JzLDbY6AeUAk53jPp5vokKjWcjNir58Q4Zuy8j9B5IUKOtwPJzHu9JS78/saxAeD8G/+gjlH/WKk6KUgGoyKvUO07AHYuYmaB0xRY8dwL9CG6po7ITVii8iUm9VVa/SFTd9pT2uISSHQ0YVtYJsLnXk2ltSoG4wT48mP6isVjMTJ48eeD+4Ycfbq699trBfsd0LPN6hTgCYjE48Fy/j0aWJhx/zUIUbhX3m1m/AeehE4nbhFg8QrxvNIJza459Tory0hHvVorEvULo7RXCcacQhTvF8zIT2b1PZhCrQFxe7qek/FtEUP4R5+jvVTxRFKUC2Qgn/3IcBkpl4Nsv+SKdjoOtGJIS28injGtCVC0ZKtoQrWZQlnYaj9clezFKX7cbyG6YT4WNt7F118EWNMNdYcXayJLu7m6zbNkys3jxYvPee++ZZHJYzLcOgil/oCJv1ZJiHryU5RWuDyH+P+NFQGo6UgQAz+a/vYjtLGbceBvh903+X8uZh2jFIkVRahkXGFaLAWJBAoP682g/dQ8JJf8gceT3+MG+ZYw5KYNu4TJ4GxhTzjHG/EvHjYKJkUxg/bufM8acThbvDdhrz/MbnE07sfux1RfiS5+nvfkVpXJQkVepd3r5/q5H0UIej2WCuR0Cy26UEKmnsqlWYPotkVnHMLjbiK5dieK6m/VSXv8Mw6R9Ayb7KaK9X0jzGXljhV7LxIkTzRFHHDFw/5prrinft/+AlGcsup5U+USdB9IsYZZGjNLmNOJwi7jfzP0GUUq6HadKu8g6bhP3x/Gepiz75r6HFIjlEhFib1Ss1yUE4m6x9AgBWb43hkNH9udT4zs38+iTMp+s3nNxPJ+fpS+KoijKcPAxhK6biPBWKodkET0yXTBRKbLrnKqYr93k1s9mJ0jbKpjDuRQgcK7dE7ubEJ224nYKAYprsQ+vU+HlRcbjV7hdIewZ+RnucU8e37EsWNt4/PjxH9p0c3Oz6e/vNx0dHSYQGLZEoRjlAC0zsU81c7P6ccEYHXlk8CRxIndT4nFtgihmIhAnmHcvQfx1AUNz+d/NZ24ZEXMKDTgtD8UEBimKUhzOPqvmXuaZAgLXJzt3AeWWcwWBusoR3yGL97vGmC/jC/NxSQdNjA3fp7fvUAYI1hovIJS7Us2zsY+vwwd8PBnV+2Mfn8yYrShKBaEir6K8TycDWj9C2dssp7GcSnT/3+k5NGxOnCEmTrSWPTb3IfQeRtbOliKy+3nzgYA5gucOoKRXr+jPNOhevdZZNW7cuIH7Rx111MDtVVddVanHzxeITQGRbtkEYpcV3CRE4GZPFJaP3XrtQhBu98Rh93iMEJnTRZU6o9r1F46KW5lBHBFR/S7buMcrLd3j9R/uNh/0L3YlpxNCGK63LOJVRLW+htD7BTJ6f6q9ZhRFqSC2YGy6m+u7UhkkGFPT9cjMhrNTShGZH8KWaEDMMdgkTaIFhquIEqT3p71/BHZPi3i9UbzXPQ4T/JTJeWg/99vY8NIeCyPoTmE7NoPwSWPMpYhKc1mWYONksz3cvgeGq+qPtYfHjh07YCNL4vG4SSQSw5XBK3EincuUruc+xfVIiv/Xs8xHRtNzcRKViyaIkujT6PEepCXQMkTfDq5lXQRbrOT/6e4v4D+rgaSKolQLzmbOlelayRxO1UO/37rN4j2Ya/JNOUTeMNf40yj/a30eX8evmA5XonklreYu1WpnJcH+BhcT6Ph5fls7Ps9BBO7CF7UntrVN/Hm1Br63otQMKvIqyvskhWMmwsDWzcD1jDHmSKKX/s8Ysxe3T9TRsVuBuP00JZyniUl0UpS66yaD902Mr24isp1RF6JU2yOD2RnrtLKMGTNm4Hb27NkDt1dcccVgNltplEogNiLbpUEIxU1CzJX3W0R2cYvIOG4TZaWlSNwqMopH4LBx73cicUosvkgcE+KwLBPtFlciOioE4i4vi7hbiMJ9Ips4KrKHE2yn2pw/roTOPKIqj+e/9msmNNU8KVQUpfqxk/9tuFa9pNlVZUdmsAZziIoh+plNFy0lwryvSbSfcM81Mlbuxvv3Y0wPisCygBjf2xBtbsqwHwHeHyZz768858RaF7QWELcbYnucxzbc/kmx2K0fZEy/NIvzMIWYu6GXKePO12tFtuCbiEaRAs/jYbUrrA08atSo1bZxhbKAEoxHEBSiIm/9kcKm78eOf0dcyxqZQ0xG9J1EUMhaZIOtS5lIN2dJiOBR11rmCezkTNUkXKBJL//xXMEb9UovQaYqlitK+XGJI71VfKy/gH/vO56d9RbllqdwPxsJ7El7PT+RjNLRWdYPcOx+TBKOCrylI0Fyz4tUsfmhMWYWPt1/035jFlnWM0lIuKXKs9EVpWZQkVdRPkqCaHPD5M+Va3uMiKZZCJlXYVSsqpNjmGKgv4DIPIlVW9dDvLWlVt4zxtyFMfCSJ05u4Im8DcVmi9jsBIt1blmOPfZYc/nll7+/s6m6npumE4hNHhkmgTS3fhaxKzUts4alONzmZROHvV7E7V4P4nbx/lFCIG7yvkNKZPMmRJ/giCgVLUtGO6dPQjiDZInpTpE93MV2+nguIspM93vlLofjxEpRtugsnNBfIpt3C/6Prw3DPimKolg2peTtc2Tr1SrpylfmGg8aGOtCImtVVuNwgVfNvN7KYxdg1exlsDaK8ddlsV5IMGI6bOuRT5A9Ged9QSGsJIV46vqaxRGGEzjajhDrhXne9Z9txtnz3zTCiivf18p9e/txUd0jLsZYOf6uzfafYGyOe60knEgkK3y8l+U36Cco6ipP0Ikj7i7CbhiMc2ol+1/W+YAst3zMMcesvj9ixIjV9nAF00kFkqPofawoRgRiusDOJTj6XQBKK32x16Q61AiuTy3crsF1bkIeou16BGl3i7nCQpYlZAuvIJPJCcGZ5lO1zDKuiyqAK0r5WcknVGuVQDueb888wF43fySumcsRAFvyqPKTYgw4AlFxUo71YwQD/lnbP5SNBH6nq5mDHErbvk6yffcwxnySsXUr5iOLh2lfa5nGPFpUTOH1JV7J8gnMnXK11MjEZLa7KM3rjbzeIa5jSgWgIq+ipMe/iK6kz8PzlCv+HAbIpjx/Xx1NhiJpyrG4SXgfF/p1KMu1EyKvI4ETbHNjzLv0ju3jftE451Z7e7v5zGc+M3Dfib1V4PiqJJxRns6hkUuI97OGjXAm+6WmpUDc6vUklv2IG4Wo7IvEIxGUnTN8DE4g5wxvSPM9nDMpLpzEXcLh0yt6DsdEtrETk50g3CnW6xYlqvuEI1o6sOPCGT0YliDq2mCL040xn+W/ZqNYH1WHjKIow8CmBOjci7O81KQTV91z2a55QSa3Y4SAGRKZqEYIr0Ex3rgxx5UKDgkhNiCCl+w6T9GrKhM70+YiJDJhG0WFDHnfZaca8VlhIRCHxJgaEsfgziwib4BxciRCrHtPSgQwpbxApgTBePa4/UU8J3vrBoTw+2KaADLZn20hY+B7ZHT0ibHRX/qooLMFQU19XiWOpBB3pfiSyz7JVHmnVOLNUmyCkvfLD4VCq+9LYbe1tXX1/TzsXPm7DyeP4vTdBWFO+3cr6Uh5AZorKQcZENc/WV2gnTEokkNICFCJahRLmO27INFOzs9l/J97ebwQx/US5rCrhCidTHM9qnZaspRIVRSltDSxtWr1y++CEHgDGb29BNM4m9H3Gzo7OurZ8AFExJ8Q7JeNBL1+f13lGdCVShDx/pOMf+czJtrf+Rj8T7cSuGefO8gY8w3aLVxIYpT6pAZPgGomX6Un8tIMW9yNXsnWxr5GCK5Wr/gUvvnLmKfnS4DeyyfQwvIGWjg6ApRTn8Ac83Na/aNyUJFXUfIniSPNlnJ+mYvpbITMv3Lxm1dHF7iA6Kvk+intx+S4h7Is72G8Jom2bmNSfjLi+Cj6Oxgm7YMSwmzPMef48sVev0+ZUnKkQFzob+gckDLDKF0/4kaR6dvm9R1u9ZYm4URv9jKInUjcLDKtxnqZVU4QkCSESBwXvQ57RW9hJxb3e/2Kl2IQvzHIa4T9jOtxJp+BYW0jaB9Xg1pRlBIgRVW/uoPxBNYWSjUb2jlIsc+Ji1KcbPDEy0zPNYvXmj0RtkFkxF7NtTXdNXUswTA78rhBlPh1TrWgCAgKe60NEqI8cUCs575PiM/PJvJOROiNiyhsJ1j2s72ICBZygUcpxhE/ezXp3QawRzNhxYiHqUhzXZpArnS3KZw1e1MuT5JOzEhkKJPnnlvMOtbp8K8045T/21mH0iZ5lPYrhHLb5Z/ExvWr3BRFQ0PD6rdJYbe5uXn1/QJ67IYCgcAnA4FAM+fUcNkJKeYJy7lmfI4giVr1RXSKwIkw58ZSgltNGc7JHiFCdoms1lqZk8rrjjuuEb7rsjy38TbBI2uwjMT+H0/WmAsWXV/MGVLCxu/ms5bhNHUBn4tZlhMMvrLKj/smOOv9OZCiKKXnUK4X61fpsbWB5z8wxtzN9zgde/aPGSqkbMd3XoggGMOW3Y8s4A1zfJ7d5u+MMb/QllVlYTw22rb4cf9HMo79bc8leedEkp7WRTi8kN69RzJ+/B0/b67s7XIjA07dPNJPVKpk9qWK6H4c43Qi79aUSZ/rZfFOwU/YTf/kdeirXEj20+nM5ex8/ovMJ932t0ALsb/zIYjJt1fRsa1pVORVlMLpIUrGOieOJaLpB0Sy2aawdzDpqwfWINKrE0NgQ0rHulIdVsDdEgNwcwaaRTiGl+KMcAOWy+7Nd7KeFuf4amp634crxd5oVNt1VCi+46ZQpCic6X6TEHxbReZwqxCNm7iVYnKz1494pOhB3Cgi3ieLvoZSKDZ8vzhiw+9xuA8mxTxBpvxZCCvPqsCrKDWDn7maTmA1Oa4hAZHhFBDXJtl7NSiCWWQJYVkauEU8dqWDnfD5IEFvu+GsedXbBzvZ38cr9d8gPteV/JW9YV2wl+u5GGK9lCeyNnL7WJbI5iA2ykQhqAa8Sg4xIbS6IB5XojMq1nGCiS/UZsqgdTyGfRgTnxETJYgTQsCNep8fE68nPEFWCh7Z2jDEKKF9W5bjlI5P5VleLxMB0RM/JkTxfLLdYoMcH4eDn+JQsVHv3yv2853dKoVdKfgWIOw6xgQCgcMnTZr0tWQyOfbtt9/uTyQSw2krhBB67Zc6G1EsmMf7qpFekWHehM34tshQKofIO5851hJ6IL/JtXkl/+XOPEr+1TIRnJAyUCckAj/HIvSOYewYgzg/jvN2Iss6oupQA9esHo7ryULs8GlmrhDwqgYlK0yQn853m8x/VLNzFKV8nMQ1YXd8BNXGQyIA/pdc577O9e3SNPbcpohHdv2/cQ3cnQzezXJ89wRlgn86iPKzSnqCVPHZl9/wDcZLOQ/owNdtg5m+wlxhE567AqHRlnP+GQLwpQSiDtcYMgPfsx1fP8bYXC0ib5h2OzPTtLBzWNvlTMbrn+FDd5ntRzN+/4BWOeci3j+W5+fb328HgjLGELSxDdnClgP5vIuwj76JBqL2QgWgIq+iFEcc4fLniC3HECVjMzb+QXbHUzXegN6V+1uBo9c5D14VUT79GHNPIfwuxJC9g0FoqVh3Mo4JF3XVNpj+JK4nr3OQWbHXZfX29WnrjhojH4dVpmjPdOKwfC6Yphdiq1deujnD/RYhDm9D5OqGlBe6tgQRqO8RzWpU5FWUkpCpL7l/P5ejfKwIBDHCoSyvK0GvDK+7bRaipywl7IJHWpikXp+lB+hEymmtn+YaFhZVDJrEduX+hIWYGhBisBNk4uxHBxk/NyIoSKYyqXZjesKLqnZVH4LieMrS+FGRtSqF15jYxqosE8pVTEpvEWU1jSgRlxDbl452J8wkxHqy5L7fHz4b8xB2UmlE2qEgKPr9FsLMDGWyCyEhfl933rfkaddVm+08g2O8RTFvbmlpGbh14q4s0exs2QIJEDg5e8SIESc3Nze3L1u2bHEqlcoWEDAUxJgvyOCNWrVdGkWgn2FO8zGuCeXwvzg7013bk1wDFyL4vsftW1yrl3vtShJ14pxLpjnnukSrgYA3Jjdgx7cJ4XcMY/xYIQhPYh4by3Ic1yHjZiJz4hUsS/n8Zcyle0VloKjY56H6r7ha8BsSrK1OW0UpH+ux5a2r9BjLDIoefKPtBKJH8YlKm+4ZskMbuPZ+HNF2Zo7PSVIN5gcFBi0quWnBjt2L+dIDtGJJl7QUw/f9Lfy7J5PZexePX0ZgPI1Enz/h9x0O+/MQMpPbmA/fOgz7UCwhyiPPo0WkTxARdlcq48z3Xh+Hj/BeMnDPQ7DNV+Tdl9//Ja5RYXSOR7GTdiHAYzH/51Nph/H6sB85RUVeRRkk9uJ3E6VSXVbvqQi+vyFiaFD9Ziuc5UxI+xiMRuPYcE7SgIiAXiEcxY/iAJb9+xYwODRgvLUPRuR1OAeZdZr5JZx7ega9eaX6SeXhaMwmxqbLHA55YkkD0alfJPLtfErCXYrjbTBoerpSq/gCq7vN5ewMMH74GaJB71Y+L0u7N4qMVVkBoEFE097DuJ+JLxljtmL9kBA1jBBVA0J8k5mOTeJ7uM8Li+tLC5Plh7KIvKOIsN5ABFIZIVIGhejqxFWXjRRhDPdvo+I2wvd3Iu7TaaLqbxAR3AkxwZeCblwEjPnCa9x73qTpI5utp2cMZ9Kzw+ikTnnHfzhwgQGF8BIOn8F8b1dyuzVHv3+fdvG/rBYB8EEi7ovKSnW2aSDw/mWuSGHX0cK+2DJtuwWDwa5AIPCHlStX3p9MJnuGWbBJcv1rY94QK0EwQaUix69+rsU26PVmr6d2KXC9t53QuC6fN5nM4fVF9YYIc6x3mYO9SyDKm8zDXIZpl6giUE/41+w+kcn0urD1nQ3hKl60Ifi+kuU/FkLg3Yzrq3t/UgjuPWReLxPLcpGh3Sn6Afd6VShK9d9eiYBtNIBUUcrOEq4LtTIW2nnJj5m/nMW16gZeG4l4eCbrbSrEp2wkqUhzNuOUUjomIBRuxG9yI+NNrrHf/g5/Zp73dao6bUP53r8gEm7PWPdLWsYMtU/8TfZrV7Lkq6lUs7W//st8/ttprg8tzPNfRsgNe7bLTYjuRnzv9gI+/+PMBQ3bTolKNNbW2Zh2lUa0DdpORd7KQEVeRRk8SQat3xpj7jPGfMEYcwDZev82xlxgjHkOI6fWiIsBZRVlOpoYTFyvo176NrzIAPUqE9aJvG8Ek2P7ns/guA4zkb1bCMaDQjrNpNjb1VUvlbWVMpGvA2Qhxubb9Nf4PgbShYgl5XC8umzj5frjK0WQKcs9nmPyN4pretDL/pQZfTKz1ZUJDoheqy7rLyAyokJsdwFRo5ku3q5s0BjeIwXbsMhODXv74pcUlmWGQ+K/3idEzkxsLgRQl73qT9Bc9mhMjKOup3dMONhltmlUOOqzDV5LiJ4ey7oxIZrK7SXE8zFxG/deT4jMTCe6thOoEqN0l8/TXjnjVIb75abes5CKyRx+ugQibyvnamuBnz9SBEIMd+ZpvtyDsFowI0aMWP2WQYq7hmj7WcaYL1M++olkMvmnRCJxczweX1khgo28JtbTf/MBxsYlZdq+rP7QyhxrAoG2k4TwO43nx+KQdWXwO8jIWCQyfueSRbJYZJdGRHBOPZIS42GM45Ip2MrnbcSPKVznXAaw+50m4kRdR1RBCHO/lzHfjf1LRR9gmQn8VglEkOWcH/1pqkDUUp9nRakE3uW/X00CVC7sOHcOWbeni16hU6mu8xKJIX+kVHM2UvgDz6aEsFIagvwee5Dt+jwZn4VkSffh655Pf9ZTCHK+BYHS/l6f5lzYFqH1ySEMfr2OXsEdZJhXE26e7gLW/XG3lez3Do77Uip8ueSPR4TN74LH5xXw/UeKALcetj+Sx1OwWZw9df90BQAAIABJREFU+wZB12tW2TGuWVTkVZTS0cvgaIWcO4mi/ySlKi6n78SiGo6KjfP9XFbUxgi495HdfB+DlTMeVjFYTGBCO5fJ5LtkRO+MM+LKwfbp9XF9zY499lhzxRVXDNzv6NDWHkrZmYeD5016mRxPRP+PKHNT6qzcXTCu/yyi+RRF0o4zr0H0XG0WAQKuJ3WrKEv+ICJrJg4jY71RlOSUmUsuIjQsHP7O0dwgROEmxsuQeH8bzoFXs4ico9kHVyrTL8MeEOV7e0WJ4KhYYqI0sBM++7jfxSQ1GxdSkt2J4XHhHJZlgWX2qhF9TONexmvSE9cTObJYraBzlciGlHZHqRy0U7jGvEi2rE+9iTi1xFrD/F2qrU/rtGLeNGrUKDN79myTSAw6WTJMYMm3ufYmsJ1/TaDFcGeTS+r1uhAto8BrhEMwxhi1mOcDItt0FP/tCYyTa3PuTiNAYKoo8R8QAqYTf+djx85FTOxgXHRVHirpPKtEeghkDoi5cjPLCALTRjM3bhM95Sd4gv1UL9AuRRawtWP+TiWxTKzBthNehRGJK9e8K+eN+78GEYDvrzFBSlGGk9F89qga+xUW0GfXlqj/FePJdVwH1yS786A8tnM/Am+6eYZSHA2UB/8E4/etZGAWm5D0ChnZL+H/PphA0ZvxQR3AvHxLqtndyjy13LSTXfpHr3pkKWkUQeVG+D3yxQU99nM/yrFxY3xLhiz/Ruw161ffD/sgQia2X6Fwb7Z/XwH7lRD2QYR9kpXGZPB6jHVqtTJP1aEir6KUniU4V19gkDudMhY7kVlzdwl6cVYqSRF97PoMzUXUmssAkBQlIjeixEMSJ8Kt3NoMqdmIX7tgIDwsmsmXBOtYs0KvxYm96Vi5cqUZM2bM6lfsY4t7Tr7uXnOvy8eKwv/iImPMa/Qz2RVB6Lf08y5ln5lJRFZuST+Pe7S8s8L1dwSiwCwmeimRNdIgMmcbRB9X5/htzSHy2oyhHcV7ImJscCJmTIibzjncK4RQ50CMCnEzyjbn5pHFeg73+9Nko7rergmxfT+bVWa9pstizZVhWMhEqlwk8ii3VSyu52cjWZ9+LyClutmpBHvvnByFBja6c7aahMBDinmTtT/7+wddrMY6sY5grrEl2YL/R0R/LbeLUfIjJYKXVnnX6hYExfGIiGNwFE6lH+tUxvPJImCoH2ef6ye7UGT9OvG3R4yl/Rrs8xFkNrCzdRalWa9RtIsYxTJG9Ageg50vs7ZzXVBmY/dF+e3b0wSBuUpbts/ikV5ghs3s+SelII0Q+aV9lG3iGxDVVGTrhVruz60o2ZjKaxNq8Ci9Y4y53RhzEtmdVzPe/Iy+rbl4FIE33z6iSm7GUop3O4J0Hy/RHK6TpKbXqVh3NL/7PQQ9b087wwuodPV/QzB3PA2/we/L+BkT6H2bEsHqLlAql+3jRNFexu4mfOY/EBVCMm2jgWCJGxB2T8PnNydNBb8TqCZTiNCd9AJu5X44n4ofkFtv7T0qFhV5FaV8vMCF2homnyVabWN6SvyOyXBJShFXIDG+u7vYP4ZR5wbzFBPU6Rwnl0b7X8q23IET/wtkJWwuosHml3IQcQ42J/am48orrzRHH/2BLWofW9xz8nX3mntdPrYsW/Z+UvK4ceNWP5b3/deUmiRG5u47lFW0xte5RD3+lCzFUnA/Uf0n0h/lV1QUyLe0nFJbhHESugzvLXEuRHEwuj5vriRgr8hw7RPLgzmOynUi4toJutKpKZe4EF5jwtHXLyJbk0KodQ7rbIFS1sF4sZ67ZaWVEl8pMgVrxjnb0NAwsPT2ljSmrNrwS3QqOU6bQo+PtfNKIPCuS2+74/hP3o4DbU4Nzy+U0uHG9cViiwFR4WMCc7fRorevy/rdSASFRRiTV+FcXMZcba64XSwyfmOa9ZsXLjO7O0NFq4CosjKK3y1XoGgbv2FQtNVwuF7q7vo/hoBA2bbD0Gdzf+7HhUhr7bT3cPBnsgnseXQo+9otvl+f6PffLe47OzQlhGT5eSnvtZQGFihVhi+m1Br2GnEN140eMng/k0fWn51bfA97RikNU+jjOhLx9Sl+k1KRQpifT6vC08ng3YDPm0fgkC0vvAnnwpwytTQcjx/5Ii+IKkyAWySHnRwQwUjZiFN9chzrPCVaReUj8kZZdzrP3ZOnn9u1n7oef5/VGL7KvECKvBPwrZ+QxzYlQfHdXdUP9zu5IP5+b33VFisE/SEUpbzYi+F/KGNhM3u+yORnayJhr85RcrGakQPUM5SIMqL850YMaHsyENsSH09Q138ZUUkvUeLjFMQwGwV2CVFLJU2RjUYzJzgec8wxpq+v70OPLe45+bp7zb0uH5s8BeJ0grFlyZJyVnpThoGXybB9jXJGx+E8sxGu95Yg63Yu0YCvkjV8DkLyz7kmKfVBC5kZ++CY2wRH20sI/w/jVPP7ssbSZLbG8zgvn2NRapfRlIdayIS+JggEAmbNNdccWN58800TDL7vd6vDsddG9u9QAftRLVxHhlzePYR9u7JAWnDafM0Ysxf2sA0Qu0x71imDJEWgV5eXZdMkWuyMRwQeh0NxKsvaOJFdq4UubItOxEfX63c+y1u8JlslKPmTwkHfkyZzJxNX44QOi6xg54hOMTefzesP8Tu5bOJGnL1t2ACNnBMt4vU1cny+neMcy3nSJ0TZuFcpRQb3uddiwjEfzyAGxwlEfCyLg72Z/ZbCsJ9RLDOL/ee1FYVSSl5hbl6ucrLDzSv4IJYT0P65PETtlxB479YzrSS0IAJ+kkCch8jiLReLqFL3Mj169+Oafy+lk/cj4HwDkhD+XAZ/+Gyu0xeJ5xrxg+zFWJgpgKCJEsctjCXvZBF7lxHAcD7j33+o6NmWoR2CJMqYeopIfDrfC2QPeLeSuPCHu4SpVu+9X+PacnuOffGROmETY74LCIyJoDCDTThCM3krBxV5FWVoeIdSzc8RwXQcfSp25/lHSl2KuMJwpbuC9N+dggHwAgPDXoi4fxAloAzi128QiY+i9Md0Bt4/4Ygs+3HzHXHZHuda1/Zfs7gsIftY3vdfk1x11VVFf4dFi9JVAlMqgCWc97a8zXfpj7KWKN/cOchdXEaZmtfo13cchv45lNzN2ymtVB2jmEDZUqK7kYUzivHmj4i7z5YpglapbdZiHL+n1gR927M/Ho+bww47zLS0tAw8J8feOhlL56nIWxCPFyLyTpo0aTAC71gcQp/jmm6DI39BBZxabQWjDD9RhFo/U9T1jh0nlilC9F2XZSMcnt3M2/pEW5+3CUp8g/vvCUEvqlm/JWUeSyas8Hsnv+srOJCDooVHgPttPG7hd23AERzJkflkhf2/Uma6QWQiN7GtFu43ibLUTawTFvvS4FWCcfddVvOTGc6bIO0IvimCG93iBOQ+3utuI975KNeNekGREZZ3cji8wyJLLKmicV2zCJE330CNamMe14hzSHbJVfnkdUo031bvJ0aJWIMWSpvhd314iM61OILnXD73FFoFPEQ1uzfJKra+ry0o3/xMicb7MWTx/pNrsaOV6poHcJ6lE3lD2NefZJx6BRv7hSzf82Juf4VP+/I8qp459mdMcv2M/5Nm++naRCXwr7vAqoCoeObYEt3hTNZvLcBvvoTfxfD/bREi7wLstK3Y300Zq1/Oc9tKmVGRV1GGloe4iD9MnwJXMvMGJj1za7gnjWso30mfsLe5vw4OsoPIMNyXY/EIE7AEjuQX6CdwIv3HZnLc/l5Nx80vASkfZ3vNiAzfYrj66quLfu+CBQvSPj958uSPrGOfy7S+kpE4EXYL6akxm6yc6fwnBtuzJInTZgERlScQYfl7DNOOPLahVA+tBMLYScy2CAExIqLvxPmVabKiKLloIALb8rzoKVhTWBEulXp/rizHXjmWynHPf67K2UT/BQWxOyu35PMmez719BRcIa+BKkCn47Tpx1a+CBtaUYYDl0n6tvjsII7HsQTyjiMDeB2W9RB+p+NEDOB47ERUXIYA7Pr8voMYvEQIb/1e33ylNKykdVK5eJtrlhOG3W3Ye86Vu2wUpSIbxNIoFikMjyRTOZNPIMW5+XHsYpcdFeS8CogSlIk0ZaITolR0Mk0J6Tjn8uFZKo7ZjKeD+X90iZYoLiC+V5RSj3qflemz/f1S0bh6WJc9zct+qEKaEa9Oz+M72uvD9ylBqwyOMOfW/lzTHsQPPdTj5ZtUqHsWH9fu2ARPkLBzKDbtBjy+pgQBi4dwnb3Eez5BMNn9WSrazaTE9OXcP5Fjl8tv8k+Ezl9hm38FX3Y2DsQXZ8exU9MIvEb06vVxgUhbUC10hKjuYXjPKfj+buKYH0rmdCP+oSi/Szph/U5R1aOB7c/ltQ4ywV0w8AzGsodyfF9liFCRV1GGnlWUcXgeI/9kY8w3uFBeTJniWu2ZmSIKyKXC9DNQXMlk6CSivLYkK+HPDMYJJveXMhgdSNnrrxP9dDERf7l6EVU1RTgFV3PUUUcV/d5rrrkm7fNHHHHER9axz/nrv/vuuwO3U6ZMWf1Y3ldW8zSTm5fJurURr5OJbny4BNGNz7H9l9j+j4js/JEX6ahUN+vQ52ZtAgcuJlr1yRIEDChKEwFq3QRe1Txy7JVjqRz35HM1MK5tVQH7UE0cxL7m6jE3YPsUYcu142z5PI6Zt7nGX1vDJR6V6iUpsn5fFd+iGdF3vFf2eX2W9bBbNmaccf1al+NA7MCp6XrULsaBuYRlOUJxwms3oSJwZZEqQ3nuoHBGR3OIvI/i/A7wHpchHMT5Heb8axBZxmECKBu91xrFc82s05TjnJtENtnGYl+T4lyNiQz2WBox1/0HIkIc7hOPo8wZX83w+QGRdd8rymLLHscJT0yWgrf+n0rLhrX0ZTwayag8AwEsG0toMVV82TrFMQI7fmf8O49luR4MBb3Yq/MQTY9HgL4XH7C1a/dADN4c4fPNIs61EIuNzP1XGiHX7sfvKD38WobtTMfffCn960/Lo+yy4yJsmnOpRHkqYnY69mVf1kALSJe5PpJWhWtS4vq/4rj0IDwfiX9nH5FEZfCVn4BwfBrHOIzIO52KgcsQo9OdG/cRlPFZxodWfPCOBwncmMFnPVrqVopK8ajIqyjDx4ssTzEYHUn2xO5cgB/N0RC+WpHRpUuZqEgBdz8GpdPJWvgXBoDr1fAsYtWTHLfDGawOFCVIi1dDa5Tu7uKD4o488si0z3d1dX1kHfucv/611147cHv44Yevfizv+8yfP9+su+77ga32vsU+dvdrHGugXYCR9h0CQdYl4OEfJciaW4JhN5/tn0S/1vMx2Gq1kkA90Y/BfiVRlQ/iIFWUUtDGZHF+ln5GNYscS+W4J5+z41qVj1eLS5gJlFP49AgW8Z7hZgnHK2vUvrVjrO0jz5c82Ixx+kTKkN5sjPkbt4pSTbgytn5Q4SiEr4ksY3Fqboj9Ow7xd1MhyhnRl3UlyyrmfxHE3oUEFS9mvrlcCMX9ovSuilbVT1II+7mYn2fAY0BkDoeEANzolY1uEAJziPdmu8h3U73pZQThVuyqZpGV3CZKYMul0etXbDiHZcZxI8G7r2UYx5vwnRwhROa4EHYTos+xE4+7RClqV3I9JrKQXUnrPiFOL9GWQHmxkON4QxXsayGEaBH1zTx6dXdQzvkflfUVqhI7Vu5JINVbZHFWil/UBZs/g5/3EK51L3I9nIXouBG+8NsK8IVvTOLPdLKCz0rj00qIbNRMPC/aEH2c20xZvz5J/GmtlKH+Fe0In/XW2x1f3CQq7F2RYXszEINfIyO7EQHccE3+E4kgP8Bu+q3wl2+F/WPHlWMoYf0HXrMi9zbYTWMyfHYHfYvPwqd0C0kijpvJDP46x/7UPI+RMgSoyKsow8+dRPk8QGTTcVzUryGaLVuz92rHb7L/LMsTiN6HM8BuxwD4PyYSKTJ9nyTS6HgGmk2IcroIg0EFqxKQj0NSruOvP2vWrIHbzs7O1Y/lfZ/rrrtuoB+i4b7FPnb3febNy9ZeqipJYFgtIZt3FkbjZErAvF2CL3WTVx56bf43fy9xdL1SHgJZRJi3mVS8q73slDKwJRPN17lG1RS2J28ikZ/PP93YaJ+z45odr6p4bDpTOKuLJcj7ggW+381Nq0noPQOH/PPZVpK2Tx40UnL/C0ToW4HqPMbo14fgOynKUNHBIrNJQgi+LuN3DBntrTgzJ7OMQySeQNZNi9fz0fX+XY5Ds5Pnuhi/FgoReCXP9woRK6YicN2SKkA4LoRFZHk1e0JuoyfoNogM4UbRFzEslmYhFDuxeBT9EjORYtuTRfZyk8hYbmSdfuFH6Rf9Hp3AnPR6FTvBN4EQfI4nCkiCtJUZKcTjfnE/5pVk7/eyixNpso2rtUT119n/Wit1av143yNgJxt9tKj68/Dubs2wI2PmY5QlrrTxaxm+rLfwce2PMHsrIv8nuDZshFh7JRU7chHmva7SVBPXmUJ9wU7gdcEyz6QRabNhr1U/4Rp7Fnb7V0Tm8MeoxLMuc4e/Z9lWB9nOt2EDyTl3P768CQSDPu6VOb+Fc8D1te/Fj24Qrc/lmp1tPvEzql4soXy1DBaYy/fcB6H59gKOkVJmAieffLIeY0WpHGzt/2MRN9clSuZLwlgPMvGtxQxfn7E4uE5G6H0b4etfDLiSLTASjsNQuI+B75ocEx2lAhk5cuRqR6i9bxCI3X2fG2+8segv8cYbb1T6KbAeJRpPo/zONZR3KVWZVOtE+xxO/TZ6AP8FgVCpPNYnAvTJNNdBRRkK7PXhM0RhXzSER9xleAbF/ZC4dfZRWKwXEktQvOayboIiKyccCARC66233uSJEyeu3HDDDf/d0tJSdMCLHa/k2DRMY40t83UU0d75RqIPhkuww3Yn+vwsHBoP40j4OI6GbNzKepOLDFJpwqESwkFREUybNs3sscce+e7KuvxuNlhnCs5f16us4HOysbHRPPDAA+b555/PO4BBUSqckTg9x5CVMgZxq437kxEXxmM7t3PbhhjmiCPuLkUM7sBB3IMwvIBlGa918Vov/8WIBhQrFUCDEGtDBDNkGiusDbQWmfFS5G0RwrLMXm4XWcZtIuu4VWQ3y4zmJv4XJ2QpVdpIsP4mInM4IoRiJ/LGxOIyhF1P7m7xX+wTGcZR0XtzbhaRq505cJ8QkuNpMpuVwjmQqmTTcryzH7/Dj+rEtzkU7IYPp+IdXPg0jkLsnUJy02uM3/sylt9CBupDOQI5GhB5rei4C6Ljr7hGTOW//hLXxlwEqXb3Y0TjYrPsf4wf/25aM45mnzbitVLNoYsRs0tFo1ZsqDw0k1dRKotnKFdhI6++SgbrOCFUjscwf6oOfrcVlHB+EtF7NiVfdjXGXIYj0AlRz7E8znr7M9BvRw+Iu/Ic1JUKQGa6ZLovOeSQQ4re6ZtvLr7i4Wuvfbidx0YbbZT2Nfu8v24B2EjHH+Jk+irltTYgCvDGEpRvXkwE7RIiCr9P2ZW/8pyfhZUi2yLT5zZgTLeXyeAMcSwy9SEMcJ1cp4xZrCn6ymS7pkzjGJSSTfn990NgU5FXGUoCOMkPYHy+HydfSIitYe+2wXucTnSVtzKzxTkPW8Sty2Zp9pyKIS+7JSju+6+FxGeExG1jIBAITpw4cfzUqVOXhcPhC6kgUlTAix2v5NjkjzWDGBOqgYBw2HUVmJW7XDhbawJrAxx00EH5ZvFuh0h9NM7nK4mSf7LYYxEIBEwsFlst8GazSQZpr1QshX5n+Vyu15VhoZMlU9nddkTfUTiKx4rHo3EoT8bx6zIg1xf3ZTbwKq5Lyxj73GevIivzPezlDtEjVfZJVRFYKTdOpMynLGsKuyZf20YGxvkZv81CYG4WgnEwj56azzHOt3glsEd59l1YfL68jXvZvDLbOEQLrwsQf9N9p10Ql/qEwOxE5V6OZSfvd8EdUbFIwTnq9VFO1HEp+F3xK+QSeO1vdiHBeCrwlo77qiirfS7nylv4NWbRZ/ZmBN9dsIXXI8D4FsbhAOP3NP6f7fyP/8uyBxmu7jhcQGnk871s13Q0klxxNsGVuQTeZvZD6mopriG3EPR6BOf4OPbtMtodbcz1LxOyLH9KBOVI+vgvufmsm2/1exUOAiK4OSmCgJqzzNFcAI77XL/Ck7sGBvgeSa772jZxmFGRV1EqjyhZqM/TMF+KGa1MSB1NwrCtVV4kA+UhBNz9GKz3IGtkjuh9czdC7xxKOO9PJNilZAE/roZk7VFA+cOPcPDBBxf93ltuueVDjw888MC0r9nn5eNXXik4oSrGZPU1nL/705NjPcqn+P3NiuGvbP8MSiztwnZ9gy6FsfpWhs8YS3mmGWWY3Drh5q98/3STmDBRnGeVsey0/T2+naMf6dmIsqUihHieIituKLLylMrBTcBkxqoRdnxDmoxW/zYggjYaxfulA6+RWymsBphAhyjrPgnH12zh0AsLp1/AcwIGvduwt74Td0PifbIPXsjL2s1ESpQYTAnHX1yU85OZGelu4w0NDQvHjx+/TiwW+2kymdyCa03WXquZkGOTP9YMckyodAJkx7myjYWUbI5XcdnFDzF9+vSBh9YG6OjoyLX6SAIozqBX1qs4mK4kGKtorLi71lprDbzdliP3bRIrAltSqZQ54IADzK233vqRj6rkc9Qd52z431mS7jX5XK7Xa/D/Wwt0s2Sq5iRFYCcEj8SGHcNcewrZwKMYm6YgBPvZwC7rd7noD7wSQXgRgYmLEYX70vQ71bYaSiWTEiJyrkoc+RIjgHmkCN5LJxo3iZLV7rbZe62N/3MLSztLZ4556Bq0HwmJ4L8GYRcnMmT4xkUWcT//4z7RD7xXPNfF0slttxCT3Xaj4nOiQtipRpF4K4LQZ+Sx7sWcA6U6p5T3qUb7+Qr8Gifh45pFFYA7GVf3xwfSiNgbJvHnE/znmvmP/c0Y829jzD3e9vfgWpNNUDWM+1+kCsHNJD7kwtoIv8ZOkCSxAabw3DHitc2oyjcmx++Vbs7rr+/ad/ltvDLNl1Pe/Wzz6gDfI5ChTZh7PchrUSoPPp1lm8oQoCKvolQuc9M0h+/BEJ3BwDGJjLKVNf47WiP3P/QW+B+lIj/J4H4VIu6zrNdBT4c5iFHH0dNsfwb/G1QgURx5OF4zIkVd421Lvmafl49DoZB58cUXC/24JP+B13EaHUX06wyCHkqR3T+HCLx3RJmcdPuRLSshifOrvUwTDScU5SrZ08LkvxxE8+hXOYIJRakIEt16NZGhpRD2lfwIiMXZzeE0oqosJeyv5x6nKzkc5HwN8t8Jcv4EeCyzWZvF4xCPjXA4u+cbvVsX3dvord+UJtM17GVQpERWk/sebQRSNAhBNdOt7Jkmrx9OlJWRxn3i9YSIho6Lnm0u0yLqZU/08B63jQiPo56jLiYmo0nxOJZMJlN9fX3JVCq1UyqVOp5J+eaUk7sTu6so/LHGHxMsRYwLlUoAWyxeRBZbuBZE3s0228zst99+A/fzsDOm4lj6PI6ihwkUuqeYY2FFWyvYOvr7+weE0C222MIEg8EP2SR2PXf+WTHYt1ccbp1C9sFtv9y445yNTN/LZHhNPpfr9UKPjSngv27Po2K2Ld9XQ9eVUpJNBA4wto4QpaBHcn804tAknLeTyM5p5HZNITY5W7WPefoqlpUiK3gp+7CA+1GRSdgn+pMqSq3h/g+F4kSJoLBzm4Q47B4v5D+UjhTVaL4hbGq3uGx+KRi3CTG5WfQ+TnpzAb/CTFwItnHvscse7hKZwz1CIO4VIrF9/lEqF1RqZQBbevu3xpht81j3SmycWvdfKvlj/Vhfw5/7W+ziOfh4bfDVDsaYrdlaCD/whvyHnL/nYyT8/BGh0SVKnc1rd2bZm235/J2MMdcZY37BmJyLVAafj3t+GUL1CP77vVwr1i6wylE5yCXymjzWka9HCwzqVcqEiryKUh00M6lsJXvv4wx8SREB3IpRWBMZEBnoENm7s1lsr4O9hIDrMgznEk34X4TeTxORdTC9He7VvqPKYMjmuPVfk4+tQ9J3Cj733HP57slbRC8+gzF6DL09zqZEz2DLN7/Hti7DaPavJ8kspZINTqsf4Qgrx7UoQGBLJuIY8XPLOBFOIrhm45w0UZ2DIUAmyGs1fo1PRzDNIp0q8n7Qy2ANepmv6Xq6htKIqH7ZYOdAahWZrYE0GaguU7VJiLYBET3sMl0bvH1rELcBId5KcTUg9tt9l4QnlCY9sVU+b8Tzxov8TQrhMyqEWSeg9oksgzBjZ4NXpi4mspKi4rWYeC4uxFWZZdvvZUkkREZuTGQ2JMR9v1RfzPsu/pIXNtPRZu6mUikbVPYT+tr+Htvjd2mC74rCHxOMJxYVMCZUIikEjzDOmUKuxe2i5HZVljm1Yuq+++6bj7jbRNWMr1GlZgWOpYvJ5C0YK676Iq99HIlEBhYnvrp980Vek8G2yUdIlVgx2W57KETefIP1CrHZ/OeyvV7osTEFCK/FbNv+nvb8k4997PXFnqdVfp0pFykhtCxJ8xkhIQKPFLftIgt4Ik7cNbnfzLVwvJe5aPicTua4PQhfi3EOLyGwcyGLC3CKCBE4Uod2oVK/uHPd2X+xDCWZczHfK/ceEHZ2SNj0zZ543CD+7wkhEjd5/b9bhTA8whOMW8T8QNr0YTEvCQl7t4UqH//MEPQRRgDbHuG0S5SaljZ0NI3o3O/Z1cVcSzag1+jOeax7Pf1Os/kSlPrEzRndHGBP2hi+gMj7rgjinct5dwuvjUZM3Y/z8G4qvznReA1e9xlDm5TP0+rrF2QL51v5cQGlpv0yyobv4P53I0VwR1MFCLzlIFHs3EUpLSryKkrl4xzKM40xbzNAtdBQPyrq3m+fpjxFrTIPAfc/Ikv3hwzsVsB9kOirOCWarTByG+vuymBvBbHfMPjnm50TFqK6T9U6JJWhxToGpQPO4BB95pm8W6wup4xQdda5AAAgAElEQVSjzUg/j+jEP3M+X57BKVUIq4gYLoYEfZaGi5Rwhg0nteI59QVWX1xNJ8D6Wa2ZRFZZIq1RCKrSkdKcJpO1wXstLETWZpEZG/bK/6bbHyeqOlFWOliks8d/n0MKiQFPTJXrpBMejVjf3TqhskNMZOOitJsUXRMie7XXE2N9YbXPy3KVpYwT4jn/+VgaEXYEY2a/J9TK96eEkCszdyseRLAYAWI26OVESnd9lRJbv8DGyJQhUjBOLJLjQpWLL0nEjFARVR1Gif/tsGawzZw5s5BxefV79t5773yExzWpyPEl+nlZO/Vceu0X3YPCibilptCqJ0Mp8g43g6kIk4titu0HGPj2puH3seepvbXY89yeu5JCz/06IiGy7hal+doNnuAzkqWV65sTgSdzHZiAALwGzzd4dpYrAdshSsAuRQhegpN5IY97RMBVRAjCWhJaUbIjq8vEPR9bvsjgUb+PsVzknKdZ3DpBeITIHm7jGvFulvLNjfjAvsJ1IuEJuSkxB3ClpXsRgV0WcbdYnEDcKeYTPQSa+/uwNnbxRweaD7MSQe77WXqpK/VLgLnWt0U2aBAB15X/dZm1Kca9Pvy40xn/zkPgPdQYczjv/S+9eF9Lc2Tb8Q1/nvP6W5yj4wrwI8UG4TNTlLKgIq+iVAcRDKt3Mbg2YKCTxudaIurPYBTWcuPzKOWb59HD+FQG800Y0G3mzUscgw6y+2wk2G5EXO1F1KMdzC9EQPed1j6T2J4rL+MyTlaJyfsCjI8QUWUrRb+CTCJwKIvhrtQgvuPOOdueeirvqstxohSPJ7rXZvT+2BizMUZupp65ipKONsaQDbgfFkKrLAEshdiGNGXSGrys1gZROjjgRcqHhSMk7ImpAZG9akRUb1BM/jL1oTE8DqYRGGWGqxFOnbiIZI8Ip0aEdV3PqG7W7+F5meHaL0oKu/f1iPUTYruZyhvLUsKypLDMYJXrucf94nHSE1pTWcYeJTs2kOanxpgnCSTbmxJiF5FRkc7BXzRyXNh6660LGQ8qET+QIV/yKR9Wduzx33PPPVeLYNmwv5Nd32Lfk4cwN5Ps3VlcH68iQPGBav7BlcogWyUZhwtEsLcG0deeuxJpk7rzu8qvSUOFaw+QKbvQBaS1iizg0dhaIxB0XAawE4HHETjTIILWUiIYLCrKukZxeDsheBG3HULkkT1Bk5794N8m0gSDaeawonyUlBBWo0UeH9kyRfYnXpLFVxSlwtfNourQCK4pLpu4VVQHkm1SAmIe4ovDCZHR+Lwx5sviumbfty7Vuz6dx/eaR0WcpQS1yOzhfp2n1D1H4sdayzsQKzh/LdsYYw7CX7CxyKoP42+9iwSg22jt9ymqOdpM3Tto5/emOIebqIY3hc/ZmPF2BMKwolQlKvIqSuXjHMQviQyf0Uz83hB7Px8B8xkMpTGlKitY4SzFqH0J4fZLRG9tg/h7CX1MU4jklxER9imM1ePpv3AXYm2E4x1h24+ITN9WRJBHMW634PdYhcGxAQbHQspqT0SIjggDwhkWo0Rk5Gje7zIwXQnQWhbpFYF1tu2xxx4DZfUef/zxQg6Nrfn3XW6/Q0TiVISJBzR4QMnBKM6XT9PfZk1WD4isVb9UsFM9QmlKjQU88dU9785DmU0iJ/jOmRAR4mpKiKqy1K+foRoX/VedqNortiedmVI0NeLWL1cml6RwckTF+sk0js+Et/18yz0plYsd468hEMwGkx2NU2sm5emeKodzyo4HVS6ouP96oWKAzHofNuzxd+NyLuy4veuuuw6slUPgtc6oA+gDOJOgwN9RgUP7rCtDhjtP3a073yXOJrW481uWfi7QVlU+IC4y5rKVg24TJV5HcduC2DuJZTIC8ERu10YUcsFezv7p80QcWbY1JYLZenlPn9cX2InH7vmoyDCOiJK5cSFyp6sSkvCC0aQdpSKPonww/ygE+x+63RjzUIbqSM08ltWQmrjGjPD6DreIa80IIRi3ez6FFlqaHCN6E/vzP0eSbXzWGHMy14xOUaa+UyxdItM45gXHrsjj2Eh9I5nGltQAlcrjICrZ+AKv4VyZyO9/iDHmE5xfU0SLg5Co8LUYn64NSrjWGHMsWe42wWcPquVcQTKErYx3gTHmCVqnHMvY9pt6/0GU6kZFXkWpDnyDZJFwwLsyUJ2UaYlipL1SZ7/tGyxPYAR8luOxOxk3N+FQMwhir1By8UjKgxwjsqfiCBm2H9KZGM0GkXgk20xiXCzmtR6cdDYibHMevyuc/KMxXp7EMN6S9edxLZ7OeivJRh7usrfKENPZ2TngSLNOtEceeaSQD1+Eo/gd+unuQ5DBrwhqKKZXkVLbjOMadCg9b9bHEfAuTkfZs0mKpH1CPE2KzNWoWFcKsVEhwia9ErcyO1U6H6WoGhHX5ITnIEx51RdS4n2JDJN7RSmWR7jGPk0W5mz+Q/Y6ex3BXiXDjgfbb799oWNBJVGV/absMTccf3mbDTtu57GeDQL8IoGF9vp7rzHm18aYfw8i40dRSkK689fZpPJ/4B6bNL1+q/haVWnIctCZ2q80C1HGlYQehSAzFgF4ghCEx7JOk7htEJVUjFf5I+GJsAlPmE15z8tgPJnJGPOE4b40QnLUC7COClE56lVXSddiIuFlIvv7qyj1QKzIdk0BIQw3etWaZElpF9DhsNeNDbnfL3qSuvsuWC8oWm9sxbUolKEncDLN/DMiWs38APEuHWFass0UnxdLE3Dork1SkO4XFZJkFZqI995V9BzN1K4lRJJJyPtceX2S2+tP85zf1seIa1wQYTKbX8dV4kqH/G7+9h0B8XmOcs6l96IF3/oZXm8W+9PN90/hP30NH+2JHPMW8b6F+H4fJJP3eILZT+U8uYHXX2C5ETE4SHUdRalaVORVlOrEGXEBDKxWIpL6EDK/SHTvtUTE1RNPkNV7H07YQyn/cQAlFucgpFqD4WHWtaU9NuU4tmBQjMSYkI7bXgS17TEmrkQINhhvCxB4Z9IfWfZ/mEc/v30xLpeKDOGVGCNbc11eQSb2Rvx+XeyLm+gmPCM4nkbsGCq0F3EJsY60nXfeeaBM3kMPPVTIhu3v/y+yzb5Kr79fcA79RvvfKPxXbabujlQ72I5I2CSToJuoUtDnOclkeWH/OiOdailvXb0uKLXGe/T0t3bDaTgEfolT5zc4f0pGkWOBUiQ77rjjwGLyFHcdOdZtwKH0HQIEu8kcuKjU54uilBr/3JaP7fVJ4pc21+tWWXE9d5dn+BBXslVmAzd6JWDdbavoFdom7reI19zcuJn7LeK97v5Y0a4jKOaHUhiOe6KH37/fz+5NePPehCg33S0yjV0Z6qjoORoT96OipLULRuwVNq3cj35x3xeOnRiiAYRKrZASGbOF0It/7ScEPDrkQOCC/Rrwe/2RYMm1RHWCUfjc3H3Xj3ikuLY08vwfSdRIN79sJyP0cP73AU9Ydfvl/teyYpX8b8trV1w814Dt/70siTTt7GNQbM99hrt+BcVxkT67oCc4ywpaUd5rj8P/UY44E/uR7ZqukpS71kW856JifwOiqpYRAT1R9mcVvoKlabZvOE57MB70CN9BTFxfIyTKrMccasMM23LHtI/j+Bwt+dxv20EQ03h8p+43dv2t+9nfO/DfPk0Z513x1+6Dr/w/+HAvE79da5pqeCnP56EoFYmKvIpSncg+GotFA/obGZy2oKTgbjgkn6qzwaiXAfsZDKGTiBSzIuv/cK49icHSwTp3iBI2bhIcJ0PaMYFtWKF4DXqRdGF8NGHkLkfgbcGIdT16nVi7C4bIA6LPY4z1PkYk22Xs77Fe6at+MeHtxXjqFiVuejBmuoUw7JZYGlE47j0ulDAi0SIMtgAZyy4yO5ylrE4wTaSighNthx12GHCYPfBAwS36rOH9TQIMziDjbEN6i8zR41uXNFKS2QaYHEylgDW5ZlxHufsn67D6g6IUQ5we/29iY3yJwLqtuM7ekSXKvyDcWKBiydBgj3Uh4m4eTMSh9CWuwU8SDHCTZ1sqStXh/1fs/0eSrp91ETatUhz9zG9zNgj3COJMD3lz4kaR9euek+uEvOxgJ8o0eGKxLySPwCHvBOPWNPddidkA23aijRQhpHjsZxv3C4ElJgQdmeWX9ERhJxh3i+ziXiEedwuxuU+IzVHRPsTPhE54AZMJb98VpZqw5+2t/Ad+Sz9TI/QFWc0lhH9rLXxc8nlZTtpf5GttZFxm+q/Y/9794j/ttxNq9fYrwHZDXonpFu+5gLiOrfAEUp9+/LItIvO22dtn953l8QmK9zhx2WXkBsQ1ohnxNBs7ibLDPiFx/QkKX5y7XoVEJq8Ux5NCZLbf71sk06SjiaDGdYQ42y+OZZ9IQBqHXzUb2/DZ9r0fR9R1BPDHtnplzg9A7E8I/2eU9boYF8ciiG9F9ce3CEDo57dwfteUOBf6RRDQDVnaIjbgexvvXd9TomqkDFSIiseZsq2NF2QUyZG5H+B7BHJsM9NzGqhfxajIqyjVjesz67CewL2NMRfT8+s4BN+rKVn8Xp393kuJ0HqW4/I5yjJvg7BxqcikSIpI30xsjHHzHBFiMyjB9wLiZjuftZzXNibTN0q02nqU5luT117B2BnFPr3CbzSZ7N6nRZ+Udj6jTRilxptIysmiLHMTFRNc13fJGTldoh9Kh+iD0iUmsf3CSOoRZWJCGFtjcHavy/F4ls9cU/Q2NiKSfAWG1hp83zgG0SiRZR2q536yXV1dZrvttlvtJJszpyB91mbz/ozy5Wdi7E4jWvKKUgkQSsUzigoFhxK1Op3IaHt+/IH+TS/wWFGUwnid3ucvIOLtTPldW8njr6X6X9mx4BOf+EShY4BSIPYY22NdQqzt/X1jzKewdy7huquNTJV0VH1VHP//Y21YH2fT2lLPqVTKJJPvf2W9vlUMSS/bqlSE04jEYZFRHBYZeyFxPyieMyJz2GUXt4kM4zZPIJbZxs0iu9mJRzLrOF3JankrxZeEmFfLIOy4mC+nPPFE9jiOigDxfubfvqgsxeOYV2HHr7Qjy9zKWxWOlaHA9j/9OgFsmUruGvxF3+S/dr4IuOgrkV/CbuN6gjBDnohqRDlpR0AEtKS89fz3htjvnhy+1F6q/DQJkdfXW0JpnnOZwv56/vcIkcmcjVuZf/j/f1d+OykE3mbx+SmuoVIcb/COWzN+umzioquUuEgI04brcZJjuDWBj7lIcn2M409twpcRE8KxYT72APtmWGdX8b0cMZJhnsdHuQG3azKHWyyOj7vGBsTiAnNayerOJPKOoGXgjmLsCIh9MN5z/Z4QbMT7gmleS+IjPjPL8dvWGDOLY5YQ73NZ7kkRQBD1jlNSJCLJ8uER8XoQoX9ehs8Pk/y0qaigEfHaMAzW5u1DnM801rURbFCu9kFBfNxLsuzDeNFTeijaGNnPeEtFXkWpLbrJ4HuRgceWLfk8PSxsZNc/cOzXm8jzOssTHJPZGKSfIKLwJowRyRoMjK6P7xrCMDAIrvPFRb2Vz3Cls17CkHED6/qs/wKlmWcS0fiGGIBeYKDfjsH7Ji+KsdkrmRXmdoRX5sbdulJdbiLsJr4BTxhOeBNSGZUc8zJ+bVnXc/lO/WQz2QH8MAbxBeL8aiRr8CG2uw0G2Ar2YX327TXKCk/EMOzjmKwSBtuIeis9bh1m22677cB96xC79957C3l7hMAOa/x82RhzBOWbrUH7lyxGmVL9TOG/djARqjP5Rk8Q3PIo1R2W6W+tKIOih7YNrxBE9jki2LdjnLy/FI5WOw6oCFI+9t57b7P55pub7u6StK9v5dr7ZRw88+iZf00dBloqGdh9990LtemqjnRBE86mDYfDAwKvE3n9/r6WWj8+dUY8S2WnYgl6GcW+YNwgsuGcUNzsZSW7E69ZiMdtoiR1iwhQltnFTSJzuVmIx7IaWEhkIDtkX1CXYRUTmVwRIWDExBw8KubqMrhbCsMyCzldRnJMlLOOiM9ICGFfisf9nrCtJUqVTNzK+f8bfFuZsEkBZ3FOXVBkFblsJHP0qx0K3hzmz7+fxScgyhkbURlB0uC9HvICYBpEFcRMRCjhPVp8hvvsCBmuv8nzu1xFxTEngrr98SsQJvF7O6PjNnyLUiQPiUqI9lw9BJ+YIWHqdny38pod8MRwI75PNj9aHF/vMpHIku5Yy/LSRowdMrNcBjnJ3y9TuWzHDLKZW8TvmhLieFCMQXGRqS2/Q0p8tnzOjbFfJaAgXVJOM77hzzLmxL2xrb8EIu+b6ByZriPWt/wr7zuUkiC+1r9msW8OpR/0UAVx2n36ioq8ilJ7uAivx8iofAZR82Cc/TvhlKzHbILHyMKdQ0avzXD8OY34b0D8cJm9I4gE62Tw+hgirmMCA9wjRIBNFcd+omcAtCPwOsNvKcc/KB6/IbKIn8Y48oXnTASEYdAoJpwygrnFm8S69UaJLOGRonSWm9yOFhPbNi9AIMm+BxCTnvJK6SxkW/sKg8f1Ie7leEynL8ZKBGJnKLRzTB/kc7chwm6+KKtVCgOhonFO55kzZw44we6+++5Cd/d+DLD5GELfJsPoPKIeldoggDG7ExOXzakcsJLysXdy/XuyDJNqRal37Jh9NuPfKfR5mkRriKsHG1Bhx4G99tqrmOt/JVBo5PJQRDqvZp999jFbb721WbFiRZ7vyIq1WU43xhyJXXgX2d131XNlEuWjOJvOwv86KRxuNYuzaX2R1x4PH5ftGwikvyRU6fVQKR1JkRVVyuD1sBATGoR4699vTLOEhMAbFhnHjcxrW8QcvU281iS2JcXj0Z5wLEtjZyLpCcYJ0X+4X2QHx8Xr0tHvBJResfSwPVftKyKWqNhuvxCl3fb6vW0nxH0tVV07XMc5fj7Za5kYidAbKUDsUwZPKo0d6gtTpajekBKt4nzGCHE1lcPev4Wez8W0knqaJR0jER435/vfjph8N3O1dD2lpUgYFNe1THRRuccJ1A1phEYp8srP8UXesFhP3uaatDyNjzvEWGOEuBv0hGeX/OPWk/vV5K2XEuPWO1k+P45o/qCozuGPm4Mll3ibFJ9bDvzfKh0BxvKh8Fe73yelIq+i1DZRyhU/gYP/SHp07kTUyR1eued6IILD7RlKJ9uBfn9E3HOEyLuM8gs7YJQsFiUuUohmGxKlFEGgdCJtAz0mXE/fmYihYTH5WiWOtS/mRgoQeI2IzOoX5TXypcETiBtF1q/sg+JKYi0W2w1jJIWJmmsnc/dN0b9oOWWcWxEVXaZzgmO2NcfeGlkvi8neO3z2wRiKYbKvA6K8VYcoNd3jTUKjGSahMoKsHDQKp0M6mnKUBE9LT0+PmTFjRrFOLXuu/pBz+3TO90mUdL6txCXZlKGlhUz6PenjvR0TmHlEF97F9f817a+iKGVlJaLuq5RvPowJ9lb0K3tuMB9ur/+21Oldd91VLb+im/R+tDFndnxnRtmwAu8WW2xRigzeAMFsJ/G7dyDuXjzY3z0LDZ4dY8eCPiuKifKD7prfmEqlBkp4Ipi1eKJIWDj7mj2bwP+cSiUoskwcsu2H/53l93KZG9J2axYl7EZ6PZSd06ZoYcnZdIYSxlbQvOOOO1Jbbrnl6nUmTpxYBYe9NNjj4WOPTzaRN13PX4td3752x/+z9x1gclxV1q+qOndPDpoZTZJGWZasYMtyXMvGBmwccMRg4hKXuCwsP2lZ2IVdwrIYe22MWUyyAdsYY8ARCcs5KWdpJI1Gk1PP9HTurqr/u+3ztNdFT9RIljTvfN9Md1euV1Xv3brnnnsfffRv5tEzfxL1oQpvDLKMqJwK6Ex1rDOS1s0c6D72Hs6JZB9THXsZAR1wpKyW7+wh9u7ucRDS8n2/CPN1dgzGGM5wnr46yVTGXHkcZ4Ru2kEY8zbl6uIoe29POFJ5Zh1q5oxjW2kHkcyJY/W+88bgl7gHv4n7bCSUIuvNMDLqjeY3UTg1MAvput83RpCKQGD6VydJ8I6GCyF4eDv6nFthp29j6+QLyJxoFgobft+x1LbHElvwJxxkKE8/7TSiDLaMhJ5nOUlQ948SwJoEyb2OjV98PMqXUn2iGBrj2uyD2vhYKXldEGmNFsT7RwSAHy+Sl/azW5G8CgrTA5Sy9b+QNvcDUK5+H6TAnVD7TTd1Vw/qk24G6XWGo4ZeFITmOVDtPgXiV5KQNLDVgcBtBZki27AXqtVzMLAQYftxzB+EsyjCat7yF5s0i5LNsJeozDG6Rjyyd6LQQBbuBbHbAMKpB+dSB7KbajaUgxSXbSdrGg+C4DWQvrkFg6VspwVYfj22dwZzYDqjguV5RBnJHHcQvQlGDA/iBSPG5icdL6FpluJKXo/RBmo/DNn9zPCYx9LG1GAbMm3jDPwOj7LNHOLxuHjLW94iHnvssclc5xjStR+CwXM5iIf5MHA7J7NRhTcMZXjWLkMdmbPxPO7Es/IX9Pej1c1RUFCYWtDY8FeMY+Q0+AhSOFP5gR8hsG5SxBD1/4sWLTpuBMVRjDUS8qV3onZLxkFQHjNQexK5lC9V7ARQiWw5H8V4uh0R/Pcc4xITS7GvFOwwGhN2eL0531lFIpEIaZrWDMfKPF3X97MgwHmwW8nuKNV1ndbfaZq5S1YJx4WsNbYcQaInOtxo/72w42ajbaStNQvn2wkH0xJkthCw2xpgH0XwXUOwoQlVdgXsOh3BjHuPtj3omRa4D0nZSr+DweCR+fPmzTuyzHQEnftoJC+1Wz7Q8vRM0yetj8CHHBYsWJAjgKlvoz5OQv4+yj5PQSEfLJb2WOJoxwbdQR4beUhij0Md7GXOdh9bR353loQKMfK4gBHRbsc+5TZDbLokmWVN5ZF8zrxtko6U0twH4iR8s2wZWWYqztJUx/PUOHamCjUd5HHGoTzOOpZT2TjGhoWSUEUgcYOjrFGJcnKF8Mcc1ywuCscVWdTIfc84VJVrQfBuGccBGkgPHh1D2VqKcn3/BN/jNtynv3SIbk4l8AwJU10qYbyYqnrbk0X8BHh/6WClH48bFMmroDB9kEGa4m0YQD+ASKalcEb9BtEo0w07EelT4qgxMQMkyh44c5ocdSjmwfHzJ6y7AOo5STBSh74aKVP/B0bF2Y4URrL2TYq9oMSxDUlOyunDjJyMMGJSvqxwkjLNSGMe+ToWPDCWurBfHY6tAWyjGtuWatwSONAOModYlkVkVuJYN2G8uRBEbT9eAGQN3j443JrggIvDQdeEaL5i/N2G9b148ZR1iGUN4gKmSg5iHRdLTS1fei2W5stJEMcZUZxg1yDGCGJJQA+jjQ+zVN0ZHLcL0+bhGZMOQQ+I70G075mIVByT5CXMnz//iHrhkUcemeijaoL8a8N1uwkK39m4j49VpJvC1MHCvX82XphOw324FTW81yNtekS1ucLJgMsuu2wyfVle0LYE+kb+XWI8+0qn0yOSChPAQaSs240MFJeg378D9takaqIT6TGV7TUSaB9z587NjTWT3BdXRcYm6LyLsewkxwyXX355rj2PkuA9C6qED2DM/y0cR09P4Pj943gf15htJ1EK+6IbpGNOMZBMJkU2m/W63e5G27apLStt2y4uKiraX1hYKMLhMBHbPti3ZPs2ptNp3efzicrKSpFKpcTQ0NBsTdNkirlq7L8gT1pNnU173TyQa2OlMTsaaIwAkG1Ugrbogl1zgG1fh51uIeiwnM3LwI5cCKJ3iSOzTAIBhsPYRy3su8KpSDVK96Hb7RYNDQ1aW1tbhE8HivIEPVh4VkaDcSoTEyMR4JLkJXvZSfLSOtKOpj5OQv7Opw4+1v2tgsIkYLE+YbIqSF53kiu78pHHfoei2Osgc7nq2O2oUSzVxs5MYUGmPOb1i52pskvYsXBFsnsEwshyvNunmF+EE75px/x0nsDuKAsUj8BHoLEA/ggjgtMOItr5+1gF659oSCOTSRGyh/lGOT4KgPyXSdiJCicXbPgExyJ4n8H98Oo4z06HvUZBjr8YYRmy+z6MTDsFUFb+N7ILqvJVCqckFMmroDD9EIaTkSJb3i2EuAFEz5lQ9T43RkH9UxGZPIq3Chjx0gi4Ak60CIyVBSDFd4GsXAkHUBTrLkEUWguM2AdYfdkCEJCyFq58WfJjWg17eXGztCbOtEQmi36NwkgedtTQkdMGsYwkiOXLTQTnIGAs1eKYduG4G1E/OAyDvRZ1iKWa4TCr41ABklamuEpDKS0J1edx7gL7fZW1+y4cpzS45oMo34rjWYGUH8OOF1D+IujPU3/Yz2ofybbn16CQ1SXWWB3jSvbSKV9UDceLo3SekSL8/+F7AoTuarSHlzkaTbRXPe6ndlyLcRcDTCQSYs6cObnvV1xxhfjjH/84mcdxNyJst4GAIKXZNeoF66SArC8SgoOBMgw8hL5lu0q9rXCygPovwqxZs458p/5MfnditHkStC2BbfPvfP5Y2wiFQjmidwqQwLjfAhLwJqgWliCt89rJ7EL2/1MJZ5tQO8mx5ijGmcwkydrU8SCm6NzoHCeJAqRn/ieM9W3IlHHnOEqgSPuiAvbVEkzLB5s53mVaw31QN1IwzxpkcthuGEYukOz+++8XtbW1Heeff35VKpWiQM4BTdOeKS4uTt51110ik8kQwb1T07TzdV2/nhS+ra2tT7/yyivC4/FQ+urOmpqaItSVpvHmSZzrJZzQ1DRNqq2PEAW2bWuYp3k8nrSmael0Ou3PZrP6SKl1jwIanrF/Z0GO1AbnI4vOJkf0/D7Yetci0HAdm5dEQCetexHej9oZidIB2+2dsKUpWO6taKMpuVfpuhQVFYn+/v77PR7PS47ZpEA53TEti3vtEM4nhne3Xkb+ukFm97BrF2K18k7pGsD0fDtJXsHsaP78y9/5+tfRxoxJ9o0KCicC8gboTAHkmMXJY4N9OstEeZmSmE93O0hl+Z7vZcrhoKOsFA8C9zDCWB6H9KsUOIv7q1sAACAASURBVBTJLgeRrLPAZ4tlDzNZew3Dl8FTTPOSUQnmi4mzDG4x9hlz1CvmZHDaEag/kaD9NxpxlIQKgmAbjdwrwZ/C9MbLIHifn0ArZPEcXoSARJ6Vzo2A+M8xn9vteP86MMo2FRROeiiSV0FhesKCQ+ObIAk+izq9q+Go+jkUrtMVGgiUduYMeYV9F2i/Zhj7XXAoSXKzHm28CZ/nIIXjQfYiwVMm+dhLi48RkyGmUA2BkCxk0wqxnBuqjvI85KfhIISzTEFMeAnpUwReKFpAsL4VRno3S7VxGPu9CNsYYAEBGRDAlTjvChhchx0RsbINhx3pqtIOo2srHGs2COaX86S7Gi+c0cn8hc7DXgo97CWSE8UFrN3ldShm14OnerHhcAvgmXoWykoJ+cL3d7g+D080qIKUOoTGxkZx1VVXiT/84Q+TeUz7Yei2ok53raphdFJAOmWJoP89+qUWVc9IwQnqGwiT7B8mDLm/8aK+vj63JPVn1JcJbENOz3c+I82T4H0j/87n89/5QClriXCZAjWvQJ/6MsinHUiVfwPKPHwHGRS6x7Gd153DlVdeKR5++OGpOL4cnG0i20621yTGGQ1jtc2IyvEie6yj6+l85DlOAvNA9n0Kjsm1yNbyxAjKygBUBmXIRHImMjDMg93mYXYNbytp73i0125GIk2fsW17H6k+M5lMEjYMbSOp63rG7/eLvr4+UVhYmDEMw8TxDXq93sQ999xjHTp06LWd2Pawpmmm1+st83g8u9PpdLy7u5tsI6u2tjbT2NgYz2QyhbgOwyCTb5bObcMwbJ/PN2TbtlQ12ZqmFcdisRxZ7ff7s6lUKmWaZoHX6x10u92F1N5T9ExJaLBD/wuOdRu2qoE2cTrDpeq3FDYXZ/htFiBVzhzsElmsU84ywFyMNpkSkpeISMuyxOzZs7Nbt27NkbwVFRVydiP2xY/X7ahxOQTSl2Sn/4vlLPQ122BP1+F+3IP2K8bxS/WwtI1TpzoB7Hz+eZ/nxGhjxmjj3vEaexUUTjDYxyBQS3OQx3qe93peW9jjUPvKGpJcNRxg/hf+vYD5AHjKaumX8WN9OV4HWSYxTmJzAlkwXwxPE83JYWdGsZiDKB5mfpQII4njrA6xxcYvZz3krGPasQb5Rv4N1+J941BxKkxfkI3yZfikJwIbPsclKF8lbR8S39yIUnnzYPP8C+yjqLrPFE51KJJXQWF6I4GIdFL2XYVop48jre7tcFpNx1qdNlIIcxxyOD32OUixDuac64RTVzqJNuIFYaJeRfni4lSuehzksNtBFEsyMuQghAsYMSlVxFxeYYGwboJy9gUYXvJlLYb55+H3z1ia4TTO+Tw4M+Ooa3Yhi2Adwl8cn0nmyEw5XkaGcU42tn009Yt4BO5koLGXNZ2prmV9I35sISgu9oOoLocyuwPrNsD4/DNeDOfg+Rsr7d7fgNIq1tXViWuuuUY8+OCDkzmvNNLW7MK9oEjeEx8arlM7FDvqmp0koOeUg55Z5zSJ0eaJca5bU1OT+z3adqYScn/jBfVfEvI79Wd8Osdo85zIt+2RfufDFJNRAs6uO6G2/wRqov8AUeY/mkBqshyoLd7+9reL3//+90d9YHR/jNYmkxxnbIyRGsbEiZBFhRhX9ZH6N35PT2bso/MhIn+C8ICg/TJUrUOoa/9dh3rXD8VoGci5FSDa5mPM9zPl6SYEAchAMRqTDdu2dRC7brfbnSksLLQTiYSZSCT2oeauns1ml9m2fQjrz85ms0333HMPBR4WezyeZWi73xHR63K55h86dIjs0FmGYZCylsjdZFdX1z2BQKDcNM1rYKts9ng8bcFgsDYSiTxqWZYfx/8YxhyNasfStru7u4O6rs+QTmXLsgbLysoSFCQxODgYb25uviAajc6dNWvWw/X19Vw5KsEJ7XyBALbD5nauK7BvSdb6WLrljSA0axEEJWDXEsH7a5zrCgThWbDlFkPxeju+17FMNbJ8y08QwLgMARpdYwQkjHVeR+bR5U6n07bb7R5Mp9Muy7Ky1NbZbM4X/wDuN7m8ieeqDjZlLc6tAsckHZ0Z3FtLsb+VLOhQkrxNeA8MYHtduDeLcT9y29TLglmnDUbrH6kvGQljjeEKCgrjhgwYm8p3nnxpqjUHcexxBOa7WPppk2UA8zkyhvFAfR4kzqfzmsUeFpivMxvIYMckA/T5Z9ah+pX+Ek4Sx5h6mJPECZb9LeogofORwzyLWdahah4J3fAtmgiOK1S3vIIDWxEA+9dJNswwyOHLYXP7kGXnJjw3VI7wFgTFq7raCtMCiuRVUFAQcFD9GC//70M6M3JAPooacq++wYXTTxRwYzbfi4ac3+lYVtbYnSisSb7Q5FOueljqYa4g5rU7XXCSaXBgFcB51AHDfgacX3+BYrcJBKV04A3BgFqB2qA60gD78ryY8PRHKRa5KtMfDbKXEkkQy9/DcJI6o1QzeV5CsuNowwaQ+tKZVcBq8hTiPAaxXRmlOxLpXIJ1d+K4KYJwFVLquqHylnWgC5EecBCk8IRBaUWJXLnuuuvEAw88MJlN2DgWBQWFKQI9j05UVVW9bgot45w2nnnjXVemHJ4o+TpZTEWK49G2MUUplN9IpOHEoGCoDUKIf0CqfCJe/lMI8bgjK8SobTFV15W2M1bbTmKc4SSvf4Ikb4g5Vl93YPK5Gu3ZGAu0jUnUXa6EXUyOqFmwif8dKl6pDi3D+C5J3UWs/qDActtw7beCQCRCrdfn81lEJLndbr+madFYLKa7XC76O93n823+yU9+Ij74wQ/au3fvprzHYubMmXpBQYEVjUY3w27KxGKx+s7OTrIxbjQMY4Zt29+Ebe/XdX2J3++fHY/Hf2iaZvGzzz5rX3TRRRenUqnh559/vkLX9c8haOhNsVjs8ba2tqeohi/snbMR8EeEaK7ddu/e7d60adMndV2/gDK6uFyuwng8/uX3ve9962n+unXrKrq7u6/IZrObWltbDY/Hc/tNN91EtYCniuTly0hFkrR3NzvSFctggRI8e4dgo6/A+clyIxaui7SJQ2zdWgRotOCaLcK2nh/j3p6Qih0psN1tbW3+ioqK4S1btojFi8nkzgXiNTsW12HLFzvKv/AAVRsKlmtg2z8Ksl7gvAZx7qez4EVJigfRN/0Fz+JM2N/TjuQdDaP1naP10flsBI5J2vMKCgrjh83676kgf0ZTGLsZmetxkMcGKxUVylNeKsSmhxhhHGS1jj150mLLIH5JXpvMr8T9ME7/SZIRvzFHeukoUw87007HHMH7WZYN5Mewjy5Ril4FhoModyYJXqfwZLzYgSDMr+E+uwi20LcR2NeuGl1hOkGRvAoKChIZOHJ2o1YVqU3eJoQ4A3XA7s3jZFDIj3xOn+OpuMunXB0PyRxEiuUNSOc7G39DcAYthgNoD4jbVXB4bsNLzCIY+I9ByXIYqojCPNGsBSztUQkIZBeL1JXHzolhm33aLP2ejFSNMBJY/vEUR/KFZAiOPukcLIETbwvaYBHu9cM4xvlw8MXRBgLqGen46sExyLo/G5gjbC9zOGawXZmGehDLygCKBjgfJ8RmkJNpxowZ4oYbbhD33XffRFZVUDimyHdP0jQnaJl808U45jm3Odq2jhdYms0jcDqD6ZkdyUE82ryJrnsKkKOnGsjZ8H2oOL8ghLgAwXQ/hap3XHYWXdebb745l15U1judaP9Pz8l4749xjjPc9nESeEeVwvH6668XlZWVR46Fn8N4zlv2CfRsTkDFq2P8/wyy3XgRAPc/sJUXovTCSgR0FbIAugRso60gHttAEHY7srp4KdXy4OAgkXxNVVVVg5qmDbnd7tJsNqv99Kc/zYTDYXHnnXeKZcuWaZZl2Q8//HDWtu1Xr7nmGotS/JKtkslkdKkON03zIdM0c04tXdcTg4ODm03TJBVNWUFBQXtXV1eHruvD1I6HDx9e4Xa77aampm8cPnz4c7t27VrW1tZ2N7W3SbLc/1M/5K4d1e3dsGFD6eDgIAWotWua1m/b9lWGYWherzdDZHVra+v1sHfuGRgYuEPX9e8ZhjFaoKg7jyJ2oumCE3impK3b7FCD72K2WBznJW3AIdh/0m47gGuYZduSZTWSuKbjSXfpmmDqcfeDDz6YGBoaKi4rK9OGh4f5+efbTgp2b+sI2yuCDd8OW7XP8QwOouzK22CLPsfaoAelZpagDend4GnM8+BeD7PtGUol83qMNYaPhrFsGGXrKyiccBgpa9hE0sPmI4ndLIubVA17GHFssNTUAQcxHHIQwvwvxPwwAUYOG6wesbTjeEkJ+d1yEMe8lrBMMy0zuXUx9a8ieRUktiJA8j2OoDiN1brm0xIOf6opAx1B8t6M5dYi087jKjBNYTpCkbwKCgpO0Ev7/Rh4SbnwAaS9eJMQ4jakxOhRrXZKQjqvpBKgBQa6dEg2w1Epa59tZeNICV4UtsCJWYO6c3dheS9TEvvYdx7VKuviBBxEcL7PIEuL6GYOQZ7SSRqC3LnsguP1wyzV9EEc62VwArbC8SXQFrTPs3CMfcwJr4OcLsW0ChC1UgUso2I7sN8sI3gleJrvJdjvhFkZclqXl5eLd7zjHeI3v/nNtL6JFd440P3HUVpamneaE7RMvuliHPOc2xxtW8cL4yGRRltmrPWPZl2FEwJJqOqITPqgEOL9qPG6HOl/nx5PYBaRnvF4/AjJO1HQmIF0sOMCH2cIecYa6bzzOsZf6TB0jcPhwtc7Atpvvnt7POMe7xPGeD7czGlZCNXJx1GGQtbQ34e0cF8hUTErl5FCUNcWpvrsgD0UZ+fjhy2Rhp1ENsTO9evX0/rpNWvWrM5ms+WGYZS1tLSsD4fDtIx3YGAgk0gk6n0+XyocDren0+lMNpudq+s61W/VDMMYCIVCsXg83mfbdpRqvMrAuWw2m7Zte01BQcFta9asWWtZFh0PpQT2aZq2uLS0dP+111674eGHH968e/fulQ0NDUWapkWYo+2Iv4DUprNnz67buXNnZP78+V+g1M87duyoXLlyZUbHjWgYxg22bd9nWRYpXb0FBQVvtSzrRZaZpQx2XCe2PxPtfhi7mQdlcRg23gwE5qWQUjiFQESnMjjOjlU6oOXvGHNiC2xDqp6sPL+T7HeEfRfYru5QnQiH3SlAsA7inSmA8+zAsRSCON0P25DupVBRUVFzeXl50uPxhBwZY2QZlDQ7xrGCR2fjWXwBRC+pl59kz+Qs3IvdOBdOxMuMNNfinl/LbFMXrlE3jp/OK2Xbdt8xSHV/SmKscZr6tdHgtKvyYTzvAqP05QoKCscfk83gJuFMP2046hJ78qiKee1inyP1dIilnw4y30uIfQ8ysjjEFMo8cD/JlL4yRfXRnqvCyQd5X0q/HIkqvsGyqfD7WDDfncbsHiey2F4FbDUSYXwMNuNEAgUVFE4ZKJJXQUEhHyxEvX8Xkd0fEUK8WQhxK1QMP4YyQUVHnVpIOWowm47fhx0GU5gZYlHcM5I47WBRd2IC9YjzpZr2OohgTx6C2M/I4ZCjLnEhm1aW576V6Z/r4bR6iik+0iBeS+GQ24FzEzAs9yPV3dswvQz1Z3RHmiNqhxexvhOyTatYDUM/q6c2LpCznhzZ73znO8W999576t+tClMCul+mCsXFxa/bkrwnndOcoGVGIpvGmufc5mjLKyicYKCsGN9C+t/PCyHWgJi5A9lT2kY7XCIK6F6XJO94+n7+vE/mOeHPdJ79yXprLkf0vXTqlfIan/JYxjpmSvVL+81HIMnjede73iXuuecePuuIrTJKn2BgzB60LCuNGrMezKNU2jeiLIXEIozTJTjH/VCPbkVwGCd186kaZd1YE9eWFMB7M5lMpquLhC7C/Ze//OWCefPmFXd3d9tDQ0NaMBhMJ5PJftM0rR07dpTPmTOnuKCgoEfTtHn79u17ev78+UQ4V/r9fu2888472NbWVl9aWnq6bds3wiayDcNI19bWXjBnzpzn5s6dS4FogUgkUlNTUxOYO3fuypqaGjMUCl0wf/78+dls9rQlS5Z8OJPJdDNn3JGGz2Qy9pIlS6p8Pt/wkiVLFg4MDDSm0+lAU1PTxclksiGbzZqLFi2aZ5pm2c6dO+ldYo/H41lu2/YrsJX2gyDsYYogssFWw+Yh+2cOU6cmcY1CUAPNR/vVOhRBMsBPZ78FO3bLQco600XbeVIFcseic13hIJllOsyHWZBgCsTqZhChPB1yEoS1C4Q1LbfxnHPOEdu2bUulUqliB8lL5/pW3Hs22qoNgYfDrNYi7dMmkl/TtGb8TsP2LGfH7sG9uAmBj6chSFGm6a7FvmRpkQF2LEmW3ceH7Q7jHBPsWOLjVDwrODBW3zyeQLbx2HbSZhtrWdlH51su3zyapt5FFBSOO/LVLp5ouTWNpXjWGQnsYapiLyOIeU1hL8Y5Pwval+SwF9svQ+3UsPIjTivYuEcqYT/EYT/42T0k71sd83Rms7gwjdtdbha4R7bMPSB7W6ZpGyso5KB9+MMfVi2hoKAwFmaivsGn4WBphxPyj1CiKCjkw0TT7R0NtDwvJm6HgliSwQnct9IJuxgOrcNw4IaRijEBY3QZnGnF2NYupmZ3Q+Uj69aR6uSL2I7Jzt+H7X8RgRNSEeHFPmhfHxVC/A6ONR1OtZ0TbRPDMMTw8Gu+QXJ6Q9GjMI0hyREiQpwoKCiYsoZ5LbungoLCBKGDAPsklWvEuPJnBNr9TUCd7NN9Pp9IJBJHSF7q+yORSM6xjmWIOHsH0kDvfu973ysCgcCR7Rzt80r7+9GPfiT3paNu69nISkGdzT+jrMMTIHuIeHyK+iMiAAoLX+OEabxiY9UTKBNChGuGlv3IRz6SO9Y8JO8RG8Ptdovbb7+dtkFj6qe9Xq/2xS9+8dvNzc2vO+cjK5Ik1ba9wWBwVTab7UwkEpTC+Bxchwuh4vVAGdCPMb8b4/92Vtu1F4TWSI0pFaBZbG8GbOo6jP33WJY1GAwGxS233NKk6/odl1xyye+3b9++ZdWqVfPi8Xhox44dL7a1tYnZs2dn6+vra6uqqs7dvn37u8Ph8KrLL7+c0nzP1TQtGwwGo319fRSs5vH7/a22bZNS185kMq5oNNpQWVnZTXV4PR5PMpPJkC2kp9Pp8mw2GwgEAjvS6XTDaxmZPZKAzVsHV9d1y7btVGlpqT4wMFASiUSKAoFAn2EYKU3TXJFIZLZhGFt+9atfEXF5V3l5ufnud7/7k7FY7O9wP2wUQqxnanUNqtLL8ft3LJhOwPZaA1vtQSHE+VBY+yd4yx5LSJXwlbg/JGm8AsfegVIm/ewY6F64AnYjpRXcQdcLzwKR2lE2ZvsQ+LEc10aHHZmxbZvSZh8AQUuZadpt2x7WNC0M8jUNUtiZFruOqadn4/j3YV8XY1styGRDx70V5LEMRsylALdt+ze2bZ+n6/oncGwHYWMfwPp9LG0nPStpl8tlUqpxpBsfEdjfhC4bLU99E22b1p+uNjC1wViQY8BYy8p3inz2Yr55NI1+y3kSjkCcKcNUXWO6d9Q7k4LCUUFz/OmO1NIB+DkSKgho2kGH4CIBu8TFMos4B3q3IxBPz7Oci9WfHoTv7grYiQoK0xZKyaugoDAetMO5sAMOw3chVd2lqC33KqtXpaAgcTzflPNFr6bGWQunEY6tfXBGLYEy4TCcYBEYjgI1P2bB4esBASygcC+GwuF2OO14FGsjnhdSw9+ClOiDMFbnsNrCZ8N53Ir9iomS5eS0CYVCue/vfve7c04VRb5NT0jHnXQU5yM71L2hoPCGw0IU+tdBgH1WCHE1go/+Vwjxe1ZGYUTIvv9DH/qQ+PGPf8wXs6gvoHkjpAnVJ5M2j/b3/ve/X/z85z+n703IdtHpcrkOkKITi0Uw3lFK6mW6rj/1sY99LKdUk30PHReNVUROy/XKysqydMxvectb5HIynZtUpRhQBhPJqpmmWXTdddcNPvXUU2Zvb29m1qxZZcXFxXooFKK6tUXMqSTw/lvk9XqHmpubO4LBYHkoFFqj6/pFlmWtQlaPdti8W6DU7QJR1zUOUtcPNUEZxvdBEHxpVvJiMRycZE8cKiwsJEKuraGhoW9oaGivaZovLFq0aGsymSyIRCI9XV1d9lVXXUXE1aHOzs5Ly8vLX6mrq6NzWkfru91uK5lMeg4fPuwpKSnRKisrn4xEIkTy0vSSTCazdePGjSvS6fS84uLiV5YvX74+kUjoPp/PePnlly81TXOZYRj7582b92R1dXW6v7/fk06n89odtm1b1K69vb2plpaWNcXFxd0ej+elYDCY3bdv3+z+/n5KK72WqV9nWpYl28vLavNxZFlZCx7UoLFlPfi9C+ftEScODNyfA45jt1j6cmcpjiTuBQ/OMWfrUQD+gQMHcop3SZbRspZlrdc0jVIiZ+AoJbuyTtf1xbZtL8G2ctljNE1L6Lp+OJvNHtB1vQV2ZQeOYQjkb6fcp6ZpB23b1kGqpmEPN+O4qV7vaSC/NNjHTbCDfS6Xi84j4vF4tEQiUQe7+QJcS3r+k7ZtDxARrev6fl3XD2qa1o3nYhjHk2BpFxWmABOx7cZaVr5T5Fsu3zyaxt9FJKifPxaYKvKYZ4TgBDh950R4PnJcLuNsI76+srcVpgHsPP14mmdxGaWOvILC0eIZ1YIK0x2K5FVQUBgvTDgfm+Fc+Sxe4snJ8IgQ4m44BVRBQIWTDbuhOLDhtNrKHN49cIzJ31ug0hVMlbMZjttZ+L2WpQLUsFwJnPZfE0L8pxBiAVRaXXC+aajReAkcyz3M+deAZ2vckOoIIvUk0atqdU4fkKpNMHKXFH+C3RcKCgonJA5BdbsX6YKpDMC3oS69A+mdR1I+5MgaesbJsU59QCaTyRFk9PxTX2BZlkyzx51tgaNJmUdjDJFSd9xxx3moMfuzz3zmM/Hvfe97koztQIkPKvux7LzzzhOkWg2Hw0cUenTMtJ1PfOIT4gc/+AEdizV79mz7kksuIVmpaG8nvjWneq0EGU4Ow7kgU3ulEtrv9zffcMMN7XfccYfW0NBQGYlEPKZp5tLiaprmxrqExZZlZdPpdP+jjz66f/78+TPWrFnzz5qmzUqlck3xZ5DrMuBqcATHpcC+/SCcK0F+LYYauRx/z4HklaiG3UHkViMpIwcHBwfdbnfK7/f/avPmzWtSqdTabDYbdblcUcMwjI9//OOW1+utjcViVX/9618rzz///DtnzZq1enh4+L+JAKf6zE8//XTgxRdf/HJNTY37ggsu+PKOHTu8RPJSOuXe3t7S7du3N6ZSqa8HAoE9V1xxxZcGBweNJ554wr1hw4akYRifobq5HR0dXy4rK8tUVlYa1O75VG00rbS0VLv11ltjXq/3P6uqqvpuuOGGO6qqqjL33nvvqr6+vnPcbve3WD3AEl3XZTmKu/HesABpgi3YTRRA9wBsnvOg6E6gbVeCkNyCtMKU+vmrLE3fiQITAQCy0WbBfvslCP+VULtLVTcpZJ+HypXOP1ZWVtZqGAYFJ9jy2WAKydsHBgaCbrfbxnOcu+d0XS8xTbMBmZbos97tdldZljVH07SL0Y5hPPeDsHebYbd2gYgNa5o2bNu2ifPYj33KmsR75P2u63q1ZVkUxPCCpmnbXC7XfLfb/WogEPhIMpmkZ2CGbduzkZabCN8aTdMabNteoeu67ff76RiG4vE41Yomsnefx+M5mMlkDuN4JAktaxDL2o2KAH6DMJrtmG+enOacly/QcCowVeQxjZVyW5LslcQvz4TD5/FpecoGvG59OY/ex6SdLsZRo1lBQUFBYVzoVc2kMN2hSF4FBYWJIoK0Yi2oD/Up/FEKsd9CcdKvXsYVTiIccNyvvSwdTJtjXhKOX4GAhs1smYOYbzhqEKfh+Lsd6R6/hmeGHHQ/hONS1n87F/uXnhEXnMWS5DXyKJZHBDlYvF7vEaIXDmyFUxB0nSWk40k6kRS5q6Bw0oAIoCdBwshavR+FIvRnKJMRd4xLQdThpOley7Lsm266Kf2LX/yC6szqq1atKiKy1LIsA4TxAZApIdTlfMXROPnyozqn5VSalmVp5Bh3u92rTdP0BIPBF30+XygUChWQ4zoUCs2kNL6xWI5XXuzxeBZZlhVjtbRyf3RspCqdMWNGGRGybrf7fK/XS+rCNpDBKZDIsubnfIy/mqxB6na7l3g8Hld1dXV9OByOUf1YpLKO27a9nNU4nU2E5t13303KYc/Q0NDV6XS6KZ1Od3k8nsdBqL88CqnrBWlXBcJyCdq1EgRuMcboHqTufZ6t70Omj73IFpIkIpaOlVTRTz311GPJZPIqIou///3v7//oR+nSC7Ovr49OMrt169bTe3t7N2qa9tTQ0NAZuq4TITdIabs3bNgwnEgkEq2trdl4PE5KTvojVo7s9i7btnelUilvKpX6ajwej9I6L7zwgseyLLpWdE0Wt7a2+m677baBz33ucyKZTAq///8yIstxhLZJ66bT6YJ0Ol2aTqefTSQS4Xg8Ljo6OqiNSQVcgutk6bruLigoMOLx+HbbtjtwLSvRjrIsRjNLHVzK0jkGsfwukH8e3LedJ8EDXYaSG4dg1y2CAjeMeyAM8tTCOVVEIhFKs63PmzfviOSPpbzN6ro+yLbfg2ABjQUblNu2Xelyucri8XhFKBRqTCQStSBlK5EqvBL3ax/+Yrqu03VpsSxrAO9wA2j/OP76QfiT6rcP59OlaZre29sbMAyjv66urs1ROqVMBjr4fL5yy7Jqh4aGlvT29hLB7y0oKGh0uVxE2l/k8XjSmUymHyR0hFJQ67re7nK5ekzTpH334/pHGAGchH1tjxKE4YThUJEfz7Iy0x7Hyhbl9u/RQL4zCUYckx1N3zkpy+fxaXJZDr4+J5DzkcZHA/V+p6CgoKCgoKBIXgUFhcnAhmNhDxwYNwshrgIZtQpk7wsOsg0RsgAAIABJREFUtYiCwomKfA4e2/GZb16KOSXl9I48y0uYSFtJDrJ/Qj2zJih6HwNp3Iex2XLUF5a1hUvwXA2Msp/XH+xrzu8jRC85ZxVOHUgnPHcYyRRyqraYwkmASaUKBk5VB30Q5/bfIIioPMaboGIkddzTIICjGC9WIANEHDUy61wu1wafz0cq3vIlS5YQEUfK2Sy2vRhjChEwhSB6Q4x0deFPZ3XUPGx+jqC1bdulaRqRhObKlSvPJSK3trZ2zfDw8Jyzzz77klQqpVVVVX3LsiydlLsej2f+jBkzvm/bdgbb02WdLdu2jVgspr/pTW9aqut6wOVyfS8cDpOa9scgeTts296M+qazoLZtleSObduveL3eszKZzIeampoWbt269c+XXnppCqTCAU3T6HzfQgSiYRj3UR1eShltGMY1hmF86tlnn+2tr6//Sn19/cMOJYCG8y0DgTsLKtQV+F2L1MxpEOd7QOxuxPG1OOwCHelvpTq4Wd7HdI327dtHB3yfEOJ9mUzmq1RneOXKleLXv/41rdtj2zZd//sTiUSyqKjoZSJQdV1Pfec736FUoHQNA0QYf/WrX83VPaaxAITsa0y4EA8Rif2Vr3wldzCWZV2M4LJbkKHno5lM5hvf+c53srQ4H1dIgU2g63zXXXcJ3DcVqVRq6JZbbpGLhXCPrcC5E3k3VFZW1klptGmblmV1gLDjGVO6WRu9CqJXgGjcwur37gFB6iTrTkS04NwEjn8j2kbA3nuV9V/0LjWDiHUQ40f6NaZ+1P1+v9nV1eU8VZupiKPYr7x3Ndz7xbAfi/DcF8lnmp49wzDIrkwgXbrFtuvsXy3H/Wz19PTsymaz9uHDh8XChQt56ZRux3XVhoaGil588cWltMyb3vSmQFlZWbWu643t7e2NxcXFM6FEpufLQ23g8/ksur/S6XSElMbsHLvxfPWALB+UBLGmaVHYyUm0Cx9fZmO9FPrAYpY5xzkWKQL4JMFU2rpyW5LAle9QfB98Hp8ml3VuzzmP3sd4quepUCJPZb1j+Z7Ig3zyTXPOc0Iuq947FRQUFBQUjg8UyaugoHA0sKHqfRUpyIjsfa8Q4u+EEN+hdw5WP20mapwpKExn2LKGnhDiE0KIj0HhSymcf46UzSk4SmfB4WTimZIqiQmHa5NzgRwKkuiFqkrhJIV0tgtG7srUp0KRuwonFwrhkJf5CjUoJDtBrvmlIhDzS5mKqwTKLpnC2ACB0Y31NNgg8oGomKJUXtoY32WAjiFJTBawY7D5nEjtYUpTHUSsB2lr6fyuE0Jcrmna1zVN22CaJmVNucvtdldms9kAqXihWrVTqRTZW8PLli1r6u7uLtq5c2eOIJs7d65p2/ZLFJBn2/b1pM7TNO0lwzBuI4KQFIQ4JoN9ehixK9W3RO5K1ZNFJNHSpUv9pmlaxcXFbxseHjbmzJkTJJK3vLz8ctu206Wlpb3ZbLbC4/FcRIpZXdeJXJK1WU1d1+n6m263m1S9pMBNR6PR3FgHZzj9y0g1IRSFdO8M0XnTsZimmU4kElo8Hs+Ul5eHQJgJHHdKEoMul4vIJgFl5Ze6urri6XT6a+9617v+t6WlhfpSF+6zapBOc1EvfyaUu+W4r9oR8PgQCLyDGNvbRkmrnXAGQBqGkVMc/+xnP5OTSPlLHXu9aZqtL7/8spy+HOseeOSRR6j2cpraJhKJyFqPkpSy6fcvf/nLfPun+cNYPoASEUQw/htsjjdTSmXTNOlcXrcNOdYwMqEc2xtgtSYPMvVnDsPDw80DAwMZUqTS9SsspMv2ujZ4HWtpmqYNNanAs+88/kFxcqDbcZQWe8ad52Czdhgp6MXk4/w4IAnXBP6Olfo5M06bI3ftenp6XkJ/f+Q8W1pa/MuXL6+mABUiuz0ez4x0Ol158ODB0tLS0mKfz1eYyWRKkf65itU5thEwkCN5iQh2uVxhygDgdrt70un0q3ieZD3kOjzbr0LN7MGYYONZHwRprOF5OMjGD0UCTyPwe9p5f4+Uxn6886jf5tvghO9kMZX1jkdKR+2c5pznRJ4xIy/kOyl/t1HvqQoKCgoKChOHInkVFBSmAuSMuRNEL5G874BD7EFG8i5TJK+CwhFQvbMv4dn5JNI2k+PqNpbyeTEIjAI4o9di3o7JNKN0KEiiV7w+DaDCCQxWky8H7mSR6e8UsXtKIJ/TWE4bbZ7z+8kEH1IR70V/NwNkVif6wUb0e3vhkF8JZV8SarRGKCfTcMrPBLniQaaEPii3CrHdTez9xw3Hvfx05VGzGozc9GA91wjLy88gvgewro99ekBQGEzN6kVQ3G9Aeg5D7UkKy4uRvpn6//dalkW1bVcmk8kFRKqWlJR0mKb5cDqdTsJR3J1MJjeXlpauXrJkyYVtbW3DmzZtytle8+dThuOcQi7j8/kymUzGlc1m623bnkGKObfbLYOK0pJ89Xg8uWnpdNpkikHTsqwkEbGxWKxv3759q6PR6Jlut3vDsmXLnvT7/QMvv/zyW6LR6IUzZ8781wULFvQePHiwqbm5+UvBYPCpkpKS765YscKbyWTMZDKZ8Xg8pt/vz5SWlmZ//etf/yudX11d3T9cfPHFB4moJcUtpWo2TfMMl8v1oqZpfzYM4/x0Oh13uVzbiGSmtqLUsX19fT/cu3fvJ9esWTPftm0PzoXuA1IP/oFs0mg0ujyRSND0r5imeZphGHcsWrToV5ZlLYbSbzbuszn4XgLS9jDSBlP5hBehwm2FsnG8RRWPkEQu12u3IamcQdBLpHCs70QAmHy+iehfLzN5DA4O5rYBla+AvZ0aId02hyRgQ1CGP4Pn6R6QvVUgt/zMhs/nqK9Cu3DbvgUkmSTw52Sz2ae//vWvH1ngpptuGvXgSkpK5DVXyAN535zEbZQvUDGBNPIH+MSdO3eKZcuWBYqKikLpdJpSuZdDPV/N0qMH0LcWZrPZmlQqdbqu636v11ts2/adrI63QFDGeXimDdyvctycgWeeAjHr0Wccwn3sZnWkBcYTPyPyVRpohXFjPKTxGwlJGPP02vmmOec5IZcdi4AejVQeDeodVkFBQUFB4fVQJK+CgsJUgsinLwshnoLDKM623Qtn0j68DMt6VKpYpMJ0BTm1voln4ktIyUle+P8SQrwEJ38Wz4lAukh6U/4pFL+T8vDRS/fNN9+c+37vvfcKKJomhKKiotctTttwTuPzRJ51JrvuZI73eEIeq/O8+O+Rzot+55tHaTc5mGpK4eSCD39cxVUBUi8JJ3Mvcxa74MjuQLCHyRRwGgjNDoyjM6AGlWOqF07m9BS2kMY+nd8Nh1LV4Ol4HaRoBOSrQP92Fub1gLSV89Lo507DecmHQpIEvVjXxjYbmRoujjY4DQ76Cvz+N2xHY2pfJ+nqxnc3jsvHltcZmcsJeIF5JuaZWM5i0zn5ZuIvg2284GhnHecfwDl0aJr2w2w2uyUWi/1waGhoaXd398cWLlz4zaampiLTNMOUkpdSI1MfT/VYY7FYhtIpz58/30cEMAWL2Lb9Zk3TOhsbG+9tbm6u9vv9Z4TD4Q/NmjXLKigosKCulX9me3s7fVpNTU1ZHGfudyqVyhiGYf3whz+MtLW1fTmdTp9p2/bPzz///B+3tramXnnlFSKhKLXytysqKsTu3bsXHT58+ItEULpcricbGhpyjm1KRUtkVX9/fy6VZV9fH5EwC5cuXbqN6rimUil3NpulNvIbhtEbCAQOZzKZYZ/Pt8myrLJQKKSBJHW5XK6NyWRyIBKJtPT19RU0NjbmFLIgeykwoIXaobOzc/OuXbs+XVJSclMwGDQbGhpiy5cv/1Jvb+/FsFMLcI91gOx8DGrAXSB6uxx19ycMnGtutd/+9rfO1S3s7zIQWm0I9LIYySTuv/9+vo5UGfpYcIFMVXsaph1AoINMt5vF/TefBTN047kiAvc9ILw25CGsPNhuD0tJLEHBa+fgnl6NzD5HwEjpvLjxxhtFeXl5bhbVdVZgje7x5J4VgmyjU7nmPpTLUhnuvM8E+lrqvwOk7M9kMmW9vb2zPB5P08DAwPympqYXqd4vW34A4+/bqL/SNI0HTe5CSvcL0Ne3svveAOk7gGfkLAQiSZJ3AVKJZ7FsHUubraBwUiFfnzJaPzNWHzTWfPlOyt9t5LTRQO+wU4kT/f1SQUHhxMPJ5KNSmB5QJK+CgsJUgzwyj7BtSgfwXtQhvQupslwnUco1BYVjBRs1rOn5+A8hxPVwuH5GCPFX7LMfDldKW3gFVAgki/kFiI0JQ75I00v0ZF6SnaQjbcM5jc/Lt85k153ql/qphjxW53nx3yOdF/3ON+8UdXRPRukyXlXriQoPFPr7QRRVIGXkqyCNZoLU3YrjX4rz6oA6dBbmRVka2S4QObNAXu4BWbMM5PGAg2gdSb3qYtN5TVZnymEXS93rYspUH0uvLKd52TSD/f4L6s2aINOegWL1PAS9rMP5W+gb6byuRBs9gPScAu1Aysa3orbiBqh6BWyRzSCb3g5n/PPImlDOyO809pPhJCZLdSprXZogpOU0SaCnsG4C68awfpxNz2C5JL6n8Zlh+9/OyH0v0ua+iPMjomy5bdtPa5pGv+/ctWvXlw4fPlzX09MzU9O0RYFAoIWcC4FAIFBYWLhiz549z3R3d3dks9kvrl69upyI0ObmZiKJhnp7ezdrmjawbt263hkzZgwHg8GDXq83lyrRqSiiWq+EL3zhC6+bToQyKQr376dbOXfv0bH/pbu7O4U+jAiQDC1Hihxd11sRCHiOpmkLf/WrX+0ikur973+/OHDggHjwwQfF6tWrKf1zyDRNvbGxUXR1dfkLCgpqh4aGdluWtbempma4t7fXFY/H6Tz2l5eXF9i2XRsOhw8XFxf/pbCwsLSwsJDaLkF1Qi3LIsWySCaTW71eryedTjfpul7j9XqrysvLP3baaaeJUChklJaW3uj1ekvC4XCfrusHofZ7EcRwG54xZ9rgSYMI3p6eHidJ60Q/bAAien8M8mnDKBlx6Bm9HArkQqz3PAjba2A7PCeEuFAI8a9YJ4L6zh8XQlyNkist+LsaNsm9yNDj7Fsp6OwM1EZ2gtb5KNpsCM/7uEGk9/XXX59bnFS90xn0XPIUze3t7UeCAmQbVVdX55Tg05QQz7J+l+71/ZqmvUyBI83NzZ76+nrKRsCj4qp0XY9rmvaYZVk1tm03s/EkgefuMtzXG9l6KQRYXIq+WnOkGa9Dv70JgSJNuP/jWFdF5ikojIB8gavjCWYdDxE8EYz1fkl2lJjAuCSXV1BQOPEhn2v+nPNneKTn3unLOd7PPT+uN7LPcbaXwhsHRfIqKCgca1RBQRCE82ktSN4dcGwGWM0oBYXpCnIM/T2cqjcIIX4lhPi8EOJPcMT2wuH873Ce3oo0kv8DwmhSIKfgZF6SU6nXZ9ujbTin8Xn51pnsulP9Uj/VkMfqPC/+e6Tzot9jtdcpBKmW4ydaw1Rm5UzRKUAU+kC0lcAxy71AJTKN6RsEjdValblXXYzME4wQXIRUqfVwBMvxj5zGZ4KcNTD/ecyL4PwXwxE9n6WSFGirhXB4+9A/zGMqPR9LIWww9aqXEbaGI0WxzhSCGvuUBeR0R7poC/M4ISS/Z9nnAaZuFUzhmsQ26qGiEiwNZhLtVIVrn2LEfgbOdI/jHpLHnmApN/8V55xg281ie1meqniUP4upJLMOkjjDiGDLQRqPhTJcWxP38i4c8/O4lkGXyxUrLi5+NJ1Op10u153t7e03P/HEEzve9ra3ld933319s2fP1ufNm9e3efPmHq/XW9rb23t4//799mOPPaYR8VFSUvIneglft26dbPODo6T3lepl/7e//e0hZ/YIXddt3HOX4HoN3n333VpJSYkdDofpHLIHDhxwud1uM5VKJVBf+LNQ+O5yu91aIpGYpWlaxDCMAV3XPdXV1bWdnZ3aT3/6U/fs2bMza9asqbcsi7Y1ODAwUPPMM88caG5uzh3v1VdfPeD3+5cahpGOx+PZRCKxYsaMGb0zZ85cVlNT49Z1nYIGCrxer1vTtCXBYHBlNpudVVRUVOn3+4sCgcCWwsLCznQ63Tk0NLQDpE4bAgImFUA1HnR1dYnf/e53Yy1pgeD/IAIV3A61dz6cw5S4F+P+6YX6OAiCtwU1hAWu5y9B1n4UfcStTOHbjmDMfDIsHemqN+eZ918gyq6Bcn7CBJckwD/xiU/kAgqmIyhA4eDBg69Ly3znnXf+TRsR2UtKOSJ7p2tb5QOlk88zmdLM7/X5fD2maV4Wj8fnapr2Ku7900AWv4wxIuQI7hhAENa5CFjmRUNpnaswXlXgef0PjEVtGJ+jLPAhxhTKSUUCKyhMHFMd2DLW++VYQcsjLT8RyEwNHGVlZblfcp7zt4KCwuQgnyXhCNKXv/kzPNJz7/Tl0DrH49mUx55PCDHS/kfqS+S00ebz5fLNk+31RvRTzvN4o3Ci9M3ahz/84Tf0ABQUFE55SFWBTKu4H3+dcCQtwQvuPnUrKCjkHLEfQtpzshR+gL9W1jSkyPkGlHrkNP8aVEcKCicanEStgSCfXqQhnYGAH6linY90/wJkZzdICRfGkh6QUvNA6O1kKtZiqFx1RrbKYEanKlVnqtXRUg27RvmUBKmLpfnlalYdRHYHatYLdix/J4RYA2Xeww4HLzmRPwwy+8+OlI8+KOwWQJX3pON6z0NK9z1QI34eZIskRLP4NJlqVThUq1kHQWnDES0JUPmXZEpVqWhNs+8pRp5mGJmaRH+2Bdv2QqV7GLZBLVRQD+DYFoLYfhptex7ukW4Q1teB/OrHcjTtcbT/2XDUb8D9QfbG70/gXuICEGv7WU3hFEhxSkVdq2nai5ZlZQcGBioff/zx26PR6LWUTvjcc899ftOmTTvi8XgoEAi4S0tLtYGBgRXxeLxe1/XnDMNozmQyBki7IkaQW5qmyfudVIO56UTg0nfDMIhwr9I0je6pIdvOTc7B4/GkstnsxZqmfVjTtC2apv2MiBCfz5fOZDJXut1ukhp+1jTNPq/XG9R1/eJEIvGO/v7+dbZt31VaWuqura1dWVxc7Nm4ceOGefPmlfT393+mra2twDRNkg7HZsyYMXvhwoWzKyoq9I0bN3bu379/jyTNCwsLSal72llnnTWTiLANGzb0XXvttecMDQ1RulbD5XJ1m6ZJxHggk8mUplIpIxqN5l6+E4nEvsbGxg82NDQcjsVig5ZlhenUHbVxpwykyJS49dZb8222Fv2GhI1rchUCv+h5+DWel3yQ6WQjeM4qcR+Fca3Pgi3+KuxvD/YRA7lFz+Ar7DkrhEL+aSzvhBvZBIbQn3PEQRxfhFTNwTGCHHQQYTHnjKuvvlrU1dUd+X2qBz/JtKYLFy4U+/btEz/60Y/Gva5sK1LjU1pyUryHQiFSso+qiqPl5f1J7cuVw/mOjZTocnv0vOzdu/cI2bJo0aIj2+QgwprWb21tFQ8//HBuDjkEySFG23jhhRfE8uXLj6xH+yDC+plnnhGnn366mDlzZq7+5kjHJpDaOZFI5NKg0/fNmzeLCy+8MJehgC/m8/nsSCQiIpFIUWVlZbFlWYcwbizEeE12xpvQF8vMEPQ8rQBJW4eSKi0sAMKHsfYM1FYvRlmVtOxnMa7G8Ux2IqirgwWWDOAZkIFfMVZnW5HACgpvMPz+14Zo6mfGA7n8RJCvnIGsYy/nOX+PBMoYUllZmfuUcP5WUJhuoGfA+Wzx55o/5/wZnshzP9azORWQx86PSx7vSPsfqS+R00abz5fLN0+210j91LHod+S1dJ7HRPYntyGX531kvnn5fkvk65vzbfdYQ5G8CgoKxxqVcGpLJxA5q+5h+1wOZ9GrrObesKrVqzDN8TaoYeahHuA/81p8IDO+hxSOpKahWod/YIpBBYVjDY2pVnWmXk2z/nsFSACpNl+Cz20g31ahv++FunUfW7YJf7sxLlRALROBancVHKSDSHlcxdIC+1ktVUnC8hTCHkwP4rgDTO3qYuQvT2ksGDEi1aVS0Sp/a4yckfNbEZAhEQL5uAqk9CY4eDNYn4jvD8AJ/DLUulJNVALncz3W3cLqFNK+5oD03I92I+KoGs7iLFMMOVWrFvszGbmbdqhRubo137TxKlY5QnCMb8C94MW9sB/Xei6u0zbsYw4+D4JEXwZyKgViqhEkdxL3RQx9pMC8N6JOIld5ayyQIOPos5fj2m7AfCIdnsX1L4VS85Bt20OVlZXV9913X29zc/N6SllcUlIyWFBQEB0YGKA6tt6qqip/LBYjBSuRJX1ut1t3u90uUrdpmkb1bXPX3OVyUXtniRSl4zIMQ9d13aRPr9eb9Pl8XiwftizLn06naTu03dy1d7vdPiJpDMOg+r868cJUQ7egoMBN9UNpXjwej+u6HiDiiVSsL730EjkDpOLZ5ff79draWiKa0rt27fKYpknbHqZtEalcXl4eLC0tpVS1WaozjOfbwrNR0tTUVEwE0NDQUOrcc8/10n6J4KI/IriIMIrH42Y4HKa2yU3PZDJXnHfeeX8644wzcr+JtDpWJC8RXC0t/3fbSZLLgcvw7HOkcM8SWX4f7vmRvMY2+gzJgnoQZONH/5pkQR6NrI/Oglzyoy8twXM1jPt0GH2r87lOYflS9JMcOvq9Ujx/lWP0C3QP/nGkVNRXXnnlke9VVVWjbObkB927AmTrXXfdNeHzobYiopTI1oGBAUXy/i3JS+Rurg+i/V566aUjtU0Iz4EMcGjE/bwZz8NKKO0j6KtXg5Cdh4AlelavxTM9E2NxBbYZcmT90NmYGmUkMP/rRiBTzPEXd9hcE4WsLc/HIZ0FfjnVzALrZNHHZB37djkzPigoKIwfgUDgb5YlG0Wwec7fI+E3v/mNeMc73pH7lHD+zgey0xQUTkWQDUnPgPPZmmqM9WxOBUY79pH2P1JfIqeNNt+57ZH2P1I/NVa/MxnIa+k8j4nsT25DLs/7yHzz8v2WyNc359vusYYieRUUFI43bkYqWoEXy3qkvtqPl1g/nNMnem1FBYVjjZVI93YJnomvI81iEvslB+7/E0L8A5xMXxFC/AQOIgWFfCgEYWY4UvM6a7TqbL50AvowPYhpAQd5Kn/fBeWhgHNzGdKGanCAvsLUvQGk9GwCmbXWccyk7H0PyN+HHHXcifh9H/a9FqrVK0A+GMzxaLM/mb5XhyNSplM28Ft3qFw5mZnEOUhVTTKPcjXDFK5S/UpE9G04Fg+IugAI3EakVX4C51aDmn9PYrsXQq28A+tczJSeKzDtz6ytlkE9VArC8HEcx8kGDxS7L8GhXcVU31kQ5D2MsD0L98gAzn0h1s2ifdNwlpvYNidd3ULkVXHzZ0Sw9fLVKpZ/8jnRmJo7wAIO3NiOVEruddQYFiC4rwG5drcjbXAxlNxzQ6HQb0tLS7d+5Stfebemab8gcoSIkMWLF1vxeDycyWSK6urqXFQ3V4CM4SQmkS60jm3blv2aPJc+LF3X6f4lYtfKZrN+LCO3MRwIBEjESwRslpbRNC1m23ZA1/Vqy7J6LMuKappGqt2ZPT09RNIeKikpKU+lUgcMw0j09/ebO3bsKB0aGrKz2aydyWS8dCylpaUR27YXtbW1eUhtSwiFQu2LFi1KdHd3tx46dEjMnTu30DCMgt27dw+Xl5e7A4HA6RUVFeHdu3dvDwaD6erq6opoNBpJJBKFLperyDCMTsuyBjs7Ow+m0+kL8YzoqBFL46r4zGc+c8xJ3o6ODvGnP/1prMUWoU/jMNm9mhpFxStYqnCdqfX5fSkDPGQ/zpHBc+Zn+7BwD3JCKt/+tDwkr8AzF8PzOJY97wJ5NjxWI53qfou2trbc5yOPPHJU27n22mtFTU1Nrm62InlfT/ISwYvzrV2xYgWlg0+CyIzgOUkyO3skNGD5MLLuzEYwURhBmi867JwQbKcC/FVgTKuDnTQT41whCz7THGNVCs9UGHZFO/6kKniQEcBRZotkHMFY/OJUIhBsC35XYV89WPYCjKUpHMdsKI+TsNs0FkTVgH3L8/arUkwKCm8cqO+LxWKv6wOdv/NB1n3PB7JnFBRORpBNdOONN+aeAYXjj7H6nclgtGs53v3JbcjleR+Zb16+36Mh33aPNVRNXgUFheMJnTnxQ3ip1UFmVcPJ06sIXgWFHDaAxPo0+aKFED+HuvcWBET0QcFLCrdvIi3iEtTt3auaUIGhEarGS9HvSpJWR1/sZupWt4Pgkg58DyMOnDVaLZa++ElG8rbD2f9pOCIfcqRvlnZoHNuZCeelzRS4GWyjjKUulMcTx77dCIRIwvFqYR4nXqV6NcHSJsp68BarB8vVq7zGapIpXvh8Z41W+SmVMXw882G9TWiHGEtzLOBw3cYUbRvh9JXrtkMlNITxcglTEYdAoKdBfgZBsHCSt/BY1hqdAJzOa521q8CnH+fXxhzqEiaIXIs50ONsXilS0A7AtliE9tAY6Rpkqm83U3h72W+Zeltj63vzBENwMo0/JyZTRWks2EBgu8/AJpIkr4epoRM4VhlM8DrFVzQaNQzDINXlL23bfrumafQnCgsLN1RXV3+3rKzsBp/PV5zJZIaR+nyXbdv9mqZdadv2fQUFBSHTNDOJROJANpt1kVrXtm0iCgZs265yu919L7zwwrvC4fBZmUxGB4l826pVq/ZFo9FmXdcrbdsutG17m23bFFAwy7Ksx0zTHKL0yDt27Pjmjh07LjBN8wM33njjvEwms96yrEgwGPTMmzevLpPJRMrKygzTNM8LBAJ7e3t7Dzz99NM/qKqqegsRQel0uquoqOgfzz333AM0r7a21uf3+6sWLlzo6+/v75w5c6Zn9erVOwzD+FZJSckDhYWFvu7ubr28vNz0eDylPp9v7sDAwAa32x1OJBKJnp4emcKbFKYfkzcSj1w/VhgHwSsQzKEwzTFOclfD317bAAAgAElEQVQb6z2Jaj6/9a1vFQsWLJjuTZojjDnpvHr1avmVgowfRF8bBlHaztSzh1jt3DBLnxzDPGkb1SLISAahtTkU9/Exgq0C+JMq3yJGvs5kRHAFAn3qUKJCYwEbOo4tykjgAfzmpG8EqvnDbL062CNpKJJ3oS3ksS3G+c1Gmx2UTQvbcgDjIq37V8wzkKHjOYxpkrgeM5BDQUFhaiAJCCcRMRYx4VSncdx3332TOjYZwDQVoMwvzu3yaeOZN5l1p/Icphp0nKMd32jzJzvvZAC/fjfccIOQQaQKxx/Hm1yf6P748mP1mRPZ9mjbPVZQJK+CgsLxhIUXZw0qxHmod7QHL8U07+1w5j/HHN8KCtMV5Kj5Ep6Tb4PUXQRV7yYQIz9HJP2tqMc5H6SaqtM7veFFH7saathVjEyTiq9BOBadKXtlLdVhltaX11+NwWEo1aoyZWCcpVsWrE5tCuuWYN1BOP0uhvPwERzfmahRq6HuLJFH/wNy8iys24XtXAwVawwpjP8A56Sz3uyJhBhUMZIATjjSsO91OIP3o87mXKZUPZspbfYhSGoT0jd70U7rQRqtxHbaMG8VnLCSnDeYo9hZi5iTl06Vt1T7ufJsh9c99jtUrDxdtpulxy5GOtoXmXp6PWqCXgKy+znWLlvQLjdgfz9kyqshbOdyOKR/hza7mZ13FvvPOIIVJAnLyWaN3Uu2g8iX6a4z7DPDiPtUntrFMuDAhjJ5gJ3XKjjz72K1m58F8TATqioi8h+3LOvceDzuqampeamjo+PT9fX1byGi9umnn07X1dU9dc4553Tbtp1KJBKHScWqadorpMQ1DGN2IBD48vbt2/1DQ0MtJSUlZmlpacA0zQbbtvdqmkbji1ldXb1z165dZ/T396+SBxcIBA4ODQ3dTQo7l8u1wLbt+mw2+6rb7SbbLUIKX6rHRGTzCy+8sC6TydDxrvN6vetIxafrerGmaX2xWOwgLVNdXU3bsS3LOlBfXz/4xz/+8RCp+kh9mE6nU7qubw0Gg0RMu5ctW9a5a9cuIxAI9M6ZMydFqr6amho6loeuvvrqlgMHDsxJJBLNc+fOze3f5XK9vHPnTjoPqhH1OfQndI0+y5RnYvv27ad8CmCF6YlHH31UkbyohyZVyAKKX6Cvuro6nEqlikFgznOMhWmmnu1HEHI3snD8jAUeFWKMfgWkZzFsER1krReksIDtIm0oCUkC94m/hQww8oMALsRnJcjlOvZZjn034nh4MJXMZJLFsUiStw92x5ux3Y2wFyQr/hzG4RVYdy2rD3wQx3YVjmudI5NQKd5H2rF+JWwWOU7ymv28fITpsEmPJ/w4Fp6+2mDnPFZ6awWFkx6jEWGkhJwMHnjggSlrluuuu+7Id7ldPm088yaz7lSew1SAMtw0NDQcOc7Rjm+0+Xwe3+Z4tkvLn6ig8+DXj94bFBSmAxTJq6Cg8EYhDKc0vUz+HhHLhL8XQvyTEOLHSOu8XV0hhWkOci78Eg6Vb8KhQo6Tf4EKwYQjht68/g2f92HZXzmcSQqnPgqg2r0KaQOll3cn6qE351G1ZhwEb4Z9OkksewQ1qzMNoICz8S3oz21890KlXgqCawuIr5fhqJTbKMS0XvyVwaEosO5uOEYlqVfpSLEoicoUU9By4rfgDVCVmMxZyKExJY6HBThpUOCcgWP3wQkp5w+A+LMQELKAKXCkJ3s52rwMqpxPMPKVf3IC1udIL+xhNYuNPGpWF3OOC3Y+UukkHaMu5nh2og3XW6pfA4wk9eP4+7GOPI4ojqUG6nGbqdQlmVoKW+NeFpQQxX6GHSm2k4yIzTpIXIsRvNlxfDpV3mM9KwIEwEZWZ5mrOwtwjSkojtIrb8hkMkFS6z355JOHly5d+p21a9d+OR6PL+np6flkV1fXv1x22WVFPp9vqKCg4F5Kp0o1cQcHB//lxRdf7Ni1axcRoU3Lly9vq66ujsdisUHDMHyWZZ1DBKvf79/pdrt5Xinb5/PVhsNhrbCwkGQe+0kZrOt67h4lgpf2QalhQ6HQakrZTNfZ5/PVWZZ12LKsYsuy3q/reu+MGTMoF2Cmu7ubiOM9pPalPsLr9TaEw+HccdK6qVSqwbKs8/v6+uI+n++JwsJCLRwOX5xMJv9qmubCzZs3//Tss88+HI1GdapD3NjYSFHSfrfbXWDbds+ePXuI0HlXd3f3d3EOd4H0PwJKHatKFymcZFBk0gSwadOmkdI8729oaLgsmUyWapoWQv8rCdN6jCtVUNbOQoClG5+PMJKX3lOvBMHqgq2eYgTtcgQxhxB4tYPZ5TJIS2ZDKWP9v8C1juKvN885yOwUMhV0Mb6X4Xshpsv5fpZpRWAsioEgLkRgmZOAtlAL/wVGDguW5r0Wy+xh5KeJTBVXYN+03PkoQcMDoWIsPXaEKaejbDr/HnMQwyaz7Sy2XR5wZeb5GwleZBDZwDJyrIRtInCPzGK/a2GvdOAYnDWMNZaBw3eU9ZMVFN5wTJYou/7666fs0KmuunO7fNp45k1m3ak8h6kAZeyg0gzyOEc7vtHm83l8m+PZLi1/IuHgwdcSTcyaNSt3HiNdewWFUxmK5FVQUHgjYMMxL1MU9iIdVA9IKUql9wUQFN9EjcFBdaUUpjmehRrtn0HU/AKkzi1wjlCE/EdBEnxDCPEjKNj+2eE0Ujg1UQMy8CaoXCvg4CLl5k+hIN3nOPO5eaZNJYJwDHZjm88xIrbf4TAccKgaNznque2Es7QLTsoQSw/YDsfsApC/Omq990BRUwsS+AWMP4vgcNuIbXM1qz6KstXNvudL12s45vHl/Y40wD72abDfBp5f+Wbagtp9N6PtfsnGwxQUr2+Hk/YlRgxaIDdLsW4HyPBf5Kn9ORqc6tV8n9zJKgMHEiyQIMucr2kHoSqVy+sZAU6k8rvgJH4eqZdXo3ZxBmnHDQSz0H1wGb4P4DpTezyGe+NspBC/nTlXT0SVt8D14331Nvau1oZ7WRI8raZp6tFoVLvsssvsRCLxH/F4fAbGgM+1t7c/fOjQoT2nn356Y319fWsikdB9Pp/V29v7OEXeh8PhG4qLi7/Y39//Xdu2H9Z1PZfy27btraFQqCkQCBjZbDbDCfnW1tY99fX1/kAgcFE0Gn28tLR0IJvNkup2iNS9lBJ127Zt4rzzzjt98eLFi4hc0XU9FyQQCoXOsSyr2bZtv2VZl+i6nigoKNji8/kGTNOker5Uq6iSaoKi3qdtGEZmcHBwT0VFRfuhQ4fSc+bM6SsqKvr3WCzW19vb+/2Ojo4dtm2/eOmll2qxWGwnOR+9Xm+jYRjndnZ2Un36qt27d38Rh0/EypfzNXooFBJDQ0P5ZikoKJzkoHrAI8C0bfsgSz/MIdMnF4LYk2mUZd1ZbqtE8Zs84/8LG0Sgr25DFoYbYfPEHaUHZmO5jQjOC0zQXrdZHd6x1pM2DA+GqwKp+ReMrUswTnZj7FmFd/RfoB1WMLtpFsjwh7DtC2HjxWD/RDGWz8L2e2GXag6bajyQJTB4OQ2ePUMGYiVZWQ9JECdY2mqehUaW9GiBCjuBvxoczw7UHV7ESF0N5yxLkZwHm0vmMz0LNksC57cIxHkcNqqb2WgLMaYrKJzyOFZk22jbHWufE133RCMMnSTmVJxvPmJ0tPU4IXwi4KGHHsodxdVXX60IXoVpC0XyKigonCjYixfUf4VD9gtIt3gv1Ir/KYR4VUWwK0xzHEZ93oNwWH8DARJfQxT9IGrz0vz/FkK8F6TH10EgKJwa4CrU2Ujr+m4QWj6k4COn3AMg9qQCpACOujY4m844xiTvNsdvnsp5rEKYCcdvSTitwHZOA3Ep0Ybzl/Vpg0z5OYjnZBmCi+bDAfcm5mj0M9LV51C0SmKW1y7mKlZO/BoO8pcTvvo4nZoycEMqU7NwTA5DHT3M1DYmU9S44IBsxTyDKXUSIILvR/vw1NtS3ZpmqbdTDiUMV3OLPE5WqZZJM0WNYKmJs2wdy6GsyYcBOEBjGPsX4jrIfe1igQGb4BwfwD3SAZvCgkM6dZKUf8jnpJeE9N94KzRNy5HWRJB6vV46x6/C6UzPxg+7urr+YfXq1bH+/v4iTdMaiAitrq5Of+pTn9K+8IUvXDE4OLisubn5zW9+85uHgsHgk4cOHcoGg8HuhoaGnQsWLLDC4XCC21ydnZ3N2WzW1DTt7qKiIs/s2bNpmjY8PGzbtj3L7XbHy8vLe+fOnZtdu3Ztyuv1EvFrn3nmmZ7W1tZKBPEFotHoP+q6flooFPqWYRgDHo/np+FwmFJLd8p9GYZRWFVVVReJRH6xcuVKsXv3borM1zo6Ol51uVyk+KUgjnN///vff4RSPhNJe+6552JVw/f88+RnzwU4Lcaz87kRlHBi48aNoqmpaSqun4KCwqkBSQJ2j3E2Xtgd3QgqKoMtIe0XWfbiEgSZ/a9jLKLgzetZKmYPyq10wn4ZYuP9MMtQMRnkG2912IuSuK1k5RhkcNoWLNOEwEAdY6sXfeo2TLsKy8cw/+9AaD6H83sC6Z4FbBUPs68KmCK5CJ+yVrGXZTHxYpqPZR8JMTtM2mATAR3X+xk5/ByCzM7E+T3LttWP4LnLcb22w96SAWQ+lJLYjrGnCe9msq3n4toGQKBnmM2VZnZS9gRT/PocwQE6bK3RVNEKCgrHEMeCxJzoNk80IpXIXXECHpeCwvGEInkVFBROFHBn/TN4MbwaTstroOD6OdJ+dqqrpjCNQS/V34ej4dtQCMyGQ/spNMv9IIS/AmcEkVrfgoNJ4eSGG8pOSiF3DvrJM3FG+1HT9gGHElamAJ6P1Pg6UiePVrfZWWPV5VBg6A5y0435bvY7Deedhy3nYjVZ3XnIU+m4c0GxezeOJwW1xbuhmHnSkc6/Def/GTjVfsEUr30YVz4CkvseqEG/fRR3gpUnba/J0vxKRYlUl5g4B4s583hKwQycuMMsy4WGOoFLoODV4SzuBzlP7XQdzq0D5N5ZjORdjfP9ORyndL98CvOyjGw90ZBCWl1JZEdx7aXzeZ0j1fZLcJoKEKV/ZA7SVka0n5JpErds2SK/9mEcyNUh7u7u/sctW7Z869ChQ5G5c+eG9u7dm66trRXLli0rLy4urhscHLSqqqpcbre7lGr5lpSUiJKSEm39+vVDRKqappllSl6tvr5+YUdHx8u2bT+/dOnSxscff1wsXbrUcLlcy30+XxmpctevX9+9fv36R/ft2zfT6/Ven06ne1555ZXY1q1bSamdLS8vj2Sz2QcNwzgYjUbbiKD2+XzNRBgnEokWeSJerzcUDAbrW1tbaXpNJBLp+POf/2zv3r371tLS0gvcbjdd/wJSEt9///25dQYGcuK63aeddlp/KpV6Jz3vlKbVtu3vQ9mdF0899ZQieRUUFCaDQtg2stzAzbDHd2D6abC5HsRYHHSQvH0Y5ygDy3dhl/0AwTVhjH0R/PVBQdoOUnkANs4gWybOyg2MB3J7EmvZdxqHn2aBXfuZOtdi5KXA76ewTiGWy8AOjbNSEq3jPC5uV7qYjchLSLgdQXguFqAnCeQASGCZsroQnx6Qxj74GziBOYTjPx0kbzObZ6G9K0Ho3+/INPY0MousxDV8kl3vQ9j/9Uil/RgyjPhZuuph9ievZ4Klq+bfU0yxnGL2ZJqls54KstgF23EdfhdB7byfBVU6i7hKe0va/Mk82xUjlE3xnCRBeQoKCicYFLmroKBIXgUFhRMX/SCkSMHzD0KID0DlewFeih5SEaQK0xyU/uwdrA7vb4QQn0eN6ygIvA9gGqmYfoK0cbcwEulYQlPK+ylDFZxCu6ES6ALZ+QHs4FVc/0cddTw1pvzsAxEo669dCYfUMmwzwBxfXuYskyqJID5DzKHG/yTJ62FOOYMRttxZp4+zYZ5nJK/AtjRWW3UWHGcWI5hTmF/DFKoCxyXQFl60wx/hDOPp/ZIsbR9XtvJaxfnIWq5szTpUrc4Ug6aDFLZYOkIOqTLezWrtvszI+wIEPe3As7YJpLC07zMgwmVd42AehfSJCDuP01AwBVO+omBSGZ7J047ZCdxzJx1eeul1SRoeRR///3p6eq5du3btE9FodM+hQ4e2hsNhfcuWLXZJScmC8vLyhYODg2nTNNs3b978yl//+ldx0UUX1ZaXl1f86U9/2oRtJdmzZc+ZM2fx5s2bKb2xsX79+pb169eL8vLygsLCwr8fGBigdNmDO3fuFDt37uwoLS21IpGIaZpm9LbbbhMyJWpRUZEoKCjYFo1Gtw0O/p9v/D3veU+h1+stS6VSuTHDsqyhgwcPvhSNRsWqVatO7+7u7njmmWdyy86fP3+QagC7XK5QNpt1SSf2q6++mrvWLS0tnkQiQdlfApR+GmU/RkVBQUGubmcspkrYKygojBspBBnJ8WodxmWBcXgmskoQUbgGttZ6zC9AndqN6MNq0E8+CXuvCOUWqkfJABLB+7IkentAOLfiN68vz/+STEWawPgoM3vYzF5xknPdsJ8WIJA0jOlLEXgqcB6LWNBpCPZkFz4z43h/N1lg3FTC7bBZvTh/+U4UgsL2ZQSW1eFcpF1dgXOV5O1stJFUfA/juBfivuAEsSRyGzGmbkXgZf0Ezi/jIHtTDsJX2r9DDtJ4iF3rNMvWkmBBiSl2v/Qzm0rHeUsV8nlYdi/mN2Idmaa8jqUqD6IttmJ7AQSpynTXCx3kf4Mj6F9BQUFBQUFhAlAkr4KCwomOLajR+wRSWF2EF+UfQo31irqCCtMYpOb7EBwJn4d68RykhRNw+HweL9T/jLTNpyPN85ajbDYDxBknjXx4uU/BgeUMqSyBU8ibh9SS0f8WnFuciNYw/2QonOh1OKZ4lLuBc5EqCxdzrok8KdHkuhVI/RZB//cbkPjlUO09zpxMLhB9O1GLtglKTwHnSQcUng9AiTAPqb0LxORh5VEPSCdd1KF4zeIeSbN7gKtZZa3WKEshKHB8l+BefwCpps/B+aTgLKNUzt/DfXkx1tsJR+llUE4cQppmqfY1T2BVq4VnnDNPuxhhSef9JxZMQc68Dcy+3+B4PrdMY5XEKaniHQH/QYow27aXRaPRrxiGsSgcDncahlFO9W4ff/zxRk3TSImUbm1tXdjV1UXP1bJdu3YtSaVSdQUFBX+JxWIRy7Lm4d6jfstuaWlp8vv97+nr66vdsmUL3VvBdevW1dfV1a06fPjwweHh4TIEjUSCweCFAwMDdD9+EM8o3aOG3+8nh7A7kUgc9Hq97lQqlTUMQ+vq6rrc5/OdkUqlcvd6KpWKtre3N4ZCof/P3nmA2XGVd//M3H63F2nVm9WbJVnNlmXZxgWMjTEYYxsDDgklYEgCJJCEEogTICEfJCZAILSAK67YcrcxxkVWsbolWV1aabXS9t27t898z7n+v+LV8Wwvurv7/p7nPrdMPzN35pz3/5ab1q5duzIWi03B82zi3r17p7iuW+Q4jotSBfx/m6qrq7sQhuYm9Bu7Sg2vXn31rUfmueeeO6gnShCEIY3Zxz3OMk5kIG5RvdbXWSYVB33aLMSy7Siv8jCcNs2awBWIHh0PUbAK/eQiCMLjmSNbR2QMkTfp8Yqz8g9Uy7YVUcO/RD8zhb7qKjgKliJl9SEWUTwL35sxXxz34yJkJtnO+rpcIB5ovJzAOFTKYjdz8ltsOE8mWfmbd+A8UP+bahj/BNfBAla2ZDREzAexD6tg3yhn6amL2TmlqOMIc77k0cqU5prKiljeh+QJ9cHj7BqIsf73EyiTRf1y7ZjwLrRPPZwZ6LmbwvjkBPZ3ORwPFeYpY9fDQhwDOS2mMSZtxDhnDvrogiAIgiD0AhF5BUEYCjgQMtbBYPgxGO50mtLbYeQ+IWdSGKG0Ii3zVqQ354zCwP37+P98B+nP5yCt7dN9aDILBoskog/KIBjuwm9B5hGvIMC1YjBvwTv+KIxHk2AA2Yr/uzZcTIdIpZCO+OAQOb3nIo1ZPY5pGkuLXIw2IgPRQhgAqRbnSkSvptAmFYjOPA7D4PkwCM3AubvHI6pxDNo9BhG01SMaQgsxP8U5a0fKuYksgpVHBKSM9zSLAuDp4czfsobgy99d9m5GtqZZFAmPBC+CwXEjDIcbcY2QeDcaRlSKAnidiTsV+J0iFF+DcOUVLZpPOIbAS9Axe0W0KmZ880rZ2JmBUxgeaCP736BvNDubzf5D7qLIvnVZnDp1ujRtMJVKXa1f6q2au7lUZ7Zt3wRjb5BdS9bBgwffVVxcfO2pU6d8uG8HDx486K+pqQknEonxMHTr+139sWPHqnCd/hD9M31/CDU1NY1zHMe2bTvuurm/d9rn89mvvfZaYTKZu03lnBJc19X/52+3tbWFd+3aRam49QKWTvGcu7gzGQfPvo74TxZN1ikUDS0iryAIfYT6W1km8CoWXUliXBtEUnLEeo6laW7sZBeoDm2U1fItR9+vCpG0k9C/ixiZVHi5jCgESl4yoyPScJKrxT5uh+j3F+jrbmLH3Ya6tn8OB9NTTCRtg3PieVhmIpzu5rD+nxlxbKYkThnv3U1N3R1OsWNUcLIjLJxD7lz+IgRWxeoHb8fzsRjHtgP9zQqsmxxsP4C+txc+I0U1P38hJvKGWO1iqmnMBeNiJhjT9RIyroMQuxYo/XU9cyZ0cTwFGL/ca9hcDuD9BlxzT2Nsp9B/XYcsbO+GeP4qczSk6+JW7NPvMUYNsDInacMZNGFcIxl2PWTZd8kkJQiCIIw4ROQVBGEocQyRiI8opb6EWoQ/hYfpt/E+FFJRCsJA8FsYTWrZusdj0L4OL13L9A6keb4PQu8jLF1bV7jsP0ai3LkYVE830qs147caLDcH3uEK84Qhcu6Hp/xBJl41Imr/JIwP4yHQBTpJW3e2SBlGpgAE7AM4ZjMieTzSDBdCmDzEpkfg+X8CnvGUwqweL73eLTgH45jH+2VI361gRNyMdHrzIGguxrrqMQ9Frdbh9RlsO+UhvuYLLbjHt7M2aWTXzC4Y6IjNMJTRvLydDw/zPnBnxi0xfI0MXkAd9vczQ7+D8+9CDCjDf+MUDLuJWCw2lqVmP8Po77puprm5maLty8mgmkgkTuJepl8NoVBoUjAYVO3t7VpYbo1EIhMTiYReXiUSCQf/ZRJuQ+l02k2lUrUw/kfYJqO4J+2iefHsiCJLgUIUHI/StrDMNjg3CcOAJUuWjIjTSMf5+uuvdzlvd7DtYZulfqjismewmZnmkHH/6whywqvvYLrFRD8/q2/rZ+IhFxHDbH6KGo3idxINs+jLExSZOwXfNxr70IB1z4bDXR1+dyEAX4f+fyNEz6dYfy3Foo4T7D0O0TCGfmAjHN2obnEbXnFW0oOLg0nmxJhmArGZhcaEhN5CiJzkfFqKd6o7sALH0oDv41g2mrEQWsnBs4o5HXpB/e+Oatl2F9sQ8UPs/PvZtADOewHE3momxEbhaLsZWYFKcd6pT53BOamCM+Y+5pzoon0K0B6vGTWgk9jOBPwfWuEYVoXpvARK2sj2k8T5TrKo83Z2HdDnGLt+2pkTapq1cdJwMMgY10SStQdBN9fByBJjZnkSBEEQBE9E5BUEYSiyBd7Dv0UUxxpErv1GKfWjLgZOgjCcOWAcWysG1tPwzNcG8U/iP/KPqHe6FsYbXzfaRQ/Yfw4jjYvtVaHm70uIHCORlzz/P4OB9C+Y8cPF//jdqA37ODy6SVSMwaP7NniE/xpph7+A48gXocoHQ9uv2X1He/m/E2m01+M4iSZ8vxlGqd8aERsvwLv/XUiHtptNK8S8tL652L6NtuEi71YYlGpxjlbCuEFGwYeM40gMAQOCV9QtN66c8phO11ODx7T+jP4QhHzkP5D+00zjqO+fX4Oj3H8hMieA/8Ry3FP0/eITMFxTetH/xD2Jam9TLWn9nPmyUmp+ZWXlt+fMmfPRsrKy8U888YQdDAa/uHLlyi+++uqrExKJRD0MuAdZ9JPPdV0HBt7PwZiscK/7XxiMN2Gf/fhPVyLlZQQittfzoIYZ388qy5a9dUgbNkh1kZ5CbbdmzZrcu440H85ceumluaPz+Xx9ul6o3bRzBUW+d4auRy3kBf3hqOwyMbQ/sPAMoP5UEA6cGdzPJ8GRcCeEsHJE6t6D+/wYiLyUZYWEt0VwxnkOIm8FiyQNMfGxAMKiv5uOni5zVEwbIh3PUkNt1MJE4mYmELbj2bMD6/XBQfMEpq3Cc4ZEXz+OtQ1jrvkoLaLQhqU4lmI4sd45CBecw465L+uwMbah1Myj4Szp4nm8FP2IAjj+bmdODCvQZt9n49EjOC+Tkcr5f7CecyEEjzailcnpzGZCdBDtGupBqmqHCegZI4V5hl0jcXadtmP/f21kl7oJ6zmJY6VXko2p4h6p0VO9yKgzC+I4OUvMRt8ogzbxdbLOiARACIIgjBxE5BUEYagSg5FvEzran4WociWMlg8YkVuCMFKwEKFVCWFwDKJHG1gqsX/DgP3nEFp7wlaIvIoZ111m8Oe4LILMS1Sz2KDbXJYMC7SNOXDuyDdacB8ikdf2aBfl8d3rmMk4ZbF3grzrT8DrPY7ogIs96pmRGPICas+6RoS3lyAqCMLwImnUEuRQFoCtcP4h9rDPFyFFPBn57+5kfTrl8/x58+aVLVq0KFJXV/dGOp1euHLlyqNz586tXL9+vTZCnrAs66eu63YUgXY1RGYFg+UvWDYDkzjuczs6mJ43kEBJUZWUGlromBUrVuSmrV69Ovc+3MVdgo5TXzM8Creza4baikPt1tTU1GU0rxZ4M5nM6c+dzedFOp1WqVTnZd71siIkD1lcI6tLENGdeyFyHsHYex8ErEo4FFIGhqUQgo9DcJqHvuyPIBZr0e8WQ9wNQrjirwJWp5gijAuN3/h7yEhtTCmMgyyquSOo//1P7BnTgojly7HNg8hERP31V9AfX4btPcnWfRz79X6I2RvgqDmaRXbRAEwAACAASURBVI0mMCbgomNGvb38CX0fLGdXPysjoyDml+FzBOOQQ6wfcTGE/la823B4bcM6xqI9MogI3gln1EM4n3+JdvAb14KfCZo2izwvYLWLC1gUehH7vYilOA+z64Knq+bpzMlGTtcBOc+SyDsfdieaL8vGd9yZIMGi3hvw3si+t6CdmjFvO5ZrxZiNO9+ei/Tgk9BPOog2LIAITNH0o7EvNM5bgGuYsiDNxH+Xxufi8CoIgjCMEJFXEIShzmGkan4CdXo/opT6Lt7/FbVhOqttJAjDDRtGloUYOFKk1UYMGMkg8XtE0V6OgW53Uk7ZWE6hDzEdg/1/w8BzBQbzCRhTroChPgHB4CUMXIPw/G9AtNl87O8ODDi1YWA1PL/DWFYbk/4WA/zBSI/VHWw4nFDdYRsGHm3g+jG8rZchVbaFwfcCePCH0Aab4J3tx3Fqg8czmG8+i9w9xtKctcAgUoGo4e8jwiCBdipCG1F0dEfCjCAII5MSHPWoTo4+BAMi0ZlKk0v5OXny5L8uKCjY9uijj64LhUIXnH/++V9pamoqT6fT+lkURdRuRwRZGudoJyUEKtkY1sqjzA6ekHBHwpuO0iReeeWVfNrVs84FF1yQ2wV6Hynirok+brpeFK4Zr2tFtxO1FYfarbvpmnsi8vLIYJ2CfezYsad/Q53tt0EiMG2H1iPi75AkhYwOlF2lHXVWKVr0JMRPYiv69ArPEwvLN6HvexEyTvQWH6tZGzAifoPGd5s914qYKFjIRGD6vQz9ccLBmKUUz83njGwRMRzbLAie3EGJUhpPxH7oMcFdyNpjircpJvq2Y/wWZ+mHKQq5jc0Tw3I0X9YjQtVMe5w1tpvuoETLLKMdqtAOLhyIC3H+FdrsCM5rAM65b2Bf/RiT1rNr5Q0mRjoQk/srqxCvY2y+gsZ3HxOSQ6yGMdW/trBvxCvIXjIafalSXOPl7JqKMGcDmwnGpiOwMmpQpzDW+xJEXQWHiYWsBvYGQ5wdjWtLt++FEHGpXX0QiDfifMxiKcirsI/kkDHNIyOYIAiCMIQQkVcQhOHCVnhV6vSnfw+B6E6IJd9BRzlfhCFBGEgcGFk2Y2DtYuBHkVuU3moUonq393JfbAyUt8AruxEDyQgGqmXw7KeI+t0YiNZS/UcMLJthXJjBjPrlMCqQqFkIo8F38/zKsWG8eBPGnwRS0vHpx1ibFLPUczYMNNuZMaaYLVvJPLwpvdx4pHX2Y/BeD5E3jvbOp5q6giDkDyHsSWc1IH24D1GK/IpO5s2NKZPJZCoej3/l5MmTq6uqqlRhYeGqw4cP/yCVSl2Oe1xJJ453fFyaxnPAKyNLMYvmsYfKfY6Et/PPP//0byTCvfTSSx0ud+GFF3Y6vTP0soReB//eFb3dZl/2k6JSR6q4y+FtoK8Z81rRbabbqz/aqidCKxdy9edRo/7kJ6Kjer0gcbe8vPz01EgkkptfbzuZPDObrAi/eU3Koz7pCfbZTJOfZplkYujbU1RhA6tb21uy/fQMsDyEYv7n0s+uJchklMB4pgnjHxvjHz3m+hXGV4sxPnIRvarHOI8y8bMd47IwEx2jGDvZLNLYZc86hzm6umzMlGXiYdpIVZ0xIoNjGEckmFhMY4ssHHmfZ+fYj+PeieOYCMGwEesLom3IcfUNrIvSKFdif6dhvLePtamZVag/y8ake5EWubvswcvPooGDrMY1RQlT1HAZ2ogE4TL2KsWrEPMX4zwUsn1Joe0WoS7yLjYthhTXV+H62YlIeWIzMrJ8HL9vYOKyhWjqWlw/K3BNt6Ht8tqBThAEQXg7IvIKgjCciCGidwvS/v0totyWIc3gjw1vVEEYjrgYpJGhZaJxjC4G5ufDKaK3pCBm0qA8DmMNOVOcZMKywn+PBq1k6KEBeB0MHmRUOM6MQApOHD3ts3QW4WUPkNNHBvcfOo4mDKgV9uWkYQzj9cNTGKjzNqmDYWgN6mPq8/XvbJmFuLcFYDAgS+lQqLErCMLZg4zinRnHfUb0bqiTeXPOKtu2bbu9sLDw2WXLln2zrq5O7d279wXXdf/TsqwPuK7bzCJ1veD3eJvV7TXJDGXjY2tr6+nPJGp2FnGp66t2NyLTa1lCr4N/74rebrMv+8nbRvgTul3Ma0W3WT60V0fCLodE26KiInXRRRflPgeDwdPi7/Tp088Qj/Xvepl4PJ6L+B3Ma1EYULxqg3aUkn+wcTsRBi1EaKaRfcfBGKoU4xU/BLwd6LefxPTteF4VQhSl0iq6Ju+30O8PMqclnp44zNILm2mIo3hRRHIE2yjAOiKG0FjEtkHPdC4i+5loXGakZ96OlNsfw5jmSTY+q0abvBdRoc/B2VRh+U2oXfxejBfbICRmIARTemJeKzfF3rlIzSOPM3mSZpj2oyc1by0mCPOU0SF2vhTSMRNzUb/4R8iadR5LHU3Zuiow3r/PcKQjMX8ZzgF3nKvFdXAdzv/L+LwEx0QppZuxjUasj84D1S82U1QPRlBFseGEwSlkmQaIIPaTIrm5jYHXHfdab9SYPx/J+6w2giAMDiLyCoIwHNGRbD9F9K6u8/M5pdRtSIv0A6XUvZhHEEYCRz2OMQtP82kYrAWM9GrdxRQSuXe/16CXBl1e9XvbO/hMdDWgvxg1aDXnYOBKNaLmMo/7InjRkzdzEINfqjM8D0an3lpPzQiHGPtsCirmMdGyNlI1ayeVP0cNJcVSZfP543hJ6JMgCP2JaTDqTBDO3c8PHz789NKlSz+2YsWK8++++27nzTff/JcZM2YssG17dDabbcb9tyO6u70BMWRdcsklA7HaTiGRbunSpR3OpufpbHp31k/b6Iko2Ntt9gYRd7vGvFaGYptls9nT+9/W1nZa/NUpn3ldXz2fnrZo0SKdDUC1t+e7fV0Y5rgQuDaxscsWoybrFuZc24gxBs173BCPN/ehlJTNUgz7PT7bRk1jnrbaZuIxr1FL3yuQAY2P7dqxjjHYZ24/oTHMaAjetWws52L8U4xo3nWINv0b7EfaSB2dVWfWHs5ANEwxQZinrG7D+qnubQK/xbFcjAnFJAxn2XvKI+o5PQjiscsE0e5SiSxQ2+BEcB0TeYuRvW4jfluJEkIkti/HufkBROB5LOAhjWv2HLTpHtjLPs6yTCnmAJFg7UavOERgqjfcaIjDzUwkJjE4zdJTJ9h57m5EvgXR+xQcp/3IbHUC6yrHMW3F/Auwzd2YdxYcFE7BqWEajr0NzgoTWRstgcN6vj+E6F7UkdeVl/BNwnAY7c/tMj6WISDkYdPxDeFsYQMliA9UAIEg9AgReQVBGM7oDts/KaWeUkp9Wil1k1Lqe0qpG1HH98luRrsFPYQbQRgq1LL9HI9nv4MarnMwICpgIi/v/Opr/x0Y3Ht1XF0j0ot/N6d19Ftvlg0iJdgG9t8sweC1BdGve9myEQzcFAZ+/FhsGChmYBv6WCdg/t7U/+2sTbq77AoYQybjd+1V/0ukUOM8Id67gjBy0QLIINLZfSZ3j5s6deoNoVDos01NTbGamprwhAkTgpZlfct1XQtGw57s8KDe17SgFIvFujFn/6MFr87oanp36Ok6+mObQv8z1M+L1/5zgVexyN9JkyblIoUprXNX6GhgigLWwjCvHywIfcQUOfj3rEeaap6K2Hyw9FbgVRiTDIRNgkRi0y6yAKLZT5GueSUExQzGTjpi+XH0ARawcjIBONDGEYE6CuOt30NUiuA9zCJZC5koTVHHVg/GURkmVqUN0ZgLvCTsxrB/bR2IyORE2wSRmqJryzCe5qJlkomW/S1+bWWOvNXGWJBSea/HfnxYKTWOibyjIW7uwz6uZAJmJVJsP4YxtE6z8ACOsxLicAWmFeNVwOpXhzwyvpgkDWGX14eOMVG4kQnFrYZITML9LpZGug3H8iRsGRMwbxLrWYr1tEHopqxaJIIugSi+CMdHTuG63a7APtlonz39fD4HAj8cwg/j+EvhLL4Oba3/w9PhjKJwXC2w/QRhP9mKeasQMb4BbTAB5/hNnO8FfSj1NdiEPe5pflwHfg+njgC7RkIezhgkbntNE5FXyAtE5BUEYbijH8QvoTPyoFLqr5E66DdKqYch+m7qog3G4qF+AN/LMBA5ygYg8lAXhgLTMLC2EVG1jdUUUhgMljCBVHdib8dgKN+4C3W4G7Bf2nDwUQxsHvRIFa0Hr5/B//1xJiAkMZC5BZ39n2O+b57l401hsP0rpME+5jFPvcdvgiAMY3TKUy1m6Ndvf9uXjPv9z3nnnfdX0Wg0+NRTT63NZrPXzp49++uxWGyW4zh12FheppG//PLLz5rAKwiCN1Srt7sCr04BrWuBa1avXp2r+5tIvHXLCYc7yv4uCEInKZAnYgyyHyLaAgh8DSx6kkTDMjjKtkA4Ksf4qhZjLp1K+Lus5rCfibohlr44aEQqB1laaqpbS+mqi5lYXMBqG0ewriirkxsxIlS7iz6ezyulfob5r0CwQJZFtDZDoKw3ollb2XuMCcdxFs2a7EIcbja+89JjWtB7lgn/aw0ngFfYOHmnIchWsnl0212LsfULaCefUWOY2jDC6g+H8L0AQn45qzdMwnAhzl8hfi9g6cI7wkUbtTMRfRWi4hXG+Pra/Ev8toE5XrRA9P4gROq7WS3oLJzE9XX6D1ju98wRowG/fQK2vd9iuxfgHLlGJDrhGI6JDtsfclTgtkLXw3HEYfNnPJw5zOujCQ4XdB0WQ7TeDoF3Bo4lgzZZA+cTH0ReinROwDHAwv98FTs2WvdyXMNjEAm9vw8ZzwaT85GpLYXrdA7S6ivUo/bDCUKhrvoxRMtbaAdyqKiEjYwE/3m47qgE12KjBFe+4mPXF+FnGfa8UpNHcK0GPWp1c7Hba1kvMVwYYETkFQRhpKA7yPej5uUH0Cn8EDo8P4eY0so8OuNGZ+pcrCMGz8F2iLxhCGeHsRx1gsVaKOQjh9nAbSM6+9zoXoIIXxJ59f/gj6zDmy9Y8E7lHUfXePEObJrNYxv/bTNazMIA4HH0k87Gce/DPWmTR3SAIAgjGC3sUv3K6urqs9YQpvCi98lxnIJMJvOZY8eOTRk7dqw9adKk5Tt27LgHBiInX+9n8+bNk5SwgjDE8fv9OaFXU1pamosQXrx4ce77li1bVCjUWVlxQRA82IboUYUx40YjDXUDW2QDy9aRYgKvQhmcQ/2UocNvCMU+9tlm9W39sNNwIdnPpgWYUFmAV4RFrFI94wQTCRWrYzyKOU53Bo/y5SmKKbq12YhmbYJNqpWJw+1MHG43auBysdB0/uXnxzUiMB3Uj1bYxj6W1jfNUjT39NwEjFeYicMRiEFB9nuZ8So2ak+XeIjCJKLOwrV1wJieZefcNtoog/0k0b/REFgpUjOL6To99qd62A5emNe+6VTB98HBdNf4jbMH9b3bMK+O0r0G5au2oEY2baMJou5fQsh8mTnDp2BT0bWzL4MN6BVMc/H/15G9n8R//iU41S/G9WHj+skysTvOtu3gWs0aDvYOe6WN4+XTXRahT/abLFufy34/yq5phf/xQtx75uA/S2KsH9HNzbjOFrN7nWLR0CcRGZ6Ag4DCdTEP263CuvcwQd81hH3+3WW/DTYF2NdtOEfj8d/bizafC+Ga2mE5IvvjELrH4Npy8N9TuG9kYSvfh+dEEJHlO87CMfaUiHF/4Bk8qeQB3Qctw45oCttc1A6w/4QyosQHFBF5BUEYaRxF9O4L8NLTQu/XkMq5BTfmk6hd8hza5jhu2lexOp9U59SC91shHnrT8dplpJhJS7SvkAccwS5YuCaXsI68wvUaRkrjQnTUvo4OTz6JvIo5Yyh0nN7BvHHnomNFHe7FON7/wbFdiHuAi8HjcoiqNtKLbYS4bZ2l424bAvV/BEEYZHR65iNHjuRjs+eMFVu3bv3pokWLfrR48eKndc3QmpqaF23b1pkR9vj9/rpgMHjGADcfhNWrrrpKBF5BGAZoRxNdz1ehrq9m9OjRuXct9m7e/JZtV8ReQeg2pidZCxsX1RrTEswYnjam92cK44Gqm2szwZgLx8qIWtSRs+9nUcQhFllchmjWciYWFzJxk0RNin7tTCBOs5TQcSb00vcEE4gpkriZicIxI3q4HTWVaezcABGrGPszBjYvyqm/CsERGUwfx0o7TcP6KJLxHEyjiHAzSrUr/OwVMAT4QpwLyghDqcH1/v4EEb0LIVwpCHk68vZ32MfLIHIehj3jXMz3HQh1ayBctkP0WomobRtR29qW8H+G0GwZ544izjk0v2NkTePXG19f0BB1LWN6wPjtiPFfIFGaHBWqPf53dB2mjQhxEh8j2G9yFrCYmEqClwsx+YoenmMOHafD3rkASvvNRdyMMX/GmN9FpoAfsu28qJP1KKUuwf3oObbMAVxb1+Nae545orqwA70L1/0+RIcTW3Cd3IK23IRgIi7mZvEfpeNKM7Ga9p/ulxk2Px27w5an404aYnHaELtThricgWPHcbZOEq8P4hhOsG1mEA0eRxT8QiZsZ/D/aMe9ZhVsiPyaXYTMD+cg8nlHN5xgBhvXENinMpuhQo1z0gAiaKvNaPt5+N+QDjAX19VR3KvOh31R4RkwHu2hYGtcN4DiPjmCuCLyCoIwEnFxw/0COoB/hZt2JTpFaUTx0Q0+jYf+aNysn2GpUxPoVOqH4K1I+aE/f5F1wtuMmiPNRmedf25nXpkJ5tk2EHTmUeTz6Bj6jA6YMHRx4dVYik4BdUSi6NRdjus1yOrY5DMBDMDfwLEVMG9y6lzuQyesFR0t8rYMQsym6OVS/Ofq5PoWBCGfuPvuu/P1fOSMggcPHrx3/vz5V65Zs2bNPffck33xxRe/uHTpUv1cKfP5fNXl5eVnRIWcbXH1mmuu0XWET6d0FQRheKHr+WpGjRql08nnPr/++ls2t+6kgRYE4W0MVzsAiSldRVs1GIIPx2dEC/tZOumIIfYWGDVuKaK1FJGsBUZK5Aim0bId3cDSzH6UYPWGtUD/CFJN03FUQ+RyIHJw4a+IiacXYj9I5NX7NRs2sSkQSvd77Et36ShdeEdMRNDFHrT5OUzkrYSYTWmtN6P02mEW7b0R87ThOIJooyIEatCxlGG+n3nUhzZF2M5SUJuisDK+u2jTrDGNb8vMLpZgUYMROKlr28WP4cSvy1T9Ae06BufyZ7g2qWZxNZa9AMf9DD5rsepVbG86hM6fwVa0CPbTV1ldZqqhHWUpgW1jOn23mOAdYPNaxrIWO1/U9gH23WYv1UEqdgfrpP8Yt+2QOBqCY0Crh+3Thj0p6BEVr1j6+CAE4YGiI/HbjBY2I4ddRG/T4DEGu54WMt8DEfYN9t97A+v4GI79UZadsg5i9iWIBn4FQjFt83Vcg5+G8Lkf9didPAp08sEWfw/LapBC1DH9/0vY/A7O/wIc0yQmeivcZ+divipcDwTVrZ8Lu76+Z38ETiZdpavvDeSk9F0ReQVBGMnEIOZuQsoJurEH4blITMUN+ll0rmfhRnoUN/VadCzmorO5H52gceg4mGQ8XuRt2YZXjHlKNbF3SimdYmJwOxOFuTic6uKhOg3rI++uMehMVeM4KyF8UY2GKjzMheGBa9RRmoPrjrwEt+P68BL8840MUg9RJ3g3/s/ETuYt2YQOLv03WozB+uZe1mwSBEEYUGpqavKmgSllNMhF7BQXF58XDAY/mUwmrerqare4uLgmFArpzCg+13VbiouL88p5ZsqUKSLwCsIIQIu95eXluQMlsVc7mYjQKwhCP0JpZHtah9LvIRBTumFeczgC0aEQ34sgMpXChkUvEoep1nExHLonsW06EHVnYn9/aezTy0j9uwKO4XvYtH1Y762wFeyEEFLFMm3xV4KJz30VfFyM26k/uZVF1imIuTy99uvYLwV7wQE4dyus41UWhRuD2EmsHyJ2kCDO4R5EZiYgJpEAWohz9AZ+I6cDBRvfCSxLkfoTMc3G9bgN10At2vBhvNuGEO31nT7z6RZbP5/XZwjZASaImaKvbYjCASNtN9UePgW7z/kQuil4YTKui0dgE52DIJ4Y2mc1HAnWQbxcyOoYL8Z/726I3ucgnTUJ2jwDnp+lDbeM7/z8UEkxP1uehP0wW5fFzp3ZDlwMp2nccYPKmfkR1KFwzgkSe6mWeYMRdZ3BvlUymyGRxjYLYWub2E9pzvubekRik8h7CPfSD6Gt7mXbi8MueDVE/CeN7Ba7cLx/Dvv/Q2xaI0T09+Ce/CNEmv/ZAEc33yciryAIwlsdFp5SyDK8VCfgAbgN0y5Cx+AoHrIL0Jn6DR74On3KZ9GZploi5KFJHXGqN+JntWOKsEzI6Hwp9lDOsJQeNIhoYzVbWvDO0/Y0Yp46dFQoFUkAnn4t2OZSdIzp4XUOtnEM03iNC2F4kMI13YDOfxuudx8bzA0Fj+2U8T3LrvOsR9qoRvbZHIinPNYnCIJw1rnuuuvUQw89lI8nQvehkhMmTPhMJBKZ/PTTTz+ZSCSuuPjii/8hk8lcq2fIZDLNgUAgb/Ii67ZMJntqhxUEYaiSybxlvywrK8u9a+FXRF5BEPIAsu/0pFNiMVHIFIhDhkBMdqUTbPkqCFdPQKi4AIIoeb61wgawAumM97JlU7AdLIJYoiPjfqqUeh/LYtfK3unVhOWamM2K6gu3s5TfcVZz2Ctw4ZSxL/y4zH6mg2hcheMpQ3udgN1tNKtPm0F2P3KCX4T5TsB2R2mpWyAMZtmyZ5MWBK1QFHoNq9WrWM1lao/XjEAUnrXtELP5uejfk6Aeh/A9FGxDJPxuYHbScfgvJGCjPYrr+jCCdQpx/QRxzrex9OW8vbJY7hBsSnNYgJBXqm3LEL/N37zEcGVMtwzhmM/PRd40jpFEZF7jR98DzsP5vAOBS9NwTTu4H5wDh4+pELdfQPuNhlC+FZHwc2APP4LrYSVs3P+Ddc5F1oBUHl0vNnNKISgNuM2yVhJkf/cxAZ8fC9kLvSL5HWO9hRCBDw9QJC9FyB8UkVcQBOHtmA+iA3gYusx7sBzTqEbJH+EZdA48o9YaD2qfRyc8gk5EkHXGoyyimITgUuahWYwXpQ6hdY1m3ppBbIen8bDhvXcrE7/24/fr0Nk5wATeRjwAF6PmwmF0ilej051iaWJIFKNOeIY9MAcb6tCJ5bb7uCxS3GU1hKSGtCAIQh4xfvx4df3116v7778/306LNtol0un0ZNu2v7V9+/Z0SUnJO88777yPv/baa9qIMtFxnIY9e/Z0Y1UDj27DMWPGqFRK/HkEYaRBYq8IvIIgDGFc5vTfGwphr3kJtqNb4OBNIu8qCFw/Q7rjOBMKp0EE+g1sYpTO9BSLRKxCNF8Y322P1LIOO4a0IQjTi2wUTcy+4zAhzGVRkIrZ8cgGpwXQX7BpYZbeeTYT+xQEvjXYlg2R6xlMS8EWNx92sYVY3xS2TZfZwHhtVmWcL15blk93jLTVWbYu5THdYfM4ODbaDq8jnUHE9pv4PhOBILU4r7NY9r5ROM59+B5EBPgRnNuJQySzH7UrtUMDC2Sg6dSWKRaJqtAmG5hovhvHTudhG1u2GaInvwbyjQKI3BHYSf+IY6zF+SxAOwVhLz6MIJ/FuE+0ws7cgOjUFNqvCP+TLK49ivg+hXXvHaT2cA1hvbPvrpGSfyIik++EDXQx7olp3BuWwpHl9/ifTGX3wUVoU7pHXoDazvQ/WoDl0gisehb3k4HsfKZF5BUEQeia48YDqp1FBsbguVWP74eMov28w9YT4ZHXmfAxcTjEOssBFgUcZil7ig2RuAQPmoNGyg5K9TwW+/cE81Zz0KmO4IGmU/Z8XCn1YUyjGi+UYrqFRRJzz80WNk8M2yFROMlE4TS+82jlrmridMRYdDaowz4K56EOx2NGdQp/ulYVvD+D0iaCIAj5hRYlq6qq1A033KDuu+++fNo33V/IVFdX17W0tHxj6tSpPwkEAqqtra15165d/6eU+kfbtlvyITWybjtdn1MEXkEQBEEQRii1iNikjFe/N6Jgy2DjqkOU3iwmbpTC3vU65rsOkYF3saCDMASiUsNGVcqy2pnBC2EIKxOMVL2ql2KRD7av/2Oi3m4I0J/E/r/EbEPN+H4DtvcIiwJOINBDp219p1LqMdic/oelvqVayGTDS2M5Sp9Lkck2mz/N7DCmvTDFUlyTeJtg9kWX1UxVLMufjcjqPZgnAUGqnYnXm5nIOwk2smpEa1LkL4lji7FuEvRnG6JZlpX74mInt4WS6OqwY/f6zufngj23C3KhzmLztzDx1UH7LcJxTce1See6DWI/iZ8zIcDRus+FaOl61OU1BxA9qSc90EzHuSA76FyM0WLsejGdJaidj7Dslhn8PyhVdA2m0bHvxn+Vzt8mZmemaNl8CRixjX3hKdjH4Vo/ivkuMtIpx5DeOQ1bPHeqCeI4a3AvXWxs4xRSOjssgGbAB58i8gqCIHSNV6eSfkuyzp/Cjb++Oyvtgt4Wqbc9BGKqvZE26i7ojs0MdGDHIT3NHnTaS/GgehMRv6UQS0+xCORyeD5RihDeqeMeSmbaizQTeNuNVNNt7MVF4hgTlc3o4ThSqrhsW0swbxZphvZhkBKFxxZ5MvpwHDztz0gnr2omCoIgCH9CpxitrKxUN954o7rnnnvypWV0vydTX19/JJvNTr/00kuvePnll7Nbtmz5bmtra855LBqNntGnaWtr63BlA4VuM12XU7ehIAiCIAjCCMXshO0zvq9jNoEtsAMR+5nY2IBgALP8GeFlmwqwTHZBFrRAAQwlTBimgIVSo5RZd6CSVKYtitdHbTcijF3sg1eQhsvqogYR7XgU9iaLCUCUbY+nbKV6shkmnNH2fCxVrMvaiaeLtZmgarPvKRYMQssX4JzsxfxtiEy9GedoC0sz7WLe9yB6+wQEYOIEglhuhs1Tn/u/QcRzlu1HxtivLDvmLCsRRjZCnka5qAAAIABJREFUcijwM/GR2oHa3WFt1G6IyKa4rdf7E6XUU2yeDRDkV0LofJyd6+NwULgK19WTbJ0WbKMZtNcyiNtxtl/04uK2y/4XLjs/2Q6mK49o7axxvaaN+bmN2GIl+fj0udhuEHbQBzEtjmNaiONfCgGczkUxS8Wu4MRAWR5NIdsx7iFNHtMHi3EQ4sm+uxzXeArX37n4L+j9HY//B82bNvbZZv/5dkRp07HvNQTgzWz5FIRuOm7KbEDftw5Wm4jIKwiCMLzoSBxu9fhtOryLDqGjtwIPySZ05NNIT5GB9+ajSql/Y51wPzpFhRBPC/HQLMDnYva5iM1HqakLMM8Yj1oVyvjssHmyRo0W3dn8KOtoHINH5Y14GJ9gHZQ2dPQy+G0uUg79kYnGyT6kPhoODIU6K4IgCCMWnW5Ui5U333yzuuuuu/KhGfRgts1xnKBlWXeUl5ePOXnyZCYQCDxSVVX1w5aWFtfv95/1Z4tuM0rVOoIIs/SLCv0wMuiQYZAMGn5mnMt3CgwjHz/OsFHDLzREynhYOD/8uALMgFroYZiPetQgFARBEIS+wJ2+4ywyUBmZ4RSCBDqivwIXqCRXT3CZSKaw/Dz0cX4M+9ZSCNoplD/TQQ6/xfP4fBx7HatnehTRvudBKPsEq9dKdiufIQb5mLDssghlXlc5wJYPsKxqLvvOa7JGmDgYYPtg4/M2IxW0xeZzPPoZDttHfn5dFi0bhFPnJqzHMvaL1k+iZJB9d5jAb7OI5iBLo+3Hu8MEZGqrDBPmFRPe6JoII1Xu08b5pveoIejRem30rRJsOf3+KgTi1WiPCcho2MYCXPh+8P3idXWzHt9dtm9xHK/fEIWpfx5jbWexzIe0jleUUl+DiK1g07URcT4aAi8F+SQQeXoJxO2tLE03XY+LcO1oW/ClON8JNj3JjpmujThbh8vGEbw9s4Zo31vIFlzNrtMMzg+1Y7mxbj+E3kMIcOLBPTWI4nYh+qcxT5Rdh3St8Mhy2i7XVLNG9gGeVt4x7gn9DTlXHBCRVxAEYeSyDQKowsP7dfagqkXHlVJK7EfN3o6MZDbrwFisI+5norD5nTqoEVaLmN4LmDDMheICVk8ijO8TDGE4zR7U43BcZBRLotP2Phx7OzzzPohOTIuRerqNRRrzNNNp9p4y3keyQCwIgiAMAlqsLCkpUbfccou68847leueVQ1VG8BaLcuaFggEzt2xY8ee+vr66RdccMFVzc3NF+3duzeTTCbPWqkEXXvzQx/60EgUeBXS6h2BZ34F0vJRlEaYOfzpPswcGDBNj/x8ZAac+k6hvzcV/T0FA08x0skpGG3XDYFjslHfr5FFmYyFYSqD45qEmmkKxrgDZ3mfBUEQhOFPZ53MgeiA9lYc7gw/RJgNEIhaIPBE0QcaBRGMnqs+CGV1sDm1IQKwHc/k0QNYn9as22kGQXQ1nQuaFRC5HkCbLoDd6zj6gUvR9/sDhO1FEHJt9DkmQ/iuQt9L1y/9pSFeKybG8330GeK2Gdjh95if8DMxlLbDo7kpWyFN28yuGR8iOhuQZnsV2mAD9mUybIhPof+4GH3fVrY/Cturh3gcwHUSYHWmad4w267NRHDF6lTztirAe4Ytb7PvJMYHmAhusbrLJIiPZgI/bxcfttHO/p9cNA+y7RP7cbwfwPr12OF/YfP0sf1zjXOVMezADoRfH7sm4kwU7YvYaeE8fVUptRa/1eE/q0V53V73GenAt2HaKowF9rL1nUDf+v34f+s64/cj2jnThThrTuuqNvBAQpkAPiAiryAIwsilxjhyHu3bYkzrqn4Adai4wNmT4nsWe9mGSGwKw/x7iHUkFJabhpTMD0EcXgjDH/dK9GG+jfi+hqWRMTuoDvM8S3vUIm5G27Ua9YjpRbWP9w8Rw6kgCIIwBMhms6qwsFB9+MMfzgm9+vtgYdtnjHl1FG/Ssqxin8/3ws6dOzdGIpEvTp069csbNmzQglVxPB4f/PzM+mHv8+UE3mg0qhwnL8pDkfFmNEpe9Pd43IEnP3mq+5l4O80oKUK1xuajvzIKRo0peVqbf4/huT8PBtZxhpE5hSwxCv29Ehzb5AH2pO8tu9D+LoxpC9D+k5mToYL4ey7m8eN8bmMe/JKJRRAEQRC8SaEfQf1R/dzdweasNmxgb8JhTGGZXSzgobaDTHn9hfk878vzvQzZ+fbju5+JpSWwCR7BMb4K5z+F/lMYEZ9HMN9C9CPPluNmZ+I2b6MAE+WbEH09zqjHug/95RPod5GgHILYfQDtsRx9zS9hum0ItpYRna2MaF/LmF8Z4rbyEMBN8dvcHqUEb2BRvAqCte4bP4F+sN73Z9EWEWQ01PVjf4Fjno424mnASaQ+BhE84CFS+5lgy4VjLvz6mf2WxOFgP4wvzJo7FtuG8lg/tWWyE0cCCtSJsmAeyiTZ0eC6s2mDzemofRF5BUEQhHzArE2heplaj2pobEPkQxBpVsbBMKg7uRdA9G1Bmh4t9P41OvHFrAYM/0xpqKMs8ng06zT4WceHhOGMkc7kd0qp7w2gx6cgCIIwwtDCpRYwSegdrHqzOjqWkRsI631xHOcLBQUF11RVValkMpk+evToMzrFmTH/oEQeBwKBnMAbDofPpsBLkQZViKaYCqFuGYwr/T0eT8LD/V581wbMy+DMtp5FtyoY6bTB890wBt2LMhbfNOrv5QsfU0o9h33Zg328GZGtz7B9bEAf8Gq0/52ITPlxnorXH0R0gYM+4iikgNyKUinUl2xFdM0NMMz+FH3c82CsPIF5mvBKivgrCIIgCDmyHiUPuL3JTEPtst+8gheGSqmEk8yRTEGsjuJzzKgdWsuONQuhj9osDRvbYEUnetFd8TuDfaVjOYFzSWmDj7Jzn0QNV3ICDCA69A2Wnll5BMHkI1H0849DlI/DobQN441WTG/G+SxFvziO/r+O3H4YATNVqL/sN0RrZdg9CZ8hoNoey5nz9BSXpWsmquD0qMcHFhwRKFJf78MSXNfrEYk+C/1rF06tun0egd1Xi+B/j89Dqe9M0fJvisgrCIIgDCcceKPVsoiIjcwzbwI6q7uZB6JOhfe4kWY6wDzNgqymSIRNDxv1h+lVgt8KWdppbTz9FDzrvjiYxfcFQRCE4Y0WMEOh0GmhN5ns0kfKNd57jCGaUr39WDqdbpg3b95lmzdvdrZv3/4fTU1N+jlohcPhYr5APN7nIIBO9123hxZ4tdA7yAIv9SPG4DUNaeCWoQ8SRf8gBaNLT7KedIekkX6NxvvtrMYXeQJQjTYH++HH5+QA7FdfsY1+E9Wxi+Na4BG6dFyUYi4Ao1AiD/tetnEt+/BfinvU96LojSQMs7ofeqVS6i9huEvhfT/S0R1A9M1JGLsaMH0g0mAKgiAIgpB/mOKky2ryemXZIWHb8YhWHhxP0r6TMfrCyog+Nvu4fF4SfSmLykGWfjnfhb/D7Hy7sHmW4Hs7Al3o2I/DIZDOaRjpyqkUyhSsqzeBN4NJEMdCgTRlRv1uF44NzTiHZeh7Z3Fe9+OYbbRVZzXG8x4ReQVBEIThhMvqDBM8RXIdplMH7U2WPsRlEbjdtT6baVe4OMxrB2svuc8jWuZnSqnvwEsu3ztNgiAIwhBAR8ZqQZOE3i5EVF4/q1cYkbjaCzpi23aD67q3V1VVnV9XV+emUqk/jBkz5l9bW1vdYDAY5Qv0QeQ1RbG3EYlEcgKvTtXcjxHDXGQMw6nrJBMbx8Cb/BykQFuBLCIlMCikYDTZAiPKBhgl+ttgRumaFc7zYmz3ddSe099fwXRK1bwd6ffmQBS8zTCQ5AOWYXhZhLbTtbfGI5r1D5g21vDqXwoP/j/Lw3TNFouu9uEc6PPyc0RSLEK6wAyuryWoQ6Yv7AtxXh/EvBPhSKANc++CEbcFfdom9HnfxDmuRp+4GeJvRsRfQRAEQRBGOGa/3IUwejYjmLuLVzQ62ULTHsfGo9H3sNTPKTgLFg0Be+UpRGYT21hf38EYh9rlOPq8NDg8wkRxB2M0Xx6lYe4xIvIKgiAIIwmzDrHL6pP0Bm49TrOavV5Uw4vsr5RS/wVD3vc8OmOCIAiC0GO0oKmFzVtuuSUn9La3d5hJrhCD2GhvW9lIv1zuuq6/qKgoHAwGP3T06NHDTU1NExcuXPhenSp479692XQ6Het4bT2CaomVeC2kU1drgVfXDO7nlNALkPo4C1FxDiIlFyHF2XIIvRVIt5uAZ/hGGE42wQhxAkaGwYiU9UHg2w/DTQr7TdiI4ngD04oh/J0chH3rKwGI5acgZs5kdbWCaOcD2EYF+lob8/yYfLi2t+LaaYVYXcBKjuyFUUrh+HXmmuf1fxDHWQaRew5E33G4XidACLdZDbc2nOtdSG99HK96Nj07lI1dgiAIgiAI/cBwL33RaHx3h0iKanN8aQrZpq2Vj7/M40sOETG/Q0TkFQRBEITBQRvQ/hkGOv3+dRji/h211ARBEAShT2hhUwuwH/nIR3JCb2urmWktR5p5pvcKnQ6ZUZhIJHzFxcWjQqHQ+k2bNu0uLCz8yKJFi2576aWXtKBUlEgkPHekF7RjDPs24amoqCgn8Or0zL0QeGlQTwtWQCBtx7TZ8PJuQM0qHfn4j0qpKyA4JyG+vQ5Rdz2LmKw9SynuXHiwkxd+Hb4TbRAUKSXdriFkH9jBohOa4blPUag1TAhVOCdDwWiTQaRtA7634DgpqrqWTVM45jD+xw1GXzIAwbccr0rUgJ6NiOAxEH/nIeVzGutoQHtWQ/yvZrXd6tHmKfz/pNavIAiCIAiCMFwY0n1bEXkFQRAEYfDQhrhfwtD6d0qpTyBK498QiSHREoIgCEKf0UKnjui96667VHPz2xJGPIFo03W93U4wGORfSxKJRDSRSLS4rvsl27ZvrarSOpJyq6urf6PT/zqO0+uo4dwGSkroOPTz8yEmVOemaW6++WaVzfb6MVqGiMkaiG0XIa0xhUNrsW0yoiGD2If3GpG6+yGK1eRJ3TKvKExewsKsWeYwwTffaTL2j6eTM3OBm3XZ8hXHEHHNc2ROU504aqQRpWtGZRcw0XcUi/qdjN+rIATr6/wGtGUt/nd1uNb3I4K6Bus/hf9JuoN0z2Y9ZUEQBEEQBEEQ+hEReQVBEARh8HlMKXUQdXo/ihp+31JK/WoIGVgFQRCEPEYLniT0ahobT2fiegQRnTvph7KyMj69SwwxdbRlWSX19fWPJxKJ6gsuuOCirVu3Znfs2PHjcDisI1o/h8jBXqH3TQu4OI50Y2OjzobRVlZWlhOO9LTchHSfdNUCpPwtgSAVYinAXLSVFtvOR9tpMezHSG9WI89uYYgQw4vXL/Oh7loZE34nQfzV0b6l+j8O8fdSODm0ISV2Lda1G+/1SDW9F/Mo5kBB0dV+vJL4b3nVP7MkUlgQBEEQBEEQuoeIvIIgCIJwdtgJkVcbyW5TSv0IRuNfK6UOyzkRBEEQ+ooWPrXQqyGxt76+PkZpeysqKnK/aaH0jjvu6PbWkkkeOJkThYKBQGBnNpv96jnnnDP1+eefzziOc8+8efM+ceTIEct13dG9ORS9f3rf9PboOO69914tIKkPfvCDXvvSXaKof9oM8bYez2MdzXghInN5UWMLQtgGREAvQ7rco73ZuBc6OjqV+pNWTNHS/DdBGACyiIxuggMiEcY1TxG+usbvDIi/lZimf1uolLoOKaJbIeZ+Vyl1J9YTwjzNEH7n4b92CkLuXPSJHfzP/JIOWhAEQRAEQRC6j4i8giAIgnD20AavryEC4suo1auN799nxi2vCAdBEARB6BYkgup6tZq777779GI33XRT7j2RSKhRo0apU6dOdWudmcwZGXB11J+aM2fOsmg0esXevXuPnjp1asK8efNWjBkz5uOWZWUg8haw6NhuofdZ75tix3Hbbbfl3qurq3uyqgiiibUoNU4ptQBRi/+NurTtqEG6FEKUfgafi9+SiF7Uyz+NFLnbPNICdwivYUzHYdQ1zh3PhAkTzviuod86E7PNdXWHXorjwsghgdcppGlW6JMWsshf/V+aCvF3JmpZRzCNqMXrEkT5luGdUjhPwOeduJdE0C8WBEEQBEEQBKEbiMgrCIIgCGeXLKJ3tUHr2zCAk8AbhOFsp5wjQRAEoS+QWEoRsa7rqvb2PwWrakH1+9//fpdbGDNmjDpx4gR91c+p8ZZlaZH3img0uufhhx/+QyAQ+MS55577ldra2lbHcQ5aljXJtm0dwbeeFuyqfq7eTiKRKGHRfbq2Z6C5udlC1KAN0YmmnZ6HTYtAeJoPAXexUqoYwu0hrXmzTYYRofg4pi9Hjd1TiPbdzmqgdhnBGw6HT38+dOjQ6c9Tpkx522+a3/3ud+o973nPGd819BstR+eRb8NcV3fQ6+PrEoRukIWDYjP+G9uxSAjibyEif3ktYBf1fN8DQfcBpDknXlZKXY3/pY1XOWr8NiE6OIb/pIS1C4IgCIIgCIKBiLyCIAiCkB/oFJAfMgxYfkQSicgrCIIw9AjjPk61KW3Ut2xB5FohplFEWxEEjQGFhF0t8gItmtrt7e3dyhqhxeAHH3xQHT9+XH+tSKVSZYFAQEeT1rmue1t7e/uVY8eOVcXFxRNra2s/b1nWZKXUZwOBwHISebsjLuoo41gs9q9owyDaL9LS0qLfCyytLL8lLgUwT5i921gmgu9JROs2KKU2KqU2K6VeQxQvMQpi1AEIU1kITQqfu11KQYuvBw4cOP39scceO/356quvfttvBAm7Xr/RctOmTTs9jbbhta6u0Ovj6xLBV+gDSbzqjf+J/g9OQUr3nfg/powMNQk4Ueg+8H8h4v9+zHMUNa9PIsXzSSb8NuO9BSJwQkRgQRAEQRAEYSQiIq8gCIIg5A8njD2xYGgugCG7DNEPDXLOBEEQ8p4wIkc3QYiYBCFxO8TDObinv4lx2Xlw+HEhUlqIRuURq34jejXA3n1sus9jPguii2JCKImkQZQK6JSJEydq4VXdeuut6vbbb1fRaLQsnU5HfD6fTv/7nWQy+ezKlSu/UVtbqwXIe8rKyu4YM2bMD2tqamzLsmbpdcfjcXXOOefk0gV3knLZam1tVbZtv48JQloI8lmWlcaxOGgrh6ahXZP4buH9OERdfR52QcilWrycFohIpH7XoI26JBKJnDHL3r171eOPP+65WG8EWb7cVVdddfq3jrbR3fXxdc2YMSN3bgShH9H3ltH4v63HPW8qxNkUIufnIZ3zNjjB1KCfWwKBeAbuT0F2H4vjf1yLvjO9n4AI3Ib/cyt7T+DeIAiCIAiCIAjDChF5BUEQBCH/KIQRTMGgdSXS4mnj114ReQVB6AEWE63ylTJEYlEUlo1aj9UQI4Mw1BOjkEK3P7FYqlD+otTAyiNFsN8QVsOIAq3H/HEssxD37SrUokxBmEziXu+DoBFCffYAPuvfo3jnIkcY7zSfH/NZbJqf7XsWv2tRM+K6bgrTSQjN4hrpUuS98cYbVWtrqxZg3ZkzZ6r9+/dnXdf1ZTKZRCaTuTubzX5yyZIl5991113Z9evXf/+aa65ZMGPGjCtqampUKpUq0CmadfTotddeq3Qg7v33368OH84F/pnXaDoYDKp0Ov2vlmWlsK8JtFsc35MsKpDekywC18F7DNePKeqaNHn85pg/RKPR09HQ+rNm165dZ8zz1FNPDdhfrS/CbmfruvLKK3XK7TOm83TegtAL9P9xB0TXDGpcT8H9J4VU6n44t+gI+0uVUgeVUh/APbEStbDH4p1eJbjn6fTP03AfDOJdYbsNcNqohXB8Ag4f9dgfigZuwfcES8feHfzduKcIgiAIgiAIwoAjIq8gCIIg5B86cncWDE8+RDm8AXGgAdPjXsZnQRBGLH4YzGtZA1TAeJ3v0Uu6FuNcpdTruLedg6jXaoiUs1kaXR0yuUwptQfL+lgq3yCLVvUZUbA8qpV+j+K3CBNpQ0w4DeP3QkoVzObzM0GV5teCxFeVUr9iguMflVLvUkpdrpRah6hdYgsE4Hdjv+9EjVgL03nEahbvZvSqje1YEE0ymO4yMTmB+WKYrx3ro/SmlC5VTZ06VR08qDWWt4muue86ula3m+u6BTfccMPJr3/961oYTdu23ebz+S72+Xz/lkgkkrW1tf5AIOCmUqnvlZeX63TNbjabbZw7d65697vfrZqbm3Mrvf7669XatWvV7t2702xbjs/nayssLFR1dXV3+P1nd8haUFBwxvcdO3ao+fPnn/6seeaZZ87KvvUnWph2nDO7FXScOnpbEHpBxnCe0Peafez+cgwvSmm/FfdYryLTftxrw7gXF8PhZyxe4/CqguNQCPfkiezeTjcTB1kUavE6DkH4GARhqgPcBCE4hvsmTwd9DtZB9YdnwhHTZVkYuAhsS79dEARBEARBGAhE5BUEQRCE/EMblV6FgV/XI1sNwxGlrFwIg1SdnDtB8KSr6FWv6UMh4rUSxmbKqWrB0LwPYuNMCJcHYeTWCs0rPdyGzVIFWywilARSUygNGJGt9D1gzMcjX4MQaXehzU8hrfF5uP/pSK392B+K2pyPYyuFofwOtAdFsZIIS++0PYedW4patVhKZDpm1zhuElBT7LvLjPYZVrfVZbVbI0yktSE+pHAvj+J7DaaXoQ5vNZx3xiOaliJR27GdOL4n2Pcsc/ZJGNGrLhOFs8Znh+0z/y137b///e9XTz75pNq5c2ea1exVJG5ABIymUqmFLS0tG8PhcMzn8+moW38wGPxKIBCIbdu2bXM0Gr1o4cKFf5NIJNbE43F9Tov8fv/Rz33uc2rLli2nV6pF40996lPqC1/4gk9vT0f32rZtTZgwodLv9x8vLi5u0wLjW+V3BxctMmv4/mqef/55pSOS6fNwwhSr6TgXLVqUe29raxtWxyucFbjwaV5QR3AP9SKDV0ceB+R4E8a9Vr+X43kyEffXCfheiXkqmAgcZPdEG/dVEoD1PXu3Uuoe9mwqxfP3GTglzce0LNa1BH15hZTVGcnEIwiCIAiCIAwEIvIKgiAIQv6RRDSBgpEpxgRehelU4ywrkQGC8DYoGrOZTZiIdI1p/H8amDBHkZ/5UpCSi4QOE59LEfH6Mv77C3As+yDCnYKhuQDGaz3PIgiJNhNhuRAbYRFSQZbyMmgIqIUsfTD9HjDSZPqwbR9LcWweE0U4fQdRrRmImS/qwE6IoC9CqFaYvhVRWx+ACPB7GOvHYrrDxNsMsiC4LCUyr9MaN4TShBHVmjSmt7F9TLH1Jdh605jmQgyge7Jul/copV5QSv0B52YJRIEUUpPqeddCZLhaKfXPZ9HZ4NqWlpbfffKTn3S/8Y1v+BsaGk6Lq5Zl5caNEH5TqVRKi7LT5s+fnzl+/Hiovb29KJVK6Xa47cSJE5dNnDhxzcyZM288efLk0aNHj7aNGjWquKqqaurx48cvZtdKzhHg+PHj/jlz5pyTyWS0wKuCwWDhpEmTbnYcZ1VBQcG/JxKJt0WYDiQk7r7++uu59xdeeOFtWxtu4m5H0HFS+y9ZskSEXmGg6e1zOIP7dUcXqA/PuyheBXg2joMAPJ5FAo9FSuhSfC5E/+E1JvLuwD37OkT+bmX3fnLAojTR56HmsCAIgiAIgiD0OyLyCoIgCEJ+42eCL4kjWvy4BsaowzA4idAr9Cc80tG8tnyG00E+4oMAehJCojboLtcZSSHIaePtHIiJDtKjtzFhUbGoTl6fNcDqnPo8XgEW9eqDmGWzGqn0CjKRy99J+t8IjMoPYp9OwnC8HELmNKQAVjgnu3Ff+CyERB0p++9KqaXsXPoNEZnGA37jWDkOi2p1jdTBDrtG0ixalsTUtCGGUrTpYUPMLIFDy2GcrxnIYKBgYA8gGrYNwvan0V7tRrSqw4RfHqma8Xh3jYhcc9m+4iLF9G6IwptRjzKAtmzC9Fa8XvZI8TmYaOHdf+zYsdSsWbNm1tXVWYHAW1p9Op2ei/+LptV13U3JZHLZkiVLZjY3NwdOnjzpO3jw4KMlJSX3jxkz5tZ4PK58Pl88lUo9duzYsatWr15tV1RU3FBfX7/GcZwgu5c4TU1N7qJFiyZR1KhlWQXl5eUfaGxs1G3y7z6fLycua6FxoCN6i4qK1IYNG3KfX3zxxS7n7wEBXLfHPBapYk4R1ez3GVhmPXNI6YoIIhUTcIw4Zohe78L/aEdPdp6Ebn0Oli1bRmm7BWEoke1CBLYh/EbxzCEheBwidX1Guv0sMuq8Vyl1HxN/Ff5/r0MA3om0ztMh9tbj3k91gduMNNCCIAiCIAiC0CNE5BUEQRCE/EYLORuwh6MgEBxHNF8jRI5SNo8g9AQfolSOMcFtLAyUjTBunmI1Xf0Q4+oHsZVt5uBgpgnm6YNJKFPY3wRquUaQFreaGVJrYWxdit+0cDqVibYB4xUxolkLjajXEItotY19NoVifiwkpgaZeGyqWP/HRN4WiL6fRhrKuxAlpLAcRSkdgMg6H+1TA+Ewwd55FGuSRb1mO4hmzUJQJcGWXikm3mZZSk0v4TXLHATq2Ge93+9USj2LfV2AfafajctwXPfiXF6AtJn5jm6bJ9l1l4DgS4LeK0bU2ptoi7Ml8ur9/HpjY2Ni+vTps8aNG2freriu61qtra3nsvmonmWosrIyWlpaWqcF2l27dh2YNWvWzbNnz75w/fr1ztGjR3+eyWRsx3HGjB07NllWVhZvamoajeVz9YJd19WpnpPpdDqVTCYLtIjoOE42FAodikajpwVRLTbrbSSTSdXfNXq1sEusW7dOvfzyy/25ej/uFzfh//MrY7oWfv4bz/GNSqnP4HftwPEA7rdfU0r9phvONXo7X4CwVAuR9zMQmxTuGXr7m5RSNxqZDrqFFr71eVi5cmVudhF7hWGEw/oRtV0cVhjOVvo//QjSP5fhvqjwjE9CJNbPs/9BloaPsqwQ9XC4OAoHrjrakg3BAAAgAElEQVT0txqwnmYmSifkQhMEQRAEQRA6QkReQRAEQchvMszgXwSR12FRX9oQfLtS6quI9hGEnuBHFKsWA95Ait/lEAEa8X0G0uNqVsDYmDREVh8TW0mojGKZMH4PsijWIEsRHGB1Wnk64aDxO4moPF2wn6UHfk4p9U1sU/9ntrAUv9qA+lMmtjXj/3MD1nsUn5f1oO0coyarw8UrFsmaYvVSSRDNsCjXhCGwcsE0waInFdp1FIy+TTAqn4MIogD2X7fHj5DOWJ+vr0AczjKhlaICU0Y0a8aIfh2sDAFRXH8UuavP3WQcEwmK+5gBnuot5rvh2+0gQova3yst6dlMGf5513W/HwgE0plMJp1IJHJ1jLWo19bW1sTmi7iuO9+27Zht288WFhaWFBcXn9/c3Lwmm80uCYfDRclkMnPo0KFnKisr/19RUVHo6NGj68rLy++wLCvgum6W/U9SpaWl6bVr1345lUpdpEVe13VbJk6c+MMrr7zydb5zOopXRwj3p7BYXFx8hqj76quvdjp/D/Gh1vTHkX3jOx6L36KUugKfKRJQ35Nuhjiknbr+Ds4du7vYvJ7/H3CfJIrY539kzmHaUeRbvTko3V6UvnnVqlWqpaWl1w0kCEOUCO7jh/EffQ/653Sf1JG/C5VSj+IZPRcOWW+iX1WJ9NBL2eE7TNRtx7PuOBzUaiH+NqA/U4/PFA3cn8+NIuYwp5jzW4o5pCU7WV4QBEEQBEEYZETkFQRBEIShQx3EtxYYjLZDxLoCxqVPoO6jIJiEYHAsg8D5GqZnEMU7Hca7MkSSUDTKcRgrF8OgOQHzfokJslGjJiulAw5D5Aoy8ddnpC32MbG4L6Q8Im8KsO1qGCyX4rhJdCuFQTaNfdmN9MYWjK1Uc5WiV2MsujXFXrwmKxd5uWjrMHGXR7jSdFNgzbJlODoK8kKkndbC9OVKqXkQh2ys5zXcI/ax9Mf5Tty4d8WNiNdtRlvsxvUl9C/PWpb19fLy8pZXXnnlb2tray91XdeXyWTcdDqdUz/nzNFZzlWxrscbDAY3BgKB/SdOnPCHw+GbYrHYxT6fL7Bnz55tDQ0N88eNG3dZY2PjtEwmk92xY8cfLrvssruam5upru9pJk2apA4dOvQh9lOipaVl3cc//vE95tHpmr179uzpN2FRR6auX99t/6iuxs6mY4SFbAgX4nOjxzJ62hfxfN+K36pQr/mzWOYOONt0JfLOx//9q1h+Gdumvj9/Uin1DtwX7+6tyKuYGK4dAC666CIReoWRRgLOSCSu/gGR8kQB/otbIcquRFaO3yI6vwT9rfHoY1WhT1KK9VSyvhcng35LC14n0ReoYSJwA/p5CeaUlzRqyqdZn8RkBUoL1OO+tRLHkUIfZBKyUCijrIIgCIIgCIJwlhCRVxAEQRCGDs0svWIrUjO+gQjFjyN16+eR0lQQFIyIq5VSVyulLoNTQAuEWhIUd8OoqCO7XoIhkjiFSNIvwRior601iI5VLH0oFyWzhiExxQTPjFEbNcWiHV0mcGbZcmSoTDGDZYIZLWm+o2y/KYIuDDGjEILobhyTPt6LkGaxGQLwT5D23DKiW/Op3nURjoHEr5dhdFVoh00Qdun7UBB4FYR0L9LsfJhI+soBwLKsB7ToumfPnuvb2884LTknCi2yIs3yPp/Pd7isrEw1NDRsbG1trbEsa5LP5/vm9u3bx7S3ty+cPXv2bY888khdY2NjyHGcLb/73e9yaX6bmv4UFKwjae+7T5ezPCNNuR2Px/34/W1oofiSSy7JvfeFkpKS7gq8F+GeNKqDa5FoxP/xIXZP3Ix0y9cxpwWiFOPx/zB+11GCR5RSP4Cgst0jjbuJhXvgP0JI8uF+TyLvhRCeXsO84/HyqhHcbXT76aje/jgfgjCEMCNnKbWyy/6L5PlQg75FTSeHF2b1gIvRR6mA+EtCcCn6MiQE6wjhcz3uDZTxIsn6Tkn0DVrxThHAKQjUT7LlU1jvRjiRTWIlYeg+OAHOIsuxn/Ws35dgfb9MHvWhzAhlC/ff7tY7FwRBEARByFtE5BUEQRCEoclGGCa0tfxzSAOn0zTeCaPMfw5y3VQhv9BpvFcppa5FGsEAjI5HmHBGRGCk2wfD3wJEhpLCMwnXUhMMiy9i3nYWIUKCLq/tmjKE3rSRCjhrpAk2Ux/zlMHZLsQVExtG14PMOeKPLGoljCgcEobXsf3OZ2rR9kQdXgr7H8vz/e8NPTnvQjfRAqcXOiXynXfeqQyBVxkpgPX/aVtJSUnm/vvvV7FYLN3e3p77j7qu+x+RSOS/9EzpdLr66NGjWlS8zLKsJh01q9e7Zs2aXMplvQ/PPvus2rxZ66BnCKD6/lTw3HPPdXgwOoL0sssue2tneiEu0ra7yRo4xqyDyOJFBvePj8J5hO5fR/B8foeHyPsuZOG4HsuQ2KAdUf4XnyMQarsSSizc4+jELcE9uwHfVyDqT0HsOIrfHuxgfd1m48aNp8+HCL3CCIac3lyPetfVnTgsKebM1lG/PYh+SxRicBkcSkYxEXgs/tsRvEJYphzvvDQG7wMWGiLvq3CK+yj290GWAaUWzqVXYxv6uL6BfYnh/tPMhOQYE50TLHo4YTjxxQ1Rmr+4YNwXLkRZjxTaRo+VdrA6+CL2CoIgCIIwZBGRVxAEQRCGJjxqURtFvo4Iv28jVeM8vL8h53dEsUgpdYFS6lZWX1ZfA08juqvWSClKEa9R1HEdi8iMBhjrxiFV350w0l2B9d2T542ahfGOG+32s7TQ9UhFTZAwYudZ5K5J/xUjFUYsWuB8+umnPQ9fi7xbtmj/hzNEXUXjRr1sc3NzzuD/2GOPqU2bNvHp8VQqNXvVqlWXvPLKK9l169b9rW3b73RdNxoOh7UIkRME9TYuvvji3D5s3bpV9QYtDFNd2CuuuKLH4mIPt/0yMiF8BvdEL/Q95P1IY2reQ8oQnWf+Phoiym9Rr/fL+L0BWRUU0rqOwr26M7iTRxj39YfZbwHUA1VYl47yn9rdBugKOh/6XKheCu+CMMzpi8MSiZ4d5UUP4H/PxV36XoD3KN6LIeySWPyMsS5yvCtlNYcJcrqLQCg+iXv/GPxG9Xtt/G53koXAZZG/7bhXxfFqZdHG7ewz1SwmUTjDnA25aKzXfcgQ211EKO/H/ZGieP3oO+9mfaylcKYdjnTmbCAIgiAIwhBFRF5BEARBGB64SNesjRr/Tyn1PtTt/Vtti5dzPKyJwmClRYg/U0pNhgFsHYz8OgrjAIsy4fhgtPsjM6a5TBjQBsD1iERTEDu6EhvyAbM2JkG/dRSxK4YvYVijRdonn3xSbd++vVeH+fjjj6tVq1bl1sMEXooS0wb3702YMGFSU1NTur6+/tWZM2d+880339TTFmsRMBQKqQ0bNuQienfu3NmnpiaRVq/3ne98Z7eFRb3vPRSXn0dGhDATSr2Yijq35r0n0oHQ8SwE3VuQEv8hVi+dKMfyPcnMMQXPhQPstwRLF+tgf8o7WL5X6DYl4V2fDyViryAMFpQ1pSeOYJaHY5sNIVT3IX8Op5bzcV9y4AioM8WsxXed4eCbWFcRE5UL8L3I+E4pqemZEYBNMoj3cvbZMgRji4nGNttnl5X/SKH/qn/7Z6XUr1gU8gtwxLkAGVAew3xxbGcpag9XIBPCFKO0SNp4pVgJkhSLBqb9yLISJgMFRWab6cPpvBZCFBcEQRAEYZgjIq8gCIIgDC9eQb1UHdn754i4/BZq+4m1dXhRCaPUe5VSH0TURR3S7v0SaZU7qwGnYJTaxiJZtTFqLxMkDhsGopOGcW24ISKvMGzR4ubatWvVG2/0PsHDtm3b1FVXXZVbj8/3lr+H67qTHccpjEaj0VAodMGWLVt219XVzbjwwgs/UVFRMWP37t0qlUpNDIfDufn9fn+fBV6OFqx1uuB3v/vd3RIV9b73gntQ7/ZvOlj0YmRKqPWY5nRwb9mJ11o45dzgIfIuQuaOXT3Y5QlwZGliv2UNsSGMiL9+hZwH9PnQ6HOiROwVhHzE9RAgbQiH23H/qEfpDxINg+hXkrOLzjSwqZNj87GXX/3p3W9MC7JoY/4qgFBZyD5H2W9RLBvCiwTiCKabYnAWy5xkYyIXUbvvhaPkMTg08vT8WUPwzaBvnPCIRKbI4yS+t7GayHH2OWUIyBkjNXWSicj0OWtEc+tjOQ8CtsK4oAR9dwdi9Tb2LJiHZ44gCIIgCMMMEXkFQRAEYfihDcJ/hZqj2sP+dkT13t5DQ7GQn0xHZMX7UdMxiAhuHbH7a0QiNHZzzx0m8HJIkPCKAMjndMaCIHigBd5HH31UacG1rzzyyCNq165dubTL6i3R9gLHcarKy8v9wWDwyT/+8Y97otHorNWrV//doUOHtMG8KJvNlgUCgSBFVZWVlanGxu7eprpGC9c6ivSaa67pVFDU7dBLkXs90jVPRa1vk5uVUnd0snxHKUsVonl/CoM8pxL3+LU9jOSthFjAxQAfMjPQviQG0vGL2pgie/V5USL2CkK+k4UISNlc9H1iAxODa1GHl9jRxfGYziW9xTZEYVM05uIxpaquYVG8AZQi2YvMNfo+vhBitguBuI2JxDvRp67EbwEWfUyRxza7r1awiGMf7rH8M3+nbDgu+tNpQ8yNo925KEyCsp7/bqXUo2wdWtCeg/v9IojU1OYZdpyTMH6ow75wcTk1wBHHPSWMY02x5fK9nIogCIIgnFVE5BUEQRCE4UkM0bu7Ie7ejJS+X2LGgXxD6kR1jI3ztxqRBgth7HgDKed0lNk+ZpgTBEHIUVxcrB5++GG1d+/efmkQLfCqtyJ46V1HehWXlZW9Ydv2rQUFBf9UVFRk+f1+x3Gcv9fPINu2J7iuO18p9Tpftj/RAraOIL322mtVS4t36UrdDr3EwX32U3iOci5GSvuOFHSri9qUCpFxC41lroLI8Nse7vIEiAM8qlgLAeewdWd7KBz3CnIqoMhefW40HZ0fQRDOKq5HP5L/WRPGtI5KX/Q3DhNEe0MA97ztEA4dpGNWEBQXKKVOIQuOdopdppT6LKsrbArMXPSNsEhiii7mn3k9ZPpcwKKXKW01ZVbwsXrKXMCmlNhvsnFcDBHH78ezQjsj7WFjqY0o5XILxNyn4QyaQWrvOHvFWFQyveKYl9o+iXZMGjWR0ywKOW18783DXgvnExElrrdXhVrSVHqmHM5RgiAIgiAAEXkFQRAEYXjzLKI8v6aU+rBS6jdIOfkzjxpO/Ukhq0ulYCQphwe5H8YMbkiqGAyDcz9ARhYyegVgqKFjKTYMYn01RJTA2HS5UupDSqnxaNNXYfjXAu+RQTS0CYIwhNAC70MPPaT2798/UDtd5jiOFm+zFRUVX3Ucp+mSSy65cvv27c7GjRu/XVFR8UBxcfH3Y7FYkeu6y0nkHSi0kK2P97rrrjtDSNTtoDC9D/wB9e4nImMGoXMSP9CJAJGGwbyz+3QChn1Cf74OUVsH8eyxuhHJpOeZiXSddex3/Rwag8+tqN0+aEortbs+Nxp9fpSIvYIgDA4pZDeiMUkNq90bRaTsYdwbk8iWs6GPe2azmsL0bhuiMU9dHcC0EBOQKa0+icN6TPCSsR0fs+ueMsZ2lKJaj1v2Y9p5Ro1jvrzfWFZ5RBxTreE4q4HczqKP21naavq9jT0DW4xU1Q5+P4DxjMJ3vc+zsM7ZODZiLuY/jn0ex5YVBEEQhBGJiLyCIAiCMPzZB490nVbtK0gpqQfM34UAPBCEUC+W6kStQA2sOhgU5iClmDa0TIPX9lAQeX0w/jyF7wtQ6+oAvs+HIaUWRodpHgaZ7jAWbXajUuqdMOxo49PjSOv5OlLmSeoyQRA8KSoqUg888IA6eNAru3C/MdNxHH2f21peXr7Odd0fTJ06depzzz2Xicfjv7j88ss/Mnny5PIdO3aoZDI5mdL3DiRa0NbH/b73ve/0VvT3fqANkVAfU0p9A6tbCUN1ZzmgW1nEE2cUM1wvZ3UuFYzYOrXmF5VSMyDKvghHogmos+jVmFWIUHvUmP48qy9ZgPUNevkGcjag80HnqLW1dbB3RRCEkQOlQ+aQh0k7ol/JSaehizrD3cUZhD56KcZaryD9/mw8pw5CwF0CwfUuPBv0mOWjLJo4wmodh/G5gH32qnkcYOmnaT4fplPkc4AJ2gpCMYnG/DxkmYD8H8g8pVBy5jU4Oulx1e/wfKT2bMexakbjeelgHJkx0lAn8DnOoo5TLBJZEARBEIYFIvIKgiAIwsigGQNoXWfqX1BbcBEifGOsRlRfaIDYmYKRoRwGhiQiiHZi3ZT661zMMw3TFjIjdL7gou32wBjhwmixHIaCciOiKwkBuxKG+GMwqhR2kaqTcOC5/meI4I1CiL8PqUK3G97sgiAIb0MLvPfff786fPhwfzVORykXtaG1IhQKPRYOhz/t9/v/Ys+ePdW1tbXjpk6dusrn83133LhxJ7Zv3z4mmUyWFxQUnF4wne5t5s2u0cK2Pn6iH9tBZ1G4Ak48x+GEs76TqFg/nrVLYWR+Fo5B+jn5VTwjdE7jv1RKXYplKjBtDp4F18Cx6AU4bL0P83s5EM1ApHGd8ftOGMb/Hgb443ienBXI8YDO0fXXX597F7FXEIRBxkxBrZB+P9+hur+NcOJ14DgUwX5T9PAbeB5Qzd6njOPyGRHHPiPC189SSgeZkOtnv1G0MaWZLmYicQGmR/GimslRJhwHPSKQaVoC09rY9B0YX34Kjsy6DX6CbWVZxHGWLd/EIo3b4HxF0cYx9mpntZHpfS/LylSJ0gd83e3ss9f1JAiCIAgDjoi8giAIgjBy0APStfDwvh0e0g9gENsdAbIzLBigP48I0ySijv4eYuh/MSM41cW6QSn1QaXU/0HI/D3zzM4X9HFthlE9hn1fD8OC7kf9whBdt8IgrwsPPgHjygsQbruDC+E4gO0+gOjdvYaBQxAEwZPCwkJ17733qurq6r40UNb43pHIq5107ClTpkwKBoO32La976WXXvpjIBD4swULFvxzNpt1CgoKfqiU+qZt25MCgUBhB/cyM6LG3H6P6Udhl6Odep5RSr1DKfUknnUvdDK/foZcDUefRaiP+CCmzUAZhWbc76mmbxj117Wx+DZkcvgO2mg6IpumdCDy+mDQN/Nz6/P3I9QT1sfwDyx16VmDzpG+XjU33HBD7r2tTR53giAIneBiXLWFRbhugzCq8AzdATFTQaT0KpeQ7Y/nrYHVgWjsYwIxRQWTkMxL22ghdRUiqvVzdjGOdT+OOwUhmaJyD6OcwgwWdRzC+kuwvilMrPYa81IaaooupnbR4vCXtU8S5rscTtOKpatuZK9m7Gsz2r6VCchJJgTHWWpr+q039Yu7y2hk1BIEQRCGKSLyCoIgCMLI4w1EAeno1PegP9DXgWUAA1iemqwC0UJJDLCPs2kFMFjvg0HbxkC6Mc/Ohh+CBLWPhfRo9fhcAqMFGUjIi/ww2iSC42rpgRFFG2V04cLn0D6STkwQhG6hI2XvvvtuVVNT09cG8xmG0I6yPeg64WratGkXhUIhbfD8dCaTuXbMmDGqvLx8alNT0+eCweCOYDBnd55p2/Y8pGE0Mcel/ZFdoj+wjOeji/3/KATYLTDmdoQfaSa/DaMzqZc2SibcAEPxd9nyrSitkERkViMctPS+/BLPE682VHCY+k8mGHNuR2kE/Xz6VZ60bw5ySNDXrubGG29UsVisi6UEQRBGNGYJgBRz3nGYwEs0DVJjuX0UjwvhrLQd6yhB5K+N75Tp6GfIqlGCLBelTMilSOMQG49FUeu3iKWmjrAIY4o4jrD3tDEOS6IdSyE0j4K4HPA4jizOR5rVIc6wmsZNbOzbZIjCXBxugwjcbojDJBZ3NYa30FcrRX9EH/dUZN9qx3i9UUoACYIgDG1E5BUEQRCEkUktagrejUFzX0VeHwzdFNVajvSUv8Yg93JMP4yB9CKkqXwKNQ0XofZgNM/Ohg8DbUq/VYgUYVTv8DwMsPdh+lKI2S8iTfMKRDcX9WDwrAf6RwbYo1sQhGFGJBJRd911l6qtre2PA6tg9fTIocXEB6OhKisrywaDwX9Kp9N/WL58+fd0Ot7q6upfFxUV3RcIBL5cWVmp92t0JpOZ1oFAOY599sMxKB94lzFmdtEeugbgRUqpf0bK5mAH+2rhWdeIZ18honkD+P1+PF9GoYSBghF4HSsPkMZzpxSG7/tQDmCOx/bSeAatYGk7Cb29e/FMvhgG6s7Q+/7YAER5dQg5J+jrWAu98Xi8V+sRBEEQhiz6OVfDnj27MY6icZF2VtqAZ10bMoqc6kE5G7uT9NRBloaaagtzJ2WddepGlm6anuul2K9y9JciRt3jAlb/uIiJw/4OIosz6BukMM5M43sax0zRw80sFXWcCcKNKA9BEcK6TS/AvHPw/KdyQ4Voww34vhBR4YIgCMIQQkReQRAEQRi5JAZwEFeE1MWUGmozflMYODch7ZYWUDdioLt3CJwJG+muj+H7PjY49yHdGKVW3gqj/b5O1icIgtBnwuFwThg7darfSnab9dFPR9batn36o+M4ueiVWCz236NHj/6V4zh/MXfu3Dlbt25Nb9++/QerV6++2rKsT4VCoZZsNhuIxWIdReiOYZ9DeeTwMxP7w2lDxGwcz4T5nUQep2F4roChNcyijSqQFaIYUTYkyqZIPGdCbyWWLcf6pniIuC6icpphbA6z55OeNglG3TDq9nYWLe1i+uODKfIS2lFBX8833XSTSiSkxKEgCMIIwszX7xgZM7aw8WULMlOFPCKbO8LBqzeZkho7yTrlZ8Kxj0USU33hMBOGIxgXl+C5XorPhawPRPNF8HsBlokYAjXhsnrEMYi1JFAfQzmlT6G9XsY8Cv2QpehbBNCnqTTqFlPd4UQP2lkQBEEYRETkFQRBEARhIGhENCrxJosE04PDXWyQWJcPtQG7STuMC8SbRgTXDhj1FQwPm/PxIARBGD6EQiF15513qvr6+v48psO4L9P97XSNV8dxSOh1KcvBoUOH7i4vL19VXl7+1w0NDRtOnTo1u6rq/7d3/8FxnPUdx59nd0/nk3QnS/KPyM5PEpfUJZg4gRAobSdJmaHNQJiUlrYznZKhk5ZCmXamv2gZ2sk/LdBOKYWhLdApscvQZsLvxE6AFGNsYpykceIfMooTOUiJftmSTtLdae/26az7XebJ0z3Fdixp7/x+zQjpfu09u3sOt/vZ7/fZuN7zvHuq1erizMxM3BbwikajcarJ+8X/Lb1a/l6UEDULHkoJQ5MTqItWpU4zxgpqI6diR8t9nlwclFQpmSbPs/9+LqXbg2nyWmWNoS73HX2ZbhHGao25KuILFuLP9Z133pmRjwIAIAPcuWUrTti5WurnERxrJxj2rZbTSTXxGivwTcLeHvnpld9Fp7rYd8LY5LtGp9z/Y+uxOZn/+JfkPb4iXTy0FfDOWVXDSYvpJPBdtNpKz1uvqVjh8HLMO9wh451x7ksC/LUr2KL8QuqU8dvnRnJyH12+ADRFyAsAAJbDrLNMYx1opV0B7D4/q0JnXJHVyjlt/in3anQAuGByuZy699571fT0BT+P9bBS6k45YRZXghy2H4yD3viEk9b6eWNMNDk5edPRo0fvuvLKK3sOHTr0H1rrn9q+ffuf+b7fa4z56+np6XfG1SJa6+eMST1H9S/SGtlItenRjHxKjqTc587TuxTthK5ukGuHsPbc7277RjvATQLjtDFoa3zu483eL7Mu8IULAID21KrzyZrzDIftltOeNQexL9/bPOu4O/7//eslAP6sUuoauW1fiKxlGd1yUd9zMi1EHJQOSJhqt7UO5Jg3qYpOjoHnrFB4QaqBZ6yfaXksmT96wWo1PZ9SNZwExGnbJx7DtdLa+6S0nN4sgXVdxvpzMoWSkqmhxuT5WbdN9kN8YeQV0vHsOzLmkhNst5IeZ+xaPq81+a2d80S5lHMv7eBcjiOAs0bICwAAAAAtxvf9MwHv7OyyXCOzxzpWfFhOxrkVrZHv+2ONRkMHQfCBI0eOXDs6OnpocnKyb8OGDZ2bNm16w/T09Ec9z/taFEV/qLUe1lqfMsZ4KSHmg/K7Lifo5lV2ncuJmaXC1GaPvdxrlqquPZ/3AwAAreNcW06XpBPVpHyXu8x67HIJSx+QNs1xRe/75TUlax7hooS+3RLWlaSquGRVHeekErVLlpWzqpN9aw5iY32fiaz5hOflwu8ZKyAuS+VwQ7rMfEnGXZNAeKuM63JZThL4J1NXvFbuv05C3xErlA6d70U157tSUk2b3A6ti+y0daF38pow5fkN6ztv8n7JGJMxVKwxVOX510kofZUzhUmPhL4HZXtul+eNnGcL8pW0TS6enJTPSHz7cXn/dRLSJ3NDv07m426FkDeZfsXWKZ/Pony27c/ZGmeftwuvhS+4aQuEvAAAAADQYuKAd25u2ZoFjMqJtrh64z6l1A0pIW8lCIJ+Y4xeXFy8dnZ29sVKpfKjYrH49q6urvzY2NjXZmZmPjE1NfVbSqn1WusX4gpfqQ5xWyuW5Xd8Qm0fn0UAAIBXLA6XnrTmEn5G5t9NxCFtPKXGkFLqWaXUr9lTdAjP+tFWoJu0lXbnIbaD4aIVCiehccmaX7gg2UTSlroo1as5p3I4/vlvK+RtSNeX+DvlbyulvqWU2m9Vgtblvg9KyPYjed7rrVA2CXGTEDZ5bfJ4xfrbyOMNK+RNvoRHzuPKWn5oLb9ivT55v1Cme/qctay4yvoOCaXjcP7bVng2K5XYSfvr+Pv5q+W9kqA8qYC218+ezqPhBMLuBYBu17XktcmFBVGTatQk9E4+Lyec6VeSUP7HcqFBwRpj0mJ7q+zrK+XYoGate93626R0UQudkL6+QqHjFvnsjsjn+6cloI5tkHV5Sm7faP2dZb4E1WVrjDmrcr83ZX5yv/JgsD8AABB1SURBVAVC3k4Zf/IZL8q/mWTc7np1t1JnPkJeAAAAAGgxyxjwKjnY/YZcZR+Hrn8gJ2zsEzrVKIrik2uNiYkJUygUHtm8eXN88u3t09PT5tChQ/HJtS2jo6N/nLQKNsa8RU4SuJW8NTk5FEolLwAAAF45O7SoSxvgxLDVPaUh3VvcAC9ywpu0qZfSeNY0E3ZgmwTEgfW7Q4IyOwjuduYcPuS8R5csd1he2yFBYuISqzK4S8LuSN4zWT/fyUa0BNXKqsLNqZcG3IH1PCO/tRX22t9zI+v1kXXbt8LSjVbIqyRoiu9/UbaBvS9mJPh9rwTXJ6T6+i1Wm2rPCdzc79zKqSh2L7ysWff71vtHTnDqXvyZvC6ZazqeiuWvrNfH475FKfUOCc6+aC0rru49LuvSKYH93dKGOwmkq850JbWUEN19PHltUmkdWp/vRWuf6JTHI6uSWFvb97CEuEnAPC1BezzuTfI5TCp156xq+fi1V8vvOWtcbmDdrCrcnvLFDbDrzusja1ucTyefTrmY4Puy3J+Rf1sn5fH4Qow+64KQNyilDpzje6yGkrSgPyTb53qng9QW+e/JmITzxRYJ5c8g5AUAAAAAuD4jc7edkiu5c85JAhOGYXyQvC4IgnVr164d37Jly0MnTpx4bGpq6qZarbZ1YGDgnePj431a633GmP1yIqQ75b0acuJgnZywAgAAwPIqO0ufaBIKng+3LfHZ0k5AHEgwZofLeQmeTkkQtU1aMx+QMHCt3PegPOdWCRX/wQo1k/W0w0pt3dbW7eS5gRP6GgnEtDXeDnmesW7byyg47/Gs9f6dVrXrw1L5uV2mUWnI8uLq0HEJ9uYlTN0n79MpP0VnvXJOBmRXxBassWkn/A2sddFOcJxzXmdvw7wEmfYFAz3ye1zCtrwVdnbIPjstr1knLauvcdbDDtGTELPDue2G7oF1oaqxKs+TILTDWrZx1qVuvX8SBn9cKfUxK8j9kYz93bJuO61weVx+3y6B9Q6l1D/KRQn2vnCrwKvOtp53Alu7SlxbF8oqKwSuO63E0x63q6SflnBdWRcjvFZed7WE23aw/SrZriVpK15IOVZcbZGEtsmxZcUKsL2U8Zbl399G2adlqZbvf5npclZT8m/sh4S8AAAAANBCtL5Q59+W9Jgc0Ctpj+desa+MMfFJie9v2rTpl7XWbwrD8NbZ2dnvhWH4xnK5fGOxWNyutd5ljPl7OcCuyQH1/1uUnIBbl/H5eAEAANrZaoc0xglUFlOek5Oq1melwvCg1ea5KsHTAQlLY49YLXUvtKW+lKc95t7nztd6Uqp44/X6gVSJJuHjJml1/CUJM+MAaq9SardTxeunBK9uWJpwn2u/Ri/xmHtcYD/Plypqu2L6dbJOcaegmyS8/o4EcQMSFD4i4Vocwn1WjhuSEDoJ5wvO2PLWWIxcTGqP237ct+aQTp6/xtoG2gryE4FTvf2cU0XbI5XiL8r9dovfeDnr5bM6JQF9Tp5vrKrxZP/aAbayAmxjjcWtEvetQDuXEmgHTuDtW4/bVdz/ZIW881J5faeM/2EJSxPDsqw7ZH/8u3wGe1M+K6upIZ+jj8gYZiSUf7fsp3915kcelM/hu2R94s/wF+RigyyF1654bHcQ8gIAAABAi/A8T1UqlZUYbDIfmZYTE80cKJVKN46Njd3w5JNP3n369OnjWmujtf7qxMSEluqCPUucRErUrJM4WZ/TCQAAAKujImFNEgDPSbvf5PvjhBPeTFmB2oW2VPhzrsFQWaokI+v201YVaYdULicVokkYmRaEZ0kgIejzEpztkzAtkLEvSgvdMdl38e1RZ72aHUN41mMmpWut57zWve2G1fbj2gmYk/DaHtc22S//KW2Zr5N9WJVAPp6j97uyr25WSn3Y+mwWrPexq76T+wrWHMdKAmm7yj3vrG+nM/6c1VY8Calz1vKTADzntFsOJJCelTH1OIFwQapbx6Rtc79cnFDOWBjacObUDWSsUxL4bpB9lVQ5J+t5Qn73yjp2ZPjYNLkwoU7ICwAAAAAtIA545+fn1c6dO1dysPHB41tT5mhLVCcnJ2+cnZ2N6vV6WWv9s/l8PlpcXPx0vV6vaK1fp7V+mzGm8TJtvDZZV+DPLv9qAQAAoAU1Utqn2i2h066GPNu5hFdTWlvrqvw2UolctR47YbUbzvp62fPYxsHbUavCdMxqcRw5LawTzY4f3PCt3uR5y2VBAupkvuRN0i67KsdOT1ih/PekSnbuLMfycpXgaQG2ckJqz9p2zQJvbc1nrSXcjNuh/1C2580yt/CQLCtuaXypUuqrMvd1HGz/7gpv97NhnG290aoYj4P6N8m+mZTnbpfb35XAPj4m/WAG21C74v04SsgLAAAAAC1gbm7uTMBrzIoeZ8YH+2+22nvZ4pM2vRMTE7fV6/WTW7duPZHL5d41NDSkoijaWCgUTKVSeWsQBBvq9foPpD1ZGiPtwKJlrLQAAAAAWlU1ZdxZr+JVTaog603+bjWHrIsKahJQJxW6zzsXF4ydYyifdsBn37ec1aWHpTV1Q44BG9YFvw0JgGelercqrdFboRPTM1IlrqQ9s7094wD+KatTQK/sw5ZAyAsAAAAALWDHjh2rNcgjaXPyykHwa+r1eq/v+5Pbt2//hfgEwOHDh7XW+k+DIIjnEdvged6A53lPR1FUarL8+GTB2+VK6bQqBgAAAADIkrSqcTv0dWU9lDfSwnjSCkBPSIaY3B60Kn+NtGruPocK5dUSr9ML1nsfdy5ifsrad9MSYrfMNEKEvAAAAACAZuIA9pvOXEyJMJfLnQ7D8D19fX1X9vX1+cePH388iqLXX3755b86Pj5+5kr2RqPxbKFQeHh+fr5ZlW588Px+pdQWuYoaAAAAALCy0i64tautF1IeT7sva9zQ3Tjr5R6DRkvMBZ05hLwAAAAAgKVMpD3m+77K5/NBGIZesVjsDsPw84ODgxM9PT2vv+GGGwqPPvroiZGRkVdFUTTX2dk5Xa1W48C32du8IC2/WrllGwAAAABcTFqi2vU8ZHku3pdIuxobAAAAAIAlrVmzJp4f+GalVF+1Wt23uLh4z4YNG4L169erK6644rFrr732Y/HrtdbrjTFBX1+fCoKm1xnvVkrd30oH0wAAAAAArCZCXgAAAADAOZufn1fVanVr3CGqXC5/KgzDtdu2bbvD87y4IvfDl1122dF8Ph+HvJvr9fqrwjBUxWJReV7qYeiXlVKfZC8AAAAAAHB2CHkBAAAAAOcj32g0+uM2y+vWrTultf7bYrF4xeTk5JNhGO7N5XJ3X3LJJSqKooFKpXJ9pVJRCwsLqqOjI+2tRpRSj7MXAAAAAAA4O8zJCwAAAAAZF7dGzqABpVTJ9/3ydddd9/v5fP6t1Wr1E6dOnepRSt1dr9d/vaen56Ax5oZarfZqe/ha67jVMx87AAAAAADOE5W8AAAAAJBhhUJBDQ0NZXGA1yileteuXZu/9NJLbw+C4Fv1ev1DXV1dlxlj7gnD8Im5ubnPx5muUmq9/UICXgAAAAAAXhkqeQEAAAAgo+KA9/jx4+rBBx9Uvu9nbZAboygqdXZ2dvm+/3QYhh/QWvcODAzcbIyJtNa/V6lUroqf6HleKW0BURSt+KABAAAAAGgHhLwAAAAAkEFxwDs4OKh27drVbB7b1TYdRVE0Pz8fjIyMfKi/v//HuVzui7lcrqC1fl+hUDjQ09PzkRdeeCEOeXXaWOOKXqp6AQAAAAA4d4S8AAAAAJBBx44dU7t371ZdXV1Z3T2HwjA8OT093fvUU08N3XrrrX/hed7tY2Nj+7XWnwmC4I+UUm9T/1ex+0zaAjzPU41GY8UHDgAAAABAqyPkBQAAAICM6e7uVg899JAqlVK7HGfF88aYPcaYbSdPnnyf7/u/E0XRlycnJ5/3PO+msbGxvxwZGYmHOm6MeShtzFTxAgAAAABwfgh5AQAAACBjDh48eKZFc61Wy/qu+YrW+j2NRuO9L774YqW/v/+uIAg+HQTBPx85cqS3XC7Hz9kVr1KzBWitCXsBAAAAADhHhLwAAAAAkDF79uxplV2y3/f9J5VSbz548OB3brvtttnNmzffUqvVNg4NDcXJ7ZRS6nNKqTADYwUAAAAAoG147EoAAAAAyI5isdhKe6NijPmvRqNRHR4ejrTWf9Pb27vx2LFjT0sV8mNKqb1xpe5SPwAAAAAA4NxQyQsAAAAAGbJ3796W2h1RFH3TGPMnnuddr7W+vVwujw8PD9+nlHqN7/v/Y4yJznI5yz9YAAAAAADaBCEvAAAAAGREXMX76KOPqnw+30q7ZGZxcbFWKpWu8jxvZGRk5HGlVEf8QFdXV/lsFxKGK9PRuVKprMj7AAAAAACwnAh5AQAAACAj9u/fr3p6elptd6xfXFyMjy0jY8xdYRjedc0119w5ODgY5nK5jrNdSEfHWT/1FSPoBQAAAAC0OkJeAAAAAFhFdqi7b98+1d3d3Wq7o8sY07GwsDAaRdG3161b9+mBgYGrBwcHK5VKpZGB8b2E7/sZGg0AAAAAAOeHkBcAAAAAVkkc8O7atesnb+55nlpYWGi13bF45n8WF6c8z/vz/v7+q8vl8jNKqc2VSqXlVgYAAAAAgFZAyAsAAAAAq+SBBx5Qhw8fbvXNP6OUqseZdT6fv6dWq50eGxvbq5T6DWNMNQPjAwAAAACg7RDyAgAAAMAqaYOANzallIrbMm+q1+tTExMTB+bm5grxfUEQnM7A+FIZY1Sjkblu0gAAAAAAnBVCXgAAAABYBaVSqV02+5zv+41Go9ExODj4iUql8mqt9c8HQdAolUpDGRhfU6dOncroyAAAAAAAWBohLwAAAACssDjg/frXv66CoC0OyYzW+tlGo3HVE088MdLV1fWOubm5Sz3Pm+7u7j6WgfE15fu+mpiYyOjoAAAAAABojpAXAAAAAFZQsVhU999/vzpx4kS7hLwqiqKvKqVuOX369K+sX7/+NXEbZM/zDuXz+ZkMDK+pQqFAyAsAAAAAaEmEvAAAAACwgu677z41PDx85g3r9Xq7bPqv5HK5j9fr9V9cWFgIZL7bfxsdHc3A0AAAAAAAaD+EvAAAAACwgpKAt82c7Ozs/F65XL5lYWEhXrO5KIq+PD8/n/m11FqrOJQGAAAAAKCVEPICAAAAwDJas2bNSxbe09PTlps7l8t9KoqiW+TmAaXUTBygAgAAAACAC4+QFwAAAACW0e7du1+y8Hw+35ab2xjzoFJqr1LqjUqpL1AdCwAAAADA8iHkBQAAAIBlND4+/pKFd3R0tOXm1lpXlFJ/p5T6qFLqGxkYEgAAAAAAbYuQFwAAAACWUblcvpg27zeVUr+plJrKwFgAAAAAAGhbhLwAAAAAsExyuZyq1+sX0+YNlVJjGRgHAAAAAABtzWP3AgAAAMDyuPfeey/GLdue/agBAAAAAMgQQl4AAAAAWAZaazU7O3sxbtq+DIwBAAAAAIC2RrtmAAAAALgA4lA3iqKfLGjHjh0X62ZdzMAYAAAAAABoa4S8AAAAAHABNBoNtXPnzp8sqFKpXKyb9ZEMjAEAAAAAgLZGyAsAAAAAF0A8/26tVmNTKrUnA2MAAAAAAKB9KaX+F7rCDiQl2p68AAAAAElFTkSuQmCC'; +export const rule = 'data:image/png;base64,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' \ No newline at end of file diff --git a/pages/aqjc/index.vue b/pages/aqjc/index.vue new file mode 100644 index 0000000..86f66eb --- /dev/null +++ b/pages/aqjc/index.vue @@ -0,0 +1,444 @@ + + + + + \ No newline at end of file diff --git a/pages/aqjc/jcsjTable.vue b/pages/aqjc/jcsjTable.vue new file mode 100644 index 0000000..b112041 --- /dev/null +++ b/pages/aqjc/jcsjTable.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/pages/aqjc/jrxOptions.js b/pages/aqjc/jrxOptions.js new file mode 100644 index 0000000..c5d588b --- /dev/null +++ b/pages/aqjc/jrxOptions.js @@ -0,0 +1,321 @@ + +import { imageUrl060,imageUrl090,rule } from './dataUrl' + +export default function jrxOptions(data = {}, type = "1") { + const yMin = type == "1" ? 147 : type == "2" ? 146 : 146; + const yMax = type == "1" ? 209 : type == "2" ? 210 : 210; + const type1 = ["SY05", "SY06", "SY07", "SY08"] + const type2 = ["SY09","SY10","SY11","SY12"] + const alltype = type == "1" ? type1 : type == "2" ? type2 : type2; + // 字体颜色 + const textColor = '#666' + const imageUrl = type == "1" ? imageUrl060: + type == "2" ? imageUrl090 : imageUrl090; + const xValue = type == "1" ? (((data?.rz - 169) + 0.65 * 14) / 0.65): + type == "2" ?(((data?.rz - 169) + 0.85 * 14) / 0.84) :(((data?.rz - 169) + 0.84 * 14) / 0.84) + const rz = data?.rz ? + [[xValue, data?.rz], [0, data?.rz], ] : + [] + const rz1 = data?.rz ? + [[0,169],[14, 169], [xValue, data?.rz]] : + [] + const gz1 = data[alltype[0]] ? + type == "1" ? [[57.6, 158], [57.6, data[alltype[0]]]] : + type == "2" ? [[52.6, 158], [52.6, data[alltype[0]]]] : + [[52.6, 158], [52.6, data[alltype[0]]]] + : []; + + const gz2 = data[alltype[1]] ? + type == "1" ? [[60.6, 158], [60.6, data[alltype[1]]]] : + type == "2" ? [[55.6, 158], [55.6, data[alltype[1]]]] : + [[53.6, 158], [53.6, data[alltype[1]]]] : + []; + const gz3 = data[alltype[2]] ? + type == "1" ? [[82, 161], [82, data[alltype[2]]]] : + type == "2" ? [[66.5, 162], [66.5, data[alltype[2]]]] : + [[73, 161], [73, data[alltype[2]]]] : []; + + const gz4 = data[alltype[3]] ? + type == "1" ? [[96.6, 166], [96.6, data[alltype[3]]]] : + type == "2" ? [[77, 161], [77, data[alltype[3]]]] : + [[85, 166], [85, data[alltype[3]]]] : []; + + const line = data?.rz ? + type == "1" ? + [ + [xValue, data?.rz], + [57.6, data[alltype[0]]], + [60.6, data[alltype[1]]], + [82, data[alltype[2]]], + [96.6, data[alltype[3]]] + ] : + type == "2" ? + [ + [xValue, data?.rz], + [52.6, data[alltype[0]]], + [55.6, data[alltype[1]]], + [66.5, data[alltype[2]]], + [77, data[alltype[3]]] + ] : + [ + [xValue, data?.rz], + [52.6, data[alltype[0]]], + [55.6, data[alltype[1]]], + [73, data[alltype[2]]], + [85, data[alltype[3]]] + ] + : [] + + let eopts = { + toolbox: { + show: true, + feature: { + saveAsImage: { + show: true, + excludeComponents: ['toolbox'], + pixelRatio: 2, + name:"测值图" + }, + }, + right: "10%", + top:"4%" + }, + graphic: [ + { + type: 'image', + left: '5%', + top: 0, + bottom:0, + z: 1, + bounding: 'raw', + style: { + image: imageUrl, + width: 1310, + height: 380 + } + }, + { + type: 'image', + // id: 'background', + left: '5%', + bottom:"5%", + z: 1, + bounding: 'all', + style: { + image: rule, + width: 10, + height: 450 + } + } + ], + grid: { + top: '0%', + left: '2%', + right: '5%', + bottom: '0%', + containLabel: true + }, + xAxis: { + min: 0, + max:100, + axisLabel: { + show:false, + // 坐标轴字体颜色 + color: textColor, + fontSize: 18 + }, + axisLine: { + show:false, + lineStyle: { + color: textColor + } + }, + axisTick: { + // y轴刻度线 + show: false + }, + splitLine: { + // 网格 + show: false + }, + boundaryGap: false + }, + yAxis: { + type: 'value', + min: yMin, + max: yMax, + interval:5, + // data:[155,160,180,190,210], + nameTextStyle: { + color: '#333', + fontSize: 18, + padding: [0, 0, 0, 80] + }, + axisLabel: { + // 坐标轴字体颜色 + color: textColor, + fontSize: 18, + showMinLabel: false, + showMaxLabel: false + }, + axisLine: { + show: false + }, + axisTick: { + // y轴刻度线 + show: false + }, + splitLine: { + // 网格 + show: false, + lineStyle: { + color: '#CCCCCC', + type: 'dashed' + } + } + }, + } + let chartData = { + series: [ + // 和大坝坡面重合的线 斜率为0.75 + { + + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#fff' + }, + lineStyle: { + color: '#fff' + }, + areaStyle: { + origin: "end", + color: 'rgba(0, 128, 255, 0.3)' // 设置区域填充颜色 + }, + data:[...rz,...rz1] + + }, + { + + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF' + }, + markPoint: { + data: [{ type: 'max',x:"20%", coord: [xValue, data?.rz] }], + symbol: 'pin', + symbolSize: [30, 10], + itemStyle: { + color: '#fff', // 标注点颜色 + borderColor: '#ffa500', // 标注点边框颜色 + borderWidth: 0 // 标注点边框宽度 + }, + label: { + show: true, // 是否显示标签 + formatter: "库水位" +data?.rz + "m", // 标签格式 + color: '#5487FF', // 标签文字颜色 + fontSize: 12, // 标签文字大小 + } + }, + data:rz + }, + { + + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF' + }, + data:rz1 + }, + // 管位 + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz1 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz2 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz3 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + width:6 + }, + data: gz4 + }, + // 管位连接线 + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { + color: '#5487FF' + }, + lineStyle: { + color: '#5487FF', + }, + data: line + }, + ] + } + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/forewarning/forewarning.vue b/pages/forewarning/forewarning.vue new file mode 100644 index 0000000..4024425 --- /dev/null +++ b/pages/forewarning/forewarning.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/pages/forewarning/hd.vue b/pages/forewarning/hd.vue new file mode 100644 index 0000000..c74d60c --- /dev/null +++ b/pages/forewarning/hd.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/pages/forewarning/sh.vue b/pages/forewarning/sh.vue new file mode 100644 index 0000000..f1661fa --- /dev/null +++ b/pages/forewarning/sh.vue @@ -0,0 +1,328 @@ + + + + + diff --git a/pages/forewarning/shInformation/shInformation.vue b/pages/forewarning/shInformation/shInformation.vue new file mode 100644 index 0000000..0903de9 --- /dev/null +++ b/pages/forewarning/shInformation/shInformation.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/pages/forewarning/sk.vue b/pages/forewarning/sk.vue new file mode 100644 index 0000000..cc8fb2f --- /dev/null +++ b/pages/forewarning/sk.vue @@ -0,0 +1,262 @@ + + + + + diff --git a/pages/gqzq/detail/index.vue b/pages/gqzq/detail/index.vue new file mode 100644 index 0000000..7d355e1 --- /dev/null +++ b/pages/gqzq/detail/index.vue @@ -0,0 +1,306 @@ + + + diff --git a/pages/gqzq/gqxx.vue b/pages/gqzq/gqxx.vue new file mode 100644 index 0000000..72feaa2 --- /dev/null +++ b/pages/gqzq/gqxx.vue @@ -0,0 +1,521 @@ + + + diff --git a/pages/gqzq/gqxx/gqxx.vue b/pages/gqzq/gqxx/gqxx.vue new file mode 100644 index 0000000..4de06cb --- /dev/null +++ b/pages/gqzq/gqxx/gqxx.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/gqzq/gqxx/qk.vue b/pages/gqzq/gqxx/qk.vue new file mode 100644 index 0000000..d9ef469 --- /dev/null +++ b/pages/gqzq/gqxx/qk.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/pages/gqzq/gqxx/qkForm.vue b/pages/gqzq/gqxx/qkForm.vue new file mode 100644 index 0000000..f8e22d9 --- /dev/null +++ b/pages/gqzq/gqxx/qkForm.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/pages/gqzq/gqxx/xq.vue b/pages/gqzq/gqxx/xq.vue new file mode 100644 index 0000000..37be643 --- /dev/null +++ b/pages/gqzq/gqxx/xq.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/pages/gqzq/gqxx/xqForm.vue b/pages/gqzq/gqxx/xqForm.vue new file mode 100644 index 0000000..ad6ad37 --- /dev/null +++ b/pages/gqzq/gqxx/xqForm.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/pages/gqzq/index.vue b/pages/gqzq/index.vue new file mode 100644 index 0000000..055146e --- /dev/null +++ b/pages/gqzq/index.vue @@ -0,0 +1,122 @@ + + + diff --git a/pages/gqzq/zqxx.vue b/pages/gqzq/zqxx.vue new file mode 100644 index 0000000..1521c89 --- /dev/null +++ b/pages/gqzq/zqxx.vue @@ -0,0 +1,392 @@ + + + diff --git a/pages/gqzq/zqxx/form.vue b/pages/gqzq/zqxx/form.vue new file mode 100644 index 0000000..37a5224 --- /dev/null +++ b/pages/gqzq/zqxx/form.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/pages/gqzq/zqxx/table.vue b/pages/gqzq/zqxx/table.vue new file mode 100644 index 0000000..fabd5cb --- /dev/null +++ b/pages/gqzq/zqxx/table.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/pages/gqzq/zqxx/zqxx.vue b/pages/gqzq/zqxx/zqxx.vue new file mode 100644 index 0000000..ffa87b0 --- /dev/null +++ b/pages/gqzq/zqxx/zqxx.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/pages/hdDetail/hdDetail.vue b/pages/hdDetail/hdDetail.vue new file mode 100644 index 0000000..a3b2240 --- /dev/null +++ b/pages/hdDetail/hdDetail.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/pages/hdDetail/jcsj/chartOption.js b/pages/hdDetail/jcsj/chartOption.js new file mode 100644 index 0000000..1407b80 --- /dev/null +++ b/pages/hdDetail/jcsj/chartOption.js @@ -0,0 +1,242 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption(data=[],wrz,grz) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + const maxSw = Math.max(...data.map(obj => obj.z)) + const minSw = Math.min(...data.map(obj => obj.z)) + const maxLl = Math.max(...data.map(obj => obj.tq)) + const minLl = Math.min(...data.map(obj => obj.tq)) + console.log("maxLl",wrz,grz); + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: [ + { + top: "13%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + { + bottom: "5%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + ], + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ['警戒水位', '危险水位', "降雨量", "水位", "转换流量"], + left:3, + right:0, + itemWidth:16, + }, + xAxis: [ + { + gridIndex: 0, + type: 'category', + data: data.map(o => o.tm).reverse(), + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + show:false, + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + }, + { + gridIndex: 1, + type: 'category', + data: data.map(o => o.tm.substr("2020-".length,11)), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + inverse: true, + gridIndex: 0, + type: 'value', + position: 'left', + name: "降雨量(mm)", + nameLocation: "start", + axisLabel: { + color: '#333', + fontSize: 12, + }, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: maxVal + }, + { + gridIndex: 1, + type: 'value', + position: 'left', + name: "水位(m)", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minSw, + max: maxSw + }, + { + gridIndex: 1, + type: 'value', + position: 'right', + name: "流量(m³/s)", + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minLl, + max: maxLl + } + ], + } + let chartData = { + series: [ + + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '危险水位', + type: 'line', + color: "#D9001B", + lineStyle: { + type: "dashed" + }, + data: data.map(o => grz), + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '警戒水位', + type: 'line', + color: "#F59A23", + barWidth: '60%', + data: data.map(o => wrz), + lineStyle: { + type: "dashed" + }, + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + name: '降雨量', + type: 'bar', + barWidth: '60%', + data: data.map(o => o.drp).reverse(), + itemStyle: { + color: "#007AFD", + }, + label: { + show: false, + }, + + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '水位', + type: 'line', + symbol: 'none', + color: "#0AE0B5", + label: { + show: false, + }, + data: data.map(o => o.z ? o.z.toFixed(2) : null), + }, + { + xAxisIndex: 1, + yAxisIndex: 2, + name: '转换流量', + type: 'line', + color: "#007AFD", + symbol: 'none', + showSymbol: false, + label: { + show: false, + }, + data: data.map(o => o.tq), + } + ] + } + return { + eopts, + chartData + } +} diff --git a/pages/hdDetail/jcsj/jcsj.vue b/pages/hdDetail/jcsj/jcsj.vue new file mode 100644 index 0000000..71eacbc --- /dev/null +++ b/pages/hdDetail/jcsj/jcsj.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/hdDetail/jcsj/jcsjTable.vue b/pages/hdDetail/jcsj/jcsjTable.vue new file mode 100644 index 0000000..7dc4abb --- /dev/null +++ b/pages/hdDetail/jcsj/jcsjTable.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/pages/hdDetail/spjk/spjk.vue b/pages/hdDetail/spjk/spjk.vue new file mode 100644 index 0000000..49ce5bf --- /dev/null +++ b/pages/hdDetail/spjk/spjk.vue @@ -0,0 +1,127 @@ + + + + + + diff --git a/pages/hdDetail/tjsj/tjsj.vue b/pages/hdDetail/tjsj/tjsj.vue new file mode 100644 index 0000000..67fbd81 --- /dev/null +++ b/pages/hdDetail/tjsj/tjsj.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/pages/hdDetail/zbyq/resList.vue b/pages/hdDetail/zbyq/resList.vue new file mode 100644 index 0000000..d40603e --- /dev/null +++ b/pages/hdDetail/zbyq/resList.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/hdDetail/zbyq/zbyq.vue b/pages/hdDetail/zbyq/zbyq.vue new file mode 100644 index 0000000..c137a05 --- /dev/null +++ b/pages/hdDetail/zbyq/zbyq.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/pages/homeIndex/chartOption.js b/pages/homeIndex/chartOption.js new file mode 100644 index 0000000..4016e27 --- /dev/null +++ b/pages/homeIndex/chartOption.js @@ -0,0 +1,100 @@ + +import echarts from 'echarts/lib/echarts'; +import moment from 'moment'; + +export default function DrpOption(data=[]) { + const maxY = Math.max(...data.map(item => item.sumDrp)) + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: { + x: 18, + y: 24, + x2: 28, + y2: 36, + borderWidth: 0, + bottom: '10%', + left: '8%', + width: '90%', + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: data.map(o => moment(o.time).format("HH:mm")), + splitLine: { + show: false + }, + axisLabel: { + color: '#bbb', + fontSize: 14, + overflow: 'truncate', + }, + axisLine: { + lineStyle: { + color: '#dfdfdf', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#bbb', + fontSize: 10, + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: 0, + max:maxY + } + ], + // dataZoom: [ + // { + // type: 'slider', // 设置为滑动条类型 + // xAxisIndex: 0, // 指定控制第一个 x 轴 + // start: 0, // 初始窗口的起始位置(百分比) + // end: 100, // 初始窗口的结束位置(百分比) + + // } + // ], + } + let chartData = { + series: [ + { + name: '面雨量(mm)', + type: 'bar', + barWidth: '60%', + data: data.map(o => o.sumDrp), + itemStyle: { + normal: { + color: "#6395f9" + } + } + } + ] + } + return { + eopts, + chartData + } +} diff --git a/pages/homeIndex/index.vue b/pages/homeIndex/index.vue new file mode 100644 index 0000000..f948f63 --- /dev/null +++ b/pages/homeIndex/index.vue @@ -0,0 +1,484 @@ + + + + + \ No newline at end of file diff --git a/pages/login/login.vue b/pages/login/login.vue new file mode 100644 index 0000000..0f44295 --- /dev/null +++ b/pages/login/login.vue @@ -0,0 +1,229 @@ + + + + + \ No newline at end of file diff --git a/pages/messageList/detail/index.vue b/pages/messageList/detail/index.vue new file mode 100644 index 0000000..d39c3a3 --- /dev/null +++ b/pages/messageList/detail/index.vue @@ -0,0 +1,146 @@ + + + + + \ No newline at end of file diff --git a/pages/messageList/index.vue b/pages/messageList/index.vue new file mode 100644 index 0000000..6ee0630 --- /dev/null +++ b/pages/messageList/index.vue @@ -0,0 +1,215 @@ + + + + + \ No newline at end of file diff --git a/pages/modifyPassword/modifyPassword.vue b/pages/modifyPassword/modifyPassword.vue new file mode 100644 index 0000000..2d87199 --- /dev/null +++ b/pages/modifyPassword/modifyPassword.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/pages/mypage/compents/wtcl/detail/index.vue b/pages/mypage/compents/wtcl/detail/index.vue new file mode 100644 index 0000000..0dae1a9 --- /dev/null +++ b/pages/mypage/compents/wtcl/detail/index.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/wtcl/index.vue b/pages/mypage/compents/wtcl/index.vue new file mode 100644 index 0000000..c1f1f83 --- /dev/null +++ b/pages/mypage/compents/wtcl/index.vue @@ -0,0 +1,201 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/formZdy/formBottom.vue b/pages/mypage/compents/wxyh/formZdy/formBottom.vue new file mode 100644 index 0000000..fa5d820 --- /dev/null +++ b/pages/mypage/compents/wxyh/formZdy/formBottom.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/formZdy/formTop.vue b/pages/mypage/compents/wxyh/formZdy/formTop.vue new file mode 100644 index 0000000..5a1a4d8 --- /dev/null +++ b/pages/mypage/compents/wxyh/formZdy/formTop.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/formZdy/index.vue b/pages/mypage/compents/wxyh/formZdy/index.vue new file mode 100644 index 0000000..4ae3913 --- /dev/null +++ b/pages/mypage/compents/wxyh/formZdy/index.vue @@ -0,0 +1,75 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/wxyh/index.vue b/pages/mypage/compents/wxyh/index.vue new file mode 100644 index 0000000..b474225 --- /dev/null +++ b/pages/mypage/compents/wxyh/index.vue @@ -0,0 +1,178 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/detail/dbForm.vue b/pages/mypage/compents/xcrw/detail/dbForm.vue new file mode 100644 index 0000000..b79fc9e --- /dev/null +++ b/pages/mypage/compents/xcrw/detail/dbForm.vue @@ -0,0 +1,305 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/detail/formZdy.vue b/pages/mypage/compents/xcrw/detail/formZdy.vue new file mode 100644 index 0000000..91575f0 --- /dev/null +++ b/pages/mypage/compents/xcrw/detail/formZdy.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/detail/index.vue b/pages/mypage/compents/xcrw/detail/index.vue new file mode 100644 index 0000000..f6f37af --- /dev/null +++ b/pages/mypage/compents/xcrw/detail/index.vue @@ -0,0 +1,231 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/compents/xcrw/index.vue b/pages/mypage/compents/xcrw/index.vue new file mode 100644 index 0000000..75de26a --- /dev/null +++ b/pages/mypage/compents/xcrw/index.vue @@ -0,0 +1,199 @@ + + + + + \ No newline at end of file diff --git a/pages/mypage/mypage.vue b/pages/mypage/mypage.vue new file mode 100644 index 0000000..5fd0de5 --- /dev/null +++ b/pages/mypage/mypage.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/pages/orderFeedback/fk.vue b/pages/orderFeedback/fk.vue new file mode 100644 index 0000000..7d508ec --- /dev/null +++ b/pages/orderFeedback/fk.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/pages/orderFeedback/orderFeedback.vue b/pages/orderFeedback/orderFeedback.vue new file mode 100644 index 0000000..3149db9 --- /dev/null +++ b/pages/orderFeedback/orderFeedback.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/pages/orderFeedback/orderInformation.vue b/pages/orderFeedback/orderInformation.vue new file mode 100644 index 0000000..508ea12 --- /dev/null +++ b/pages/orderFeedback/orderInformation.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/pages/orderFeedback/zl.vue b/pages/orderFeedback/zl.vue new file mode 100644 index 0000000..fb52b3c --- /dev/null +++ b/pages/orderFeedback/zl.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/personInfo/personInfo.vue b/pages/personInfo/personInfo.vue new file mode 100644 index 0000000..33b5b03 --- /dev/null +++ b/pages/personInfo/personInfo.vue @@ -0,0 +1,235 @@ + + + + + \ No newline at end of file diff --git a/pages/rain/Table.vue b/pages/rain/Table.vue new file mode 100644 index 0000000..ca3af03 --- /dev/null +++ b/pages/rain/Table.vue @@ -0,0 +1,114 @@ + + + + + \ No newline at end of file diff --git a/pages/rain/rain.vue b/pages/rain/rain.vue new file mode 100644 index 0000000..ac2e2e4 --- /dev/null +++ b/pages/rain/rain.vue @@ -0,0 +1,550 @@ + + + + + \ No newline at end of file diff --git a/pages/rainDetail/jcsj/chartOption.js b/pages/rainDetail/jcsj/chartOption.js new file mode 100644 index 0000000..de204d9 --- /dev/null +++ b/pages/rainDetail/jcsj/chartOption.js @@ -0,0 +1,181 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption(echartData) { + let totalDrp = 0; + const DRPLEVEL = [10, 20, 50, 100, 250]; + const maxVal = DRPLEVEL.find(o => o > totalDrp); + const xMaxVal = echartData?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData?.actual || []) + return o > max + }):maxVal + // const xMaxVal = Math.ceil(Math.max(...echartData.actual)) + 2 + const yMaxVal = echartData?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData?.total) + return o > max + }): maxVal + let eopts = { + tooltip: { + trigger: 'axis' + }, + grid:{ + x: 40, + y: 30, + x2: 30, + y2: 28, + borderWidth: 0 + }, + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ['实测', '累计'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + // data: echartData?.time.map(item => item.substr('2020--'.length)), + data: echartData?.time, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + format: 'xAxisFormat' + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name:"雨量mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: xMaxVal + }, + { + type: 'value', + position: 'right', + name:"累计mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: yMaxVal + } + ] + } + let chartData = { + series: [ + { + name: '实测', + type: 'bar', + barWidth: '60%', + data: echartData?.actual, + itemStyle: { + normal: { + barBorderRadius: [3, 3, 0, 0], + color: new echarts.graphic.LinearGradient( + 0, 0, 0, 1, + [ + { offset: 0, color: '#3876cd' }, + { offset: 0.5, color: '#45b4e7' }, + { offset: 1, color: '#54ffff' } + ] + ), + }, + }, + label: { + show: false, + }, + markPoint: { + data: [ + { type: 'max', name: '最大值', symbol: 'circle', symbolSize: 1, symbolOffset: [0, -12] }, + ] + }, + }, + { + yAxisIndex: 1, + name: '累计', + type: 'line', + showSymbol: false, + label: { + show: false, + }, + data: echartData?.total, + lineStyle: { + normal: { + width: 1, + } + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ + offset: 0, + color: 'rgba(3, 194, 236, 0.3)' + }, { + offset: 0.8, + color: 'rgba(3, 194, 236, 0)' + } + ], false), + shadowColor: 'rgba(0, 0, 0, 0.1)', + shadowBlur: 10 + } + }, + itemStyle: { + normal: { + color: '#03C2EC' + } + }, + } + ] + } + return { + eopts, + chartData + } +} diff --git a/pages/rainDetail/jcsj/jcsj.vue b/pages/rainDetail/jcsj/jcsj.vue new file mode 100644 index 0000000..e94d4ed --- /dev/null +++ b/pages/rainDetail/jcsj/jcsj.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/rainDetail/jcsj/jcsjTable.vue b/pages/rainDetail/jcsj/jcsjTable.vue new file mode 100644 index 0000000..eec7c05 --- /dev/null +++ b/pages/rainDetail/jcsj/jcsjTable.vue @@ -0,0 +1,91 @@ + + + + + \ No newline at end of file diff --git a/pages/rainDetail/rainDetail.vue b/pages/rainDetail/rainDetail.vue new file mode 100644 index 0000000..5fc5ccc --- /dev/null +++ b/pages/rainDetail/rainDetail.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/pages/rainDetail/tjsj/tjsj.vue b/pages/rainDetail/tjsj/tjsj.vue new file mode 100644 index 0000000..0773cae --- /dev/null +++ b/pages/rainDetail/tjsj/tjsj.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/pages/rainDetail/zbyq/resList.vue b/pages/rainDetail/zbyq/resList.vue new file mode 100644 index 0000000..d40603e --- /dev/null +++ b/pages/rainDetail/zbyq/resList.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/rainDetail/zbyq/zbyq.vue b/pages/rainDetail/zbyq/zbyq.vue new file mode 100644 index 0000000..16567ee --- /dev/null +++ b/pages/rainDetail/zbyq/zbyq.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/pages/skDetail/jcsj/chartOption.js b/pages/skDetail/jcsj/chartOption.js new file mode 100644 index 0000000..55836f0 --- /dev/null +++ b/pages/skDetail/jcsj/chartOption.js @@ -0,0 +1,261 @@ + +import echarts from 'echarts/lib/echarts'; + +export default function DrpOption( + data, + afsltdz, + flLowLimLev, + desFloodLev, + calFloodLev) { + const maxVal = Math.max(...data.map(obj => obj.drp)) + const maxSw = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minSw = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxKr = Math.max(...data.map(obj => obj.w)) + const minKr = Math.min(...data.map(obj => obj.w)) + console.log('desFloodLev',desFloodLev); + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: [ + { + top: "13%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + { + bottom: "5%", + left: "10%", + right: "8%", + width: '80%', + height: '35%' + }, + ], + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ["校核水位", '设计水位', '汛限水位', '降雨量', '水位', '库容'], + left:0, + right:0, + itemWidth:10, + padding:0 + }, + xAxis: [ + { + gridIndex: 0, + type: 'category', + data: data.map(o => o.tm).reverse(), + + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + show: false + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + }, + { + gridIndex: 1, + type: 'category', + data: data.map(o => o.tm.substr("2020-".length,11)), + inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + formatter: val => val.substr('2020-'.length, 11) + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + inverse: true, + gridIndex: 0, + type: 'value', + position: 'left', + name: '降雨量(mm)', + nameLocation: 'start', + axisLabel: { + color: '#333', + fontSize: 12 + }, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: 0, + max: maxVal + }, + { + gridIndex: 1, + type: 'value', + position: 'left', + name: '水位(m)', + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minSw, + max: maxSw + }, + { + gridIndex: 1, + type: 'value', + position: 'right', + name: '库容(万m³)', + splitLine: { + show: false, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minKr, + max: maxKr + } + ], + } + let chartData = { + series: [ + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '校核水位', + type: 'line', + color: '#D9001B', + lineStyle: { + type: 'dashed' + }, + data: data.map(o => calFloodLev), + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '设计水位', + type: 'line', + color: '#F59A23', + data: data.map(o => desFloodLev), + lineStyle: { + type: 'dashed' + }, + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '汛限水位', + type: 'line', + color: '#FDDC9F', + data: data.map(o => { + return flLowLimLev + }), + lineStyle: { + type: 'dashed' + }, + symbol: 'none' // 设置标记点为'none',即去掉圆点 + }, + { + name: '降雨量', + type: 'bar', + barWidth: '60%', + data: data.map(o => o.drp).reverse(), + itemStyle: { + color: '#007AFD' + }, + label: { + show: false + } + }, + { + xAxisIndex: 1, + yAxisIndex: 1, + name: '水位', + type: 'line', + symbol: 'none', + color: '#0AE0B5', + label: { + show: false + }, + data: data.map(o => o.rz ? o.rz.toFixed(2):null ) + }, + { + xAxisIndex: 1, + yAxisIndex: 2, + name: '库容', + type: 'line', + color: '#007AFD', + symbol: 'none', + showSymbol: false, + label: { + show: false + }, + data: data.map(o => o.w) + } + ], + } + return { + eopts, + chartData + } +} + diff --git a/pages/skDetail/jcsj/jcsj.vue b/pages/skDetail/jcsj/jcsj.vue new file mode 100644 index 0000000..06d7087 --- /dev/null +++ b/pages/skDetail/jcsj/jcsj.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/pages/skDetail/jcsj/jcsjTable.vue b/pages/skDetail/jcsj/jcsjTable.vue new file mode 100644 index 0000000..edd234d --- /dev/null +++ b/pages/skDetail/jcsj/jcsjTable.vue @@ -0,0 +1,110 @@ + + + + + \ No newline at end of file diff --git a/pages/skDetail/skDetail.vue b/pages/skDetail/skDetail.vue new file mode 100644 index 0000000..9bb17ea --- /dev/null +++ b/pages/skDetail/skDetail.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/pages/skDetail/spjk/spjk.vue b/pages/skDetail/spjk/spjk.vue new file mode 100644 index 0000000..4489113 --- /dev/null +++ b/pages/skDetail/spjk/spjk.vue @@ -0,0 +1,131 @@ + + + + + + + diff --git a/pages/skDetail/tjsj/tjsj.vue b/pages/skDetail/tjsj/tjsj.vue new file mode 100644 index 0000000..f7a4880 --- /dev/null +++ b/pages/skDetail/tjsj/tjsj.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/pages/skDetail/txjc/txjc.vue b/pages/skDetail/txjc/txjc.vue new file mode 100644 index 0000000..a0ba14e --- /dev/null +++ b/pages/skDetail/txjc/txjc.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/pages/skDetail/zbyq/resList.vue b/pages/skDetail/zbyq/resList.vue new file mode 100644 index 0000000..d40603e --- /dev/null +++ b/pages/skDetail/zbyq/resList.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/skDetail/zbyq/zbyq.vue b/pages/skDetail/zbyq/zbyq.vue new file mode 100644 index 0000000..c137a05 --- /dev/null +++ b/pages/skDetail/zbyq/zbyq.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/pages/skDetail/zrtx/card.vue b/pages/skDetail/zrtx/card.vue new file mode 100644 index 0000000..7a1e407 --- /dev/null +++ b/pages/skDetail/zrtx/card.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/skDetail/zrtx/zrtx.vue b/pages/skDetail/zrtx/zrtx.vue new file mode 100644 index 0000000..88e2ba0 --- /dev/null +++ b/pages/skDetail/zrtx/zrtx.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/pages/skInfo/detail/basicInfo.vue b/pages/skInfo/detail/basicInfo.vue new file mode 100644 index 0000000..e47c78a --- /dev/null +++ b/pages/skInfo/detail/basicInfo.vue @@ -0,0 +1,148 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/detail/index.vue b/pages/skInfo/detail/index.vue new file mode 100644 index 0000000..1e2cba2 --- /dev/null +++ b/pages/skInfo/detail/index.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/detail/jcxx.vue b/pages/skInfo/detail/jcxx.vue new file mode 100644 index 0000000..1c8c48a --- /dev/null +++ b/pages/skInfo/detail/jcxx.vue @@ -0,0 +1,330 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/detail/krqx/chartOptions.js b/pages/skInfo/detail/krqx/chartOptions.js new file mode 100644 index 0000000..76efa7e --- /dev/null +++ b/pages/skInfo/detail/krqx/chartOptions.js @@ -0,0 +1,80 @@ +import {GetInterval} from "../../../../utils/tools" +export default function DrpOption(data) { + const maxVal = Math.ceil(Math.max(...data.map(obj => obj.rz))) + const minVal = Math.floor(Math.min(...data.map(obj => obj.rz))) + const maxValX = Math.max(...data.map(obj => obj.w)) + const minValX = Math.min(...data.map(obj => obj.w)) + let arr = [] + + data.forEach(item=>{ + arr.push([item.w,item.rz]) + }) + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: [ + { + top: "12%", + left: "12%", + right: "18%", + bottom: "8%" + }, + ], + xAxis: [ + { + name: "库容(万m³)", + nameGap: 5, + type: 'value', + min:Math.floor(minValX / 5) *5, + max:Math.ceil(maxValX / 5) *5, + interval:GetInterval(minValX,maxValX), + data: data.map(o => o.w), + splitLine: { + show: false + }, + } + ], + yAxis: [ + { + type: 'value', + name: "库水位(m)", + minInterval:1, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: true + }, + axisTick: { + show: true, + }, + min: minVal, + max: maxVal + } + ], + }; + let chartData = { + series: [ + { + type: 'line', + color: "#007AFD", + data: arr, + smooth: true + }, + ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/skInfo/detail/krqx/index.vue b/pages/skInfo/detail/krqx/index.vue new file mode 100644 index 0000000..c9955a2 --- /dev/null +++ b/pages/skInfo/detail/krqx/index.vue @@ -0,0 +1,56 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/detail/krqx/jcsjTable.vue b/pages/skInfo/detail/krqx/jcsjTable.vue new file mode 100644 index 0000000..dd7a4bd --- /dev/null +++ b/pages/skInfo/detail/krqx/jcsjTable.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/detail/tzcs.vue b/pages/skInfo/detail/tzcs.vue new file mode 100644 index 0000000..fe4f9e5 --- /dev/null +++ b/pages/skInfo/detail/tzcs.vue @@ -0,0 +1,119 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/index.vue b/pages/skInfo/index.vue new file mode 100644 index 0000000..2c003e8 --- /dev/null +++ b/pages/skInfo/index.vue @@ -0,0 +1,184 @@ + + + + + \ No newline at end of file diff --git a/pages/skInfo/waterDatail/index.vue b/pages/skInfo/waterDatail/index.vue new file mode 100644 index 0000000..28cf75a --- /dev/null +++ b/pages/skInfo/waterDatail/index.vue @@ -0,0 +1,138 @@ + + + \ No newline at end of file diff --git a/pages/skInfo/waterDatail/jcOptions.js b/pages/skInfo/waterDatail/jcOptions.js new file mode 100644 index 0000000..76980ac --- /dev/null +++ b/pages/skInfo/waterDatail/jcOptions.js @@ -0,0 +1,166 @@ + +import echarts from 'echarts/lib/echarts'; +import { format } from 'echarts/lib/export'; +export default function DrpOption(data,num) { + const minL = Math.floor(Math.min(...data?.map(s => s.q))); + const maxL = Math.ceil(Math.max(...data?.map(s => s.q))); + const minS = Math.floor(Math.min(...data?.map(s => s.v))); + const maxS = Math.ceil(Math.max(...data?.map(s => s.v))); + let eopts = { + title: { + text: `时段总水量:${num.value}${num.unit}m³`, + top: "0%", + right: "12%", + textStyle: { + fontWeight: "normal", + fontSize:14 + } + }, + tooltip: { + trigger: 'axis', + }, + grid: { + top: '20%', + left: '7%', + right: '11%', + bottom: '10%', + borderWidth: 0 + }, + legend: { + show: true, + top: "8%", + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: data?.map(item => item.tm), + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 14, + // formatter: val => val.substr(0,'2020-11-11 11:11'.length) + format:"waterXaxis" + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name: "流量(m³/s)", + nameTextStyle: { + padding: [0, 0, 0, 30] + }, + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minL, + max: maxL + // max: xMaxVal + }, + { + type: 'value', + position: 'right', + name:"水量(m³)", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: minS - 1, + max: maxS + } + ], + }; + let chartData = { + series: [ + + { + name:'流量', + type:'line', + smooth: true, + showSymbol: false, + symbol: false, + itemStyle: { + normal: { + color: "#FAC858", + } + }, + lineStyle: { + normal: { + width: 3, + shadowColor: 'rgba(0,0,0,0.4)', + shadowBlur: 10, + shadowOffsetY: 10 + } + }, + markPoint: { + data: [{ + name: '最大值', + type: 'max', + }], + }, + data: data?.map(s => s.q), + }, + { + name: '水量', + type: 'bar', + yAxisIndex:1, + barWidth: '10%', + data: data?.map(s => s.v), + itemStyle: { + normal: { + color:"#5773c7" + }, + }, + label: { + show: false, + }, + }, + ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/skInfo/waterDatail/jcTable.vue b/pages/skInfo/waterDatail/jcTable.vue new file mode 100644 index 0000000..9e5fa96 --- /dev/null +++ b/pages/skInfo/waterDatail/jcTable.vue @@ -0,0 +1,97 @@ + + + + + \ No newline at end of file diff --git a/pages/spjk/index.vue b/pages/spjk/index.vue new file mode 100644 index 0000000..56eabe8 --- /dev/null +++ b/pages/spjk/index.vue @@ -0,0 +1,121 @@ + + + + \ No newline at end of file diff --git a/pages/spjk/spbf/index.vue b/pages/spjk/spbf/index.vue new file mode 100644 index 0000000..0ed128d --- /dev/null +++ b/pages/spjk/spbf/index.vue @@ -0,0 +1,222 @@ + + + + + + + diff --git a/pages/stlljk/chartOption.js b/pages/stlljk/chartOption.js new file mode 100644 index 0000000..cb7f9fe --- /dev/null +++ b/pages/stlljk/chartOption.js @@ -0,0 +1,145 @@ +import "echarts/extension/bmap/bmap" + + +export default function drpOption (obj) { + const data = obj.list; + const monthsData = obj.chart + console.log(data,monthsData); + const maxQ = Math.ceil(Math.max(...data.map(obj => { + return obj?.q ? obj?.q:0 + }))) + const minQ = Math.floor(Math.min(...data.map(obj => { + return obj?.q? obj?.q :300 + }))) + const monthsX = Object.keys(monthsData); + const res = monthsX.map(item => { + const result = data?.map(s => { + const momth = s.tm.substr("2024-0".length, "2024-0".length - 5); + if (momth == String(item)) { + return [s.tm,monthsData[item]] + } else { + return [] + } + }) + return result + }) + const data1 = res.map(s => s.filter(o => o.length > 0)).filter(o => o.length > 0) + const lines = data1.map((item, index, c) => ({ + type: 'line', + markLine: { + symbol:"none", + lineStyle: { + type: "dotted", + color: "#47daff", + width: 3 + }, + label: { + show: true, + position:"middle", + color: "#47daff", + distance: 5, + format: "stMonth" + }, + data: [ + [{ coord: [item[0][0], item[0][1]] },{coord:[item[item.length - 1][0],item[item.length - 1][1]]}] + ] + } + })) + + let eopts = { + tooltip: { + trigger: 'axis' + }, + grid: [ + { + top: '10%', + left: '11%', + right: '5%', + bottom:"12%" + // width: '80%', + // height: '35%' + }, + ], + legend: { + // 显示图例 + show: true, + top: '-1%', + }, + + xAxis: [ + { + type: 'category', + data: data.map(o => o.tm), + // inverse: true, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + format:"stList" + }, + axisLine: { + lineStyle: { + color: '#000', + width: 0.5 + } + }, + axisTick: { + show: false + } + } + ], + yAxis: [ + { + type: 'value', + // gridIndex:0, + position: 'left', + name: '生态流量(m³/s)', + splitLine: { + show: true, + lineStyle: { + color: '#000', + width: 0.25, + type: 'dotted' + } + }, + axisLabel: { + color: '#333', + fontSize: 12 + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + min: minQ, + max: maxQ + }, + ], + } + let chartData = { + series: [ + { + name: '生态流量(m³/s)', + type: 'line', + symbol: 'none', + color: '#4fa2ea', + smooth:true, + label: { + show: false + }, + data: data.map(o => o.q) + }, + ...lines + ] + } + return { + eopts, + chartData + } +} + + + diff --git a/pages/stlljk/index.vue b/pages/stlljk/index.vue new file mode 100644 index 0000000..db604dc --- /dev/null +++ b/pages/stlljk/index.vue @@ -0,0 +1,209 @@ + + + + + + diff --git a/pages/stlljk/index1.vue b/pages/stlljk/index1.vue new file mode 100644 index 0000000..d056301 --- /dev/null +++ b/pages/stlljk/index1.vue @@ -0,0 +1,57 @@ + + \ No newline at end of file diff --git a/pages/stlljk/jcsjTable.vue b/pages/stlljk/jcsjTable.vue new file mode 100644 index 0000000..743368d --- /dev/null +++ b/pages/stlljk/jcsjTable.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/pages/upgrade/index.vue b/pages/upgrade/index.vue new file mode 100644 index 0000000..0b1d25a --- /dev/null +++ b/pages/upgrade/index.vue @@ -0,0 +1,276 @@ + + + + + + \ No newline at end of file diff --git a/pages/utils/dicType.js b/pages/utils/dicType.js new file mode 100644 index 0000000..7c98997 --- /dev/null +++ b/pages/utils/dicType.js @@ -0,0 +1,43 @@ + +export function repDict(e) { + let name="" + if(e=="1"){ + name="行政责任人" + }else if(e=="2"){ + name="技术责任人" + }else if(e=="3"){ + name="巡查责任人" + }else if(e=="4"){ + name="主管部门责任人" + }else if(e=="5"){ + name="管理单位责任人" + } + return name +} + +// 县,乡镇判断 +export function disType(e) { + let type; + if (e.endsWith('000000000')) { + type = 1; + } else{ + type = 0; + } + return type; +} + +// 响应等级判断 +// 县,乡镇判断 +export function level(e) { + let name; + if (e == 1) { + name = "Ⅰ级"; + } else if (e == 2) { + name = "Ⅱ级"; + } else if (e == 3) { + name = "Ⅲ级"; + } else if (e == 4) { + name = "Ⅳ级"; + } + return name +} diff --git a/pages/utils/tool.js b/pages/utils/tool.js new file mode 100644 index 0000000..15f69a0 --- /dev/null +++ b/pages/utils/tool.js @@ -0,0 +1,89 @@ +export function restm (e) { + let index = '' + if (e == '8') { + index = 0 + } else if (e == '9') { + index = 1 + } else if (e == '10') { + index = 2 + } else if (e == '11') { + index = 3 + } else if (e == '12') { + index = 4 + } else if (e == '13') { + index = 5 + } else if (e == '14') { + index = 6 + } else if (e == '15') { + index = 7 + } else if (e == '16') { + index = 8 + } else if (e == '17') { + index = 9 + } else if (e == '18') { + index = 10 + } else if (e == '19') { + index = 11 + } else if (e == '20') { + index = 12 + } else if (e == '21') { + index = 13 + } else if (e == '22') { + index = 14 + } else if (e == '23') { + index = 15 + } else if (e == '0') { + index = 16 + } else if (e == '1') { + index = 17 + } else if (e == '2') { + index = 18 + } else if (e == '3') { + index = 19 + } else if (e == '4') { + index = 20 + } else if (e == '5') { + index = 21 + } else if (e == '6') { + index = 22 + } else if (e == '7') { + index = 23 + } + return index +} +export const adnmZhen = adcd => { + if (!adcd || !nameMap) { + return undefined + } + if (adcd.endsWith('000000000')) { + return undefined + } else if (adcd.endsWith('000000')) { + return nameMap[adcd] + } + return nameMap[`${adcd.substr(0, 9)}000000`] +} + +export const fileChange = (file) => { + let blob = new Blob([file]); + let url = window.URL.createObjectURL(blob); + console.log("url",url); + + return url +} + +export function numberFormat(value) { + let param = {} + let k = 10000 + let sizes = ['', '万', '亿', '万亿'] + let i + if (value < k) { + param.value = value + param.unit = '' + } else { + i = Math.floor(Math.log(value) / Math.log(k)); + param.value = ((value / Math.pow(k, i))).toFixed(2); + param.unit = sizes[i]; + } + console.log(param) + return param; +} diff --git a/pages/utils/upgrade.js b/pages/utils/upgrade.js new file mode 100644 index 0000000..a226c70 --- /dev/null +++ b/pages/utils/upgrade.js @@ -0,0 +1,90 @@ +/** + * @description H5+下载App + * @param downloadUrl:App下载链接 + * @param progressCallBack:下载进度回调 + */ +export const downloadApp = (downloadUrl, progressCallBack = () => { },) => { + return new Promise((resolve, reject) => { + //创建下载任务 + const downloadTask = plus.downloader.createDownload(downloadUrl, { + method: "GET" + }, (task, status) => { + if (status == 200) { //下载成功 + resolve(task.filename) + + } else { + reject('fail') + uni.showToast({ + title: '下载失败', + duration: 1500, + icon: "none" + }); + } + }) + //监听下载过程 + downloadTask.addEventListener("statechanged", (task, status) => { + switch (task.state) { + case 1: // 开始 + break; + case 2: //已连接到服务器 + break; + case 3: // 已接收到数据 + let hasProgress = task.totalSize && task.totalSize > 0 //是否能获取到App大小 + if (hasProgress) { + let current = parseInt(100 * task.downloadedSize / task.totalSize); //获取下载进度百分比 + progressCallBack(current) + } + break; + case 4: // 下载完成 + break; + } + }); + //开始执行下载 + downloadTask.start(); + }) + + +} +/** + * @description H5+安装APP + * @param fileName:app文件名 + * @param callBack:安装成功回调 + */ +export const installApp = (fileName, callBack = () => {}) => { + //注册广播监听app安装情况 + onInstallListening(callBack); + //开始安装 + plus.runtime.install(plus.io.convertLocalFileSystemURL(fileName), {}, () => { + //成功跳转到安装界面 + }, function(error) { + uni.showToast({ + title: '安装失败', + duration: 1500, + icon: "none" + }); + }) + +} +/** + * @description 注册广播监听APP是否安装成功 + * @param callBack:安装成功回调函数 + */ +const onInstallListening = (callBack = () => {}) => { + + let mainActivity = plus.android.runtimeMainActivity(); //获取activity + //生成广播接收器 + let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', { + onReceive: (context, intent) => { //接收广播回调 + plus.android.importClass(intent); + mainActivity.unregisterReceiver(receiver); //取消监听 + callBack() + } + }); + let IntentFilter = plus.android.importClass('android.content.IntentFilter'); + let Intent = plus.android.importClass('android.content.Intent'); + let filter = new IntentFilter(); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); //监听APP安装 + filter.addDataScheme("package"); + mainActivity.registerReceiver(receiver, filter); //注册广播 + +} \ No newline at end of file diff --git a/pages/water/hdWater/hdWater.vue b/pages/water/hdWater/hdWater.vue new file mode 100644 index 0000000..8709808 --- /dev/null +++ b/pages/water/hdWater/hdWater.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/pages/water/hdWater/table.vue b/pages/water/hdWater/table.vue new file mode 100644 index 0000000..0fc00c7 --- /dev/null +++ b/pages/water/hdWater/table.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/pages/water/skWater/skWater.vue b/pages/water/skWater/skWater.vue new file mode 100644 index 0000000..74eaa5b --- /dev/null +++ b/pages/water/skWater/skWater.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/pages/water/skWater/table.vue b/pages/water/skWater/table.vue new file mode 100644 index 0000000..6305936 --- /dev/null +++ b/pages/water/skWater/table.vue @@ -0,0 +1,135 @@ + + + + + \ No newline at end of file diff --git a/pages/water/water.vue b/pages/water/water.vue new file mode 100644 index 0000000..72e49ec --- /dev/null +++ b/pages/water/water.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/pages/wtcl/detail/index.vue b/pages/wtcl/detail/index.vue new file mode 100644 index 0000000..a348c99 --- /dev/null +++ b/pages/wtcl/detail/index.vue @@ -0,0 +1,308 @@ + + + + + \ No newline at end of file diff --git a/pages/wtcl/index.vue b/pages/wtcl/index.vue new file mode 100644 index 0000000..b02e63e --- /dev/null +++ b/pages/wtcl/index.vue @@ -0,0 +1,198 @@ + + + + + \ No newline at end of file diff --git a/pages/wxyh/formZdy/formBottom.vue b/pages/wxyh/formZdy/formBottom.vue new file mode 100644 index 0000000..cbdea3f --- /dev/null +++ b/pages/wxyh/formZdy/formBottom.vue @@ -0,0 +1,174 @@ + + + \ No newline at end of file diff --git a/pages/wxyh/formZdy/formTop.vue b/pages/wxyh/formZdy/formTop.vue new file mode 100644 index 0000000..9c32fd5 --- /dev/null +++ b/pages/wxyh/formZdy/formTop.vue @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/pages/wxyh/index.vue b/pages/wxyh/index.vue new file mode 100644 index 0000000..cfb5a89 --- /dev/null +++ b/pages/wxyh/index.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/pages/xcrw/detail/dbForm.vue b/pages/xcrw/detail/dbForm.vue new file mode 100644 index 0000000..14e2caf --- /dev/null +++ b/pages/xcrw/detail/dbForm.vue @@ -0,0 +1,460 @@ + + + + + \ No newline at end of file diff --git a/pages/xcrw/detail/formZdy.vue b/pages/xcrw/detail/formZdy.vue new file mode 100644 index 0000000..91575f0 --- /dev/null +++ b/pages/xcrw/detail/formZdy.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/pages/xcrw/detail/index.vue b/pages/xcrw/detail/index.vue new file mode 100644 index 0000000..df7e771 --- /dev/null +++ b/pages/xcrw/detail/index.vue @@ -0,0 +1,264 @@ + + + + + \ No newline at end of file diff --git a/pages/xcrw/index.vue b/pages/xcrw/index.vue new file mode 100644 index 0000000..fdd2553 --- /dev/null +++ b/pages/xcrw/index.vue @@ -0,0 +1,204 @@ + + + + + \ No newline at end of file diff --git a/pages/xxsb/dsfrom.vue b/pages/xxsb/dsfrom.vue new file mode 100644 index 0000000..c9f69da --- /dev/null +++ b/pages/xxsb/dsfrom.vue @@ -0,0 +1,762 @@ + + + + + diff --git a/pages/xxsb/from.vue b/pages/xxsb/from.vue new file mode 100644 index 0000000..2d6d68a --- /dev/null +++ b/pages/xxsb/from.vue @@ -0,0 +1,682 @@ + + + + + diff --git a/pages/xxsb/fromSeverity.vue b/pages/xxsb/fromSeverity.vue new file mode 100644 index 0000000..fc62a53 --- /dev/null +++ b/pages/xxsb/fromSeverity.vue @@ -0,0 +1,656 @@ + + + + + diff --git a/pages/xxsb/index.vue b/pages/xxsb/index.vue new file mode 100644 index 0000000..77e6ed1 --- /dev/null +++ b/pages/xxsb/index.vue @@ -0,0 +1,91 @@ + + + diff --git a/pages/xxsb/map.vue b/pages/xxsb/map.vue new file mode 100644 index 0000000..7ca83e4 --- /dev/null +++ b/pages/xxsb/map.vue @@ -0,0 +1,124 @@ + + + diff --git a/pages/yj/detail/aiyj.vue b/pages/yj/detail/aiyj.vue new file mode 100644 index 0000000..ab638f3 --- /dev/null +++ b/pages/yj/detail/aiyj.vue @@ -0,0 +1,129 @@ + + + + + \ No newline at end of file diff --git a/pages/yj/detail/qxyj.vue b/pages/yj/detail/qxyj.vue new file mode 100644 index 0000000..e55d4d9 --- /dev/null +++ b/pages/yj/detail/qxyj.vue @@ -0,0 +1,125 @@ + + + + + \ No newline at end of file diff --git a/pages/yj/detail/wyyj.vue b/pages/yj/detail/wyyj.vue new file mode 100644 index 0000000..b84badb --- /dev/null +++ b/pages/yj/detail/wyyj.vue @@ -0,0 +1,140 @@ + + + + + \ No newline at end of file diff --git a/pages/yj/index.vue b/pages/yj/index.vue new file mode 100644 index 0000000..900be00 --- /dev/null +++ b/pages/yj/index.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/pages/ylzList/detail/index.vue b/pages/ylzList/detail/index.vue new file mode 100644 index 0000000..931cefd --- /dev/null +++ b/pages/ylzList/detail/index.vue @@ -0,0 +1,176 @@ + + + + \ No newline at end of file diff --git a/pages/ylzList/detail/jcOptions.js b/pages/ylzList/detail/jcOptions.js new file mode 100644 index 0000000..fbdbf4b --- /dev/null +++ b/pages/ylzList/detail/jcOptions.js @@ -0,0 +1,181 @@ + +import echarts from 'echarts/lib/echarts'; +export default function DrpOption(echartData) { + console.log("echartData",echartData); + + let totalDrp = 0; + const DRPLEVEL = [10, 20, 50, 100, 250]; + const maxVal = DRPLEVEL.find(o => o > totalDrp); + const xMaxVal = echartData?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData?.actual || []) + return o > max + }):maxVal + // const xMaxVal = Math.ceil(Math.max(...echartData.actual)) + 2 + const yMaxVal = echartData?.actual ? DRPLEVEL.find(o => { + let max = Math.max(...echartData?.total) + return o > max + }): maxVal + let eopts = { + tooltip: { + trigger: 'axis', + }, + grid: { + x: 40, + y: 30, + x2: 30, + y2: 28, + borderWidth: 0 + }, + legend: { + // 显示图例 + show: true, + // 图例的位置 + data: ['实测', '累计'] + }, + calculable: true, + xAxis: [ + { + type: 'category', + data: echartData.time, + splitLine: { + show: false + }, + axisLabel: { + color: '#333', + fontSize: 12, + format:"jcDataFormat" + }, + axisLine: { + lineStyle: { + color: '#07a6ff', + width: 0.5, + } + }, + axisTick: { + show: false, + }, + } + ], + yAxis: [ + { + type: 'value', + position: 'left', + name:"雨量mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: xMaxVal + }, + { + type: 'value', + position: 'right', + name:"累计mm", + splitLine: { + show: true, + lineStyle: { + color: '#07a6ff', + width: 0.25, + type: 'dashed' + } + }, + axisLabel: { + color: '#333', + fontSize: 12, + }, + axisLine: { + show: false + }, + axisTick: { + show: false, + }, + min: 0, + max: yMaxVal + } + ], + }; + let chartData = { + series: [ + { + name: '实测', + type: 'bar', + barWidth: '60%', + data: echartData.actual, + itemStyle: { + normal: { + barBorderRadius: [3, 3, 0, 0], + color: new echarts.graphic.LinearGradient( + 0, 0, 0, 1, + [ + { offset: 0, color: '#3876cd' }, + { offset: 0.5, color: '#45b4e7' }, + { offset: 1, color: '#54ffff' } + ] + ), + }, + }, + label: { + show: false, + }, + markPoint: { + data: [ + { type: 'max', name: '最大值', symbol: 'circle', symbolSize: 1, symbolOffset: [0, -12] }, + ] + }, + }, + { + yAxisIndex: 1, + name: '累计', + type: 'line', + showSymbol: false, + label: { + show: false, + }, + data: echartData.total, + lineStyle: { + normal: { + width: 1, + } + }, + areaStyle: { + normal: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ + offset: 0, + color: 'rgba(3, 194, 236, 0.3)' + }, { + offset: 0.8, + color: 'rgba(3, 194, 236, 0)' + } + ], false), + shadowColor: 'rgba(0, 0, 0, 0.1)', + shadowBlur: 10 + } + }, + itemStyle: { + normal: { + color: '#03C2EC' + } + }, + } + ] + }; + return { + eopts, + chartData + } +} \ No newline at end of file diff --git a/pages/ylzList/detail/jcTable.vue b/pages/ylzList/detail/jcTable.vue new file mode 100644 index 0000000..6687c1b --- /dev/null +++ b/pages/ylzList/detail/jcTable.vue @@ -0,0 +1,89 @@ + + + + + \ No newline at end of file diff --git a/pages/ylzList/detail/tjsjTable.vue b/pages/ylzList/detail/tjsjTable.vue new file mode 100644 index 0000000..527de70 --- /dev/null +++ b/pages/ylzList/detail/tjsjTable.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/pages/ylzList/index.vue b/pages/ylzList/index.vue new file mode 100644 index 0000000..3088436 --- /dev/null +++ b/pages/ylzList/index.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/static/c1.png b/static/c1.png new file mode 100644 index 0000000..9d38fdc Binary files /dev/null and b/static/c1.png differ diff --git a/static/c2.png b/static/c2.png new file mode 100644 index 0000000..ce956d7 Binary files /dev/null and b/static/c2.png differ diff --git a/static/c3.png b/static/c3.png new file mode 100644 index 0000000..216202a Binary files /dev/null and b/static/c3.png differ diff --git a/static/c4.png b/static/c4.png new file mode 100644 index 0000000..fb8b477 Binary files /dev/null and b/static/c4.png differ diff --git a/static/c5.png b/static/c5.png new file mode 100644 index 0000000..310bfb1 Binary files /dev/null and b/static/c5.png differ diff --git a/static/c6.png b/static/c6.png new file mode 100644 index 0000000..c3c45d8 Binary files /dev/null and b/static/c6.png differ diff --git a/static/c7.png b/static/c7.png new file mode 100644 index 0000000..a1e7390 Binary files /dev/null and b/static/c7.png differ diff --git a/static/c8.png b/static/c8.png new file mode 100644 index 0000000..c32633c Binary files /dev/null and b/static/c8.png differ diff --git a/static/c9.png b/static/c9.png new file mode 100644 index 0000000..51bcf6a Binary files /dev/null and b/static/c9.png differ diff --git a/static/customicons.css b/static/customicons.css new file mode 100644 index 0000000..14ed5fa --- /dev/null +++ b/static/customicons.css @@ -0,0 +1,20 @@ +@font-face { + font-family: "customicons"; /* Project id 2878519 */ + src:url('/static/customicons.ttf') format('truetype'); +} + +.customicons { + font-family: "customicons" !important; +} + +.youxi:before { + content: "\e60e"; +} + +.wenjian:before { + content: "\e60f"; +} + +.zhuanfa:before { + content: "\e610"; +} diff --git a/static/customicons.ttf b/static/customicons.ttf new file mode 100644 index 0000000..a3c8ab9 Binary files /dev/null and b/static/customicons.ttf differ diff --git a/static/empty.png b/static/empty.png new file mode 100644 index 0000000..9acfed6 Binary files /dev/null and b/static/empty.png differ diff --git a/static/h5Player/h5player.min.js b/static/h5Player/h5player.min.js new file mode 100644 index 0000000..3675c9b --- /dev/null +++ b/static/h5Player/h5player.min.js @@ -0,0 +1,313 @@ +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n,i=t();for(n in i)("object"==typeof exports?exports:e)[n]=i[n]}}(window,function(){return n=[function(e,t,ls){!function(us){var ds;//! moment.js +//! version : 2.29.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +us.exports=function(){"use strict";var t,r;function l(){return t.apply(null,arguments)}function e(e){t=e}function s(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function o(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function u(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function d(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;else{var t;for(t in e)if(u(e,t))return false;return true}}function a(e){return e===void 0}function h(e){return typeof e==="number"||Object.prototype.toString.call(e)==="[object Number]"}function c(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function i(e,t){var n=[],i;for(i=0;i>>0,i;for(i=0;i0)for(n=0;n=0;return(a?n?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+i}var O=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,I=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,W={},H={};function j(e,t,n,i){var r=i;if(typeof i==="string")r=function(){return this[i]()};if(e)H[e]=r;if(t)H[t[0]]=function(){return x(r.apply(this,arguments),t[1],t[2])};if(n)H[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)}}function F(e){if(e.match(/\[[\s\S]/))return e.replace(/^\[|\]$/g,"");return e.replace(/\\/g,"")}function B(i){var r=i.match(O),e,a;for(e=0,a=r.length;e=0&&I.test(e)){e=e.replace(I,i);I.lastIndex=0;n-=1}return e}var z={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function V(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];if(t||!n)return t;this._longDateFormat[e]=n.match(O).map(function(e){if(e==="MMMM"||e==="MM"||e==="DD"||e==="dddd")return e.slice(1);return e}).join("");return this._longDateFormat[e]}var G="Invalid date";function J(){return this._invalidDate}var q="%d",K=/\d{1,2}/;function X(e){return this._ordinal.replace("%d",e)}var Z={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function $(e,t,n,i){var r=this._relativeTime[n];return E(r)?r(e,t,n,i):r.replace(/%d/i,e)}function Q(e,t){var n=this._relativeTime[e>0?"future":"past"];return E(n)?n(t):n.replace(/%s/i,t)}var ee={};function te(e,t){var n=e.toLowerCase();ee[n]=ee[n+"s"]=ee[t]=e}function ne(e){return typeof e==="string"?ee[e]||ee[e.toLowerCase()]:undefined}function ie(e){var t={},n,i;for(i in e)if(u(e,i)){n=ne(i);if(n)t[n]=e[i]}return t}var re={};function ae(e,t){re[e]=t}function se(e){var t=[],n;for(n in e)if(u(e,n))t.push({unit:n,priority:re[n]});t.sort(function(e,t){return e.priority-t.priority});return t}function oe(e){return e%4===0&&e%100!==0||e%400===0}function ue(e){if(e<0)return Math.ceil(e)||0;else return Math.floor(e)}function de(e){var t=+e,n=0;if(t!==0&&isFinite(t))n=ue(t);return n}function le(t,n){return function(e){if(e!=null){ce(this,t,e);l.updateOffset(this,n);return this}else return he(this,t)}}function he(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function ce(e,t,n){if(e.isValid()&&!isNaN(n))if(t==="FullYear"&&oe(e.year())&&e.month()===1&&e.date()===29){n=de(n);e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),$e(n,e.month()))}else e._d["set"+(e._isUTC?"UTC":"")+t](n)}function _e(e){e=ne(e);if(E(this[e]))return this[e]();return this}function fe(e,t){if(typeof e==="object"){e=ie(e);var n=se(e),i;for(i=0;i68?1900:2e3)};var mt=le("FullYear",true);function pt(){return oe(this.year())}function yt(e,t,n,i,r,a,s){var o;if(e<100&&e>=0){o=new Date(e+400,t,n,i,r,a,s);if(isFinite(o.getFullYear()))o.setFullYear(e)}else o=new Date(e,t,n,i,r,a,s);return o}function vt(e){var t,n;if(e<100&&e>=0){n=Array.prototype.slice.call(arguments);n[0]=e+400;t=new Date(Date.UTC.apply(null,n));if(isFinite(t.getUTCFullYear()))t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function gt(e,t,n){var i=7+t-n,r=(7+vt(e,0,i).getUTCDay()-t)%7;return-r+i-1}function Mt(e,t,n,i,r){var a=(7+n-i)%7,s=gt(e,i,r),o=1+7*(t-1)+a+s,u,d;if(o<=0){u=e-1;d=ft(u)+o}else if(o>ft(e)){u=e+1;d=o-ft(e)}else{u=e;d=o}return{year:u,dayOfYear:d}}function Lt(e,t,n){var i=gt(e.year(),t,n),r=Math.floor((e.dayOfYear()-i-1)/7)+1,a,s;if(r<1){s=e.year()-1;a=r+St(s,t,n)}else if(r>St(e.year(),t,n)){a=r-St(e.year(),t,n);s=e.year()+1}else{s=e.year();a=r}return{week:a,year:s}}function St(e,t,n){var i=gt(e,t,n),r=gt(e+1,t,n);return(ft(e)-i+r)/7}function kt(e){return Lt(e,this._week.dow,this._week.doy).week}j("w",["ww",2],"wo","week"),j("W",["WW",2],"Wo","isoWeek"),te("week","w"),te("isoWeek","W"),ae("week",5),ae("isoWeek",5),Ae("w",Me),Ae("ww",Me,pe),Ae("W",Me),Ae("WW",Me,pe),je(["w","ww","W","WW"],function(e,t,n,i){t[i.substr(0,1)]=de(e)});var bt={dow:0,doy:6};function wt(){return this._week.dow}function Dt(){return this._week.doy}function Tt(e){var t=this.localeData().week(this);return e==null?t:this.add((e-t)*7,"d")}function Et(e){var t=Lt(this,1,4).week;return e==null?t:this.add((e-t)*7,"d")}function Yt(e,t){if(typeof e!=="string")return e;if(!isNaN(e))return parseInt(e,10);e=t.weekdaysParse(e);if(typeof e==="number")return e;return null}function Pt(e,t){if(typeof e==="string")return t.weekdaysParse(e)%7||7;return isNaN(e)?null:e}function Ct(e,t){return e.slice(t,7).concat(e.slice(0,t))}j("d",0,"do","day"),j("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),j("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),j("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),j("e",0,0,"weekday"),j("E",0,0,"isoWeekday"),te("day","d"),te("weekday","e"),te("isoWeekday","E"),ae("day",11),ae("weekday",11),ae("isoWeekday",11),Ae("d",Me),Ae("e",Me),Ae("E",Me),Ae("dd",function(e,t){return t.weekdaysMinRegex(e)}),Ae("ddd",function(e,t){return t.weekdaysShortRegex(e)}),Ae("dddd",function(e,t){return t.weekdaysRegex(e)}),je(["dd","ddd","dddd"],function(e,t,n,i){var r=n._locale.weekdaysParse(e,i,n._strict);if(r!=null)t.d=r;else m(n).invalidWeekday=e}),je(["d","e","E"],function(e,t,n,i){t[i]=de(e)});var Rt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),At="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ot=Ce,It=Ce,Wt=Ce;function Ht(e,t){var n=s(this._weekdays)?this._weekdays:this._weekdays[e&&e!==true&&this._weekdays.isFormat.test(t)?"format":"standalone"];return e===true?Ct(n,this._week.dow):e?n[e.day()]:n}function jt(e){return e===true?Ct(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ft(e){return e===true?Ct(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Bt(e,t,n){var i,r,a,s=e.toLocaleLowerCase();if(!this._weekdaysParse){this._weekdaysParse=[];this._shortWeekdaysParse=[];this._minWeekdaysParse=[];for(i=0;i<7;++i){a=f([2e3,1]).day(i);this._minWeekdaysParse[i]=this.weekdaysMin(a,"").toLocaleLowerCase();this._shortWeekdaysParse[i]=this.weekdaysShort(a,"").toLocaleLowerCase();this._weekdaysParse[i]=this.weekdays(a,"").toLocaleLowerCase()}}if(n)if(t==="dddd"){r=Xe.call(this._weekdaysParse,s);return r!==-1?r:null}else if(t==="ddd"){r=Xe.call(this._shortWeekdaysParse,s);return r!==-1?r:null}else{r=Xe.call(this._minWeekdaysParse,s);return r!==-1?r:null}else if(t==="dddd"){r=Xe.call(this._weekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._shortWeekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._minWeekdaysParse,s);return r!==-1?r:null}else if(t==="ddd"){r=Xe.call(this._shortWeekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._weekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._minWeekdaysParse,s);return r!==-1?r:null}else{r=Xe.call(this._minWeekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._weekdaysParse,s);if(r!==-1)return r;r=Xe.call(this._shortWeekdaysParse,s);return r!==-1?r:null}}function Ut(e,t,n){var i,r,a;if(this._weekdaysParseExact)return Bt.call(this,e,t,n);if(!this._weekdaysParse){this._weekdaysParse=[];this._minWeekdaysParse=[];this._shortWeekdaysParse=[];this._fullWeekdaysParse=[]}for(i=0;i<7;i++){r=f([2e3,1]).day(i);if(n&&!this._fullWeekdaysParse[i]){this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i");this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i");this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")}if(!this._weekdaysParse[i]){a="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,"");this._weekdaysParse[i]=new RegExp(a.replace(".",""),"i")}if(n&&t==="dddd"&&this._fullWeekdaysParse[i].test(e))return i;else if(n&&t==="ddd"&&this._shortWeekdaysParse[i].test(e))return i;else if(n&&t==="dd"&&this._minWeekdaysParse[i].test(e))return i;else if(!n&&this._weekdaysParse[i].test(e))return i}}function Nt(e){if(!this.isValid())return e!=null?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();if(e!=null){e=Yt(e,this.localeData());return this.add(e-t,"d")}else return t}function zt(e){if(!this.isValid())return e!=null?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return e==null?t:this.add(e-t,"d")}function Vt(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var t=Pt(e,this.localeData());return this.day(this.day()%7?t:t-7)}else return this.day()||7}function Gt(e){if(this._weekdaysParseExact){if(!u(this,"_weekdaysRegex"))Kt.call(this);if(e)return this._weekdaysStrictRegex;else return this._weekdaysRegex}else{if(!u(this,"_weekdaysRegex"))this._weekdaysRegex=Ot;return this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex}}function Jt(e){if(this._weekdaysParseExact){if(!u(this,"_weekdaysRegex"))Kt.call(this);if(e)return this._weekdaysShortStrictRegex;else return this._weekdaysShortRegex}else{if(!u(this,"_weekdaysShortRegex"))this._weekdaysShortRegex=It;return this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex}}function qt(e){if(this._weekdaysParseExact){if(!u(this,"_weekdaysRegex"))Kt.call(this);if(e)return this._weekdaysMinStrictRegex;else return this._weekdaysMinRegex}else{if(!u(this,"_weekdaysMinRegex"))this._weekdaysMinRegex=Wt;return this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex}}function Kt(){function e(e,t){return t.length-e.length}var t=[],n=[],i=[],r=[],a,s,o,u,d;for(a=0;a<7;a++){s=f([2e3,1]).day(a);o=Ie(this.weekdaysMin(s,""));u=Ie(this.weekdaysShort(s,""));d=Ie(this.weekdays(s,""));t.push(o);n.push(u);i.push(d);r.push(o);r.push(u);r.push(d)}t.sort(e);n.sort(e);i.sort(e);r.sort(e);this._weekdaysRegex=new RegExp("^("+r.join("|")+")","i");this._weekdaysShortRegex=this._weekdaysRegex;this._weekdaysMinRegex=this._weekdaysRegex;this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i");this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i");this._weekdaysMinStrictRegex=new RegExp("^("+t.join("|")+")","i")}function Xt(){return this.hours()%12||12}function Zt(){return this.hours()||24}function $t(e,t){j(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Qt(e,t){return t._meridiemParse}function en(e){return(e+"").toLowerCase().charAt(0)==="p"}j("H",["HH",2],0,"hour"),j("h",["hh",2],0,Xt),j("k",["kk",2],0,Zt),j("hmm",0,0,function(){return""+Xt.apply(this)+x(this.minutes(),2)}),j("hmmss",0,0,function(){return""+Xt.apply(this)+x(this.minutes(),2)+x(this.seconds(),2)}),j("Hmm",0,0,function(){return""+this.hours()+x(this.minutes(),2)}),j("Hmmss",0,0,function(){return""+this.hours()+x(this.minutes(),2)+x(this.seconds(),2)}),$t("a",true),$t("A",false),te("hour","h"),ae("hour",13),Ae("a",Qt),Ae("A",Qt),Ae("H",Me),Ae("h",Me),Ae("k",Me),Ae("HH",Me,pe),Ae("hh",Me,pe),Ae("kk",Me,pe),Ae("hmm",Le),Ae("hmmss",Se),Ae("Hmm",Le),Ae("Hmmss",Se),He(["H","HH"],ze),He(["k","kk"],function(e,t,n){var i=de(e);t[ze]=i===24?0:i}),He(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e);n._meridiem=e}),He(["h","hh"],function(e,t,n){t[ze]=de(e);m(n).bigHour=true}),He("hmm",function(e,t,n){var i=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i));m(n).bigHour=true}),He("hmmss",function(e,t,n){var i=e.length-4,r=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i,2));t[Ge]=de(e.substr(r));m(n).bigHour=true}),He("Hmm",function(e,t,n){var i=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i))}),He("Hmmss",function(e,t,n){var i=e.length-4,r=e.length-2;t[ze]=de(e.substr(0,i));t[Ve]=de(e.substr(i,2));t[Ge]=de(e.substr(r))});var tn,nn=le("Hours",true);function rn(e,t,n){if(e>11)return n?"pm":"PM";else return n?"am":"AM"}var an={calendar:R,longDateFormat:z,invalidDate:G,ordinal:q,dayOfMonthOrdinalParse:K,relativeTime:Z,months:Qe,monthsShort:et,week:bt,weekdays:Rt,weekdaysMin:xt,weekdaysShort:At,meridiemParse:/[ap]\.?m?\.?/i},sn={},on={},un;function dn(e,t){var n,i=Math.min(e.length,t.length);for(n=0;n0){r=cn(a.slice(0,n).join("-"));if(r)return r;if(i&&i.length>=n&&dn(a,i)>=n-1)break;n--}t++}return un}function cn(t){var e=null,n;if(sn[t]===undefined&&typeof us!=="undefined"&&us&&us.exports)try{e=un._abbr;n=ds;ls(285)("./"+t);_n(e)}catch(e){sn[t]=null}return sn[t]}function _n(e,t){var n;if(e){if(a(t))n=pn(e);else n=fn(e,t);if(n)un=n;else if(typeof console!=="undefined"&&console.warn)console.warn("Locale "+e+" not found. Did you forget to load it?")}return un._abbr}function fn(e,t){if(t!==null){var n,i=an;t.abbr=e;if(sn[e]!=null){T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change "+"an existing locale. moment.defineLocale(localeName, "+"config) should only be used for creating a new locale "+"See http://momentjs.com/guides/#/warnings/define-locale/ for more info.");i=sn[e]._config}else if(t.parentLocale!=null)if(sn[t.parentLocale]!=null)i=sn[t.parentLocale]._config;else{n=cn(t.parentLocale);if(n!=null)i=n._config;else{if(!on[t.parentLocale])on[t.parentLocale]=[];on[t.parentLocale].push({name:e,config:t});return null}}sn[e]=new C(P(i,t));if(on[e])on[e].forEach(function(e){fn(e.name,e.config)});_n(e);return sn[e]}else{delete sn[e];return null}}function mn(e,t){if(t!=null){var n,i,r=an;if(sn[e]!=null&&sn[e].parentLocale!=null)sn[e].set(P(sn[e]._config,t));else{i=cn(e);if(i!=null)r=i._config;t=P(r,t);if(i==null)t.abbr=e;n=new C(t);n.parentLocale=sn[e];sn[e]=n}_n(e)}else if(sn[e]!=null)if(sn[e].parentLocale!=null){sn[e]=sn[e].parentLocale;if(e===_n())_n(e)}else if(sn[e]!=null)delete sn[e];return sn[e]}function pn(e){var t;if(e&&e._locale&&e._locale._abbr)e=e._locale._abbr;if(!e)return un;if(!s(e)){t=cn(e);if(t)return t;e=[e]}return hn(e)}function yn(){return D(sn)}function vn(e){var t,n=e._a;if(n&&m(e).overflow===-2){t=n[Ue]<0||n[Ue]>11?Ue:n[Ne]<1||n[Ne]>$e(n[Be],n[Ue])?Ne:n[ze]<0||n[ze]>24||n[ze]===24&&(n[Ve]!==0||n[Ge]!==0||n[Je]!==0)?ze:n[Ve]<0||n[Ve]>59?Ve:n[Ge]<0||n[Ge]>59?Ge:n[Je]<0||n[Je]>999?Je:-1;if(m(e)._overflowDayOfYear&&(tNe))t=Ne;if(m(e)._overflowWeeks&&t===-1)t=qe;if(m(e)._overflowWeekday&&t===-1)t=Ke;m(e).overflow=t}return e}var gn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Mn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Ln=/Z|[+-]\d\d(?::?\d\d)?/,Sn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,false],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,false],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,false],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,false],["YYYY",/\d{4}/,false]],kn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bn=/^\/?Date\((-?\d+)/i,wn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Dn={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function Tn(e){var t,n,i=e._i,r=gn.exec(i)||Mn.exec(i),a,s,o,u;if(r){m(e).iso=true;for(t=0,n=Sn.length;tft(s)||e._dayOfYear===0)m(e)._overflowDayOfYear=true;n=vt(s,0,e._dayOfYear);e._a[Ue]=n.getUTCMonth();e._a[Ne]=n.getUTCDate()}for(t=0;t<3&&e._a[t]==null;++t)e._a[t]=i[t]=r[t];for(;t<7;t++)e._a[t]=i[t]=e._a[t]==null?t===2?1:0:e._a[t];if(e._a[ze]===24&&e._a[Ve]===0&&e._a[Ge]===0&&e._a[Je]===0){e._nextDay=true;e._a[ze]=0}e._d=(e._useUTC?vt:yt).apply(null,i);a=e._useUTC?e._d.getUTCDay():e._d.getDay();if(e._tzm!=null)e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm);if(e._nextDay)e._a[ze]=24;if(e._w&&typeof e._w.d!=="undefined"&&e._w.d!==a)m(e).weekdayMismatch=true}function Hn(e){var t,n,i,r,a,s,o,u,d;t=e._w;if(t.GG!=null||t.W!=null||t.E!=null){a=1;s=4;n=On(t.GG,e._a[Be],Lt(Jn(),1,4).year);i=On(t.W,1);r=On(t.E,1);if(r<1||r>7)u=true}else{a=e._locale._week.dow;s=e._locale._week.doy;d=Lt(Jn(),a,s);n=On(t.gg,e._a[Be],d.year);i=On(t.w,d.week);if(t.d!=null){r=t.d;if(r<0||r>6)u=true}else if(t.e!=null){r=t.e+a;if(t.e<0||t.e>6)u=true}else r=a}if(i<1||i>St(n,a,s))m(e)._overflowWeeks=true;else if(u!=null)m(e)._overflowWeekday=true;else{o=Mt(n,i,r,a,s);e._a[Be]=o.year;e._dayOfYear=o.dayOfYear}}function jn(e){if(e._f===l.ISO_8601){Tn(e);return}if(e._f===l.RFC_2822){An(e);return}e._a=[];m(e).empty=true;var t=""+e._i,n,i,r,a,s,o=t.length,u=0,d;r=N(e._f,e._locale).match(O)||[];for(n=0;n0)m(e).unusedInput.push(s);t=t.slice(t.indexOf(i)+i.length);u+=i.length}if(H[a]){if(i)m(e).empty=false;else m(e).unusedTokens.push(a);Fe(a,i,e)}else if(e._strict&&!i)m(e).unusedTokens.push(a)}m(e).charsLeftOver=o-u;if(t.length>0)m(e).unusedInput.push(t);if(e._a[ze]<=12&&m(e).bigHour===true&&e._a[ze]>0)m(e).bigHour=undefined;m(e).parsedDateParts=e._a.slice(0);m(e).meridiem=e._meridiem;e._a[ze]=Fn(e._locale,e._a[ze],e._meridiem);d=m(e).era;if(d!==null)e._a[Be]=e._locale.erasConvertYear(d,e._a[Be]);Wn(e);vn(e)}function Fn(e,t,n){var i;if(n==null)return t;if(e.meridiemHour!=null)return e.meridiemHour(t,n);else if(e.isPM!=null){i=e.isPM(n);if(i&&t<12)t+=12;if(!i&&t===12)t=0;return t}else return t}function Bn(e){var t,n,i,r,a,s,o=false;if(e._f.length===0){m(e).invalidFormat=true;e._d=new Date(NaN);return}for(r=0;rthis?this:e;else return y()});function Xn(e,t){var n,i;if(t.length===1&&s(t[0]))t=t[0];if(!t.length)return Jn();n=t[0];for(i=1;ithis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Mi(){if(!a(this._isDSTShifted))return this._isDSTShifted;var e={},t;M(e,this);e=zn(e);if(e._a){t=e._isUTC?f(e._a):Jn(e._a);this._isDSTShifted=this.isValid()&&oi(e._a,t.toArray())>0}else this._isDSTShifted=false;return this._isDSTShifted}function Li(){return this.isValid()?!this._isUTC:false}function Si(){return this.isValid()?this._isUTC:false}function ki(){return this.isValid()?this._isUTC&&this._offset===0:false}l.updateOffset=function(){};var bi=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,wi=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Di(e,t){var n=e,i=null,r,a,s;if(ai(e))n={ms:e._milliseconds,d:e._days,M:e._months};else if(h(e)||!isNaN(+e)){n={};if(t)n[t]=+e;else n.milliseconds=+e}else if(i=bi.exec(e)){r=i[1]==="-"?-1:1;n={y:0,d:de(i[Ne])*r,h:de(i[ze])*r,m:de(i[Ve])*r,s:de(i[Ge])*r,ms:de(si(i[Je]*1e3))*r}}else if(i=wi.exec(e)){r=i[1]==="-"?-1:1;n={y:Ti(i[2],r),M:Ti(i[3],r),w:Ti(i[4],r),d:Ti(i[5],r),h:Ti(i[6],r),m:Ti(i[7],r),s:Ti(i[8],r)}}else if(n==null)n={};else if(typeof n==="object"&&("from"in n||"to"in n)){s=Yi(Jn(n.from),Jn(n.to));n={};n.ms=s.milliseconds;n.M=s.months}a=new ri(n);if(ai(e)&&u(e,"_locale"))a._locale=e._locale;if(ai(e)&&u(e,"_isValid"))a._isValid=e._isValid;return a}function Ti(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Ei(e,t){var n={};n.months=t.month()-e.month()+(t.year()-e.year())*12;if(e.clone().add(n.months,"M").isAfter(t))--n.months;n.milliseconds=+t-+e.clone().add(n.months,"M");return n}function Yi(e,t){var n;if(!(e.isValid()&&t.isValid()))return{milliseconds:0,months:0};t=hi(t,e);if(e.isBefore(t))n=Ei(e,t);else{n=Ei(t,e);n.milliseconds=-n.milliseconds;n.months=-n.months}return n}function Pi(r,a){return function(e,t){var n,i;if(t!==null&&!isNaN(+t)){T(a,"moment()."+a+"(period, number) is deprecated. Please use moment()."+a+"(number, period). "+"See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.");i=e;e=t;t=i}n=Di(e,t);Ci(this,n,r);return this}}function Ci(e,t,n,i){var r=t._milliseconds,a=si(t._days),s=si(t._months);if(!e.isValid())return;i=i==null?true:i;if(s)ut(e,he(e,"Month")+s*n);if(a)ce(e,"Date",he(e,"Date")+a*n);if(r)e._d.setTime(e._d.valueOf()+r*n);if(i)l.updateOffset(e,a||s)}Di.fn=ri.prototype,Di.invalid=ii;var Ri=Pi(1,"add"),Ai=Pi(-1,"subtract");function xi(e){return typeof e==="string"||e instanceof String}function Oi(e){return S(e)||c(e)||xi(e)||h(e)||Wi(e)||Ii(e)||e===null||e===undefined}function Ii(e){var t=o(e)&&!d(e),n=false,i=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],r,a;for(r=0;rn.valueOf();else return n.valueOf()9999)return U(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ");if(E(Date.prototype.toISOString))if(t)return this.toDate().toISOString();else return new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",U(n,"Z"));return U(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function $i(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="",n,i,r,a;if(!this.isLocal()){e=this.utcOffset()===0?"moment.utc":"moment.parseZone";t="Z"}n="["+e+'("]';i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";r="-MM-DD[T]HH:mm:ss.SSS";a=t+'[")]';return this.format(n+i+r+a)}function Qi(e){if(!e)e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat;var t=U(this,e);return this.localeData().postformat(t)}function er(e,t){if(this.isValid()&&(S(e)&&e.isValid()||Jn(e).isValid()))return Di({to:this,from:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function tr(e){return this.from(Jn(),e)}function nr(e,t){if(this.isValid()&&(S(e)&&e.isValid()||Jn(e).isValid()))return Di({from:this,to:e}).locale(this.locale()).humanize(!t);else return this.localeData().invalidDate()}function ir(e){return this.to(Jn(),e)}function rr(e){var t;if(e===undefined)return this._locale._abbr;else{t=pn(e);if(t!=null)this._locale=t;return this}}l.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",l.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ar=b("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){if(e===undefined)return this.localeData();else return this.locale(e)});function sr(){return this._locale}var or=1e3,ur=60*or,dr=60*ur,lr=(365*400+97)*24*dr;function hr(e,t){return(e%t+t)%t}function cr(e,t,n){if(e<100&&e>=0)return new Date(e+400,t,n)-lr;else return new Date(e,t,n).valueOf()}function _r(e,t,n){if(e<100&&e>=0)return Date.UTC(e+400,t,n)-lr;else return Date.UTC(e,t,n)}function fr(e){var t,n;e=ne(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?_r:cr;switch(e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf();t-=hr(t+(this._isUTC?0:this.utcOffset()*ur),dr);break;case"minute":t=this._d.valueOf();t-=hr(t,ur);break;case"second":t=this._d.valueOf();t-=hr(t,or);break}this._d.setTime(t);l.updateOffset(this,true);return this}function mr(e){var t,n;e=ne(e);if(e===undefined||e==="millisecond"||!this.isValid())return this;n=this._isUTC?_r:cr;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf();t+=dr-hr(t+(this._isUTC?0:this.utcOffset()*ur),dr)-1;break;case"minute":t=this._d.valueOf();t+=ur-hr(t,ur)-1;break;case"second":t=this._d.valueOf();t+=or-hr(t,or)-1;break}this._d.setTime(t);l.updateOffset(this,true);return this}function pr(){return this._d.valueOf()-(this._offset||0)*6e4}function yr(){return Math.floor(this.valueOf()/1e3)}function vr(){return new Date(this.valueOf())}function gr(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function Mr(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function Lr(){return this.isValid()?this.toISOString():null}function Sr(){return p(this)}function kr(){return _({},m(this))}function br(){return m(this).overflow}function wr(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dr(e,t){var n,i,r,a=this._eras||pn("en")._eras;for(n=0,i=a.length;n=0)return a[i]}}function Er(e,t){var n=e.since<=e.until?+1:-1;if(t===undefined)return l(e.since).year();else return l(e.since).year()+(t-e.offset)*n}function Yr(){var e,t,n,i=this.localeData().eras();for(e=0,t=i.length;ea)t=a;return Kr.call(this,e,t,n,i,r)}}function Kr(e,t,n,i,r){var a=Mt(e,t,n,i,r),s=vt(a.year,0,a.dayOfYear);this.year(s.getUTCFullYear());this.month(s.getUTCMonth());this.date(s.getUTCDate());return this}function Xr(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}j("N",0,0,"eraAbbr"),j("NN",0,0,"eraAbbr"),j("NNN",0,0,"eraAbbr"),j("NNNN",0,0,"eraName"),j("NNNNN",0,0,"eraNarrow"),j("y",["y",1],"yo","eraYear"),j("y",["yy",2],0,"eraYear"),j("y",["yyy",3],0,"eraYear"),j("y",["yyyy",4],0,"eraYear"),Ae("N",Ir),Ae("NN",Ir),Ae("NNN",Ir),Ae("NNNN",Wr),Ae("NNNNN",Hr),He(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,i){var r=n._locale.erasParse(e,i,n._strict);if(r)m(n).era=r;else m(n).invalidEra=e}),Ae("y",De),Ae("yy",De),Ae("yyy",De),Ae("yyyy",De),Ae("yo",jr),He(["y","yy","yyy","yyyy"],Be),He(["yo"],function(e,t,n,i){var r;if(n._locale._eraYearOrdinalRegex)r=e.match(n._locale._eraYearOrdinalRegex);if(n._locale.eraYearOrdinalParse)t[Be]=n._locale.eraYearOrdinalParse(e,r);else t[Be]=parseInt(e,10)}),j(0,["gg",2],0,function(){return this.weekYear()%100}),j(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Br("gggg","weekYear"),Br("ggggg","weekYear"),Br("GGGG","isoWeekYear"),Br("GGGGG","isoWeekYear"),te("weekYear","gg"),te("isoWeekYear","GG"),ae("weekYear",1),ae("isoWeekYear",1),Ae("G",Te),Ae("g",Te),Ae("GG",Me,pe),Ae("gg",Me,pe),Ae("GGGG",be,ve),Ae("gggg",be,ve),Ae("GGGGG",we,ge),Ae("ggggg",we,ge),je(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,i){t[i.substr(0,2)]=de(e)}),je(["gg","GG"],function(e,t,n,i){t[i]=l.parseTwoDigitYear(e)}),j("Q",0,"Qo","quarter"),te("quarter","Q"),ae("quarter",7),Ae("Q",me),He("Q",function(e,t){t[Ue]=(de(e)-1)*3}),j("D",["DD",2],"Do","date"),te("date","D"),ae("date",9),Ae("D",Me),Ae("DD",Me,pe),Ae("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),He(["D","DD"],Ne),He("Do",function(e,t){t[Ne]=de(e.match(Me)[0])});var Zr=le("Date",true);function $r(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?t:this.add(e-t,"d")}j("DDD",["DDDD",3],"DDDo","dayOfYear"),te("dayOfYear","DDD"),ae("dayOfYear",4),Ae("DDD",ke),Ae("DDDD",ye),He(["DDD","DDDD"],function(e,t,n){n._dayOfYear=de(e)}),j("m",["mm",2],0,"minute"),te("minute","m"),ae("minute",14),Ae("m",Me),Ae("mm",Me,pe),He(["m","mm"],Ve);var Qr=le("Minutes",false);j("s",["ss",2],0,"second"),te("second","s"),ae("second",15),Ae("s",Me),Ae("ss",Me,pe),He(["s","ss"],Ge);var ea=le("Seconds",false),ta,na;for(j("S",0,0,function(){return~~(this.millisecond()/100)}),j(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),j(0,["SSS",3],0,"millisecond"),j(0,["SSSS",4],0,function(){return this.millisecond()*10}),j(0,["SSSSS",5],0,function(){return this.millisecond()*100}),j(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),j(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),j(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),j(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),te("millisecond","ms"),ae("millisecond",16),Ae("S",ke,me),Ae("SS",ke,pe),Ae("SSS",ke,ye),ta="SSSS";ta.length<=9;ta+="S")Ae(ta,De);function ia(e,t){t[Je]=de(("0."+e)*1e3)}for(ta="S";ta.length<=9;ta+="S")He(ta,ia);function ra(){return this._isUTC?"UTC":""}function aa(){return this._isUTC?"Coordinated Universal Time":""}na=le("Milliseconds",false),j("z",0,0,"zoneAbbr"),j("zz",0,0,"zoneName");var sa=L.prototype;if(sa.add=Ri,sa.calendar=Fi,sa.clone=Bi,sa.diff=qi,sa.endOf=mr,sa.format=Qi,sa.from=er,sa.fromNow=tr,sa.to=nr,sa.toNow=ir,sa.get=_e,sa.invalidAt=br,sa.isAfter=Ui,sa.isBefore=Ni,sa.isBetween=zi,sa.isSame=Vi,sa.isSameOrAfter=Gi,sa.isSameOrBefore=Ji,sa.isValid=Sr,sa.lang=ar,sa.locale=rr,sa.localeData=sr,sa.max=Kn,sa.min=qn,sa.parsingFlags=kr,sa.set=fe,sa.startOf=fr,sa.subtract=Ai,sa.toArray=gr,sa.toObject=Mr,sa.toDate=vr,sa.toISOString=Zi,sa.inspect=$i,typeof Symbol!=="undefined"&&Symbol.for!=null)sa[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"};function oa(e){return Jn(e*1e3)}function ua(){return Jn.apply(null,arguments).parseZone()}function da(e){return e}sa.toJSON=Lr,sa.toString=Xi,sa.unix=yr,sa.valueOf=pr,sa.creationData=wr,sa.eraName=Yr,sa.eraNarrow=Pr,sa.eraAbbr=Cr,sa.eraYear=Rr,sa.year=mt,sa.isLeapYear=pt,sa.weekYear=Ur,sa.isoWeekYear=Nr,sa.quarter=sa.quarters=Xr,sa.month=dt,sa.daysInMonth=lt,sa.week=sa.weeks=Tt,sa.isoWeek=sa.isoWeeks=Et,sa.weeksInYear=Gr,sa.weeksInWeekYear=Jr,sa.isoWeeksInYear=zr,sa.isoWeeksInISOWeekYear=Vr,sa.date=Zr,sa.day=sa.days=Nt,sa.weekday=zt,sa.isoWeekday=Vt,sa.dayOfYear=$r,sa.hour=sa.hours=nn,sa.minute=sa.minutes=Qr,sa.second=sa.seconds=ea,sa.millisecond=sa.milliseconds=na,sa.utcOffset=_i,sa.utc=mi,sa.local=pi,sa.parseZone=yi,sa.hasAlignedHourOffset=vi,sa.isDST=gi,sa.isLocal=Li,sa.isUtcOffset=Si,sa.isUtc=ki,sa.isUTC=ki,sa.zoneAbbr=ra,sa.zoneName=aa,sa.dates=b("dates accessor is deprecated. Use date instead.",Zr),sa.months=b("months accessor is deprecated. Use month instead",dt),sa.years=b("years accessor is deprecated. Use year instead",mt),sa.zone=b("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",fi),sa.isDSTShifted=b("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Mi);var la=C.prototype;function ha(e,t,n,i){var r=pn(),a=f().set(i,t);return r[n](a,e)}function ca(e,t,n){if(h(e)){t=e;e=undefined}e=e||"";if(t!=null)return ha(e,t,n,"month");var i,r=[];for(i=0;i<12;i++)r[i]=ha(e,i,n,"month");return r}function _a(e,t,n,i){if(typeof e==="boolean"){if(h(t)){n=t;t=undefined}t=t||""}else{t=e;n=t;e=false;if(h(t)){n=t;t=undefined}t=t||""}var r=pn(),a=e?r._week.dow:0,s,o=[];if(n!=null)return ha(t,(n+a)%7,i,"day");for(s=0;s<7;s++)o[s]=ha(t,(s+a)%7,i,"day");return o}function fa(e,t){return ca(e,t,"months")}function ma(e,t){return ca(e,t,"monthsShort")}function pa(e,t,n){return _a(e,t,n,"weekdays")}function ya(e,t,n){return _a(e,t,n,"weekdaysShort")}function va(e,t,n){return _a(e,t,n,"weekdaysMin")}la.calendar=A,la.longDateFormat=V,la.invalidDate=J,la.ordinal=X,la.preparse=da,la.postformat=da,la.relativeTime=$,la.pastFuture=Q,la.set=Y,la.eras=Dr,la.erasParse=Tr,la.erasConvertYear=Er,la.erasAbbrRegex=xr,la.erasNameRegex=Ar,la.erasNarrowRegex=Or,la.months=rt,la.monthsShort=at,la.monthsParse=ot,la.monthsRegex=ct,la.monthsShortRegex=ht,la.week=kt,la.firstDayOfYear=Dt,la.firstDayOfWeek=wt,la.weekdays=Ht,la.weekdaysMin=Ft,la.weekdaysShort=jt,la.weekdaysParse=Ut,la.weekdaysRegex=Gt,la.weekdaysShortRegex=Jt,la.weekdaysMinRegex=qt,la.isPM=en,la.meridiem=rn,_n("en",{eras:[{since:"0001-01-01",until:+Infinity,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-Infinity,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10,n=de(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th";return e+n}}),l.lang=b("moment.lang is deprecated. Use moment.locale instead.",_n),l.langData=b("moment.langData is deprecated. Use moment.localeData instead.",pn);var ga=Math.abs;function Ma(){var e=this._data;this._milliseconds=ga(this._milliseconds);this._days=ga(this._days);this._months=ga(this._months);e.milliseconds=ga(e.milliseconds);e.seconds=ga(e.seconds);e.minutes=ga(e.minutes);e.hours=ga(e.hours);e.months=ga(e.months);e.years=ga(e.years);return this}function La(e,t,n,i){var r=Di(t,n);e._milliseconds+=i*r._milliseconds;e._days+=i*r._days;e._months+=i*r._months;return e._bubble()}function Sa(e,t){return La(this,e,t,1)}function ka(e,t){return La(this,e,t,-1)}function ba(e){if(e<0)return Math.floor(e);else return Math.ceil(e)}function wa(){var e=this._milliseconds,t=this._days,n=this._months,i=this._data,r,a,s,o,u;if(!(e>=0&&t>=0&&n>=0||e<=0&&t<=0&&n<=0)){e+=ba(Ta(n)+t)*864e5;t=0;n=0}i.milliseconds=e%1e3;r=ue(e/1e3);i.seconds=r%60;a=ue(r/60);i.minutes=a%60;s=ue(a/60);i.hours=s%24;t+=ue(s/24);u=ue(Da(t));n+=u;t-=ba(Ta(u));o=ue(n/12);n%=12;i.days=t;i.months=n;i.years=o;return this}function Da(e){return e*4800/146097}function Ta(e){return e*146097/4800}function Ea(e){if(!this.isValid())return NaN;var t,n,i=this._milliseconds;e=ne(e);if(e==="month"||e==="quarter"||e==="year"){t=this._days+i/864e5;n=this._months+Da(t);switch(e){case"month":return n;case"quarter":return n/3;case"year":return n/12}}else{t=this._days+Math.round(Ta(this._months));switch(e){case"week":return t/7+i/6048e5;case"day":return t+i/864e5;case"hour":return t*24+i/36e5;case"minute":return t*1440+i/6e4;case"second":return t*86400+i/1e3;case"millisecond":return Math.floor(t*864e5)+i;default:throw new Error("Unknown unit "+e)}}}function Ya(){if(!this.isValid())return NaN;return this._milliseconds+this._days*864e5+this._months%12*2592e6+de(this._months/12)*31536e6}function Pa(e){return function(){return this.as(e)}}var Ca=Pa("ms"),Ra=Pa("s"),Aa=Pa("m"),xa=Pa("h"),Oa=Pa("d"),Ia=Pa("w"),Wa=Pa("M"),Ha=Pa("Q"),ja=Pa("y");function Fa(){return Di(this)}function Ba(e){e=ne(e);return this.isValid()?this[e+"s"]():NaN}function Ua(e){return function(){return this.isValid()?this._data[e]:NaN}}var Na=Ua("milliseconds"),za=Ua("seconds"),Va=Ua("minutes"),Ga=Ua("hours"),Ja=Ua("days"),qa=Ua("months"),Ka=Ua("years");function Xa(){return ue(this.days()/7)}var Za=Math.round,$a={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Qa(e,t,n,i,r){return r.relativeTime(t||1,!!n,e,i)}function es(e,t,n,i){var r=Di(e).abs(),a=Za(r.as("s")),s=Za(r.as("m")),o=Za(r.as("h")),u=Za(r.as("d")),d=Za(r.as("M")),l=Za(r.as("w")),h=Za(r.as("y")),c=a<=n.ss&&["s",a]||a0;c[4]=i;return Qa.apply(null,c)}function ts(e){if(e===undefined)return Za;if(typeof e==="function"){Za=e;return true}return false}function ns(e,t){if($a[e]===undefined)return false;if(t===undefined)return $a[e];$a[e]=t;if(e==="s")$a.ss=t-1;return true}function is(e,t){if(!this.isValid())return this.localeData().invalidDate();var n=false,i=$a,r,a;if(typeof e==="object"){t=e;e=false}if(typeof e==="boolean")n=e;if(typeof t==="object"){i=Object.assign({},$a,t);if(t.s!=null&&t.ss==null)i.ss=t.s-1}r=this.localeData();a=es(this,!n,i,r);if(n)a=r.pastFuture(+this,a);return r.postformat(a)}var rs=Math.abs;function as(e){return(e>0)-(e<0)||+e}function ss(){if(!this.isValid())return this.localeData().invalidDate();var e=rs(this._milliseconds)/1e3,t=rs(this._days),n=rs(this._months),i,r,a,s,o=this.asSeconds(),u,d,l,h;if(!o)return"P0D";i=ue(e/60);r=ue(i/60);e%=60;i%=60;a=ue(n/12);n%=12;s=e?e.toFixed(3).replace(/\.?0+$/,""):"";u=o<0?"-":"";d=as(this._months)!==as(o)?"-":"";l=as(this._days)!==as(o)?"-":"";h=as(this._milliseconds)!==as(o)?"-":"";return u+"P"+(a?d+a+"Y":"")+(n?d+n+"M":"")+(t?l+t+"D":"")+(r||i||e?"T":"")+(r?h+r+"H":"")+(i?h+i+"M":"")+(e?h+s+"S":"")}var os=ri.prototype;return os.isValid=ni,os.abs=Ma,os.add=Sa,os.subtract=ka,os.as=Ea,os.asMilliseconds=Ca,os.asSeconds=Ra,os.asMinutes=Aa,os.asHours=xa,os.asDays=Oa,os.asWeeks=Ia,os.asMonths=Wa,os.asQuarters=Ha,os.asYears=ja,os.valueOf=Ya,os._bubble=wa,os.clone=Fa,os.get=Ba,os.milliseconds=Na,os.seconds=za,os.minutes=Va,os.hours=Ga,os.days=Ja,os.weeks=Xa,os.months=qa,os.years=Ka,os.humanize=is,os.toISOString=ss,os.toString=ss,os.toJSON=ss,os.locale=rr,os.localeData=sr,os.toIsoString=b("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ss),os.lang=ar,j("X",0,0,"unix"),j("x",0,0,"valueOf"),Ae("x",Te),Ae("X",Pe),He("X",function(e,t,n){n._d=new Date(parseFloat(e)*1e3)}),He("x",function(e,t,n){n._d=new Date(de(e))}), +//! moment.js +l.version="2.29.1",e(Jn),l.fn=sa,l.min=Zn,l.max=$n,l.now=Qn,l.utc=f,l.unix=oa,l.months=fa,l.isDate=c,l.locale=_n,l.invalid=y,l.duration=Di,l.isMoment=S,l.weekdays=pa,l.parseZone=ua,l.localeData=pn,l.isDuration=ai,l.monthsShort=ma,l.weekdaysMin=va,l.defineLocale=fn,l.updateLocale=mn,l.locales=yn,l.weekdaysShort=ya,l.normalizeUnits=ne,l.relativeTimeRounding=ts,l.relativeTimeThreshold=ns,l.calendarFormat=ji,l.prototype=sa,l.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},l}()}.call(this,ls(284)(e))},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var i,r=n(92),a=(i=r)&&i.__esModule?i:{default:i};function s(e,t){for(var n=0;n ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","error",n),s.ENABLE_ERROR&&(console.error?console.error(n):console.warn?console.warn(n):console.log(n))}},{key:"i",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","info",n),s.ENABLE_INFO&&(console.info?console.info(n):console.log(n))}},{key:"w",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","warn",n),s.ENABLE_WARN&&(console.warn?console.warn(n):console.log(n))}},{key:"d",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","debug",n),s.ENABLE_DEBUG&&(console.debug?console.debug(n):console.log(n))}},{key:"v",value:function(e){e&&!s.FORCE_GLOBAL_TAG||(e=s.GLOBAL_TAG);for(var t=[].concat(Array.prototype.slice.call(arguments)),n="["+e+"] > ",i=1;i ";s.ENABLE_CALLBACK&&s.emitter.emit("log","verbose",n),s.ENABLE_VERBOSE&&console.log(n)}}]),r=s;function s(){(0,i.default)(this,s)}r.GLOBAL_TAG="flv.js",r.FORCE_GLOBAL_TAG=!1,r.ENABLE_ERROR=!0,r.ENABLE_INFO=!0,r.ENABLE_WARN=!0,r.ENABLE_DEBUG=!0,r.ENABLE_VERBOSE=!0,r.ENABLE_CALLBACK=!1,r.emitter=new n.default,t.default=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NotImplementedException=t.InvalidArgumentException=t.IllegalStateException=t.RuntimeException=void 0;var i=u(n(24)),r=u(n(25)),a=u(n(26)),s=u(n(1)),o=u(n(2));function u(e){return e&&e.__esModule?e:{default:e}}n=t.RuntimeException=((0,o.default)(d,[{key:"toString",value:function(){return this.name+": "+this.message}},{key:"name",get:function(){return"RuntimeException"}},{key:"message",get:function(){return this._message}}]),d);function d(e){(0,s.default)(this,d),this._message=e}t.IllegalStateException=((0,a.default)(l,n),(0,o.default)(l,[{key:"name",get:function(){return"IllegalStateException"}}]),l);function l(e){return(0,s.default)(this,l),(0,r.default)(this,(l.__proto__||(0,i.default)(l)).call(this,e))}t.InvalidArgumentException=((0,a.default)(h,n),(0,o.default)(h,[{key:"name",get:function(){return"InvalidArgumentException"}}]),h);function h(e){return(0,s.default)(this,h),(0,r.default)(this,(h.__proto__||(0,i.default)(h)).call(this,e))}t.NotImplementedException=((0,a.default)(c,n),(0,o.default)(c,[{key:"name",get:function(){return"NotImplementedException"}}]),c);function c(e){return(0,s.default)(this,c),(0,r.default)(this,(c.__proto__||(0,i.default)(c)).call(this,e))}},function(e,t,n){var i=n(53)("wks"),r=n(40),a=n(5).Symbol,s="function"==typeof a;(e.exports=function(e){return i[e]||(i[e]=s&&a[e]||(s?a:r)("Symbol."+e))}).store=i},function(e,t,n){var i=n(16),r=n(76),a=n(50),s=Object.defineProperty;t.f=n(11)?Object.defineProperty:function(e,t,n){if(i(e),t=a(t,!0),i(n),r)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(19)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";t.__esModule=!0;var i=s(n(273)),r=s(n(275)),a="function"==typeof r.default&&"symbol"==typeof i.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function s(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===a(i.default)?function(e){return void 0===e?"undefined":a(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":a(e)}},function(e,t,n){"use strict";var i="object"==typeof Reflect?Reflect:null,u=i&&"function"==typeof i.apply?i.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};var r=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)},a=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(o,u){return new Promise(function(e,t){function n(e){o.removeListener(u,i),t(e)}function i(){"function"==typeof o.removeListener&&o.removeListener("error",n),e([].slice.call(arguments))}var r,a,s;p(o,u,i,{once:!0}),"error"!==u&&(a=n,s={once:!0},"function"==typeof(r=o).on&&p(r,"error",a,s))})},(s.EventEmitter=s).prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var o=10;function d(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function h(e,t,n,i){var r,a;return d(n),void 0===(r=e._events)?(r=e._events=Object.create(null),e._eventsCount=0):(void 0!==r.newListener&&(e.emit("newListener",t,n.listener||n),r=e._events),a=r[t]),void 0===a?(a=r[t]=n,++e._eventsCount):("function"==typeof a?a=r[t]=i?[n,a]:[a,n]:i?a.unshift(n):a.push(n),0<(n=l(e))&&a.length>n&&!a.warned&&(a.warned=!0,(n=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit")).name="MaxListenersExceededWarning",n.emitter=e,n.type=t,n.count=a.length,n=n,console&&console.warn&&console.warn(n))),e}function c(e,t,n){e={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},t=function(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}.bind(e);return t.listener=n,e.wrapFn=t}function _(e,t,n){e=e._events;if(void 0===e)return[];t=e[t];return void 0===t?[]:"function"==typeof t?n?[t.listener||t]:[t]:n?function(e){for(var t=new Array(e.length),n=0;n=e.length?{value:void 0,done:!0}:(t=i(e,t),this._i+=t.length,{value:t,done:!1})})},function(e,t,n){function i(){}var r=n(16),a=n(248),s=n(54),o=n(52)("IE_PROTO"),u="prototype",d=function(){var e=n(49)("iframe"),t=s.length;for(e.style.display="none",n(79).appendChild(e),e.src="javascript:",(e=e.contentWindow.document).open(),e.write(" + + + +
+ + + \ No newline at end of file diff --git a/static/images/060.png b/static/images/060.png new file mode 100644 index 0000000..1fcda64 Binary files /dev/null and b/static/images/060.png differ diff --git a/static/images/090.png b/static/images/090.png new file mode 100644 index 0000000..16340de Binary files /dev/null and b/static/images/090.png differ diff --git a/static/images/bg_img.png b/static/images/bg_img.png new file mode 100644 index 0000000..9422fa5 Binary files /dev/null and b/static/images/bg_img.png differ diff --git a/static/images/dept.png b/static/images/dept.png new file mode 100644 index 0000000..18abebc Binary files /dev/null and b/static/images/dept.png differ diff --git a/static/images/deptItem.png b/static/images/deptItem.png new file mode 100644 index 0000000..70a80bc Binary files /dev/null and b/static/images/deptItem.png differ diff --git a/static/images/fd.png b/static/images/fd.png new file mode 100644 index 0000000..e4d51c0 Binary files /dev/null and b/static/images/fd.png differ diff --git a/static/images/filter.png b/static/images/filter.png new file mode 100644 index 0000000..77536d3 Binary files /dev/null and b/static/images/filter.png differ diff --git a/static/images/first.jpg b/static/images/first.jpg new file mode 100644 index 0000000..78bdf62 Binary files /dev/null and b/static/images/first.jpg differ diff --git a/static/images/follow.png b/static/images/follow.png new file mode 100644 index 0000000..ecbc23a Binary files /dev/null and b/static/images/follow.png differ diff --git a/static/images/home.png b/static/images/home.png new file mode 100644 index 0000000..021b1cd Binary files /dev/null and b/static/images/home.png differ diff --git a/static/images/home1.png b/static/images/home1.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/images/home1.png differ diff --git a/static/images/home2.png b/static/images/home2.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/images/home2.png differ diff --git a/static/images/icon.png b/static/images/icon.png new file mode 100644 index 0000000..50c5ab9 Binary files /dev/null and b/static/images/icon.png differ diff --git a/static/images/info.png b/static/images/info.png new file mode 100644 index 0000000..69e2537 Binary files /dev/null and b/static/images/info.png differ diff --git a/static/images/my.png b/static/images/my.png new file mode 100644 index 0000000..6f14af4 Binary files /dev/null and b/static/images/my.png differ diff --git a/static/images/my1.png b/static/images/my1.png new file mode 100644 index 0000000..dca8451 Binary files /dev/null and b/static/images/my1.png differ diff --git a/static/images/my2_icon@2x.png b/static/images/my2_icon@2x.png new file mode 100644 index 0000000..5a76d5c Binary files /dev/null and b/static/images/my2_icon@2x.png differ diff --git a/static/images/my2_icon@2x2.png b/static/images/my2_icon@2x2.png new file mode 100644 index 0000000..b953974 Binary files /dev/null and b/static/images/my2_icon@2x2.png differ diff --git a/static/images/password.png b/static/images/password.png new file mode 100644 index 0000000..a6a4eac Binary files /dev/null and b/static/images/password.png differ diff --git a/static/images/phone_icon@2x.png b/static/images/phone_icon@2x.png new file mode 100644 index 0000000..d4bf6f3 Binary files /dev/null and b/static/images/phone_icon@2x.png differ diff --git a/static/images/phone_icon@2x2.png b/static/images/phone_icon@2x2.png new file mode 100644 index 0000000..cbcdf53 Binary files /dev/null and b/static/images/phone_icon@2x2.png differ diff --git a/static/images/play.svg b/static/images/play.svg new file mode 100644 index 0000000..2422dc0 --- /dev/null +++ b/static/images/play.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/ruler.png b/static/images/ruler.png new file mode 100644 index 0000000..2cf88a1 Binary files /dev/null and b/static/images/ruler.png differ diff --git a/static/images/second.jpg b/static/images/second.jpg new file mode 100644 index 0000000..b7b9595 Binary files /dev/null and b/static/images/second.jpg differ diff --git a/static/images/sx.png b/static/images/sx.png new file mode 100644 index 0000000..f4a5630 Binary files /dev/null and b/static/images/sx.png differ diff --git a/static/images/u8.png b/static/images/u8.png new file mode 100644 index 0000000..3bf82a6 Binary files /dev/null and b/static/images/u8.png differ diff --git a/static/images/up.png b/static/images/up.png new file mode 100644 index 0000000..a852557 Binary files /dev/null and b/static/images/up.png differ diff --git a/static/images/upgrade.png b/static/images/upgrade.png new file mode 100644 index 0000000..243ea25 Binary files /dev/null and b/static/images/upgrade.png differ diff --git a/static/images/video.svg b/static/images/video.svg new file mode 100644 index 0000000..8420ec9 --- /dev/null +++ b/static/images/video.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/wtcl1.png b/static/images/wtcl1.png new file mode 100644 index 0000000..f8fc492 Binary files /dev/null and b/static/images/wtcl1.png differ diff --git a/static/images/wxyh1.png b/static/images/wxyh1.png new file mode 100644 index 0000000..cb9ea32 Binary files /dev/null and b/static/images/wxyh1.png differ diff --git a/static/images/xcrw1.png b/static/images/xcrw1.png new file mode 100644 index 0000000..1631480 Binary files /dev/null and b/static/images/xcrw1.png differ diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000..b5771e2 Binary files /dev/null and b/static/logo.png differ diff --git a/static/logo1.png b/static/logo1.png new file mode 100644 index 0000000..02334f0 Binary files /dev/null and b/static/logo1.png differ diff --git a/static/logoc.png b/static/logoc.png new file mode 100644 index 0000000..05d2b77 Binary files /dev/null and b/static/logoc.png differ diff --git a/static/tabs/add.png b/static/tabs/add.png new file mode 100644 index 0000000..3dc048a Binary files /dev/null and b/static/tabs/add.png differ diff --git a/static/tabs/aqjc.png b/static/tabs/aqjc.png new file mode 100644 index 0000000..6f9d57a Binary files /dev/null and b/static/tabs/aqjc.png differ diff --git a/static/tabs/bigImg.png b/static/tabs/bigImg.png new file mode 100644 index 0000000..abd2e84 Binary files /dev/null and b/static/tabs/bigImg.png differ diff --git a/static/tabs/chartcolumn@2x.png b/static/tabs/chartcolumn@2x.png new file mode 100644 index 0000000..ddb5621 Binary files /dev/null and b/static/tabs/chartcolumn@2x.png differ diff --git a/static/tabs/dw-icon.png b/static/tabs/dw-icon.png new file mode 100644 index 0000000..6833c3b Binary files /dev/null and b/static/tabs/dw-icon.png differ diff --git a/static/tabs/gongqing.png b/static/tabs/gongqing.png new file mode 100644 index 0000000..9b8ac60 Binary files /dev/null and b/static/tabs/gongqing.png differ diff --git a/static/tabs/gongqing2.png b/static/tabs/gongqing2.png new file mode 100644 index 0000000..7d2e62d Binary files /dev/null and b/static/tabs/gongqing2.png differ diff --git a/static/tabs/home.png b/static/tabs/home.png new file mode 100644 index 0000000..021b1cd Binary files /dev/null and b/static/tabs/home.png differ diff --git a/static/tabs/home1.png b/static/tabs/home1.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/tabs/home1.png differ diff --git a/static/tabs/home2.png b/static/tabs/home2.png new file mode 100644 index 0000000..538ae02 Binary files /dev/null and b/static/tabs/home2.png differ diff --git a/static/tabs/ld.png b/static/tabs/ld.png new file mode 100644 index 0000000..530a559 Binary files /dev/null and b/static/tabs/ld.png differ diff --git a/static/tabs/my2_icon@2x.png b/static/tabs/my2_icon@2x.png new file mode 100644 index 0000000..5a76d5c Binary files /dev/null and b/static/tabs/my2_icon@2x.png differ diff --git a/static/tabs/my2_icon@2x2.png b/static/tabs/my2_icon@2x2.png new file mode 100644 index 0000000..b953974 Binary files /dev/null and b/static/tabs/my2_icon@2x2.png differ diff --git a/static/tabs/noData1.png b/static/tabs/noData1.png new file mode 100644 index 0000000..418e9c5 Binary files /dev/null and b/static/tabs/noData1.png differ diff --git a/static/tabs/phone_icon@2x.png b/static/tabs/phone_icon@2x.png new file mode 100644 index 0000000..d4bf6f3 Binary files /dev/null and b/static/tabs/phone_icon@2x.png differ diff --git a/static/tabs/phone_icon@2x2.png b/static/tabs/phone_icon@2x2.png new file mode 100644 index 0000000..cbcdf53 Binary files /dev/null and b/static/tabs/phone_icon@2x2.png differ diff --git a/static/tabs/spjk.png b/static/tabs/spjk.png new file mode 100644 index 0000000..bb1c779 Binary files /dev/null and b/static/tabs/spjk.png differ diff --git a/static/tabs/stlljk.png b/static/tabs/stlljk.png new file mode 100644 index 0000000..cae6a1c Binary files /dev/null and b/static/tabs/stlljk.png differ diff --git a/static/tabs/touxiang.png b/static/tabs/touxiang.png new file mode 100644 index 0000000..088f260 Binary files /dev/null and b/static/tabs/touxiang.png differ diff --git a/static/tabs/water.png b/static/tabs/water.png new file mode 100644 index 0000000..1080a75 Binary files /dev/null and b/static/tabs/water.png differ diff --git a/static/tabs/water2.png b/static/tabs/water2.png new file mode 100644 index 0000000..982ffeb Binary files /dev/null and b/static/tabs/water2.png differ diff --git a/static/tabs/wtcl.png b/static/tabs/wtcl.png new file mode 100644 index 0000000..996874c Binary files /dev/null and b/static/tabs/wtcl.png differ diff --git a/static/tabs/wxyh.png b/static/tabs/wxyh.png new file mode 100644 index 0000000..2cd3ab5 Binary files /dev/null and b/static/tabs/wxyh.png differ diff --git a/static/tabs/xcrw.png b/static/tabs/xcrw.png new file mode 100644 index 0000000..1030c0c Binary files /dev/null and b/static/tabs/xcrw.png differ diff --git a/static/tabs/xingzhuang.png b/static/tabs/xingzhuang.png new file mode 100644 index 0000000..e4d785c Binary files /dev/null and b/static/tabs/xingzhuang.png differ diff --git a/static/tabs/xingzhuang2.png b/static/tabs/xingzhuang2.png new file mode 100644 index 0000000..677a369 Binary files /dev/null and b/static/tabs/xingzhuang2.png differ diff --git a/static/tabs/xinxi_icon@2x.png b/static/tabs/xinxi_icon@2x.png new file mode 100644 index 0000000..5700dcb Binary files /dev/null and b/static/tabs/xinxi_icon@2x.png differ diff --git a/static/tabs/xinxi_icon@2x2.png b/static/tabs/xinxi_icon@2x2.png new file mode 100644 index 0000000..7e4aed8 Binary files /dev/null and b/static/tabs/xinxi_icon@2x2.png differ diff --git a/static/tabs/yujing_icon@2x.png b/static/tabs/yujing_icon@2x.png new file mode 100644 index 0000000..84b1183 Binary files /dev/null and b/static/tabs/yujing_icon@2x.png differ diff --git a/static/tabs/yujing_icon@2x2.png b/static/tabs/yujing_icon@2x2.png new file mode 100644 index 0000000..24d73e5 Binary files /dev/null and b/static/tabs/yujing_icon@2x2.png differ diff --git a/static/uni.png b/static/uni.png new file mode 100644 index 0000000..8e3a80f Binary files /dev/null and b/static/uni.png differ diff --git a/subpkg/rainDetail/rainDetail.vue b/subpkg/rainDetail/rainDetail.vue new file mode 100644 index 0000000..2248022 --- /dev/null +++ b/subpkg/rainDetail/rainDetail.vue @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/template.html b/template.html new file mode 100644 index 0000000..b9298b7 --- /dev/null +++ b/template.html @@ -0,0 +1,28 @@ + + + + + + + <%= htmlWebpackPlugin.options.title %> + + + + + + + + + + + + +
+ + + diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..d4c7d1b --- /dev/null +++ b/uni.scss @@ -0,0 +1,3 @@ +@import '@/uni_modules/uview-ui/theme.scss'; +@import '@/uni_modules/uni-scss/variables.scss'; +/* uni.scss */ diff --git a/uni_modules/qiun-data-charts/changelog.md b/uni_modules/qiun-data-charts/changelog.md new file mode 100644 index 0000000..4d470a4 --- /dev/null +++ b/uni_modules/qiun-data-charts/changelog.md @@ -0,0 +1,320 @@ +## 2.5.0-20230101(2023-01-01) +- 秋云图表组件 修改条件编译顺序,确保uniapp的cli方式的项目依赖不完整时可以正常显示 +- 秋云图表组件 恢复props属性directory的使用,以修复vue3项目中,开启echarts后,echarts目录识别错误的bug +- uCharts.js 修复区域图、混合图只有一个数据时图表显示不正确的bug +- uCharts.js 修复折线图、区域图中时间轴类别图表tooltip指示点显示不正确的bug +- uCharts.js 修复x轴使用labelCount时,并且boundaryGap = 'justify' 并且关闭Y轴显示的时候,最后一个坐标值不显示的bug +- uCharts.js 修复折线图只有一组数据时 ios16 渲染颜色不正确的bug +- uCharts.js 修复玫瑰图半径显示不正确的bug +- uCharts.js 柱状图、山峰图增加正负图功能,y轴网格如果需要显示0轴则由 min max 及 splitNumber 确定,后续版本优化自动显示0轴 +- uCharts.js 柱状图column增加 opts.extra.column.labelPosition,数据标签位置,有效值为 outside外部, insideTop内顶部, center内中间, bottom内底部 +- uCharts.js 雷达图radar增加 opts.extra.radar.labelShow,否显示各项标识文案是,默认true +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.boxPadding,提示窗边框填充距离,默认3px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.fontSize,提示窗字体大小配置,默认13px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.lineHeight,提示窗文字行高,默认20px +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShow,是否显示左侧图例,默认true +- uCharts.js 提示窗tooltip增加 opts.extra.tooltip.legendShape,图例形状,图例标识样式,有效值为 auto自动跟随图例, diamond◆, circle●, triangle▲, square■, rect▬, line- +- uCharts.js 标记线markLine增加 opts.extra.markLine.labelFontSize,字体大小配置,默认13px +- uCharts.js 标记线markLine增加 opts.extra.markLine.labelPadding,标签边框内填充距离,默认6px +- uCharts.js 折线图line增加 opts.extra.line.linearType,渐变色类型,可选值 none关闭渐变色,custom 自定义渐变色。使用自定义渐变色时请赋值serie.linearColor作为颜色值 +- uCharts.js 折线图line增加 serie.linearColor,渐变色数组,格式为2维数组[起始位置,颜色值],例如[[0,'#0EE2F8'],[0.3,'#2BDCA8'],[0.6,'#1890FF'],[1,'#9A60B4']] +- uCharts.js 折线图line增加 opts.extra.line.onShadow,是否开启折线阴影,开启后请赋值serie.setShadow阴影设置 +- uCharts.js 折线图line增加 serie.setShadow,阴影配置,格式为4位数组:[offsetX,offsetY,blur,color] +- uCharts.js 折线图line增加 opts.extra.line.animation,动画效果方向,可选值为vertical 垂直动画效果,horizontal 水平动画效果 +- uCharts.js X轴xAxis增加 opts.xAxis.lineHeight,X轴字体行高,默认20px +- uCharts.js X轴xAxis增加 opts.xAxis.marginTop,X轴文字距离轴线的距离,默认0px +- uCharts.js X轴xAxis增加 opts.xAxis.title,当前X轴标题 +- uCharts.js X轴xAxis增加 opts.xAxis.titleFontSize,标题字体大小,默认13px +- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetY,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js X轴xAxis增加 opts.xAxis.titleOffsetX,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js X轴xAxis增加 opts.xAxis.titleFontColor,标题字体颜色,默认#666666 + +## 报错TypeError: Cannot read properties of undefined (reading 'length') +- 如果是uni-modules版本组件,请先登录HBuilderX账号; +- 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行; +- 如果是cli项目请使用码云上的非uniCloud版本组件; +- 或者添加uniCloud的依赖; +- 或者使用原生uCharts; +## 2.4.5-20221130(2022-11-30) +- uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画 +- uCharts.js 折线图修复特殊情况下只有单点数据,并改变线宽后点变为圆形的bug +- uCharts.js 修复Y轴disabled启用后无效并报错的bug +- uCharts.js 修复仪表盘起始结束角度特殊情况下显示不正确的bug +- uCharts.js 雷达图新增参数 opts.extra.radar.radius , 自定义雷达图半径 +- uCharts.js 折线图、区域图增加tooltip指示点,opts.extra.line.activeType/opts.extra.area.activeType,可选值"none"不启用激活指示点,"hollow"空心点模式,"solid"实心点模式 +## 2.4.4-20221102(2022-11-02) +- 秋云图表组件 修复使用echarts时reload、reshow无法调用重新渲染的bug,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/40) +- 秋云图表组件 修复使用echarts时,初始化时宽高不正确的bug,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/42) +- 秋云图表组件 修复uniapp的h5使用history模式时,无法加载echarts的bug +- 秋云图表组件 小程序端@complete、@scrollLeft、@scrollRight、@getTouchStart、@getTouchMove、@getTouchEnd事件增加opts参数传出,方便一些特殊需求的交互获取数据。 + +- uCharts.js 修复calTooltipYAxisData方法内formatter格式化方法未与y轴方法同步的问题,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/43) +- uCharts.js 地图新增参数opts.series[i].fillOpacity,以透明度方式来设置颜色过度效果,[详见码云PR](https://gitee.com/uCharts/uCharts/pulls/38) +- uCharts.js 地图新增参数opts.extra.map.active,是否启用点击激活变色 +- uCharts.js 地图新增参数opts.extra.map.activeTextColor,是否启用点击激活变色 +- uCharts.js 地图新增渲染完成事件renderComplete +- uCharts.js 漏斗图修复当部分数据相同时tooltip提示窗点击错误的bug +- uCharts.js 漏斗图新增参数series.data[i].centerText 居中标签文案 +- uCharts.js 漏斗图新增参数series.data[i].centerTextSize 居中标签文案字体大小,默认opts.fontSize +- uCharts.js 漏斗图新增参数series.data[i].centerTextColor 居中标签文案字体颜色,默认#FFFFFF +- uCharts.js 漏斗图新增参数opts.extra.funnel.minSize 最小值的最小宽度,默认0 +- uCharts.js 进度条新增参数opts.extra.arcbar.direction,动画方向,可选值为cw顺时针、ccw逆时针 +- uCharts.js 混合图新增参数opts.extra.mix.line.width,折线的宽度,默认2 +- uCharts.js 修复tooltip开启horizentalLine水平横线标注时,图表显示错位的bug +- uCharts.js 优化tooltip当文字很多变为左侧显示时,如果画布仍显显示不下,提示框错位置变为以左侧0位置起画 +- uCharts.js 修复开启滚动条后X轴文字超出绘图区域后的隐藏逻辑 +- uCharts.js 柱状图、条状图修复堆叠模式不能通过{value,color}赋值单个柱子颜色的问题 +- uCharts.js 气泡图修复不识别series.textSize和series.textColor的bug + +## 报错TypeError: Cannot read properties of undefined (reading 'length') +1. 如果是uni-modules版本组件,请先登录HBuilderX账号; +2. 在HBuilderX中的manifest.json,点击重新获取uniapp的appid,或者删除appid重新粘贴,重新运行; +3. 如果是cli项目请使用码云上的非uniCloud版本组件; +4. 或者添加uniCloud的依赖; +5. 或者使用原生uCharts; +## 2.4.3-20220505(2022-05-05) +- 秋云图表组件 修复开启canvas2d后将series赋值为空数组显示加载图标时,再次赋值后画布闪动的bug +- 秋云图表组件 修复升级hbx最新版后ECharts的highlight方法报错的bug +- uCharts.js 雷达图新增参数opts.extra.radar.gridEval,数据点位网格抽希,默认1 +- uCharts.js 雷达图新增参数opts.extra.radar.axisLabel, 是否显示刻度点值,默认false +- uCharts.js 雷达图新增参数opts.extra.radar.axisLabelTofix,刻度点值小数位数,默认0 +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointShow,是否显示末端刻度圆点,默认false +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointRadius,刻度圆点的半径,默认3 +- uCharts.js 雷达图新增参数opts.extra.radar.labelPointColor,刻度圆点的颜色,默认#cccccc +- uCharts.js 雷达图新增参数opts.extra.radar.linearType,渐变色类型,可选值"none"关闭渐变,"custom"开启渐变 +- uCharts.js 雷达图新增参数opts.extra.radar.customColor,自定义渐变颜色,数组类型对应series的数组长度以匹配不同series颜色的不同配色方案,例如["#FA7D8D", "#EB88E2"] +- uCharts.js 雷达图优化支持series.textColor、series.textSize属性 +- uCharts.js 柱状图中温度计式图标,优化支持全圆角类型,修复边框有缝隙的bug,详见官网【演示】中的温度计图表 +- uCharts.js 柱状图新增参数opts.extra.column.activeWidth,当前点击柱状图的背景宽度,默认一个单元格单位 +- uCharts.js 混合图增加opts.extra.mix.area.gradient 区域图是否开启渐变色 +- uCharts.js 混合图增加opts.extra.mix.area.opacity 区域图透明度,默认0.2 +- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelText,自定义标签文字,避免formatter格式化的繁琐,详见官网【演示】中的饼图 +- uCharts.js 饼图、圆环图、玫瑰图、漏斗图,增加opts.series[0].data[i].labelShow,自定义是否显示某一个指示标签,避免因饼图类别太多导致标签重复或者居多导致图形变形的问题,详见官网【演示】中的饼图 +- uCharts.js 增加opts.series[i].legendText/opts.series[0].data[i].legendText(与series.name同级)自定义图例显示文字的方法 +- uCharts.js 优化X轴、Y轴formatter格式化方法增加形参,统一为fromatter:function(value,index,opts){} +- uCharts.js 修复横屏模式下无法使用双指缩放方法的bug +- uCharts.js 修复当只有一条数据或者多条数据值相等的时候Y轴自动计算的最大值错误的bug +- 【官网模板】增加外部自定义图例与图表交互的例子,[点击跳转](https://www.ucharts.cn/v2/#/layout/info?id=2) + +## 注意:非unimodules 版本如因更新 hbx 至 3.4.7 导致报错如下,请到码云更新非 unimodules 版本组件,[点击跳转](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6) +> Error in callback for immediate watcher "uchartsOpts": "SyntaxError: Unexpected token u in JSON at position 0" +## 2.4.2-20220421(2022-04-21) +- 秋云图表组件 修复HBX升级3.4.6.20220420版本后echarts报错的问题 +## 2.4.2-20220420(2022-04-20) +## 重要!此版本uCharts新增了很多功能,修复了诸多已知问题 +- 秋云图表组件 新增onzoom开启双指缩放功能(仅uCharts),前提需要直角坐标系类图表类型,并且ontouch为true、opts.enableScroll为true,详见实例项目K线图 +- 秋云图表组件 新增optsWatch是否监听opts变化,关闭optsWatch后,动态修改opts不会触发图表重绘 +- 秋云图表组件 修复开启canvas2d功能后,动态更新数据后画布闪动的bug +- 秋云图表组件 去除directory属性,改为自动获取echarts.min.js路径(升级不受影响) +- 秋云图表组件 增加getImage()方法及@getImage事件,通过ref调用getImage()方法获,触发@getImage事件获取当前画布的base64图片文件流。 +- 秋云图表组件 支付宝、字节跳动、飞书、快手小程序支持开启canvas2d同层渲染设置。 +- 秋云图表组件 新增加【非uniCloud】版本组件,避免有些不需要uniCloud的使用组件发布至小程序需要提交隐私声明问题,请到码云[【非uniCloud版本】](https://gitee.com/uCharts/uCharts/tree/master/uni-app/uCharts-%E7%BB%84%E4%BB%B6),或npm[【非uniCloud版本】](https://www.npmjs.com/package/@qiun/uni-ucharts)下载使用。 +- uCharts.js 新增dobuleZoom双指缩放功能 +- uCharts.js 新增山峰图type="mount",数据格式为饼图类格式,不需要传入categories,具体详见新版官网在线演示 +- uCharts.js 修复折线图当数据中存在null时tooltip报错的bug +- uCharts.js 修复饼图类当画布比较小时自动计算的半径是负数报错的bug +- uCharts.js 统一各图表类型的series.formatter格式化方法的形参为(val, index, series, opts),方便格式化时有更多参数可用 +- uCharts.js 标记线功能增加labelText自定义显示文字,增加labelAlign标签显示位置(左侧或右侧),增加标签显示位置微调labelOffsetX、labelOffsetY +- uCharts.js 修复条状图当数值很小时开启圆角后样式错误的bug +- uCharts.js 修复X轴开启disabled后,X轴仍占用空间的bug +- uCharts.js 修复X轴开启滚动条并且开启rotateLabel后,X轴文字与滚动条重叠的bug +- uCharts.js 增加X轴rotateAngle文字旋转自定义角度,取值范围(-90至90) +- uCharts.js 修复地图文字标签层级显示不正确的bug +- uCharts.js 修复饼图、圆环图、玫瑰图当数据全部为0的时候不显示数据标签的bug +- uCharts.js 修复当opts.padding上边距为0时,Y轴顶部刻度标签位置不正确的bug + +## 另外我们还开发了各大原生小程序组件,已发布至码云和npm +[https://gitee.com/uCharts/uCharts](https://gitee.com/uCharts/uCharts) +[https://www.npmjs.com/~qiun](https://www.npmjs.com/~qiun) + +## 对于原生uCharts文档我们已上线新版官方网站,详情点击下面链接进入官网 +[https://www.uCharts.cn/v2/](https://www.ucharts.cn/v2/) +## 2.3.7-20220122(2022-01-22) +## 重要!使用vue3编译,请使用cli模式并升级至最新依赖,HbuilderX编译需要使用3.3.8以上版本 +- uCharts.js 修复uni-app平台组件模式使用vue3编译到小程序报错的bug。 +## 2.3.7-20220118(2022-01-18) +## 注意,使用vue3的前提是需要3.3.8.20220114-alpha版本的HBuilder! +## 2.3.67-20220118(2022-01-18) +- 秋云图表组件 组件初步支持vue3,全端编译会有些问题,具体详见下面修改: +1. 小程序端运行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new uni_modules_qiunDataCharts_js_sdk_uCharts_uCharts.uCharts,将.uCharts去掉。 +2. 小程序端发行时,在uni_modules文件夹的qiun-data-charts.js中搜索 new e.uCharts,将.uCharts去掉,变为 new e。 +3. 如果觉得上述步骤比较麻烦,如果您的项目只编译到小程序端,可以修改u-charts.js最后一行导出方式,将 export default uCharts;变更为 export default { uCharts: uCharts }; 这样变更后,H5和App端的renderjs会有问题,请开发者自行选择。(此问题非组件问题,请等待DC官方修复Vue3的小程序端) +## 2.3.6-20220111(2022-01-11) +- 秋云图表组件 修改组件 props 属性中的 background 默认值为 rgba(0,0,0,0) +## 2.3.6-20211201(2021-12-01) +- uCharts.js 修复bar条状图开启圆角模式时,值很小时圆角渲染错误的bug +## 2.3.5-20211014(2021-10-15) +- uCharts.js 增加vue3的编译支持(仅原生uCharts,qiun-data-charts组件后续会支持,请关注更新) +## 2.3.4-20211012(2021-10-12) +- 秋云图表组件 修复 mac os x 系统 mouseover 事件丢失的 bug +## 2.3.3-20210706(2021-07-06) +- uCharts.js 增加雷达图开启数据点值(opts.dataLabel)的显示 +## 2.3.2-20210627(2021-06-27) +- 秋云图表组件 修复tooltipCustom个别情况下传值不正确报错TypeError: Cannot read property 'name' of undefined的bug +## 2.3.1-20210616(2021-06-16) +- uCharts.js 修复圆角柱状图使用4角圆角时,当数值过大时不正确的bug +## 2.3.0-20210612(2021-06-12) +- uCharts.js 【重要】uCharts增加nvue兼容,可在nvue项目中使用gcanvas组件渲染uCharts,[详见码云uCharts-demo-nvue](https://gitee.com/uCharts/uCharts) +- 秋云图表组件 增加tapLegend属性,是否开启图例点击交互事件 +- 秋云图表组件 getIndex事件中增加返回uCharts实例中的opts参数,以便在页面中调用参数 +- 示例项目 pages/other/other.vue增加app端自定义tooltip的方法,详见showOptsTooltip方法 +## 2.2.1-20210603(2021-06-03) +- uCharts.js 修复饼图、圆环图、玫瑰图,当起始角度不为0时,tooltip位置不准确的bug +- uCharts.js 增加温度计式柱状图开启顶部半圆形的配置 +## 2.2.0-20210529(2021-05-29) +- uCharts.js 增加条状图type="bar" +- 示例项目 pages/ucharts/ucharts.vue增加条状图的demo +## 2.1.7-20210524(2021-05-24) +- uCharts.js 修复大数据量模式下曲线图不平滑的bug +## 2.1.6-20210523(2021-05-23) +- 秋云图表组件 修复小程序端开启滚动条更新数据后滚动条位置不符合预期的bug +## 2.1.5-2021051702(2021-05-17) +- uCharts.js 修复自定义Y轴min和max值为0时不能正确显示的bug +## 2.1.5-20210517(2021-05-17) +- uCharts.js 修复Y轴自定义min和max时,未按指定的最大值最小值显示坐标轴刻度的bug +## 2.1.4-20210516(2021-05-16) +- 秋云图表组件 优化onWindowResize防抖方法 +- 秋云图表组件 修复APP端uCharts更新数据时,清空series显示loading图标后再显示图表,图表抖动的bug +- uCharts.js 修复开启canvas2d后,x轴、y轴、series自定义字体大小未按比例缩放的bug +- 示例项目 修复format-e.vue拼写错误导致app端使用uCharts渲染图表 +## 2.1.3-20210513(2021-05-13) +- 秋云图表组件 修改uCharts变更chartData数据为updateData方法,支持带滚动条的数据动态打点 +- 秋云图表组件 增加onWindowResize防抖方法 fix by ど誓言,如尘般染指流年づ +- 秋云图表组件 H5或者APP变更chartData数据显示loading图表时,原数据闪现的bug +- 秋云图表组件 props增加errorReload禁用错误点击重新加载的方法 +- uCharts.js 增加tooltip显示category(x轴对应点位)标题的功能,opts.extra.tooltip.showCategory,默认为false +- uCharts.js 修复mix混合图只有柱状图时,tooltip的分割线显示位置不正确的bug +- uCharts.js 修复开启滚动条,图表在拖动中动态打点,滚动条位置不正确的bug +- uCharts.js 修复饼图类数据格式为echarts数据格式,series为空数组报错的bug +- 示例项目 修改uCharts.js更新到v2.1.2版本后,@getIndex方法获取索引值变更为e.currentIndex.index +- 示例项目 pages/updata/updata.vue增加滚动条拖动更新(数据动态打点)的demo +- 示例项目 pages/other/other.vue增加errorReload禁用错误点击重新加载的demo +## 2.1.2-20210509(2021-05-09) +秋云图表组件 修复APP端初始化时就传入chartData或lacaldata不显示图表的bug +## 2.1.1-20210509(2021-05-09) +- 秋云图表组件 变更ECharts的eopts配置在renderjs内执行,支持在config-echarts.js配置文件内写function配置。 +- 秋云图表组件 修复APP端报错Prop being mutated: "onmouse"错误的bug。 +- 秋云图表组件 修复APP端报错Error: Not Found:Page[6][-1,27] at view.umd.min.js:1的bug。 +## 2.1.0-20210507(2021-05-07) +- 秋云图表组件 修复初始化时就有数据或者数据更新的时候loading加载动画闪动的bug +- uCharts.js 修复x轴format方法categories为字符串类型时返回NaN的bug +- uCharts.js 修复series.textColor、legend.fontColor未执行全局默认颜色的bug +## 2.1.0-20210506(2021-05-06) +- 秋云图表组件 修复极个别情况下报错item.properties undefined的bug +- 秋云图表组件 修复极个别情况下关闭加载动画reshow不起作用,无法显示图表的bug +- 示例项目 pages/ucharts/ucharts.vue 增加时间轴折线图(type="tline")、时间轴区域图(type="tarea")、散点图(type="scatter")、气泡图demo(type="bubble")、倒三角形漏斗图(opts.extra.funnel.type="triangle")、金字塔形漏斗图(opts.extra.funnel.type="pyramid") +- 示例项目 pages/format-u/format-u.vue 增加X轴format格式化示例 +- uCharts.js 升级至v2.1.0版本 +- uCharts.js 修复 玫瑰图面积模式点击tooltip位置不正确的bug +- uCharts.js 修复 玫瑰图点击图例,只剩一个类别显示空白的bug +- uCharts.js 修复 饼图类图点击图例,其他图表tooltip位置某些情况下不准的bug +- uCharts.js 修复 x轴为矢量轴(时间轴)情况下,点击tooltip位置不正确的bug +- uCharts.js 修复 词云图获取点击索引偶尔不准的bug +- uCharts.js 增加 直角坐标系图表X轴format格式化方法(原生uCharts.js用法请使用formatter) +- uCharts.js 增加 漏斗图扩展配置,倒三角形(opts.extra.funnel.type="triangle"),金字塔形(opts.extra.funnel.type="pyramid") +- uCharts.js 增加 散点图(opts.type="scatter")、气泡图(opts.type="bubble") +- 后期计划 完善散点图、气泡图,增加markPoints标记点,增加横向条状图。 +## 2.0.0-20210502(2021-05-02) +- uCharts.js 修复词云图获取点击索引不正确的bug +## 2.0.0-20210501(2021-05-01) +- 秋云图表组件 修复QQ小程序、百度小程序在关闭动画效果情况下,v-for循环使用图表,显示不正确的bug +## 2.0.0-20210426(2021-04-26) +- 秋云图表组件 修复QQ小程序不支持canvas2d的bug +- 秋云图表组件 修复钉钉小程序某些情况点击坐标计算错误的bug +- uCharts.js 增加 extra.column.categoryGap 参数,柱状图类每个category点位(X轴点)柱子组之间的间距 +- uCharts.js 增加 yAxis.data[i].titleOffsetY 参数,标题纵向偏移距离,负数为向上偏移,正数向下偏移 +- uCharts.js 增加 yAxis.data[i].titleOffsetX 参数,标题横向偏移距离,负数为向左偏移,正数向右偏移 +- uCharts.js 增加 extra.gauge.labelOffset 参数,仪表盘标签文字径向便宜距离,默认13px +## 2.0.0-20210422-2(2021-04-22) +秋云图表组件 修复 formatterAssign 未判断 args[key] == null 的情况导致栈溢出的 bug +## 2.0.0-20210422(2021-04-22) +- 秋云图表组件 修复H5、APP、支付宝小程序、微信小程序canvas2d模式下横屏模式的bug +## 2.0.0-20210421(2021-04-21) +- uCharts.js 修复多行图例的情况下,图例在上方或者下方时,图例float为左侧或者右侧时,第二行及以后的图例对齐方式不正确的bug +## 2.0.0-20210420(2021-04-20) +- 秋云图表组件 修复微信小程序开启canvas2d模式后,windows版微信小程序不支持canvas2d模式的bug +- 秋云图表组件 修改非uni_modules版本为v2.0版本qiun-data-charts组件 +## 2.0.0-20210419(2021-04-19) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复混合图中柱状图单独设置颜色不生效的bug +- uCharts.js 修复多Y轴单独设置fontSize时,开启canvas2d后,未对应放大字体的bug +## 2.0.0-20210418(2021-04-18) +- 秋云图表组件 增加directory配置,修复H5端history模式下如果发布到二级目录无法正确加载echarts.min.js的bug +## 2.0.0-20210416(2021-04-16) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复APP端某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- 示例项目 修复APP端v-for循环某些情况下报错`Not Found Page`的bug,fix by 高级bug开发技术员 +- uCharts.js 修复非直角坐标系tooltip提示窗右侧超出未变换方向显示的bug +## 2.0.0-20210415(2021-04-15) +- 秋云图表组件 修复H5端发布到二级目录下echarts无法加载的bug +- 秋云图表组件 修复某些情况下echarts.off('finished')移除监听事件报错的bug +## 2.0.0-20210414(2021-04-14) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX,如仍不好用,请重启电脑; +## 如果是cli项目,请尝试清理node_modules,重新install,还不行就删除项目,再重新install。 +## 此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## 其他图表不显示问题详见[常见问题选项卡](https://demo.ucharts.cn) +## 新手请先完整阅读帮助文档及常见问题3遍,右侧蓝色按钮示例项目请看2遍! +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在项目中的应用参见 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复H5端在cli项目下ECharts引用地址错误的bug +- 示例项目 增加ECharts的formatter用法的示例(详见示例项目format-e.vue) +- uCharts.js 增加圆环图中心背景色的配置extra.ring.centerColor +- uCharts.js 修复微信小程序安卓端柱状图开启透明色后显示不正确的bug +## 2.0.0-20210413(2021-04-13) +- 秋云图表组件 修复百度小程序多个图表真机未能正确获取根元素dom尺寸的bug +- 秋云图表组件 修复百度小程序横屏模式方向不正确的bug +- 秋云图表组件 修改ontouch时,@getTouchStart@getTouchMove@getTouchEnd的触发条件 +- uCharts.js 修复饼图类数据格式series属性不生效的bug +- uCharts.js 增加时序区域图 详见示例项目中ucharts.vue +## 2.0.0-20210412-2(2021-04-12) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册<qiun-data-charts>组件,请重启HBuilderX。如仍不好用,请重启电脑,此问题已于DCloud官方确认,HBuilderX下个版本会修复。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- 秋云图表组件 修复uCharts在APP端横屏模式下不能正确渲染的bug +- 示例项目 增加ECharts柱状图渐变色、圆角柱状图、横向柱状图(条状图)的示例 +## 2.0.0-20210412(2021-04-12) +- 秋云图表组件 修复created中判断echarts导致APP端无法识别,改回mounted中判断echarts初始化 +- uCharts.js 修复2d模式下series.textOffset未乘像素比的bug +## 2.0.0-20210411(2021-04-11) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧绿色【使用HBuilderX导入插件】即可使用,示例项目请点击右侧蓝色按钮【使用HBuilderX导入示例项目】。 +## 初次使用如果提示未注册组件,请重启HBuilderX,并清空小程序开发者工具缓存。 +## [DEMO演示及在线生成工具(v2.0文档)https://demo.ucharts.cn](https://demo.ucharts.cn) +## [图表组件在uniCloudAdmin中的应用 UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 折线图区域图增加connectNulls断点续连的功能,详见示例项目中ucharts.vue +- 秋云图表组件 变更初始化方法为created,变更type2d默认值为true,优化2d模式下组件初始化后dom获取不到的bug +- 秋云图表组件 修复左右布局时,右侧图表点击坐标错误的bug,修复tooltip柱状图自定义颜色显示object的bug +## 2.0.0-20210410(2021-04-10) +- 修复左右布局时,右侧图表点击坐标错误的bug,修复柱状图自定义颜色tooltip显示object的bug +- 增加标记线及柱状图自定义颜色的demo +## 2.0.0-20210409(2021-04-08) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +- uCharts.js 修复钉钉小程序百度小程序measureText不准确的bug,修复2d模式下饼图类activeRadius为按比例放大的bug +- 修复组件在支付宝小程序端点击位置不准确的bug +## 2.0.0-20210408(2021-04-07) +- 修复组件在支付宝小程序端不能显示的bug(目前支付宝小程不能点击交互,后续修复) +- uCharts.js 修复高分屏下柱状图类,圆弧进度条 自定义宽度不能按比例放大的bug +## 2.0.0-20210407(2021-04-06) +## v1.0版本已停更,建议转uni_modules版本组件方式调用,点击右侧【使用HBuilderX导入插件】即可体验,DEMO演示及在线生成工具(v2.0文档)[https://demo.ucharts.cn](https://demo.ucharts.cn) +## 增加 通过tofix和unit快速格式化y轴的demo add by `howcode` +## 增加 图表组件在uniCloudAdmin中的应用 [UReport数据报表](https://ext.dcloud.net.cn/plugin?id=4651) +## 2.0.0-20210406(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 +## 2.0.0(2021-04-05) +# 秋云图表组件+uCharts v2.0版本同步上线,使用方法详见https://demo.ucharts.cn帮助页 diff --git a/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue b/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue new file mode 100644 index 0000000..5678f7d --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue @@ -0,0 +1,1618 @@ + + + + + + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue b/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue new file mode 100644 index 0000000..b15b19f --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue new file mode 100644 index 0000000..b701394 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue new file mode 100644 index 0000000..7541b31 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue new file mode 100644 index 0000000..8e14db3 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue new file mode 100644 index 0000000..77c55b7 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue b/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue new file mode 100644 index 0000000..cb93a55 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue @@ -0,0 +1,229 @@ + + + + diff --git a/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue b/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue new file mode 100644 index 0000000..7789060 --- /dev/null +++ b/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js new file mode 100644 index 0000000..9ef8019 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js @@ -0,0 +1,468 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 通用配置项 + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +const cfe = { + //demotype为自定义图表类型 + "type": ["pie", "ring", "rose", "funnel", "line", "column", "area", "radar", "gauge","candle","demotype"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的"demotype" + "categories": ["line", "column", "area", "radar", "gauge", "candle","demotype"], + //instance为实例变量承载属性,option为eopts承载属性,不要删除 + "instance": {}, + "option": {}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "tooltipDemo1":function(res){ + let result = '' + for (let i in res) { + if (i == 0) { + result += res[i].axisValueLabel + '年销售额' + } + let value = '--' + if (res[i].data !== null) { + value = res[i].data + } + // #ifdef H5 + result += '\n' + res[i].seriesName + ':' + value + ' 万元' + // #endif + + // #ifdef APP-PLUS + result += '
' + res[i].marker + res[i].seriesName + ':' + value + ' 万元' + // #endif + } + return result; + }, + legendFormat:function(name){ + return "自定义图例+"+name; + }, + "xAxisFormat": function (value) { + return value.substr('2020--'.length, 11) + }, + "stList": function (val) + { + let value = val.substr('2020-'.length, 11) + var ret = "";//拼接加\n返回的类目项 + var maxLength = 6;//每项显示文字个数 + var valLength = value.length;//X轴类目项的文字个数 + var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 + if (rowN > 1)//如果类目项的文字大于5, + { + for (var i = 0; i < rowN; i++) { + var temp = "";//每次截取的字符串 + var start = i * maxLength;//开始截取的位置 + var end = start + maxLength;//结束截取的位置 + //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧 + temp = value.substring(start, end) + "\n"; + ret += temp; //凭借最终的字符串 + } + return ret; + } + else { + return value; + } + }, + "stMonth":function(value){ + let months = value.data.coord[0].substr("2024-0".length, "2024-0".length - 5); + let val = value.data.coord[1] + return `${months}月核定生态流量${val}m³/s` + }, + "jcDataFormat": function (val) { + return val.substr('2020-'.length, 11) + }, + "yhidden": function (value, index, axis) { + console.log("axis",axis); + + if (index === 0 || index === axis.data.length - 1) { + return '' + } else { + return value + } + }, + "waterXaxis": function (val) { + return val.substr(0,'2020-11-11 11:11'.length) + }, + yAxisFormatDemo:function (value, index) { + return value + '元'; + }, + seriesFormatDemo:function(res){ + return res.name + '年' + res.value + '元'; + } + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。 + "demotype":{ + "color": color, + //在这里填写echarts的option即可 + + }, + //下面是自定义配置,请添加项目所需的通用配置 + "column": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'bar', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "line": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "barwidth": 20, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "area": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'axis' + }, + "grid": { + "top": 30, + "bottom": 50, + "right": 15, + "left": 40 + }, + "legend": { + "bottom": 'left', + }, + "toolbox": { + "show": false, + }, + "xAxis": { + "type": 'category', + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + "boundaryGap": true, + "data": [] + }, + "yAxis": { + "type": 'value', + "axisTick": { + "show": false, + }, + "axisLabel": { + "color": '#666666' + }, + "axisLine": { + "lineStyle": { + "color": '#CCCCCC' + } + }, + }, + "seriesTemplate": { + "name": '', + "type": 'line', + "data": [], + "areaStyle": {}, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "pie": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": '50%', + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + }, + }, + "ring": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "grid": { + "top": 40, + "bottom": 30, + "right": 15, + "left": 15 + }, + "legend": { + "bottom": 'left', + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": ['40%', '70%'], + "avoidLabelOverlap": false, + "label": { + "show": true, + "color": "#666666", + "position": 'top', + }, + "labelLine": { + "show": true + }, + }, + }, + "rose": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item' + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'pie', + "data": [], + "radius": "55%", + "center": ['50%', '50%'], + "roseType": 'area', + }, + }, + "funnel": { + "color": color, + "title": { + "text": '' + }, + "tooltip": { + "trigger": 'item', + "formatter": "{b} : {c}%" + }, + "legend": { + "top": 'bottom' + }, + "seriesTemplate": { + "name": '', + "type": 'funnel', + "left": '10%', + "top": 60, + "bottom": 60, + "width": '80%', + "min": 0, + "max": 100, + "minSize": '0%', + "maxSize": '100%', + "sort": 'descending', + "gap": 2, + "label": { + "show": true, + "position": 'inside' + }, + "labelLine": { + "length": 10, + "lineStyle": { + "width": 1, + "type": 'solid' + } + }, + "itemStyle": { + "bordercolor": '#fff', + "borderwidth": 1 + }, + "emphasis": { + "label": { + "fontSize": 20 + } + }, + "data": [], + }, + }, + "gauge": { + "color": color, + "tooltip": { + "formatter": '{a}
{b} : {c}%' + }, + "seriesTemplate": { + "name": '业务指标', + "type": 'gauge', + "detail": {"formatter": '{value}%'}, + "data": [{"value": 50, "name": '完成率'}] + }, + }, + "candle": { + "xAxis": { + "data": [] + }, + "yAxis": {}, + "color": color, + "title": { + "text": '' + }, + "dataZoom": [{ + "type": 'inside', + "xAxisIndex": [0, 1], + "start": 10, + "end": 100 + }, + { + "show": true, + "xAxisIndex": [0, 1], + "type": 'slider', + "bottom": 10, + "start": 10, + "end": 100 + } + ], + "seriesTemplate": { + "name": '', + "type": 'k', + "data": [], + }, + } +} + +export default cfe; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js new file mode 100644 index 0000000..17b28b3 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js @@ -0,0 +1,606 @@ +/* + * uCharts® + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台 + * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts®官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性 +const color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc']; + +//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改 +const formatDateTime = (timeStamp, returnType)=>{ + var date = new Date(); + date.setTime(timeStamp * 1000); + var y = date.getFullYear(); + var m = date.getMonth() + 1; + m = m < 10 ? ('0' + m) : m; + var d = date.getDate(); + d = d < 10 ? ('0' + d) : d; + var h = date.getHours(); + h = h < 10 ? ('0' + h) : h; + var minute = date.getMinutes(); + var second = date.getSeconds(); + minute = minute < 10 ? ('0' + minute) : minute; + second = second < 10 ? ('0' + second) : second; + if(returnType == 'full'){return y + '-' + m + '-' + d + ' '+ h +':' + minute + ':' + second;} + if(returnType == 'y-m-d'){return y + '-' + m + '-' + d;} + if(returnType == 'h:m'){return h +':' + minute;} + if(returnType == 'h:m:s'){return h +':' + minute +':' + second;} + return [y, m, d, h, minute, second]; +} + +const cfu = { + //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可 + "type":["pie","ring","rose","word","funnel","map","arcbar","line","column","mount","bar","area","radar","gauge","candle","mix","tline","tarea","scatter","bubble","demotype"], + "range":["饼状图","圆环图","玫瑰图","词云图","漏斗图","地图","圆弧进度条","折线图","柱状图","山峰图","条状图","区域图","雷达图","仪表盘","K线图","混合图","时间轴折线","时间轴区域","散点图","气泡图","自定义类型"], + //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的"demotype" + //自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories + "categories":["line","column","mount","bar","area","radar","gauge","candle","mix","demotype"], + //instance为实例变量承载属性,不要删除 + "instance":{}, + //option为opts及eopts承载属性,不要删除 + "option":{}, + //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换 + "formatter":{ + "yAxisDemo1":function(val, index, opts){return val+'元'}, + "yAxisDemo2":function(val, index, opts){return val.toFixed(2)}, + "xAxisDemo1":function(val, index, opts){return val+'年';}, + "xAxisDemo2":function(val, index, opts){return formatDateTime(val,'h:m')}, + "seriesDemo1":function(val, index, series, opts){return val+'元'}, + "tooltipDemo1":function(item, category, index, opts){ + if(index==0){ + return '随便用'+item.data+'年' + }else{ + return '其他我没改'+item.data+'天' + } + }, + "pieDemo":function(val, index, series, opts){ + if(index !== undefined){ + return series[index].name+':'+series[index].data+'元' + } + }, + }, + //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type="demotype" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。 + "demotype":{ + //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置 + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2 + }, + } + }, + //下面是自定义配置,请添加项目所需的通用配置 + "pie":{ + "type": "pie", + "color": color, + "padding": [5,5,5,5], + "extra": { + "pie": { + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + } + }, + "ring":{ + "type": "ring", + "color": color, + "padding": [5,5,5,5], + "rotate": false, + "dataLabel": true, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "title": { + "name": "收益率", + "fontSize": 15, + "color": "#666666" + }, + "subtitle": { + "name": "70%", + "fontSize": 25, + "color": "#7cb5ec" + }, + "extra": { + "ring": { + "ringWidth":30, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": true, + "borderWidth": 3, + "borderColor": "#FFFFFF" + }, + }, + }, + "rose":{ + "type": "rose", + "color": color, + "padding": [5,5,5,5], + "legend": { + "show": true, + "position": "left", + "lineHeight": 25, + }, + "extra": { + "rose": { + "type": "area", + "minRadius": 50, + "activeOpacity": 0.5, + "activeRadius": 10, + "offsetAngle": 0, + "labelWidth": 15, + "border": false, + "borderWidth": 2, + "borderColor": "#FFFFFF" + }, + } + }, + "word":{ + "type": "word", + "color": color, + "extra": { + "word": { + "type": "normal", + "autoColors": false + } + } + }, + "funnel":{ + "type": "funnel", + "color": color, + "padding": [15,15,0,15], + "extra": { + "funnel": { + "activeOpacity": 0.3, + "activeWidth": 10, + "border": true, + "borderWidth": 2, + "borderColor": "#FFFFFF", + "fillOpacity": 1, + "labelAlign": "right" + }, + } + }, + "map":{ + "type": "map", + "color": color, + "padding": [0,0,0,0], + "dataLabel": true, + "extra": { + "map": { + "border": true, + "borderWidth": 1, + "borderColor": "#666666", + "fillOpacity": 0.6, + "activeBorderColor": "#F04864", + "activeFillColor": "#FACC14", + "activeFillOpacity": 1 + }, + } + }, + "arcbar":{ + "type": "arcbar", + "color": color, + "title": { + "name": "百分比", + "fontSize": 25, + "color": "#00FF00" + }, + "subtitle": { + "name": "默认标题", + "fontSize": 15, + "color": "#666666" + }, + "extra": { + "arcbar": { + "type": "default", + "width": 12, + "backgroundColor": "#E9E9E9", + "startAngle": 0.75, + "endAngle": 0.25, + "gap": 2 + } + } + }, + "line":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "line": { + "type": "straight", + "width": 2, + "activeType": "hollow" + }, + } + }, + "tline":{ + "type": "line", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": false, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "line": { + "type": "curve", + "width": 2, + "activeType": "hollow" + }, + } + }, + "tarea":{ + "type": "area", + "color": color, + "padding": [15,10,0,15], + "xAxis": { + "disableGrid": true, + "boundaryGap":"justify", + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + "data":[ + { + "min":0, + "max":80 + } + ] + }, + "legend": { + }, + "extra": { + "area": { + "type": "curve", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": true, + "activeType": "hollow" + }, + } + }, + "column":{ + "type": "column", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "column": { + "type": "group", + "width": 30, + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "mount":{ + "type": "mount", + "color": color, + "padding": [15,15,0,5], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "data":[{"min":0}] + }, + "legend": { + }, + "extra": { + "mount": { + "type": "mount", + "widthRatio": 1.5, + }, + } + }, + "bar":{ + "type": "bar", + "color": color, + "padding": [15,30,0,5], + "xAxis": { + "boundaryGap":"justify", + "disableGrid":false, + "min":0, + "axisLine":false + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "bar": { + "type": "group", + "width": 30, + "meterBorde": 1, + "meterFillColor": "#FFFFFF", + "activeBgColor": "#000000", + "activeBgOpacity": 0.08 + }, + } + }, + "area":{ + "type": "area", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "gridType": "dash", + "dashLength": 2, + }, + "legend": { + }, + "extra": { + "area": { + "type": "straight", + "opacity": 0.2, + "addLine": true, + "width": 2, + "gradient": false, + "activeType": "hollow" + }, + } + }, + "radar":{ + "type": "radar", + "color": color, + "padding": [5,5,5,5], + "dataLabel": false, + "legend": { + "show": true, + "position": "right", + "lineHeight": 25, + }, + "extra": { + "radar": { + "gridType": "radar", + "gridColor": "#CCCCCC", + "gridCount": 3, + "opacity": 0.2, + "max": 200, + "labelShow": true + }, + } + }, + "gauge":{ + "type": "gauge", + "color": color, + "title": { + "name": "66Km/H", + "fontSize": 25, + "color": "#2fc25b", + "offsetY": 50 + }, + "subtitle": { + "name": "实时速度", + "fontSize": 15, + "color": "#1890ff", + "offsetY": -50 + }, + "extra": { + "gauge": { + "type": "default", + "width": 30, + "labelColor": "#666666", + "startAngle": 0.75, + "endAngle": 0.25, + "startNumber": 0, + "endNumber": 100, + "labelFormat": "", + "splitLine": { + "fixRadius": 0, + "splitNumber": 10, + "width": 30, + "color": "#FFFFFF", + "childNumber": 5, + "childWidth": 12 + }, + "pointer": { + "width": 24, + "color": "auto" + } + } + } + }, + "candle":{ + "type": "candle", + "color": color, + "padding": [15,15,0,15], + "enableScroll": true, + "enableMarkLine": true, + "dataLabel": false, + "xAxis": { + "labelCount": 4, + "itemCount": 40, + "disableGrid": true, + "gridColor": "#CCCCCC", + "gridType": "solid", + "dashLength": 4, + "scrollShow": true, + "scrollAlign": "left", + "scrollColor": "#A6A6A6", + "scrollBackgroundColor": "#EFEBEF" + }, + "yAxis": { + }, + "legend": { + }, + "extra": { + "candle": { + "color": { + "upLine": "#f04864", + "upFill": "#f04864", + "downLine": "#2fc25b", + "downFill": "#2fc25b" + }, + "average": { + "show": true, + "name": ["MA5","MA10","MA30"], + "day": [5,10,20], + "color": ["#1890ff","#2fc25b","#facc14"] + } + }, + "markLine": { + "type": "dash", + "dashLength": 5, + "data": [ + { + "value": 2150, + "lineColor": "#f04864", + "showLabel": true + }, + { + "value": 2350, + "lineColor": "#f04864", + "showLabel": true + } + ] + } + } + }, + "mix":{ + "type": "mix", + "color": color, + "padding": [15,15,0,15], + "xAxis": { + "disableGrid": true, + }, + "yAxis": { + "disabled": false, + "disableGrid": false, + "splitNumber": 5, + "gridType": "dash", + "dashLength": 4, + "gridColor": "#CCCCCC", + "padding": 10, + "showTitle": true, + "data": [] + }, + "legend": { + }, + "extra": { + "mix": { + "column": { + "width": 20 + } + }, + } + }, + "scatter":{ + "type": "scatter", + "color":color, + "padding":[15,15,0,15], + "dataLabel":false, + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + }, + "legend": { + }, + "extra": { + "scatter": { + }, + } + }, + "bubble":{ + "type": "bubble", + "color":color, + "padding":[15,15,0,15], + "xAxis": { + "disableGrid": false, + "gridType":"dash", + "splitNumber":5, + "boundaryGap":"justify", + "min":0, + "max":250 + }, + "yAxis": { + "disableGrid": false, + "gridType":"dash", + "data":[{ + "min":0, + "max":150 + }] + }, + "legend": { + }, + "extra": { + "bubble": { + "border":2, + "opacity": 0.5, + }, + } + } +} + +export default cfu; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md b/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md new file mode 100644 index 0000000..d307ba3 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/readme.md @@ -0,0 +1,5 @@ +# uCharts JSSDK说明 +1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`120kb`。 +2、如果120kb的体积仍需压缩,请手到uCharts官网通过在线定制选择您需要的图表。 +3、config-ucharts.js为uCharts组件的用户配置文件,升级前请`自行备份config-ucharts.js`文件,以免被强制覆盖。 +4、config-echarts.js为ECharts组件的用户配置文件,升级前请`自行备份config-echarts.js`文件,以免被强制覆盖。 \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js new file mode 100644 index 0000000..f78bde5 --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js @@ -0,0 +1,7706 @@ +/* + * uCharts (R) + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台 + * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts (R) 官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +'use strict'; + +var config = { + version: 'v2.5.0-20230101', + yAxisWidth: 15, + xAxisHeight: 22, + padding: [10, 10, 10, 10], + rotate: false, + fontSize: 13, + fontColor: '#666666', + dataPointShape: ['circle', 'circle', 'circle', 'circle'], + color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'], + linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'], + pieChartLinePadding: 15, + pieChartTextPadding: 5, + titleFontSize: 20, + subtitleFontSize: 15, + radarLabelTextMargin: 13, +}; + +var assign = function(target, ...varArgs) { + if (target == null) { + throw new TypeError('[uCharts] Cannot convert undefined or null to object'); + } + if (!varArgs || varArgs.length <= 0) { + return target; + } + // 深度合并对象 + function deepAssign(obj1, obj2) { + for (let key in obj2) { + obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ? + deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key]; + } + return obj1; + } + varArgs.forEach(val => { + target = deepAssign(target, val); + }); + return target; +}; + +var util = { + toFixed: function toFixed(num, limit) { + limit = limit || 2; + if (this.isFloat(num)) { + num = num.toFixed(limit); + } + return num; + }, + isFloat: function isFloat(num) { + return num % 1 !== 0; + }, + approximatelyEqual: function approximatelyEqual(num1, num2) { + return Math.abs(num1 - num2) < 1e-10; + }, + isSameSign: function isSameSign(num1, num2) { + return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; + }, + isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { + return this.isSameSign(p1.x, p2.x); + }, + isCollision: function isCollision(obj1, obj2) { + obj1.end = {}; + obj1.end.x = obj1.start.x + obj1.width; + obj1.end.y = obj1.start.y - obj1.height; + obj2.end = {}; + obj2.end.x = obj2.start.x + obj2.width; + obj2.end.y = obj2.start.y - obj2.height; + 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; + return !flag; + } +}; + +//兼容H5点击事件 +function getH5Offset(e) { + e.mp = { + changedTouches: [] + }; + e.mp.changedTouches.push({ + x: e.offsetX, + y: e.offsetY + }); + return e; +} + +// hex 转 rgba +function hexToRgb(hexValue, opc) { + var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + var hex = hexValue.replace(rgx, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + var r = parseInt(rgb[1], 16); + var g = parseInt(rgb[2], 16); + var b = parseInt(rgb[3], 16); + return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')'; +} + +function findRange(num, type, limit) { + if (isNaN(num)) { + throw new Error('[uCharts] series数据需为Number格式'); + } + limit = limit || 10; + type = type ? type : 'upper'; + var multiple = 1; + while (limit < 1) { + limit *= 10; + multiple *= 10; + } + if (type === 'upper') { + num = Math.ceil(num * multiple); + } else { + num = Math.floor(num * multiple); + } + while (num % limit !== 0) { + if (type === 'upper') { + if (num == num + 1) { //修复数据值过大num++无效的bug by 向日葵 @xrk_jy + break; + } + num++; + } else { + num--; + } + } + return num / multiple; +} + +function calCandleMA(dayArr, nameArr, colorArr, kdata) { + let seriesTemp = []; + for (let k = 0; k < dayArr.length; k++) { + let seriesItem = { + data: [], + name: nameArr[k], + color: colorArr[k] + }; + for (let i = 0, len = kdata.length; i < len; i++) { + if (i < dayArr[k]) { + seriesItem.data.push(null); + continue; + } + let sum = 0; + for (let j = 0; j < dayArr[k]; j++) { + sum += kdata[i - j][1]; + } + seriesItem.data.push(+(sum / dayArr[k]).toFixed(3)); + } + seriesTemp.push(seriesItem); + } + return seriesTemp; +} + +function calValidDistance(self, distance, chartData, config, opts) { + var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3]; + var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + dataChartWidth += (opts.extra.mount.widthRatio - 1)*chartData.eachSpacing; + } + var validDistance = distance; + if (distance >= 0) { + validDistance = 0; + self.uevent.trigger('scrollLeft'); + self.scrollOption.position = 'left' + opts.xAxis.scrollPosition = 'left'; + } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { + validDistance = dataChartAreaWidth - dataChartWidth; + self.uevent.trigger('scrollRight'); + self.scrollOption.position = 'right' + opts.xAxis.scrollPosition = 'right'; + } else { + self.scrollOption.position = distance + opts.xAxis.scrollPosition = distance; + } + return validDistance; +} + +function isInAngleRange(angle, startAngle, endAngle) { + function adjust(angle) { + while (angle < 0) { + angle += 2 * Math.PI; + } + while (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + } + angle = adjust(angle); + startAngle = adjust(startAngle); + endAngle = adjust(endAngle); + if (startAngle > endAngle) { + endAngle += 2 * Math.PI; + if (angle < startAngle) { + angle += 2 * Math.PI; + } + } + return angle >= startAngle && angle <= endAngle; +} + +function createCurveControlPoints(points, i) { + function isNotMiddlePoint(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, + points[i + 1].y); + } else { + return false; + } + } + function isNotMiddlePointX(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, + points[i + 1].x); + } else { + return false; + } + } + var a = 0.2; + var b = 0.2; + var pAx = null; + var pAy = null; + var pBx = null; + var pBy = null; + if (i < 1) { + pAx = points[0].x + (points[1].x - points[0].x) * a; + pAy = points[0].y + (points[1].y - points[0].y) * a; + } else { + pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; + pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; + } + + if (i > points.length - 3) { + var last = points.length - 1; + pBx = points[last].x - (points[last].x - points[last - 1].x) * b; + pBy = points[last].y - (points[last].y - points[last - 1].y) * b; + } else { + pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; + pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; + } + if (isNotMiddlePoint(points, i + 1)) { + pBy = points[i + 1].y; + } + if (isNotMiddlePoint(points, i)) { + pAy = points[i].y; + } + if (isNotMiddlePointX(points, i + 1)) { + pBx = points[i + 1].x; + } + if (isNotMiddlePointX(points, i)) { + pAx = points[i].x; + } + if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) { + pAy = points[i].y; + } + if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) { + pBy = points[i + 1].y; + } + if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) { + pAx = points[i].x; + } + if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) { + pBx = points[i + 1].x; + } + return { + ctrA: { + x: pAx, + y: pAy + }, + ctrB: { + x: pBx, + y: pBy + } + }; +} + + +function convertCoordinateOrigin(x, y, center) { + return { + x: center.x + x, + y: center.y - y + }; +} + +function avoidCollision(obj, target) { + if (target) { + // is collision test + while (util.isCollision(obj, target)) { + if (obj.start.x > 0) { + obj.start.y--; + } else if (obj.start.x < 0) { + obj.start.y++; + } else { + if (obj.start.y > 0) { + obj.start.y++; + } else { + obj.start.y--; + } + } + } + } + return obj; +} + +function fixPieSeries(series, opts, config){ + let pieSeriesArr = []; + if(series.length>0 && series[0].data.constructor.toString().indexOf('Array') > -1){ + opts._pieSeries_ = series; + let oldseries = series[0].data; + for (var i = 0; i < oldseries.length; i++) { + oldseries[i].formatter = series[0].formatter; + oldseries[i].data = oldseries[i].value; + pieSeriesArr.push(oldseries[i]); + } + opts.series = pieSeriesArr; + }else{ + pieSeriesArr = series; + } + return pieSeriesArr; +} + +function fillSeries(series, opts, config) { + var index = 0; + for (var i = 0; i < series.length; i++) { + let item = series[i]; + if (!item.color) { + item.color = config.color[index]; + index = (index + 1) % config.color.length; + } + if (!item.linearIndex) { + item.linearIndex = i; + } + if (!item.index) { + item.index = 0; + } + if (!item.type) { + item.type = opts.type; + } + if (typeof item.show == "undefined") { + item.show = true; + } + if (!item.type) { + item.type = opts.type; + } + if (!item.pointShape) { + item.pointShape = "circle"; + } + if (!item.legendShape) { + switch (item.type) { + case 'line': + item.legendShape = "line"; + break; + case 'column': + case 'bar': + item.legendShape = "rect"; + break; + case 'area': + case 'mount': + item.legendShape = "triangle"; + break; + default: + item.legendShape = "circle"; + } + } + } + return series; +} + +function fillCustomColor(linearType, customColor, series, config) { + var newcolor = customColor || []; + if (linearType == 'custom' && newcolor.length == 0 ) { + newcolor = config.linearColor; + } + if (linearType == 'custom' && newcolor.length < series.length) { + let chazhi = series.length - newcolor.length; + for (var i = 0; i < chazhi; i++) { + newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]); + } + } + return newcolor; +} + +function getDataRange(minData, maxData) { + var limit = 0; + var range = maxData - minData; + if (range >= 10000) { + limit = 1000; + } else if (range >= 1000) { + limit = 100; + } else if (range >= 100) { + limit = 10; + } else if (range >= 10) { + limit = 5; + } else if (range >= 1) { + limit = 1; + } else if (range >= 0.1) { + limit = 0.1; + } else if (range >= 0.01) { + limit = 0.01; + } else if (range >= 0.001) { + limit = 0.001; + } else if (range >= 0.0001) { + limit = 0.0001; + } else if (range >= 0.00001) { + limit = 0.00001; + } else { + limit = 0.000001; + } + return { + minRange: findRange(minData, 'lower', limit), + maxRange: findRange(maxData, 'upper', limit) + }; +} + +function measureText(text, fontSize, context) { + var width = 0; + text = String(text); + // #ifdef MP-ALIPAY || MP-BAIDU || APP-NVUE + context = false; + // #endif + if (context !== false && context !== undefined && context.setFontSize && context.measureText) { + context.setFontSize(fontSize); + return context.measureText(text).width; + } else { + var text = text.split(''); + for (let i = 0; i < text.length; i++) { + let item = text[i]; + if (/[a-zA-Z]/.test(item)) { + width += 7; + } else if (/[0-9]/.test(item)) { + width += 5.5; + } else if (/\./.test(item)) { + width += 2.7; + } else if (/-/.test(item)) { + width += 3.25; + } else if (/:/.test(item)) { + width += 2.5; + } else if (/[\u4e00-\u9fa5]/.test(item)) { + width += 10; + } else if (/\(|\)/.test(item)) { + width += 3.73; + } else if (/\s/.test(item)) { + width += 2.5; + } else if (/%/.test(item)) { + width += 8; + } else { + width += 10; + } + } + return width * fontSize / 10; + } +} + +function dataCombine(series) { + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data); + }, []); +} + +function dataCombineStack(series, len) { + var sum = new Array(len); + for (var j = 0; j < sum.length; j++) { + sum[j] = 0; + } + for (var i = 0; i < series.length; i++) { + for (var j = 0; j < sum.length; j++) { + sum[j] += series[i].data[j]; + } + } + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data).concat(sum); + }, []); +} + +function getTouches(touches, opts, e) { + let x, y; + if (touches.clientX) { + if (opts.rotate) { + y = opts.height - touches.clientX * opts.pix; + x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } else { + x = touches.clientX * opts.pix; + y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pix / 2) * (opts.pix - 1)) * opts.pix; + } + } else { + if (opts.rotate) { + y = opts.height - touches.x * opts.pix; + x = touches.y * opts.pix; + } else { + x = touches.x * opts.pix; + y = touches.y * opts.pix; + } + } + return { + x: x, + y: y + } +} + +function getSeriesDataItem(series, index, group) { + var data = []; + var newSeries = []; + var indexIsArr = index.constructor.toString().indexOf('Array') > -1; + if(indexIsArr){ + let tempSeries = filterSeries(series); + for (var i = 0; i < group.length; i++) { + newSeries.push(tempSeries[group[i]]); + } + }else{ + newSeries = series; + }; + for (let i = 0; i < newSeries.length; i++) { + let item = newSeries[i]; + let tmpindex = -1; + if(indexIsArr){ + tmpindex = index[i]; + }else{ + tmpindex = index; + } + if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) { + let seriesItem = {}; + seriesItem.color = item.color; + seriesItem.type = item.type; + seriesItem.style = item.style; + seriesItem.pointShape = item.pointShape; + seriesItem.disableLegend = item.disableLegend; + seriesItem.legendShape = item.legendShape; + seriesItem.name = item.name; + seriesItem.show = item.show; + seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex]; + data.push(seriesItem); + } + } + return data; +} + +function getMaxTextListLength(list, fontSize, context) { + var lengthList = list.map(function(item) { + return measureText(item, fontSize, context); + }); + return Math.max.apply(null, lengthList); +} + +function getRadarCoordinateSeries(length) { + var eachAngle = 2 * Math.PI / length; + var CoordinateSeries = []; + for (var i = 0; i < length; i++) { + CoordinateSeries.push(eachAngle * i); + } + return CoordinateSeries.map(function(item) { + return -1 * item + Math.PI / 2; + }); +} + +function getToolTipData(seriesData, opts, index, group, categories) { + var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {}; + var calPoints = opts.chartData.calPoints?opts.chartData.calPoints:[]; + let points = {}; + if(group.length > 0){ + let filterPoints = []; + for (let i = 0; i < group.length; i++) { + filterPoints.push(calPoints[group[i]]) + } + points = filterPoints[0][index[0]]; + }else{ + for (let i = 0; i < calPoints.length; i++) { + if(calPoints[i][index]){ + points = calPoints[i][index]; + break; + } + } + }; + var textList = seriesData.map(function(item) { + let titleText = null; + if (opts.categories && opts.categories.length>0) { + titleText = categories[index]; + }; + return { + text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data, + color: item.color, + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + }); + var offset = { + x: Math.round(points.x), + y: Math.round(points.y) + }; + return { + textList: textList, + offset: offset + }; +} + +function getMixToolTipData(seriesData, opts, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2; + var textList = seriesData.map(function(item) { + return { + text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data, + color: item.color, + disableLegend: item.disableLegend ? true : false, + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + }); + textList = textList.filter(function(item) { + if (item.disableLegend !== true) { + return item; + } + }); + var offset = { + x: Math.round(points), + y: 0 + }; + return { + textList: textList, + offset: offset + }; +} + +function getCandleToolTipData(series, seriesData, opts, index, categories, extra) { + var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + var calPoints = opts.chartData.calPoints; + let upColor = extra.color.upFill; + let downColor = extra.color.downFill; + //颜色顺序为开盘,收盘,最低,最高 + let color = [upColor, upColor, downColor, upColor]; + var textList = []; + seriesData.map(function(item) { + if (index == 0) { + if (item.data[1] - item.data[0] < 0) { + color[1] = downColor; + } else { + color[1] = upColor; + } + } else { + if (item.data[0] < series[index - 1][1]) { + color[0] = downColor; + } + if (item.data[1] < item.data[0]) { + color[1] = downColor; + } + if (item.data[2] > series[index - 1][1]) { + color[2] = upColor; + } + if (item.data[3] < series[index - 1][1]) { + color[3] = downColor; + } + } + let text1 = { + text: '开盘:' + item.data[0], + color: color[0], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text2 = { + text: '收盘:' + item.data[1], + color: color[1], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text3 = { + text: '最低:' + item.data[2], + color: color[2], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + let text4 = { + text: '最高:' + item.data[3], + color: color[3], + legendShape: opts.extra.tooltip.legendShape == 'auto'? item.legendShape : opts.extra.tooltip.legendShape + }; + textList.push(text1, text2, text3, text4); + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + offset.x = Math.round(validCalPoints[0][0].x); + return { + textList: textList, + offset: offset + }; +} + +function filterSeries(series) { + let tempSeries = []; + for (let i = 0; i < series.length; i++) { + if (series[i].show == true) { + tempSeries.push(series[i]) + } + } + return tempSeries; +} + +function findCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let xAxisPoints = []; + if (calPoints && calPoints.length > 0) { + if (!opts.categories) { + spacing = 0; + }else{ + for (let i = 1; i < opts.chartData.xAxisPoints.length; i++) { + xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing); + } + if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') { + xAxisPoints = opts.chartData.xAxisPoints; + } + } + if (isInExactChartArea(currentPoints, opts, config)) { + if (!opts.categories) { + let timePoints = Array(calPoints.length); + for (let i = 0; i < calPoints.length; i++) { + timePoints[i] = Array(calPoints[i].length) + for (let j = 0; j < calPoints[i].length; j++) { + timePoints[i][j] = (Math.abs(calPoints[i][j].x - currentPoints.x)); + } + }; + let pointValue = Array(timePoints.length); + let pointIndex = Array(timePoints.length); + for (let i = 0; i < timePoints.length; i++) { + pointValue[i] = Math.min.apply(null, timePoints[i]); + pointIndex[i] = timePoints[i].indexOf(pointValue[i]); + } + let minValue = Math.min.apply(null, pointValue); + current.index = []; + for (let i = 0; i < pointValue.length; i++) { + if(pointValue[i] == minValue){ + current.group.push(i); + current.index.push(pointIndex[i]); + } + }; + }else{ + xAxisPoints.forEach(function(item, index) { + if (currentPoints.x + offset + spacing > item) { + current.index = index; + } + }); + } + } + } + return current; +} + +function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var current={ index:-1, group:[] }; + var spacing = opts.chartData.eachSpacing / 2; + let yAxisPoints = opts.chartData.yAxisPoints; + if (calPoints && calPoints.length > 0) { + if (isInExactChartArea(currentPoints, opts, config)) { + yAxisPoints.forEach(function(item, index) { + if (currentPoints.y + offset + spacing > item) { + current.index = index; + } + }); + } + } + return current; +} + +function findLegendIndex(currentPoints, legendData, opts) { + let currentIndex = -1; + let gap = 0; + if (isInExactLegendArea(currentPoints, legendData.area)) { + let points = legendData.points; + let index = -1; + for (let i = 0, len = points.length; i < len; i++) { + let item = points[i]; + for (let j = 0; j < item.length; j++) { + index += 1; + let area = item[j]['area']; + if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) { + currentIndex = index; + break; + } + } + } + return currentIndex; + } + return currentIndex; +} + +function isInExactLegendArea(currentPoints, area) { + return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y; +} + +function isInExactChartArea(currentPoints, opts, config) { + 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]; +} + +function findRadarChartCurrentIndex(currentPoints, radarData, count) { + var eachAngleArea = 2 * Math.PI / count; + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { + var fixAngle = function fixAngle(angle) { + if (angle < 0) { + angle += 2 * Math.PI; + } + if (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + }; + var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); + angle = -1 * angle; + if (angle < 0) { + angle += 2 * Math.PI; + } + var angleList = radarData.angleList.map(function(item) { + item = fixAngle(-1 * item); + return item; + }); + angleList.forEach(function(item, index) { + var rangeStart = fixAngle(item - eachAngleArea / 2); + var rangeEnd = fixAngle(item + eachAngleArea / 2); + if (rangeEnd < rangeStart) { + rangeEnd += 2 * Math.PI; + } + if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) { + currentIndex = index; + } + }); + } + return currentIndex; +} + +function findFunnelChartCurrentIndex(currentPoints, funnelData) { + var currentIndex = -1; + for (var i = 0, len = funnelData.series.length; i < len; i++) { + var item = funnelData.series[i]; + if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findWordChartCurrentIndex(currentPoints, wordData) { + var currentIndex = -1; + for (var i = 0, len = wordData.length; i < len; i++) { + var item = wordData[i]; + if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findMapChartCurrentIndex(currentPoints, opts) { + var currentIndex = -1; + var cData = opts.chartData.mapData; + var data = opts.series; + var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset); + var poi = [tmp.x, tmp.y]; + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i].geometry.coordinates; + if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findRoseChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.rose && opts.extra.rose.offsetAngle){ + angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function findPieChartCurrentIndex(currentPoints, pieData, opts) { + var currentIndex = -1; + var series = getPieDataPoints(pieData.series); + if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + if(opts.extra.pie && opts.extra.pie.offsetAngle){ + angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180; + } + if(opts.extra.ring && opts.extra.ring.offsetAngle){ + angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180; + } + for (var i = 0, len = series.length; i < len; i++) { + if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + return currentIndex; +} + +function isInExactPieChartArea(currentPoints, center, radius) { + return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); +} + + +function splitPoints(points,eachSeries) { + var newPoints = []; + var items = []; + points.forEach(function(item, index) { + if(eachSeries.connectNulls){ + if (item !== null) { + items.push(item); + } + }else{ + if (item !== null) { + items.push(item); + } else { + if (items.length) { + newPoints.push(items); + } + items = []; + } + } + + }); + if (items.length) { + newPoints.push(items); + } + return newPoints; +} + + +function calLegendData(series, opts, config, chartData, context) { + let legendData = { + area: { + start: { + x: 0, + y: 0 + }, + end: { + x: 0, + y: 0 + }, + width: 0, + height: 0, + wholeWidth: 0, + wholeHeight: 0 + }, + points: [], + widthArr: [], + heightArr: [] + }; + if (opts.legend.show === false) { + chartData.legendData = legendData; + return legendData; + } + let padding = opts.legend.padding * opts.pix; + let margin = opts.legend.margin * opts.pix; + let fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + let legendList = []; + let widthCount = 0; + let widthCountArr = []; + let currentRow = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + const legendText = item.legendText ? item.legendText : item.name; + let itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + widthCount = itemWidth; + currentRow = [item]; + } else { + widthCount += itemWidth; + currentRow.push(item); + } + } + if (currentRow.length) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix); + legendData.widthArr = widthCountArr; + let legendWidth = Math.max.apply(null, widthCountArr); + switch (opts.legend.float) { + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding; + legendData.area.end.x = opts.width - opts.area[1]; + break; + default: + legendData.area.start.x = (opts.width - legendWidth) / 2 - padding; + legendData.area.end.x = (opts.width + legendWidth) / 2 + padding; + } + legendData.area.width = legendWidth + 2 * padding; + legendData.area.wholeWidth = legendWidth + 2 * padding; + legendData.area.height = legendList.length * lineHeight + 2 * padding; + legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin; + legendData.points = legendList; + } + } else { + let len = series.length; + let maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding; + let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len); + legendData.area.height = maxLength * lineHeight + padding * 2; + legendData.area.wholeHeight = maxLength * lineHeight + padding * 2; + switch (opts.legend.float) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + default: + legendData.area.start.y = (opts.height - legendData.area.height) / 2; + legendData.area.end.y = (opts.height + legendData.area.height) / 2; + } + let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1); + let currentRow = []; + for (let i = 0; i < lineNum; i++) { + let temp = series.slice(i * maxLength, i * maxLength + maxLength); + currentRow.push(temp); + } + legendData.points = currentRow; + if (currentRow.length) { + for (let i = 0; i < currentRow.length; i++) { + let item = currentRow[i]; + let maxWidth = 0; + for (let j = 0; j < item.length; j++) { + let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix; + if (itemWidth > maxWidth) { + maxWidth = itemWidth; + } + } + legendData.widthArr.push(maxWidth); + legendData.heightArr.push(item.length * lineHeight + padding * 2); + } + let legendWidth = 0 + for (let i = 0; i < legendData.widthArr.length; i++) { + legendWidth += legendData.widthArr[i]; + } + legendData.area.width = legendWidth - opts.legend.itemGap * opts.pix + 2 * padding; + legendData.area.wholeWidth = legendData.area.width + padding; + } + } + switch (opts.legend.position) { + case 'top': + legendData.area.start.y = opts.area[0] + margin; + legendData.area.end.y = opts.area[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin; + legendData.area.end.y = opts.height - opts.area[2] - margin; + break; + case 'left': + legendData.area.start.x = opts.area[3]; + legendData.area.end.x = opts.area[3] + legendData.area.width; + break; + case 'right': + legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width; + legendData.area.end.x = opts.width - opts.area[1]; + break; + } + chartData.legendData = legendData; + return legendData; +} + +function calCategoriesData(categories, opts, config, eachSpacing, context) { + var result = { + angle: 0, + xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix + }; + var fontSize = opts.xAxis.fontSize * opts.pix; + var categoriesTextLenth = categories.map(function(item,index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item; + return measureText(String(xitem), fontSize, context); + }); + var maxTextLength = Math.max.apply(this, categoriesTextLenth); + if (opts.xAxis.rotateLabel == true) { + result.angle = opts.xAxis.rotateAngle * Math.PI / 180; + let tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle)) + tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight; + result.xAxisHeight = tempHeight; + } + if (opts.enableScroll && opts.xAxis.scrollShow) { + result.xAxisHeight += 6 * opts.pix; + } + if (opts.xAxis.disabled){ + result.xAxisHeight = 0; + } + return result; +} + +function getXAxisTextList(series, opts, config, stack) { + var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[0]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + + var minData = 0; + var maxData = 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + //为了兼容v1.9.0之前的项目 + if (index > -1) { + if (typeof opts.xAxis.data[index].min === 'number') { + minData = Math.min(opts.xAxis.data[index].min, minData); + } + if (typeof opts.xAxis.data[index].max === 'number') { + maxData = Math.max(opts.xAxis.data[index].max, maxData); + } + } else { + if (typeof opts.xAxis.min === 'number') { + minData = Math.min(opts.xAxis.min, minData); + } + if (typeof opts.xAxis.max === 'number') { + maxData = Math.max(opts.xAxis.max, maxData); + } + } + if (minData === maxData) { + var rangeSpan = maxData || 10; + maxData += rangeSpan; + } + //var dataRange = getDataRange(minData, maxData); + var minRange = minData; + var maxRange = maxData; + var range = []; + var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber; + for (var i = 0; i <= opts.xAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range; +} + +function calXAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.bar); + var result = { + angle: 0, + xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix + }; + result.ranges = getXAxisTextList(series, opts, config, columnstyle.type); + result.rangesFormat = result.ranges.map(function(item) { + //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2); + item = util.toFixed(item, 2); + return item; + }); + var xAxisScaleValues = result.ranges.map(function(item) { + // 如果刻度值是浮点数,则保留两位小数 + item = util.toFixed(item, 2); + // 若有自定义格式则调用自定义的格式化函数 + //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item; + return item; + }); + result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config)); + // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长 + var eachSpacing = result.eachSpacing; + var textLength = xAxisScaleValues.map(function(item) { + return measureText(item, opts.xAxis.fontSize * opts.pix, context); + }); + if (opts.xAxis.disabled === true) { + result.xAxisHeight = 0; + } + return result; +} + +function getRadarDataPoints(angleList, center, radius, series, opts) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var radarOption = opts.extra.radar || {}; + radarOption.max = radarOption.max || 0; + var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + var data = []; + for (let i = 0; i < series.length; i++) { + let each = series[i]; + let listItem = {}; + listItem.color = each.color; + listItem.legendShape = each.legendShape; + listItem.pointShape = each.pointShape; + listItem.data = []; + each.data.forEach(function(item, index) { + let tmp = {}; + tmp.angle = angleList[index]; + tmp.proportion = item / maxData; + tmp.value = item; + tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center); + listItem.data.push(tmp); + }); + data.push(listItem); + } + return data; +} + +function getPieDataPoints(series, radius) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var count = 0; + var _start_ = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + } + item._radius_ = radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._proportion_ * Math.PI; + } + return series; +} + +function getFunnelDataPoints(series, radius, option, eachSpacing) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + for (let i = 0; i < series.length; i++) { + if(option.type == 'funnel'){ + series[i].radius = series[i].data / series[0].data * radius * process; + }else{ + series[i].radius = (eachSpacing * (series.length - i)) / (eachSpacing * series.length) * radius * process; + } + series[i]._proportion_ = series[i].data / series[0].data; + } + // if(option.type !== 'pyramid'){ + // series.reverse(); + // } + return series; +} + +function getRoseDataPoints(series, type, minRadius, radius) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var count = 0; + var _start_ = 0; + var dataArr = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + dataArr.push(item.data); + } + var minData = Math.min.apply(null, dataArr); + var maxData = Math.max.apply(null, dataArr); + var radiusLength = radius - minRadius; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + item._rose_proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + if(type == 'area'){ + item._rose_proportion_ = 1 / series.length * process; + }else{ + item._rose_proportion_ = item.data / count * process; + } + } + item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)) || radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._rose_proportion_ * Math.PI; + } + return series; +} + +function getArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if(arcbarOption.direction == 'ccw'){ + if (arcbarOption.startAngle < arcbarOption.endAngle) { + totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + }else{ + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if(arcbarOption.direction == 'ccw'){ + item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process ; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'circle') { + totalAngle = 2; + } else { + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else { + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeAxisPoints(categories, startAngle, endAngle) { + let totalAngle; + if (endAngle < startAngle) { + totalAngle = 2 + endAngle - startAngle; + } else { + totalAngle = startAngle - endAngle; + } + let tempStartAngle = startAngle; + for (let i = 0; i < categories.length; i++) { + categories[i].value = categories[i].value === null ? 0 : categories[i].value; + categories[i]._startAngle_ = tempStartAngle; + categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle; + if (categories[i]._endAngle_ >= 2) { + categories[i]._endAngle_ = categories[i]._endAngle_ % 2; + } + tempStartAngle = categories[i]._endAngle_; + } + return categories; +} + +function getGaugeDataPoints(series, categories, gaugeOption) { + let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (gaugeOption.pointer.color == 'auto') { + for (let i = 0; i < categories.length; i++) { + if (item.data <= categories[i].value) { + item.color = categories[i].color; + break; + } + } + } else { + item.color = gaugeOption.pointer.color; + } + let totalAngle; + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle; + item._oldAngle_ = gaugeOption.oldAngle; + if (gaugeOption.oldAngle < gaugeOption.endAngle) { + item._oldAngle_ += 2; + } + if (item.data >= gaugeOption.oldData) { + item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle; + } else { + item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getPieTextMaxLength(series, config, context, opts) { + series = getPieDataPoints(series); + let maxLength = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context)); + } + return maxLength; +} + +function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + if (opts.type == 'mix') { + seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0; + } else { + seriesGap = opts.extra.column.seriesGap * opts.pix || 0; + categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + } + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix); + } + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixBarData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + var seriesGap = 0; + var categoryGap = 0; + seriesGap = opts.extra.bar.seriesGap * opts.pix || 0; + categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + seriesGap = Math.min(seriesGap, eachSpacing / columnLen) + categoryGap = Math.min(categoryGap, eachSpacing / columnLen) + item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap); + return item; + }); +} + +function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item) { + if (item === null) { + return null; + } + item.width = eachSpacing - 2 * categoryGap; + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (index > 0) { + item.width -= border; + } + return item; + }); +} + +function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.column.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) { + var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0; + return points.map(function(item, indexn) { + if (item === null) { + return null; + } + item.width = Math.ceil(eachSpacing - 2 * categoryGap); + if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) { + item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix); + } + if (item.width <= 0) { + item.width = 1; + } + return item; + }); +} + +function getXAxisPoints(categories, opts, config) { + var spacingValid = opts.width - opts.area[1] - opts.area[3]; + var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length; + if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') { + dataCount -= 1; + } + var widthRatio = 0; + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + widthRatio = opts.extra.mount.widthRatio - 1; + dataCount += widthRatio; + } + var eachSpacing = spacingValid / dataCount; + var xAxisPoints = []; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + categories.forEach(function(item, index) { + xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing); + }); + if (opts.xAxis.boundaryGap !== 'justify') { + if (opts.enableScroll === true) { + xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing); + } else { + xAxisPoints.push(endX); + } + } + return { + xAxisPoints: xAxisPoints, + startX: startX, + endX: endX, + eachSpacing: eachSpacing + }; +} + +function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var cPoints = []; + item.forEach(function(items, indexs) { + var point = {}; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + var value = items.value || items; + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + cPoints.push(point); + }); + points.push(cPoints); + } + }); + return points; +} + +function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var boundaryGap = 'center'; + if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' ) { + boundaryGap = opts.xAxis.boundaryGap; + } + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + if(opts.type == 'bubble'){ + point.r = item[2]; + point.t = item[3]; + } + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process){ + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var boundaryGap = opts.xAxis.boundaryGap; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + if(lineOption.animation == 'vertical'){ + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + } else { + value = item.value; + } + } + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - height - opts.area[2]; + points.push(point); + }else{ + point.x = xAxisPoints[0] + eachSpacing * index * process; + var value = item; + if (boundaryGap == 'center') { + point.x += eachSpacing / 2; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + } + }); + return points; +} + +function getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process){ + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + let xranges, xminRange, xmaxRange; + xranges = [].concat(opts.chartData.xAxisData.ranges); + xminRange = xranges.shift(); + xmaxRange = xranges.pop(); + value = item[1]; + point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange); + } else { + value = item.value; + } + } + point.x += eachSpacing / 2; + var height = validHeight * (value * process - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) { + var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + var mountWidth = eachSpacing * mountOption.widthRatio; + series.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + point.x += eachSpacing / 2; + var value = item.data; + var height = validHeight * (value * process - minRange) / (maxRange - minRange); + point.y = opts.height - height - opts.area[2]; + point.value = value; + point.width = mountWidth; + points.push(point); + } + }); + return points; +} + +function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + var validWidth = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validWidth * (value - minRange) / (maxRange - minRange); + height *= process; + point.height = height; + point.value = value; + point.x = height + opts.area[3]; + points.push(point); + } + }); + return points; +} + +function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + point.y0 = opts.height - Math.round(heightc) - opts.area[2]; + points.push(point); + } + }); + return points; +} + +function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.width - opts.area[1] - opts.area[3]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.y = yAxisPoints[index]; + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value; + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.height = height - heightc; + point.x = opts.area[3] + height; + point.x0 = opts.area[3] + heightc; + points.push(point); + } + }); + return points; +} + +function getYAxisTextList(series, opts, config, stack, yData) { + var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1; + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (item.constructor.toString().indexOf('Array') > -1) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (item.constructor.toString().indexOf('Array') > -1) { + if (opts.type == 'candle') { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item[1]); + } + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + var minData = yData.min || 0; + var maxData = yData.max || 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + if (minData === maxData) { + if(maxData == 0){ + maxData = 10; + }else{ + minData = 0; + } + } + var dataRange = getDataRange(minData, maxData); + var minRange = (yData.min === undefined || yData.min === null) ? dataRange.minRange : yData.min; + var maxRange = (yData.max === undefined || yData.max === null) ? dataRange.maxRange : yData.max; + var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber; + var range = []; + for (var i = 0; i <= opts.yAxis.splitNumber; i++) { + range.push(minRange + eachRange * i); + } + return range.reverse(); +} + +function calYAxisData(series, opts, config, context) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.column); + //如果是多Y轴,重新计算 + var YLength = opts.yAxis.data.length; + var newSeries = new Array(YLength); + if (YLength > 0) { + for (let i = 0; i < YLength; i++) { + newSeries[i] = []; + for (let j = 0; j < series.length; j++) { + if (series[j].index == i) { + newSeries[i].push(series[j]); + } + } + } + var rangesArr = new Array(YLength); + var rangesFormatArr = new Array(YLength); + var yAxisWidthArr = new Array(YLength); + + for (let i = 0; i < YLength; i++) { + let yData = opts.yAxis.data[i]; + //如果总开关不显示,强制每个Y轴为不显示 + if (opts.yAxis.disabled == true) { + yData.disabled = true; + } + if(yData.type === 'categories'){ + if(!yData.formatter){ + yData.formatter = (val,index,opts) => {return val + (yData.unit || '')}; + } + yData.categories = yData.categories || opts.categories; + rangesArr[i] = yData.categories; + }else{ + if(!yData.formatter){ + yData.formatter = (val,index,opts) => {return util.toFixed(val, yData.tofix || 0) + (yData.unit || '')}; + } + rangesArr[i] = getYAxisTextList(newSeries[i], opts, config, columnstyle.type, yData, i); + } + let yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize; + yAxisWidthArr[i] = { + position: yData.position ? yData.position : 'left', + width: 0 + }; + rangesFormatArr[i] = rangesArr[i].map(function(items,index) { + items = yData.formatter(items,index,opts); + yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes, context) + 5); + return items; + }); + let calibration = yData.calibration ? 4 * opts.pix : 0; + yAxisWidthArr[i].width += calibration + 3 * opts.pix; + if (yData.disabled === true) { + yAxisWidthArr[i].width = 0; + } + } + } else { + var rangesArr = new Array(1); + var rangesFormatArr = new Array(1); + var yAxisWidthArr = new Array(1); + if(opts.type === 'bar'){ + rangesArr[0] = opts.categories; + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val,index,opts) => {return val + (opts.yAxis.unit || '')} + } + }else{ + if(!opts.yAxis.formatter){ + opts.yAxis.formatter = (val,index,opts) => {return val.toFixed(opts.yAxis.tofix ) + (opts.yAxis.unit || '')} + } + rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {}); + } + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize; + rangesFormatArr[0] = rangesArr[0].map(function(item,index) { + item = opts.yAxis.formatter(item,index,opts); + yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5); + return item; + }); + yAxisWidthArr[0].width += 3 * opts.pix; + if (opts.yAxis.disabled === true) { + yAxisWidthArr[0] = { + position: 'left', + width: 0 + }; + opts.yAxis.data[0] = { + disabled: true + }; + } else { + opts.yAxis.data[0] = { + disabled: false, + position: 'left', + max: opts.yAxis.max, + min: opts.yAxis.min, + formatter: opts.yAxis.formatter + }; + if(opts.type === 'bar'){ + opts.yAxis.data[0].categories = opts.categories; + opts.yAxis.data[0].type = 'categories'; + } + } + } + return { + rangesFormat: rangesFormatArr, + ranges: rangesArr, + yAxisWidth: yAxisWidthArr + }; +} + +function calTooltipYAxisData(point, series, opts, config, eachSpacing) { + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let minAxis = opts.area[0]; + let items = []; + for (let i = 0; i < ranges.length; i++) { + let maxVal = Math.max.apply(this, ranges[i]); + let minVal = Math.min.apply(this, ranges[i]); + let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid; + item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0); + items.push(String(item)) + } + return items; +} + +function calMarkLineData(points, opts) { + let minRange, maxRange; + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + for (let i = 0; i < points.length; i++) { + points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0; + let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]); + minRange = range.pop(); + maxRange = range.shift(); + let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange); + points[i].y = opts.height - Math.round(height) - opts.area[2]; + } + return points; +} + +function contextRotate(context, opts) { + if (opts.rotateLock !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + } else if (opts._rotate_ !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + opts._rotate_ = true; + } +} + +function drawPointShape(points, color, shape, context, opts) { + context.beginPath(); + if (opts.dataPointShapeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'none') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawActivePoint(points, color, shape, context, opts, option, seriesIndex) { + if(!opts.tooltip){ + return + } + if(opts.tooltip.group.length>0 && opts.tooltip.group.includes(seriesIndex) == false){ + return + } + var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)]; + context.beginPath(); + if (option.activeType == 'hollow') { + context.setStrokeStyle(color); + context.setFillStyle(opts.background); + context.setLineWidth(2 * opts.pix); + } else { + context.setStrokeStyle("#ffffff"); + context.setFillStyle(color); + context.setLineWidth(1 * opts.pix); + } + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index ) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null && pointIndex == index) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'none') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawRingTitle(opts, config, context, center) { + var titlefontSize = opts.title.fontSize || config.titleFontSize; + var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; + var title = opts.title.name || ''; + var subtitle = opts.subtitle.name || ''; + var titleFontColor = opts.title.color || opts.fontColor; + var subtitleFontColor = opts.subtitle.color || opts.fontColor; + var titleHeight = title ? titlefontSize : 0; + var subtitleHeight = subtitle ? subtitlefontSize : 0; + var margin = 5; + if (subtitle) { + var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context); + var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX|| 0) * opts.pix ; + var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix; + if (title) { + startY += (titleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(subtitlefontSize * opts.pix); + context.setFillStyle(subtitleFontColor); + context.fillText(subtitle, startX, startY); + context.closePath(); + context.stroke(); + } + if (title) { + var _textWidth = measureText(title, titlefontSize * opts.pix, context); + var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0); + var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix; + if (subtitle) { + _startY -= (subtitleHeight * opts.pix + margin) / 2; + } + context.beginPath(); + context.setFontSize(titlefontSize * opts.pix); + context.setFillStyle(titleFontColor); + context.fillText(title, _startX, _startY); + context.closePath(); + context.stroke(); + } +} + +function drawPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawColumePointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + var Position = opts.extra.column.labelPosition; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + if (data[index].constructor.toString().indexOf('Array')>-1) { + value = data[index][1]; + } else { + value = data[index].value + } + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + var startY = item.y - 4 * opts.pix + textOffset * opts.pix; + if(item.y > series.zeroPoints){ + startY = item.y + textOffset * opts.pix + fontSize; + } + if(Position == 'insideTop'){ + startY = item.y + fontSize + textOffset * opts.pix; + if(item.y > series.zeroPoints){ + startY = item.y - textOffset * opts.pix - 4 * opts.pix; + } + } + if(Position == 'center'){ + startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize)/2; + if(series.zeroPoints < opts.height - opts.area[2]){ + startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize)/2; + } + if(item.y > series.zeroPoints){ + startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize)/2; + } + if(opts.extra.column.type == 'stack'){ + startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize)/2; + } + } + if(Position == 'bottom'){ + startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix; + if(series.zeroPoints < opts.height - opts.area[2]){ + startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix; + } + if(item.y > series.zeroPoints){ + startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix; + } + if(opts.extra.column.type == 'stack'){ + startY = item.y0 + textOffset * opts.pix - 4 * opts.pix; + } + } + context.fillText(String(formatVal), item.x, startY); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawMountPointText(points, series, config, context, opts, zeroPoints) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + var Position = opts.extra.mount.labelPosition; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series[index].textColor || opts.fontColor); + var value = item.value + var formatVal = series[index].formatter ? series[index].formatter(value,index,series,opts) : value; + context.setTextAlign('center'); + var startY = item.y - 4 * opts.pix + textOffset * opts.pix; + if(item.y > zeroPoints){ + startY = item.y + textOffset * opts.pix + fontSize; + } + context.fillText(String(formatVal), item.x, startY); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + } + }); +} + +function drawBarPointText(points, series, config, context, opts) { + // 绘制数据文案 + var data = series.data; + var textOffset = series.textOffset ? series.textOffset : 0; + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(series.textColor || opts.fontColor); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + value = data[index].value ; + } + var formatVal = series.formatter ? series.formatter(value,index,series,opts) : value; + context.setTextAlign('left'); + context.fillText(String(formatVal), item.x + 4 * opts.pix , item.y + fontSize / 2 - 3 ); + context.closePath(); + context.stroke(); + } + }); +} + +function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) { + radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix; + radius = radius < 10 ? 10 : radius; + let totalAngle; + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber; + let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber; + let nowAngle = gaugeOption.startAngle; + let nowNumber = gaugeOption.startNumber; + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + var pos = { + x: radius * Math.cos(nowAngle * Math.PI), + y: radius * Math.sin(nowAngle * Math.PI) + }; + var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber,i,opts) : nowNumber; + pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2; + pos.y += centerPosition.y; + var startX = pos.x; + var startY = pos.y; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(gaugeOption.labelColor || opts.fontColor); + context.fillText(labelText, startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + nowAngle += splitAngle; + if (nowAngle >= 2) { + nowAngle = nowAngle % 2; + } + nowNumber += splitNumber; + } +} + +function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { + var radarOption = opts.extra.radar || {}; + angleList.forEach(function(angle, index) { + if(radarOption.labelPointShow === true && opts.categories[index] !== ''){ + var posPoint = { + x: radius * Math.cos(angle), + y: radius * Math.sin(angle) + }; + var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition); + context.setFillStyle(radarOption.labelPointColor); + context.beginPath(); + context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false); + context.closePath(); + context.fill(); + } + if(radarOption.labelShow === true){ + var pos = { + x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle), + y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle) + }; + var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); + var startX = posRelativeCanvas.x; + var startY = posRelativeCanvas.y; + if (util.approximatelyEqual(pos.x, 0)) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2; + } else if (pos.x < 0) { + startX -= measureText(opts.categories[index] || '', config.fontSize, context); + } + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(radarOption.labelColor || opts.fontColor); + context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + } + }); + +} + +function drawPieText(series, opts, config, context, radius, center) { + var lineRadius = config.pieChartLinePadding; + var textObjectCollection = []; + var lastTextObject = null; + var seriesConvert = series.map(function(item,index) { + var text = item.formatter ? item.formatter(item,index,series,opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%'; + text = item.labelText ? item.labelText : text; + var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); + if (item._rose_proportion_) { + arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2); + } + var color = item.color; + var radius = item._radius_; + return { + arc: arc, + text: text, + color: color, + radius: radius, + textColor: item.textColor, + textSize: item.textSize, + labelShow: item.labelShow + }; + }); + for (let i = 0; i < seriesConvert.length; i++) { + let item = seriesConvert[i]; + // line end + let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius); + let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius); + // line start + let orginX2 = Math.cos(item.arc) * item.radius; + let orginY2 = Math.sin(item.arc) * item.radius; + // text start + let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; + let orginY3 = orginY1; + let textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context); + let startY = orginY3; + if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { + x: orginX3 + })) { + if (orginX3 > 0) { + startY = Math.min(orginY3, lastTextObject.start.y); + } else if (orginX1 < 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + if (orginY3 > 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + startY = Math.min(orginY3, lastTextObject.start.y); + } + } + } + if (orginX3 < 0) { + orginX3 -= textWidth; + } + let textObject = { + lineStart: { + x: orginX2, + y: orginY2 + }, + lineEnd: { + x: orginX1, + y: orginY1 + }, + start: { + x: orginX3, + y: startY + }, + width: textWidth, + height: config.fontSize, + text: item.text, + color: item.color, + textColor: item.textColor, + textSize: item.textSize + }; + lastTextObject = avoidCollision(textObject, lastTextObject); + textObjectCollection.push(lastTextObject); + } + for (let i = 0; i < textObjectCollection.length; i++) { + if(seriesConvert[i].labelShow === false){ + continue; + } + let item = textObjectCollection[i]; + let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); + let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); + let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); + context.setLineWidth(1 * opts.pix); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.beginPath(); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; + let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; + context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(textPosition.x + item.width, textPosition.y); + context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(item.textSize * opts.pix || config.fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(item.text, textStartX, textPosition.y + 3); + context.closePath(); + context.stroke(); + context.closePath(); + } +} + +function drawToolTipSplitLine(offsetX, opts, config, context) { + var toolTipOption = opts.extra.tooltip || {}; + toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType; + toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(offsetX, startY); + context.lineTo(offsetX, endY); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.xAxisLabel) { + let labelText = opts.categories[opts.tooltip.index]; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize, context); + let textX = offsetX - 0.5 * textWidth; + let textY = endY + 2 * opts.pix; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize); + context.closePath(); + context.stroke(); + } +} + +function drawMarkLine(opts, config, context) { + let markLineOption = assign({}, { + type: 'solid', + dashLength: 4, + data: [] + }, opts.extra.markLine); + let startX = opts.area[3]; + let endX = opts.width - opts.area[1]; + let points = calMarkLineData(markLineOption.data, opts); + for (let i = 0; i < points.length; i++) { + let item = assign({}, { + lineColor: '#DE4A42', + showLabel: false, + labelFontSize: 13, + labelPadding: 6, + labelFontColor: '#666666', + labelBgColor: '#DFE8FF', + labelBgOpacity: 0.8, + labelAlign: 'left', + labelOffsetX: 0, + labelOffsetY: 0, + }, points[i]); + if (markLineOption.type == 'dash') { + context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); + } + context.setStrokeStyle(item.lineColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, item.y); + context.lineTo(endX, item.y); + context.stroke(); + context.setLineDash([]); + if (item.showLabel) { + let fontSize = item.labelFontSize * opts.pix; + let labelText = item.labelText ? item.labelText : item.value; + context.setFontSize(fontSize); + let textWidth = measureText(labelText, fontSize, context); + let bgWidth = textWidth + item.labelPadding * opts.pix * 2; + let bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1]; + bgStartX += item.labelOffsetX; + let bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix; + bgStartY += item.labelOffsetY; + let textX = bgStartX + item.labelPadding * opts.pix; + let textY = item.y; + context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity)); + context.setStrokeStyle(item.labelBgColor); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix); + context.closePath(); + context.stroke(); + context.fill(); + context.setFontSize(fontSize); + context.setTextAlign('left'); + context.setFillStyle(item.labelFontColor); + context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix/2); + context.stroke(); + context.setTextAlign('left'); + } + } +} + +function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + gridType: 'solid', + dashLength: 4 + }, opts.extra.tooltip); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + context.beginPath(); + context.moveTo(startX, opts.tooltip.offset.y); + context.lineTo(endX, opts.tooltip.offset.y); + context.stroke(); + context.setLineDash([]); + if (toolTipOption.yAxisLabel) { + let boxPadding = toolTipOption.boxPadding * opts.pix; + let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing); + let widthArr = opts.chartData.yAxisData.yAxisWidth; + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + for (let i = 0; i < labelText.length; i++) { + context.setFontSize(toolTipOption.fontSize * opts.pix); + let textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context); + let bgStartX, bgEndX, bgWidth; + if (widthArr[i].position == 'left') { + bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix; + bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2); + } else { + bgStartX = tStartRight + 2 * opts.pix; + bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2); + } + bgWidth = bgEndX - bgStartX; + let textX = bgStartX + (bgWidth - textWidth) / 2; + let textY = opts.tooltip.offset.y; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pix); + context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding); + context.closePath(); + context.stroke(); + context.fill(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor); + context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize); + context.closePath(); + context.stroke(); + if (widthArr[i].position == 'left') { + tStartLeft -= (widthArr[i].width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix; + } + } + } +} + +function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08, + activeWidth: eachSpacing + }, opts.extra.column); + toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + +function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08 + }, opts.extra.bar); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect( startX ,offsetX - eachSpacing / 2 , endX - startX,eachSpacing); + context.closePath(); + context.fill(); + context.setFillStyle("#FFFFFF"); +} + + +function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + showBox: true, + showArrow: true, + showCategory: false, + bgColor: '#000000', + bgOpacity: 0.7, + borderColor: '#000000', + borderWidth: 0, + borderRadius: 0, + borderOpacity: 0.7, + boxPadding: 3, + fontColor: '#FFFFFF', + fontSize: 13, + lineHeight: 20, + legendShow: true, + legendShape: 'auto', + splitLine: true, + }, opts.extra.tooltip); + if(toolTipOption.showCategory==true && opts.categories){ + textList.unshift({text:opts.categories[opts.tooltip.index],color:null}) + } + var fontSize = toolTipOption.fontSize * opts.pix; + var lineHeight = toolTipOption.lineHeight * opts.pix; + var boxPadding = toolTipOption.boxPadding * opts.pix; + var legendWidth = fontSize; + var legendMarginRight = 5 * opts.pix; + if(toolTipOption.legendShow == false){ + legendWidth = 0; + legendMarginRight = 0; + } + var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0; + var isOverRightBorder = false; + if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') { + if (toolTipOption.splitLine == true) { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + } + offset = assign({ + x: 0, + y: 0 + }, offset); + offset.y -= 8 * opts.pix; + var textWidth = textList.map(function(item) { + return measureText(item.text, fontSize, context); + }); + var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth); + var toolTipHeight = 2 * boxPadding + textList.length * lineHeight; + if (toolTipOption.showBox == false) { + return + } + // if beyond the right border + if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) { + isOverRightBorder = true; + } + if (toolTipHeight + offset.y > opts.height) { + offset.y = opts.height - toolTipHeight; + } + // draw background rect + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity)); + context.setLineWidth(toolTipOption.borderWidth * opts.pix); + context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity)); + var radius = toolTipOption.borderRadius; + if (isOverRightBorder) { + // 增加左侧仍然超出的判断 + if(toolTipWidth + arrowWidth > opts.width){ + offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width) + } + if(toolTipWidth > offset.x){ + offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width) + } + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + } + context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, + Math.PI / 2, Math.PI, false); + context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } else { + if (toolTipOption.showArrow) { + context.moveTo(offset.x, offset.y + 10 * opts.pix); + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix); + } + context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, + false); + context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, + Math.PI / 2, false); + context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false); + if (toolTipOption.showArrow) { + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix); + context.lineTo(offset.x, offset.y + 10 * opts.pix); + } + } + context.closePath(); + context.fill(); + if (toolTipOption.borderWidth > 0) { + context.stroke(); + } + // draw legend + if(toolTipOption.legendShow){ + textList.forEach(function(item, index) { + if (item.color !== null) { + context.beginPath(); + context.setFillStyle(item.color); + var startX = offset.x + arrowWidth + 2 * boxPadding; + var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding; + } + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + default: + context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + } + }); + } + + // draw text list + textList.forEach(function(item, index) { + var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight; + } + var startY = offset.y + lineHeight * index + (lineHeight - fontSize)/2 - 1 + boxPadding + fontSize; + context.beginPath(); + context.setFontSize(fontSize); + context.setTextBaseline('normal'); + context.setFillStyle(toolTipOption.fontColor); + context.fillText(item.text, startX, startY); + context.closePath(); + context.stroke(); + }); +} + +function drawColumnDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + labelPosition: 'outside' + }, opts.extra.column); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + + // 计算0轴坐标 + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange); + let zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2]; + eachSeries.zeroPoints = zeroPoints; + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process); + var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y > zeroPoints ? zeroPoints : item.y; + const width = item.width; + const height = Math.abs(zeroPoints - item.y); + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + if(item.y > zeroPoints){ + columnOption.barBorderRadius = [0, 0,width / 2, width / 2]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x - item.width / 2 + 1; + var height = opts.height - item.y - opts.area[2]; + var height0 = opts.height - item.y0 - opts.area[2]; + if (seriesIndex > 0) { + height -= height0; + } + context.setFillStyle(fillColor); + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + } + }; + break; + case 'meter': + // 绘制温度计数据图 + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + //画背景颜色 + context.beginPath(); + if (seriesIndex == 0 && columnOption.meterBorder > 0) { + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(columnOption.meterBorder * opts.pix); + } + if(seriesIndex == 0){ + context.setFillStyle(columnOption.meterFillColor); + }else{ + context.setFillStyle(item.color || eachSeries.color); + } + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const top = item.y; + const width = item.width; + const height = zeroPoints - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + context.fill(); + }else{ + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + context.fill(); + } + if (seriesIndex == 0 && columnOption.meterBorder > 0) { + context.closePath(); + context.stroke(); + } + } + } + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawColumePointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawColumePointText(points, eachSeries, config, context, opts); + break; + case 'meter': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawColumePointText(points, eachSeries, config, context, opts); + break; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMountDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let mountOption = assign({}, { + type: 'mount', + widthRatio: 1, + borderWidth: 1, + barBorderCircle: false, + barBorderRadius: [], + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mount); + mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio; + mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + } + mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config); + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[0]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + + // 计算0轴坐标 + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange); + let zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2]; + + var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process); + switch (mountOption.type) { + case 'bar': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4) || mountOption.barBorderCircle === true) { + const left = startX; + const top = item.y > zeroPoints ? zeroPoints : item.y; + const width = item.width; + const height = Math.abs(zeroPoints - item.y); + if (mountOption.barBorderCircle) { + mountOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + if(item.y > zeroPoints){ + mountOption.barBorderRadius = [0, 0,width / 2, width / 2]; + } + let [r0, r1, r2, r3] = mountOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.lineTo(startX, zeroPoints); + context.lineTo(startX, item.y); + } + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.closePath(); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'triangle': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.lineTo(item.x, item.y); + context.lineTo(startX + item.width, zeroPoints); + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'mount': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.bezierCurveTo(item.x - item.width/4, zeroPoints, item.x - item.width/4, item.y, item.x, item.y); + context.bezierCurveTo(item.x + item.width/4, item.y, item.x + item.width/4, zeroPoints, startX + item.width, zeroPoints); + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + case 'sharp': + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - eachSpacing*mountOption.widthRatio/2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || series[i].color + var strokeColor = item.color || series[i].color + if (mountOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints); + //透明渐变 + if (mountOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity)); + grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex],mountOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + context.moveTo(startX, zeroPoints); + context.quadraticCurveTo(item.x - 0, zeroPoints - height/4, item.x, item.y); + context.quadraticCurveTo(item.x + 0, zeroPoints - height/4, startX + item.width, zeroPoints) + context.setStrokeStyle(strokeColor); + context.setFillStyle(fillColor); + if(mountOption.borderWidth > 0){ + context.setLineWidth(mountOption.borderWidth * opts.pix); + context.stroke(); + } + context.fill(); + } + }; + break; + } + + if (opts.dataLabel !== false && process === 1) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[0]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process); + drawMountPointText(points, series, config, context, opts, zeroPoints); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: points, + eachSpacing: eachSpacing + }; +} + +function drawBarDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let yAxisPoints = []; + let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/opts.categories.length; + for (let i = 0; i < opts.categories.length; i++) { + yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i); + } + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meterBorder: 4, + meterFillColor: '#FFFFFF', + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.bar); + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = yAxisPoints.length + 2; + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing); + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + //fix issues/I27B1N yyoinge & Joeshu + if (item !== null && i > leftNum && i < rightNum) { + //var startX = item.x - item.width / 2; + var startX = opts.area[3]; + var startY = item.y - item.width / 2; + var height = item.height; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, item.x, item.y); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex],columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle === true) { + const left = startX; + const width = item.width; + const top = item.y - item.width / 2; + const height = item.height; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + + context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2); + context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0); + context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2); + context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, startY); + context.lineTo(item.x, startY); + context.lineTo(item.x, startY + item.width); + context.lineTo(startX, startY + item.width); + context.lineTo(startX, startY); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + //context.stroke(); + context.fill(); + } + }; + break; + case 'stack': + // 绘制堆叠数据图 + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(points); + points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + context.beginPath(); + var fillColor = item.color || eachSeries.color; + var startX = item.x0; + context.setFillStyle(fillColor); + context.moveTo(startX, item.y - item.width/2); + context.fillRect(startX, item.y - item.width/2, item.height , item.width); + context.closePath(); + context.fill(); + } + }; + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.xAxisData.ranges); + maxRange = ranges.pop(); + minRange = ranges.shift(); + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process); + points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts); + drawBarPointText(points, eachSeries, config, context, opts); + break; + case 'stack': + var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + drawBarPointText(points, eachSeries, config, context, opts); + break; + } + }); + } + return { + yAxisPoints: yAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawCandleDataPoints(series, seriesMA, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var candleOption = assign({}, { + color: {}, + average: {} + }, opts.extra.candle); + candleOption.color = assign({}, { + upLine: '#f04864', + upFill: '#f04864', + downLine: '#2fc25b', + downFill: '#2fc25b' + }, candleOption.color); + candleOption.average = assign({}, { + show: false, + name: [], + day: [], + color: config.color + }, candleOption.average); + opts.extra.candle = candleOption; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let calPoints = []; + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + //画均线 + if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔 + seriesMA.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(1); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, + item.y); + } + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + } + }); + } + //画K线 + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList[0].length; i++) { + if (i > leftNum && i < rightNum) { + let item = splitPointList[0][i]; + context.beginPath(); + //如果上涨 + if (data[i][1] - data[i][0] > 0) { + context.setStrokeStyle(candleOption.color.upLine); + context.setFillStyle(candleOption.color.upFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } else { + context.setStrokeStyle(candleOption.color.downLine); + context.setFillStyle(candleOption.color.downFill); + context.setLineWidth(1 * opts.pix); + context.moveTo(item[3].x, item[3].y); //顶点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点 + context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[2].x, item[2].y); //底点 + context.lineTo(item[1].x, item[1].y); //收盘中间点 + context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点 + context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点 + context.lineTo(item[0].x, item[0].y); //开盘中间点 + context.moveTo(item[3].x, item[3].y); //顶点 + } + context.closePath(); + context.fill(); + context.stroke(); + } + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawAreaDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var areaOption = assign({}, { + type: 'straight', + opacity: 0.2, + addLine: false, + width: 2, + gradient: false, + activeType: 'none' + }, opts.extra.area); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let endY = opts.height - opts.area[2]; + let calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + let data = eachSeries.data; + let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数 + context.beginPath(); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(areaOption.width * opts.pix); + if (points.length > 1) { + let firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, endY); + // context.lineTo(item.x - eachSpacing / 2, endY); + // context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + //画连线 + if (areaOption.addLine) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(areaOption.width * opts.pix); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (areaOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + let ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (areaOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (areaOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + } + } + //画点 + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption,seriesIndex); + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawScatterDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var scatterOption = assign({}, { + type: 'circle' + }, opts.extra.scatter); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(eachSeries.color); + context.setLineWidth(1 * opts.pix); + var shape = eachSeries.pointShape; + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 2.5 * opts.pix, item.y); + context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'square') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'triangle') { + return; + } + context.closePath(); + context.fill(); + context.stroke(); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawBubbleDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var bubbleOption = assign({}, { + opacity: 1, + border:2 + }, opts.extra.bubble); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(bubbleOption.border * opts.pix); + context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity)); + points.forEach(function(item, index) { + context.moveTo(item.x + item.r, item.y); + context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false); + }); + context.closePath(); + context.fill(); + context.stroke(); + + if (opts.dataLabel !== false && process === 1) { + points.forEach(function(item, index) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || "#FFFFFF"); + context.setTextAlign('center'); + context.fillText(String(item.t), item.x, item.y + fontSize/2); + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + } + }); + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawLineDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var lineOption = assign({}, { + type: 'straight', + width: 2, + activeType: 'none', + linearType: 'none', + onShadow: false, + animation: 'vertical', + }, opts.extra.line); + lineOption.width *= opts.pix; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + var calPoints = []; + context.save(); + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + series.forEach(function(eachSeries, seriesIndex) { + // 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.moveTo(-10000, -10000); + context.lineTo(-10001, -10001); + context.stroke(); + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process); + calPoints.push(points); + var splitPointList = splitPoints(points,eachSeries); + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + var strokeColor = eachSeries.color; + if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) { + var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height/2, opts.chartData.xAxisData.endX, opts.height/2); + for (var i = 0; i < eachSeries.linearColor.length; i++) { + grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1)); + } + strokeColor = grd + } + context.setStrokeStyle(strokeColor); + if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) { + context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]); + }else{ + context.setShadow(0, 0, 0, 'rgba(0,0,0,0)'); + } + context.setLineWidth(lineOption.width); + splitPointList.forEach(function(points, index) { + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (lineOption.type === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } + if (lineOption.type === 'straight') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + if (lineOption.type === 'step') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, points[j - 1].y); + context.lineTo(item.x, item.y); + } + }; + } + context.moveTo(points[0].x, points[0].y); + } + }); + context.stroke(); + context.setLineDash([]); + if (opts.dataPointShape !== false) { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption); + }); + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context, opts); + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing + }; +} + +function drawMixDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + width: eachSpacing / 2, + barBorderCircle: false, + barBorderRadius: [], + seriesGap: 2, + linearType: 'none', + linearOpacity: 1, + customColor: [], + colorStop: 0, + }, opts.extra.mix.column); + let areaOption = assign({}, { + opacity: 0.2, + gradient: false + }, opts.extra.mix.area); + let lineOption = assign({}, { + width: 2 + }, opts.extra.mix.line); + let endY = opts.height - opts.area[2]; + let calPoints = []; + var columnIndex = 0; + var columnLength = 0; + series.forEach(function(eachSeries, seriesIndex) { + if (eachSeries.type == 'column') { + columnLength += 1; + } + }); + context.save(); + let leftNum = -2; + let rightNum = xAxisPoints.length + 2; + let leftSpace = 0; + let rightSpace = opts.width + eachSpacing; + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2; + rightNum = leftNum + opts.xAxis.itemCount + 4; + leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3]; + rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing; + } + columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config); + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + // 绘制柱状数据图 + if (eachSeries.type == 'column') { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + for (let i = 0; i < points.length; i++) { + let item = points[i]; + if (item !== null && i > leftNum && i < rightNum) { + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.beginPath(); + var fillColor = item.color || eachSeries.color + var strokeColor = item.color || eachSeries.color + if (columnOption.linearType !== 'none') { + var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]); + //透明渐变 + if (columnOption.linearType == 'opacity') { + grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } else { + grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity)); + grd.addColorStop(1, hexToRgb(fillColor, 1)); + } + fillColor = grd + } + // 圆角边框 + if ((columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4) || columnOption.barBorderCircle) { + const left = startX; + const top = item.y; + const width = item.width; + const height = opts.height - opts.area[2] - item.y; + if (columnOption.barBorderCircle) { + columnOption.barBorderRadius = [width / 2, width / 2, 0, 0]; + } + let [r0, r1, r2, r3] = columnOption.barBorderRadius; + let minRadius = Math.min(width/2,height/2); + r0 = r0 > minRadius ? minRadius : r0; + r1 = r1 > minRadius ? minRadius : r1; + r2 = r2 > minRadius ? minRadius : r2; + r3 = r3 > minRadius ? minRadius : r3; + r0 = r0 < 0 ? 0 : r0; + r1 = r1 < 0 ? 0 : r1; + r2 = r2 < 0 ? 0 : r2; + r3 = r3 < 0 ? 0 : r3; + context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2); + context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0); + context.arc(left + width - r2, top + height - r2, r2, 0, Math.PI / 2); + context.arc(left + r3, top + height - r3, r3, Math.PI / 2, Math.PI); + } else { + context.moveTo(startX, item.y); + context.lineTo(startX + item.width, item.y); + context.lineTo(startX + item.width, opts.height - opts.area[2]); + context.lineTo(startX, opts.height - opts.area[2]); + context.lineTo(startX, item.y); + context.setLineWidth(1) + context.setStrokeStyle(strokeColor); + } + context.setFillStyle(fillColor); + context.closePath(); + context.fill(); + } + } + columnIndex += 1; + } + //绘制区域图数据 + if (eachSeries.type == 'area') { + let splitPointList = splitPoints(points,eachSeries); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数据 + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + if (areaOption.gradient) { + let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]); + gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + } else { + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + } + context.setLineWidth(2 * opts.pix); + if (points.length > 1) { + var firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + let startPoint = 0; + if (eachSeries.style === 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }; + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + }; + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, item.y); + // context.lineTo(item.x + eachSpacing / 2, endY); + // context.lineTo(item.x - eachSpacing / 2, endY); + // context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + } + } + // 绘制折线数据图 + if (eachSeries.type == 'line') { + var splitPointList = splitPoints(points,eachSeries); + splitPointList.forEach(function(points, index) { + if (eachSeries.lineType == 'dash') { + let dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8; + dashLength *= opts.pix; + context.setLineDash([dashLength, dashLength]); + } + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(lineOption.width * opts.pix); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + let startPoint = 0; + if (eachSeries.style == 'curve') { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + var ctrlPoint = createCurveControlPoints(points, j - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, item.y); + } + } + } else { + for (let j = 0; j < points.length; j++) { + let item = points[j]; + if (startPoint == 0 && item.x > leftSpace) { + context.moveTo(item.x, item.y); + startPoint = 1; + } + if (j > 0 && item.x > leftSpace && item.x < rightSpace) { + context.lineTo(item.x, item.y); + } + } + } + context.moveTo(points[0].x, points[0].y); + } + context.stroke(); + context.setLineDash([]); + }); + } + // 绘制点数据图 + if (eachSeries.type == 'point') { + eachSeries.addPoint = true; + } + if (eachSeries.addPoint == true && eachSeries.type !== 'column') { + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + if (opts.dataLabel !== false && process === 1) { + var columnIndex = 0; + series.forEach(function(eachSeries, seriesIndex) { + let ranges, minRange, maxRange; + ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]); + minRange = ranges.pop(); + maxRange = ranges.shift(); + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + if (eachSeries.type !== 'column') { + drawPointText(points, eachSeries, config, context, opts); + } else { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + drawPointText(points, eachSeries, config, context, opts); + columnIndex += 1; + } + }); + } + context.restore(); + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + } +} + + +function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) { + var toolTipOption = opts.extra.tooltip || {}; + 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')) { + drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints); + } + context.restore(); + +} + +function drawXAxis(categories, opts, config, context) { + + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + startX = xAxisData.startX, + endX = xAxisData.endX, + eachSpacing = xAxisData.eachSpacing; + var boundaryGap = 'center'; + if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area'|| opts.type == 'scatter' || opts.type == 'bubble') { + boundaryGap = opts.xAxis.boundaryGap; + } + var startY = opts.height - opts.area[2]; + var endY = opts.area[0]; + + //绘制滚动条 + if (opts.enableScroll && opts.xAxis.scrollShow) { + var scrollY = opts.height - opts.area[2] + config.xAxisHeight; + var scrollScreenWidth = endX - startX; + var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + scrollTotalWidth += (opts.extra.mount.widthRatio - 1)*eachSpacing; + } + var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth; + var scrollLeft = 0; + if (opts._scrollDistance_) { + scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth; + } + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF"); + context.moveTo(startX, scrollY); + context.lineTo(endX, scrollY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pix); + context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6"); + context.moveTo(startX + scrollLeft, scrollY); + context.lineTo(startX + scrollLeft + scrollWidth, scrollY); + context.stroke(); + context.closePath(); + context.setLineCap('butt'); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + //绘制X轴刻度线 + if (opts.xAxis.calibration === true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + xAxisPoints.forEach(function(item, index) { + if (index > 0) { + context.beginPath(); + context.moveTo(item - eachSpacing / 2, startY); + context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } + //绘制X轴网格 + if (opts.xAxis.disableGrid !== true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pix); + if (opts.xAxis.gridType == 'dash') { + context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]); + } + opts.xAxis.gridEval = opts.xAxis.gridEval || 1; + xAxisPoints.forEach(function(item, index) { + if (index % opts.xAxis.gridEval == 0) { + context.beginPath(); + context.moveTo(item, startY); + context.lineTo(item, endY); + context.stroke(); + } + }); + context.setLineDash([]); + } + //绘制X轴文案 + if (opts.xAxis.disabled !== true) { + // 对X轴列表做抽稀处理 + //默认全部显示X轴标签 + let maxXAxisListLength = categories.length; + //如果设置了X轴单屏数量 + if (opts.xAxis.labelCount) { + //如果设置X轴密度 + if (opts.xAxis.itemCount) { + maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount); + } else { + maxXAxisListLength = opts.xAxis.labelCount; + } + maxXAxisListLength -= 1; + } + + let ratio = Math.ceil(categories.length / maxXAxisListLength); + + let newCategories = []; + let cgLength = categories.length; + for (let i = 0; i < cgLength; i++) { + if (i % ratio !== 0) { + newCategories.push(""); + } else { + newCategories.push(categories[i]); + } + } + newCategories[cgLength - 1] = categories[cgLength - 1]; + var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize; + if (config._xAxisTextAngle_ === 0) { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item,index,opts) : item; + var offset = -measureText(String(xitem), xAxisFontSize, context) / 2; + if (boundaryGap == 'center') { + offset += eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + // 如果在主视图区域内 + var _scrollDistance_ = opts._scrollDistance_ || 0; + var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index]; + if((truePoints - Math.abs(_scrollDistance_)) >= (opts.area[3] - 1) && (truePoints - Math.abs(_scrollDistance_)) <= (opts.width - opts.area[1] + 1)){ + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix); + context.closePath(); + context.stroke(); + } + }); + } else { + newCategories.forEach(function(item, index) { + var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item; + // 如果在主视图区域内 + var _scrollDistance_ = opts._scrollDistance_ || 0; + var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index]; + if((truePoints - Math.abs(_scrollDistance_)) >= (opts.area[3] - 1) && (truePoints - Math.abs(_scrollDistance_)) <= (opts.width - opts.area[1] + 1)){ + context.save(); + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || opts.fontColor); + var textWidth = measureText(String(xitem), xAxisFontSize, context); + var offsetX = xAxisPoints[index]; + if (boundaryGap == 'center') { + offsetX = xAxisPoints[index] + eachSpacing / 2; + } + var scrollHeight = 0; + if (opts.xAxis.scrollShow) { + scrollHeight = 6 * opts.pix; + } + var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_)); + if(opts.xAxis.rotateAngle < 0){ + offsetX -= xAxisFontSize / 2; + textWidth = 0; + }else{ + offsetX += xAxisFontSize / 2; + textWidth = -textWidth; + } + context.translate(offsetX, offsetY); + context.rotate(-1 * config._xAxisTextAngle_); + context.fillText(String(xitem), textWidth , 0 ); + context.closePath(); + context.stroke(); + context.restore(); + } + }); + } + } + context.restore(); + + //画X轴标题 + if (opts.xAxis.title) { + context.beginPath(); + context.setFontSize(opts.xAxis.titleFontSize * opts.pix); + context.setFillStyle(opts.xAxis.titleFontColor); + context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix,opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix); + context.closePath(); + context.stroke(); + } + + //绘制X轴轴线 + if (opts.xAxis.axisLine) { + context.beginPath(); + context.setStrokeStyle(opts.xAxis.axisLineColor); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, opts.height - opts.area[2]); + context.lineTo(endX, opts.height - opts.area[2]); + context.stroke(); + } +} + +function drawYAxisGrid(categories, opts, config, context) { + if (opts.yAxis.disableGrid === true) { + return; + } + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let eachSpacing = spacingValid / opts.yAxis.splitNumber; + let startX = opts.area[3]; + let xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing; + let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1); + if(opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1 ){ + if(opts.extra.mount.widthRatio>2) opts.extra.mount.widthRatio = 2 + TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing; + } + let endX = startX + TotalWidth; + let points = []; + let startY = 1 + if (opts.xAxis.axisLine === false) { + startY = 0 + } + for (let i = startY; i < opts.yAxis.splitNumber + 1; i++) { + points.push(opts.height - opts.area[2] - eachSpacing * i); + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.yAxis.gridType == 'dash') { + context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]); + } + context.setStrokeStyle(opts.yAxis.gridColor); + context.setLineWidth(1 * opts.pix); + points.forEach(function(item, index) { + context.beginPath(); + context.moveTo(startX, item); + context.lineTo(endX, item); + context.stroke(); + }); + context.setLineDash([]); + context.restore(); +} + +function drawYAxis(series, opts, config, context) { + if (opts.yAxis.disabled === true) { + return; + } + var spacingValid = opts.height - opts.area[0] - opts.area[2]; + var eachSpacing = spacingValid / opts.yAxis.splitNumber; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + var endY = opts.height - opts.area[2]; + // set YAxis background + context.beginPath(); + context.setFillStyle(opts.background); + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') { + context.fillRect(0, 0, startX, endY + 2 * opts.pix); + } + if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') { + context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix); + } + context.closePath(); + context.stroke(); + + let tStartLeft = opts.area[3]; + let tStartRight = opts.width - opts.area[1]; + let tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2; + if (opts.yAxis.data) { + for (let i = 0; i < opts.yAxis.data.length; i++) { + let yData = opts.yAxis.data[i]; + var points = []; + if(yData.type === 'categories'){ + for (let i = 0; i <= yData.categories.length; i++) { + points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * i); + } + }else{ + for (let i = 0; i <= opts.yAxis.splitNumber; i++) { + points.push(opts.area[0] + eachSpacing * i); + } + } + if (yData.disabled !== true) { + let rangesFormat = opts.chartData.yAxisData.rangesFormat[i]; + let yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize; + let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i]; + let textAlign = yData.textAlign || "right"; + //画Y轴刻度及文案 + rangesFormat.forEach(function(item, index) { + var pos = points[index]; + context.beginPath(); + context.setFontSize(yAxisFontSize); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setFillStyle(yData.fontColor || opts.fontColor); + let tmpstrat = 0; + let gapwidth = 4 * opts.pix; + if (yAxisWidth.position == 'left') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartLeft, pos); + context.lineTo(tStartLeft - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartLeft - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartLeft - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartLeft - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + + } else if (yAxisWidth.position == 'right') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartRight, pos); + context.lineTo(tStartRight + 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartRight + gapwidth + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartRight + yAxisWidth.width + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartRight + yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } else if (yAxisWidth.position == 'center') { + //画刻度线 + if (yData.calibration == true) { + context.moveTo(tStartCenter, pos); + context.lineTo(tStartCenter - 3 * opts.pix, pos); + gapwidth += 3 * opts.pix; + } + //画文字 + switch (textAlign) { + case "left": + context.setTextAlign('left'); + tmpstrat = tStartCenter - yAxisWidth.width + break; + case "right": + context.setTextAlign('right'); + tmpstrat = tStartCenter - gapwidth + break; + default: + context.setTextAlign('center'); + tmpstrat = tStartCenter - yAxisWidth.width / 2 + } + context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix); + } + context.closePath(); + context.stroke(); + context.setTextAlign('left'); + }); + //画Y轴轴线 + if (yData.axisLine !== false) { + context.beginPath(); + context.setStrokeStyle(yData.axisLineColor || '#cccccc'); + context.setLineWidth(1 * opts.pix); + if (yAxisWidth.position == 'left') { + context.moveTo(tStartLeft, opts.height - opts.area[2]); + context.lineTo(tStartLeft, opts.area[0]); + } else if (yAxisWidth.position == 'right') { + context.moveTo(tStartRight, opts.height - opts.area[2]); + context.lineTo(tStartRight, opts.area[0]); + } else if (yAxisWidth.position == 'center') { + context.moveTo(tStartCenter, opts.height - opts.area[2]); + context.lineTo(tStartCenter, opts.area[0]); + } + context.stroke(); + } + //画Y轴标题 + if (opts.yAxis.showTitle) { + let titleFontSize = yData.titleFontSize * opts.pix || config.fontSize; + let title = yData.title; + context.beginPath(); + context.setFontSize(titleFontSize); + context.setFillStyle(yData.titleFontColor || opts.fontColor); + if (yAxisWidth.position == 'left') { + context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'right') { + context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } else if (yAxisWidth.position == 'center') { + context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix); + } + context.closePath(); + context.stroke(); + } + if (yAxisWidth.position == 'left') { + tStartLeft -= (yAxisWidth.width + opts.yAxis.padding * opts.pix); + } else { + tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix; + } + } + } + } + +} + +function drawLegend(series, opts, config, context, chartData) { + if (opts.legend.show === false) { + return; + } + let legendData = chartData.legendData; + let legendList = legendData.points; + let legendArea = legendData.area; + let padding = opts.legend.padding * opts.pix; + let fontSize = opts.legend.fontSize * opts.pix; + let shapeWidth = 15 * opts.pix; + let shapeRight = 5 * opts.pix; + let itemGap = opts.legend.itemGap * opts.pix; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize); + //画背景及边框 + context.beginPath(); + context.setLineWidth(opts.legend.borderWidth * opts.pix); + context.setStrokeStyle(opts.legend.borderColor); + context.setFillStyle(opts.legend.backgroundColor); + context.moveTo(legendArea.start.x, legendArea.start.y); + context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height); + context.closePath(); + context.fill(); + context.stroke(); + legendList.forEach(function(itemList, listIndex) { + let width = 0; + let height = 0; + width = legendData.widthArr[listIndex]; + height = legendData.heightArr[listIndex]; + let startX = 0; + let startY = 0; + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + switch (opts.legend.float) { + case 'left': + startX = legendArea.start.x + padding; + break; + case 'right': + startX = legendArea.start.x + legendArea.width - width; + break; + default: + startX = legendArea.start.x + (legendArea.width - width) / 2; + } + startY = legendArea.start.y + padding + listIndex * lineHeight; + } else { + if (listIndex == 0) { + width = 0; + } else { + width = legendData.widthArr[listIndex - 1]; + } + startX = legendArea.start.x + padding + width; + startY = legendArea.start.y + padding + (legendArea.height - height) / 2; + } + context.setFontSize(config.fontSize); + for (let i = 0; i < itemList.length; i++) { + let item = itemList[i]; + item.area = [0, 0, 0, 0]; + item.area[0] = startX; + item.area[1] = startY; + item.area[3] = startY + lineHeight; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor); + context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor); + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix); + context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight); + context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + break; + case 'square': + context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix); + break; + case 'none': + break; + default: + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix); + } + context.closePath(); + context.fill(); + context.stroke(); + startX += shapeWidth + shapeRight; + let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2; + const legendText = item.legendText ? item.legendText : item.name; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor); + context.fillText(legendText, startX, startY + fontTrans); + context.closePath(); + context.stroke(); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + startX += measureText(legendText, fontSize, context) + itemGap; + item.area[2] = startX; + } else { + item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;; + startX -= shapeWidth + shapeRight; + startY += lineHeight; + } + } + }); +} + +function drawPieDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var pieOption = assign({}, { + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + ringWidth: 30, + customRadius: 0, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + centerColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.type == "pie" ? opts.extra.pie : opts.extra.ring); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = pieOption.activeRadius * opts.pix; + } + + 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); + radius = radius < 10 ? 10 : radius; + if (pieOption.customRadius > 0) { + radius = pieOption.customRadius * opts.pix; + } + series = getPieDataPoints(series, radius, process); + var activeRadius = pieOption.activeRadius * opts.pix; + pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(pieOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(pieOption.borderColor); + var fillcolor = eachSeries.color; + if (pieOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (pieOption.border == true) { + context.stroke(); + } + }); + if (opts.type === 'ring') { + var innerPieWidth = radius * 0.6; + if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) { + innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix); + } + context.beginPath(); + context.setFillStyle(pieOption.centerColor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + } + if (opts.dataLabel !== false && process === 1) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + if (process === 1 && opts.type === 'ring') { + drawRingTitle(opts, config, context, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawRoseDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var roseOption = assign({}, { + type: 'area', + activeOpacity: 0.5, + activeRadius: 10, + offsetAngle: 0, + labelWidth: 15, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + linearType: 'none', + customColor: [], + }, opts.extra.rose); + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = roseOption.activeRadius * opts.pix; + } + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + 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); + radius = radius < 10 ? 10 : radius; + var minRadius = roseOption.minRadius || radius * 0.5; + if(radius < minRadius){ + radius = minRadius + 10; + } + series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process); + var activeRadius = roseOption.activeRadius * opts.pix; + roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config); + series = series.map(function(eachSeries) { + eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(roseOption.borderWidth * opts.pix); + context.lineJoin = "round"; + context.setStrokeStyle(roseOption.borderColor); + var fillcolor = eachSeries.color; + if (roseOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, eachSeries._radius_) + } + grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(1, hexToRgb(eachSeries.color, 1)) + fillcolor = grd + } + context.setFillStyle(fillcolor); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (roseOption.border == true) { + context.stroke(); + } + }); + + if (opts.dataLabel !== false && process === 1) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawArcbarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var arcbarOption = assign({}, { + startAngle: 0.75, + endAngle: 0.25, + type: 'default', + direction: 'cw', + lineCap: 'round', + width: 12 , + gap: 2 , + linearType: 'none', + customColor: [], + }, opts.extra.arcbar); + series = getArcbarDataPoints(series, arcbarOption, process); + var centerPosition; + if (arcbarOption.centerX || arcbarOption.centerY) { + centerPosition = { + x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2, + y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2 + }; + } else { + centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + } + var radius; + if (arcbarOption.radius) { + radius = arcbarOption.radius; + } else { + radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= arcbarOption.width / 2; + } + radius = radius < 10 ? 10 : radius; + arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config); + + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + //背景颜色 + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9'); + context.setLineCap(arcbarOption.lineCap); + context.beginPath(); + if (arcbarOption.type == 'default') { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw'); + } else { + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw'); + } + context.stroke(); + //进度条 + var fillColor = eachSeries.color + if(arcbarOption.linearType == 'custom'){ + var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y); + grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1)) + grd.addColorStop(0, hexToRgb(eachSeries.color, 1)) + fillColor = grd; + } + context.setLineWidth(arcbarOption.width * opts.pix); + context.setStrokeStyle(fillColor); + context.setLineCap(arcbarOption.lineCap); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw'); + context.stroke(); + } + drawRingTitle(opts, config, context, centerPosition); + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawGaugeDataPoints(categories, series, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var gaugeOption = assign({}, { + type: 'default', + startAngle: 0.75, + endAngle: 0.25, + width: 15, + labelOffset:13, + splitLine: { + fixRadius: 0, + splitNumber: 10, + width: 15, + color: '#FFFFFF', + childNumber: 5, + childWidth: 5 + }, + pointer: { + width: 15, + color: 'auto' + } + }, opts.extra.gauge); + if (gaugeOption.oldAngle == undefined) { + gaugeOption.oldAngle = gaugeOption.startAngle; + } + if (gaugeOption.oldData == undefined) { + gaugeOption.oldData = 0; + } + categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle); + var centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + var radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pix; + radius -= gaugeOption.width / 2; + radius = radius < 10 ? 10 : radius; + var innerRadius = radius - gaugeOption.width; + var totalAngle = 0; + //判断仪表盘的样式:default百度样式,progress新样式 + if (gaugeOption.type == 'progress') { + //## 第一步画中心圆形背景和进度条背景 + //中心圆形背景 + var pieRadius = radius - gaugeOption.width * 3; + context.beginPath(); + let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius); + //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径) + gradient.addColorStop('0', hexToRgb(series[0].color, 0.3)); + gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1)); + context.setFillStyle(gradient); + context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false); + context.fill(); + //画进度条背景 + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false); + context.stroke(); + //## 第二步画刻度线 + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; + let proc = series[0].data * process; + for (let i = 0; i < len; i++) { + context.beginPath(); + //刻度线随进度变色 + if (proc > (i / len)) { + context.setStrokeStyle(hexToRgb(series[0].color, 1)); + } else { + context.setStrokeStyle(hexToRgb(series[0].color, 0.3)); + } + context.setLineWidth(3 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //## 第三步画进度条 + series = getGaugeArcbarDataPoints(series, gaugeOption, process); + context.setLineWidth(gaugeOption.width); + context.setStrokeStyle(series[0].color); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false); + context.stroke(); + //## 第四步画指针 + let pointerRadius = radius - gaugeOption.width * 2.5; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((series[0]._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setLineWidth(gaugeOption.width / 3); + let gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6); + gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0)); + gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1)); + gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0)); + context.setStrokeStyle(gradient3); + context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false); + context.stroke(); + context.beginPath(); + context.setLineWidth(1); + context.setStrokeStyle(series[0].color); + context.setFillStyle(series[0].color); + context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4); + context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4); + context.stroke(); + context.fill(); + context.restore(); + //default百度样式 + } else { + //画背景 + context.setLineWidth(gaugeOption.width); + context.setLineCap('butt'); + for (let i = 0; i < categories.length; i++) { + let eachCategories = categories[i]; + context.beginPath(); + context.setStrokeStyle(eachCategories.color); + context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false); + context.stroke(); + } + context.save(); + //画刻度线 + if (gaugeOption.endAngle < gaugeOption.startAngle) { + totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle; + } else { + totalAngle = gaugeOption.startAngle - gaugeOption.endAngle; + } + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth; + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(2 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(splitAngle * Math.PI); + } + context.restore(); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(1 * opts.pix); + context.moveTo(startX, 0); + context.lineTo(childendX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + //画指针 + series = getGaugeDataPoints(series, categories, gaugeOption, process); + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((eachSeries._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.moveTo(gaugeOption.pointer.width, 0); + context.lineTo(0, -gaugeOption.pointer.width / 2); + context.lineTo(-innerRadius, 0); + context.lineTo(0, gaugeOption.pointer.width / 2); + context.lineTo(gaugeOption.pointer.width, 0); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFillStyle('#FFFFFF'); + context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false); + context.fill(); + context.restore(); + } + if (opts.dataLabel !== false) { + drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context); + } + } + //画仪表盘标题,副标题 + drawRingTitle(opts, config, context, centerPosition); + if (process === 1 && opts.type === 'gauge') { + opts.extra.gauge.oldAngle = series[0]._proportion_; + opts.extra.gauge.oldData = series[0].data; + } + return { + center: centerPosition, + radius: radius, + innerRadius: innerRadius, + categories: categories, + totalAngle: totalAngle + }; +} + +function drawRadarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var radarOption = assign({}, { + gridColor: '#cccccc', + gridType: 'radar', + gridEval:1, + axisLabel:false, + axisLabelTofix:0, + labelShow:true, + labelColor:'#666666', + labelPointShow:false, + labelPointRadius:3, + labelPointColor:'#cccccc', + opacity: 0.2, + gridCount: 3, + border:false, + borderWidth:2, + linearType: 'none', + customColor: [], + }, opts.extra.radar); + var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var xr = (opts.width - opts.area[1] - opts.area[3]) / 2 + var yr = (opts.height - opts.area[0] - opts.area[2]) / 2 + var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin); + radius -= config.radarLabelTextMargin * opts.pix; + radius = radius < 10 ? 10 : radius; + radius = radarOption.radius ? radarOption.radius : radius; + // 画分割线 + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + coordinateAngle.forEach(function(angle,index) { + var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); + context.moveTo(centerPosition.x, centerPosition.y); + if (index % radarOption.gridEval == 0) { + context.lineTo(pos.x, pos.y); + } + }); + context.stroke(); + context.closePath(); + + // 画背景网格 + var _loop = function _loop(i) { + var startPos = {}; + context.beginPath(); + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(radarOption.gridColor); + if (radarOption.gridType == 'radar') { + coordinateAngle.forEach(function(angle, index) { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / + radarOption.gridCount * i * Math.sin(angle), centerPosition); + if (index === 0) { + startPos = pos; + context.moveTo(pos.x, pos.y); + } else { + context.lineTo(pos.x, pos.y); + } + }); + context.lineTo(startPos.x, startPos.y); + } else { + var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition); + context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false); + } + context.stroke(); + context.closePath(); + }; + for (var i = 1; i <= radarOption.gridCount; i++) { + _loop(i); + } + radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config); + var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + // 绘制区域数据 + context.beginPath(); + context.setLineWidth(radarOption.borderWidth * opts.pix); + context.setStrokeStyle(eachSeries.color); + + var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity); + if (radarOption.linearType == 'custom') { + var grd; + if(context.createCircularGradient){ + grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius) + }else{ + grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0,centerPosition.x, centerPosition.y, radius) + } + grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity)) + grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity)) + fillcolor = grd + } + + context.setFillStyle(fillcolor); + eachSeries.data.forEach(function(item, index) { + if (index === 0) { + context.moveTo(item.position.x, item.position.y); + } else { + context.lineTo(item.position.x, item.position.y); + } + }); + context.closePath(); + context.fill(); + if(radarOption.border === true){ + context.stroke(); + } + context.closePath(); + if (opts.dataPointShape !== false) { + var points = eachSeries.data.map(function(item) { + return item.position; + }); + drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts); + } + }); + // 画刻度值 + if(radarOption.axisLabel === true){ + const maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + const stepLength = radius / radarOption.gridCount; + const fontSize = opts.fontSize * opts.pix; + context.setFontSize(fontSize); + context.setFillStyle(opts.fontColor); + context.setTextAlign('left'); + for (var i = 0; i < radarOption.gridCount + 1; i++) { + let label = i * maxData / radarOption.gridCount; + label = label.toFixed(radarOption.axisLabelTofix); + context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2); + } + } + + // draw label text + drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); + + // draw dataLabel + if (opts.dataLabel !== false && process === 1) { + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + context.beginPath(); + var fontSize = eachSeries.textSize * opts.pix || config.fontSize; + context.setFontSize(fontSize); + context.setFillStyle(eachSeries.textColor || opts.fontColor); + eachSeries.data.forEach(function(item, index) { + //如果是中心点垂直的上下点位 + if(Math.abs(item.position.x - centerPosition.x)<2){ + //如果在上面 + if(item.position.y < centerPosition.y){ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y - 4); + }else{ + context.setTextAlign('center'); + context.fillText(item.value, item.position.x, item.position.y + fontSize + 2); + } + }else{ + //如果在左侧 + if(item.position.x < centerPosition.x){ + context.setTextAlign('right'); + context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2); + }else{ + context.setTextAlign('left'); + context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2); + } + } + }); + context.closePath(); + context.stroke(); + }); + context.setTextAlign('left'); + } + + return { + center: centerPosition, + radius: radius, + angleList: coordinateAngle + }; +} + +// 经纬度转墨卡托 +function lonlat2mercator(longitude, latitude) { + var mercator = Array(2); + var x = longitude * 20037508.34 / 180; + var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180); + y = y * 20037508.34 / 180; + mercator[0] = x; + mercator[1] = y; + return mercator; +} + +// 墨卡托转经纬度 +function mercator2lonlat(longitude, latitude) { + var lonlat = Array(2) + var x = longitude / 20037508.34 * 180; + var y = latitude / 20037508.34 * 180; + y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2); + lonlat[0] = x; + lonlat[1] = y; + return lonlat; +} + +function getBoundingBox(data) { + var bounds = {},coords; + bounds.xMin = 180; + bounds.xMax = 0; + bounds.yMin = 90; + bounds.yMax = 0 + for (var i = 0; i < data.length; i++) { + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var longitude = coords[j][0]; + var latitude = coords[j][1]; + var point = { + x: longitude, + y: latitude + } + bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x; + bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x; + bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y; + bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y; + } + } + } + return bounds; +} + +function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) { + return { + x: (longitude - bounds.xMin) * scale + xoffset, + y: (bounds.yMax - latitude) * scale + yoffset + }; +} + +function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) { + return { + x: (pointX - xoffset) / scale + bounds.xMin, + y: bounds.yMax - (pointY - yoffset) / scale + }; +} + +function isRayIntersectsSegment(poi, s_poi, e_poi) { + if (s_poi[1] == e_poi[1]) { + return false; + } + if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) { + return false; + } + if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) { + return false; + } + if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) { + return false; + } + if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) { + return false; + } + let xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]); + if (xseg < poi[0]) { + return false; + } else { + return true; + } +} + +function isPoiWithinPoly(poi, poly, mercator) { + let sinsc = 0; + for (let i = 0; i < poly.length; i++) { + let epoly = poly[i][0]; + if (poly.length == 1) { + epoly = poly[i][0] + } + for (let j = 0; j < epoly.length - 1; j++) { + let s_poi = epoly[j]; + let e_poi = epoly[j + 1]; + if (mercator) { + s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]); + e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]); + } + if (isRayIntersectsSegment(poi, s_poi, e_poi)) { + sinsc += 1; + } + } + } + if (sinsc % 2 == 1) { + return true; + } else { + return false; + } +} + +function drawMapDataPoints(series, opts, config, context) { + var mapOption = assign({}, { + border: true, + mercator: false, + borderWidth: 1, + active:true, + borderColor: '#666666', + fillOpacity: 0.6, + activeBorderColor: '#f04864', + activeFillColor: '#facc14', + activeFillOpacity: 1 + }, opts.extra.map); + var coords, point; + var data = series; + var bounds = getBoundingBox(data); + if (mapOption.mercator) { + var max = lonlat2mercator(bounds.xMax, bounds.yMax) + var min = lonlat2mercator(bounds.xMin, bounds.yMin) + bounds.xMax = max[0] + bounds.yMax = max[1] + bounds.xMin = min[0] + bounds.yMin = min[1] + } + var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin); + var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin); + var scale = xScale < yScale ? xScale : yScale; + var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale; + var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale; + for (var i = 0; i < data.length; i++) { + context.beginPath(); + context.setLineWidth(mapOption.borderWidth * opts.pix); + context.setStrokeStyle(mapOption.borderColor); + context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity||mapOption.fillOpacity)); + if (mapOption.active == true && opts.tooltip) { + if (opts.tooltip.index == i) { + context.setStrokeStyle(mapOption.activeBorderColor); + context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity)); + } + } + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var gaosi = Array(2); + if (mapOption.mercator) { + gaosi = lonlat2mercator(coords[j][0], coords[j][1]) + } else { + gaosi = coords[j] + } + point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset) + if (j === 0) { + context.beginPath(); + context.moveTo(point.x, point.y); + } else { + context.lineTo(point.x, point.y); + } + } + context.fill(); + if (mapOption.border == true) { + context.stroke(); + } + } + } + if (opts.dataLabel == true) { + for (var i = 0; i < data.length; i++) { + var centerPoint = data[i].properties.centroid; + if (centerPoint) { + if (mapOption.mercator) { + centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]) + } + point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset); + let fontSize = data[i].textSize * opts.pix || config.fontSize; + let fontColor = data[i].textColor || opts.fontColor; + if(mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i){ + fontColor = mapOption.activeTextColor; + } + let text = data[i].properties.name; + context.beginPath(); + context.setFontSize(fontSize) + context.setFillStyle(fontColor) + context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2); + context.closePath(); + context.stroke(); + } + } + } + opts.chartData.mapData = { + bounds: bounds, + scale: scale, + xoffset: xoffset, + yoffset: yoffset, + mercator: mapOption.mercator + } + drawToolTipBridge(opts, config, context, 1); + context.draw(); +} + +function normalInt(min, max, iter) { + iter = iter == 0 ? 1 : iter; + var arr = []; + for (var i = 0; i < iter; i++) { + arr[i] = Math.random(); + }; + return Math.floor(arr.reduce(function(i, j) { + return i + j + }) / iter * (max - min)) + min; +}; + +function collisionNew(area, points, width, height) { + var isIn = false; + for (let i = 0; i < points.length; i++) { + if (points[i].area) { + 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]) { + if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) { + isIn = true; + break; + } else { + isIn = false; + } + } else { + isIn = true; + break; + } + } + } + return isIn; +}; + +function getWordCloudPoint(opts, type, context) { + let points = opts.series; + switch (type) { + case 'normal': + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let x, y; + let area; + let breaknum = 0; + while (true) { + breaknum++; + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + + opts.height / 2 + ]; + let isCollision = collisionNew(area, points, opts.width, opts.height); + if (!isCollision) break; + if (breaknum == 1000) { + area = [-100, -100, -100, -100]; + break; + } + }; + points[i].area = area; + } + break; + case 'vertical': + function Spin() { + //获取均匀随机值,是否旋转,旋转的概率为(1-0.5) + if (Math.random() > 0.7) { + return true; + } else { + return false + }; + }; + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + let isSpin = Spin(); + let x, y, area, areav; + let breaknum = 0; + while (true) { + breaknum++; + let isCollision; + if (isSpin) { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [y - 5 - tWidth + opts.width / 2, (-x - 5 + opts.height / 2), y + 5 + opts.width / 2, (-x + tHeight + 5 + opts.height / 2)]; + 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]; + isCollision = collisionNew(areav, points, opts.height, opts.width); + } else { + x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2; + y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2; + area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2]; + isCollision = collisionNew(area, points, opts.width, opts.height); + } + if (!isCollision) break; + if (breaknum == 1000) { + area = [-1000, -1000, -1000, -1000]; + break; + } + }; + if (isSpin) { + points[i].area = areav; + points[i].areav = area; + } else { + points[i].area = area; + } + points[i].rotate = isSpin; + }; + break; + } + return points; +} + +function drawWordCloudDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let wordOption = assign({}, { + type: 'normal', + autoColors: true + }, opts.extra.word); + if (!opts.chartData.wordCloudData) { + opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context); + } + context.beginPath(); + context.setFillStyle(opts.background); + context.rect(0, 0, opts.width, opts.height); + context.fill(); + context.save(); + let points = opts.chartData.wordCloudData; + context.translate(opts.width / 2, opts.height / 2); + for (let i = 0; i < points.length; i++) { + context.save(); + if (points[i].rotate) { + context.rotate(90 * Math.PI / 180); + } + let text = points[i].name; + let tHeight = points[i].textSize * opts.pix; + let tWidth = measureText(text, tHeight, context); + context.beginPath(); + context.setStrokeStyle(points[i].color); + context.setFillStyle(points[i].color); + context.setFontSize(tHeight); + if (points[i].rotate) { + if (points[i].areav[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + 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); + } else { + 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); + } + } else { + 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); + } + } + } else { + if (points[i].area[0] > 0) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + 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); + } else { + 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); + } + } else { + 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); + } + } + } + context.stroke(); + context.restore(); + } + context.restore(); +} + +function drawFunnelDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let funnelOption = assign({}, { + type:'funnel', + activeWidth: 10, + activeOpacity: 0.3, + border: false, + borderWidth: 2, + borderColor: '#FFFFFF', + fillOpacity: 1, + minSize: 0, + labelAlign: 'right', + linearType: 'none', + customColor: [], + }, opts.extra.funnel); + let eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length; + let centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.height - opts.area[2] + }; + let activeWidth = funnelOption.activeWidth * opts.pix; + let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth); + let seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process); + context.save(); + context.translate(centerPosition.x, centerPosition.y); + funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config); + if(funnelOption.type == 'pyramid'){ + for (let i = 0; i < seriesNew.length; i++) { + if (i == seriesNew.length -1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth, -eachSpacing); + context.lineTo(-seriesNew[i].radius - activeWidth, 0); + context.lineTo(seriesNew[i].radius + activeWidth, 0); + context.lineTo(activeWidth, -eachSpacing); + context.lineTo(-activeWidth, -eachSpacing); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, -eachSpacing); + context.lineTo(-seriesNew[i].radius, 0); + context.lineTo(seriesNew[i].radius, 0); + context.lineTo(0, -eachSpacing); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, 0); + context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i].radius, 0); + context.lineTo(-seriesNew[i + 1].radius, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, -eachSpacing) + } + }else{ + context.translate(0, - (seriesNew.length - 1) * eachSpacing); + for (let i = 0; i < seriesNew.length; i++) { + if (i == seriesNew.length - 1) { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(-activeWidth - funnelOption.minSize/2, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, -eachSpacing); + context.lineTo(activeWidth + funnelOption.minSize/2, 0); + context.lineTo(-activeWidth - funnelOption.minSize/2, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[i].radius, centerPosition.y ]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-funnelOption.minSize/2, 0); + context.lineTo(-seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, -eachSpacing); + context.lineTo(funnelOption.minSize/2, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } else { + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.beginPath(); + context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity)); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i + 1].radius - activeWidth, 0); + context.lineTo(-seriesNew[i].radius - activeWidth, -eachSpacing); + context.lineTo(seriesNew[i].radius + activeWidth, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius + activeWidth, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + } + } + seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (seriesNew.length - i), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * (seriesNew.length - i - 1)]; + context.beginPath(); + context.setLineWidth(funnelOption.borderWidth * opts.pix); + context.setStrokeStyle(funnelOption.borderColor); + var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity); + if (funnelOption.linearType == 'custom') { + var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing); + grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity)); + grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity)); + fillColor = grd + } + context.setFillStyle(fillColor); + context.moveTo(0, 0); + context.lineTo(-seriesNew[i + 1].radius, 0); + context.lineTo(-seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i].radius, -eachSpacing); + context.lineTo(seriesNew[i + 1].radius, 0); + context.lineTo(0, 0); + context.closePath(); + context.fill(); + if (funnelOption.border == true) { + context.stroke(); + } + } + context.translate(0, eachSpacing) + } + } + + context.restore(); + if (opts.dataLabel !== false && process === 1) { + drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + if (process === 1) { + drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition); + } + return { + center: centerPosition, + radius: radius, + series: seriesNew + }; +} + +function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + if(item.labelShow === false){ + continue; + } + let startX, endX, startY, fontSize; + let text = item.formatter ? item.formatter(item,i,series,opts) : util.toFixed(item._proportion_ * 100) + '%'; + text = item.labelText ? item.labelText : text; + if (labelAlign == 'right') { + if (i == series.length -1) { + startX = (item.funnelArea[2] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2; + } + endX = startX + activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX + 5, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + if (labelAlign == 'left') { + if (i == series.length -1) { + startX = (item.funnelArea[0] + centerPosition.x) / 2; + } else { + startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2; + } + endX = startX - activeWidth * 2; + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix; + context.setLineWidth(1 * opts.pix); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.beginPath(); + context.moveTo(startX, startY); + context.lineTo(endX, startY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(endX, startY); + context.arc(endX, startY, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.textColor || opts.fontColor); + context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + } +} + +function drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) { + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let startY, fontSize; + if (item.centerText) { + startY = item.funnelArea[1] + eachSpacing / 2; + fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.centerTextColor || "#FFFFFF"); + context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2); + context.closePath(); + context.stroke(); + context.closePath(); + } + } +} + + +function drawCanvas(opts, context) { + context.save(); + context.translate(0, 0.5); + context.restore(); + context.draw(); +} + +var Timing = { + easeIn: function easeIn(pos) { + return Math.pow(pos, 3); + }, + easeOut: function easeOut(pos) { + return Math.pow(pos - 1, 3) + 1; + }, + easeInOut: function easeInOut(pos) { + if ((pos /= 0.5) < 1) { + return 0.5 * Math.pow(pos, 3); + } else { + return 0.5 * (Math.pow(pos - 2, 3) + 2); + } + }, + linear: function linear(pos) { + return pos; + } +}; + +function Animation(opts) { + this.isStop = false; + opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration; + opts.timing = opts.timing || 'easeInOut'; + var delay = 17; + function createAnimationFrame() { + if (typeof setTimeout !== 'undefined') { + return function(step, delay) { + setTimeout(function() { + var timeStamp = +new Date(); + step(timeStamp); + }, delay); + }; + } else if (typeof requestAnimationFrame !== 'undefined') { + return requestAnimationFrame; + } else { + return function(step) { + step(null); + }; + } + }; + var animationFrame = createAnimationFrame(); + var startTimeStamp = null; + var _step = function step(timestamp) { + if (timestamp === null || this.isStop === true) { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + return; + } + if (startTimeStamp === null) { + startTimeStamp = timestamp; + } + if (timestamp - startTimeStamp < opts.duration) { + var process = (timestamp - startTimeStamp) / opts.duration; + var timingFunction = Timing[opts.timing]; + process = timingFunction(process); + opts.onProcess && opts.onProcess(process); + animationFrame(_step, delay); + } else { + opts.onProcess && opts.onProcess(1); + opts.onAnimationFinish && opts.onAnimationFinish(); + } + }; + _step = _step.bind(this); + animationFrame(_step, delay); +} + +Animation.prototype.stop = function() { + this.isStop = true; +}; + +function drawCharts(type, opts, config, context) { + var _this = this; + var series = opts.series; + //兼容ECharts饼图类数据格式 + if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') { + series = fixPieSeries(series, opts, config); + } + var categories = opts.categories; + if (type === 'mount') { + categories = []; + for (let j = 0; j < series.length; j++) { + if(series[j].show !== false) categories.push(series[j].name) + } + opts.categories = categories; + } + series = fillSeries(series, opts, config); + var duration = opts.animation ? opts.duration : 0; + _this.animationInstance && _this.animationInstance.stop(); + var seriesMA = null; + if (type == 'candle') { + let average = assign({}, opts.extra.candle.average); + if (average.show) { + seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data); + seriesMA = fillSeries(seriesMA, opts, config); + opts.seriesMA = seriesMA; + } else if (opts.seriesMA) { + seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config); + } else { + seriesMA = series; + } + } else { + seriesMA = series; + } + /* 过滤掉show=false的series */ + opts._series_ = series = filterSeries(series); + //重新计算图表区域 + opts.area = new Array(4); + //复位绘图区域 + for (let j = 0; j < 4; j++) { + opts.area[j] = opts.padding[j] * opts.pix; + } + //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域 + var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context), + legendHeight = _calLegendData.area.wholeHeight, + legendWidth = _calLegendData.area.wholeWidth; + + switch (opts.legend.position) { + case 'top': + opts.area[0] += legendHeight; + break; + case 'bottom': + opts.area[2] += legendHeight; + break; + case 'left': + opts.area[3] += legendWidth; + break; + case 'right': + opts.area[1] += legendWidth; + break; + } + + let _calYAxisData = {}, + yAxisWidth = 0; + 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') { + _calYAxisData = calYAxisData(series, opts, config, context); + yAxisWidth = _calYAxisData.yAxisWidth; + //如果显示Y轴标题 + if (opts.yAxis.showTitle) { + let maxTitleHeight = 0; + for (let i = 0; i < opts.yAxis.data.length; i++) { + maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize) + } + opts.area[0] += maxTitleHeight; + } + let rightIndex = 0, + leftIndex = 0; + //计算主绘图区域左右位置 + for (let i = 0; i < yAxisWidth.length; i++) { + if (yAxisWidth[i].position == 'left') { + if (leftIndex > 0) { + opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[3] += yAxisWidth[i].width; + } + leftIndex += 1; + } else if (yAxisWidth[i].position == 'right') { + if (rightIndex > 0) { + opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding * opts.pix; + } else { + opts.area[1] += yAxisWidth[i].width; + } + rightIndex += 1; + } + } + } else { + config.yAxisWidth = yAxisWidth; + } + opts.chartData.yAxisData = _calYAxisData; + + if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') { + opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config); + let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') { + opts.chartData.xAxisData = calXAxisData(series, opts, config, context); + categories = opts.chartData.xAxisData.rangesFormat; + let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context), + xAxisHeight = _calCategoriesData.xAxisHeight, + angle = _calCategoriesData.angle; + config.xAxisHeight = xAxisHeight; + config._xAxisTextAngle_ = angle; + opts.area[2] += xAxisHeight; + opts.chartData.categoriesData = _calCategoriesData; + } else { + opts.chartData.xAxisData = { + xAxisPoints: [] + }; + } + } + + //计算右对齐偏移距离 + if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) { + let offsetLeft = 0, + xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + startX = opts.chartData.xAxisData.startX, + endX = opts.chartData.xAxisData.endX, + eachSpacing = opts.chartData.xAxisData.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + _this.scrollOption.currentOffset = offsetLeft; + _this.scrollOption.startTouchX = offsetLeft; + _this.scrollOption.distance = 0; + _this.scrollOption.lastMoveTime = 0; + opts._scrollDistance_ = offsetLeft; + } + + if (type === 'pie' || type === 'ring' || type === 'rose') { + config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts); + } + + switch (type) { + case 'word': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawWordCloudDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'map': + context.clearRect(0, 0, opts.width, opts.height); + drawMapDataPoints(series, opts, config, context); + setTimeout(()=>{ + this.uevent.trigger('renderComplete'); + },50) + break; + case 'funnel': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'line': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process), + xAxisPoints = _drawLineDataPoints.xAxisPoints, + calPoints = _drawLineDataPoints.calPoints, + eachSpacing = _drawLineDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'scatter': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process), + xAxisPoints = _drawScatterDataPoints.xAxisPoints, + calPoints = _drawScatterDataPoints.calPoints, + eachSpacing = _drawScatterDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bubble': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process), + xAxisPoints = _drawBubbleDataPoints.xAxisPoints, + calPoints = _drawBubbleDataPoints.calPoints, + eachSpacing = _drawBubbleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mix': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMixDataPoints.xAxisPoints, + calPoints = _drawMixDataPoints.calPoints, + eachSpacing = _drawMixDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'column': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process), + xAxisPoints = _drawColumnDataPoints.xAxisPoints, + calPoints = _drawColumnDataPoints.calPoints, + eachSpacing = _drawColumnDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'mount': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process), + xAxisPoints = _drawMountDataPoints.xAxisPoints, + calPoints = _drawMountDataPoints.calPoints, + eachSpacing = _drawMountDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'bar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawXAxis(categories, opts, config, context); + var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process), + yAxisPoints = _drawBarDataPoints.yAxisPoints, + calPoints = _drawBarDataPoints.calPoints, + eachSpacing = _drawBarDataPoints.eachSpacing; + opts.chartData.yAxisPoints = yAxisPoints; + opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'area': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process), + xAxisPoints = _drawAreaDataPoints.xAxisPoints, + calPoints = _drawAreaDataPoints.calPoints, + eachSpacing = _drawAreaDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'ring': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'pie': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'rose': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'radar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process); + drawLegend(opts.series, opts, config, context, opts.chartData); + drawToolTipBridge(opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'arcbar': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'gauge': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + case 'candle': + this.animationInstance = new Animation({ + timing: opts.timing, + duration: duration, + onProcess: function onProcess(process) { + context.clearRect(0, 0, opts.width, opts.height); + if (opts.rotate) { + contextRotate(context, opts); + } + drawYAxisGrid(categories, opts, config, context); + drawXAxis(categories, opts, config, context); + var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process), + xAxisPoints = _drawCandleDataPoints.xAxisPoints, + calPoints = _drawCandleDataPoints.calPoints, + eachSpacing = _drawCandleDataPoints.eachSpacing; + opts.chartData.xAxisPoints = xAxisPoints; + opts.chartData.calPoints = calPoints; + opts.chartData.eachSpacing = eachSpacing; + drawYAxis(series, opts, config, context); + if (opts.enableMarkLine !== false && process === 1) { + drawMarkLine(opts, config, context); + } + if (seriesMA) { + drawLegend(seriesMA, opts, config, context, opts.chartData); + } else { + drawLegend(opts.series, opts, config, context, opts.chartData); + } + drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints); + drawCanvas(opts, context); + }, + onAnimationFinish: function onAnimationFinish() { + _this.uevent.trigger('renderComplete'); + } + }); + break; + } +} + +function uChartsEvent() { + this.events = {}; +} + +uChartsEvent.prototype.addEventListener = function(type, listener) { + this.events[type] = this.events[type] || []; + this.events[type].push(listener); +}; + +uChartsEvent.prototype.delEventListener = function(type) { + this.events[type] = []; +}; + +uChartsEvent.prototype.trigger = function() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + var type = args[0]; + var params = args.slice(1); + if (!!this.events[type]) { + this.events[type].forEach(function(listener) { + try { + listener.apply(null, params); + } catch (e) { + //console.log('[uCharts] '+e); + } + }); + } +}; + +var uCharts = function uCharts(opts) { + opts.pix = opts.pixelRatio ? opts.pixelRatio : 1; + opts.fontSize = opts.fontSize ? opts.fontSize : 13; + opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor; + if (opts.background == "" || opts.background == "none") { + opts.background = "#FFFFFF" + } + opts.title = assign({}, opts.title); + opts.subtitle = assign({}, opts.subtitle); + opts.duration = opts.duration ? opts.duration : 1000; + opts.yAxis = assign({}, { + data: [], + showTitle: false, + disabled: false, + disableGrid: false, + gridSet: 'number', + splitNumber: 5, + gridType: 'solid', + dashLength: 4 * opts.pix, + gridColor: '#cccccc', + padding: 10, + fontColor: '#666666' + }, opts.yAxis); + opts.xAxis = assign({}, { + rotateLabel: false, + rotateAngle:45, + disabled: false, + disableGrid: false, + splitNumber: 5, + calibration:false, + fontColor: '#666666', + fontSize: 13, + lineHeight: 20, + marginTop: 0, + gridType: 'solid', + dashLength: 4, + scrollAlign: 'left', + boundaryGap: 'center', + axisLine: true, + axisLineColor: '#cccccc', + titleFontSize: 13, + titleOffsetY: 0, + titleOffsetX: 0, + titleFontColor: '#666666' + }, opts.xAxis); + opts.xAxis.scrollPosition = opts.xAxis.scrollAlign; + opts.legend = assign({}, { + show: true, + position: 'bottom', + float: 'center', + backgroundColor: 'rgba(0,0,0,0)', + borderColor: 'rgba(0,0,0,0)', + borderWidth: 0, + padding: 5, + margin: 5, + itemGap: 10, + fontSize: opts.fontSize, + lineHeight: opts.fontSize, + fontColor: opts.fontColor, + formatter: {}, + hiddenColor: '#CECECE' + }, opts.legend); + opts.extra = assign({ + tooltip:{ + legendShape: 'auto' + } + }, opts.extra); + opts.rotate = opts.rotate ? true : false; + opts.animation = opts.animation ? true : false; + opts.rotate = opts.rotate ? true : false; + opts.canvas2d = opts.canvas2d ? true : false; + + let config$$1 = assign({}, config); + config$$1.color = opts.color ? opts.color : config$$1.color; + if (opts.type == 'pie') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'ring') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + if (opts.type == 'rose') { + config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix; + } + config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix; + + //屏幕旋转 + config$$1.rotate = opts.rotate; + if (opts.rotate) { + let tempWidth = opts.width; + let tempHeight = opts.height; + opts.width = tempHeight; + opts.height = tempWidth; + } + + //适配高分屏 + opts.padding = opts.padding ? opts.padding : config$$1.padding; + config$$1.yAxisWidth = config.yAxisWidth * opts.pix; + config$$1.fontSize = opts.fontSize * opts.pix; + config$$1.titleFontSize = config.titleFontSize * opts.pix; + config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix; + if(!opts.context){ + throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!'); + } + this.context = opts.context; + if (!this.context.setTextAlign) { + this.context.setStrokeStyle = function(e) { + return this.strokeStyle = e; + } + this.context.setLineWidth = function(e) { + return this.lineWidth = e; + } + this.context.setLineCap = function(e) { + return this.lineCap = e; + } + this.context.setFontSize = function(e) { + return this.font = e + "px sans-serif"; + } + this.context.setFillStyle = function(e) { + return this.fillStyle = e; + } + this.context.setTextAlign = function(e) { + return this.textAlign = e; + } + this.context.setTextBaseline = function(e) { + return this.textBaseline = e; + } + this.context.setShadow = function(offsetX,offsetY,blur,color) { + this.shadowColor = color; + this.shadowOffsetX = offsetX; + this.shadowOffsetY = offsetY; + this.shadowBlur = blur; + } + this.context.draw = function() {} + } + //兼容NVUEsetLineDash + if(!this.context.setLineDash){ + this.context.setLineDash = function(e) {} + } + opts.chartData = {}; + this.uevent = new uChartsEvent(); + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + this.opts = opts; + this.config = config$$1; + drawCharts.call(this, opts.type, opts, config$$1, this.context); +}; + +uCharts.prototype.updateData = function() { + let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.opts = assign({}, this.opts, data); + this.opts.updateData = true; + let scrollPosition = data.scrollPosition || 'current'; + switch (scrollPosition) { + case 'current': + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + break; + case 'left': + this.opts._scrollDistance_ = 0; + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + break; + case 'right': + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + break; + } + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.zoom = function() { + var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount; + if (this.opts.enableScroll !== true) { + console.log('[uCharts] 请启用滚动条后使用') + return; + } + //当前屏幕中间点 + let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2); + this.opts.animation = false; + this.opts.xAxis.itemCount = val.itemCount; + //重新计算x轴偏移距离 + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context), + yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let centerLeft = eachSpacing * centerPoint; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = screenWidth / 2 - centerLeft; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts); + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +uCharts.prototype.dobuleZoom = function(e) { + if (this.opts.enableScroll !== true) { + console.log('[uCharts] 请启用滚动条后使用') + return; + } + const tcs = e.changedTouches; + if (tcs.length < 2) { + return; + } + for (var i = 0; i < tcs.length; i++) { + tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX; + tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY; + } + const ntcs = [getTouches(tcs[0], this.opts, e),getTouches(tcs[1], this.opts, e)]; + const xlength = Math.abs(ntcs[0].x - ntcs[1].x); + // 记录初始的两指之间的数据 + if(!this.scrollOption.moveCount){ + let cts0 = {changedTouches:[{x:tcs[0].x,y:this.opts.area[0] / this.opts.pix + 2}]}; + let cts1 = {changedTouches:[{x:tcs[1].x,y:this.opts.area[0] / this.opts.pix + 2}]}; + if(this.opts.rotate){ + cts0 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[0].y}]}; + cts1 = {changedTouches:[{x:this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,y:tcs[1].y}]}; + } + const moveCurrent1 = this.getCurrentDataIndex(cts0).index; + const moveCurrent2 = this.getCurrentDataIndex(cts1).index; + const moveCount = Math.abs(moveCurrent1 - moveCurrent2); + this.scrollOption.moveCount = moveCount; + this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2); + this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2); + return; + } + + let currentEachSpacing = xlength / this.scrollOption.moveCount; + let itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing; + itemCount = itemCount <= 2 ? 2 : itemCount; + itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount; + this.opts.animation = false; + this.opts.xAxis.itemCount = itemCount; + // 重新计算滚动条偏移距离 + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let currentLeft = eachSpacing * this.scrollOption.moveCurrent1; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = -currentLeft+Math.min(ntcs[0].x,ntcs[1].x)-this.opts.area[3]-eachSpacing; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption.currentOffset= offsetLeft; + this.scrollOption.startTouchX= 0; + this.scrollOption.distance=0; + calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts); + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +} + +uCharts.prototype.stopAnimation = function() { + this.animationInstance && this.animationInstance.stop(); +}; + +uCharts.prototype.addEventListener = function(type, listener) { + this.uevent.addEventListener(type, listener); +}; + +uCharts.prototype.delEventListener = function(type) { + this.uevent.delEventListener(type); +}; + +uCharts.prototype.getCurrentDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + if (this.opts.type === 'pie' || this.opts.type === 'ring') { + return findPieChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'rose') { + return findRoseChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData, this.opts); + } else if (this.opts.type === 'radar') { + return findRadarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.radarData, this.opts.categories.length); + } else if (this.opts.type === 'funnel') { + return findFunnelChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.funnelData); + } else if (this.opts.type === 'map') { + return findMapChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts); + } else if (this.opts.type === 'word') { + return findWordChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.wordCloudData); + } else if (this.opts.type === 'bar') { + return findBarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } else { + return findCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } + } + return -1; +}; + +uCharts.prototype.getLegendDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + return findLegendIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.legendData); + } + return -1; +}; + +uCharts.prototype.touchLegend = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + var _touches$ = getTouches(touches, this.opts, e); + var index = this.getLegendDataIndex(e); + if (index >= 0) { + if (this.opts.type == 'candle') { + this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show; + } else { + this.opts.series[index].show = !this.opts.series[index].show; + } + this.opts.animation = option.animation ? true : false; + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); + } + } + +}; + +uCharts.prototype.showToolTip = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (!touches) { + console.log("[uCharts] 未获取到event坐标信息"); + } + var _touches$ = getTouches(touches, this.opts, e); + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index, + group: current.group + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mount') { + var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: opts.chartData.calPoints[index].x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'bar') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1 || index.length>0) { + var seriesData = getSeriesDataItem(this.opts.series, index, current.group); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.x = _touches$.x; + opts.tooltip = { + textList: option.textList !== undefined ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mix') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option), + textList = _getMixToolTipData.textList, + offset = _getMixToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'candle') { + var current = this.getCurrentDataIndex(e); + var index = option.index == undefined ? current.index : option.index; + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, opts._series_[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'map') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + seriesData.name = seriesData.properties.name + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'word') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = assign({}, this.opts.series[index]); + var textList = [{ + text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name, + color: seriesData.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'radar') { + var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index; + if (index > -1) { + var opts = assign({}, this.opts, {animation: false}); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var textList = seriesData.map((item) => { + return { + text: option.formatter ? option.formatter(item, this.opts.categories[index], index, this.opts) : item.name + ': ' + item.data, + color: item.color, + legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : this.opts.extra.tooltip.legendShape + }; + }); + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: option.textList ? option.textList : textList, + offset: option.offset !== undefined ? option.offset : offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +uCharts.prototype.translate = function(distance) { + this.scrollOption = { + currentOffset: distance, + startTouchX: distance, + distance: 0, + lastMoveTime: 0 + }; + let opts = assign({}, this.opts, { + _scrollDistance_: distance, + animation: false + }); + drawCharts.call(this, this.opts.type, opts, this.config, this.context); +}; + +uCharts.prototype.scrollStart = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + var _touches$ = getTouches(touches, this.opts, e); + if (touches && this.opts.enableScroll === true) { + this.scrollOption.startTouchX = _touches$.x; + } +}; + +uCharts.prototype.scroll = function(e) { + if (this.scrollOption.lastMoveTime === 0) { + this.scrollOption.lastMoveTime = Date.now(); + } + let Limit = this.opts.touchMoveLimit || 60; + let currMoveTime = Date.now(); + let duration = currMoveTime - this.scrollOption.lastMoveTime; + if (duration < Math.floor(1000 / Limit)) return; + if (this.scrollOption.startTouchX == 0) return; + this.scrollOption.lastMoveTime = currMoveTime; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches && this.opts.enableScroll === true) { + var _touches$ = getTouches(touches, this.opts, e); + var _distance; + _distance = _touches$.x - this.scrollOption.startTouchX; + var currentOffset = this.scrollOption.currentOffset; + var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts); + this.scrollOption.distance = _distance = validDistance - currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset + _distance, + animation: false + }); + this.opts = opts; + drawCharts.call(this, opts.type, opts, this.config, this.context); + return currentOffset + _distance; + } +}; + +uCharts.prototype.scrollEnd = function(e) { + if (this.opts.enableScroll === true) { + var _scrollOption = this.scrollOption, + currentOffset = _scrollOption.currentOffset, + distance = _scrollOption.distance; + this.scrollOption.currentOffset = currentOffset + distance; + this.scrollOption.distance = 0; + this.scrollOption.moveCount = 0; + } +}; + +export default uCharts; \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js new file mode 100644 index 0000000..0902ecd --- /dev/null +++ b/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.min.js @@ -0,0 +1,18 @@ +/* + * uCharts (R) + * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台 + * Copyright (C) 2021 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * 复制使用请保留本段注释,感谢支持开源! + * + * uCharts (R) 官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ +"use strict";var config={version:"v2.5.0-20230101",yAxisWidth:15,xAxisHeight:22,padding:[10,10,10,10],rotate:false,fontSize:13,fontColor:"#666666",dataPointShape:["circle","circle","circle","circle"],color:["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],linearColor:["#0EE2F8","#2BDCA8","#FA7D8D","#EB88E2","#2AE3A0","#0EE2F8","#EB88E2","#6773E3","#F78A85"],pieChartLinePadding:15,pieChartTextPadding:5,titleFontSize:20,subtitleFontSize:15,radarLabelTextMargin:13};var assign=function(e,...t){if(e==null){throw new TypeError("[uCharts] Cannot convert undefined or null to object")}if(!t||t.length<=0){return e}function i(e,a){for(let t in a){e[t]=e[t]&&e[t].toString()==="[object Object]"?i(e[t],a[t]):e[t]=a[t]}return e}t.forEach(t=>{e=i(e,t)});return e};var util={toFixed:function t(e,a){a=a||2;if(this.isFloat(e)){e=e.toFixed(a)}return e},isFloat:function t(e){return e%1!==0},approximatelyEqual:function t(e,a){return Math.abs(e-a)<1e-10},isSameSign:function t(e,a){return Math.abs(e)===e&&Math.abs(a)===a||Math.abs(e)!==e&&Math.abs(a)!==a},isSameXCoordinateArea:function t(e,a){return this.isSameSign(e.x,a.x)},isCollision:function t(e,a){e.end={};e.end.x=e.start.x+e.width;e.end.y=e.start.y-e.height;a.end={};a.end.x=a.start.x+a.width;a.end.y=a.start.y-a.height;var i=a.start.x>e.end.x||a.end.xe.start.y||a.start.y1){if(r.extra.mount.widthRatio>2)r.extra.mount.widthRatio=2;n+=(r.extra.mount.widthRatio-1)*a.eachSpacing}var l=e;if(e>=0){l=0;t.uevent.trigger("scrollLeft");t.scrollOption.position="left";r.xAxis.scrollPosition="left"}else if(Math.abs(e)>=n-o){l=o-n;t.uevent.trigger("scrollRight");t.scrollOption.position="right";r.xAxis.scrollPosition="right"}else{t.scrollOption.position=e;r.xAxis.scrollPosition=e}return l}function isInAngleRange(t,e,a){function i(t){while(t<0){t+=2*Math.PI}while(t>2*Math.PI){t-=2*Math.PI}return t}t=i(t);e=i(e);a=i(a);if(e>a){a+=2*Math.PI;if(t=e&&t<=a}function createCurveControlPoints(t,e){function a(t,e){if(t[e-1]&&t[e+1]){return t[e].y>=Math.max(t[e-1].y,t[e+1].y)||t[e].y<=Math.min(t[e-1].y,t[e+1].y)}else{return false}}function c(t,e){if(t[e-1]&&t[e+1]){return t[e].x>=Math.max(t[e-1].x,t[e+1].x)||t[e].x<=Math.min(t[e-1].x,t[e+1].x)}else{return false}}var i=.2;var r=.2;var o=null;var n=null;var l=null;var s=null;if(e<1){o=t[0].x+(t[1].x-t[0].x)*i;n=t[0].y+(t[1].y-t[0].y)*i}else{o=t[e].x+(t[e+1].x-t[e-1].x)*i;n=t[e].y+(t[e+1].y-t[e-1].y)*i}if(e>t.length-3){var h=t.length-1;l=t[h].x-(t[h].x-t[h-1].x)*r;s=t[h].y-(t[h].y-t[h-1].y)*r}else{l=t[e+1].x-(t[e+2].x-t[e].x)*r;s=t[e+1].y-(t[e+2].y-t[e].y)*r}if(a(t,e+1)){s=t[e+1].y}if(a(t,e)){n=t[e].y}if(c(t,e+1)){l=t[e+1].x}if(c(t,e)){o=t[e].x}if(n>=Math.max(t[e].y,t[e+1].y)||n<=Math.min(t[e].y,t[e+1].y)){n=t[e].y}if(s>=Math.max(t[e].y,t[e+1].y)||s<=Math.min(t[e].y,t[e+1].y)){s=t[e+1].y}if(o>=Math.max(t[e].x,t[e+1].x)||o<=Math.min(t[e].x,t[e+1].x)){o=t[e].x}if(l>=Math.max(t[e].x,t[e+1].x)||l<=Math.min(t[e].x,t[e+1].x)){l=t[e+1].x}return{ctrA:{x:o,y:n},ctrB:{x:l,y:s}}}function convertCoordinateOrigin(t,e,a){return{x:a.x+t,y:a.y-e}}function avoidCollision(t,e){if(e){while(util.isCollision(t,e)){if(t.start.x>0){t.start.y--}else if(t.start.x<0){t.start.y++}else{if(t.start.y>0){t.start.y++}else{t.start.y--}}}}return t}function fixPieSeries(e,a,t){let i=[];if(e.length>0&&e[0].data.constructor.toString().indexOf("Array")>-1){a._pieSeries_=e;let t=e[0].data;for(var r=0;r=1e4){a=1e3}else if(i>=1e3){a=100}else if(i>=100){a=10}else if(i>=10){a=5}else if(i>=1){a=1}else if(i>=.1){a=.1}else if(i>=.01){a=.01}else if(i>=.001){a=.001}else if(i>=1e-4){a=1e-4}else if(i>=1e-5){a=1e-5}else{a=1e-6}return{minRange:findRange(t,"lower",a),maxRange:findRange(e,"upper",a)}}function measureText(a,t,e){var i=0;a=String(a);e=false;if(e!==false&&e!==undefined&&e.setFontSize&&e.measureText){e.setFontSize(t);return e.measureText(a).width}else{var a=a.split("");for(let e=0;e-1;if(n){let t=filterSeries(e);for(var l=0;l5&&arguments[5]!==undefined?arguments[5]:{};var l=a.chartData.calPoints?a.chartData.calPoints:[];let s={};if(r.length>0){let e=[];for(let t=0;t0){e=o[i]}return{text:n.formatter?n.formatter(t,e,i,a):t.name+": "+t.data,color:t.color,legendShape:a.extra.tooltip.legendShape=="auto"?t.legendShape:a.extra.tooltip.legendShape}});var h={x:Math.round(s.x),y:Math.round(s.y)};return{textList:e,offset:h}}function getMixToolTipData(t,e,a,i){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:{};var o=e.chartData.xAxisPoints[a]+e.chartData.eachSpacing/2;var n=t.map(function(t){return{text:r.formatter?r.formatter(t,i[a],a,e):t.name+": "+t.data,color:t.color,disableLegend:t.disableLegend?true:false,legendShape:e.extra.tooltip.legendShape=="auto"?t.legendShape:e.extra.tooltip.legendShape}});n=n.filter(function(t){if(t.disableLegend!==true){return t}});var l={x:Math.round(o),y:0};return{textList:n,offset:l}}function getCandleToolTipData(o,e,n,l,i,t){var r=arguments.length>6&&arguments[6]!==undefined?arguments[6]:{};var a=n.chartData.calPoints;let s=t.color.upFill;let h=t.color.downFill;let c=[s,s,h,s];var d=[];e.map(function(t){if(l==0){if(t.data[1]-t.data[0]<0){c[1]=h}else{c[1]=s}}else{if(t.data[0]o[l-1][1]){c[2]=s}if(t.data[3]4&&arguments[4]!==undefined?arguments[4]:0;var l={index:-1,group:[]};var i=e.chartData.eachSpacing/2;let r=[];if(n&&n.length>0){if(!e.categories){i=0}else{for(let t=1;tt){l.index=e}})}}}return l}function findBarChartCurrentIndex(a,t,e,i){var r=arguments.length>4&&arguments[4]!==undefined?arguments[4]:0;var o={index:-1,group:[]};var n=e.chartData.eachSpacing/2;let l=e.chartData.yAxisPoints;if(t&&t.length>0){if(isInExactChartArea(a,e,i)){l.forEach(function(t,e){if(a.y+r+n>t){o.index=e}})}}return o}function findLegendIndex(o,t,e){let n=-1;let l=0;if(isInExactLegendArea(o,t.area)){let i=t.points;let r=-1;for(let t=0,e=i.length;tt[0]-l&&o.xt[1]-l&&o.ye.start.x&&t.xe.start.y&&t.y=e.area[3]-10&&t.y>=e.area[0]&&t.y<=e.height-e.area[2]}function findRadarChartCurrentIndex(t,e,a){var r=2*Math.PI/a;var o=-1;if(isInExactPieChartArea(t,e.center,e.radius)){var n=function t(e){if(e<0){e+=2*Math.PI}if(e>2*Math.PI){e-=2*Math.PI}return e};var l=Math.atan2(e.center.y-t.y,t.x-e.center.x);l=-1*l;if(l<0){l+=2*Math.PI}var i=e.angleList.map(function(t){t=n(-1*t);return t});i.forEach(function(t,e){var a=n(t-r/2);var i=n(t+r/2);if(i=a&&l<=i||l+2*Math.PI>=a&&l+2*Math.PI<=i){o=e}})}return o}function findFunnelChartCurrentIndex(t,e){var a=-1;for(var i=0,r=e.series.length;io.funnelArea[0]&&t.xo.funnelArea[1]&&t.yo.area[0]&&t.xo.area[1]&&t.ys.width-s.area[1]-s.area[3]){i.push(n);o.push(r-s.legend.itemGap*s.pix);r=e;n=[t]}else{r+=e;n.push(t)}}if(n.length){i.push(n);o.push(r-s.legend.itemGap*s.pix);c.widthArr=o;let t=Math.max.apply(null,o);switch(s.legend.float){case"left":c.area.start.x=s.area[3];c.area.end.x=s.area[3]+t+2*d;break;case"right":c.area.start.x=s.width-s.area[1]-t-2*d;c.area.end.x=s.width-s.area[1];break;default:c.area.start.x=(s.width-t)/2-d;c.area.end.x=(s.width+t)/2+d}c.area.width=t+2*d;c.area.wholeWidth=t+2*d;c.area.height=i.length*u+2*d;c.area.wholeHeight=i.length*u+2*d+2*x;c.points=i}}else{let t=l.length;let e=s.height-s.area[0]-s.area[2]-2*x-2*d;let a=Math.min(Math.floor(e/u),t);c.area.height=a*u+d*2;c.area.wholeHeight=a*u+d*2;switch(s.legend.float){case"top":c.area.start.y=s.area[0]+x;c.area.end.y=s.area[0]+x+c.area.height;break;case"bottom":c.area.start.y=s.height-s.area[2]-x-c.area.height;c.area.end.y=s.height-s.area[2]-x;break;default:c.area.start.y=(s.height-c.area.height)/2;c.area.end.y=(s.height+c.area.height)/2}let i=t%a===0?t/a:Math.floor(t/a+1);let r=[];for(let e=0;ei){i=t}}c.widthArr.push(i);c.heightArr.push(a.length*u+d*2)}let e=0;for(let t=0;t4&&arguments[4]!==undefined?arguments[4]:-1;var i;if(c=="stack"){i=dataCombineStack(t,e.categories.length)}else{i=dataCombine(t)}var r=[];i=i.filter(function(t){if(typeof t==="object"&&t!==null){if(t.constructor.toString().indexOf("Array")>-1){return t!==null}else{return t.value!==null}}else{return t!==null}});i.map(function(t){if(typeof t==="object"){if(t.constructor.toString().indexOf("Array")>-1){if(e.type=="candle"){t.map(function(t){r.push(t)})}else{r.push(t[0])}}else{r.push(t.value)}}else{r.push(t)}});var o=0;var n=0;if(r.length>0){o=Math.min.apply(this,r);n=Math.max.apply(this,r)}if(a>-1){if(typeof e.xAxis.data[a].min==="number"){o=Math.min(e.xAxis.data[a].min,o)}if(typeof e.xAxis.data[a].max==="number"){n=Math.max(e.xAxis.data[a].max,n)}}else{if(typeof e.xAxis.min==="number"){o=Math.min(e.xAxis.min,o)}if(typeof e.xAxis.max==="number"){n=Math.max(e.xAxis.max,n)}}if(o===n){var d=n||10;n+=d}var l=o;var x=n;var f=[];var p=(x-l)/e.xAxis.splitNumber;for(var s=0;s<=e.xAxis.splitNumber;s++){f.push(l+p*s)}return f}function calXAxisData(t,e,a,i){var r=assign({},{type:""},e.extra.bar);var o={angle:0,xAxisHeight:e.xAxis.lineHeight*e.pix+e.xAxis.marginTop*e.pix};o.ranges=getXAxisTextList(t,e,a,r.type);o.rangesFormat=o.ranges.map(function(t){t=util.toFixed(t,2);return t});var n=o.ranges.map(function(t){t=util.toFixed(t,2);return t});o=Object.assign(o,getXAxisPoints(n,e,a));var l=o.eachSpacing;var s=n.map(function(t){return measureText(t,e.xAxis.fontSize*e.pix,i)});if(e.xAxis.disabled===true){o.xAxisHeight=0}return o}function getRadarDataPoints(r,o,n,a,t){var l=arguments.length>5&&arguments[5]!==undefined?arguments[5]:1;var e=t.extra.radar||{};e.max=e.max||0;var s=Math.max(e.max,Math.max.apply(null,dataCombine(a)));var h=[];for(let e=0;e2&&arguments[2]!==undefined?arguments[2]:1;var o=0;var n=0;for(let e=0;e4&&arguments[4]!==undefined?arguments[4]:1;for(let t=0;t4&&arguments[4]!==undefined?arguments[4]:1;var l=0;var s=0;var h=[];for(let e=0;e2&&arguments[2]!==undefined?arguments[2]:1;if(o==1){o=.999999}for(let a=0;a=2){t._proportion_=t._proportion_%2}}return i}function getGaugeArcbarDataPoints(i,r){var o=arguments.length>2&&arguments[2]!==undefined?arguments[2]:1;if(o==1){o=.999999}for(let a=0;a=2){t._proportion_=t._proportion_%2}}return i}function getGaugeAxisPoints(e,a,t){let i;if(t=2){e[t]._endAngle_=e[t]._endAngle_%2}r=e[t]._endAngle_}return e}function getGaugeDataPoints(i,r,o){let n=arguments.length>3&&arguments[3]!==undefined?arguments[3]:1;for(let a=0;a=o.oldData){e._proportion_=(e._endAngle_-e._oldAngle_)*n+o.oldAngle}else{e._proportion_=e._oldAngle_-(e._oldAngle_-e._endAngle_)*n}if(e._proportion_>=2){e._proportion_=e._proportion_%2}}return i}function getPieTextMaxLength(i,r,o,n){i=getPieDataPoints(i);let l=0;for(let a=0;a0){t.width=Math.min(t.width,+n.extra.mix.column.width*n.pix)}if(n.extra.column&&n.extra.column.width&&+n.extra.column.width>0){t.width=Math.min(t.width,+n.extra.column.width*n.pix)}if(t.width<=0){t.width=1}t.x+=(o+.5-r/2)*(t.width+e);return t})}function fixBarData(t,i,r,o,e,n){return t.map(function(t){if(t===null){return null}var e=0;var a=0;e=n.extra.bar.seriesGap*n.pix||0;a=n.extra.bar.categoryGap*n.pix||0;e=Math.min(e,i/r);a=Math.min(a,i/r);t.width=Math.ceil((i-2*a-e*(r-1))/r);if(n.extra.bar&&n.extra.bar.width&&+n.extra.bar.width>0){t.width=Math.min(t.width,+n.extra.bar.width*n.pix)}if(t.width<=0){t.width=1}t.y+=(o+.5-r/2)*(t.width+e);return t})}function fixColumeMeterData(t,e,a,i,r,o,n){var l=o.extra.column.categoryGap*o.pix||0;return t.map(function(t){if(t===null){return null}t.width=e-2*l;if(o.extra.column&&o.extra.column.width&&+o.extra.column.width>0){t.width=Math.min(t.width,+o.extra.column.width*o.pix)}if(i>0){t.width-=n}return t})}function fixColumeStackData(t,a,e,i,r,o,n){var l=o.extra.column.categoryGap*o.pix||0;return t.map(function(t,e){if(t===null){return null}t.width=Math.ceil(a-2*l);if(o.extra.column&&o.extra.column.width&&+o.extra.column.width>0){t.width=Math.min(t.width,+o.extra.column.width*o.pix)}if(t.width<=0){t.width=1}return t})}function fixBarStackData(t,a,e,i,r,o,n){var l=o.extra.bar.categoryGap*o.pix||0;return t.map(function(t,e){if(t===null){return null}t.width=Math.ceil(a-2*l);if(o.extra.bar&&o.extra.bar.width&&+o.extra.bar.width>0){t.width=Math.min(t.width,+o.extra.bar.width*o.pix)}if(t.width<=0){t.width=1}return t})}function getXAxisPoints(t,e,h){var a=e.width-e.area[1]-e.area[3];var i=e.enableScroll?Math.min(e.xAxis.itemCount,t.length):t.length;if((e.type=="line"||e.type=="area"||e.type=="scatter"||e.type=="bubble"||e.type=="bar")&&i>1&&e.xAxis.boundaryGap=="justify"){i-=1}var r=0;if(e.type=="mount"&&e.extra&&e.extra.mount&&e.extra.mount.widthRatio&&e.extra.mount.widthRatio>1){if(e.extra.mount.widthRatio>2)e.extra.mount.widthRatio=2;r=e.extra.mount.widthRatio-1;i+=r}var o=a/i;var n=[];var l=e.area[3];var s=e.width-e.area[1];t.forEach(function(t,e){n.push(l+r/2*o+e*o)});if(e.xAxis.boundaryGap!=="justify"){if(e.enableScroll===true){n.push(l+r*o+t.length*o)}else{n.push(s)}}return{xAxisPoints:n,startX:l,endX:s,eachSpacing:o}}function getCandleDataPoints(t,l,s,h,c,d,a){var x=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var e=[];var f=d.height-d.area[0]-d.area[2];t.forEach(function(t,o){if(t===null){e.push(null)}else{var n=[];t.forEach(function(t,e){var a={};a.x=h[o]+Math.round(c/2);var i=t.value||t;var r=f*(i-l)/(s-l);r*=x;a.y=d.height-Math.round(r)-d.area[2];n.push(a)});e.push(n)}});return e}function getDataPoints(t,a,n,l,s,h,e){var c=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var d="center";if(h.type=="line"||h.type=="area"||h.type=="scatter"||h.type=="bubble"){d=h.xAxis.boundaryGap}var x=[];var f=h.height-h.area[0]-h.area[2];var p=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){x.push(null)}else{var r={};r.color=i.color;r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+p*(i[0]-e)/(a-e);if(h.type=="bubble"){r.r=i[2];r.t=i[3]}}else{o=i.value}}if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);e*=c;r.y=h.height-e-h.area[2];x.push(r)}});return x}function getLineDataPoints(t,a,n,l,s,h,e,p,c){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=h.xAxis.boundaryGap;var x=[];var f=h.height-h.area[0]-h.area[2];var u=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){x.push(null)}else{var r={};r.color=i.color;if(p.animation=="vertical"){r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+u*(i[0]-e)/(a-e)}else{o=i.value}}if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);e*=c;r.y=h.height-e-h.area[2];x.push(r)}else{r.x=l[0]+s*t*c;var o=i;if(d=="center"){r.x+=s/2}var e=f*(o-a)/(n-a);r.y=h.height-e-h.area[2];x.push(r)}}});return x}function getColumnDataPoints(t,a,n,l,s,h,e,i,c){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=[];var x=h.height-h.area[0]-h.area[2];var f=h.width-h.area[1]-h.area[3];t.forEach(function(i,t){if(i===null){d.push(null)}else{var r={};r.color=i.color;r.x=l[t];var o=i;if(typeof i==="object"&&i!==null){if(i.constructor.toString().indexOf("Array")>-1){let t,e,a;t=[].concat(h.chartData.xAxisData.ranges);e=t.shift();a=t.pop();o=i[1];r.x=h.area[3]+f*(i[0]-e)/(a-e)}else{o=i.value}}r.x+=s/2;var e=x*(o*c-a)/(n-a);r.y=h.height-e-h.area[2];d.push(r)}});return d}function getMountDataPoints(t,o,n,l,s,h,e,a){var c=arguments.length>8&&arguments[8]!==undefined?arguments[8]:1;var d=[];var x=h.height-h.area[0]-h.area[2];var i=h.width-h.area[1]-h.area[3];var f=s*e.widthRatio;t.forEach(function(t,e){if(t===null){d.push(null)}else{var a={};a.color=t.color;a.x=l[e];a.x+=s/2;var i=t.data;var r=x*(i*c-o)/(n-o);a.y=h.height-r-h.area[2];a.value=i;a.width=f;d.push(a)}});return d}function getBarDataPoints(t,o,n,l,e,s,a){var h=arguments.length>7&&arguments[7]!==undefined?arguments[7]:1;var c=[];var i=s.height-s.area[0]-s.area[2];var d=s.width-s.area[1]-s.area[3];t.forEach(function(t,e){if(t===null){c.push(null)}else{var a={};a.color=t.color;a.y=l[e];var i=t;if(typeof t==="object"&&t!==null){i=t.value}var r=d*(i-o)/(n-o);r*=h;a.height=r;a.value=i;a.x=r+s.area[3];c.push(a)}});return c}function getStackDataPoints(t,s,h,c,g,d,e,x,y){var f=arguments.length>9&&arguments[9]!==undefined?arguments[9]:1;var p=[];var u=d.height-d.area[0]-d.area[2];t.forEach(function(t,e){if(t===null){p.push(null)}else{var a={};a.color=t.color;a.x=c[e]+Math.round(g/2);if(x>0){var i=0;for(let t=0;t<=x;t++){i+=y[t].data[e]}var r=i-t;var o=u*(i-s)/(h-s);var n=u*(r-s)/(h-s)}else{var i=t;if(typeof t==="object"&&t!==null){i=t.value}var o=u*(i-s)/(h-s);var n=0}var l=n;o*=f;l*=f;a.y=d.height-Math.round(o)-d.area[2];a.y0=d.height-Math.round(l)-d.area[2];p.push(a)}});return p}function getBarStackDataPoints(t,s,h,c,e,d,a,x,g){var f=arguments.length>9&&arguments[9]!==undefined?arguments[9]:1;var p=[];var u=d.width-d.area[1]-d.area[3];t.forEach(function(t,e){if(t===null){p.push(null)}else{var a={};a.color=t.color;a.y=c[e];if(x>0){var i=0;for(let t=0;t<=x;t++){i+=g[t].data[e]}var r=i-t;var o=u*(i-s)/(h-s);var n=u*(r-s)/(h-s)}else{var i=t;if(typeof t==="object"&&t!==null){i=t.value}var o=u*(i-s)/(h-s);var n=0}var l=n;o*=f;l*=f;a.height=o-l;a.x=d.area[3]+o;a.x0=d.area[3]+l;p.push(a)}});return p}function getYAxisTextList(t,e,h,c,a){var d=arguments.length>5&&arguments[5]!==undefined?arguments[5]:-1;var i;if(c=="stack"){i=dataCombineStack(t,e.categories.length)}else{i=dataCombine(t)}var r=[];i=i.filter(function(t){if(typeof t==="object"&&t!==null){if(t.constructor.toString().indexOf("Array")>-1){return t!==null}else{return t.value!==null}}else{return t!==null}});i.map(function(t){if(typeof t==="object"){if(t.constructor.toString().indexOf("Array")>-1){if(e.type=="candle"){t.map(function(t){r.push(t)})}else{r.push(t[1])}}else{r.push(t.value)}}else{r.push(t)}});var o=a.min||0;var n=a.max||0;if(r.length>0){o=Math.min.apply(this,r);n=Math.max.apply(this,r)}if(o===n){if(n==0){n=10}else{o=0}}var l=getDataRange(o,n);var x=a.min===undefined||a.min===null?l.minRange:a.min;var f=a.max===undefined||a.max===null?l.maxRange:a.max;var p=(f-x)/e.yAxis.splitNumber;var u=[];for(var s=0;s<=e.yAxis.splitNumber;s++){u.push(x+p*s)}return u.reverse()}function calYAxisData(a,o,e,n){var l=assign({},{type:""},o.extra.column);var t=o.yAxis.data.length;var s=new Array(t);if(t>0){for(let e=0;e{return t+(i.unit||"")}}i.categories=i.categories||o.categories;h[r]=i.categories}else{if(!i.formatter){i.formatter=(t,e,a)=>{return util.toFixed(t,i.tofix||0)+(i.unit||"")}}h[r]=getYAxisTextList(s[r],o,e,l.type,i,r)}let a=i.fontSize*o.pix||e.fontSize;d[r]={position:i.position?i.position:"left",width:0};c[r]=h[r].map(function(t,e){t=i.formatter(t,e,o);d[r].width=Math.max(d[r].width,measureText(t,a,n)+5);return t});let t=i.calibration?4*o.pix:0;d[r].width+=t+3*o.pix;if(i.disabled===true){d[r].width=0}}}else{var h=new Array(1);var c=new Array(1);var d=new Array(1);if(o.type==="bar"){h[0]=o.categories;if(!o.yAxis.formatter){o.yAxis.formatter=(t,e,a)=>{return t+(a.yAxis.unit||"")}}}else{if(!o.yAxis.formatter){o.yAxis.formatter=(t,e,a)=>{return t.toFixed(a.yAxis.tofix)+(a.yAxis.unit||"")}}h[0]=getYAxisTextList(a,o,e,l.type,{})}d[0]={position:"left",width:0};var i=o.yAxis.fontSize*o.pix||e.fontSize;c[0]=h[0].map(function(t,e){t=o.yAxis.formatter(t,e,o);d[0].width=Math.max(d[0].width,measureText(t,i,n)+5);return t});d[0].width+=3*o.pix;if(o.yAxis.disabled===true){d[0]={position:"left",width:0};o.yAxis.data[0]={disabled:true}}else{o.yAxis.data[0]={disabled:false,position:"left",max:o.yAxis.max,min:o.yAxis.min,formatter:o.yAxis.formatter};if(o.type==="bar"){o.yAxis.data[0].categories=o.categories;o.yAxis.data[0].type="categories"}}}return{rangesFormat:c,ranges:h,yAxisWidth:d}}function calTooltipYAxisData(r,t,o,e,a){let n=[].concat(o.chartData.yAxisData.ranges);let l=o.height-o.area[0]-o.area[2];let s=o.area[0];let h=[];for(let i=0;i0&&r.tooltip.group.includes(n)==false){return}var l=typeof r.tooltip.index==="number"?r.tooltip.index:r.tooltip.index[r.tooltip.group.indexOf(n)];i.beginPath();if(o.activeType=="hollow"){i.setStrokeStyle(e);i.setFillStyle(r.background);i.setLineWidth(2*r.pix)}else{i.setStrokeStyle("#ffffff");i.setFillStyle(e);i.setLineWidth(1*r.pix)}if(a==="diamond"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x,t.y-4.5);i.lineTo(t.x-4.5,t.y);i.lineTo(t.x,t.y+4.5);i.lineTo(t.x+4.5,t.y);i.lineTo(t.x,t.y-4.5)}})}else if(a==="circle"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x+2.5*r.pix,t.y);i.arc(t.x,t.y,3*r.pix,0,2*Math.PI,false)}})}else if(a==="square"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x-3.5,t.y-3.5);i.rect(t.x-3.5,t.y-3.5,7,7)}})}else if(a==="triangle"){t.forEach(function(t,e){if(t!==null&&l==e){i.moveTo(t.x,t.y-4.5);i.lineTo(t.x-4.5,t.y+4.5);i.lineTo(t.x+4.5,t.y+4.5);i.lineTo(t.x,t.y-4.5)}})}else if(a==="none"){return}i.closePath();i.fill();i.stroke()}function drawRingTitle(t,e,a,i){var r=t.title.fontSize||e.titleFontSize;var o=t.subtitle.fontSize||e.subtitleFontSize;var n=t.title.name||"";var l=t.subtitle.name||"";var c=t.title.color||t.fontColor;var d=t.subtitle.color||t.fontColor;var x=n?r:0;var f=l?o:0;var s=5;if(l){var p=measureText(l,o*t.pix,a);var u=i.x-p/2+(t.subtitle.offsetX||0)*t.pix;var h=i.y+o*t.pix/2+(t.subtitle.offsetY||0)*t.pix;if(n){h+=(x*t.pix+s)/2}a.beginPath();a.setFontSize(o*t.pix);a.setFillStyle(d);a.fillText(l,u,h);a.closePath();a.stroke()}if(n){var g=measureText(n,r*t.pix,a);var y=i.x-g/2+(t.title.offsetX||0);var v=i.y+r*t.pix/2+(t.title.offsetY||0)*t.pix;if(l){v-=(f*t.pix+s)/2}a.beginPath();a.setFontSize(r*t.pix);a.setFillStyle(c);a.fillText(n,y,v);a.closePath();a.stroke()}}function drawPointText(t,o,n,l,s){var h=o.data;var c=o.textOffset?o.textOffset:0;t.forEach(function(t,e){if(t!==null){l.beginPath();var a=o.textSize?o.textSize*s.pix:n.fontSize;l.setFontSize(a);l.setFillStyle(o.textColor||s.fontColor);var i=h[e];if(typeof h[e]==="object"&&h[e]!==null){if(h[e].constructor.toString().indexOf("Array")>-1){i=h[e][1]}else{i=h[e].value}}var r=o.formatter?o.formatter(i,e,o,s):i;l.setTextAlign("center");l.fillText(String(r),t.x,t.y-4+c*s.pix);l.closePath();l.stroke();l.setTextAlign("left")}})}function drawColumePointText(t,n,l,s,h){var c=n.data;var d=n.textOffset?n.textOffset:0;var x=h.extra.column.labelPosition;t.forEach(function(t,e){if(t!==null){s.beginPath();var a=n.textSize?n.textSize*h.pix:l.fontSize;s.setFontSize(a);s.setFillStyle(n.textColor||h.fontColor);var i=c[e];if(typeof c[e]==="object"&&c[e]!==null){if(c[e].constructor.toString().indexOf("Array")>-1){i=c[e][1]}else{i=c[e].value}}var r=n.formatter?n.formatter(i,e,n,h):i;s.setTextAlign("center");var o=t.y-4*h.pix+d*h.pix;if(t.y>n.zeroPoints){o=t.y+d*h.pix+a}if(x=="insideTop"){o=t.y+a+d*h.pix;if(t.y>n.zeroPoints){o=t.y-d*h.pix-4*h.pix}}if(x=="center"){o=t.y+d*h.pix+(h.height-h.area[2]-t.y+a)/2;if(n.zeroPointsn.zeroPoints){o=t.y-d*h.pix-(t.y-n.zeroPoints-a)/2}if(h.extra.column.type=="stack"){o=t.y+d*h.pix+(t.y0-t.y+a)/2}}if(x=="bottom"){o=h.height-h.area[2]+d*h.pix-4*h.pix;if(n.zeroPointsn.zeroPoints){o=n.zeroPoints-d*h.pix+a+2*h.pix}if(h.extra.column.type=="stack"){o=t.y0+d*h.pix-4*h.pix}}s.fillText(String(r),t.x,o);s.closePath();s.stroke();s.setTextAlign("left")}})}function drawMountPointText(t,n,l,s,h,c){var e=n.data;var d=n.textOffset?n.textOffset:0;var a=h.extra.mount.labelPosition;t.forEach(function(t,e){if(t!==null){s.beginPath();var a=n[e].textSize?n[e].textSize*h.pix:l.fontSize;s.setFontSize(a);s.setFillStyle(n[e].textColor||h.fontColor);var i=t.value;var r=n[e].formatter?n[e].formatter(i,e,n,h):i;s.setTextAlign("center");var o=t.y-4*h.pix+d*h.pix;if(t.y>c){o=t.y+d*h.pix+a}s.fillText(String(r),t.x,o);s.closePath();s.stroke();s.setTextAlign("left")}})}function drawBarPointText(t,o,n,l,s){var h=o.data;var e=o.textOffset?o.textOffset:0;t.forEach(function(t,e){if(t!==null){l.beginPath();var a=o.textSize?o.textSize*s.pix:n.fontSize;l.setFontSize(a);l.setFillStyle(o.textColor||s.fontColor);var i=h[e];if(typeof h[e]==="object"&&h[e]!==null){i=h[e].value}var r=o.formatter?o.formatter(i,e,o,s):i;l.setTextAlign("left");l.fillText(String(r),t.x+4*s.pix,t.y+a/2-3);l.closePath();l.stroke()}})}function drawGaugeLabel(e,a,i,r,o,n){a-=e.width/2+e.labelOffset*r.pix;a=a<10?10:a;let t;if(e.endAngle=2){l=l%2}s+=x}}function drawRadarLabel(t,s,h,c,d,x){var f=c.extra.radar||{};t.forEach(function(t,e){if(f.labelPointShow===true&&c.categories[e]!==""){var a={x:s*Math.cos(t),y:s*Math.sin(t)};var i=convertCoordinateOrigin(a.x,a.y,h);x.setFillStyle(f.labelPointColor);x.beginPath();x.arc(i.x,i.y,f.labelPointRadius*c.pix,0,2*Math.PI,false);x.closePath();x.fill()}if(f.labelShow===true){var r={x:(s+d.radarLabelTextMargin*c.pix)*Math.cos(t),y:(s+d.radarLabelTextMargin*c.pix)*Math.sin(t)};var o=convertCoordinateOrigin(r.x,r.y,h);var n=o.x;var l=o.y;if(util.approximatelyEqual(r.x,0)){n-=measureText(c.categories[e]||"",d.fontSize,x)/2}else if(r.x<0){n-=measureText(c.categories[e]||"",d.fontSize,x)}x.beginPath();x.setFontSize(d.fontSize);x.setFillStyle(f.labelColor||c.fontColor);x.fillText(c.categories[e]||"",n,l+d.fontSize/2);x.closePath();x.stroke()}})}function drawPieText(n,d,x,f,t,l){var p=x.pieChartLinePadding;var u=[];var g=null;var y=n.map(function(t,e){var a=t.formatter?t.formatter(t,e,n,d):util.toFixed(t._proportion_.toFixed(4)*100)+"%";a=t.labelText?t.labelText:a;var i=2*Math.PI-(t._start_+2*Math.PI*t._proportion_/2);if(t._rose_proportion_){i=2*Math.PI-(t._start_+2*Math.PI*t._rose_proportion_/2)}var r=t.color;var o=t._radius_;return{arc:i,text:a,color:r,radius:o,textColor:t.textColor,textSize:t.textSize,labelShow:t.labelShow}});for(let c=0;c=0?e+x.pieChartTextPadding:e-x.pieChartTextPadding;let n=a;let l=measureText(t.text,t.textSize*d.pix||x.fontSize,f);let s=n;if(g&&util.isSameXCoordinateArea(g.start,{x:o})){if(o>0){s=Math.min(n,g.start.y)}else if(e<0){s=Math.max(n,g.start.y)}else{if(n>0){s=Math.max(n,g.start.y)}else{s=Math.min(n,g.start.y)}}}if(o<0){o-=l}let h={lineStart:{x:i,y:r},lineEnd:{x:e,y:a},start:{x:o,y:s},width:l,height:x.fontSize,text:t.text,color:t.color,textColor:t.textColor,textSize:t.textSize};g=avoidCollision(h,g);u.push(g)}for(let n=0;nr?r:o.activeWidth;var n=e.area[0];var l=e.height-e.area[2];i.beginPath();i.setFillStyle(hexToRgb(o.activeBgColor,o.activeBgOpacity));i.rect(t-o.activeWidth/2,n,o.activeWidth,l-n);i.closePath();i.fill();i.setFillStyle("#FFFFFF")}function drawBarToolTipSplitArea(t,e,a,i,r){var o=assign({},{activeBgColor:"#000000",activeBgOpacity:.08},e.extra.bar);var n=e.area[3];var l=e.width-e.area[1];i.beginPath();i.setFillStyle(hexToRgb(o.activeBgColor,o.activeBgOpacity));i.rect(n,t-r/2,l-n,r);i.closePath();i.fill();i.setFillStyle("#FFFFFF")}function drawToolTip(e,r,o,a,n,i,f){var l=assign({},{showBox:true,showArrow:true,showCategory:false,bgColor:"#000000",bgOpacity:.7,borderColor:"#000000",borderWidth:0,borderRadius:0,borderOpacity:.7,boxPadding:3,fontColor:"#FFFFFF",fontSize:13,lineHeight:20,legendShow:true,legendShape:"auto",splitLine:true},o.extra.tooltip);if(l.showCategory==true&&o.categories){e.unshift({text:o.categories[o.tooltip.index],color:null})}var s=l.fontSize*o.pix;var p=l.lineHeight*o.pix;var h=l.boxPadding*o.pix;var c=s;var u=5*o.pix;if(l.legendShow==false){c=0;u=0}var d=l.showArrow?8*o.pix:0;var g=false;if(o.type=="line"||o.type=="mount"||o.type=="area"||o.type=="candle"||o.type=="mix"){if(l.splitLine==true){drawToolTipSplitLine(o.tooltip.offset.x,o,a,n)}}r=assign({x:0,y:0},r);r.y-=8*o.pix;var y=e.map(function(t){return measureText(t.text,s,n)});var x=c+u+4*h+Math.max.apply(null,y);var v=2*h+e.length*p;if(l.showBox==false){return}if(r.x-Math.abs(o._scrollDistance_||0)+d+x>o.width){g=true}if(v+r.y>o.height){r.y=o.height-v}n.beginPath();n.setFillStyle(hexToRgb(l.bgColor,l.bgOpacity));n.setLineWidth(l.borderWidth*o.pix);n.setStrokeStyle(hexToRgb(l.borderColor,l.borderOpacity));var t=l.borderRadius;if(g){if(x+d>o.width){r.x=o.width+Math.abs(o._scrollDistance_||0)+d+(x-o.width)}if(x>r.x){r.x=o.width+Math.abs(o._scrollDistance_||0)+d+(x-o.width)}if(l.showArrow){n.moveTo(r.x,r.y+10*o.pix);n.lineTo(r.x-d,r.y+10*o.pix+5*o.pix)}n.arc(r.x-d-t,r.y+v-t,t,0,Math.PI/2,false);n.arc(r.x-d-Math.round(x)+t,r.y+v-t,t,Math.PI/2,Math.PI,false);n.arc(r.x-d-Math.round(x)+t,r.y+t,t,-Math.PI,-Math.PI/2,false);n.arc(r.x-d-t,r.y+t,t,-Math.PI/2,0,false);if(l.showArrow){n.lineTo(r.x-d,r.y+10*o.pix-5*o.pix);n.lineTo(r.x,r.y+10*o.pix)}}else{if(l.showArrow){n.moveTo(r.x,r.y+10*o.pix);n.lineTo(r.x+d,r.y+10*o.pix-5*o.pix)}n.arc(r.x+d+t,r.y+t,t,-Math.PI,-Math.PI/2,false);n.arc(r.x+d+Math.round(x)-t,r.y+t,t,-Math.PI/2,0,false);n.arc(r.x+d+Math.round(x)-t,r.y+v-t,t,0,Math.PI/2,false);n.arc(r.x+d+t,r.y+v-t,t,Math.PI/2,Math.PI,false);if(l.showArrow){n.lineTo(r.x+d,r.y+10*o.pix+5*o.pix);n.lineTo(r.x,r.y+10*o.pix)}}n.closePath();n.fill();if(l.borderWidth>0){n.stroke()}if(l.legendShow){e.forEach(function(t,e){if(t.color!==null){n.beginPath();n.setFillStyle(t.color);var a=r.x+d+2*h;var i=r.y+(p-s)/2+p*e+h+1;if(g){a=r.x-x-d+2*h}switch(t.legendShape){case"line":n.moveTo(a,i+.5*c-2*o.pix);n.fillRect(a,i+.5*c-2*o.pix,c,4*o.pix);break;case"triangle":n.moveTo(a+7.5*o.pix,i+.5*c-5*o.pix);n.lineTo(a+2.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+12.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+7.5*o.pix,i+.5*c-5*o.pix);break;case"diamond":n.moveTo(a+7.5*o.pix,i+.5*c-5*o.pix);n.lineTo(a+2.5*o.pix,i+.5*c);n.lineTo(a+7.5*o.pix,i+.5*c+5*o.pix);n.lineTo(a+12.5*o.pix,i+.5*c);n.lineTo(a+7.5*o.pix,i+.5*c-5*o.pix);break;case"circle":n.moveTo(a+7.5*o.pix,i+.5*c);n.arc(a+7.5*o.pix,i+.5*c,5*o.pix,0,2*Math.PI);break;case"rect":n.moveTo(a,i+.5*c-5*o.pix);n.fillRect(a,i+.5*c-5*o.pix,15*o.pix,10*o.pix);break;case"square":n.moveTo(a+2*o.pix,i+.5*c-5*o.pix);n.fillRect(a+2*o.pix,i+.5*c-5*o.pix,10*o.pix,10*o.pix);break;default:n.moveTo(a,i+.5*c-5*o.pix);n.fillRect(a,i+.5*c-5*o.pix,15*o.pix,10*o.pix)}n.closePath();n.fill()}})}e.forEach(function(t,e){var a=r.x+d+2*h+c+u;if(g){a=r.x-x-d+2*h+c+u}var i=r.y+p*e+(p-s)/2-1+h+s;n.beginPath();n.setFontSize(s);n.setTextBaseline("normal");n.setFillStyle(l.fontColor);n.fillText(t.text,a,i);n.closePath();n.stroke()})}function drawColumnDataPoints(T,b,S,w){let A=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let t=b.chartData.xAxisData,P=t.xAxisPoints,C=t.eachSpacing;let D=assign({},{type:"group",width:C/2,meterBorder:4,meterFillColor:"#FFFFFF",barBorderCircle:false,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0,labelPosition:"outside"},b.extra.column);let M=[];w.save();let L=-2;let F=P.length+2;if(b._scrollDistance_&&b._scrollDistance_!==0&&b.enableScroll===true){w.translate(b._scrollDistance_,0);L=Math.floor(-b._scrollDistance_/C)-2;F=L+b.xAxis.itemCount+4}if(b.tooltip&&b.tooltip.textList&&b.tooltip.textList.length&&A===1){drawToolTipSplitArea(b.tooltip.offset.x,b,S,w,C)}D.customColor=fillCustomColor(D.linearType,D.customColor,T,S);T.forEach(function(a,i){let e,t,o;e=[].concat(b.chartData.yAxisData.ranges[a.index]);t=e.pop();o=e.shift();let x=b.height-b.area[0]-b.area[2];let f=x*(0-t)/(o-t);let n=b.height-Math.round(f)-b.area[2];a.zeroPoints=n;var p=a.data;switch(D.type){case"group":var r=getColumnDataPoints(p,t,o,P,C,b,S,n,A);var u=getStackDataPoints(p,t,o,P,C,b,S,i,T,A);M.push(u);r=fixColumeData(r,C,T.length,i,S,b);for(let t=0;tL&&tn?n:o.y;const d=o.width;const s=Math.abs(n-o.y);if(D.barBorderCircle){D.barBorderRadius=[d/2,d/2,0,0]}if(o.y>n){D.barBorderRadius=[0,0,d/2,d/2]}let[t,e,a,i]=D.barBorderRadius;let r=Math.min(d/2,s/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;w.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);w.arc(h+d-e,c+e,e,-Math.PI/2,0);w.arc(h+d-a,c+s-a,a,0,Math.PI/2);w.arc(h+i,c+s-i,i,Math.PI/2,Math.PI)}else{w.moveTo(l,o.y);w.lineTo(l+o.width,o.y);w.lineTo(l+o.width,n);w.lineTo(l,n);w.lineTo(l,o.y);w.setLineWidth(1);w.setStrokeStyle(y)}w.setFillStyle(g);w.closePath();w.fill()}};break;case"stack":var r=getStackDataPoints(p,t,o,P,C,b,S,i,T,A);M.push(r);r=fixColumeStackData(r,C,T.length,i,S,b,T);for(let e=0;eL&&e0){s-=m}w.setFillStyle(g);w.moveTo(l,t.y);w.fillRect(l,t.y,t.width,s);w.closePath();w.fill()}};break;case"meter":var r=getDataPoints(p,t,o,P,C,b,S,A);M.push(r);r=fixColumeMeterData(r,C,T.length,i,S,b,D.meterBorder);for(let t=0;tL&&t0){w.setStrokeStyle(a.color);w.setLineWidth(D.meterBorder*b.pix)}if(i==0){w.setFillStyle(D.meterFillColor)}else{w.setFillStyle(o.color||a.color)}var l=o.x-o.width/2;var s=b.height-o.y-b.area[2];if(D.barBorderRadius&&D.barBorderRadius.length===4||D.barBorderCircle===true){const h=l;const c=o.y;const d=o.width;const s=n-o.y;if(D.barBorderCircle){D.barBorderRadius=[d/2,d/2,0,0]}let[t,e,a,i]=D.barBorderRadius;let r=Math.min(d/2,s/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;w.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);w.arc(h+d-e,c+e,e,-Math.PI/2,0);w.arc(h+d-a,c+s-a,a,0,Math.PI/2);w.arc(h+i,c+s-i,i,Math.PI/2,Math.PI);w.fill()}else{w.moveTo(l,o.y);w.lineTo(l+o.width,o.y);w.lineTo(l+o.width,n);w.lineTo(l,n);w.lineTo(l,o.y);w.fill()}if(i==0&&D.meterBorder>0){w.closePath();w.stroke()}}}break}});if(b.dataLabel!==false&&A===1){T.forEach(function(t,e){let a,i,r;a=[].concat(b.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;switch(D.type){case"group":var n=getColumnDataPoints(o,i,r,P,C,b,S,A);n=fixColumeData(n,C,T.length,e,S,b);drawColumePointText(n,t,S,w,b);break;case"stack":var n=getStackDataPoints(o,i,r,P,C,b,S,e,T,A);drawColumePointText(n,t,S,w,b);break;case"meter":var n=getDataPoints(o,i,r,P,C,b,S,A);drawColumePointText(n,t,S,w,b);break}})}w.restore();return{xAxisPoints:P,calPoints:M,eachSpacing:C}}function drawMountDataPoints(i,r,o,n){let f=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let t=r.chartData.xAxisData,p=t.xAxisPoints,l=t.eachSpacing;let s=assign({},{type:"mount",widthRatio:1,borderWidth:1,barBorderCircle:false,barBorderRadius:[],linearType:"none",linearOpacity:1,customColor:[],colorStop:0},r.extra.mount);s.widthRatio=s.widthRatio<=0?0:s.widthRatio;s.widthRatio=s.widthRatio>=2?2:s.widthRatio;let e=[];n.save();let u=-2;let g=p.length+2;if(r._scrollDistance_&&r._scrollDistance_!==0&&r.enableScroll===true){n.translate(r._scrollDistance_,0);u=Math.floor(-r._scrollDistance_/l)-2;g=u+r.xAxis.itemCount+4}s.customColor=fillCustomColor(s.linearType,s.customColor,i,o);let y,v,m;y=[].concat(r.chartData.yAxisData.ranges[0]);v=y.pop();m=y.shift();let T=r.height-r.area[0]-r.area[2];let b=T*(0-v)/(m-v);let h=r.height-Math.round(b)-r.area[2];var c=getMountDataPoints(i,v,m,p,l,r,s,h,f);switch(s.type){case"bar":for(let t=0;tu&&th?h:o.y;const C=o.width;const S=Math.abs(h-o.y);if(s.barBorderCircle){s.barBorderRadius=[C/2,C/2,0,0]}if(o.y>h){s.barBorderRadius=[0,0,C/2,C/2]}let[t,e,a,i]=s.barBorderRadius;let r=Math.min(C/2,S/2);t=t>r?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;n.arc(A+t,P+t,t,-Math.PI,-Math.PI/2);n.arc(A+C-e,P+e,e,-Math.PI/2,0);n.arc(A+C-a,P+S-a,a,0,Math.PI/2);n.arc(A+i,P+S-i,i,Math.PI/2,Math.PI)}else{n.moveTo(d,o.y);n.lineTo(d+o.width,o.y);n.lineTo(d+o.width,h);n.lineTo(d,h);n.lineTo(d,o.y)}n.setStrokeStyle(w);n.setFillStyle(a);if(s.borderWidth>0){n.setLineWidth(s.borderWidth*r.pix);n.closePath();n.stroke()}n.fill()}};break;case"triangle":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break;case"mount":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break;case"sharp":for(let e=0;eu&&e0){n.setLineWidth(s.borderWidth*r.pix);n.stroke()}n.fill()}};break}if(r.dataLabel!==false&&f===1){let t,e,a;t=[].concat(r.chartData.yAxisData.ranges[0]);e=t.pop();a=t.shift();var c=getMountDataPoints(i,e,a,p,l,r,s,h,f);drawMountPointText(c,i,o,n,r,h)}n.restore();return{xAxisPoints:p,calPoints:c,eachSpacing:l}}function drawBarDataPoints(y,v,m,T){let b=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let S=[];let w=(v.height-v.area[0]-v.area[2])/v.categories.length;for(let t=0;tC&&tr?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;T.arc(g+i,c+i,i,-Math.PI,-Math.PI/2);T.arc(o.x-t,c+t,t,-Math.PI/2,0);T.arc(o.x-e,c+h-e,e,0,Math.PI/2);T.arc(g+a,c+h-a,a,Math.PI/2,Math.PI)}else{T.moveTo(n,r);T.lineTo(o.x,r);T.lineTo(o.x,r+o.width);T.lineTo(n,r+o.width);T.lineTo(n,r);T.setLineWidth(1);T.setStrokeStyle(u)}T.setFillStyle(l);T.closePath();T.fill()}};break;case"stack":var i=getBarStackDataPoints(x,e,d,S,w,v,m,t,y,b);P.push(i);i=fixBarStackData(i,w,y.length,t,m,v,y);for(let e=0;eC&&e5&&arguments[5]!==undefined?arguments[5]:1;var s=assign({},{color:{},average:{}},h.extra.candle);s.color=assign({},{upLine:"#f04864",upFill:"#f04864",downLine:"#2fc25b",downFill:"#2fc25b"},s.color);s.average=assign({},{show:false,name:[],day:[],color:c.color},s.average);h.extra.candle=s;let a=h.chartData.xAxisData,x=a.xAxisPoints,f=a.eachSpacing;let y=[];d.save();let p=-2;let v=x.length+2;let u=0;let m=h.width+f;if(h._scrollDistance_&&h._scrollDistance_!==0&&h.enableScroll===true){d.translate(h._scrollDistance_,0);p=Math.floor(-h._scrollDistance_/f)-2;v=p+h.xAxis.itemCount+4;u=-h._scrollDistance_-f*2+h.area[3];m=u+(h.xAxis.itemCount+4)*f}if(s.average.show||t){t.forEach(function(e,t){let a,i,r;a=[].concat(h.chartData.yAxisData.ranges[e.index]);i=a.pop();r=a.shift();var o=e.data;var n=getDataPoints(o,i,r,x,f,h,c,g);var l=splitPoints(n,e);for(let t=0;tu){d.moveTo(t.x,t.y);a=1}if(e>0&&t.x>u&&t.xp&&e0){d.setStrokeStyle(s.color.upLine);d.setFillStyle(s.color.upFill);d.setLineWidth(1*h.pix);d.moveTo(t[3].x,t[3].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[1].x-f/4,t[1].y);d.lineTo(t[0].x-f/4,t[0].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[2].x,t[2].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[0].x+f/4,t[0].y);d.lineTo(t[1].x+f/4,t[1].y);d.lineTo(t[1].x,t[1].y);d.moveTo(t[3].x,t[3].y)}else{d.setStrokeStyle(s.color.downLine);d.setFillStyle(s.color.downFill);d.setLineWidth(1*h.pix);d.moveTo(t[3].x,t[3].y);d.lineTo(t[0].x,t[0].y);d.lineTo(t[0].x-f/4,t[0].y);d.lineTo(t[1].x-f/4,t[1].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[2].x,t[2].y);d.lineTo(t[1].x,t[1].y);d.lineTo(t[1].x+f/4,t[1].y);d.lineTo(t[0].x+f/4,t[0].y);d.lineTo(t[0].x,t[0].y);d.moveTo(t[3].x,t[3].y)}d.closePath();d.fill();d.stroke()}}});d.restore();return{xAxisPoints:x,calPoints:y,eachSpacing:f}}function drawAreaDataPoints(t,s,h,c){var d=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var x=assign({},{type:"straight",opacity:.2,addLine:false,width:2,gradient:false,activeType:"none"},s.extra.area);let e=s.chartData.xAxisData,f=e.xAxisPoints,p=e.eachSpacing;let y=s.height-s.area[2];let v=[];c.save();let u=0;let g=s.width+p;if(s._scrollDistance_&&s._scrollDistance_!==0&&s.enableScroll===true){c.translate(s._scrollDistance_,0);u=-s._scrollDistance_-p*2+s.area[3];g=u+(s.xAxis.itemCount+4)*p}t.forEach(function(e,t){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[e.index]);i=a.pop();r=a.shift();let o=e.data;let n=getDataPoints(o,i,r,f,p,s,h,d);v.push(n);let l=splitPoints(n,e);for(let t=0;t1){let t=r[0];let e=r[r.length-1];c.moveTo(t.x,t.y);let i=0;if(x.type==="curve"){for(let a=0;au){c.moveTo(e.x,e.y);i=1}if(a>0&&e.x>u&&e.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(e.x,e.y);i=1}if(a>0&&e.x>u&&e.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.xu){c.moveTo(t.x,t.y);i=1}if(e>0&&t.x>u&&t.x4&&arguments[4]!==undefined?arguments[4]:1;var i=assign({},{type:"circle"},s.extra.scatter);let e=s.chartData.xAxisData,x=e.xAxisPoints,f=e.eachSpacing;var r=[];c.save();let a=0;let o=s.width+f;if(s._scrollDistance_&&s._scrollDistance_!==0&&s.enableScroll===true){c.translate(s._scrollDistance_,0);a=-s._scrollDistance_-f*2+s.area[3];o=a+(s.xAxis.itemCount+4)*f}t.forEach(function(t,e){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;var n=getDataPoints(o,i,r,x,f,s,h,d);c.beginPath();c.setStrokeStyle(t.color);c.setFillStyle(t.color);c.setLineWidth(1*s.pix);var l=t.pointShape;if(l==="diamond"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x,t.y-4.5);c.lineTo(t.x-4.5,t.y);c.lineTo(t.x,t.y+4.5);c.lineTo(t.x+4.5,t.y);c.lineTo(t.x,t.y-4.5)}})}else if(l==="circle"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x+2.5*s.pix,t.y);c.arc(t.x,t.y,3*s.pix,0,2*Math.PI,false)}})}else if(l==="square"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x-3.5,t.y-3.5);c.rect(t.x-3.5,t.y-3.5,7,7)}})}else if(l==="triangle"){n.forEach(function(t,e){if(t!==null){c.moveTo(t.x,t.y-4.5);c.lineTo(t.x-4.5,t.y+4.5);c.lineTo(t.x+4.5,t.y+4.5);c.lineTo(t.x,t.y-4.5)}})}else if(l==="triangle"){return}c.closePath();c.fill();c.stroke()});if(s.dataLabel!==false&&d===1){t.forEach(function(t,e){let a,i,r;a=[].concat(s.chartData.yAxisData.ranges[t.index]);i=a.pop();r=a.shift();var o=t.data;var n=getDataPoints(o,i,r,x,f,s,h,d);drawPointText(n,t,h,c,s)})}c.restore();return{xAxisPoints:x,calPoints:r,eachSpacing:f}}function drawBubbleDataPoints(a,l,s,h){var c=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var d=assign({},{opacity:1,border:2},l.extra.bubble);let t=l.chartData.xAxisData,x=t.xAxisPoints,f=t.eachSpacing;var i=[];h.save();let e=0;let r=l.width+f;if(l._scrollDistance_&&l._scrollDistance_!==0&&l.enableScroll===true){h.translate(l._scrollDistance_,0);e=-l._scrollDistance_-f*2+l.area[3];r=e+(l.xAxis.itemCount+4)*f}a.forEach(function(i,t){let e,a,r;e=[].concat(l.chartData.yAxisData.ranges[i.index]);a=e.pop();r=e.shift();var o=i.data;var n=getDataPoints(o,a,r,x,f,l,s,c);h.beginPath();h.setStrokeStyle(i.color);h.setLineWidth(d.border*l.pix);h.setFillStyle(hexToRgb(i.color,d.opacity));n.forEach(function(t,e){h.moveTo(t.x+t.r,t.y);h.arc(t.x,t.y,t.r*l.pix,0,2*Math.PI,false)});h.closePath();h.fill();h.stroke();if(l.dataLabel!==false&&c===1){n.forEach(function(t,e){h.beginPath();var a=i.textSize*l.pix||s.fontSize;h.setFontSize(a);h.setFillStyle(i.textColor||"#FFFFFF");h.setTextAlign("center");h.fillText(String(t.t),t.x,t.y+a/2);h.closePath();h.stroke();h.setTextAlign("left")})}});h.restore();return{xAxisPoints:x,calPoints:i,eachSpacing:f}}function drawLineDataPoints(t,d,x,f){var p=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var u=assign({},{type:"straight",width:2,activeType:"none",linearType:"none",onShadow:false,animation:"vertical"},d.extra.line);u.width*=d.pix;let e=d.chartData.xAxisData,g=e.xAxisPoints,y=e.eachSpacing;var T=[];f.save();let v=0;let m=d.width+y;if(d._scrollDistance_&&d._scrollDistance_!==0&&d.enableScroll===true){f.translate(d._scrollDistance_,0);v=-d._scrollDistance_-y*2+d.area[3];m=v+(d.xAxis.itemCount+4)*y}t.forEach(function(e,c){f.beginPath();f.setStrokeStyle(e.color);f.moveTo(-1e4,-1e4);f.lineTo(-10001,-10001);f.stroke();let t,a,i;t=[].concat(d.chartData.yAxisData.ranges[e.index]);a=t.pop();i=t.shift();var r=e.data;var o=getLineDataPoints(r,a,i,g,y,d,x,u,p);T.push(o);var n=splitPoints(o,e);if(e.lineType=="dash"){let t=e.dashLength?e.dashLength:8;t*=d.pix;f.setLineDash([t,t])}f.beginPath();var l=e.color;if(u.linearType!=="none"&&e.linearColor&&e.linearColor.length>0){var s=f.createLinearGradient(d.chartData.xAxisData.startX,d.height/2,d.chartData.xAxisData.endX,d.height/2);for(var h=0;h0){f.setShadow(e.setShadow[0],e.setShadow[1],e.setShadow[2],e.setShadow[3])}else{f.setShadow(0,0,0,"rgba(0,0,0,0)")}f.setLineWidth(u.width);n.forEach(function(i,t){if(i.length===1){f.moveTo(i[0].x,i[0].y)}else{f.moveTo(i[0].x,i[0].y);let a=0;if(u.type==="curve"){for(let e=0;ev){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.xv){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.xv){f.moveTo(t.x,t.y);a=1}if(e>0&&t.x>v&&t.x4&&arguments[4]!==undefined?arguments[4]:1;let e=v.chartData.xAxisData,b=e.xAxisPoints,S=e.eachSpacing;let w=assign({},{width:S/2,barBorderCircle:false,barBorderRadius:[],seriesGap:2,linearType:"none",linearOpacity:1,customColor:[],colorStop:0},v.extra.mix.column);let A=assign({},{opacity:.2,gradient:false},v.extra.mix.area);let M=assign({},{width:2},v.extra.mix.line);let L=v.height-v.area[2];let F=[];var _=0;var k=0;t.forEach(function(t,e){if(t.type=="column"){k+=1}});T.save();let R=-2;let I=b.length+2;let P=0;let C=v.width+S;if(v._scrollDistance_&&v._scrollDistance_!==0&&v.enableScroll===true){T.translate(v._scrollDistance_,0);R=Math.floor(-v._scrollDistance_/S)-2;I=R+v.xAxis.itemCount+4;P=-v._scrollDistance_-S*2+v.area[3];C=P+(v.xAxis.itemCount+4)*S}w.customColor=fillCustomColor(w.linearType,w.customColor,t,m);t.forEach(function(n,t){let o,x,f;o=[].concat(v.chartData.yAxisData.ranges[n.index]);x=o.pop();f=o.shift();var p=n.data;var a=getDataPoints(p,x,f,b,S,v,m,D);F.push(a);if(n.type=="column"){a=fixColumeData(a,S,k,_,m,v);for(let t=0;tR&&tr?r:t;e=e>r?r:e;a=a>r?r:a;i=i>r?r:i;t=t<0?0:t;e=e<0?0:e;a=a<0?0:a;i=i<0?0:i;T.arc(h+t,c+t,t,-Math.PI,-Math.PI/2);T.arc(h+d-e,c+e,e,-Math.PI/2,0);T.arc(h+d-a,c+s-a,a,0,Math.PI/2);T.arc(h+i,c+s-i,i,Math.PI/2,Math.PI)}else{T.moveTo(l,o.y);T.lineTo(l+o.width,o.y);T.lineTo(l+o.width,v.height-v.area[2]);T.lineTo(l,v.height-v.area[2]);T.lineTo(l,o.y);T.setLineWidth(1);T.setStrokeStyle(u)}T.setFillStyle(e);T.closePath();T.fill()}}_+=1}if(n.type=="area"){let e=splitPoints(a,n);for(let t=0;t1){var r=i[0];let t=i[i.length-1];T.moveTo(r.x,r.y);let a=0;if(n.style==="curve"){for(let e=0;eP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.xP){T.moveTo(t.x,t.y);a=1}if(e>0&&t.x>P&&t.x1){if(h.extra.mount.widthRatio>2)h.extra.mount.widthRatio=2;l+=(h.extra.mount.widthRatio-1)*f}var s=n*n/l;var y=0;if(h._scrollDistance_){y=-h._scrollDistance_*n/l}d.beginPath();d.setLineCap("round");d.setLineWidth(6*h.pix);d.setStrokeStyle(h.xAxis.scrollBackgroundColor||"#EFEBEF");d.moveTo(t,o);d.lineTo(a,o);d.stroke();d.closePath();d.beginPath();d.setLineCap("round");d.setLineWidth(6*h.pix);d.setStrokeStyle(h.xAxis.scrollColor||"#A6A6A6");d.moveTo(t+y,o);d.lineTo(t+y+s,o);d.stroke();d.closePath();d.setLineCap("butt")}d.save();if(h._scrollDistance_&&h._scrollDistance_!==0){d.translate(h._scrollDistance_,0)}if(h.xAxis.calibration===true){d.setStrokeStyle(h.xAxis.gridColor||"#cccccc");d.setLineCap("butt");d.setLineWidth(1*h.pix);x.forEach(function(t,e){if(e>0){d.beginPath();d.moveTo(t-f/2,u);d.lineTo(t-f/2,u+3*h.pix);d.closePath();d.stroke()}})}if(h.xAxis.disableGrid!==true){d.setStrokeStyle(h.xAxis.gridColor||"#cccccc");d.setLineCap("butt");d.setLineWidth(1*h.pix);if(h.xAxis.gridType=="dash"){d.setLineDash([h.xAxis.dashLength*h.pix,h.xAxis.dashLength*h.pix])}h.xAxis.gridEval=h.xAxis.gridEval||1;x.forEach(function(t,e){if(e%h.xAxis.gridEval==0){d.beginPath();d.moveTo(t,u);d.lineTo(t,i);d.stroke()}});d.setLineDash([])}if(h.xAxis.disabled!==true){let t=r.length;if(h.xAxis.labelCount){if(h.xAxis.itemCount){t=Math.ceil(r.length/h.xAxis.itemCount*h.xAxis.labelCount)}else{t=h.xAxis.labelCount}t-=1}let e=Math.ceil(r.length/t);let a=[];let i=r.length;for(let t=0;t=h.area[3]-1&&n-Math.abs(o)<=h.width-h.area[1]+1){d.beginPath();d.setFontSize(g);d.setFillStyle(h.xAxis.fontColor||h.fontColor);d.fillText(String(a),x[e]+i,u+h.xAxis.marginTop*h.pix+(h.xAxis.lineHeight-h.xAxis.fontSize)*h.pix/2+h.xAxis.fontSize*h.pix);d.closePath();d.stroke()}})}else{a.forEach(function(t,e){var a=h.xAxis.formatter?h.xAxis.formatter(t):t;var i=h._scrollDistance_||0;var r=p=="center"?x[e]+f/2:x[e];if(r-Math.abs(i)>=h.area[3]-1&&r-Math.abs(i)<=h.width-h.area[1]+1){d.save();d.beginPath();d.setFontSize(g);d.setFillStyle(h.xAxis.fontColor||h.fontColor);var o=measureText(String(a),g,d);var n=x[e];if(p=="center"){n=x[e]+f/2}var l=0;if(h.xAxis.scrollShow){l=6*h.pix}var s=u+h.xAxis.marginTop*h.pix+g-g*Math.abs(Math.sin(c._xAxisTextAngle_));if(h.xAxis.rotateAngle<0){n-=g/2;o=0}else{n+=g/2;o=-o}d.translate(n,s);d.rotate(-1*c._xAxisTextAngle_);d.fillText(String(a),o,0);d.closePath();d.stroke();d.restore()}})}}d.restore();if(h.xAxis.title){d.beginPath();d.setFontSize(h.xAxis.titleFontSize*h.pix);d.setFillStyle(h.xAxis.titleFontColor);d.fillText(String(h.xAxis.title),h.width-h.area[1]+h.xAxis.titleOffsetX*h.pix,h.height-h.area[2]+h.xAxis.marginTop*h.pix+(h.xAxis.lineHeight-h.xAxis.titleFontSize)*h.pix/2+(h.xAxis.titleFontSize+h.xAxis.titleOffsetY)*h.pix);d.closePath();d.stroke()}if(h.xAxis.axisLine){d.beginPath();d.setStrokeStyle(h.xAxis.axisLineColor);d.setLineWidth(1*h.pix);d.moveTo(t,h.height-h.area[2]);d.lineTo(a,h.height-h.area[2]);d.stroke()}}function drawYAxisGrid(c,e,d,a){if(e.yAxis.disableGrid===true){return}let t=e.height-e.area[0]-e.area[2];let i=t/e.yAxis.splitNumber;let r=e.area[3];let o=e.chartData.xAxisData.xAxisPoints,n=e.chartData.xAxisData.eachSpacing;let l=n*(o.length-1);if(e.type=="mount"&&e.extra&&e.extra.mount&&e.extra.mount.widthRatio&&e.extra.mount.widthRatio>1){if(e.extra.mount.widthRatio>2)e.extra.mount.widthRatio=2;l+=(e.extra.mount.widthRatio-1)*n}let x=r+l;let s=[];let h=1;if(e.xAxis.axisLine===false){h=0}for(let t=h;t4&&arguments[4]!==undefined?arguments[4]:1;var n=assign({},{activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,ringWidth:30,customRadius:0,border:false,borderWidth:2,borderColor:"#FFFFFF",centerColor:"#FFFFFF",linearType:"none",customColor:[]},r.type=="pie"?r.extra.pie:r.extra.ring);var l={x:r.area[3]+(r.width-r.area[1]-r.area[3])/2,y:r.area[0]+(r.height-r.area[0]-r.area[2])/2};if(e.pieChartLinePadding==0){e.pieChartLinePadding=n.activeRadius*r.pix}var i=Math.min((r.width-r.area[1]-r.area[3])/2-e.pieChartLinePadding-e.pieChartTextPadding-e._pieTextMaxLength_,(r.height-r.area[0]-r.area[2])/2-e.pieChartLinePadding-e.pieChartTextPadding);i=i<10?10:i;if(n.customRadius>0){i=n.customRadius*r.pix}t=getPieDataPoints(t,i,a);var h=n.activeRadius*r.pix;n.customColor=fillCustomColor(n.linearType,n.customColor,t,e);t=t.map(function(t){t._start_+=n.offsetAngle*Math.PI/180;return t});t.forEach(function(t,e){if(r.tooltip){if(r.tooltip.index==e){o.beginPath();o.setFillStyle(hexToRgb(t.color,n.activeOpacity||.5));o.moveTo(l.x,l.y);o.arc(l.x,l.y,t._radius_+h,t._start_,t._start_+2*t._proportion_*Math.PI);o.closePath();o.fill()}}o.beginPath();o.setLineWidth(n.borderWidth*r.pix);o.lineJoin="round";o.setStrokeStyle(n.borderColor);var a=t.color;if(n.linearType=="custom"){var i;if(o.createCircularGradient){i=o.createCircularGradient(l.x,l.y,t._radius_)}else{i=o.createRadialGradient(l.x,l.y,0,l.x,l.y,t._radius_)}i.addColorStop(0,hexToRgb(n.customColor[t.linearIndex],1));i.addColorStop(1,hexToRgb(t.color,1));a=i}o.setFillStyle(a);o.moveTo(l.x,l.y);o.arc(l.x,l.y,t._radius_,t._start_,t._start_+2*t._proportion_*Math.PI);o.closePath();o.fill();if(n.border==true){o.stroke()}});if(r.type==="ring"){var s=i*.6;if(typeof n.ringWidth==="number"&&n.ringWidth>0){s=Math.max(0,i-n.ringWidth*r.pix)}o.beginPath();o.setFillStyle(n.centerColor);o.moveTo(l.x,l.y);o.arc(l.x,l.y,s,0,2*Math.PI);o.closePath();o.fill()}if(r.dataLabel!==false&&a===1){drawPieText(t,r,e,o,i,l)}if(a===1&&r.type==="ring"){drawRingTitle(r,e,o,l)}return{center:l,radius:i,series:t}}function drawRoseDataPoints(t,r,e,o){var a=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;var n=assign({},{type:"area",activeOpacity:.5,activeRadius:10,offsetAngle:0,labelWidth:15,border:false,borderWidth:2,borderColor:"#FFFFFF",linearType:"none",customColor:[]},r.extra.rose);if(e.pieChartLinePadding==0){e.pieChartLinePadding=n.activeRadius*r.pix}var l={x:r.area[3]+(r.width-r.area[1]-r.area[3])/2,y:r.area[0]+(r.height-r.area[0]-r.area[2])/2};var i=Math.min((r.width-r.area[1]-r.area[3])/2-e.pieChartLinePadding-e.pieChartTextPadding-e._pieTextMaxLength_,(r.height-r.area[0]-r.area[2])/2-e.pieChartLinePadding-e.pieChartTextPadding);i=i<10?10:i;var s=n.minRadius||i*.5;if(i4&&arguments[4]!==undefined?arguments[4]:1;var o=assign({},{startAngle:.75,endAngle:.25,type:"default",direction:"cw",lineCap:"round",width:12,gap:2,linearType:"none",customColor:[]},i.extra.arcbar);a=getArcbarDataPoints(a,o,e);var n;if(o.centerX||o.centerY){n={x:o.centerX?o.centerX:i.width/2,y:o.centerY?o.centerY:i.height/2}}else{n={x:i.width/2,y:i.height/2}}var l;if(o.radius){l=o.radius}else{l=Math.min(n.x,n.y);l-=5*i.pix;l-=o.width/2}l=l<10?10:l;o.customColor=fillCustomColor(o.linearType,o.customColor,a,t);for(let e=0;e5&&arguments[5]!==undefined?arguments[5]:1;var f=assign({},{type:"default",startAngle:.75,endAngle:.25,width:15,labelOffset:13,splitLine:{fixRadius:0,splitNumber:10,width:15,color:"#FFFFFF",childNumber:5,childWidth:5},pointer:{width:15,color:"auto"}},c.extra.gauge);if(f.oldAngle==undefined){f.oldAngle=f.startAngle}if(f.oldData==undefined){f.oldData=0}n=getGaugeAxisPoints(n,f.startAngle,f.endAngle);var p={x:c.width/2,y:c.height/2};var u=Math.min(p.x,p.y);u-=5*c.pix;u-=f.width/2;u=u<10?10:u;var g=u-f.width;var y=0;if(f.type=="progress"){var v=u-f.width*3;d.beginPath();let t=d.createLinearGradient(p.x,p.y-v,p.x,p.y+v);t.addColorStop("0",hexToRgb(h[0].color,.3));t.addColorStop("1.0",hexToRgb("#FFFFFF",.1));d.setFillStyle(t);d.arc(p.x,p.y,v,0,2*Math.PI,false);d.fill();d.setLineWidth(f.width);d.setStrokeStyle(hexToRgb(h[0].color,.3));d.setLineCap("round");d.beginPath();d.arc(p.x,p.y,g,f.startAngle*Math.PI,f.endAngle*Math.PI,false);d.stroke();if(f.endAnglet/o){d.setStrokeStyle(hexToRgb(h[0].color,1))}else{d.setStrokeStyle(hexToRgb(h[0].color,.3))}d.setLineWidth(3*c.pix);d.moveTo(i,0);d.lineTo(r,0);d.stroke();d.rotate(a*Math.PI)}d.restore();h=getGaugeArcbarDataPoints(h,f,x);d.setLineWidth(f.width);d.setStrokeStyle(h[0].color);d.setLineCap("round");d.beginPath();d.arc(p.x,p.y,g,f.startAngle*Math.PI,h[0]._proportion_*Math.PI,false);d.stroke();let l=u-f.width*2.5;d.save();d.translate(p.x,p.y);d.rotate((h[0]._proportion_-1)*Math.PI);d.beginPath();d.setLineWidth(f.width/3);let s=d.createLinearGradient(0,-l*.6,0,l*.6);s.addColorStop("0",hexToRgb("#FFFFFF",0));s.addColorStop("0.5",hexToRgb(h[0].color,1));s.addColorStop("1.0",hexToRgb("#FFFFFF",0));d.setStrokeStyle(s);d.arc(0,0,l,.85*Math.PI,1.15*Math.PI,false);d.stroke();d.beginPath();d.setLineWidth(1);d.setStrokeStyle(h[0].color);d.setFillStyle(h[0].color);d.moveTo(-l-f.width/3/2,-4);d.lineTo(-l-f.width/3/2-4,0);d.lineTo(-l-f.width/3/2,4);d.lineTo(-l-f.width/3/2,-4);d.stroke();d.fill();d.restore()}else{d.setLineWidth(f.width);d.setLineCap("butt");for(let e=0;e4&&arguments[4]!==undefined?arguments[4]:1;var s=assign({},{gridColor:"#cccccc",gridType:"radar",gridEval:1,axisLabel:false,axisLabelTofix:0,labelShow:true,labelColor:"#666666",labelPointShow:false,labelPointRadius:3,labelPointColor:"#cccccc",opacity:.2,gridCount:3,border:false,borderWidth:2,linearType:"none",customColor:[]},n.extra.radar);var a=getRadarCoordinateSeries(n.categories.length);var h={x:n.area[3]+(n.width-n.area[1]-n.area[3])/2,y:n.area[0]+(n.height-n.area[0]-n.area[2])/2};var r=(n.width-n.area[1]-n.area[3])/2;var d=(n.height-n.area[0]-n.area[2])/2;var c=Math.min(r-(getMaxTextListLength(n.categories,i.fontSize,l)+i.radarLabelTextMargin),d-i.radarLabelTextMargin);c-=i.radarLabelTextMargin*n.pix;c=c<10?10:c;c=s.radius?s.radius:c;l.beginPath();l.setLineWidth(1*n.pix);l.setStrokeStyle(s.gridColor);a.forEach(function(t,e){var a=convertCoordinateOrigin(c*Math.cos(t),c*Math.sin(t),h);l.moveTo(h.x,h.y);if(e%s.gridEval==0){l.lineTo(a.x,a.y)}});l.stroke();l.closePath();var x=function t(i){var r={};l.beginPath();l.setLineWidth(1*n.pix);l.setStrokeStyle(s.gridColor);if(s.gridType=="radar"){a.forEach(function(t,e){var a=convertCoordinateOrigin(c/s.gridCount*i*Math.cos(t),c/s.gridCount*i*Math.sin(t),h);if(e===0){r=a;l.moveTo(a.x,a.y)}else{l.lineTo(a.x,a.y)}});l.lineTo(r.x,r.y)}else{var e=convertCoordinateOrigin(c/s.gridCount*i*Math.cos(1.5),c/s.gridCount*i*Math.sin(1.5),h);l.arc(h.x,h.y,h.y-e.y,0,2*Math.PI,false)}l.stroke();l.closePath()};for(var e=1;e<=s.gridCount;e++){x(e)}s.customColor=fillCustomColor(s.linearType,s.customColor,o,i);var f=getRadarDataPoints(a,h,c,o,n,t);f.forEach(function(t,e){l.beginPath();l.setLineWidth(s.borderWidth*n.pix);l.setStrokeStyle(t.color);var a=hexToRgb(t.color,s.opacity);if(s.linearType=="custom"){var i;if(l.createCircularGradient){i=l.createCircularGradient(h.x,h.y,c)}else{i=l.createRadialGradient(h.x,h.y,0,h.x,h.y,c)}i.addColorStop(0,hexToRgb(s.customColor[o[e].linearIndex],s.opacity));i.addColorStop(1,hexToRgb(t.color,s.opacity));a=i}l.setFillStyle(a);t.data.forEach(function(t,e){if(e===0){l.moveTo(t.position.x,t.position.y)}else{l.lineTo(t.position.x,t.position.y)}});l.closePath();l.fill();if(s.border===true){l.stroke()}l.closePath();if(n.dataPointShape!==false){var r=t.data.map(function(t){return t.position});drawPointShape(r,t.color,t.pointShape,l,n)}});if(s.axisLabel===true){const p=Math.max(s.max,Math.max.apply(null,dataCombine(o)));const u=c/s.gridCount;const g=n.fontSize*n.pix;l.setFontSize(g);l.setFillStyle(n.fontColor);l.setTextAlign("left");for(var e=0;eh.x?e.xMax:h.x;e.yMin=e.yMinh.y?e.yMax:h.y}}}return e}function coordinateToPoint(t,e,a,i,r,o){return{x:(e-a.xMin)*i+r,y:(a.yMax-t)*i+o}}function pointToCoordinate(t,e,a,i,r,o){return{x:(e-r)/i+a.xMin,y:a.yMax-(t-o)/i}}function isRayIntersectsSegment(t,e,a){if(e[1]==a[1]){return false}if(e[1]>t[1]&&a[1]>t[1]){return false}if(e[1]t[1]){return false}if(a[1]==t[1]&&e[1]>t[1]){return false}if(e[0]a[t].area[2]||e[1]>a[t].area[3]||e[2]i||e[3]>r){o=true;break}else{o=false}}else{o=true;break}}}return o}function getWordCloudPoint(c,t,d){let x=c.series;switch(t){case"normal":for(let l=0;l.7){return true}else{return false}};for(let h=0;h4&&arguments[4]!==undefined?arguments[4]:1;let a=assign({},{type:"normal",autoColors:true},r.extra.word);if(!r.chartData.wordCloudData){r.chartData.wordCloudData=getWordCloudPoint(r,a.type,o)}o.beginPath();o.setFillStyle(r.background);o.rect(0,0,r.width,r.height);o.fill();o.save();let l=r.chartData.wordCloudData;o.translate(r.width/2,r.height/2);for(let i=0;i0){if(r.tooltip){if(r.tooltip.index==i){o.strokeText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}else{o.fillText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}}else{o.fillText(t,(l[i].areav[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].areav[1]+5+e-r.height/2)*n)}}}else{if(l[i].area[0]>0){if(r.tooltip){if(r.tooltip.index==i){o.strokeText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}else{o.fillText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}}else{o.fillText(t,(l[i].area[0]+5-r.width/2)*n-a*(1-n)/2,(l[i].area[1]+5+e-r.height/2)*n)}}}o.stroke();o.restore()}o.restore()}function drawFunnelDataPoints(t,e,c,a){let d=arguments.length>4&&arguments[4]!==undefined?arguments[4]:1;let i=assign({},{type:"funnel",activeWidth:10,activeOpacity:.3,border:false,borderWidth:2,borderColor:"#FFFFFF",fillOpacity:1,minSize:0,labelAlign:"right",linearType:"none",customColor:[]},e.extra.funnel);let r=(e.height-e.area[0]-e.area[2])/t.length;let o={x:e.area[3]+(e.width-e.area[1]-e.area[3])/2,y:e.height-e.area[2]};let n=i.activeWidth*e.pix;let x=Math.min((e.width-e.area[1]-e.area[3])/2-n,(e.height-e.area[0]-e.area[2])/2-n);let l=getFunnelDataPoints(t,x,i,r,d);a.save();a.translate(o.x,o.y);i.customColor=fillCustomColor(i.linearType,i.customColor,t,c);if(i.type=="pyramid"){for(let t=0;t0){l.area[3]+=i[t].width+l.yAxis.padding*l.pix}else{l.area[3]+=i[t].width}a+=1}else if(i[t].position=="right"){if(e>0){l.area[1]+=i[t].width+l.yAxis.padding*l.pix}else{l.area[1]+=i[t].width}e+=1}}}else{n.yAxisWidth=i}l.chartData.yAxisData=f;if(l.categories&&l.categories.length&&l.type!=="radar"&&l.type!=="gauge"&&l.type!=="bar"){l.chartData.xAxisData=getXAxisPoints(l.categories,l,n);let t=calCategoriesData(l.categories,l,n,l.chartData.xAxisData.eachSpacing,s),e=t.xAxisHeight,a=t.angle;n.xAxisHeight=e;n._xAxisTextAngle_=a;l.area[2]+=e;l.chartData.categoriesData=t}else{if(l.type==="line"||l.type==="area"||l.type==="scatter"||l.type==="bubble"||l.type==="bar"){l.chartData.xAxisData=calXAxisData(c,l,n,s);d=l.chartData.xAxisData.rangesFormat;let t=calCategoriesData(d,l,n,l.chartData.xAxisData.eachSpacing,s),e=t.xAxisHeight,a=t.angle;n.xAxisHeight=e;n._xAxisTextAngle_=a;l.area[2]+=e;l.chartData.categoriesData=t}else{l.chartData.xAxisData={xAxisPoints:[]}}}if(l.enableScroll&&l.xAxis.scrollAlign=="right"&&l._scrollDistance_===undefined){let t=0,e=l.chartData.xAxisData.xAxisPoints,a=l.chartData.xAxisData.startX,i=l.chartData.xAxisData.endX,r=l.chartData.xAxisData.eachSpacing;let o=r*(e.length-1);let n=i-a;t=n-o;h.scrollOption.currentOffset=t;h.scrollOption.startTouchX=t;h.scrollOption.distance=0;h.scrollOption.lastMoveTime=0;l._scrollDistance_=t}if(t==="pie"||t==="ring"||t==="rose"){n._pieTextMaxLength_=l.dataLabel===false?0:getPieTextMaxLength(x,n,s,l)}switch(t){case"word":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function(t){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawWordCloudDataPoints(c,l,n,s,t);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"map":s.clearRect(0,0,l.width,l.height);drawMapDataPoints(c,l,n,s);setTimeout(()=>{this.uevent.trigger("renderComplete")},50);break;case"funnel":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function(t){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.funnelData=drawFunnelDataPoints(c,l,n,s,t);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,t);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"line":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawLineDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"scatter":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawScatterDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"bubble":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawBubbleDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"mix":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawMixDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"column":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawColumnDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"mount":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawMountDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"bar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawXAxis(d,l,n,s);var a=drawBarDataPoints(c,l,n,s,e),i=a.yAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.yAxisPoints=i;l.chartData.xAxisPoints=l.chartData.xAxisData.xAxisPoints;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"area":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawAreaDataPoints(c,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"ring":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawPieDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"pie":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawPieDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"rose":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.pieData=drawRoseDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"radar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.radarData=drawRadarDataPoints(c,l,n,s,e);drawLegend(l.series,l,n,s,l.chartData);drawToolTipBridge(l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"arcbar":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.arcbarData=drawArcbarDataPoints(c,l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"gauge":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}l.chartData.gaugeData=drawGaugeDataPoints(d,c,l,n,s,e);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break;case"candle":this.animationInstance=new Animation({timing:l.timing,duration:e,onProcess:function t(e){s.clearRect(0,0,l.width,l.height);if(l.rotate){contextRotate(s,l)}drawYAxisGrid(d,l,n,s);drawXAxis(d,l,n,s);var a=drawCandleDataPoints(c,x,l,n,s,e),i=a.xAxisPoints,r=a.calPoints,o=a.eachSpacing;l.chartData.xAxisPoints=i;l.chartData.calPoints=r;l.chartData.eachSpacing=o;drawYAxis(c,l,n,s);if(l.enableMarkLine!==false&&e===1){drawMarkLine(l,n,s)}if(x){drawLegend(x,l,n,s,l.chartData)}else{drawLegend(l.series,l,n,s,l.chartData)}drawToolTipBridge(l,n,s,e,o,i);drawCanvas(l,s)},onAnimationFinish:function t(){h.uevent.trigger("renderComplete")}});break}}function uChartsEvent(){this.events={}}uChartsEvent.prototype.addEventListener=function(t,e){this.events[t]=this.events[t]||[];this.events[t].push(e)};uChartsEvent.prototype.delEventListener=function(t){this.events[t]=[]};uChartsEvent.prototype.trigger=function(){for(var t=arguments.length,e=Array(t),a=0;a0&&arguments[0]!==undefined?arguments[0]:{};this.opts=assign({},this.opts,t);this.opts.updateData=true;let c=t.scrollPosition||"current";switch(c){case"current":this.opts._scrollDistance_=this.scrollOption.currentOffset;break;case"left":this.opts._scrollDistance_=0;this.scrollOption={currentOffset:0,startTouchX:0,distance:0,lastMoveTime:0};break;case"right":let t=calYAxisData(this.opts.series,this.opts,this.config,this.context),e=t.yAxisWidth;this.config.yAxisWidth=e;let a=0;let i=getXAxisPoints(this.opts.categories,this.opts,this.config),r=i.xAxisPoints,o=i.startX,n=i.endX,l=i.eachSpacing;let s=l*(r.length-1);let h=n-o;a=h-s;this.scrollOption={currentOffset:a,startTouchX:a,distance:0,lastMoveTime:0};this.opts._scrollDistance_=a;break}drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)};uCharts.prototype.zoom=function(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:this.opts.xAxis.itemCount;if(this.opts.enableScroll!==true){console.log("[uCharts] 请启用滚动条后使用");return}let e=Math.round(Math.abs(this.scrollOption.currentOffset)/this.opts.chartData.eachSpacing)+Math.round(this.opts.xAxis.itemCount/2);this.opts.animation=false;this.opts.xAxis.itemCount=t.itemCount;let a=calYAxisData(this.opts.series,this.opts,this.config,this.context),i=a.yAxisWidth;this.config.yAxisWidth=i;let r=0;let o=getXAxisPoints(this.opts.categories,this.opts,this.config),h=o.xAxisPoints,c=o.startX,d=o.endX,n=o.eachSpacing;let x=n*e;let l=d-c;let s=l-n*(h.length-1);r=l/2-x;if(r>0){r=0}if(r=this.opts.categories.length?this.opts.categories.length:r;this.opts.animation=false;this.opts.xAxis.itemCount=r;let o=0;let n=getXAxisPoints(this.opts.categories,this.opts,this.config),x=n.xAxisPoints,f=n.startX,p=n.endX,l=n.eachSpacing;let u=l*this.scrollOption.moveCurrent1;let g=p-f;let y=g-l*(x.length-1);o=-u+Math.min(i[0].x,i[1].x)-this.opts.area[3]-l;if(o>0){o=0}if(o1&&arguments[1]!==undefined?arguments[1]:{};var a=null;if(t.changedTouches){a=t.changedTouches[0]}else{a=t.mp.changedTouches[0]}if(a){var i=getTouches(a,this.opts,t);var r=this.getLegendDataIndex(t);if(r>=0){if(this.opts.type=="candle"){this.opts.seriesMA[r].show=!this.opts.seriesMA[r].show}else{this.opts.series[r].show=!this.opts.series[r].show}this.opts.animation=e.animation?true:false;this.opts._scrollDistance_=this.scrollOption.currentOffset;drawCharts.call(this,this.opts.type,this.opts,this.config,this.context)}}};uCharts.prototype.showToolTip=function(t){var e=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var c=null;if(t.changedTouches){c=t.changedTouches[0]}else{c=t.mp.changedTouches[0]}if(!c){console.log("[uCharts] 未获取到event坐标信息")}var a=getTouches(c,this.opts,t);var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});if(this.opts.type==="line"||this.opts.type==="area"||this.opts.type==="column"||this.opts.type==="scatter"||this.opts.type==="bubble"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1||o.length>0){var n=getSeriesDataItem(this.opts.series,o,r.group);if(n.length!==0){var l=getToolTipData(n,this.opts,o,r.group,this.opts.categories,e),s=l.textList,h=l.offset;h.y=a.y;i.tooltip={textList:e.textList!==undefined?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o,group:r.group}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="mount"){var o=e.index==undefined?this.getCurrentDataIndex(t).index:e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},i._series_[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,i):n.name+": "+n.data,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:i.chartData.calPoints[o].x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="bar"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1||o.length>0){var n=getSeriesDataItem(this.opts.series,o,r.group);if(n.length!==0){var l=getToolTipData(n,this.opts,o,r.group,this.opts.categories,e),s=l.textList,h=l.offset;h.x=a.x;i.tooltip={textList:e.textList!==undefined?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="mix"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1){var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var x=getMixToolTipData(n,this.opts,o,this.opts.categories,e),s=x.textList,h=x.offset;h.y=a.y;i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="candle"){var r=this.getCurrentDataIndex(t);var o=e.index==undefined?r.index:e.index;if(o>-1){var d=this.scrollOption.currentOffset;var i=assign({},this.opts,{_scrollDistance_:d,animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var l=getCandleToolTipData(this.opts.series[0].data,n,this.opts,o,this.opts.categories,this.opts.extra.candle,e),s=l.textList,h=l.offset;h.y=a.y;i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="pie"||this.opts.type==="ring"||this.opts.type==="rose"||this.opts.type==="funnel"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},i._series_[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,i):n.name+": "+n.data,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="map"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},this.opts.series[o]);n.name=n.properties.name;var s=[{text:e.formatter?e.formatter(n,undefined,o,this.opts):n.name,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}i.updateData=false;drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="word"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=assign({},this.opts.series[o]);var s=[{text:e.formatter?e.formatter(n,undefined,o,this.opts):n.name,color:n.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?n.legendShape:this.opts.extra.tooltip.legendShape}];var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}i.updateData=false;drawCharts.call(this,i.type,i,this.config,this.context)}if(this.opts.type==="radar"){var o=e.index==undefined?this.getCurrentDataIndex(t):e.index;if(o>-1){var i=assign({},this.opts,{animation:false});var n=getSeriesDataItem(this.opts.series,o);if(n.length!==0){var s=n.map(t=>{return{text:e.formatter?e.formatter(t,this.opts.categories[o],o,this.opts):t.name+": "+t.data,color:t.color,legendShape:this.opts.extra.tooltip.legendShape=="auto"?t.legendShape:this.opts.extra.tooltip.legendShape}});var h={x:a.x,y:a.y};i.tooltip={textList:e.textList?e.textList:s,offset:e.offset!==undefined?e.offset:h,option:e,index:o}}}drawCharts.call(this,i.type,i,this.config,this.context)}};uCharts.prototype.translate=function(t){this.scrollOption={currentOffset:t,startTouchX:t,distance:0,lastMoveTime:0};let e=assign({},this.opts,{_scrollDistance_:t,animation:false});drawCharts.call(this,this.opts.type,e,this.config,this.context)};uCharts.prototype.scrollStart=function(t){var e=null;if(t.changedTouches){e=t.changedTouches[0]}else{e=t.mp.changedTouches[0]}var a=getTouches(e,this.opts,t);if(e&&this.opts.enableScroll===true){this.scrollOption.startTouchX=a.x}};uCharts.prototype.scroll=function(t){if(this.scrollOption.lastMoveTime===0){this.scrollOption.lastMoveTime=Date.now()}let e=this.opts.touchMoveLimit||60;let a=Date.now();let i=a-this.scrollOption.lastMoveTime;if(i=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,a,r,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||Sb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(jb))}function Ei(t){return Ub(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-rS&&trS||t<-rS}function tn(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function on(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function an(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?a+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=dM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(t,e){var i=e||e.getModel("textStyle");return P([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Mo(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(t,e,i){var n=(e=a({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),r(n,i),new fi(e)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Vo(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ho(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Zo(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Uo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function da(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ca(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Rr(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),hT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Ur(e)}):cT}function Ur(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}function os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Is(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function Ts(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function As(t){var e=t._coordSysMgr;return a(new Ga(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Vl(t,e){return VA(t,BA(e))}function Gl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Vo(n[0],1),n[1]=Vo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==r||!isFinite(r))&&(r=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Wl(t,e){var i=Gl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Ul(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,m=ke(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=nD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function gu(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=Kl(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function vu(t,e,i){var n=t.scale,o=Ul(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Eu(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=uw(p,y),_=uw(p,m);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Fu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Zu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function $u(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function ph(t){return"middle"===t||"center"===t}function gh(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Sh(t){var e=Mh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Th(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Vh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Fh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new hM({z2:2}),a=new gM,r=new rM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Wh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new tb),i.add(this._backgroundGroup=new tb)}function _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function bc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Ac(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Dc(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Vo(s[0],u),Vo(s[1],h)],l=Vo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ca(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Wc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){jc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function Yc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=l.getLayout();s?(i=new wu(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Io(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function ad(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function sd(t,e){var i=Xc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),rd(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function ld(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}function dd(t){var e=0;d(t.children,function(t){dd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&cd(i,e)}}function vd(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Gd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(_L),l=f.get(wL)/2,u=Kd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Ud(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?mL(u*o/l,l/(u*a)):1/0}function Xd(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),xf(i)}}function xf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function _f(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function wf(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Gk).getItemStyle(Wk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new wu(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Vo(f[0],d[0]),Vo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Vo(f[c.index],d),f[h.index]=Vo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=Jl(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;kh(d.style,h,a,n,e.seriesModel,o,c),fo(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return _P(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),_P(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Ah(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];_P(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function sm(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function Sm(t,e,i,n,o){var a=Im(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=qM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Xl(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Vo(t.get("barWidth"),r),c=Vo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Vo(t.categoryGap,o),r=Vo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}function qv(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Es(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);TN(PN,function(t,e){(!i||!i.include||AN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:LN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return $N(i,function(t){var i=t.getData();i&&$N(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Zo(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;$N(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");tO([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Nr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return QL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=hL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)YO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(pE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return gE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",cR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},Rw.clear=function(){this._list.clear(),this._map={}};var zw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=NS(1/Xw/t)||0,this._uy=NS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(SS.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(SS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(SS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(SS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=LS(o)*i+t,this._yi=kS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=tn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=PS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-PS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?va(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},fI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),xa(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Ea.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=za(i,n,t.exist))});var l=Ra(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=lI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&Ba(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(lI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[SI],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Va(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Va(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=yr(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||d=i?null:t1&&a>0?e:t}};return s}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(fr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=dI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof IM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},rT={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},sT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=rT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},uT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),jr(e,t,t.dataTask)})},uT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:vT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),es(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(_T);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=as(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},$r.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new sM;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new _M;return Qr(e,i),es(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new xT;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Qr(e,r),es(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return kT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},HT.getVisual=function(t,e){var i=(t=Vi(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}Ss(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(ar)}),Gs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(js(t,{},n,"_oldKeyGetter",this),js(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},el(this)},yA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},el(this)}},yA.count=function(){return this._count},yA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},yA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},yA.getRawIndex=nl,yA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},yA.downSample=function(t,e,i,n){for(var o=sl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new($s(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:B,niceExtent:B});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),TA.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ml(t)},getTicks:function(){return Al(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=Sl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},XA=Un({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),jA=Un({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),YA=Un({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),qA=Un({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),KA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Zo(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Io(l,{scale:bu(a)},o,e);if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Vo(c[0],i[0]),Vo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Ar.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new ID({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=mD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(kD,aD);var PD={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:o([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),ah(t,e?o.x:o.y)})}var o=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=jl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},BD.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},BD.getAxes=function(){return this._axesList.slice()},BD.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?tI(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});$D.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}},nC=Pn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var lC=function(t,e){d(e,function(e){e.update="updateView",Es(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},uC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},hC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=AD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Uh:new Du,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new No(f,null,this.ecModel),UA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:n({lineStyle:{color:"#bbb"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ia(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Zs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=qh(t.getItemVisual(e,"symbolSize")),a=Jl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ia(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Io(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,fc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,pc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new xc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=bc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Vc.prototype={constructor:Vc,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ia(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];fn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Mc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!gc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Es({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var UC=5;pd.prototype={constructor:pd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),da(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ha(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new pM({shape:{points:gd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=ld(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new jC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(yd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&qC(t,function(t,i){var n=e[i];qC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=vd();qC(e.willDeleteEls,function(t,e){qC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),qC(this._storage,function(t,i){qC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return DL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new vA(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return CL.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(NL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%YL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new _M({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(this,["value"])},_defaultLabelLine:function(t){Ci(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=qL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),fo(this)},KL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");go(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},u(If,tb);Ar.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new If(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=Bo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Of(e.get("axisExpandWidth"),l),c=Of(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?QL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Fo(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Ip(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});var Dk=.3,Ck=(Ar.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ok={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(YI.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),Pn.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n0?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Kk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});var Jk=vg.prototype;Jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},Jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=Jl(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},Jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=Jl(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},iP._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},iP.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},u(wg,xg);var aP=Un({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Zs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Fa.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Mh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),TP(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,ji(mm);var CP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=xP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),_P(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var kP=["x","y"],PP=["width","height"],NP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=OP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},VP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Ar.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Xs(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};YI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Ws({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;da(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var KP=Fs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){KP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),JP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add(Jl(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),fo(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Os(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=nN[r],l=oN[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new rM({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el?this.el.hide():true,this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,uN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=dN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=xP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};hN(t,function(t){hN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Xl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ia(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new No(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=na(h,i,!0);else if("function"==typeof h){var d=uN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&hN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=fN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,aD);var pN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(yN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new sM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[CN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},RN={lineX:DN(py,0),lineY:DN(py,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),Bs(GN,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:FN[t.brushType](t)},t))}),S=ty(e.option,zN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},WN=["#ddd"];Fs({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:WN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.toolbox.brush;Dy.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:i(ZN.title)};var UN=Dy.prototype;UN.render=UN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},UN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},UN.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},Ty("brush",Dy),Ns(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,SN)}});Cy.prototype={constructor:Cy,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ca(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Fa.register("calendar",Cy);var XN=lI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new yM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new gM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?oa(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new rM({z2:30});mo(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=jN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&$N(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):$N(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),tO([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;eO(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return eO(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;eO(function(n){tO(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;tO([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),nO=qI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:aO(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(cO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new rM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[aO(t[0],[0,100],e,!0),aO(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];QL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=rO(i.slice()),o=this._size;lO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=rO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=Do([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(lO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=pO(mO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return QL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=vO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Os({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&yO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=AO([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");TO(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){LO.prototype.completeVisualOption.apply(this,arguments),d(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Fo((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new tb("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=OO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=RO(zO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(s[1],o,a,!0)];s[0]o[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",ex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=Ao(e,n?null:this.group);return zM[y(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=hL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=hL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){hL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),WO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};NO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new rM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new rM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jl(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});qO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Du),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var KO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};qO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new sf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var $O=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(JO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(JO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){QO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new vA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(QO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ia(s.scale.getLabel(t))},nE(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:oE/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*oE/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-oE/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Hl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eE("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new _M({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();nE(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();nE(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),fo(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=iE(s._handlePointerDrag,s),t.ondragend=iE(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Fo(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var rE=rT.toolbox.saveAsImage;Gx.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var sE=rT.toolbox.magicType;Fx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var uE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=uE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","g");$x.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(cE.title),lang:i(cE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+fE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Es({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=QL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var bE=rT.toolbox.restore;l_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*EE,x/=v[1]*EE;var _=OE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void Yw("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);bt(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.prototype.add=function(t){var e=this.createElement("filter"),i=t.style;return i._shadowDomId=i._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+i._shadowDomId),this.updateDom(t,e),this.addDom(e),e},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var IR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};IR.prototype={constructor:IR,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/qiun-data-charts/static/h5/echarts.min.js b/uni_modules/qiun-data-charts/static/h5/echarts.min.js new file mode 100644 index 0000000..5396a03 --- /dev/null +++ b/uni_modules/qiun-data-charts/static/h5/echarts.min.js @@ -0,0 +1,23 @@ + +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* 版本为4.2.1,修改一处源码:this.el.hide() 改为 this.el?this.el.hide():true +*/ + + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.echarts={})}(this,function(t){"use strict";function e(t,e){"createCanvas"===t&&(nw=null),ew[t]=e}function i(t){if(null==t||"object"!=typeof t)return t;var e=t,n=Y_.call(t);if("[object Array]"===n){if(!O(t)){e=[];for(var o=0,a=t.length;o=0){var o="touchend"!==n?e.targetTouches[0]:e.changedTouches[0];o&&st(t,o,e,i)}else st(t,e,e,i),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var a=e.button;return null==e.which&&void 0!==a&&gw.test(e.type)&&(e.which=1&a?1:2&a?3:4&a?2:0),e}function ht(t,e,i){pw?t.addEventListener(e,i):t.attachEvent("on"+e,i)}function ct(t,e,i){pw?t.removeEventListener(e,i):t.detachEvent("on"+e,i)}function dt(t){return 2===t.which||3===t.which}function ft(t){var e=t[1][0]-t[0][0],i=t[1][1]-t[0][1];return Math.sqrt(e*e+i*i)}function pt(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function gt(t,e,i){return{type:t,event:i,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:i.zrX,offsetY:i.zrY,gestureEvent:i.gestureEvent,pinchX:i.pinchX,pinchY:i.pinchY,pinchScale:i.pinchScale,wheelDelta:i.zrDelta,zrByTouch:i.zrByTouch,which:i.which,stop:mt}}function mt(t){mw(this.event)}function vt(){}function yt(t,e,i){if(t[t.rectHover?"rectContain":"contain"](e,i)){for(var n,o=t;o;){if(o.clipPath&&!o.clipPath.contain(e,i))return!1;o.silent&&(n=!0),o=o.parent}return!n||xw}return!1}function xt(){var t=new bw(6);return _t(t),t}function _t(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function wt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function bt(t,e,i){var n=e[0]*i[0]+e[2]*i[1],o=e[1]*i[0]+e[3]*i[1],a=e[0]*i[2]+e[2]*i[3],r=e[1]*i[2]+e[3]*i[3],s=e[0]*i[4]+e[2]*i[5]+e[4],l=e[1]*i[4]+e[3]*i[5]+e[5];return t[0]=n,t[1]=o,t[2]=a,t[3]=r,t[4]=s,t[5]=l,t}function St(t,e,i){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4]+i[0],t[5]=e[5]+i[1],t}function Mt(t,e,i){var n=e[0],o=e[2],a=e[4],r=e[1],s=e[3],l=e[5],u=Math.sin(i),h=Math.cos(i);return t[0]=n*h+r*u,t[1]=-n*u+r*h,t[2]=o*h+s*u,t[3]=-o*u+h*s,t[4]=h*a+u*l,t[5]=h*l-u*a,t}function It(t,e,i){var n=i[0],o=i[1];return t[0]=e[0]*n,t[1]=e[1]*o,t[2]=e[2]*n,t[3]=e[3]*o,t[4]=e[4]*n,t[5]=e[5]*o,t}function Tt(t,e){var i=e[0],n=e[2],o=e[4],a=e[1],r=e[3],s=e[5],l=i*r-a*n;return l?(l=1/l,t[0]=r*l,t[1]=-a*l,t[2]=-n*l,t[3]=i*l,t[4]=(n*s-r*o)*l,t[5]=(a*o-i*s)*l,t):null}function At(t){var e=xt();return wt(e,t),e}function Dt(t){return t>Iw||t<-Iw}function Ct(t){this._target=t.target,this._life=t.life||1e3,this._delay=t.delay||0,this._initialized=!1,this.loop=null!=t.loop&&t.loop,this.gap=t.gap||0,this.easing=t.easing||"Linear",this.onframe=t.onframe,this.ondestroy=t.ondestroy,this.onrestart=t.onrestart,this._pausedTime=0,this._paused=!1}function Lt(t){return(t=Math.round(t))<0?0:t>255?255:t}function kt(t){return(t=Math.round(t))<0?0:t>360?360:t}function Pt(t){return t<0?0:t>1?1:t}function Nt(t){return Lt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100*255:parseInt(t,10))}function Ot(t){return Pt(t.length&&"%"===t.charAt(t.length-1)?parseFloat(t)/100:parseFloat(t))}function Et(t,e,i){return i<0?i+=1:i>1&&(i-=1),6*i<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}function Rt(t,e,i){return t+(e-t)*i}function zt(t,e,i,n,o){return t[0]=e,t[1]=i,t[2]=n,t[3]=o,t}function Bt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function Vt(t,e){Vw&&Bt(Vw,e),Vw=Bw.put(t,Vw||e.slice())}function Gt(t,e){if(t){e=e||[];var i=Bw.get(t);if(i)return Bt(e,i);var n=(t+="").replace(/ /g,"").toLowerCase();if(n in zw)return Bt(e,zw[n]),Vt(t,e),e;if("#"!==n.charAt(0)){var o=n.indexOf("("),a=n.indexOf(")");if(-1!==o&&a+1===n.length){var r=n.substr(0,o),s=n.substr(o+1,a-(o+1)).split(","),l=1;switch(r){case"rgba":if(4!==s.length)return void zt(e,0,0,0,1);l=Ot(s.pop());case"rgb":return 3!==s.length?void zt(e,0,0,0,1):(zt(e,Nt(s[0]),Nt(s[1]),Nt(s[2]),l),Vt(t,e),e);case"hsla":return 4!==s.length?void zt(e,0,0,0,1):(s[3]=Ot(s[3]),Ft(s,e),Vt(t,e),e);case"hsl":return 3!==s.length?void zt(e,0,0,0,1):(Ft(s,e),Vt(t,e),e);default:return}}zt(e,0,0,0,1)}else{if(4===n.length)return(u=parseInt(n.substr(1),16))>=0&&u<=4095?(zt(e,(3840&u)>>4|(3840&u)>>8,240&u|(240&u)>>4,15&u|(15&u)<<4,1),Vt(t,e),e):void zt(e,0,0,0,1);if(7===n.length){var u=parseInt(n.substr(1),16);return u>=0&&u<=16777215?(zt(e,(16711680&u)>>16,(65280&u)>>8,255&u,1),Vt(t,e),e):void zt(e,0,0,0,1)}}}}function Ft(t,e){var i=(parseFloat(t[0])%360+360)%360/360,n=Ot(t[1]),o=Ot(t[2]),a=o<=.5?o*(n+1):o+n-o*n,r=2*o-a;return e=e||[],zt(e,Lt(255*Et(r,a,i+1/3)),Lt(255*Et(r,a,i)),Lt(255*Et(r,a,i-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Wt(t){if(t){var e,i,n=t[0]/255,o=t[1]/255,a=t[2]/255,r=Math.min(n,o,a),s=Math.max(n,o,a),l=s-r,u=(s+r)/2;if(0===l)e=0,i=0;else{i=u<.5?l/(s+r):l/(2-s-r);var h=((s-n)/6+l/2)/l,c=((s-o)/6+l/2)/l,d=((s-a)/6+l/2)/l;n===s?e=d-c:o===s?e=1/3+h-d:a===s&&(e=2/3+c-h),e<0&&(e+=1),e>1&&(e-=1)}var f=[360*e,i,u];return null!=t[3]&&f.push(t[3]),f}}function Ht(t,e){var i=Gt(t);if(i){for(var n=0;n<3;n++)i[n]=e<0?i[n]*(1-e)|0:(255-i[n])*e+i[n]|0,i[n]>255?i[n]=255:t[n]<0&&(i[n]=0);return qt(i,4===i.length?"rgba":"rgb")}}function Zt(t){var e=Gt(t);if(e)return((1<<24)+(e[0]<<16)+(e[1]<<8)+ +e[2]).toString(16).slice(1)}function Ut(t,e,i){if(e&&e.length&&t>=0&&t<=1){i=i||[];var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=e[o],s=e[a],l=n-o;return i[0]=Lt(Rt(r[0],s[0],l)),i[1]=Lt(Rt(r[1],s[1],l)),i[2]=Lt(Rt(r[2],s[2],l)),i[3]=Pt(Rt(r[3],s[3],l)),i}}function Xt(t,e,i){if(e&&e.length&&t>=0&&t<=1){var n=t*(e.length-1),o=Math.floor(n),a=Math.ceil(n),r=Gt(e[o]),s=Gt(e[a]),l=n-o,u=qt([Lt(Rt(r[0],s[0],l)),Lt(Rt(r[1],s[1],l)),Lt(Rt(r[2],s[2],l)),Pt(Rt(r[3],s[3],l))],"rgba");return i?{color:u,leftIndex:o,rightIndex:a,value:n}:u}}function jt(t,e,i,n){if(t=Gt(t))return t=Wt(t),null!=e&&(t[0]=kt(e)),null!=i&&(t[1]=Ot(i)),null!=n&&(t[2]=Ot(n)),qt(Ft(t),"rgba")}function Yt(t,e){if((t=Gt(t))&&null!=e)return t[3]=Pt(e),qt(t,"rgba")}function qt(t,e){if(t&&t.length){var i=t[0]+","+t[1]+","+t[2];return"rgba"!==e&&"hsva"!==e&&"hsla"!==e||(i+=","+t[3]),e+"("+i+")"}}function Kt(t,e){return t[e]}function $t(t,e,i){t[e]=i}function Jt(t,e,i){return(e-t)*i+t}function Qt(t,e,i){return i>.5?e:t}function te(t,e,i,n,o){var a=t.length;if(1===o)for(s=0;so)t.length=o;else for(r=n;r=0&&!(m[i]<=e);i--);i=Math.min(i,u-2)}else{for(i=L;ie);i++);i=Math.min(i-1,u-2)}L=i,k=e;var n=m[i+1]-m[i];if(0!==n)if(I=(e-m[i])/n,l)if(A=v[i],T=v[0===i?i:i-1],D=v[i>u-2?u-1:i+1],C=v[i>u-3?u-1:i+2],d)ne(T,A,D,C,I,I*I,I*I*I,r(t,o),g);else{if(f)a=ne(T,A,D,C,I,I*I,I*I*I,P,1),a=re(P);else{if(p)return Qt(A,D,I);a=oe(T,A,D,C,I,I*I,I*I*I)}s(t,o,a)}else if(d)te(v[i],v[i+1],I,r(t,o),g);else{var a;if(f)te(v[i],v[i+1],I,P,1),a=re(P);else{if(p)return Qt(v[i],v[i+1],I);a=Jt(v[i],v[i+1],I)}s(t,o,a)}},ondestroy:i});return e&&"spline"!==e&&(N.easing=e),N}}}function ue(t,e,i,n,o,a,r,s){_(n)?(a=o,o=n,n=0):x(o)?(a=o,o="linear",n=0):x(n)?(a=n,n=0):x(i)?(a=i,i=500):i||(i=500),t.stopAnimation(),he(t,"",t,e,i,n,s);var l=t.animators.slice(),u=l.length;u||a&&a();for(var h=0;h0&&t.animate(e,!1).when(null==o?500:o,s).delay(a||0)}function ce(t,e,i,n){if(e){var o={};o[e]={},o[e][i]=n,t.attr(o)}else t.attr(i,n)}function de(t,e,i,n){i<0&&(t+=i,i=-i),n<0&&(e+=n,n=-n),this.x=t,this.y=e,this.width=i,this.height=n}function fe(t){for(var e=0;t>=eb;)e|=1&t,t>>=1;return t+e}function pe(t,e,i,n){var o=e+1;if(o===i)return 1;if(n(t[o++],t[e])<0){for(;o=0;)o++;return o-e}function ge(t,e,i){for(i--;e>>1])<0?l=a:s=a+1;var u=n-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;u>0;)t[s+u]=t[s+u-1],u--}t[s]=r}}function ve(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])>0){for(s=n-o;l0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}else{for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}for(r++;r>>1);a(t,e[i+h])>0?r=h+1:l=h}return l}function ye(t,e,i,n,o,a){var r=0,s=0,l=1;if(a(t,e[i+o])<0){for(s=o+1;ls&&(l=s);var u=r;r=o-l,l=o-u}else{for(s=n-o;l=0;)r=l,(l=1+(l<<1))<=0&&(l=s);l>s&&(l=s),r+=o,l+=o}for(r++;r>>1);a(t,e[i+h])<0?l=h:r=h+1}return l}function xe(t,e){function i(i){var s=a[i],u=r[i],h=a[i+1],c=r[i+1];r[i]=u+c,i===l-3&&(a[i+1]=a[i+2],r[i+1]=r[i+2]),l--;var d=ye(t[h],t,s,u,0,e);s+=d,0!==(u-=d)&&0!==(c=ve(t[s+u-1],t,h,c,c-1,e))&&(u<=c?n(s,u,h,c):o(s,u,h,c))}function n(i,n,o,a){var r=0;for(r=0;r=ib||f>=ib);if(p)break;g<0&&(g=0),g+=2}if((s=g)<1&&(s=1),1===n){for(r=0;r=0;r--)t[f+r]=t[d+r];if(0===n){v=!0;break}}if(t[c--]=u[h--],1==--a){v=!0;break}if(0!=(m=a-ve(t[l],u,0,a,a-1,e))){for(a-=m,f=(c-=m)+1,d=(h-=m)+1,r=0;r=ib||m>=ib);if(v)break;p<0&&(p=0),p+=2}if((s=p)<1&&(s=1),1===a){for(f=(c-=n)+1,d=(l-=n)+1,r=n-1;r>=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else{if(0===a)throw new Error;for(d=c-(a-1),r=0;r=0;r--)t[f+r]=t[d+r];t[c]=u[h]}else for(d=c-(a-1),r=0;r1;){var t=l-2;if(t>=1&&r[t-1]<=r[t]+r[t+1]||t>=2&&r[t-2]<=r[t]+r[t-1])r[t-1]r[t+1])break;i(t)}},this.forceMergeRuns=function(){for(;l>1;){var t=l-2;t>0&&r[t-1]s&&(l=s),me(t,i,i+l,i+a,e),a=l}r.pushRun(i,a),r.mergeRuns(),o-=a,i+=a}while(0!==o);r.forceMergeRuns()}}function we(t,e){return t.zlevel===e.zlevel?t.z===e.z?t.z2-e.z2:t.z-e.z:t.zlevel-e.zlevel}function be(t,e,i){var n=null==e.x?0:e.x,o=null==e.x2?1:e.x2,a=null==e.y?0:e.y,r=null==e.y2?0:e.y2;return e.global||(n=n*i.width+i.x,o=o*i.width+i.x,a=a*i.height+i.y,r=r*i.height+i.y),n=isNaN(n)?0:n,o=isNaN(o)?1:o,a=isNaN(a)?0:a,r=isNaN(r)?0:r,t.createLinearGradient(n,a,o,r)}function Se(t,e,i){var n=i.width,o=i.height,a=Math.min(n,o),r=null==e.x?.5:e.x,s=null==e.y?.5:e.y,l=null==e.r?.5:e.r;return e.global||(r=r*n+i.x,s=s*o+i.y,l*=a),t.createRadialGradient(r,s,0,r,s,l)}function Me(){return!1}function Ie(t,e,i){var n=iw(),o=e.getWidth(),a=e.getHeight(),r=n.style;return r&&(r.position="absolute",r.left=0,r.top=0,r.width=o+"px",r.height=a+"px",n.setAttribute("data-zr-dom-id",t)),n.width=o*i,n.height=a*i,n}function Te(t){if("string"==typeof t){var e=mb.get(t);return e&&e.image}return t}function Ae(t,e,i,n,o){if(t){if("string"==typeof t){if(e&&e.__zrImageSrc===t||!i)return e;var a=mb.get(t),r={hostEl:i,cb:n,cbPayload:o};return a?!Ce(e=a.image)&&a.pending.push(r):((e=new Image).onload=e.onerror=De,mb.put(t,e.__cachedImgObj={image:e,pending:[r]}),e.src=e.__zrImageSrc=t),e}return t}return e}function De(){var t=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var e=0;exb&&(yb=0,vb={}),yb++,vb[i]=o,o}function ke(t,e,i,n,o,a,r,s){return r?Ne(t,e,i,n,o,a,r,s):Pe(t,e,i,n,o,a,s)}function Pe(t,e,i,n,o,a,r){var s=He(t,e,o,a,r),l=Le(t,e);o&&(l+=o[1]+o[3]);var u=s.outerHeight,h=new de(Oe(0,l,i),Ee(0,u,n),l,u);return h.lineHeight=s.lineHeight,h}function Ne(t,e,i,n,o,a,r,s){var l=Ze(t,{rich:r,truncate:s,font:e,textAlign:i,textPadding:o,textLineHeight:a}),u=l.outerWidth,h=l.outerHeight;return new de(Oe(0,u,i),Ee(0,h,n),u,h)}function Oe(t,e,i){return"right"===i?t-=e:"center"===i&&(t-=e/2),t}function Ee(t,e,i){return"middle"===i?t-=e/2:"bottom"===i&&(t-=e),t}function Re(t,e,i){var n=e.x,o=e.y,a=e.height,r=e.width,s=a/2,l="left",u="top";switch(t){case"left":n-=i,o+=s,l="right",u="middle";break;case"right":n+=i+r,o+=s,u="middle";break;case"top":n+=r/2,o-=i,l="center",u="bottom";break;case"bottom":n+=r/2,o+=a+i,l="center";break;case"inside":n+=r/2,o+=s,l="center",u="middle";break;case"insideLeft":n+=i,o+=s,u="middle";break;case"insideRight":n+=r-i,o+=s,l="right",u="middle";break;case"insideTop":n+=r/2,o+=i,l="center";break;case"insideBottom":n+=r/2,o+=a-i,l="center",u="bottom";break;case"insideTopLeft":n+=i,o+=i;break;case"insideTopRight":n+=r-i,o+=i,l="right";break;case"insideBottomLeft":n+=i,o+=a-i,u="bottom";break;case"insideBottomRight":n+=r-i,o+=a-i,l="right",u="bottom"}return{x:n,y:o,textAlign:l,textVerticalAlign:u}}function ze(t,e,i,n,o){if(!e)return"";var a=(t+"").split("\n");o=Be(e,i,n,o);for(var r=0,s=a.length;r=r;l++)s-=r;var u=Le(i,e);return u>s&&(i="",u=0),s=t-u,n.ellipsis=i,n.ellipsisWidth=u,n.contentWidth=s,n.containerWidth=t,n}function Ve(t,e){var i=e.containerWidth,n=e.font,o=e.contentWidth;if(!i)return"";var a=Le(t,n);if(a<=i)return t;for(var r=0;;r++){if(a<=o||r>=e.maxIterations){t+=e.ellipsis;break}var s=0===r?Ge(t,o,e.ascCharWidth,e.cnCharWidth):a>0?Math.floor(t.length*o/a):0;a=Le(t=t.substr(0,s),n)}return""===t&&(t=e.placeholder),t}function Ge(t,e,i,n){for(var o=0,a=0,r=t.length;au)t="",r=[];else if(null!=h)for(var c=Be(h-(i?i[1]+i[3]:0),e,o.ellipsis,{minChar:o.minChar,placeholder:o.placeholder}),d=0,f=r.length;do&&Ue(i,t.substring(o,a)),Ue(i,n[2],n[1]),o=_b.lastIndex}of)return{lines:[],width:0,height:0};k.textWidth=Le(k.text,_);var b=y.textWidth,S=null==b||"auto"===b;if("string"==typeof b&&"%"===b.charAt(b.length-1))k.percentWidth=b,u.push(k),b=0;else{if(S){b=k.textWidth;var M=y.textBackgroundColor,I=M&&M.image;I&&Ce(I=Te(I))&&(b=Math.max(b,I.width*w/I.height))}var T=x?x[1]+x[3]:0;b+=T;var C=null!=d?d-m:null;null!=C&&Cl&&(i*=l/(c=i+n),n*=l/c),o+a>l&&(o*=l/(c=o+a),a*=l/c),n+o>u&&(n*=u/(c=n+o),o*=u/c),i+a>u&&(i*=u/(c=i+a),a*=u/c),t.moveTo(r+i,s),t.lineTo(r+l-n,s),0!==n&&t.arc(r+l-n,s+n,n,-Math.PI/2,0),t.lineTo(r+l,s+u-o),0!==o&&t.arc(r+l-o,s+u-o,o,0,Math.PI/2),t.lineTo(r+a,s+u),0!==a&&t.arc(r+a,s+u-a,a,Math.PI/2,Math.PI),t.lineTo(r,s+i),0!==i&&t.arc(r+i,s+i,i,Math.PI,1.5*Math.PI)}function Ye(t){return qe(t),d(t.rich,qe),t}function qe(t){if(t){t.font=Xe(t);var e=t.textAlign;"middle"===e&&(e="center"),t.textAlign=null==e||Mb[e]?e:"left";var i=t.textVerticalAlign||t.textBaseline;"center"===i&&(i="middle"),t.textVerticalAlign=null==i||Ib[i]?i:"top",t.textPadding&&(t.textPadding=L(t.textPadding))}}function Ke(t,e,i,n,o,a){n.rich?Je(t,e,i,n,o,a):$e(t,e,i,n,o,a)}function $e(t,e,i,n,o,a){var r,s=ii(n),l=!1,u=e.__attrCachedBy===rb.PLAIN_TEXT;a!==sb?(a&&(r=a.style,l=!s&&u&&r),e.__attrCachedBy=s?rb.NONE:rb.PLAIN_TEXT):u&&(e.__attrCachedBy=rb.NONE);var h=n.font||Sb;l&&h===(r.font||Sb)||(e.font=h);var c=t.__computedFont;t.__styleFont!==h&&(t.__styleFont=h,c=t.__computedFont=e.font);var d=n.textPadding,f=n.textLineHeight,p=t.__textCotentBlock;p&&!t.__dirtyText||(p=t.__textCotentBlock=He(i,c,d,f,n.truncate));var g=p.outerHeight,m=p.lines,v=p.lineHeight,y=ai(g,n,o),x=y.baseX,_=y.baseY,w=y.textAlign||"left",b=y.textVerticalAlign;ti(e,n,o,x,_);var S=Ee(_,g,b),M=x,I=S;if(s||d){var T=Le(i,c);d&&(T+=d[1]+d[3]);var A=Oe(x,T,w);s&&ni(t,e,n,A,S,T,g),d&&(M=hi(x,w,d),I+=d[0])}e.textAlign=w,e.textBaseline="middle",e.globalAlpha=n.opacity||1;for(B=0;B=0&&"right"===(_=b[C]).textAlign;)ei(t,e,_,n,M,v,D,"right"),I-=_.width,D-=_.width,C--;for(A+=(a-(A-m)-(y-D)-I)/2;T<=C;)ei(t,e,_=b[T],n,M,v,A+_.width/2,"center"),A+=_.width,T++;v+=M}}function ti(t,e,i,n,o){if(i&&e.textRotation){var a=e.textOrigin;"center"===a?(n=i.width/2+i.x,o=i.height/2+i.y):a&&(n=a[0]+i.x,o=a[1]+i.y),t.translate(n,o),t.rotate(-e.textRotation),t.translate(-n,-o)}}function ei(t,e,i,n,o,a,r,s){var l=n.rich[i.styleName]||{};l.text=i.text;var u=i.textVerticalAlign,h=a+o/2;"top"===u?h=a+i.height/2:"bottom"===u&&(h=a+o-i.height/2),!i.isLineHolder&&ii(l)&&ni(t,e,l,"right"===s?r-i.width:"center"===s?r-i.width/2:r,h-i.height/2,i.width,i.height);var c=i.textPadding;c&&(r=hi(r,s,c),h-=i.height/2-c[2]-i.textHeight/2),ri(e,"shadowBlur",D(l.textShadowBlur,n.textShadowBlur,0)),ri(e,"shadowColor",l.textShadowColor||n.textShadowColor||"transparent"),ri(e,"shadowOffsetX",D(l.textShadowOffsetX,n.textShadowOffsetX,0)),ri(e,"shadowOffsetY",D(l.textShadowOffsetY,n.textShadowOffsetY,0)),ri(e,"textAlign",s),ri(e,"textBaseline","middle"),ri(e,"font",i.font||Sb);var d=si(l.textStroke||n.textStroke,p),f=li(l.textFill||n.textFill),p=A(l.textStrokeWidth,n.textStrokeWidth);d&&(ri(e,"lineWidth",p),ri(e,"strokeStyle",d),e.strokeText(i.text,r,h)),f&&(ri(e,"fillStyle",f),e.fillText(i.text,r,h))}function ii(t){return!!(t.textBackgroundColor||t.textBorderWidth&&t.textBorderColor)}function ni(t,e,i,n,o,a,r){var s=i.textBackgroundColor,l=i.textBorderWidth,u=i.textBorderColor,h=_(s);if(ri(e,"shadowBlur",i.textBoxShadowBlur||0),ri(e,"shadowColor",i.textBoxShadowColor||"transparent"),ri(e,"shadowOffsetX",i.textBoxShadowOffsetX||0),ri(e,"shadowOffsetY",i.textBoxShadowOffsetY||0),h||l&&u){e.beginPath();var c=i.textBorderRadius;c?je(e,{x:n,y:o,width:a,height:r,r:c}):e.rect(n,o,a,r),e.closePath()}if(h)if(ri(e,"fillStyle",s),null!=i.fillOpacity){f=e.globalAlpha;e.globalAlpha=i.fillOpacity*i.opacity,e.fill(),e.globalAlpha=f}else e.fill();else if(w(s)){var d=s.image;(d=Ae(d,null,t,oi,s))&&Ce(d)&&e.drawImage(d,n,o,a,r)}if(l&&u)if(ri(e,"lineWidth",l),ri(e,"strokeStyle",u),null!=i.strokeOpacity){var f=e.globalAlpha;e.globalAlpha=i.strokeOpacity*i.opacity,e.stroke(),e.globalAlpha=f}else e.stroke()}function oi(t,e){e.image=t}function ai(t,e,i){var n=e.x||0,o=e.y||0,a=e.textAlign,r=e.textVerticalAlign;if(i){var s=e.textPosition;if(s instanceof Array)n=i.x+ui(s[0],i.width),o=i.y+ui(s[1],i.height);else{var l=Re(s,i,e.textDistance);n=l.x,o=l.y,a=a||l.textAlign,r=r||l.textVerticalAlign}var u=e.textOffset;u&&(n+=u[0],o+=u[1])}return{baseX:n,baseY:o,textAlign:a,textVerticalAlign:r}}function ri(t,e,i){return t[e]=ab(t,e,i),t[e]}function si(t,e){return null==t||e<=0||"transparent"===t||"none"===t?null:t.image||t.colorStops?"#000":t}function li(t){return null==t||"none"===t?null:t.image||t.colorStops?"#000":t}function ui(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t}function hi(t,e,i){return"right"===e?t-i[1]:"center"===e?t+i[3]/2-i[1]/2:t+i[3]}function ci(t,e){return null!=t&&(t||e.textBackgroundColor||e.textBorderWidth&&e.textBorderColor||e.textPadding)}function di(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&"style"!==e&&(this[e]=t[e]);this.style=new ub(t.style,this),this._rect=null,this.__clipPaths=[]}function fi(t){di.call(this,t)}function pi(t){return parseInt(t,10)}function gi(t){return!!t&&(!!t.__builtin__||"function"==typeof t.resize&&"function"==typeof t.refresh)}function mi(t,e,i){return Cb.copy(t.getBoundingRect()),t.transform&&Cb.applyTransform(t.transform),Lb.width=e,Lb.height=i,!Cb.intersect(Lb)}function vi(t,e){if(t===e)return!1;if(!t||!e||t.length!==e.length)return!0;for(var i=0;i=i.length&&i.push({option:t})}}),i}function Ni(t){var e=R();Zb(t,function(t,i){var n=t.exist;n&&e.set(n.id,t)}),Zb(t,function(t,i){var n=t.option;k(!n||null==n.id||!e.get(n.id)||e.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&e.set(n.id,t),!t.keyInfo&&(t.keyInfo={})}),Zb(t,function(t,i){var n=t.exist,o=t.option,a=t.keyInfo;if(Ub(o)){if(a.name=null!=o.name?o.name+"":n?n.name:jb+i,n)a.id=n.id;else if(null!=o.id)a.id=o.id+"";else{var r=0;do{a.id="\0"+a.name+"\0"+r++}while(e.get(a.id))}e.set(a.id,t)}})}function Oi(t){var e=t.name;return!(!e||!e.indexOf(jb))}function Ei(t){return Ub(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Ri(t,e){function i(t,e,i){for(var n=0,o=t.length;n-rS&&trS||t<-rS}function tn(t,e,i,n,o){var a=1-o;return a*a*(a*t+3*o*e)+o*o*(o*n+3*a*i)}function en(t,e,i,n,o){var a=1-o;return 3*(((e-t)*a+2*(i-e)*o)*a+(n-i)*o*o)}function nn(t,e,i,n,o,a){var r=n+3*(e-i)-t,s=3*(i-2*e+t),l=3*(e-t),u=t-o,h=s*s-3*r*l,c=s*l-9*r*u,d=l*l-3*s*u,f=0;if(Ji(h)&&Ji(c))Ji(s)?a[0]=0:(M=-l/s)>=0&&M<=1&&(a[f++]=M);else{var p=c*c-4*h*d;if(Ji(p)){var g=c/h,m=-g/2;(M=-s/r+g)>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m)}else if(p>0){var v=aS(p),y=h*s+1.5*r*(-c+v),x=h*s+1.5*r*(-c-v);(M=(-s-((y=y<0?-oS(-y,uS):oS(y,uS))+(x=x<0?-oS(-x,uS):oS(x,uS))))/(3*r))>=0&&M<=1&&(a[f++]=M)}else{var _=(2*h*s-3*r*c)/(2*aS(h*h*h)),w=Math.acos(_)/3,b=aS(h),S=Math.cos(w),M=(-s-2*b*S)/(3*r),m=(-s+b*(S+lS*Math.sin(w)))/(3*r),I=(-s+b*(S-lS*Math.sin(w)))/(3*r);M>=0&&M<=1&&(a[f++]=M),m>=0&&m<=1&&(a[f++]=m),I>=0&&I<=1&&(a[f++]=I)}}return f}function on(t,e,i,n,o){var a=6*i-12*e+6*t,r=9*e+3*n-3*t-9*i,s=3*e-3*t,l=0;if(Ji(r))Qi(a)&&(c=-s/a)>=0&&c<=1&&(o[l++]=c);else{var u=a*a-4*r*s;if(Ji(u))o[0]=-a/(2*r);else if(u>0){var h=aS(u),c=(-a+h)/(2*r),d=(-a-h)/(2*r);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function an(t,e,i,n,o,a){var r=(e-t)*o+t,s=(i-e)*o+e,l=(n-i)*o+i,u=(s-r)*o+r,h=(l-s)*o+s,c=(h-u)*o+u;a[0]=t,a[1]=r,a[2]=u,a[3]=c,a[4]=c,a[5]=h,a[6]=l,a[7]=n}function rn(t,e,i,n,o,a,r,s,l,u,h){var c,d,f,p,g,m=.005,v=1/0;hS[0]=l,hS[1]=u;for(var y=0;y<1;y+=.05)cS[0]=tn(t,i,o,r,y),cS[1]=tn(e,n,a,s,y),(p=hw(hS,cS))=0&&p=0&&c<=1&&(o[l++]=c);else{var u=r*r-4*a*s;if(Ji(u))(c=-r/(2*a))>=0&&c<=1&&(o[l++]=c);else if(u>0){var h=aS(u),c=(-r+h)/(2*a),d=(-r-h)/(2*a);c>=0&&c<=1&&(o[l++]=c),d>=0&&d<=1&&(o[l++]=d)}}return l}function hn(t,e,i){var n=t+i-2*e;return 0===n?.5:(t-e)/n}function cn(t,e,i,n,o){var a=(e-t)*n+t,r=(i-e)*n+e,s=(r-a)*n+a;o[0]=t,o[1]=a,o[2]=s,o[3]=s,o[4]=r,o[5]=i}function dn(t,e,i,n,o,a,r,s,l){var u,h=.005,c=1/0;hS[0]=r,hS[1]=s;for(var d=0;d<1;d+=.05)cS[0]=sn(t,i,o,d),cS[1]=sn(e,n,a,d),(m=hw(hS,cS))=0&&m1e-4)return s[0]=t-i,s[1]=e-n,l[0]=t+i,void(l[1]=e+n);if(yS[0]=mS(o)*i+t,yS[1]=gS(o)*n+e,xS[0]=mS(a)*i+t,xS[1]=gS(a)*n+e,u(s,yS,xS),h(l,yS,xS),(o%=vS)<0&&(o+=vS),(a%=vS)<0&&(a+=vS),o>a&&!r?a+=vS:oo&&(_S[0]=mS(f)*i+t,_S[1]=gS(f)*n+e,u(s,_S,s),h(l,_S,l))}function yn(t,e,i,n,o,a,r){if(0===o)return!1;var s=o,l=0,u=t;if(r>e+s&&r>n+s||rt+s&&a>i+s||ae+c&&h>n+c&&h>a+c&&h>s+c||ht+c&&u>i+c&&u>o+c&&u>r+c||ue+u&&l>n+u&&l>a+u||lt+u&&s>i+u&&s>o+u||si||h+uo&&(o+=zS);var d=Math.atan2(l,s);return d<0&&(d+=zS),d>=n&&d<=o||d+zS>=n&&d+zS<=o}function Sn(t,e,i,n,o,a){if(a>e&&a>n||ao?r:0}function Mn(t,e){return Math.abs(t-e)e&&u>n&&u>a&&u>s||u1&&In(),c=tn(e,n,a,s,WS[0]),p>1&&(d=tn(e,n,a,s,WS[1]))),2===p?me&&s>n&&s>a||s=0&&u<=1){for(var h=0,c=sn(e,n,a,u),d=0;di||s<-i)return 0;u=Math.sqrt(i*i-s*s);FS[0]=-u,FS[1]=u;var l=Math.abs(n-o);if(l<1e-4)return 0;if(l%VS<1e-4){n=0,o=VS;p=a?1:-1;return r>=FS[0]+t&&r<=FS[1]+t?p:0}if(a){var u=n;n=wn(o),o=wn(u)}else n=wn(n),o=wn(o);n>o&&(o+=VS);for(var h=0,c=0;c<2;c++){var d=FS[c];if(d+t>r){var f=Math.atan2(s,d),p=a?1:-1;f<0&&(f=VS+f),(f>=n&&f<=o||f+VS>=n&&f+VS<=o)&&(f>Math.PI/2&&f<1.5*Math.PI&&(p=-p),h+=p)}}return h}function Cn(t,e,i,n,o){for(var a=0,r=0,s=0,l=0,u=0,h=0;h1&&(i||(a+=Sn(r,s,l,u,n,o))),1===h&&(l=r=t[h],u=s=t[h+1]),c){case BS.M:r=l=t[h++],s=u=t[h++];break;case BS.L:if(i){if(yn(r,s,t[h],t[h+1],e,n,o))return!0}else a+=Sn(r,s,t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.C:if(i){if(xn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=Tn(r,s,t[h++],t[h++],t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.Q:if(i){if(_n(r,s,t[h++],t[h++],t[h],t[h+1],e,n,o))return!0}else a+=An(r,s,t[h++],t[h++],t[h],t[h+1],n,o)||0;r=t[h++],s=t[h++];break;case BS.A:var d=t[h++],f=t[h++],p=t[h++],g=t[h++],m=t[h++],v=t[h++];h+=1;var y=1-t[h++],x=Math.cos(m)*p+d,_=Math.sin(m)*g+f;h>1?a+=Sn(r,s,x,_,n,o):(l=x,u=_);var w=(n-d)*g/p+d;if(i){if(bn(d,f,g,m,m+v,y,e,w,o))return!0}else a+=Dn(d,f,g,m,m+v,y,w,o);r=Math.cos(m+v)*p+d,s=Math.sin(m+v)*g+f;break;case BS.R:l=r=t[h++],u=s=t[h++];var x=l+t[h++],_=u+t[h++];if(i){if(yn(l,u,x,u,e,n,o)||yn(x,u,x,_,e,n,o)||yn(x,_,l,_,e,n,o)||yn(l,_,l,u,e,n,o))return!0}else a+=Sn(x,u,x,_,n,o),a+=Sn(l,_,l,u,n,o);break;case BS.Z:if(i){if(yn(r,s,l,u,e,n,o))return!0}else a+=Sn(r,s,l,u,n,o);r=l,s=u}}return i||Mn(s,u)||(a+=Sn(r,s,l,u,n,o)||0),0!==a}function Ln(t,e,i){return Cn(t,0,!1,e,i)}function kn(t,e,i,n){return Cn(t,e,!0,i,n)}function Pn(t){di.call(this,t),this.path=null}function Nn(t,e,i,n,o,a,r,s,l,u,h){var c=l*(tM/180),d=QS(c)*(t-i)/2+JS(c)*(e-n)/2,f=-1*JS(c)*(t-i)/2+QS(c)*(e-n)/2,p=d*d/(r*r)+f*f/(s*s);p>1&&(r*=$S(p),s*=$S(p));var g=(o===a?-1:1)*$S((r*r*(s*s)-r*r*(f*f)-s*s*(d*d))/(r*r*(f*f)+s*s*(d*d)))||0,m=g*r*f/s,v=g*-s*d/r,y=(t+i)/2+QS(c)*m-JS(c)*v,x=(e+n)/2+JS(c)*m+QS(c)*v,_=nM([1,0],[(d-m)/r,(f-v)/s]),w=[(d-m)/r,(f-v)/s],b=[(-1*d-m)/r,(-1*f-v)/s],S=nM(w,b);iM(w,b)<=-1&&(S=tM),iM(w,b)>=1&&(S=0),0===a&&S>0&&(S-=2*tM),1===a&&S<0&&(S+=2*tM),h.addData(u,y,x,r,s,_,S,c,a)}function On(t){if(!t)return new ES;for(var e,i=0,n=0,o=i,a=n,r=new ES,s=ES.CMD,l=t.match(oM),u=0;u=2){if(o&&"spline"!==o){var a=fM(n,o,i,e.smoothConstraint);t.moveTo(n[0][0],n[0][1]);for(var r=n.length,s=0;s<(i?r:r-1);s++){var l=a[2*s],u=a[2*s+1],h=n[(s+1)%r];t.bezierCurveTo(l[0],l[1],u[0],u[1],h[0],h[1])}}else{"spline"===o&&(n=dM(n,i)),t.moveTo(n[0][0],n[0][1]);for(var s=1,c=n.length;s=0)?(i={textFill:null,textStroke:t.textStroke,textStrokeWidth:t.textStrokeWidth},t.textFill="#fff",null==t.textStroke&&(t.textStroke=a,null==t.textStrokeWidth&&(t.textStrokeWidth=2))):null!=a&&(i={textFill:null},t.textFill=a),i&&(t.insideRollback=i)}}function bo(t){var e=t.insideRollback;e&&(t.textFill=e.textFill,t.textStroke=e.textStroke,t.textStrokeWidth=e.textStrokeWidth,t.insideRollback=null)}function So(t,e){var i=e||e.getModel("textStyle");return P([t.fontStyle||i&&i.getShallow("fontStyle")||"",t.fontWeight||i&&i.getShallow("fontWeight")||"",(t.fontSize||i&&i.getShallow("fontSize")||12)+"px",t.fontFamily||i&&i.getShallow("fontFamily")||"sans-serif"].join(" "))}function Mo(t,e,i,n,o,a){if("function"==typeof o&&(a=o,o=null),n&&n.isAnimationEnabled()){var r=t?"Update":"",s=n.getShallow("animationDuration"+r),l=n.getShallow("animationEasing"+r),u=n.getShallow("animationDelay"+r);"function"==typeof u&&(u=u(o,n.getAnimationDelayParams?n.getAnimationDelayParams(e,o):null)),"function"==typeof s&&(s=s(o)),s>0?e.animateTo(i,s,u||0,l,a,!!a):(e.stopAnimation(),e.attr(i),a&&a())}else e.stopAnimation(),e.attr(i),a&&a()}function Io(t,e,i,n,o){Mo(!0,t,e,i,n,o)}function To(t,e,i,n,o){Mo(!1,t,e,i,n,o)}function Ao(t,e){for(var i=_t([]);t&&t!==e;)bt(i,t.getLocalTransform(),i),t=t.parent;return i}function Do(t,e,i){return e&&!c(e)&&(e=Tw.getLocalTransform(e)),i&&(e=Tt([],e)),Q([],t,e)}function Co(t,e,i){var n=0===e[4]||0===e[5]||0===e[0]?1:Math.abs(2*e[4]/e[0]),o=0===e[4]||0===e[5]||0===e[2]?1:Math.abs(2*e[4]/e[2]),a=["left"===t?-n:"right"===t?n:0,"top"===t?-o:"bottom"===t?o:0];return a=Do(a,e,i),Math.abs(a[0])>Math.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function Lo(t,e,i,n){function o(t){var e={position:F(t.position),rotation:t.rotation};return t.shape&&(e.shape=a({},t.shape)),e}if(t&&e){var r=function(t){var e={};return t.traverse(function(t){!t.isGroup&&t.anid&&(e[t.anid]=t)}),e}(t);e.traverse(function(t){if(!t.isGroup&&t.anid){var e=r[t.anid];if(e){var n=o(t);t.attr(o(e)),Io(t,n,i,t.dataIndex)}}})}}function ko(t,e){return f(t,function(t){var i=t[0];i=LM(i,e.x),i=kM(i,e.x+e.width);var n=t[1];return n=LM(n,e.y),n=kM(n,e.y+e.height),[i,n]})}function Po(t,e,i){var n=(e=a({rectHover:!0},e)).style={strokeNoScale:!0};if(i=i||{x:-1,y:-1,width:2,height:2},t)return 0===t.indexOf("image://")?(n.image=t.slice(8),r(n,i),new fi(e)):Xn(t.replace("path://",""),e,i,"center")}function No(t,e,i){this.parentModel=e,this.ecModel=i,this.option=t}function Oo(t,e,i){for(var n=0;n0){if(t<=e[0])return i[0];if(t>=e[1])return i[1]}else{if(t>=e[0])return i[0];if(t<=e[1])return i[1]}else{if(t===e[0])return i[0];if(t===e[1])return i[1]}return(t-e[0])/o*a+i[0]}function Vo(t,e){switch(t){case"center":case"middle":t="50%";break;case"left":case"top":t="0%";break;case"right":case"bottom":t="100%"}return"string"==typeof t?zo(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Go(t,e,i){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),i?t:+t}function Fo(t){return t.sort(function(t,e){return t-e}),t}function Wo(t){if(t=+t,isNaN(t))return 0;for(var e=1,i=0;Math.round(t*e)/e!==t;)e*=10,i++;return i}function Ho(t){var e=t.toString(),i=e.indexOf("e");if(i>0){var n=+e.slice(i+1);return n<0?-n:0}var o=e.indexOf(".");return o<0?0:e.length-1-o}function Zo(t,e){var i=Math.log,n=Math.LN10,o=Math.floor(i(t[1]-t[0])/n),a=Math.round(i(Math.abs(e[1]-e[0]))/n),r=Math.min(Math.max(-o+a,0),20);return isFinite(r)?r:20}function Uo(t,e,i){if(!t[e])return 0;var n=p(t,function(t,e){return t+(isNaN(e)?0:e)},0);if(0===n)return 0;for(var o=Math.pow(10,i),a=f(t,function(t){return(isNaN(t)?0:t)/n*o*100}),r=100*o,s=f(a,function(t){return Math.floor(t)}),l=p(s,function(t,e){return t+e},0),u=f(a,function(t,e){return t-s[e]});lh&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/o}function Xo(t){var e=2*Math.PI;return(t%e+e)%e}function jo(t){return t>-UM&&t=-20?+t.toFixed(n<0?-n:0):t}function Jo(t){function e(t,i,n){return t.interval[n]=0}function ta(t){return isNaN(t)?"-":(t=(t+"").split("."))[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function ea(t,e){return t=(t||"").toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()}),e&&t&&(t=t.charAt(0).toUpperCase()+t.slice(1)),t}function ia(t){return null==t?"":(t+"").replace(KM,function(t,e){return $M[e]})}function na(t,e,i){y(e)||(e=[e]);var n=e.length;if(!n)return"";for(var o=e[0].$vars||[],a=0;a':'':{renderMode:o,content:"{marker"+a+"|} ",style:{color:i}}:""}function ra(t,e){return t+="","0000".substr(0,e-t.length)+t}function sa(t,e,i){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var n=Yo(e),o=i?"UTC":"",a=n["get"+o+"FullYear"](),r=n["get"+o+"Month"]()+1,s=n["get"+o+"Date"](),l=n["get"+o+"Hours"](),u=n["get"+o+"Minutes"](),h=n["get"+o+"Seconds"](),c=n["get"+o+"Milliseconds"]();return t=t.replace("MM",ra(r,2)).replace("M",r).replace("yyyy",a).replace("yy",a%100).replace("dd",ra(s,2)).replace("d",s).replace("hh",ra(l,2)).replace("h",l).replace("mm",ra(u,2)).replace("m",u).replace("ss",ra(h,2)).replace("s",h).replace("SSS",ra(c,3))}function la(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}function ua(t,e,i,n,o){var a=0,r=0;null==n&&(n=1/0),null==o&&(o=1/0);var s=0;e.eachChild(function(l,u){var h,c,d=l.position,f=l.getBoundingRect(),p=e.childAt(u+1),g=p&&p.getBoundingRect();if("horizontal"===t){var m=f.width+(g?-g.x+f.x:0);(h=a+m)>n||l.newline?(a=0,h=m,r+=s+i,s=f.height):s=Math.max(s,f.height)}else{var v=f.height+(g?-g.y+f.y:0);(c=r+v)>o||l.newline?(a+=s+i,r=0,c=v,s=f.width):s=Math.max(s,f.width)}l.newline||(d[0]=a,d[1]=r,"horizontal"===t?a=h+i:r=c+i)})}function ha(t,e,i){var n=e.width,o=e.height,a=Vo(t.x,n),r=Vo(t.y,o),s=Vo(t.x2,n),l=Vo(t.y2,o);return(isNaN(a)||isNaN(parseFloat(t.x)))&&(a=0),(isNaN(s)||isNaN(parseFloat(t.x2)))&&(s=n),(isNaN(r)||isNaN(parseFloat(t.y)))&&(r=0),(isNaN(l)||isNaN(parseFloat(t.y2)))&&(l=o),i=qM(i||0),{width:Math.max(s-a-i[1]-i[3],0),height:Math.max(l-r-i[0]-i[2],0)}}function ca(t,e,i){i=qM(i||0);var n=e.width,o=e.height,a=Vo(t.left,n),r=Vo(t.top,o),s=Vo(t.right,n),l=Vo(t.bottom,o),u=Vo(t.width,n),h=Vo(t.height,o),c=i[2]+i[0],d=i[1]+i[3],f=t.aspect;switch(isNaN(u)&&(u=n-s-d-a),isNaN(h)&&(h=o-l-c-r),null!=f&&(isNaN(u)&&isNaN(h)&&(f>n/o?u=.8*n:h=.8*o),isNaN(u)&&(u=f*h),isNaN(h)&&(h=u/f)),isNaN(a)&&(a=n-s-u-d),isNaN(r)&&(r=o-l-h-c),t.left||t.right){case"center":a=n/2-u/2-i[3];break;case"right":a=n-u-d}switch(t.top||t.bottom){case"middle":case"center":r=o/2-h/2-i[0];break;case"bottom":r=o-h-c}a=a||0,r=r||0,isNaN(u)&&(u=n-d-a-(s||0)),isNaN(h)&&(h=o-c-r-(l||0));var p=new de(a+i[3],r+i[0],u,h);return p.margin=i,p}function da(t,e,i,n,o){var a=!o||!o.hv||o.hv[0],s=!o||!o.hv||o.hv[1],l=o&&o.boundingMode||"all";if(a||s){var u;if("raw"===l)u="group"===t.type?new de(0,0,+e.width||0,+e.height||0):t.getBoundingRect();else if(u=t.getBoundingRect(),t.needLocalTransform()){var h=t.getLocalTransform();(u=u.clone()).applyTransform(h)}e=ca(r({width:u.width,height:u.height},e),i,n);var c=t.position,d=a?e.x-u.x:0,f=s?e.y-u.y:0;t.attr("position","raw"===l?[d,f]:[c[0]+d,c[1]+f])}}function fa(t,e){return null!=t[oI[e][0]]||null!=t[oI[e][1]]&&null!=t[oI[e][2]]}function pa(t,e,i){function n(i,n){var r={},l=0,u={},h=0;if(iI(i,function(e){u[e]=t[e]}),iI(i,function(t){o(e,t)&&(r[t]=u[t]=e[t]),a(r,t)&&l++,a(u,t)&&h++}),s[n])return a(e,i[1])?u[i[2]]=null:a(e,i[2])&&(u[i[1]]=null),u;if(2!==h&&l){if(l>=2)return r;for(var c=0;ce)return t[n];return t[i-1]}function ya(t){var e=t.get("coordinateSystem"),i={coordSysName:e,coordSysDims:[],axisMap:R(),categoryAxisMap:R()},n=fI[e];if(n)return n(t,i,i.axisMap,i.categoryAxisMap),i}function xa(t){return"category"===t.get("type")}function _a(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===vI?{}:[]),this.sourceFormat=t.sourceFormat||yI,this.seriesLayoutBy=t.seriesLayoutBy||_I,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&R(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}function wa(t){var e=t.option.source,i=yI;if(S(e))i=xI;else if(y(e)){0===e.length&&(i=gI);for(var n=0,o=e.length;n=e:"max"===i?t<=e:t===e}function Xa(t,e){return t.join(",")===e.join(",")}function ja(t,e){AI(e=e||{},function(e,i){if(null!=e){var n=t[i];if(lI.hasClass(i)){e=Di(e);var o=Pi(n=Di(n),e);t[i]=CI(o,function(t){return t.option&&t.exist?LI(t.exist,t.option,!0):t.exist||t.option})}else t[i]=LI(n,e,!0)}})}function Ya(t){var e=t&&t.itemStyle;if(e)for(var i=0,o=OI.length;i=0;p--){var g=t[p];if(s||(d=g.data.rawIndexOf(g.stackedByDimension,c)),d>=0){var m=g.data.getByRawIndex(g.stackResultDimension,d);if(h>=0&&m>0||h<=0&&m<0){h+=m,f=m;break}}}return n[0]=h,n[1]=f,n});r.hostModel.setData(l),e.data=l})}function rr(t,e){_a.isInstance(t)||(t=_a.seriesDataToSource(t)),this._source=t;var i=this._data=t.data,n=t.sourceFormat;n===xI&&(this._offset=0,this._dimSize=e,this._data=i),a(this,GI[n===gI?n+"_"+t.seriesLayoutBy:n])}function sr(){return this._data.length}function lr(t){return this._data[t]}function ur(t){for(var e=0;ee.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Mr(t,e){d(t.CHANGABLE_METHODS,function(i){t.wrapMethod(i,v(Ir,e))})}function Ir(t){var e=Tr(t);e&&e.setOutputEnd(this.count())}function Tr(t){var e=(t.ecModel||{}).scheduler,i=e&&e.getPipeline(t.uid);if(i){var n=i.currentTask;if(n){var o=n.agentStubMap;o&&(n=o.get(t.uid))}return n}}function Ar(){this.group=new tb,this.uid=Ro("viewChart"),this.renderTask=gr({plan:Lr,reset:kr}),this.renderTask.context={view:this}}function Dr(t,e){if(t&&(t.trigger(e),"group"===t.type))for(var i=0;i=0?n():c=setTimeout(n,-a),u=o};return d.clear=function(){c&&(clearTimeout(c),c=null)},d.debounceNextCall=function(t){l=t},d}function Nr(t,e,i,n){var o=t[e];if(o){var a=o[iT]||o,r=o[oT];if(o[nT]!==i||r!==n){if(null==i||!n)return t[e]=a;(o=t[e]=Pr(a,i,"debounce"===n))[iT]=a,o[oT]=n,o[nT]=i}return o}}function Or(t,e){var i=t[e];i&&i[iT]&&(t[e]=i[iT])}function Er(t,e,i,n){this.ecInstance=t,this.api=e,this.unfinished;var i=this._dataProcessorHandlers=i.slice(),n=this._visualHandlers=n.slice();this._allHandlers=i.concat(n),this._stageTaskMap=R()}function Rr(t,e,i,n,o){function a(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}o=o||{};var r;d(e,function(e,s){if(!o.visualType||o.visualType===e.visualType){var l=t._stageTaskMap.get(e.uid),u=l.seriesTaskMap,h=l.overallTask;if(h){var c,d=h.agentStubMap;d.each(function(t){a(o,t)&&(t.dirty(),c=!0)}),c&&h.dirty(),hT(h,n);var f=t.getPerformArgs(h,o.block);d.each(function(t){t.perform(f)}),r|=h.perform(f)}else u&&u.each(function(s,l){a(o,s)&&s.dirty();var u=t.getPerformArgs(s,o.block);u.skip=!e.performRawSeries&&i.isSeriesFiltered(s.context.model),hT(s,n),r|=s.perform(u)})}}),t.unfinished|=r}function zr(t,e,i,n,o){function a(i){var a=i.uid,s=r.get(a)||r.set(a,gr({plan:Hr,reset:Zr,count:Xr}));s.context={model:i,ecModel:n,api:o,useClearVisual:e.isVisual&&!e.isLayout,plan:e.plan,reset:e.reset,scheduler:t},jr(t,i,s)}var r=i.seriesTaskMap||(i.seriesTaskMap=R()),s=e.seriesType,l=e.getTargetSeries;e.createOnAllSeries?n.eachRawSeries(a):s?n.eachRawSeriesByType(s,a):l&&l(n,o).each(a);var u=t._pipelineMap;r.each(function(t,e){u.get(e)||(t.dispose(),r.removeKey(e))})}function Br(t,e,i,n,o){function a(e){var i=e.uid,n=s.get(i);n||(n=s.set(i,gr({reset:Gr,onDirty:Wr})),r.dirty()),n.context={model:e,overallProgress:h,modifyOutputEnd:c},n.agent=r,n.__block=h,jr(t,e,n)}var r=i.overallTask=i.overallTask||gr({reset:Vr});r.context={ecModel:n,api:o,overallReset:e.overallReset,scheduler:t};var s=r.agentStubMap=r.agentStubMap||R(),l=e.seriesType,u=e.getTargetSeries,h=!0,c=e.modifyOutputEnd;l?n.eachRawSeriesByType(l,a):u?u(n,o).each(a):(h=!1,d(n.getSeries(),a));var f=t._pipelineMap;s.each(function(t,e){f.get(e)||(t.dispose(),r.dirty(),s.removeKey(e))})}function Vr(t){t.overallReset(t.ecModel,t.api,t.payload)}function Gr(t,e){return t.overallProgress&&Fr}function Fr(){this.agent.dirty(),this.getDownstream().dirty()}function Wr(){this.agent&&this.agent.dirty()}function Hr(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Zr(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Di(t.reset(t.model,t.ecModel,t.api,t.payload));return e.length>1?f(e,function(t,e){return Ur(e)}):cT}function Ur(t){return function(e,i){var n=i.data,o=i.resetDefines[t];if(o&&o.dataEach)for(var a=e.start;a0?parseInt(n,10)/100:n?parseFloat(n):0;var o=i.getAttribute("stop-color")||"#000000";e.addColorStop(n,o)}i=i.nextSibling}}function Qr(t,e){t&&t.__inheritedStyle&&(e.__inheritedStyle||(e.__inheritedStyle={}),r(e.__inheritedStyle,t.__inheritedStyle))}function ts(t){for(var e=P(t).split(_T),i=[],n=0;n0;a-=2){var r=o[a],s=o[a-1];switch(n=n||xt(),s){case"translate":r=P(r).split(_T),St(n,n,[parseFloat(r[0]),parseFloat(r[1]||0)]);break;case"scale":r=P(r).split(_T),It(n,n,[parseFloat(r[0]),parseFloat(r[1]||r[0])]);break;case"rotate":r=P(r).split(_T),Mt(n,n,parseFloat(r[0]));break;case"skew":r=P(r).split(_T),console.warn("Skew transform is not supported yet");break;case"matrix":r=P(r).split(_T);n[0]=parseFloat(r[0]),n[1]=parseFloat(r[1]),n[2]=parseFloat(r[2]),n[3]=parseFloat(r[3]),n[4]=parseFloat(r[4]),n[5]=parseFloat(r[5])}}e.setLocalTransform(n)}}function os(t){var e=t.getAttribute("style"),i={};if(!e)return i;var n={};TT.lastIndex=0;for(var o;null!=(o=TT.exec(e));)n[o[1]]=o[2];for(var a in ST)ST.hasOwnProperty(a)&&null!=n[a]&&(i[ST[a]]=n[a]);return i}function as(t,e,i){var n=e/t.width,o=i/t.height,a=Math.min(n,o);return{scale:[a,a],position:[-(t.x+t.width/2)*a+e/2,-(t.y+t.height/2)*a+i/2]}}function rs(t,e){return(new $r).parse(t,e)}function ss(t){return function(e,i,n){e=e&&e.toLowerCase(),fw.prototype[t].call(this,e,i,n)}}function ls(){fw.call(this)}function us(t,e,n){function o(t,e){return t.__prio-e.__prio}n=n||{},"string"==typeof e&&(e=JT[e]),this.id,this.group,this._dom=t;var a=this._zr=Ii(t,{renderer:n.renderer||"canvas",devicePixelRatio:n.devicePixelRatio,width:n.width,height:n.height});this._throttledZrFlush=Pr(m(a.flush,a),17),(e=i(e))&&BI(e,!0),this._theme=e,this._chartsViews=[],this._chartsMap={},this._componentsViews=[],this._componentsMap={},this._coordSysMgr=new Fa;var r=this._api=As(this);_e($T,o),_e(YT,o),this._scheduler=new Er(this,r,YT,$T),fw.call(this,this._ecEventProcessor=new Ds),this._messageCenter=new ls,this._initEvents(),this.resize=m(this.resize,this),this._pendingActions=[],a.animation.on("frame",this._onframe,this),vs(a,this),N(this)}function hs(t,e,i){var n,o=this._model,a=this._coordSysMgr.getCoordinateSystems();e=Vi(o,e);for(var r=0;re.get("hoverLayerThreshold")&&!U_.node&&i.traverse(function(t){t.isGroup||(t.useHoverLayer=!0)})}function Is(t,e){var i=t.get("blendMode")||null;e.group.traverse(function(t){t.isGroup||t.style.blend!==i&&t.setStyle("blend",i),t.eachPendingDisplayable&&t.eachPendingDisplayable(function(t){t.setStyle("blend",i)})})}function Ts(t,e){var i=t.get("z"),n=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=n&&(t.zlevel=n))})}function As(t){var e=t._coordSysMgr;return a(new Ga(t),{getCoordinateSystems:m(e.getCoordinateSystems,e),getComponentByElement:function(e){for(;e;){var i=e.__ecComponentInfo;if(null!=i)return t._model.getComponent(i.mainType,i.index);e=e.parent}}})}function Ds(){this.eventInfo}function Cs(t){function e(t,e){for(var n=0;n65535?dA:pA}function Js(t){var e=t.constructor;return e===Array?t.slice():new e(t)}function Qs(t,e){d(gA.concat(e.__wrappedMethods||[]),function(i){e.hasOwnProperty(i)&&(t[i]=e[i])}),t.__wrappedMethods=e.__wrappedMethods,d(mA,function(n){t[n]=i(e[n])}),t._calculationInfo=a(e._calculationInfo)}function tl(t,e,i,n,o){var a=cA[e.type],r=n-1,s=e.name,l=t[s][r];if(l&&l.length=0?this._indices[t]:-1}function al(t,e){var i=t._idList[e];return null==i&&(i=il(t,t._idDimIdx,e)),null==i&&(i=hA+e),i}function rl(t){return y(t)||(t=[t]),t}function sl(t,e){var i=t.dimensions,n=new vA(f(i,t.getDimensionInfo,t),t.hostModel);Qs(n,t);for(var o=n._storage={},a=t._storage,r=0;r=0?(o[s]=ll(a[s]),n._rawExtent[s]=ul(),n._extent[s]=null):o[s]=a[s])}return n}function ll(t){for(var e=new Array(t.length),i=0;in&&(r=o.interval=n);var s=o.intervalPrecision=Ml(r);return Tl(o.niceTickExtent=[MA(Math.ceil(t[0]/r)*r,s),MA(Math.floor(t[1]/r)*r,s)],t),o}function Ml(t){return Ho(t)+2}function Il(t,e,i){t[e]=Math.max(Math.min(t[e],i[1]),i[0])}function Tl(t,e){!isFinite(t[0])&&(t[0]=e[0]),!isFinite(t[1])&&(t[1]=e[1]),Il(t,0,e),Il(t,1,e),t[0]>t[1]&&(t[0]=t[1])}function Al(t,e,i,n){var o=[];if(!t)return o;e[0]1e4)return[];return e[1]>(o.length?o[o.length-1]:i[1])&&o.push(e[1]),o}function Dl(t){return t.get("stack")||AA+t.seriesIndex}function Cl(t){return t.dim+t.index}function Ll(t){var e=[],i=t.axis;if("category"===i.type){for(var n=i.getBandWidth(),o=0;o=0?"p":"n",b=m;p&&(o[r][_]||(o[r][_]={p:m,n:m}),b=o[r][_][w]);var S,M,I,T;if(g)S=b,M=(A=i.dataToPoint([x,_]))[1]+l,I=A[0]-m,T=u,Math.abs(I)a[1]?(n=a[1],o=a[0]):(n=a[0],o=a[1]);var r=e.toGlobalCoord(e.dataToCoord(0));return ro&&(r=o),r}function Vl(t,e){return VA(t,BA(e))}function Gl(t,e){var i,n,o,a=t.type,r=e.getMin(),s=e.getMax(),l=null!=r,u=null!=s,h=t.getExtent();"ordinal"===a?i=e.getCategories().length:(y(n=e.get("boundaryGap"))||(n=[n||0,n||0]),"boolean"==typeof n[0]&&(n=[0,0]),n[0]=Vo(n[0],1),n[1]=Vo(n[1],1),o=h[1]-h[0]||Math.abs(h[0])),null==r&&(r="ordinal"===a?i?0:NaN:h[0]-n[0]*o),null==s&&(s="ordinal"===a?i?i-1:NaN:h[1]+n[1]*o),"dataMin"===r?r=h[0]:"function"==typeof r&&(r=r({min:h[0],max:h[1]})),"dataMax"===s?s=h[1]:"function"==typeof s&&(s=s({min:h[0],max:h[1]})),(null==r||!isFinite(r))&&(r=NaN),(null==s||!isFinite(s))&&(s=NaN),t.setBlank(I(r)||I(s)||"ordinal"===a&&!t.getOrdinalMeta().categories.length),e.getNeedCrossZero()&&(r>0&&s>0&&!l&&(r=0),r<0&&s<0&&!u&&(s=0));var c=e.ecModel;if(c&&"time"===a){var f,p=kl("bar",c);if(d(p,function(t){f|=t.getBaseAxis()===e.axis}),f){var g=Pl(p),m=Fl(r,s,e,g);r=m.min,s=m.max}}return[r,s]}function Fl(t,e,i,n){var o=i.axis.getExtent(),a=o[1]-o[0],r=Ol(n,i.axis);if(void 0===r)return{min:t,max:e};var s=1/0;d(r,function(t){s=Math.min(t.offset,s)});var l=-1/0;d(r,function(t){l=Math.max(t.offset+t.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,h=e-t,c=h/(1-(s+l)/a)-h;return e+=c*(l/u),t-=c*(s/u),{min:t,max:e}}function Wl(t,e){var i=Gl(t,e),n=null!=e.getMin(),o=null!=e.getMax(),a=e.get("splitNumber");"log"===t.type&&(t.base=e.get("logBase"));var r=t.type;t.setExtent(i[0],i[1]),t.niceExtent({splitNumber:a,fixMin:n,fixMax:o,minInterval:"interval"===r||"time"===r?e.get("minInterval"):null,maxInterval:"interval"===r||"time"===r?e.get("maxInterval"):null});var s=e.get("interval");null!=s&&t.setInterval&&t.setInterval(s)}function Hl(t,e){if(e=e||t.get("type"))switch(e){case"category":return new SA(t.getOrdinalMeta?t.getOrdinalMeta():t.getCategories(),[1/0,-1/0]);case"value":return new TA;default:return(xl.getClass(e)||TA).create(t)}}function Zl(t){var e=t.scale.getExtent(),i=e[0],n=e[1];return!(i>0&&n>0||i<0&&n<0)}function Ul(t){var e=t.getLabelModel().get("formatter"),i="category"===t.type?t.scale.getExtent()[0]:null;return"string"==typeof e?e=function(e){return function(i){return i=t.scale.getLabel(i),e.replace("{value}",null!=i?i:"")}}(e):"function"==typeof e?function(n,o){return null!=i&&(o=n-i),e(Xl(t,n),o)}:function(e){return t.scale.getLabel(e)}}function Xl(t,e){return"category"===t.type?t.scale.getLabel(e):e}function jl(t){var e=t.model,i=t.scale;if(e.get("axisLabel.show")&&!i.isBlank()){var n,o,a="category"===t.type,r=i.getExtent();o=a?i.count():(n=i.getTicks()).length;var s,l=t.getLabelModel(),u=Ul(t),h=1;o>40&&(h=Math.ceil(o/40));for(var c=0;c>1^-(1&s),l=l>>1^-(1&l),o=s+=o,a=l+=a,n.push([s/i,l/i])}return n}function ou(t){return"category"===t.type?ru(t):uu(t)}function au(t,e){return"category"===t.type?lu(t,e):{ticks:t.scale.getTicks()}}function ru(t){var e=t.getLabelModel(),i=su(t,e);return!e.get("show")||t.scale.isBlank()?{labels:[],labelCategoryInterval:i.labelCategoryInterval}:i}function su(t,e){var i=hu(t,"labels"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;return a=x(n)?vu(t,n):mu(t,r="auto"===n?fu(t):n),du(i,n,{labels:a,labelCategoryInterval:r})}function lu(t,e){var i=hu(t,"ticks"),n=ql(e),o=cu(i,n);if(o)return o;var a,r;if(e.get("show")&&!t.scale.isBlank()||(a=[]),x(n))a=vu(t,n,!0);else if("auto"===n){var s=su(t,t.getLabelModel());r=s.labelCategoryInterval,a=f(s.labels,function(t){return t.tickValue})}else a=mu(t,r=n,!0);return du(i,n,{ticks:a,tickCategoryInterval:r})}function uu(t){var e=t.scale.getTicks(),i=Ul(t);return{labels:f(e,function(e,n){return{formattedLabel:i(e,n),rawLabel:t.scale.getLabel(e),tickValue:e}})}}function hu(t,e){return nD(t)[e]||(nD(t)[e]=[])}function cu(t,e){for(var i=0;i40&&(s=Math.max(1,Math.floor(r/40)));for(var l=a[0],u=t.dataToCoord(l+1)-t.dataToCoord(l),h=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),d=0,f=0;l<=a[1];l+=s){var p=0,g=0,m=ke(i(l),e.font,"center","top");p=1.3*m.width,g=1.3*m.height,d=Math.max(d,p,7),f=Math.max(f,g,7)}var v=d/h,y=f/c;isNaN(v)&&(v=1/0),isNaN(y)&&(y=1/0);var x=Math.max(0,Math.floor(Math.min(v,y))),_=nD(t.model),w=_.lastAutoInterval,b=_.lastTickCount;return null!=w&&null!=b&&Math.abs(w-x)<=1&&Math.abs(b-r)<=1&&w>x?x=w:(_.lastTickCount=r,_.lastAutoInterval=x),x}function gu(t){var e=t.getLabelModel();return{axisRotate:t.getRotate?t.getRotate():t.isHorizontal&&!t.isHorizontal()?90:0,labelRotate:e.get("rotate")||0,font:e.getFont()}}function mu(t,e,i){function n(t){l.push(i?t:{formattedLabel:o(t),rawLabel:a.getLabel(t),tickValue:t})}var o=Ul(t),a=t.scale,r=a.getExtent(),s=t.getLabelModel(),l=[],u=Math.max((e||0)+1,1),h=r[0],c=a.count();0!==h&&u>1&&c/u>2&&(h=Math.round(Math.ceil(h/u)*u));var d=Kl(t),f=s.get("showMinLabel")||d,p=s.get("showMaxLabel")||d;f&&h!==r[0]&&n(r[0]);for(var g=h;g<=r[1];g+=u)n(g);return p&&g!==r[1]&&n(r[1]),l}function vu(t,e,i){var n=t.scale,o=Ul(t),a=[];return d(n.getTicks(),function(t){var r=n.getLabel(t);e(t,r)&&a.push(i?t:{formattedLabel:o(t),rawLabel:r,tickValue:t})}),a}function yu(t,e){var i=(t[1]-t[0])/e/2;t[0]+=i,t[1]-=i}function xu(t,e,i,n,o){function a(t,e){return h?t>e:t0&&(t.coord-=u/(2*(e+1)))}),s={coord:e[r-1].coord+u},e.push(s)}var h=l[0]>l[1];a(e[0].coord,l[0])&&(o?e[0].coord=l[0]:e.shift()),o&&a(l[0],e[0].coord)&&e.unshift({coord:l[0]}),a(l[1],s.coord)&&(o?s.coord=l[1]:e.pop()),o&&a(s.coord,l[1])&&e.push({coord:l[1]})}}function _u(t,e){var i=t.mapDimension("defaultedLabel",!0),n=i.length;if(1===n)return fr(t,e,i[0]);if(n){for(var o=[],a=0;a0?i=n[0]:n[1]<0&&(i=n[1]),i}function Ou(t,e,i,n){var o=NaN;t.stacked&&(o=i.get(i.getCalculationInfo("stackedOverDimension"),n)),isNaN(o)&&(o=t.valueStart);var a=t.baseDataOffset,r=[];return r[a]=i.get(t.baseDim,n),r[1-a]=o,e.dataToPoint(r)}function Eu(t,e){var i=[];return e.diff(t).add(function(t){i.push({cmd:"+",idx:t})}).update(function(t,e){i.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){i.push({cmd:"-",idx:t})}).execute(),i}function Ru(t){return isNaN(t[0])||isNaN(t[1])}function zu(t,e,i,n,o,a,r,s,l,u,h){return"none"!==u&&u?Bu.apply(this,arguments):Vu.apply(this,arguments)}function Bu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]);else if(l>0){var g=e[c],m="y"===u?1:0,v=(p[m]-g[m])*l;_D(bD,g),bD[m]=g[m]+v,_D(SD,p),SD[m]=p[m]-v,t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1])}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Vu(t,e,i,n,o,a,r,s,l,u,h){for(var c=0,d=i,f=0;f=o||d<0)break;if(Ru(p)){if(h){d+=a;continue}break}if(d===i)t[a>0?"moveTo":"lineTo"](p[0],p[1]),_D(bD,p);else if(l>0){var g=d+a,m=e[g];if(h)for(;m&&Ru(e[g]);)m=e[g+=a];var v=.5,y=e[c];if(!(m=e[g])||Ru(m))_D(SD,p);else{Ru(m)&&!h&&(m=p),U(wD,m,y);var x,_;if("x"===u||"y"===u){var w="x"===u?0:1;x=Math.abs(p[w]-y[w]),_=Math.abs(p[w]-m[w])}else x=uw(p,y),_=uw(p,m);xD(SD,p,wD,-l*(1-(v=_/(_+x))))}vD(bD,bD,s),yD(bD,bD,r),vD(SD,SD,s),yD(SD,SD,r),t.bezierCurveTo(bD[0],bD[1],SD[0],SD[1],p[0],p[1]),xD(bD,p,wD,l*v)}else t.lineTo(p[0],p[1]);c=d,d+=a}return f}function Gu(t,e){var i=[1/0,1/0],n=[-1/0,-1/0];if(e)for(var o=0;on[0]&&(n[0]=a[0]),a[1]>n[1]&&(n[1]=a[1])}return{min:e?i:n,max:e?n:i}}function Fu(t,e){if(t.length===e.length){for(var i=0;ie[0]?1:-1;e[0]+=n*i,e[1]-=n*i}return e}function Zu(t,e,i){if(!i.valueDim)return[];for(var n=[],o=0,a=e.count();oa[1]&&a.reverse();var r=o.getExtent(),s=Math.PI/180;i&&(a[0]-=.5,a[1]+=.5);var l=new hM({shape:{cx:Go(t.cx,1),cy:Go(t.cy,1),r0:Go(a[0],1),r:Go(a[1],1),startAngle:-r[0]*s,endAngle:-r[1]*s,clockwise:o.inverse}});return e&&(l.shape.endAngle=-r[0]*s,To(l,{shape:{endAngle:-r[1]*s}},n)),l}function ju(t,e,i,n){return"polar"===t.type?Xu(t,e,i,n):Uu(t,e,i,n)}function Yu(t,e,i){for(var n=e.getBaseAxis(),o="x"===n.dim||"radius"===n.dim?0:1,a=[],r=0;r=0;a--){var r=i[a].dimension,s=t.dimensions[r],l=t.getDimensionInfo(s);if("x"===(n=l&&l.coordDim)||"y"===n){o=i[a];break}}if(o){var u=e.getAxis(n),h=f(o.stops,function(t){return{coord:u.toGlobalCoord(u.dataToCoord(t.value)),color:t.color}}),c=h.length,p=o.outerColors.slice();c&&h[0].coord>h[c-1].coord&&(h.reverse(),p.reverse());var g=h[0].coord-10,m=h[c-1].coord+10,v=m-g;if(v<.001)return"transparent";d(h,function(t){t.offset=(t.coord-g)/v}),h.push({offset:c?h[c-1].offset:.5,color:p[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:p[0]||"transparent"});var y=new TM(0,0,0,0,h,!0);return y[n]=g,y[n+"2"]=m,y}}}function Ku(t,e,i){var n=t.get("showAllSymbol"),o="auto"===n;if(!n||o){var a=i.getAxesByScale("ordinal")[0];if(a&&(!o||!$u(a,e))){var r=e.mapDimension(a.dim),s={};return d(a.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(r,t))}}}}function $u(t,e){var i=t.getExtent(),n=Math.abs(i[1]-i[0])/t.scale.count();isNaN(n)&&(n=0);for(var o=e.count(),a=Math.max(1,Math.round(o/5)),r=0;rn)return!1;return!0}function Ju(t){return this._axes[t]}function Qu(t){LD.call(this,t)}function th(t,e){return e.type||(e.data?"category":"value")}function eh(t,e,i){return t.getCoordSysModel()===e}function ih(t,e,i){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,i),this.model=t}function nh(t,e,i,n){function o(t){return t.dim+"_"+t.index}i.getAxesOnZeroOf=function(){return a?[a]:[]};var a,r=t[e],s=i.model,l=s.get("axisLine.onZero"),u=s.get("axisLine.onZeroAxisIndex");if(l){if(null!=u)oh(r[u])&&(a=r[u]);else for(var h in r)if(r.hasOwnProperty(h)&&oh(r[h])&&!n[o(r[h])]){a=r[h];break}a&&(n[o(a)]=!0)}}function oh(t){return t&&"category"!==t.type&&"time"!==t.type&&Zl(t)}function ah(t,e){var i=t.getExtent(),n=i[0]+i[1];t.toGlobalCoord="x"===t.dim?function(t){return t+e}:function(t){return n-t+e},t.toLocalCoord="x"===t.dim?function(t){return t-e}:function(t){return n-t+e}}function rh(t,e){return f(VD,function(e){return t.getReferringComponents(e)[0]})}function sh(t){return"cartesian2d"===t.get("coordinateSystem")}function lh(t){var e={componentType:t.mainType,componentIndex:t.componentIndex};return e[t.mainType+"Index"]=t.componentIndex,e}function uh(t,e,i,n){var o,a,r=Xo(i-t.rotation),s=n[0]>n[1],l="start"===e&&!s||"start"!==e&&s;return jo(r-GD/2)?(a=l?"bottom":"top",o="center"):jo(r-1.5*GD)?(a=l?"top":"bottom",o="center"):(a="middle",o=r<1.5*GD&&r>GD/2?l?"left":"right":l?"right":"left"),{rotation:r,textAlign:o,textVerticalAlign:a}}function hh(t){var e=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||e&&e.show)}function ch(t,e,i){if(!Kl(t.axis)){var n=t.get("axisLabel.showMinLabel"),o=t.get("axisLabel.showMaxLabel");e=e||[],i=i||[];var a=e[0],r=e[1],s=e[e.length-1],l=e[e.length-2],u=i[0],h=i[1],c=i[i.length-1],d=i[i.length-2];!1===n?(dh(a),dh(u)):fh(a,r)&&(n?(dh(r),dh(h)):(dh(a),dh(u))),!1===o?(dh(s),dh(c)):fh(l,s)&&(o?(dh(l),dh(d)):(dh(s),dh(c)))}}function dh(t){t&&(t.ignore=!0)}function fh(t,e,i){var n=t&&t.getBoundingRect().clone(),o=e&&e.getBoundingRect().clone();if(n&&o){var a=_t([]);return Mt(a,a,-t.rotation),n.applyTransform(bt([],a,t.getLocalTransform())),o.applyTransform(bt([],a,e.getLocalTransform())),n.intersect(o)}}function ph(t){return"middle"===t||"center"===t}function gh(t,e,i){var n=e.axis;if(e.get("axisTick.show")&&!n.scale.isBlank()){for(var o=e.getModel("axisTick"),a=o.getModel("lineStyle"),s=o.get("length"),l=n.getTicksCoords(),u=[],h=[],c=t._transform,d=[],f=0;f=0||t===e}function Sh(t){var e=Mh(t);if(e){var i=e.axisPointerModel,n=e.axis.scale,o=i.option,a=i.get("status"),r=i.get("value");null!=r&&(r=n.parse(r));var s=Th(i);null==a&&(o.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(null==r||r>l[1])&&(r=l[1]),r0?"bottom":"top":o.width>0?"left":"right";l||kh(t.style,d,n,u,a,i,p),fo(t,d)}function Rh(t,e){var i=t.get(tC)||0;return Math.min(i,Math.abs(e.width),Math.abs(e.height))}function zh(t,e,i){var n=t.getData(),o=[],a=n.getLayout("valueAxisHorizontal")?1:0;o[1-a]=n.getLayout("valueAxisStart");var r=new nC({shape:{points:n.getLayout("largePoints")},incremental:!!i,__startPoint:o,__valueIdx:a});e.add(r),Bh(r,t,n)}function Bh(t,e,i){var n=i.getVisual("borderColor")||i.getVisual("color"),o=e.getModel("itemStyle").getItemStyle(["color","borderColor"]);t.useStyle(o),t.style.fill=null,t.style.stroke=n,t.style.lineWidth=i.getLayout("barWidth")}function Vh(t,e,i,n){var o=e.getData(),a=this.dataIndex,r=o.getName(a),s=e.get("selectedOffset");n.dispatchAction({type:"pieToggleSelect",from:t,name:r,seriesId:e.id}),o.each(function(t){Gh(o.getItemGraphicEl(t),o.getItemLayout(t),e.isSelected(o.getName(t)),s,i)})}function Gh(t,e,i,n,o){var a=(e.startAngle+e.endAngle)/2,r=Math.cos(a),s=Math.sin(a),l=i?n:0,u=[r*l,s*l];o?t.animate().when(200,{position:u}).start("bounceOut"):t.attr("position",u)}function Fh(t,e){function i(){a.ignore=a.hoverIgnore,r.ignore=r.hoverIgnore}function n(){a.ignore=a.normalIgnore,r.ignore=r.normalIgnore}tb.call(this);var o=new hM({z2:2}),a=new gM,r=new rM;this.add(o),this.add(a),this.add(r),this.updateData(t,e,!0),this.on("emphasis",i).on("normal",n).on("mouseover",i).on("mouseout",n)}function Wh(t,e,i,n,o,a,r){function s(e,i){for(var n=e;n>=0&&(t[n].y-=i,!(n>0&&t[n].y>t[n-1].y+t[n-1].height));n--);}function l(t,e,i,n,o,a){for(var r=e?Number.MAX_VALUE:0,s=0,l=t.length;s=r&&(d=r-10),!e&&d<=r&&(d=r+10),t[s].x=i+d*a,r=d}}t.sort(function(t,e){return t.y-e.y});for(var u,h=0,c=t.length,d=[],f=[],p=0;pe&&a+1t[a].y+t[a].height)return void s(a,n/2);s(i-1,n/2)}(p,c,-u),h=t[p].y+t[p].height;r-h<0&&s(c-1,h-r);for(p=0;p=i?f.push(t[p]):d.push(t[p]);l(d,!1,e,i,n,o),l(f,!0,e,i,n,o)}function Hh(t,e,i,n,o,a){for(var r=[],s=[],l=0;l3?1.4:o>1?1.2:1.1;hc(this,"zoom","zoomOnMouseWheel",t,{scale:n>0?s:1/s,originX:a,originY:r})}if(i){var l=Math.abs(n);hc(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(n>0?1:-1)*(l>3?.4:l>1?.15:.05),originX:a,originY:r})}}}function uc(t){ic(this._zr,"globalPan")||hc(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY})}function hc(t,e,i,n,o){t.pointerChecker&&t.pointerChecker(n,o.originX,o.originY)&&(mw(n.event),cc(t,e,i,n,o))}function cc(t,e,i,n,o){o.isAvailableBehavior=m(dc,null,i,n),t.trigger(e,o)}function dc(t,e,i){var n=i[t];return!t||n&&(!_(n)||e.event[n+"Key"])}function fc(t,e,i){var n=t.target,o=n.position;o[0]+=e,o[1]+=i,n.dirty()}function pc(t,e,i,n){var o=t.target,a=t.zoomLimit,r=o.position,s=o.scale,l=t.zoom=t.zoom||1;if(l*=e,a){var u=a.min||0,h=a.max||1/0;l=Math.max(Math.min(h,l),u)}var c=l/t.zoom;t.zoom=l,r[0]-=(i-r[0])*(c-1),r[1]-=(n-r[1])*(c-1),s[0]*=c,s[1]*=c,o.dirty()}function gc(t,e,i){var n=e.getComponentByElement(t.topTarget),o=n&&n.coordinateSystem;return n&&n!==i&&!RC[n.mainType]&&o&&o.model!==i}function mc(t,e){var i=t.getItemStyle(),n=t.get("areaColor");return null!=n&&(i.fill=n),i}function vc(t,e,i,n,o){i.off("click"),i.off("mousedown"),e.get("selectedMode")&&(i.on("mousedown",function(){t._mouseDownFlag=!0}),i.on("click",function(a){if(t._mouseDownFlag){t._mouseDownFlag=!1;for(var r=a.target;!r.__regions;)r=r.parent;if(r){var s={type:("geo"===e.mainType?"geo":"map")+"ToggleSelect",batch:f(r.__regions,function(t){return{name:t.name,from:o.uid}})};s[e.mainType+"Id"]=e.id,n.dispatchAction(s),yc(e,i)}}}))}function yc(t,e){e.eachChild(function(e){d(e.__regions,function(i){e.trigger(t.isSelected(i.name)?"emphasis":"normal")})})}function xc(t,e){var i=new tb;this.uid=Ro("ec_map_draw"),this._controller=new oc(t.getZr()),this._controllerHost={target:e?i:null},this.group=i,this._updateGroup=e,this._mouseDownFlag,this._mapName,this._initialized,i.add(this._regionsGroup=new tb),i.add(this._backgroundGroup=new tb)}function _c(t){var e=this[zC];e&&e.recordVersion===this[BC]&&wc(e,t)}function wc(t,e){var i=t.circle,n=t.labelModel,o=t.hoverLabelModel,a=t.emphasisText,r=t.normalText;e?(i.style.extendFrom(mo({},o,{text:o.get("show")?a:null},{isRectText:!0,useInsideStyle:!1},!0)),i.__mapOriginalZ2=i.z2,i.z2+=NM):(mo(i.style,n,{text:n.get("show")?r:null,textPosition:n.getShallow("position")||"bottom"},{isRectText:!0,useInsideStyle:!1}),i.dirty(!1),null!=i.__mapOriginalZ2&&(i.z2=i.__mapOriginalZ2,i.__mapOriginalZ2=null))}function bc(t,e,i){var n=t.getZoom(),o=t.getCenter(),a=e.zoom,r=t.dataToPoint(o);if(null!=e.dx&&null!=e.dy){r[0]-=e.dx,r[1]-=e.dy;o=t.pointToData(r);t.setCenter(o)}if(null!=a){if(i){var s=i.min||0,l=i.max||1/0;a=Math.max(Math.min(n*a,l),s)/n}t.scale[0]*=a,t.scale[1]*=a;var u=t.position,h=(e.originX-u[0])*(a-1),c=(e.originY-u[1])*(a-1);u[0]-=h,u[1]-=c,t.updateTransform();o=t.pointToData(r);t.setCenter(o),t.setZoom(a*n)}return{center:t.getCenter(),zoom:t.getZoom()}}function Sc(){Tw.call(this)}function Mc(t){this.name=t,this.zoomLimit,Tw.call(this),this._roamTransformable=new Sc,this._rawTransformable=new Sc,this._center,this._zoom}function Ic(t,e,i,n){var o=i.seriesModel,a=o?o.coordinateSystem:null;return a===this?a[t](n):null}function Tc(t,e,i,n){Mc.call(this,t),this.map=e;var o=OC.load(e,i);this._nameCoordMap=o.nameCoordMap,this._regionsMap=o.regionsMap,this._invertLongitute=null==n||n,this.regions=o.regions,this._rect=o.boundingRect}function Ac(t,e,i,n){var o=i.geoModel,a=i.seriesModel,r=o?o.coordinateSystem:a?a.coordinateSystem||(a.getReferringComponents("geo")[0]||{}).coordinateSystem:null;return r===this?r[t](n):null}function Dc(t,e){var i=t.get("boundingCoords");if(null!=i){var n=i[0],o=i[1];isNaN(n[0])||isNaN(n[1])||isNaN(o[0])||isNaN(o[1])||this.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1])}var a,r=this.getBoundingRect(),s=t.get("layoutCenter"),l=t.get("layoutSize"),u=e.getWidth(),h=e.getHeight(),c=r.width/r.height*this.aspectScale,d=!1;s&&l&&(s=[Vo(s[0],u),Vo(s[1],h)],l=Vo(l,Math.min(u,h)),isNaN(s[0])||isNaN(s[1])||isNaN(l)||(d=!0));if(d){var f={};c>1?(f.width=l,f.height=l/c):(f.height=l,f.width=l*c),f.y=s[1]-f.height/2,f.x=s[0]-f.width/2}else(a=t.getBoxLayoutParams()).aspect=c,f=ca(a,{width:u,height:h});this.setViewRect(f.x,f.y,f.width,f.height),this.setCenter(t.get("center")),this.setZoom(t.get("zoom"))}function Cc(t,e){d(e.get("geoCoord"),function(e,i){t.addGeoCoord(i,e)})}function Lc(t,e){var i={};return d(t,function(t){t.each(t.mapDimension("value"),function(e,n){var o="ec-"+t.getName(n);i[o]=i[o]||[],isNaN(e)||i[o].push(e)})}),t[0].map(t[0].mapDimension("value"),function(n,o){for(var a="ec-"+t[0].getName(o),r=0,s=1/0,l=-1/0,u=i[a].length,h=0;h=0;o--){var a=i[o];a.hierNode={defaultAncestor:null,ancestor:a,prelim:0,modifier:0,change:0,shift:0,i:o,thread:null},n.push(a)}}function Wc(t,e){var i=t.isExpand?t.children:[],n=t.parentNode.children,o=t.hierNode.i?n[t.hierNode.i-1]:null;if(i.length){jc(t);var a=(i[0].hierNode.prelim+i[i.length-1].hierNode.prelim)/2;o?(t.hierNode.prelim=o.hierNode.prelim+e(t,o),t.hierNode.modifier=t.hierNode.prelim-a):t.hierNode.prelim=a}else o&&(t.hierNode.prelim=o.hierNode.prelim+e(t,o));t.parentNode.hierNode.defaultAncestor=Yc(t,o,t.parentNode.hierNode.defaultAncestor||n[0],e)}function Hc(t){var e=t.hierNode.prelim+t.parentNode.hierNode.modifier;t.setLayout({x:e},!0),t.hierNode.modifier+=t.parentNode.hierNode.modifier}function Zc(t){return arguments.length?t:Qc}function Uc(t,e){var i={};return t-=Math.PI/2,i.x=e*Math.cos(t),i.y=e*Math.sin(t),i}function Xc(t,e){return ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}function jc(t){for(var e=t.children,i=e.length,n=0,o=0;--i>=0;){var a=e[i];a.hierNode.prelim+=n,a.hierNode.modifier+=n,o+=a.hierNode.change,n+=a.hierNode.shift+o}}function Yc(t,e,i,n){if(e){for(var o=t,a=t,r=a.parentNode.children[0],s=e,l=o.hierNode.modifier,u=a.hierNode.modifier,h=r.hierNode.modifier,c=s.hierNode.modifier;s=qc(s),a=Kc(a),s&&a;){o=qc(o),r=Kc(r),o.hierNode.ancestor=t;var d=s.hierNode.prelim+c-a.hierNode.prelim-u+n(s,a);d>0&&(Jc($c(s,t,i),t,d),u+=d,l+=d),c+=s.hierNode.modifier,u+=a.hierNode.modifier,l+=o.hierNode.modifier,h+=r.hierNode.modifier}s&&!qc(o)&&(o.hierNode.thread=s,o.hierNode.modifier+=c-l),a&&!Kc(r)&&(r.hierNode.thread=a,r.hierNode.modifier+=u-h,i=t)}return i}function qc(t){var e=t.children;return e.length&&t.isExpand?e[e.length-1]:t.hierNode.thread}function Kc(t){var e=t.children;return e.length&&t.isExpand?e[0]:t.hierNode.thread}function $c(t,e,i){return t.hierNode.ancestor.parentNode===e.parentNode?t.hierNode.ancestor:i}function Jc(t,e,i){var n=i/(e.hierNode.i-t.hierNode.i);e.hierNode.change-=n,e.hierNode.shift+=i,e.hierNode.modifier+=i,e.hierNode.prelim+=i,t.hierNode.change+=n}function Qc(t,e){return t.parentNode===e.parentNode?1:2}function td(t,e){var i=t.getItemLayout(e);return i&&!isNaN(i.x)&&!isNaN(i.y)&&"none"!==t.getItemVisual(e,"symbol")}function ed(t,e,i){return i.itemModel=e,i.itemStyle=e.getModel("itemStyle").getItemStyle(),i.hoverItemStyle=e.getModel("emphasis.itemStyle").getItemStyle(),i.lineStyle=e.getModel("lineStyle").getLineStyle(),i.labelModel=e.getModel("label"),i.hoverLabelModel=e.getModel("emphasis.label"),!1===t.isExpand&&0!==t.children.length?i.symbolInnerColor=i.itemStyle.fill:i.symbolInnerColor="#fff",i}function id(t,e,i,n,o,a){var s=!i,l=t.tree.getNodeByDataIndex(e),a=ed(l,l.getModel(),a),u=t.tree.root,h=l.parentNode===u?l:l.parentNode||l,c=t.getItemGraphicEl(h.dataIndex),d=h.getLayout(),f=c?{x:c.position[0],y:c.position[1],rawX:c.__radialOldRawX,rawY:c.__radialOldRawY}:d,p=l.getLayout();s?(i=new wu(t,e,a)).attr("position",[f.x,f.y]):i.updateData(t,e,a),i.__radialOldRawX=i.__radialRawX,i.__radialOldRawY=i.__radialRawY,i.__radialRawX=p.rawX,i.__radialRawY=p.rawY,n.add(i),t.setItemGraphicEl(e,i),Io(i,{position:[p.x,p.y]},o);var g=i.getSymbolPath();if("radial"===a.layout){var m,v,y=u.children[0],x=y.getLayout(),_=y.children.length;if(p.x===x.x&&!0===l.isExpand){var w={};w.x=(y.children[0].getLayout().x+y.children[_-1].getLayout().x)/2,w.y=(y.children[0].getLayout().y+y.children[_-1].getLayout().y)/2,(m=Math.atan2(w.y-x.y,w.x-x.x))<0&&(m=2*Math.PI+m),(v=w.xx.x)||(m-=Math.PI);var b=v?"left":"right";g.setStyle({textPosition:b,textRotation:-m,textOrigin:"center",verticalAlign:"middle"})}if(l.parentNode&&l.parentNode!==u){var S=i.__edge;S||(S=i.__edge=new bM({shape:od(a,f,f),style:r({opacity:0,strokeNoScale:!0},a.lineStyle)})),Io(S,{shape:od(a,d,p),style:{opacity:1}},o),n.add(S)}}function nd(t,e,i,n,o,a){for(var r,s=t.tree.getNodeByDataIndex(e),l=t.tree.root,a=ed(s,s.getModel(),a),u=s.parentNode===l?s:s.parentNode||s;null==(r=u.getLayout());)u=u.parentNode===l?u:u.parentNode||u;Io(i,{position:[r.x+1,r.y+1]},o,function(){n.remove(i),t.setItemGraphicEl(e,null)}),i.fadeOut(null,{keepLabel:!0});var h=i.__edge;h&&Io(h,{shape:od(a,r,r),style:{opacity:0}},o,function(){n.remove(h)})}function od(t,e,i){var n,o,a,r,s,l,u,h,c=t.orient;if("radial"===t.layout){s=e.rawX,u=e.rawY,l=i.rawX,h=i.rawY;var d=Uc(s,u),f=Uc(s,u+(h-u)*t.curvature),p=Uc(l,h+(u-h)*t.curvature),g=Uc(l,h);return{x1:d.x,y1:d.y,x2:g.x,y2:g.y,cpx1:f.x,cpy1:f.y,cpx2:p.x,cpy2:p.y}}return s=e.x,u=e.y,l=i.x,h=i.y,"LR"!==c&&"RL"!==c||(n=s+(l-s)*t.curvature,o=u,a=l+(s-l)*t.curvature,r=h),"TB"!==c&&"BT"!==c||(n=s,o=u+(h-u)*t.curvature,a=l,r=h+(u-h)*t.curvature),{x1:s,y1:u,x2:l,y2:h,cpx1:n,cpy1:o,cpx2:a,cpy2:r}}function ad(t,e,i){for(var n,o=[t],a=[];n=o.pop();)if(a.push(n),n.isExpand){var r=n.children;if(r.length)for(var s=0;s=0;a--)n.push(o[a])}}function sd(t,e){var i=Xc(t,e);t.layoutInfo=i;var n=t.get("layout"),o=0,a=0,r=null;"radial"===n?(o=2*Math.PI,a=Math.min(i.height,i.width)/2,r=Zc(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(o=i.width,a=i.height,r=Zc());var s=t.getData().tree.root,l=s.children[0];if(l){Fc(s),ad(l,Wc,r),s.hierNode.modifier=-l.hierNode.prelim,rd(l,Hc);var u=l,h=l,c=l;rd(l,function(t){var e=t.getLayout().x;eh.getLayout().x&&(h=t),t.depth>c.depth&&(c=t)});var d=u===h?1:r(u,h)/2,f=d-u.getLayout().x,p=0,g=0,m=0,v=0;if("radial"===n)p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v=(t.depth-1)*g;var e=Uc(m,v);t.setLayout({x:e.x,y:e.y,rawX:m,rawY:v},!0)});else{var y=t.getOrient();"RL"===y||"LR"===y?(g=a/(h.getLayout().x+d+f),p=o/(c.depth-1||1),rd(l,function(t){v=(t.getLayout().x+f)*g,m="LR"===y?(t.depth-1)*p:o-(t.depth-1)*p,t.setLayout({x:m,y:v},!0)})):"TB"!==y&&"BT"!==y||(p=o/(h.getLayout().x+d+f),g=a/(c.depth-1||1),rd(l,function(t){m=(t.getLayout().x+f)*p,v="TB"===y?(t.depth-1)*g:a-(t.depth-1)*g,t.setLayout({x:m,y:v},!0)}))}}}function ld(t,e,i){if(t&&l(e,t.type)>=0){var n=i.getData().tree.root,o=t.targetNode;if("string"==typeof o&&(o=n.getNodeById(o)),o&&n.contains(o))return{node:o};var a=t.targetNodeId;if(null!=a&&(o=n.getNodeById(a)))return{node:o}}}function ud(t){for(var e=[];t;)(t=t.parentNode)&&e.push(t);return e.reverse()}function hd(t,e){return l(ud(t),e)>=0}function cd(t,e){for(var i=[];t;){var n=t.dataIndex;i.push({name:t.name,dataIndex:n,value:e.getRawValue(n)}),t=t.parentNode}return i.reverse(),i}function dd(t){var e=0;d(t.children,function(t){dd(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function fd(t,e){var i=e.get("color");if(i){var n;return d(t=t||[],function(t){var e=new No(t),i=e.get("color");(e.get("itemStyle.color")||i&&"none"!==i)&&(n=!0)}),n||((t[0]||(t[0]={})).color=i.slice()),t}}function pd(t){this.group=new tb,t.add(this.group)}function gd(t,e,i,n,o,a){var r=[[o?t:t-UC,e],[t+i,e],[t+i,e+n],[o?t:t-UC,e+n]];return!a&&r.splice(2,0,[t+i+UC,e+n/2]),!o&&r.push([t,e+n/2]),r}function md(t,e,i){t.eventData={componentType:"series",componentSubType:"treemap",componentIndex:e.componentIndex,seriesIndex:e.componentIndex,seriesName:e.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:i&&i.dataIndex,name:i&&i.name},treePathInfo:i&&cd(i,e)}}function vd(){var t,e=[],i={};return{add:function(t,n,o,a,r){return _(a)&&(r=a,a=0),!i[t.id]&&(i[t.id]=1,e.push({el:t,target:n,time:o,delay:a,easing:r}),!0)},done:function(e){return t=e,this},start:function(){for(var n=e.length,o=0,a=e.length;o=0;a--)null==i[a]&&(delete n[e[a]],e.pop())}function bd(t,e){var i=t.visual,n=[];w(i)?sL(i,function(t){n.push(t)}):null!=i&&n.push(i);var o={color:1,symbol:1};e||1!==n.length||o.hasOwnProperty(t.type)||(n[1]=n[0]),Ld(t,n)}function Sd(t){return{applyVisual:function(e,i,n){e=this.mapValueToVisual(e),n("color",t(i("color"),e))},_doMap:Dd([0,1])}}function Md(t){var e=this.option.visual;return e[Math.round(Bo(t,[0,1],[0,e.length-1],!0))]||{}}function Id(t){return function(e,i,n){n(t,this.mapValueToVisual(e))}}function Td(t){var e=this.option.visual;return e[this.option.loop&&t!==uL?t%e.length:t]}function Ad(){return this.option.visual[0]}function Dd(t){return{linear:function(e){return Bo(e,t,this.option.visual,!0)},category:Td,piecewise:function(e,i){var n=Cd.call(this,i);return null==n&&(n=Bo(e,t,this.option.visual,!0)),n},fixed:Ad}}function Cd(t){var e=this.option,i=e.pieceList;if(e.hasSpecialVisual){var n=i[hL.findPieceIndex(t,i)];if(n&&n.visual)return n.visual[this.type]}}function Ld(t,e){return t.visual=e,"color"===t.type&&(t.parsedVisual=f(e,function(t){return Gt(t)})),e}function kd(t,e,i){return t?e<=i:e=o.length||t===o[t.depth])&&Pd(t,Vd(r,h,t,e,g,a),i,n,o,a)})}else l=Od(h),t.setVisual("color",l)}}function Nd(t,e,i,n){var o=a({},e);return d(["color","colorAlpha","colorSaturation"],function(a){var r=t.get(a,!0);null==r&&i&&(r=i[a]),null==r&&(r=e[a]),null==r&&(r=n.get(a)),null!=r&&(o[a]=r)}),o}function Od(t){var e=Rd(t,"color");if(e){var i=Rd(t,"colorAlpha"),n=Rd(t,"colorSaturation");return n&&(e=jt(e,null,null,n)),i&&(e=Yt(e,i)),e}}function Ed(t,e){return null!=e?jt(e,null,null,t):null}function Rd(t,e){var i=t[e];if(null!=i&&"none"!==i)return i}function zd(t,e,i,n,o,a){if(a&&a.length){var r=Bd(e,"color")||null!=o.color&&"none"!==o.color&&(Bd(e,"colorAlpha")||Bd(e,"colorSaturation"));if(r){var s=e.get("visualMin"),l=e.get("visualMax"),u=i.dataExtent.slice();null!=s&&su[1]&&(u[1]=l);var h=e.get("colorMappingBy"),c={type:r.name,dataExtent:u,visual:r.range};"color"!==c.type||"index"!==h&&"id"!==h?c.mappingMethod="linear":(c.mappingMethod="category",c.loop=!0);var d=new hL(c);return d.__drColorMappingBy=h,d}}}function Bd(t,e){var i=t.get(e);return fL(i)&&i.length?{name:e,range:i}:null}function Vd(t,e,i,n,o,r){var s=a({},e);if(o){var l=o.type,u="color"===l&&o.__drColorMappingBy,h="index"===u?n:"id"===u?r.mapIdToIndex(i.getId()):i.getValue(t.get("visualDimension"));s[l]=o.mapValueToVisual(h)}return s}function Gd(t,e,i,n){var o,a;if(!t.isRemoved()){var r=t.getLayout();o=r.width,a=r.height;var s=(f=t.getModel()).get(_L),l=f.get(wL)/2,u=Kd(f),h=Math.max(s,u),c=s-l,d=h-l,f=t.getModel();t.setLayout({borderWidth:s,upperHeight:h,upperLabelHeight:u},!0);var p=(o=mL(o-2*c,0))*(a=mL(a-c-d,0)),g=Fd(t,f,p,e,i,n);if(g.length){var m={x:c,y:d,width:o,height:a},v=vL(o,a),y=1/0,x=[];x.area=0;for(var _=0,w=g.length;_=0;l--){var u=o["asc"===n?r-l-1:l].getValue();u/i*es[1]&&(s[1]=e)})}else s=[NaN,NaN];return{sum:n,dataExtent:s}}function Ud(t,e,i){for(var n,o=0,a=1/0,r=0,s=t.length;ro&&(o=n));var l=t.area*t.area,u=e*e*i;return l?mL(u*o/l,l/(u*a)):1/0}function Xd(t,e,i,n,o){var a=e===i.width?0:1,r=1-a,s=["x","y"],l=["width","height"],u=i[s[a]],h=e?t.area/e:0;(o||h>i[l[r]])&&(h=i[l[r]]);for(var c=0,d=t.length;cXM&&(u=XM),a=s}u=0?n+=u:n-=u:p>=0?n-=u:n+=u}return n}function pf(t,e){return t.getVisual("opacity")||t.getModel().get(e)}function gf(t,e,i){var n=t.getGraphicEl(),o=pf(t,e);null!=i&&(null==o&&(o=1),o*=i),n.downplay&&n.downplay(),n.traverse(function(t){if("group"!==t.type){var e=t.lineLabelOriginalOpacity;null!=e&&null==i||(e=o),t.setStyle("opacity",e)}})}function mf(t,e){var i=pf(t,e),n=t.getGraphicEl();n.highlight&&n.highlight(),n.traverse(function(t){"group"!==t.type&&t.setStyle("opacity",i)})}function vf(t){return t instanceof Array||(t=[t,t]),t}function yf(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=t.getGraph();i.eachNode(function(t){var e=t.getModel();t.setLayout([+e.get("x"),+e.get("y")])}),xf(i)}}function xf(t){t.eachEdge(function(t){var e=t.getModel().get("lineStyle.curveness")||0,i=F(t.node1.getLayout()),n=F(t.node2.getLayout()),o=[i,n];+e&&o.push([(i[0]+n[0])/2-(i[1]-n[1])*e,(i[1]+n[1])/2-(n[0]-i[0])*e]),t.setLayout(o)})}function _f(t){var e=t.coordinateSystem;if(!e||"view"===e.type){var i=e.getBoundingRect(),n=t.getData(),o=n.graph,a=0,r=n.getSum("value"),s=2*Math.PI/(r||n.count()),l=i.width/2+i.x,u=i.height/2+i.y,h=Math.min(i.width,i.height)/2;o.eachNode(function(t){var e=t.getValue("value");a+=s*(r?e:1)/2,t.setLayout([h*Math.cos(a)+l,h*Math.sin(a)+u]),a+=s*(r?e:1)/2}),n.setLayout({cx:l,cy:u}),o.eachEdge(function(t){var e,i=t.getModel().get("lineStyle.curveness")||0,n=F(t.node1.getLayout()),o=F(t.node2.getLayout()),a=(n[0]+o[0])/2,r=(n[1]+o[1])/2;+i&&(e=[l*(i*=3)+a*(1-i),u*i+r*(1-i)]),t.setLayout([n,o,e])})}}function wf(t,e,i){for(var n=i.rect,o=n.width,a=n.height,r=[n.x+o/2,n.y+a/2],s=null==i.gravity?.1:i.gravity,l=0;l0?-1:i<0?1:e?-1:1}}function Pf(t,e){return Math.min(e[1],Math.max(e[0],t))}function Nf(t,e,i){this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._rect,this._model=t,this._init(t,e,i)}function Of(t,e){return ek(ik(t,e[0]),e[1])}function Ef(t,e){var i=e.layoutLength/(e.axisCount-1);return{position:i*t,axisNameAvailableWidth:i,axisLabelShow:!0}}function Rf(t,e){var i,n,o=e.layoutLength,a=e.axisExpandWidth,r=e.axisCount,s=e.axisCollapseWidth,l=e.winInnerIndices,u=s,h=!1;return tmk}function $f(t){var e=t.length-1;return e<0&&(e=0),[t[0],t[e]]}function Jf(t,e,i,n){var o=new tb;return o.add(new yM({name:"main",style:ip(i),silent:!0,draggable:!0,cursor:"move",drift:uk(t,e,o,"nswe"),ondragend:uk(qf,e,{isEnd:!0})})),hk(n,function(i){o.add(new yM({name:i,style:{opacity:0},draggable:!0,silent:!0,invisible:!0,drift:uk(t,e,o,i),ondragend:uk(qf,e,{isEnd:!0})}))}),o}function Qf(t,e,i,n){var o=n.brushStyle.lineWidth||0,a=fk(o,vk),r=i[0][0],s=i[1][0],l=r-o/2,u=s-o/2,h=i[0][1],c=i[1][1],d=h-a+o/2,f=c-a+o/2,p=h-r,g=c-s,m=p+o,v=g+o;ep(t,e,"main",r,s,p,g),n.transformable&&(ep(t,e,"w",l,u,a,v),ep(t,e,"e",d,u,a,v),ep(t,e,"n",l,u,m,a),ep(t,e,"s",l,f,m,a),ep(t,e,"nw",l,u,a,a),ep(t,e,"ne",d,u,a,a),ep(t,e,"sw",l,f,a,a),ep(t,e,"se",d,f,a,a))}function tp(t,e){var i=e.__brushOption,n=i.transformable,o=e.childAt(0);o.useStyle(ip(i)),o.attr({silent:!n,cursor:n?"move":"default"}),hk(["w","e","n","s","se","sw","ne","nw"],function(i){var o=e.childOfName(i),a=ap(t,i);o&&o.attr({silent:!n,invisible:!n,cursor:n?_k[a]+"-resize":null})})}function ep(t,e,i,n,o,a,r){var s=e.childOfName(i);s&&s.setShape(hp(up(t,e,[[n,o],[n+a,o+r]])))}function ip(t){return r({strokeNoScale:!0},t.brushStyle)}function np(t,e,i,n){var o=[dk(t,i),dk(e,n)],a=[fk(t,i),fk(e,n)];return[[o[0],a[0]],[o[1],a[1]]]}function op(t){return Ao(t.group)}function ap(t,e){if(e.length>1)return("e"===(n=[ap(t,(e=e.split(""))[0]),ap(t,e[1])])[0]||"w"===n[0])&&n.reverse(),n.join("");var i={left:"w",right:"e",top:"n",bottom:"s"},n=Co({w:"left",e:"right",n:"top",s:"bottom"}[e],op(t));return i[n]}function rp(t,e,i,n,o,a,r,s){var l=n.__brushOption,u=t(l.range),h=lp(i,a,r);hk(o.split(""),function(t){var e=xk[t];u[e[0]][e[1]]+=h[e[0]]}),l.range=e(np(u[0][0],u[1][0],u[0][1],u[1][1])),Zf(i,n),qf(i,{isEnd:!1})}function sp(t,e,i,n,o){var a=e.__brushOption.range,r=lp(t,i,n);hk(a,function(t){t[0]+=r[0],t[1]+=r[1]}),Zf(t,e),qf(t,{isEnd:!1})}function lp(t,e,i){var n=t.group,o=n.transformCoordToLocal(e,i),a=n.transformCoordToLocal(0,0);return[o[0]-a[0],o[1]-a[1]]}function up(t,e,n){var o=jf(t,e);return o&&!0!==o?o.clipPath(n,t._transform):i(n)}function hp(t){var e=dk(t[0][0],t[1][0]),i=dk(t[0][1],t[1][1]);return{x:e,y:i,width:fk(t[0][0],t[1][0])-e,height:fk(t[0][1],t[1][1])-i}}function cp(t,e,i){if(t._brushType){var n=t._zr,o=t._covers,a=Xf(t,e,i);if(!t._dragging)for(var r=0;r0;a--)Yp(s,l*=.99,r),jp(s,o,i,n,r),tg(s,l,r),jp(s,o,i,n,r)}function Up(t,e){var i=[],n="vertical"===e?"y":"x",o=Zi(t,function(t){return t.getLayout()[n]});return o.keys.sort(function(t,e){return t-e}),d(o.keys,function(t){i.push(o.buckets.get(t))}),i}function Xp(t,e,i,n,o,a,r){var s=[];d(e,function(t){var e=t.length,i=0,l=0;d(t,function(t){i+=t.getLayout().value}),l="vertical"===r?(o-(e-1)*a)/i:(n-(e-1)*a)/i,s.push(l)}),s.sort(function(t,e){return t-e});var l=s[0];d(e,function(t){d(t,function(t,e){var i=t.getLayout().value*l;"vertical"===r?(t.setLayout({x:e},!0),t.setLayout({dx:i},!0)):(t.setLayout({y:e},!0),t.setLayout({dy:i},!0))})}),d(i,function(t){var e=+t.getValue()*l;t.setLayout({dy:e},!0)})}function jp(t,e,i,n,o){d(t,function(t){var a,r,s,l=0,u=t.length;if("vertical"===o){var h;for(t.sort(function(t,e){return t.getLayout().x-e.getLayout().x}),s=0;s0&&(h=a.getLayout().x+r,a.setLayout({x:h},!0)),l=a.getLayout().x+a.getLayout().dx+e;if((r=l-e-n)>0)for(h=a.getLayout().x-r,a.setLayout({x:h},!0),l=h,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().x+a.getLayout().dx+e-l)>0&&(h=a.getLayout().x-r,a.setLayout({x:h},!0)),l=a.getLayout().x}else{var c;for(t.sort(function(t,e){return t.getLayout().y-e.getLayout().y}),s=0;s0&&(c=a.getLayout().y+r,a.setLayout({y:c},!0)),l=a.getLayout().y+a.getLayout().dy+e;if((r=l-e-i)>0)for(c=a.getLayout().y-r,a.setLayout({y:c},!0),l=c,s=u-2;s>=0;--s)(r=(a=t[s]).getLayout().y+a.getLayout().dy+e-l)>0&&(c=a.getLayout().y-r,a.setLayout({y:c},!0)),l=a.getLayout().y}})}function Yp(t,e,i){d(t.slice().reverse(),function(t){d(t,function(t){if(t.outEdges.length){var n=Qp(t.outEdges,qp,i)/Qp(t.outEdges,Jp,i);if("vertical"===i){var o=t.getLayout().x+(n-$p(t,i))*e;t.setLayout({x:o},!0)}else{var a=t.getLayout().y+(n-$p(t,i))*e;t.setLayout({y:a},!0)}}})})}function qp(t,e){return $p(t.node2,e)*t.getValue()}function Kp(t,e){return $p(t.node1,e)*t.getValue()}function $p(t,e){return"vertical"===e?t.getLayout().x+t.getLayout().dx/2:t.getLayout().y+t.getLayout().dy/2}function Jp(t){return t.getValue()}function Qp(t,e,i){for(var n=0,o=t.length,a=-1;++a0?"P":"N",a=n.getVisual("borderColor"+o)||n.getVisual("color"+o),r=i.getModel(Gk).getItemStyle(Wk);e.useStyle(r),e.style.fill=null,e.style.stroke=a}function fg(t,e,i,n,o){return i>n?-1:i0?t.get(o,e-1)<=n?1:-1:1}function pg(t,e){var i,n=t.getBaseAxis(),o="category"===n.type?n.getBandWidth():(i=n.getExtent(),Math.abs(i[1]-i[0])/e.count()),a=Vo(A(t.get("barMaxWidth"),o),o),r=Vo(A(t.get("barMinWidth"),1),o),s=t.get("barWidth");return null!=s?Vo(s,o):Math.max(Math.min(o/2,a),r)}function gg(t){return y(t)||(t=[+t,+t]),t}function mg(t,e){t.eachChild(function(t){t.attr({z:e.z,zlevel:e.zlevel,style:{stroke:"stroke"===e.brushType?e.color:null,fill:"fill"===e.brushType?e.color:null}})})}function vg(t,e){tb.call(this);var i=new wu(t,e),n=new tb;this.add(i),this.add(n),n.beforeUpdate=function(){this.attr(i.getScale())},this.updateData(t,e)}function yg(t){var e=t.data;e&&e[0]&&e[0][0]&&e[0][0].coord&&(t.data=f(e,function(t){var e={coords:[t[0].coord,t[1].coord]};return t[0].name&&(e.fromName=t[0].name),t[1].name&&(e.toName=t[1].name),o([e,t[0],t[1]])}))}function xg(t,e,i){tb.call(this),this.add(this.createLine(t,e,i)),this._updateEffectSymbol(t,e)}function _g(t,e,i){tb.call(this),this._createPolyline(t,e,i)}function wg(t,e,i){xg.call(this,t,e,i),this._lastFrame=0,this._lastFramePercent=0}function bg(){this.group=new tb}function Sg(t){return t instanceof Array||(t=[t,t]),t}function Mg(){var t=iw();this.canvas=t,this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={}}function Ig(t,e,i){var n=t[1]-t[0],o=(e=f(e,function(e){return{interval:[(e.interval[0]-t[0])/n,(e.interval[1]-t[0])/n]}})).length,a=0;return function(t){for(n=a;n=0;n--){var r=e[n].interval;if(r[0]<=t&&t<=r[1]){a=n;break}}return n>=0&&n=e[0]&&t<=e[1]}}function Ag(t){var e=t.dimensions;return"lng"===e[0]&&"lat"===e[1]}function Dg(t,e,i,n){var o=t.getItemLayout(e),a=i.get("symbolRepeat"),r=i.get("symbolClip"),s=i.get("symbolPosition")||"start",l=(i.get("symbolRotate")||0)*Math.PI/180||0,u=i.get("symbolPatternSize")||2,h=i.isAnimationEnabled(),c={dataIndex:e,layout:o,itemModel:i,symbolType:t.getItemVisual(e,"symbol")||"circle",color:t.getItemVisual(e,"color"),symbolClip:r,symbolRepeat:a,symbolRepeatDirection:i.get("symbolRepeatDirection"),symbolPatternSize:u,rotation:l,animationModel:h?i:null,hoverAnimation:h&&i.get("hoverAnimation"),z2:i.getShallow("z",!0)||0};Cg(i,a,o,n,c),kg(t,e,o,a,r,c.boundingLength,c.pxSign,u,n,c),Pg(i,c.symbolScale,l,n,c);var d=c.symbolSize,f=i.get("symbolOffset");return y(f)&&(f=[Vo(f[0],d[0]),Vo(f[1],d[1])]),Ng(i,d,o,a,r,f,s,c.valueLineWidth,c.boundingLength,c.repeatCutLength,n,c),c}function Cg(t,e,i,n,o){var a,r=n.valueDim,s=t.get("symbolBoundingData"),l=n.coordSys.getOtherAxis(n.coordSys.getBaseAxis()),u=l.toGlobalCoord(l.dataToCoord(0)),h=1-+(i[r.wh]<=0);if(y(s)){var c=[Lg(l,s[0])-u,Lg(l,s[1])-u];c[1]0?1:a<0?-1:0}function Lg(t,e){return t.toGlobalCoord(t.dataToCoord(t.scale.parse(e)))}function kg(t,e,i,n,o,a,r,s,l,u){var h=l.valueDim,c=l.categoryDim,d=Math.abs(i[c.wh]),f=t.getItemVisual(e,"symbolSize");y(f)?f=f.slice():(null==f&&(f="100%"),f=[f,f]),f[c.index]=Vo(f[c.index],d),f[h.index]=Vo(f[h.index],n?d:Math.abs(a)),u.symbolSize=f,(u.symbolScale=[f[0]/s,f[1]/s])[h.index]*=(l.isHorizontal?-1:1)*r}function Pg(t,e,i,n,o){var a=t.get(cP)||0;a&&(fP.attr({scale:e.slice(),rotation:i}),fP.updateTransform(),a/=fP.getLineScale(),a*=e[n.valueDim.index]),o.valueLineWidth=a}function Ng(t,e,i,n,o,r,s,l,u,h,c,d){var f=c.categoryDim,p=c.valueDim,g=d.pxSign,m=Math.max(e[p.index]+l,0),v=m;if(n){var y=Math.abs(u),x=T(t.get("symbolMargin"),"15%")+"",_=!1;x.lastIndexOf("!")===x.length-1&&(_=!0,x=x.slice(0,x.length-1)),x=Vo(x,e[p.index]);var w=Math.max(m+2*x,0),b=_?0:2*x,S=Qo(n),M=S?n:Kg((y+b)/w);w=m+2*(x=(y-M*m)/2/(_?M:M-1)),b=_?0:2*x,S||"fixed"===n||(M=h?Kg((Math.abs(h)+b)/w):0),v=M*w-b,d.repeatTimes=M,d.symbolMargin=x}var I=g*(v/2),A=d.pathPosition=[];A[f.index]=i[f.wh]/2,A[p.index]="start"===s?I:"end"===s?u-I:u/2,r&&(A[0]+=r[0],A[1]+=r[1]);var D=d.bundlePosition=[];D[f.index]=i[f.xy],D[p.index]=i[p.xy];var C=d.barRectShape=a({},i);C[p.wh]=g*Math.max(Math.abs(i[p.wh]),Math.abs(A[p.index]+I)),C[f.wh]=i[f.wh];var L=d.clipShape={};L[f.xy]=-i[f.xy],L[f.wh]=c.ecSize[f.wh],L[p.xy]=0,L[p.wh]=i[p.wh]}function Og(t){var e=t.symbolPatternSize,i=Jl(t.symbolType,-e/2,-e/2,e,e,t.color);return i.attr({culling:!0}),"image"!==i.type&&i.setStyle({strokeNoScale:!0}),i}function Eg(t,e,i,n){function o(t){var e=l.slice(),n=i.pxSign,o=t;return("start"===i.symbolRepeatDirection?n>0:n<0)&&(o=h-1-t),e[u.index]=d*(o-h/2+.5)+l[u.index],{position:e,scale:i.symbolScale.slice(),rotation:i.rotation}}var a=t.__pictorialBundle,r=i.symbolSize,s=i.valueLineWidth,l=i.pathPosition,u=e.valueDim,h=i.repeatTimes||0,c=0,d=r[e.valueDim.index]+s+2*i.symbolMargin;for(jg(t,function(t){t.__pictorialAnimationIndex=c,t.__pictorialRepeatTimes=h,c0)],d=t.__pictorialBarRect;kh(d.style,h,a,n,e.seriesModel,o,c),fo(d,h)}function Kg(t){var e=Math.round(t);return Math.abs(t-e)<1e-4?e:Math.ceil(t)}function $g(t,e,i){this.dimension="single",this.dimensions=["single"],this._axis=null,this._rect,this._init(t,e,i),this.model=t}function Jg(t,e){e=e||{};var i=t.coordinateSystem,n=t.axis,o={},a=n.position,r=n.orient,s=i.getRect(),l=[s.x,s.x+s.width,s.y,s.y+s.height],u={horizontal:{top:l[2],bottom:l[3]},vertical:{left:l[0],right:l[1]}};o.position=["vertical"===r?u.vertical[a]:l[0],"horizontal"===r?u.horizontal[a]:l[3]];var h={horizontal:0,vertical:1};o.rotation=Math.PI/2*h[r];var c={top:-1,bottom:1,right:1,left:-1};o.labelDirection=o.tickDirection=o.nameDirection=c[a],t.get("axisTick.inside")&&(o.tickDirection=-o.tickDirection),T(e.labelInside,t.get("axisLabel.inside"))&&(o.labelDirection=-o.labelDirection);var d=e.rotate;return null==d&&(d=t.get("axisLabel.rotate")),o.labelRotation="top"===a?-d:d,o.z2=1,o}function Qg(t,e,i,n,o){var r=t.axis;if(!r.scale.isBlank()&&r.containData(e))if(t.involveSeries){var s=tm(e,t),l=s.payloadBatch,u=s.snapToValue;l[0]&&null==o.seriesIndex&&a(o,l[0]),!n&&t.snap&&r.containData(u)&&null!=u&&(e=u),i.showPointer(t,e,l,o),i.showTooltip(t,s,u)}else i.showPointer(t,e)}function tm(t,e){var i=e.axis,n=i.dim,o=t,a=[],r=Number.MAX_VALUE,s=-1;return _P(e.seriesModels,function(e,l){var u,h,c=e.getData().mapDimension(n,!0);if(e.getAxisTooltipData){var d=e.getAxisTooltipData(c,t,i);h=d.dataIndices,u=d.nestestValue}else{if(!(h=e.getData().indicesOfNearest(c[0],t,"category"===i.type?.5:null)).length)return;u=e.getData().get(c[0],h[0])}if(null!=u&&isFinite(u)){var f=t-u,p=Math.abs(f);p<=r&&((p=0&&s<0)&&(r=p,s=f,o=u,a.length=0),_P(h,function(t){a.push({seriesIndex:e.seriesIndex,dataIndexInside:t,dataIndex:e.getData().getRawIndex(t)})}))}}),{payloadBatch:a,snapToValue:o}}function em(t,e,i,n){t[e.key]={value:i,payloadBatch:n}}function im(t,e,i,n){var o=i.payloadBatch,a=e.axis,r=a.model,s=e.axisPointerModel;if(e.triggerTooltip&&o.length){var l=e.coordSys.model,u=Ah(l),h=t.map[u];h||(h=t.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},t.list.push(h)),h.dataByAxis.push({axisDim:a.dim,axisIndex:r.componentIndex,axisType:r.type,axisId:r.id,value:n,valueLabelOpt:{precision:s.get("label.precision"),formatter:s.get("label.formatter")},seriesDataIndices:o.slice()})}}function nm(t,e,i){var n=i.axesInfo=[];_P(e,function(e,i){var o=e.axisPointerModel.option,a=t[i];a?(!e.useHandle&&(o.status="show"),o.value=a.value,o.seriesDataIndices=(a.payloadBatch||[]).slice()):!e.useHandle&&(o.status="hide"),"show"===o.status&&n.push({axisDim:e.axis.dim,axisIndex:e.axis.model.componentIndex,value:o.value})})}function om(t,e,i,n){if(!lm(e)&&t.list.length){var o=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:i.tooltipOption,position:i.position,dataIndexInside:o.dataIndexInside,dataIndex:o.dataIndex,seriesIndex:o.seriesIndex,dataByCoordSys:t.list})}else n({type:"hideTip"})}function am(t,e,i){var n=i.getZr(),o=bP(n).axisPointerLastHighlights||{},a=bP(n).axisPointerLastHighlights={};_P(t,function(t,e){var i=t.axisPointerModel.option;"show"===i.status&&_P(i.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var r=[],s=[];d(o,function(t,e){!a[e]&&s.push(t)}),d(a,function(t,e){!o[e]&&r.push(t)}),s.length&&i.dispatchAction({type:"downplay",escapeConnect:!0,batch:s}),r.length&&i.dispatchAction({type:"highlight",escapeConnect:!0,batch:r})}function rm(t,e){for(var i=0;i<(t||[]).length;i++){var n=t[i];if(e.axis.dim===n.axisDim&&e.axis.model.componentIndex===n.axisIndex)return n}}function sm(t){var e=t.axis.model,i={},n=i.axisDim=t.axis.dim;return i.axisIndex=i[n+"AxisIndex"]=e.componentIndex,i.axisName=i[n+"AxisName"]=e.name,i.axisId=i[n+"AxisId"]=e.id,i}function lm(t){return!t||null==t[0]||isNaN(t[0])||null==t[1]||isNaN(t[1])}function um(t,e,i){if(!U_.node){var n=e.getZr();SP(n).records||(SP(n).records={}),hm(n,e),(SP(n).records[t]||(SP(n).records[t]={})).handler=i}}function hm(t,e){function i(i,n){t.on(i,function(i){var o=pm(e);MP(SP(t).records,function(t){t&&n(t,i,o.dispatchAction)}),cm(o.pendings,e)})}SP(t).initialized||(SP(t).initialized=!0,i("click",v(fm,"click")),i("mousemove",v(fm,"mousemove")),i("globalout",dm))}function cm(t,e){var i,n=t.showTip.length,o=t.hideTip.length;n?i=t.showTip[n-1]:o&&(i=t.hideTip[o-1]),i&&(i.dispatchAction=null,e.dispatchAction(i))}function dm(t,e,i){t.handler("leave",null,i)}function fm(t,e,i,n){e.handler(t,i,n)}function pm(t){var e={showTip:[],hideTip:[]},i=function(n){var o=e[n.type];o?o.push(n):(n.dispatchAction=i,t.dispatchAction(n))};return{dispatchAction:i,pendings:e}}function gm(t,e){if(!U_.node){var i=e.getZr();(SP(i).records||{})[t]&&(SP(i).records[t]=null)}}function mm(){}function vm(t,e,i,n){ym(TP(i).lastProp,n)||(TP(i).lastProp=n,e?Io(i,n,t):(i.stopAnimation(),i.attr(n)))}function ym(t,e){if(w(t)&&w(e)){var i=!0;return d(e,function(e,n){i=i&&ym(t[n],e)}),!!i}return t===e}function xm(t,e){t[e.get("label.show")?"show":"hide"]()}function _m(t){return{position:t.position.slice(),rotation:t.rotation||0}}function wm(t,e,i){var n=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=o&&(t.zlevel=o),t.silent=i)})}function bm(t){var e,i=t.get("type"),n=t.getModel(i+"Style");return"line"===i?(e=n.getLineStyle()).fill=null:"shadow"===i&&((e=n.getAreaStyle()).stroke=null),e}function Sm(t,e,i,n,o){var a=Im(i.get("value"),e.axis,e.ecModel,i.get("seriesDataIndices"),{precision:i.get("label.precision"),formatter:i.get("label.formatter")}),r=i.getModel("label"),s=qM(r.get("padding")||0),l=r.getFont(),u=ke(a,l),h=o.position,c=u.width+s[1]+s[3],d=u.height+s[0]+s[2],f=o.align;"right"===f&&(h[0]-=c),"center"===f&&(h[0]-=c/2);var p=o.verticalAlign;"bottom"===p&&(h[1]-=d),"middle"===p&&(h[1]-=d/2),Mm(h,c,d,n);var g=r.get("backgroundColor");g&&"auto"!==g||(g=e.get("axisLine.lineStyle.color")),t.label={shape:{x:0,y:0,width:c,height:d,r:r.get("borderRadius")},position:h.slice(),style:{text:a,textFont:l,textFill:r.getTextColor(),textPosition:"inside",fill:g,stroke:r.get("borderColor")||"transparent",lineWidth:r.get("borderWidth")||0,shadowBlur:r.get("shadowBlur"),shadowColor:r.get("shadowColor"),shadowOffsetX:r.get("shadowOffsetX"),shadowOffsetY:r.get("shadowOffsetY")},z2:10}}function Mm(t,e,i,n){var o=n.getWidth(),a=n.getHeight();t[0]=Math.min(t[0]+e,o)-e,t[1]=Math.min(t[1]+i,a)-i,t[0]=Math.max(t[0],0),t[1]=Math.max(t[1],0)}function Im(t,e,i,n,o){t=e.scale.parse(t);var a=e.scale.getLabel(t,{precision:o.precision}),r=o.formatter;if(r){var s={value:Xl(e,t),seriesData:[]};d(n,function(t){var e=i.getSeriesByIndex(t.seriesIndex),n=t.dataIndexInside,o=e&&e.getDataParams(n);o&&s.seriesData.push(o)}),_(r)?a=r.replace("{value}",a):x(r)&&(a=r(s))}return a}function Tm(t,e,i){var n=xt();return Mt(n,n,i.rotation),St(n,n,i.position),Do([t.dataToCoord(e),(i.labelOffset||0)+(i.labelDirection||1)*(i.labelMargin||0)],n)}function Am(t,e,i,n,o,a){var r=FD.innerTextLayout(i.rotation,0,i.labelDirection);i.labelMargin=o.get("label.margin"),Sm(e,n,o,a,{position:Tm(n.axis,t,i),align:r.textAlign,verticalAlign:r.textVerticalAlign})}function Dm(t,e,i){return i=i||0,{x1:t[i],y1:t[1-i],x2:e[i],y2:e[1-i]}}function Cm(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}function Lm(t,e,i,n,o,a){return{cx:t,cy:e,r0:i,r:n,startAngle:o,endAngle:a,clockwise:!0}}function km(t,e){var i={};return i[e.dim+"AxisIndex"]=e.index,t.getCartesian(i)}function Pm(t){return"x"===t.dim?0:1}function Nm(t){return t.isHorizontal()?0:1}function Om(t,e){var i=t.getRect();return[i[kP[e]],i[kP[e]]+i[PP[e]]]}function Em(t,e,i){var n=new yM({shape:{x:t.x-10,y:t.y-10,width:0,height:t.height+20}});return To(n,{shape:{width:t.width+20,height:t.height+20}},e,i),n}function Rm(t,e,i){if(t.count())for(var n,o=e.coordinateSystem,a=e.getLayerSeries(),r=t.mapDimension("single"),s=t.mapDimension("value"),l=f(a,function(e){return f(e.indices,function(e){var i=o.dataToPoint(t.get(r,e));return i[1]=t.get(s,e),i})}),u=zm(l),h=u.y0,c=i/u.max,d=a.length,p=a[0].indices.length,g=0;ga&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;hn?t-=l+a:t+=a),null!=r&&(e+u+r>o?e-=u+r:e+=r),[t,e]}function Ov(t,e,i,n,o){var a=i.getOuterSize(),r=a.width,s=a.height;return t=Math.min(t+r,n)-r,e=Math.min(e+s,o)-s,t=Math.max(t,0),e=Math.max(e,0),[t,e]}function Ev(t,e,i){var n=i[0],o=i[1],a=0,r=0,s=e.width,l=e.height;switch(t){case"inside":a=e.x+s/2-n/2,r=e.y+l/2-o/2;break;case"top":a=e.x+s/2-n/2,r=e.y-o-5;break;case"bottom":a=e.x+s/2-n/2,r=e.y+l+5;break;case"left":a=e.x-n-5,r=e.y+l/2-o/2;break;case"right":a=e.x+s+5,r=e.y+l/2-o/2}return[a,r]}function Rv(t){return"center"===t||"middle"===t}function zv(t){return t.get("stack")||"__ec_stack_"+t.seriesIndex}function Bv(t){return t.dim}function Vv(t,e){var i={};d(t,function(t,e){var n=t.getData(),o=t.coordinateSystem.getBaseAxis(),a=o.getExtent(),r="category"===o.type?o.getBandWidth():Math.abs(a[1]-a[0])/n.count(),s=i[Bv(o)]||{bandWidth:r,remainedWidth:r,autoWidthCount:0,categoryGap:"20%",gap:"30%",stacks:{}},l=s.stacks;i[Bv(o)]=s;var u=zv(t);l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var h=Vo(t.get("barWidth"),r),c=Vo(t.get("barMaxWidth"),r),d=t.get("barGap"),f=t.get("barCategoryGap");h&&!l[u].width&&(h=Math.min(s.remainedWidth,h),l[u].width=h,s.remainedWidth-=h),c&&(l[u].maxWidth=c),null!=d&&(s.gap=d),null!=f&&(s.categoryGap=f)});var n={};return d(i,function(t,e){n[e]={};var i=t.stacks,o=t.bandWidth,a=Vo(t.categoryGap,o),r=Vo(t.gap,1),s=t.remainedWidth,l=t.autoWidthCount,u=(s-a)/(l+(l-1)*r);u=Math.max(u,0),d(i,function(t,e){var i=t.maxWidth;i&&ie[0]&&(e=e.slice().reverse());var n=t.coordToPoint([e[0],i]),o=t.coordToPoint([e[1],i]);return{x1:n[0],y1:n[1],x2:o[0],y2:o[1]}}function jv(t){return t.getRadiusAxis().inverse?0:1}function Yv(t){var e=t[0],i=t[t.length-1];e&&i&&Math.abs(Math.abs(e.coord-i.coord)-360)<1e-4&&t.pop()}function qv(t,e,i){return{position:[t.cx,t.cy],rotation:i/180*Math.PI,labelDirection:-1,tickDirection:-1,nameDirection:1,labelRotate:e.getModel("axisLabel").get("rotate"),z2:1}}function Kv(t,e,i,n,o){var a=e.axis,r=a.dataToCoord(t),s=n.getAngleAxis().getExtent()[0];s=s/180*Math.PI;var l,u,h,c=n.getRadiusAxis().getExtent();if("radius"===a.dim){var d=xt();Mt(d,d,s),St(d,d,[n.cx,n.cy]),l=Do([r,-o],d);var f=e.getModel("axisLabel").get("rotate")||0,p=FD.innerTextLayout(s,f*Math.PI/180,-1);u=p.textAlign,h=p.textVerticalAlign}else{var g=c[1];l=n.coordToPoint([g+o,r]);var m=n.cx,v=n.cy;u=Math.abs(l[0]-m)/g<.3?"center":l[0]>m?"left":"right",h=Math.abs(l[1]-v)/g<.3?"middle":l[1]>v?"top":"bottom"}return{position:l,align:u,verticalAlign:h}}function $v(t,e){e.update="updateView",Es(e,function(e,i){var n={};return i.eachComponent({mainType:"geo",query:e},function(i){i[t](e.name),d(i.coordinateSystem.regions,function(t){n[t.name]=i.isSelected(t.name)||!1})}),{selected:n,name:e.name}})}function Jv(t){var e={};d(t,function(t){e[t]=1}),t.length=0,d(e,function(e,i){t.push(i)})}function Qv(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!0}function ty(t,e,n){function o(){var t=function(){};return t.prototype.__hidden=t.prototype,new t}var a={};return MN(e,function(e){var r=a[e]=o();MN(t[e],function(t,o){if(hL.isValidType(o)){var a={type:o,visual:t};n&&n(a,e),r[o]=new hL(a),"opacity"===o&&((a=i(a)).type="colorAlpha",r.__hidden.__alphaForOpacity=new hL(a))}})}),a}function ey(t,e,n){var o;d(n,function(t){e.hasOwnProperty(t)&&Qv(e[t])&&(o=!0)}),o&&d(n,function(n){e.hasOwnProperty(n)&&Qv(e[n])?t[n]=i(e[n]):delete t[n]})}function iy(t,e,i,n,o,a){function r(t){return i.getItemVisual(h,t)}function s(t,e){i.setItemVisual(h,t,e)}function l(t,l){h=null==a?t:l;var c=i.getRawDataItem(h);if(!c||!1!==c.visualMap)for(var d=n.call(o,t),f=e[d],p=u[d],g=0,m=p.length;g1)return!1;var h=uy(i-t,o-t,n-e,a-e)/l;return!(h<0||h>1)}function ly(t){return t<=1e-6&&t>=-1e-6}function uy(t,e,i,n){return t*n-e*i}function hy(t,e,i){var n=this._targetInfoList=[],o={},a=dy(e,t);TN(PN,function(t,e){(!i||!i.include||AN(i.include,e)>=0)&&t(a,n,o)})}function cy(t){return t[0]>t[1]&&t.reverse(),t}function dy(t,e){return Vi(t,e,{includeMainTypes:LN})}function fy(t,e,i,n){var o=i.getAxis(["x","y"][t]),a=cy(f([0,1],function(t){return e?o.coordToData(o.toLocalCoord(n[t])):o.toGlobalCoord(o.dataToCoord(n[t]))})),r=[];return r[t]=a,r[1-t]=[NaN,NaN],{values:a,xyMinMax:r}}function py(t,e,i,n){return[e[0]-n[t]*i[0],e[1]-n[t]*i[1]]}function gy(t,e){var i=my(t),n=my(e),o=[i[0]/n[0],i[1]/n[1]];return isNaN(o[0])&&(o[0]=1),isNaN(o[1])&&(o[1]=1),o}function my(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}function vy(t,e,i,n,o){if(o){var a=t.getZr();a[VN]||(a[BN]||(a[BN]=yy),Nr(a,BN,i,e)(t,n))}}function yy(t,e){if(!t.isDisposed()){var i=t.getZr();i[VN]=!0,t.dispatchAction({type:"brushSelect",batch:e}),i[VN]=!1}}function xy(t,e,i,n){for(var o=0,a=e.length;o=0}function Ny(t,e,i){function n(t,e){return l(e.nodes,t)>=0}function o(t,n){var o=!1;return e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]&&(o=!0)})}),o}function a(t,n){n.nodes.push(t),e(function(e){d(i(t,e)||[],function(t){n.records[e.name][t]=!0})})}return function(i){var r={nodes:[],records:{}};if(e(function(t){r.records[t.name]={}}),!i)return r;a(i,r);var s;do{s=!1,t(function(t){!n(t,r)&&o(t,r)&&(a(t,r),s=!0)})}while(s);return r}}function Oy(t,e,i){var n=[1/0,-1/0];return $N(i,function(t){var i=t.getData();i&&$N(i.mapDimension(e,!0),function(t){var e=i.getApproximateExtent(t);e[0]n[1]&&(n[1]=e[1])})}),n[1]0?0:NaN);var r=i.getMax(!0);return null!=r&&"dataMax"!==r&&"function"!=typeof r?e[1]=r:o&&(e[1]=a>0?a-1:NaN),i.get("scale",!0)||(e[0]>0&&(e[0]=0),e[1]<0&&(e[1]=0)),e}function Ry(t,e){var i=t.getAxisModel(),n=t._percentWindow,o=t._valueWindow;if(n){var a=Zo(o,[0,500]);a=Math.min(a,20);var r=e||0===n[0]&&100===n[1];i.setRange(r?null:+o[0].toFixed(a),r?null:+o[1].toFixed(a))}}function zy(t){var e=t._minMaxSpan={},i=t._dataZoomModel;$N(["min","max"],function(n){e[n+"Span"]=i.get(n+"Span");var o=i.get(n+"ValueSpan");if(null!=o&&(e[n+"ValueSpan"]=o,null!=(o=t.getAxisModel().axis.scale.parse(o)))){var a=t._dataExtent;e[n+"Span"]=Bo(a[0]+o,a,[0,100],!0)}})}function By(t){var e={};return tO(["start","end","startValue","endValue","throttle"],function(i){t.hasOwnProperty(i)&&(e[i]=t[i])}),e}function Vy(t,e){var i=t._rangePropMode,n=t.get("rangeMode");tO([["start","startValue"],["end","endValue"]],function(t,o){var a=null!=e[t[0]],r=null!=e[t[1]];a&&!r?i[o]="percent":!a&&r?i[o]="value":n?i[o]=n[o]:a&&(i[o]="percent")})}function Gy(t){return{x:"y",y:"x",radius:"angle",angle:"radius"}[t]}function Fy(t){return"vertical"===t?"ns-resize":"ew-resize"}function Wy(t,e){var i=Uy(t),n=e.dataZoomId,o=e.coordId;d(i,function(t,i){var a=t.dataZoomInfos;a[n]&&l(e.allCoordIds,o)<0&&(delete a[n],t.count--)}),jy(i);var a=i[o];a||((a=i[o]={coordId:o,dataZoomInfos:{},count:0}).controller=Xy(t,a),a.dispatchAction=v(Yy,t)),!a.dataZoomInfos[n]&&a.count++,a.dataZoomInfos[n]=e;var r=qy(a.dataZoomInfos);a.controller.enable(r.controlType,r.opt),a.controller.setPointerChecker(e.containsPoint),Nr(a,"dispatchAction",e.dataZoomModel.get("throttle",!0),"fixRate")}function Hy(t,e){var i=Uy(t);d(i,function(t){t.controller.dispose();var i=t.dataZoomInfos;i[e]&&(delete i[e],t.count--)}),jy(i)}function Zy(t){return t.type+"\0_"+t.id}function Uy(t){var e=t.getZr();return e[fO]||(e[fO]={})}function Xy(t,e){var i=new oc(t.getZr());return d(["pan","zoom","scrollMove"],function(t){i.on(t,function(i){var n=[];d(e.dataZoomInfos,function(o){if(i.isAvailableBehavior(o.dataZoomModel.option)){var a=(o.getRange||{})[t],r=a&&a(e.controller,i);!o.dataZoomModel.get("disabled",!0)&&r&&n.push({dataZoomId:o.dataZoomId,start:r[0],end:r[1]})}}),n.length&&e.dispatchAction(n)})}),i}function jy(t){d(t,function(e,i){e.count||(e.controller.dispose(),delete t[i])})}function Yy(t,e){t.dispatchAction({type:"dataZoom",batch:e})}function qy(t){var e,i={type_true:2,type_move:1,type_false:0,type_undefined:-1},n=!0;return d(t,function(t){var o=t.dataZoomModel,a=!o.get("disabled",!0)&&(!o.get("zoomLock",!0)||"move");i["type_"+a]>i["type_"+e]&&(e=a),n&=o.get("preventDefaultMouseMove",!0)}),{controlType:e,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!n}}}function Ky(t){return function(e,i,n,o){var a=this._range,r=a.slice(),s=e.axisModels[0];if(s){var l=t(r,s,e,i,n,o);return QL(l,r,[0,100],"all"),this._range=r,a[0]!==r[0]||a[1]!==r[1]?r:void 0}}}function $y(t,e){return t&&t.hasOwnProperty&&t.hasOwnProperty(e)}function Jy(t,e,i,n){for(var o=e.targetVisuals[n],a=hL.prepareVisualTypes(o),r={color:t.getData().getVisual("color")},s=0,l=a.length;s=0&&(r[a]=+r[a].toFixed(h)),r}function fx(t,e){var n=t.getData(),o=t.coordinateSystem;if(e&&!cx(e)&&!y(e.coord)&&o){var a=o.dimensions,r=px(e,n,o,t);if((e=i(e)).type&&YO[e.type]&&r.baseAxis&&r.valueAxis){var s=XO(a,r.baseAxis.dim),l=XO(a,r.valueAxis.dim);e.coord=YO[e.type](n,r.baseDataDim,r.valueDataDim,s,l),e.value=e.coord[l]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)YO[u[h]]&&(u[h]=yx(n,n.mapDimension(a[h]),u[h]));e.coord=u}}return e}function px(t,e,i,n){var o={};return null!=t.valueIndex||null!=t.valueDim?(o.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,o.valueAxis=i.getAxis(gx(n,o.valueDataDim)),o.baseAxis=i.getOtherAxis(o.valueAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim)):(o.baseAxis=n.getBaseAxis(),o.valueAxis=i.getOtherAxis(o.baseAxis),o.baseDataDim=e.mapDimension(o.baseAxis.dim),o.valueDataDim=e.mapDimension(o.valueAxis.dim)),o}function gx(t,e){var i=t.getData(),n=i.dimensions;e=i.getDimension(e);for(var o=0;o=0)return!0}function Yx(t){for(var e=t.split(/\n+/g),i=[],n=f(Xx(e.shift()).split(pE),function(t){return{name:t,data:[]}}),o=0;o=0&&!i[o][n];o--);if(o<0){var a=t.queryComponents({mainType:"dataZoom",subType:"select",id:n})[0];if(a){var r=a.getPercentRange();i[0][n]={dataZoomId:n,start:r[0],end:r[1]}}}}),i.push(e)}function t_(t){var e=n_(t),i=e[e.length-1];e.length>1&&e.pop();var n={};return gE(i,function(t,i){for(var o=e.length-1;o>=0;o--)if(t=e[o][i]){n[i]=t;break}}),n}function e_(t){t[mE]=null}function i_(t){return n_(t).length}function n_(t){var e=t[mE];return e||(e=t[mE]=[{}]),e}function o_(t,e,i){(this._brushController=new zf(i.getZr())).on("brush",m(this._onBrush,this)).mount(),this._isZoomActive}function a_(t){var e={};return d(["xAxisIndex","yAxisIndex"],function(i){e[i]=t[i],null==e[i]&&(e[i]="all"),(!1===e[i]||"none"===e[i])&&(e[i]=[])}),e}function r_(t,e){t.setIconStatus("back",i_(e)>1?"emphasis":"normal")}function s_(t,e,i,n,o){var a=i._isZoomActive;n&&"takeGlobalCursor"===n.type&&(a="dataZoomSelect"===n.key&&n.dataZoomSelectActive),i._isZoomActive=a,t.setIconStatus("zoom",a?"emphasis":"normal");var r=new hy(a_(t.option),e,{include:["grid"]});i._brushController.setPanels(r.makePanelOpts(o,function(t){return t.xAxisDeclared&&!t.yAxisDeclared?"lineX":!t.xAxisDeclared&&t.yAxisDeclared?"lineY":"rect"})).enableBrush(!!a&&{brushType:"auto",brushStyle:{lineWidth:0,fill:"rgba(0,0,0,0.2)"}})}function l_(t){this.model=t}function u_(t){return SE(t)}function h_(){if(!TE&&AE){TE=!0;var t=AE.styleSheets;t.length<31?AE.createStyleSheet().addRule(".zrvml","behavior:url(#default#VML)"):t[0].addRule(".zrvml","behavior:url(#default#VML)")}}function c_(t){return parseInt(t,10)}function d_(t,e){h_(),this.root=t,this.storage=e;var i=document.createElement("div"),n=document.createElement("div");i.style.cssText="display:inline-block;overflow:hidden;position:relative;width:300px;height:150px;",n.style.cssText="position:absolute;left:0;top:0;",t.appendChild(i),this._vmlRoot=n,this._vmlViewport=i,this.resize();var o=e.delFromStorage,a=e.addToStorage;e.delFromStorage=function(t){o.call(e,t),t&&t.onRemove&&t.onRemove(n)},e.addToStorage=function(t){t.onAdd&&t.onAdd(n),a.call(e,t)},this._firstPaint=!0}function f_(t){return function(){Yw('In IE8.0 VML mode painter not support method "'+t+'"')}}function p_(t){return document.createElementNS(sR,t)}function g_(t){return cR(1e4*t)/1e4}function m_(t){return t-vR}function v_(t,e){var i=e?t.textFill:t.fill;return null!=i&&i!==hR}function y_(t,e){var i=e?t.textStroke:t.stroke;return null!=i&&i!==hR}function x_(t,e){e&&__(t,"transform","matrix("+uR.call(e,",")+")")}function __(t,e,i){(!i||"linear"!==i.type&&"radial"!==i.type)&&t.setAttribute(e,i)}function w_(t,e,i){t.setAttributeNS("http://www.w3.org/1999/xlink",e,i)}function b_(t,e,i,n){if(v_(e,i)){var o=i?e.textFill:e.fill;o="transparent"===o?hR:o,"none"!==t.getAttribute("clip-path")&&o===hR&&(o="rgba(0, 0, 0, 0.002)"),__(t,"fill",o),__(t,"fill-opacity",null!=e.fillOpacity?e.fillOpacity*e.opacity:e.opacity)}else __(t,"fill",hR);if(y_(e,i)){var a=i?e.textStroke:e.stroke;__(t,"stroke",a="transparent"===a?hR:a),__(t,"stroke-width",(i?e.textStrokeWidth:e.lineWidth)/(!i&&e.strokeNoScale?n.getLineScale():1)),__(t,"paint-order",i?"stroke":"fill"),__(t,"stroke-opacity",null!=e.strokeOpacity?e.strokeOpacity:e.opacity),e.lineDash?(__(t,"stroke-dasharray",e.lineDash.join(",")),__(t,"stroke-dashoffset",cR(e.lineDashOffset||0))):__(t,"stroke-dasharray",""),e.lineCap&&__(t,"stroke-linecap",e.lineCap),e.lineJoin&&__(t,"stroke-linejoin",e.lineJoin),e.miterLimit&&__(t,"stroke-miterlimit",e.miterLimit)}else __(t,"stroke",hR)}function S_(t){for(var e=[],i=t.data,n=t.len(),o=0;o=gR||!m_(g)&&(d>-pR&&d<0||d>pR)==!!p;var y=g_(s+u*fR(c)),x=g_(l+h*dR(c));m&&(d=p?gR-1e-4:1e-4-gR,v=!0,9===o&&e.push("M",y,x));var _=g_(s+u*fR(c+d)),w=g_(l+h*dR(c+d));e.push("A",g_(u),g_(h),cR(f*mR),+v,+p,_,w);break;case lR.Z:a="Z";break;case lR.R:var _=g_(i[o++]),w=g_(i[o++]),b=g_(i[o++]),S=g_(i[o++]);e.push("M",_,w,"L",_+b,w,"L",_+b,w+S,"L",_,w+S,"L",_,w)}a&&e.push(a);for(var M=0;M=11),domSupported:"undefined"!=typeof document}}(navigator.userAgent),X_={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},j_={"[object Int8Array]":1,"[object Uint8Array]":1,"[object Uint8ClampedArray]":1,"[object Int16Array]":1,"[object Uint16Array]":1,"[object Int32Array]":1,"[object Uint32Array]":1,"[object Float32Array]":1,"[object Float64Array]":1},Y_=Object.prototype.toString,q_=Array.prototype,K_=q_.forEach,$_=q_.filter,J_=q_.slice,Q_=q_.map,tw=q_.reduce,ew={},iw=function(){return ew.createCanvas()};ew.createCanvas=function(){return document.createElement("canvas")};var nw,ow="__ec_primitive__";E.prototype={constructor:E,get:function(t){return this.data.hasOwnProperty(t)?this.data[t]:null},set:function(t,e){return this.data[t]=e},each:function(t,e){void 0!==e&&(t=m(t,e));for(var i in this.data)this.data.hasOwnProperty(i)&&t(this.data[i],i)},removeKey:function(t){delete this.data[t]}};var aw=(Object.freeze||Object)({$override:e,clone:i,merge:n,mergeAll:o,extend:a,defaults:r,createCanvas:iw,getContext:s,indexOf:l,inherits:u,mixin:h,isArrayLike:c,each:d,map:f,reduce:p,filter:g,find:function(t,e,i){if(t&&e)for(var n=0,o=t.length;n3&&(n=dw.call(n,1));for(var a=e.length,r=0;r4&&(n=dw.call(n,1,n.length-1));for(var a=n[n.length-1],r=e.length,s=0;s1&&n&&n.length>1){var a=ft(n)/ft(o);!isFinite(a)&&(a=1),e.pinchScale=a;var r=pt(n);return e.pinchX=r[0],e.pinchY=r[1],{type:"pinch",target:t[0].target,event:e}}}}},xw="silent";vt.prototype.dispose=function(){};var _w=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],ww=function(t,e,i,n){fw.call(this),this.storage=t,this.painter=e,this.painterRoot=n,i=i||new vt,this.proxy=null,this._hovered={},this._lastTouchMoment,this._lastX,this._lastY,this._gestureMgr,it.call(this),this.setHandlerProxy(i)};ww.prototype={constructor:ww,setHandlerProxy:function(t){this.proxy&&this.proxy.dispose(),t&&(d(_w,function(e){t.on&&t.on(e,this[e],this)},this),t.handler=this),this.proxy=t},mousemove:function(t){var e=t.zrX,i=t.zrY,n=this._hovered,o=n.target;o&&!o.__zr&&(o=(n=this.findHover(n.x,n.y)).target);var a=this._hovered=this.findHover(e,i),r=a.target,s=this.proxy;s.setCursor&&s.setCursor(r?r.cursor:"default"),o&&r!==o&&this.dispatchToElement(n,"mouseout",t),this.dispatchToElement(a,"mousemove",t),r&&r!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){this.dispatchToElement(this._hovered,"mouseout",t);var e,i=t.toElement||t.relatedTarget;do{i=i&&i.parentNode}while(i&&9!==i.nodeType&&!(e=i===this.painterRoot));!e&&this.trigger("globalout",{event:t})},resize:function(t){this._hovered={}},dispatch:function(t,e){var i=this[t];i&&i.call(this,e)},dispose:function(){this.proxy.dispose(),this.storage=this.proxy=this.painter=null},setCursorStyle:function(t){var e=this.proxy;e.setCursor&&e.setCursor(t)},dispatchToElement:function(t,e,i){var n=(t=t||{}).target;if(!n||!n.silent){for(var o="on"+e,a=gt(e,t,i);n&&(n[o]&&(a.cancelBubble=n[o].call(n,a)),n.trigger(e,a),n=n.parent,!a.cancelBubble););a.cancelBubble||(this.trigger(e,a),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[o]&&t[o].call(t,a),t.trigger&&t.trigger(e,a)}))}},findHover:function(t,e,i){for(var n=this.storage.getDisplayList(),o={x:t,y:e},a=n.length-1;a>=0;a--){var r;if(n[a]!==i&&!n[a].ignore&&(r=yt(n[a],t,e))&&(!o.topTarget&&(o.topTarget=n[a]),r!==xw)){o.target=n[a];break}}return o},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new vw);var i=this._gestureMgr;"start"===e&&i.clear();var n=i.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&i.clear(),n){var o=n.type;t.gestureEvent=o,this.dispatchToElement({target:n.target},o,n.event)}}},d(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(t){ww.prototype[t]=function(e){var i=this.findHover(e.zrX,e.zrY),n=i.target;if("mousedown"===t)this._downEl=n,this._downPoint=[e.zrX,e.zrY],this._upEl=n;else if("mouseup"===t)this._upEl=n;else if("click"===t){if(this._downEl!==this._upEl||!this._downPoint||uw(this._downPoint,[e.zrX,e.zrY])>4)return;this._downPoint=null}this.dispatchToElement(i,t,e)}}),h(ww,fw),h(ww,it);var bw="undefined"==typeof Float32Array?Array:Float32Array,Sw=(Object.freeze||Object)({create:xt,identity:_t,copy:wt,mul:bt,translate:St,rotate:Mt,scale:It,invert:Tt,clone:At}),Mw=_t,Iw=5e-5,Tw=function(t){(t=t||{}).position||(this.position=[0,0]),null==t.rotation&&(this.rotation=0),t.scale||(this.scale=[1,1]),this.origin=this.origin||null},Aw=Tw.prototype;Aw.transform=null,Aw.needLocalTransform=function(){return Dt(this.rotation)||Dt(this.position[0])||Dt(this.position[1])||Dt(this.scale[0]-1)||Dt(this.scale[1]-1)};var Dw=[];Aw.updateTransform=function(){var t=this.parent,e=t&&t.transform,i=this.needLocalTransform(),n=this.transform;if(i||e){n=n||xt(),i?this.getLocalTransform(n):Mw(n),e&&(i?bt(n,t.transform,n):wt(n,t.transform)),this.transform=n;var o=this.globalScaleRatio;if(null!=o&&1!==o){this.getGlobalScale(Dw);var a=Dw[0]<0?-1:1,r=Dw[1]<0?-1:1,s=((Dw[0]-a)*o+a)/Dw[0]||0,l=((Dw[1]-r)*o+r)/Dw[1]||0;n[0]*=s,n[1]*=s,n[2]*=l,n[3]*=l}this.invTransform=this.invTransform||xt(),Tt(this.invTransform,n)}else n&&Mw(n)},Aw.getLocalTransform=function(t){return Tw.getLocalTransform(this,t)},Aw.setTransform=function(t){var e=this.transform,i=t.dpr||1;e?t.setTransform(i*e[0],i*e[1],i*e[2],i*e[3],i*e[4],i*e[5]):t.setTransform(i,0,0,i,0,0)},Aw.restoreTransform=function(t){var e=t.dpr||1;t.setTransform(e,0,0,e,0,0)};var Cw=[],Lw=xt();Aw.setLocalTransform=function(t){if(t){var e=t[0]*t[0]+t[1]*t[1],i=t[2]*t[2]+t[3]*t[3],n=this.position,o=this.scale;Dt(e-1)&&(e=Math.sqrt(e)),Dt(i-1)&&(i=Math.sqrt(i)),t[0]<0&&(e=-e),t[3]<0&&(i=-i),n[0]=t[4],n[1]=t[5],o[0]=e,o[1]=i,this.rotation=Math.atan2(-t[1]/i,t[0]/e)}},Aw.decomposeTransform=function(){if(this.transform){var t=this.parent,e=this.transform;t&&t.transform&&(bt(Cw,t.invTransform,e),e=Cw);var i=this.origin;i&&(i[0]||i[1])&&(Lw[4]=i[0],Lw[5]=i[1],bt(Cw,e,Lw),Cw[4]-=i[0],Cw[5]-=i[1],e=Cw),this.setLocalTransform(e)}},Aw.getGlobalScale=function(t){var e=this.transform;return t=t||[],e?(t[0]=Math.sqrt(e[0]*e[0]+e[1]*e[1]),t[1]=Math.sqrt(e[2]*e[2]+e[3]*e[3]),e[0]<0&&(t[0]=-t[0]),e[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},Aw.transformCoordToLocal=function(t,e){var i=[t,e],n=this.invTransform;return n&&Q(i,i,n),i},Aw.transformCoordToGlobal=function(t,e){var i=[t,e],n=this.transform;return n&&Q(i,i,n),i},Tw.getLocalTransform=function(t,e){Mw(e=e||[]);var i=t.origin,n=t.scale||[1,1],o=t.rotation||0,a=t.position||[0,0];return i&&(e[4]-=i[0],e[5]-=i[1]),It(e,e,n),o&&Mt(e,e,o),i&&(e[4]+=i[0],e[5]+=i[1]),e[4]+=a[0],e[5]+=a[1],e};var kw={linear:function(t){return t},quadraticIn:function(t){return t*t},quadraticOut:function(t){return t*(2-t)},quadraticInOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)},cubicIn:function(t){return t*t*t},cubicOut:function(t){return--t*t*t+1},cubicInOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},quarticIn:function(t){return t*t*t*t},quarticOut:function(t){return 1- --t*t*t*t},quarticInOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},quinticIn:function(t){return t*t*t*t*t},quinticOut:function(t){return--t*t*t*t*t+1},quinticInOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},sinusoidalIn:function(t){return 1-Math.cos(t*Math.PI/2)},sinusoidalOut:function(t){return Math.sin(t*Math.PI/2)},sinusoidalInOut:function(t){return.5*(1-Math.cos(Math.PI*t))},exponentialIn:function(t){return 0===t?0:Math.pow(1024,t-1)},exponentialOut:function(t){return 1===t?1:1-Math.pow(2,-10*t)},exponentialInOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))},circularIn:function(t){return 1-Math.sqrt(1-t*t)},circularOut:function(t){return Math.sqrt(1- --t*t)},circularInOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},elasticIn:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4))},elasticOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/.4)+1)},elasticInOut:function(t){var e,i=.1;return 0===t?0:1===t?1:(!i||i<1?(i=1,e=.1):e=.4*Math.asin(1/i)/(2*Math.PI),(t*=2)<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/.4)*.5+1)},backIn:function(t){var e=1.70158;return t*t*((e+1)*t-e)},backOut:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},backInOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)},bounceIn:function(t){return 1-kw.bounceOut(1-t)},bounceOut:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},bounceInOut:function(t){return t<.5?.5*kw.bounceIn(2*t):.5*kw.bounceOut(2*t-1)+.5}};Ct.prototype={constructor:Ct,step:function(t,e){if(this._initialized||(this._startTime=t+this._delay,this._initialized=!0),this._paused)this._pausedTime+=e;else{var i=(t-this._startTime-this._pausedTime)/this._life;if(!(i<0)){i=Math.min(i,1);var n=this.easing,o="string"==typeof n?kw[n]:n,a="function"==typeof o?o(i):i;return this.fire("frame",a),1===i?this.loop?(this.restart(t),"restart"):(this._needsRemove=!0,"destroy"):null}}},restart:function(t){var e=(t-this._startTime-this._pausedTime)%this._life;this._startTime=t-e+this.gap,this._pausedTime=0,this._needsRemove=!1},fire:function(t,e){this[t="on"+t]&&this[t](this._target,e)},pause:function(){this._paused=!0},resume:function(){this._paused=!1}};var Pw=function(){this.head=null,this.tail=null,this._len=0},Nw=Pw.prototype;Nw.insert=function(t){var e=new Ow(t);return this.insertEntry(e),e},Nw.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},Nw.remove=function(t){var e=t.prev,i=t.next;e?e.next=i:this.head=i,i?i.prev=e:this.tail=e,t.next=t.prev=null,this._len--},Nw.len=function(){return this._len},Nw.clear=function(){this.head=this.tail=null,this._len=0};var Ow=function(t){this.value=t,this.next,this.prev},Ew=function(t){this._list=new Pw,this._map={},this._maxSize=t||10,this._lastRemovedEntry=null},Rw=Ew.prototype;Rw.put=function(t,e){var i=this._list,n=this._map,o=null;if(null==n[t]){var a=i.len(),r=this._lastRemovedEntry;if(a>=this._maxSize&&a>0){var s=i.head;i.remove(s),delete n[s.key],o=s.value,this._lastRemovedEntry=s}r?r.value=e:r=new Ow(e),r.key=t,i.insertEntry(r),n[t]=r}return o},Rw.get=function(t){var e=this._map[t],i=this._list;if(null!=e)return e!==i.tail&&(i.remove(e),i.insertEntry(e)),e.value},Rw.clear=function(){this._list.clear(),this._map={}};var zw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]},Bw=new Ew(20),Vw=null,Gw=Ut,Fw=Xt,Ww=(Object.freeze||Object)({parse:Gt,lift:Ht,toHex:Zt,fastLerp:Ut,fastMapToColor:Gw,lerp:Xt,mapToColor:Fw,modifyHSL:jt,modifyAlpha:Yt,stringify:qt}),Hw=Array.prototype.slice,Zw=function(t,e,i,n){this._tracks={},this._target=t,this._loop=e||!1,this._getter=i||Kt,this._setter=n||$t,this._clipCount=0,this._delay=0,this._doneList=[],this._onframeList=[],this._clipList=[]};Zw.prototype={when:function(t,e){var i=this._tracks;for(var n in e)if(e.hasOwnProperty(n)){if(!i[n]){i[n]=[];var o=this._getter(this._target,n);if(null==o)continue;0!==t&&i[n].push({time:0,value:ae(o)})}i[n].push({time:t,value:e[n]})}return this},during:function(t){return this._onframeList.push(t),this},pause:function(){for(var t=0;t=i.x&&t<=i.x+i.width&&e>=i.y&&e<=i.y+i.height},clone:function(){return new de(this.x,this.y,this.width,this.height)},copy:function(t){this.x=t.x,this.y=t.y,this.width=t.width,this.height=t.height},plain:function(){return{x:this.x,y:this.y,width:this.width,height:this.height}}},de.create=function(t){return new de(t.x,t.y,t.width,t.height)};var tb=function(t){t=t||{},Kw.call(this,t);for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};tb.prototype={constructor:tb,isGroup:!0,type:"group",silent:!1,children:function(){return this._children.slice()},childAt:function(t){return this._children[t]},childOfName:function(t){for(var e=this._children,i=0;i=0&&(i.splice(n,0,t),this._doAdd(t))}return this},_doAdd:function(t){t.parent&&t.parent.remove(t),t.parent=this;var e=this.__storage,i=this.__zr;e&&e!==t.__storage&&(e.addToStorage(t),t instanceof tb&&t.addChildrenToStorage(e)),i&&i.refresh()},remove:function(t){var e=this.__zr,i=this.__storage,n=this._children,o=l(n,t);return o<0?this:(n.splice(o,1),t.parent=null,i&&(i.delFromStorage(t),t instanceof tb&&t.delChildrenFromStorage(i)),e&&e.refresh(),this)},removeAll:function(){var t,e,i=this._children,n=this.__storage;for(e=0;e=0&&(this.delFromStorage(t),this._roots.splice(o,1),t instanceof tb&&t.delChildrenFromStorage(this))}},addToStorage:function(t){return t&&(t.__storage=this,t.dirty(!1)),this},delFromStorage:function(t){return t&&(t.__storage=null),this},dispose:function(){this._renderList=this._roots=null},displayableSortFunc:we};var ob={shadowBlur:1,shadowOffsetX:1,shadowOffsetY:1,textShadowBlur:1,textShadowOffsetX:1,textShadowOffsetY:1,textBoxShadowBlur:1,textBoxShadowOffsetX:1,textBoxShadowOffsetY:1},ab=function(t,e,i){return ob.hasOwnProperty(e)?i*=t.dpr:i},rb={NONE:0,STYLE_BIND:1,PLAIN_TEXT:2},sb=9,lb=[["shadowBlur",0],["shadowOffsetX",0],["shadowOffsetY",0],["shadowColor","#000"],["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]],ub=function(t){this.extendFrom(t,!1)};ub.prototype={constructor:ub,fill:"#000",stroke:null,opacity:1,fillOpacity:null,strokeOpacity:null,lineDash:null,lineDashOffset:0,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,lineWidth:1,strokeNoScale:!1,text:null,font:null,textFont:null,fontStyle:null,fontWeight:null,fontSize:null,fontFamily:null,textTag:null,textFill:"#000",textStroke:null,textWidth:null,textHeight:null,textStrokeWidth:0,textLineHeight:null,textPosition:"inside",textRect:null,textOffset:null,textAlign:null,textVerticalAlign:null,textDistance:5,textShadowColor:"transparent",textShadowBlur:0,textShadowOffsetX:0,textShadowOffsetY:0,textBoxShadowColor:"transparent",textBoxShadowBlur:0,textBoxShadowOffsetX:0,textBoxShadowOffsetY:0,transformText:!1,textRotation:0,textOrigin:null,textBackgroundColor:null,textBorderColor:null,textBorderWidth:0,textBorderRadius:0,textPadding:null,rich:null,truncate:null,blend:null,bind:function(t,e,i){var n=this,o=i&&i.style,a=!o||t.__attrCachedBy!==rb.STYLE_BIND;t.__attrCachedBy=rb.STYLE_BIND;for(var r=0;r0},extendFrom:function(t,e){if(t)for(var i in t)!t.hasOwnProperty(i)||!0!==e&&(!1===e?this.hasOwnProperty(i):null==t[i])||(this[i]=t[i])},set:function(t,e){"string"==typeof t?this[t]=e:this.extendFrom(t,!0)},clone:function(){var t=new this.constructor;return t.extendFrom(this,!0),t},getGradient:function(t,e,i){for(var n=("radial"===e.type?Se:be)(t,e,i),o=e.colorStops,a=0;a=0&&i.splice(n,1),t.__hoverMir=null},clearHover:function(t){for(var e=this._hoverElements,i=0;i15)break}s.__drawIndex=m,s.__drawIndex0&&t>n[0]){for(r=0;rt);r++);a=i[n[r]]}if(n.splice(r+1,0,t),i[t]=e,!e.virtual)if(a){var l=a.dom;l.nextSibling?s.insertBefore(e.dom,l.nextSibling):s.appendChild(e.dom)}else s.firstChild?s.insertBefore(e.dom,s.firstChild):s.appendChild(e.dom)}else Yw("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var i,n,o=this._zlevelList;for(n=0;n0?.01:0),this._needsManuallyCompositing),a.__builtin__||Yw("ZLevel "+s+" has been used by unkown layer "+a.id),a!==i&&(a.__used=!0,a.__startIndex!==o&&(a.__dirty=!0),a.__startIndex=o,a.incremental?a.__drawIndex=-1:a.__drawIndex=o,e(o),i=a),r.__dirty&&(a.__dirty=!0,a.incremental&&a.__drawIndex<0&&(a.__drawIndex=o))}e(o),this.eachBuiltinLayer(function(t,e){!t.__used&&t.getElementCount()>0&&(t.__dirty=!0,t.__startIndex=t.__endIndex=t.__drawIndex=0),t.__dirty&&t.__drawIndex<0&&(t.__drawIndex=t.__startIndex)})},clear:function(){return this.eachBuiltinLayer(this._clearLayer),this},_clearLayer:function(t){t.clear()},setBackgroundColor:function(t){this._backgroundColor=t},configLayer:function(t,e){if(e){var i=this._layerConfig;i[t]?n(i[t],e,!0):i[t]=e;for(var o=0;o=0&&this._clips.splice(e,1)},removeAnimator:function(t){for(var e=t.getClips(),i=0;i=0||n&&l(n,r)<0)){var s=e.getShallow(r);null!=s&&(o[t[a][0]]=s)}}return o}},tS=Qb([["lineWidth","width"],["stroke","color"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),eS={getLineStyle:function(t){var e=tS(this,t),i=this.getLineDash(e.lineWidth);return i&&(e.lineDash=i),e},getLineDash:function(t){null==t&&(t=1);var e=this.get("type"),i=Math.max(t,2),n=4*t;return"solid"===e||null==e?null:"dashed"===e?[n,n]:[i,i]}},iS=Qb([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),nS={getAreaStyle:function(t,e){return iS(this,t,e)}},oS=Math.pow,aS=Math.sqrt,rS=1e-8,sS=1e-4,lS=aS(3),uS=1/3,hS=V(),cS=V(),dS=V(),fS=Math.min,pS=Math.max,gS=Math.sin,mS=Math.cos,vS=2*Math.PI,yS=V(),xS=V(),_S=V(),wS=[],bS=[],SS={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},MS=[],IS=[],TS=[],AS=[],DS=Math.min,CS=Math.max,LS=Math.cos,kS=Math.sin,PS=Math.sqrt,NS=Math.abs,OS="undefined"!=typeof Float32Array,ES=function(t){this._saveData=!t,this._saveData&&(this.data=[]),this._ctx=null};ES.prototype={constructor:ES,_xi:0,_yi:0,_x0:0,_y0:0,_ux:0,_uy:0,_len:0,_lineDash:null,_dashOffset:0,_dashIdx:0,_dashSum:0,setScale:function(t,e){this._ux=NS(1/Xw/t)||0,this._uy=NS(1/Xw/e)||0},getContext:function(){return this._ctx},beginPath:function(t){return this._ctx=t,t&&t.beginPath(),t&&(this.dpr=t.dpr),this._saveData&&(this._len=0),this._lineDash&&(this._lineDash=null,this._dashOffset=0),this},moveTo:function(t,e){return this.addData(SS.M,t,e),this._ctx&&this._ctx.moveTo(t,e),this._x0=t,this._y0=e,this._xi=t,this._yi=e,this},lineTo:function(t,e){var i=NS(t-this._xi)>this._ux||NS(e-this._yi)>this._uy||this._len<5;return this.addData(SS.L,t,e),this._ctx&&i&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),i&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,i,n,o,a){return this.addData(SS.C,t,e,i,n,o,a),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,i,n,o,a):this._ctx.bezierCurveTo(t,e,i,n,o,a)),this._xi=o,this._yi=a,this},quadraticCurveTo:function(t,e,i,n){return this.addData(SS.Q,t,e,i,n),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,i,n):this._ctx.quadraticCurveTo(t,e,i,n)),this._xi=i,this._yi=n,this},arc:function(t,e,i,n,o,a){return this.addData(SS.A,t,e,i,i,n,o-n,0,a?0:1),this._ctx&&this._ctx.arc(t,e,i,n,o,a),this._xi=LS(o)*i+t,this._yi=kS(o)*i+e,this},arcTo:function(t,e,i,n,o){return this._ctx&&this._ctx.arcTo(t,e,i,n,o),this},rect:function(t,e,i,n){return this._ctx&&this._ctx.rect(t,e,i,n),this.addData(SS.R,t,e,i,n),this},closePath:function(){this.addData(SS.Z);var t=this._ctx,e=this._x0,i=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,i),t.closePath()),this._xi=e,this._yi=i,this},fill:function(t){t&&t.fill(),this.toStatic()},stroke:function(t){t&&t.stroke(),this.toStatic()},setLineDash:function(t){if(t instanceof Array){this._lineDash=t,this._dashIdx=0;for(var e=0,i=0;ie.length&&(this._expandData(),e=this.data);for(var i=0;i0&&f<=t||h<0&&f>=t||0===h&&(c>0&&p<=e||c<0&&p>=e);)f+=h*(i=r[n=this._dashIdx]),p+=c*i,this._dashIdx=(n+1)%g,h>0&&fl||c>0&&pu||s[n%2?"moveTo":"lineTo"](h>=0?DS(f,t):CS(f,t),c>=0?DS(p,e):CS(p,e));h=f-t,c=p-e,this._dashOffset=-PS(h*h+c*c)},_dashedBezierTo:function(t,e,i,n,o,a){var r,s,l,u,h,c=this._dashSum,d=this._dashOffset,f=this._lineDash,p=this._ctx,g=this._xi,m=this._yi,v=tn,y=0,x=this._dashIdx,_=f.length,w=0;for(d<0&&(d=c+d),d%=c,r=0;r<1;r+=.1)s=v(g,t,i,o,r+.1)-v(g,t,i,o,r),l=v(m,e,n,a,r+.1)-v(m,e,n,a,r),y+=PS(s*s+l*l);for(;x<_&&!((w+=f[x])>d);x++);for(r=(w-d)/y;r<=1;)u=v(g,t,i,o,r),h=v(m,e,n,a,r),x%2?p.moveTo(u,h):p.lineTo(u,h),r+=f[x]/y,x=(x+1)%_;x%2!=0&&p.lineTo(o,a),s=o-u,l=a-h,this._dashOffset=-PS(s*s+l*l)},_dashedQuadraticTo:function(t,e,i,n){var o=i,a=n;i=(i+2*t)/3,n=(n+2*e)/3,t=(this._xi+2*t)/3,e=(this._yi+2*e)/3,this._dashedBezierTo(t,e,i,n,o,a)},toStatic:function(){var t=this.data;t instanceof Array&&(t.length=this._len,OS&&(this.data=new Float32Array(t)))},getBoundingRect:function(){MS[0]=MS[1]=TS[0]=TS[1]=Number.MAX_VALUE,IS[0]=IS[1]=AS[0]=AS[1]=-Number.MAX_VALUE;for(var t=this.data,e=0,i=0,n=0,o=0,a=0;al||NS(r-o)>u||c===h-1)&&(t.lineTo(a,r),n=a,o=r);break;case SS.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),n=s[c-2],o=s[c-1];break;case SS.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],x=s[c++],_=s[c++],w=g>m?g:m,b=g>m?1:g/m,S=g>m?m/g:1,M=v+y;Math.abs(g-m)>.001?(t.translate(f,p),t.rotate(x),t.scale(b,S),t.arc(0,0,w,v,M,1-_),t.scale(1/b,1/S),t.rotate(-x),t.translate(-f,-p)):t.arc(f,p,w,v,M,1-_),1===c&&(e=LS(v)*g+f,i=kS(v)*m+p),n=LS(M)*g+f,o=kS(M)*m+p;break;case SS.R:e=n=s[c],i=o=s[c+1],t.rect(s[c++],s[c++],s[c++],s[c++]);break;case SS.Z:t.closePath(),n=e,o=i}}}},ES.CMD=SS;var RS=2*Math.PI,zS=2*Math.PI,BS=ES.CMD,VS=2*Math.PI,GS=1e-4,FS=[-1,-1,-1],WS=[-1,-1],HS=fb.prototype.getCanvasPattern,ZS=Math.abs,US=new ES(!0);Pn.prototype={constructor:Pn,type:"path",__dirtyPath:!0,strokeContainThreshold:5,subPixelOptimize:!1,brush:function(t,e){var i=this.style,n=this.path||US,o=i.hasStroke(),a=i.hasFill(),r=i.fill,s=i.stroke,l=a&&!!r.colorStops,u=o&&!!s.colorStops,h=a&&!!r.image,c=o&&!!s.image;if(i.bind(t,this,e),this.setTransform(t),this.__dirty){var d;l&&(d=d||this.getBoundingRect(),this._fillGradient=i.getGradient(t,r,d)),u&&(d=d||this.getBoundingRect(),this._strokeGradient=i.getGradient(t,s,d))}l?t.fillStyle=this._fillGradient:h&&(t.fillStyle=HS.call(r,t)),u?t.strokeStyle=this._strokeGradient:c&&(t.strokeStyle=HS.call(s,t));var f=i.lineDash,p=i.lineDashOffset,g=!!t.setLineDash,m=this.getGlobalScale();if(n.setScale(m[0],m[1]),this.__dirtyPath||f&&!g&&o?(n.beginPath(t),f&&!g&&(n.setLineDash(f),n.setLineDashOffset(p)),this.buildPath(n,this.shape,!1),this.path&&(this.__dirtyPath=!1)):(t.beginPath(),this.path.rebuildPath(t)),a)if(null!=i.fillOpacity){v=t.globalAlpha;t.globalAlpha=i.fillOpacity*i.opacity,n.fill(t),t.globalAlpha=v}else n.fill(t);if(f&&g&&(t.setLineDash(f),t.lineDashOffset=p),o)if(null!=i.strokeOpacity){var v=t.globalAlpha;t.globalAlpha=i.strokeOpacity*i.opacity,n.stroke(t),t.globalAlpha=v}else n.stroke(t);f&&g&&t.setLineDash([]),null!=i.text&&(this.restoreTransform(t),this.drawRectText(t,this.getBoundingRect()))},buildPath:function(t,e,i){},createPathProxy:function(){this.path=new ES},getBoundingRect:function(){var t=this._rect,e=this.style,i=!t;if(i){var n=this.path;n||(n=this.path=new ES),this.__dirtyPath&&(n.beginPath(),this.buildPath(n,this.shape,!1)),t=n.getBoundingRect()}if(this._rect=t,e.hasStroke()){var o=this._rectWithStroke||(this._rectWithStroke=t.clone());if(this.__dirty||i){o.copy(t);var a=e.lineWidth,r=e.strokeNoScale?this.getLineScale():1;e.hasFill()||(a=Math.max(a,this.strokeContainThreshold||4)),r>1e-10&&(o.width+=a/r,o.height+=a/r,o.x-=a/r/2,o.y-=a/r/2)}return o}return t},contain:function(t,e){var i=this.transformCoordToLocal(t,e),n=this.getBoundingRect(),o=this.style;if(t=i[0],e=i[1],n.contain(t,e)){var a=this.path.data;if(o.hasStroke()){var r=o.lineWidth,s=o.strokeNoScale?this.getLineScale():1;if(s>1e-10&&(o.hasFill()||(r=Math.max(r,this.strokeContainThreshold)),kn(a,r/s,t,e)))return!0}if(o.hasFill())return Ln(a,t,e)}return!1},dirty:function(t){null==t&&(t=!0),t&&(this.__dirtyPath=t,this._rect=null),this.__dirty=this.__dirtyText=!0,this.__zr&&this.__zr.refresh(),this.__clipTarget&&this.__clipTarget.dirty()},animateShape:function(t){return this.animate("shape",t)},attrKV:function(t,e){"shape"===t?(this.setShape(e),this.__dirtyPath=!0,this._rect=null):di.prototype.attrKV.call(this,t,e)},setShape:function(t,e){var i=this.shape;if(i){if(w(t))for(var n in t)t.hasOwnProperty(n)&&(i[n]=t[n]);else i[t]=e;this.dirty(!0)}return this},getLineScale:function(){var t=this.transform;return t&&ZS(t[0]-1)>1e-10&&ZS(t[3]-1)>1e-10?Math.sqrt(ZS(t[0]*t[3]-t[2]*t[1])):1}},Pn.extend=function(t){var e=function(e){Pn.call(this,e),t.style&&this.style.extendFrom(t.style,!1);var i=t.shape;if(i){this.shape=this.shape||{};var n=this.shape;for(var o in i)!n.hasOwnProperty(o)&&i.hasOwnProperty(o)&&(n[o]=i[o])}t.init&&t.init.call(this,e)};u(e,Pn);for(var i in t)"style"!==i&&"shape"!==i&&(e.prototype[i]=t[i]);return e},u(Pn,di);var XS=ES.CMD,jS=[[],[],[]],YS=Math.sqrt,qS=Math.atan2,KS=function(t,e){var i,n,o,a,r,s,l=t.data,u=XS.M,h=XS.C,c=XS.L,d=XS.R,f=XS.A,p=XS.Q;for(o=0,a=0;o=11?function(){var e,i=this.__clipPaths,n=this.style;if(i)for(var o=0;oi-2?i-1:c+1],u=t[c>i-3?i-1:c+2]);var p=d*d,g=d*p;n.push([Bn(s[0],f[0],l[0],u[0],d,p,g),Bn(s[1],f[1],l[1],u[1],d,p,g)])}return n},fM=function(t,e,i,n){var o,a,r,s,l=[],u=[],h=[],c=[];if(n){r=[1/0,1/0],s=[-1/0,-1/0];for(var d=0,f=t.length;d=i&&a>=o)return{x:i,y:o,width:n-i,height:a-o}},createIcon:Po,Group:tb,Image:fi,Text:rM,Circle:sM,Sector:hM,Ring:cM,Polygon:pM,Polyline:gM,Rect:yM,Line:_M,BezierCurve:bM,Arc:SM,IncrementalDisplayable:Zn,CompoundPath:MM,LinearGradient:TM,RadialGradient:AM,BoundingRect:de}),BM=["textStyle","color"],VM={getTextColor:function(t){var e=this.ecModel;return this.getShallow("color")||(!t&&e?e.get(BM):null)},getFont:function(){return So({fontStyle:this.getShallow("fontStyle"),fontWeight:this.getShallow("fontWeight"),fontSize:this.getShallow("fontSize"),fontFamily:this.getShallow("fontFamily")},this.ecModel)},getTextRect:function(t){return ke(t,this.getFont(),this.getShallow("align"),this.getShallow("verticalAlign")||this.getShallow("baseline"),this.getShallow("padding"),this.getShallow("lineHeight"),this.getShallow("rich"),this.getShallow("truncateText"))}},GM=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"],["textPosition"],["textAlign"]]),FM={getItemStyle:function(t,e){var i=GM(this,t,e),n=this.getBorderLineDash();return n&&(i.lineDash=n),i},getBorderLineDash:function(){var t=this.get("borderType");return"solid"===t||null==t?null:"dashed"===t?[5,5]:[1,1]}},WM=h,HM=Bi();No.prototype={constructor:No,init:null,mergeOption:function(t){n(this.option,t,!0)},get:function(t,e){return null==t?this.option:Oo(this.option,this.parsePath(t),!e&&Eo(this,t))},getShallow:function(t,e){var i=this.option,n=null==i?i:i[t],o=!e&&Eo(this,t);return null==n&&o&&(n=o.getShallow(t)),n},getModel:function(t,e){var i,n=null==t?this.option:Oo(this.option,t=this.parsePath(t));return e=e||(i=Eo(this,t))&&i.getModel(t),new No(n,e,this.ecModel)},isEmpty:function(){return null==this.option},restoreData:function(){},clone:function(){return new(0,this.constructor)(i(this.option))},setReadOnly:function(t){},parsePath:function(t){return"string"==typeof t&&(t=t.split(".")),t},customizeGetParent:function(t){HM(this).getParent=t},isAnimationEnabled:function(){if(!U_.node){if(null!=this.option.animation)return!!this.option.animation;if(this.parentModel)return this.parentModel.isAnimationEnabled()}}},ji(No),Yi(No),WM(No,eS),WM(No,nS),WM(No,VM),WM(No,FM);var ZM=0,UM=1e-4,XM=9007199254740991,jM=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/,YM=(Object.freeze||Object)({linearMap:Bo,parsePercent:Vo,round:Go,asc:Fo,getPrecision:Wo,getPrecisionSafe:Ho,getPixelPrecision:Zo,getPercentWithPrecision:Uo,MAX_SAFE_INTEGER:XM,remRadian:Xo,isRadianAroundZero:jo,parseDate:Yo,quantity:qo,nice:$o,quantile:function(t,e){var i=(t.length-1)*e+1,n=Math.floor(i),o=+t[n-1],a=i-n;return a?o+a*(t[n]-o):o},reformIntervals:Jo,isNumeric:Qo}),qM=L,KM=/([&<>"'])/g,$M={"&":"&","<":"<",">":">",'"':""","'":"'"},JM=["a","b","c","d","e","f","g"],QM=function(t,e){return"{"+t+(null==e?"":e)+"}"},tI=ze,eI=(Object.freeze||Object)({addCommas:ta,toCamelCase:ea,normalizeCssArray:qM,encodeHTML:ia,formatTpl:na,formatTplSimple:oa,getTooltipMarker:aa,formatTime:sa,capitalFirst:la,truncateText:tI,getTextBoundingRect:function(t){return ke(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,i,n,o,a,r,s){return ke(t,e,i,n,o,s,a,r)}}),iI=d,nI=["left","right","top","bottom","width","height"],oI=[["width","left","right"],["height","top","bottom"]],aI=ua,rI=(v(ua,"vertical"),v(ua,"horizontal"),{getBoxLayoutParams:function(){return{left:this.get("left"),top:this.get("top"),right:this.get("right"),bottom:this.get("bottom"),width:this.get("width"),height:this.get("height")}}}),sI=Bi(),lI=No.extend({type:"component",id:"",name:"",mainType:"",subType:"",componentIndex:0,defaultOption:null,ecModel:null,dependentModels:[],uid:null,layoutMode:null,$constructor:function(t,e,i,n){No.call(this,t,e,i,n),this.uid=Ro("ec_cpt_model")},init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i)},mergeDefaultAndTheme:function(t,e){var i=this.layoutMode,o=i?ga(t):{};n(t,e.getTheme().get(this.mainType)),n(t,this.getDefaultOption()),i&&pa(t,o,i)},mergeOption:function(t,e){n(this.option,t,!0);var i=this.layoutMode;i&&pa(this.option,t,i)},optionUpdated:function(t,e){},getDefaultOption:function(){var t=sI(this);if(!t.defaultOption){for(var e=[],i=this.constructor;i;){var o=i.prototype.defaultOption;o&&e.push(o),i=i.superClass}for(var a={},r=e.length-1;r>=0;r--)a=n(a,e[r],!0);t.defaultOption=a}return t.defaultOption},getReferringComponents:function(t){return this.ecModel.queryComponents({mainType:t,index:this.get(t+"Index",!0),id:this.get(t+"Id",!0)})}});$i(lI,{registerWhenExtend:!0}),function(t){var e={};t.registerSubTypeDefaulter=function(t,i){t=Ui(t),e[t.main]=i},t.determineSubType=function(i,n){var o=n.type;if(!o){var a=Ui(i).main;t.hasSubTypes(i)&&e[a]&&(o=e[a](n))}return o}}(lI),function(t,e){function i(t){var i={},a=[];return d(t,function(r){var s=n(i,r),u=o(s.originalDeps=e(r),t);s.entryCount=u.length,0===s.entryCount&&a.push(r),d(u,function(t){l(s.predecessor,t)<0&&s.predecessor.push(t);var e=n(i,t);l(e.successor,t)<0&&e.successor.push(r)})}),{graph:i,noEntryList:a}}function n(t,e){return t[e]||(t[e]={predecessor:[],successor:[]}),t[e]}function o(t,e){var i=[];return d(t,function(t){l(e,t)>=0&&i.push(t)}),i}t.topologicalTravel=function(t,e,n,o){function a(t){s[t].entryCount--,0===s[t].entryCount&&l.push(t)}if(t.length){var r=i(e),s=r.graph,l=r.noEntryList,u={};for(d(t,function(t){u[t]=!0});l.length;){var h=l.pop(),c=s[h],f=!!u[h];f&&(n.call(o,h,c.originalDeps.slice()),delete u[h]),d(c.successor,f?function(t){u[t]=!0,a(t)}:a)}d(u,function(){throw new Error("Circle dependency may exists")})}}}(lI,function(t){var e=[];return d(lI.getClassesByMainType(t),function(t){e=e.concat(t.prototype.dependencies||[])}),e=f(e,function(t){return Ui(t).main}),"dataset"!==t&&l(e,"dataset")<=0&&e.unshift("dataset"),e}),h(lI,rI);var uI="";"undefined"!=typeof navigator&&(uI=navigator.platform||"");var hI={color:["#c23531","#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"],gradientColor:["#f6efa6","#d88273","#bf444c"],textStyle:{fontFamily:uI.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,animation:"auto",animationDuration:1e3,animationDurationUpdate:300,animationEasing:"exponentialOut",animationEasingUpdate:"cubicOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1},cI=Bi(),dI={clearColorPalette:function(){cI(this).colorIdx=0,cI(this).colorNameMap={}},getColorFromPalette:function(t,e,i){var n=cI(e=e||this),o=n.colorIdx||0,a=n.colorNameMap=n.colorNameMap||{};if(a.hasOwnProperty(t))return a[t];var r=Di(this.get("color",!0)),s=this.get("colorLayer",!0),l=null!=i&&s?va(s,i):r;if((l=l||r)&&l.length){var u=l[o];return t&&(a[t]=u),n.colorIdx=(o+1)%l.length,u}}},fI={cartesian2d:function(t,e,i,n){var o=t.getReferringComponents("xAxis")[0],a=t.getReferringComponents("yAxis")[0];e.coordSysDims=["x","y"],i.set("x",o),i.set("y",a),xa(o)&&(n.set("x",o),e.firstCategoryDimIndex=0),xa(a)&&(n.set("y",a),e.firstCategoryDimIndex=1)},singleAxis:function(t,e,i,n){var o=t.getReferringComponents("singleAxis")[0];e.coordSysDims=["single"],i.set("single",o),xa(o)&&(n.set("single",o),e.firstCategoryDimIndex=0)},polar:function(t,e,i,n){var o=t.getReferringComponents("polar")[0],a=o.findAxisModel("radiusAxis"),r=o.findAxisModel("angleAxis");e.coordSysDims=["radius","angle"],i.set("radius",a),i.set("angle",r),xa(a)&&(n.set("radius",a),e.firstCategoryDimIndex=0),xa(r)&&(n.set("angle",r),e.firstCategoryDimIndex=1)},geo:function(t,e,i,n){e.coordSysDims=["lng","lat"]},parallel:function(t,e,i,n){var o=t.ecModel,a=o.getComponent("parallel",t.get("parallelIndex")),r=e.coordSysDims=a.dimensions.slice();d(a.parallelAxisIndex,function(t,a){var s=o.getComponent("parallelAxis",t),l=r[a];i.set(l,s),xa(s)&&null==e.firstCategoryDimIndex&&(n.set(l,s),e.firstCategoryDimIndex=a)})}},pI="original",gI="arrayRows",mI="objectRows",vI="keyedColumns",yI="unknown",xI="typedArray",_I="column",wI="row";_a.seriesDataToSource=function(t){return new _a({data:t,sourceFormat:S(t)?xI:pI,fromDataset:!1})},Yi(_a);var bI=Bi(),SI="\0_ec_inner",MI=No.extend({init:function(t,e,i,n){i=i||{},this.option=null,this._theme=new No(i),this._optionManager=n},setOption:function(t,e){k(!(SI in t),"please use chart.getOption()"),this._optionManager.setOption(t,e),this.resetOption(null)},resetOption:function(t){var e=!1,i=this._optionManager;if(!t||"recreate"===t){var n=i.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this.mergeOption(n)):Ea.call(this,n),e=!0}if("timeline"!==t&&"media"!==t||this.restoreData(),!t||"recreate"===t||"timeline"===t){var o=i.getTimelineOption(this);o&&(this.mergeOption(o),e=!0)}if(!t||"recreate"===t||"media"===t){var a=i.getMediaOption(this,this._api);a.length&&d(a,function(t){this.mergeOption(t,e=!0)},this)}return e},mergeOption:function(t){var e=this.option,o=this._componentsMap,r=[];Sa(this),d(t,function(t,o){null!=t&&(lI.hasClass(o)?o&&r.push(o):e[o]=null==e[o]?i(t):n(e[o],t,!0))}),lI.topologicalTravel(r,lI.getAllClassMainTypes(),function(i,n){var r=Di(t[i]),s=Pi(o.get(i),r);Ni(s),d(s,function(t,e){var n=t.option;w(n)&&(t.keyInfo.mainType=i,t.keyInfo.subType=za(i,n,t.exist))});var l=Ra(o,n);e[i]=[],o.set(i,[]),d(s,function(t,n){var r=t.exist,s=t.option;if(k(w(s)||r,"Empty component definition"),s){var u=lI.getClass(i,t.keyInfo.subType,!0);if(r&&r instanceof u)r.name=t.keyInfo.name,r.mergeOption(s,this),r.optionUpdated(s,!1);else{var h=a({dependentModels:l,componentIndex:n},t.keyInfo);a(r=new u(s,this,this,h),h),r.init(s,this,this,h),r.optionUpdated(null,!0)}}else r.mergeOption({},this),r.optionUpdated({},!1);o.get(i)[n]=r,e[i][n]=r.option},this),"series"===i&&Ba(this,o.get("series"))},this),this._seriesIndicesMap=R(this._seriesIndices=this._seriesIndices||[])},getOption:function(){var t=i(this.option);return d(t,function(e,i){if(lI.hasClass(i)){for(var n=(e=Di(e)).length-1;n>=0;n--)Ei(e[n])&&e.splice(n,1);t[i]=e}}),delete t[SI],t},getTheme:function(){return this._theme},getComponent:function(t,e){var i=this._componentsMap.get(t);if(i)return i[e||0]},queryComponents:function(t){var e=t.mainType;if(!e)return[];var i=t.index,n=t.id,o=t.name,a=this._componentsMap.get(e);if(!a||!a.length)return[];var r;if(null!=i)y(i)||(i=[i]),r=g(f(i,function(t){return a[t]}),function(t){return!!t});else if(null!=n){var s=y(n);r=g(a,function(t){return s&&l(n,t.id)>=0||!s&&t.id===n})}else if(null!=o){var u=y(o);r=g(a,function(t){return u&&l(o,t.name)>=0||!u&&t.name===o})}else r=a.slice();return Va(r,t)},findComponents:function(t){var e=t.query,i=t.mainType,n=function(t){var e=i+"Index",n=i+"Id",o=i+"Name";return!t||null==t[e]&&null==t[n]&&null==t[o]?null:{mainType:i,index:t[e],id:t[n],name:t[o]}}(e);return function(e){return t.filter?g(e,t.filter):e}(Va(n?this.queryComponents(n):this._componentsMap.get(i),t))},eachComponent:function(t,e,i){var n=this._componentsMap;"function"==typeof t?(i=e,e=t,n.each(function(t,n){d(t,function(t,o){e.call(i,n,t,o)})})):_(t)?d(n.get(t),e,i):w(t)&&d(this.findComponents(t),e,i)},getSeriesByName:function(t){return g(this._componentsMap.get("series"),function(e){return e.name===t})},getSeriesByIndex:function(t){return this._componentsMap.get("series")[t]},getSeriesByType:function(t){return g(this._componentsMap.get("series"),function(e){return e.subType===t})},getSeries:function(){return this._componentsMap.get("series").slice()},getSeriesCount:function(){return this._componentsMap.get("series").length},eachSeries:function(t,e){d(this._seriesIndices,function(i){var n=this._componentsMap.get("series")[i];t.call(e,n,i)},this)},eachRawSeries:function(t,e){d(this._componentsMap.get("series"),t,e)},eachSeriesByType:function(t,e,i){d(this._seriesIndices,function(n){var o=this._componentsMap.get("series")[n];o.subType===t&&e.call(i,o,n)},this)},eachRawSeriesByType:function(t,e,i){return d(this.getSeriesByType(t),e,i)},isSeriesFiltered:function(t){return null==this._seriesIndicesMap.get(t.componentIndex)},getCurrentSeriesIndices:function(){return(this._seriesIndices||[]).slice()},filterSeries:function(t,e){Ba(this,g(this._componentsMap.get("series"),t,e))},restoreData:function(t){var e=this._componentsMap;Ba(this,e.get("series"));var i=[];e.each(function(t,e){i.push(e)}),lI.topologicalTravel(i,lI.getAllClassMainTypes(),function(i,n){d(e.get(i),function(e){("series"!==i||!Na(e,t))&&e.restoreData()})})}});h(MI,dI);var II=["getDom","getZr","getWidth","getHeight","getDevicePixelRatio","dispatchAction","isDisposed","on","off","getDataURL","getConnectedDataURL","getModel","getOption","getViewOfComponentModel","getViewOfSeriesModel"],TI={};Fa.prototype={constructor:Fa,create:function(t,e){var i=[];d(TI,function(n,o){var a=n.create(t,e);i=i.concat(a||[])}),this._coordinateSystems=i},update:function(t,e){d(this._coordinateSystems,function(i){i.update&&i.update(t,e)})},getCoordinateSystems:function(){return this._coordinateSystems.slice()}},Fa.register=function(t,e){TI[t]=e},Fa.get=function(t){return TI[t]};var AI=d,DI=i,CI=f,LI=n,kI=/^(min|max)?(.+)$/;Wa.prototype={constructor:Wa,setOption:function(t,e){t&&d(Di(t.series),function(t){t&&t.data&&S(t.data)&&N(t.data)}),t=DI(t,!0);var i=this._optionBackup,n=Ha.call(this,t,e,!i);this._newBaseOption=n.baseOption,i?(ja(i.baseOption,n.baseOption),n.timelineOptions.length&&(i.timelineOptions=n.timelineOptions),n.mediaList.length&&(i.mediaList=n.mediaList),n.mediaDefault&&(i.mediaDefault=n.mediaDefault)):this._optionBackup=n},mountOption:function(t){var e=this._optionBackup;return this._timelineOptions=CI(e.timelineOptions,DI),this._mediaList=CI(e.mediaList,DI),this._mediaDefault=DI(e.mediaDefault),this._currentMediaIndices=[],DI(t?e.baseOption:this._newBaseOption)},getTimelineOption:function(t){var e,i=this._timelineOptions;if(i.length){var n=t.getComponent("timeline");n&&(e=DI(i[n.getCurrentIndex()],!0))}return e},getMediaOption:function(t){var e=this._api.getWidth(),i=this._api.getHeight(),n=this._mediaList,o=this._mediaDefault,a=[],r=[];if(!n.length&&!o)return r;for(var s=0,l=n.length;s=1)&&(t=1),t}var i=this._upstream,n=t&&t.skip;if(this._dirty&&i){var o=this.context;o.data=o.outputData=i.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var r=e(this._modBy),s=this._modDataCount||0,l=e(t&&t.modBy),u=t&&t.modDataCount||0;r===l&&s===u||(a="reset");var h;(this._dirty||"reset"===a)&&(this._dirty=!1,h=yr(this,n)),this._modBy=l,this._modDataCount=u;var c=t&&t.step;if(this._dueEnd=i?i._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,f=Math.min(null!=c?this._dueIndex+c:1/0,this._dueEnd);if(!n&&(h||d=i?null:t1&&a>0?e:t}};return s}();UI.dirty=function(){this._dirty=!0,this._onDirty&&this._onDirty(this.context)},UI.unfinished=function(){return this._progress&&this._dueIndex":"\n",s="richText"===n,l={},u=0,h=this.getData(),c=h.mapDimension("defaultedTooltip",!0),f=c.length,g=this.getRawValue(t),m=y(g),v=h.getItemVisual(t,"color");w(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var x=(f>1||m&&!f?function(i){function o(t,i){var o=h.getDimensionInfo(i);if(o&&!1!==o.otherDims.tooltip){var c=o.type,d="sub"+a.seriesIndex+"at"+u,p=aa({color:v,type:"subItem",renderMode:n,markerId:d}),g="string"==typeof p?p:p.content,m=(r?g+ia(o.displayName||"-")+": ":"")+ia("ordinal"===c?t+"":"time"===c?e?"":sa("yyyy/MM/dd hh:mm:ss",t):ta(t));m&&f.push(m),s&&(l[d]=v,++u)}}var r=p(i,function(t,e,i){var n=h.getDimensionInfo(i);return t|=n&&!1!==n.tooltip&&null!=n.displayName},0),f=[];c.length?d(c,function(e){o(fr(h,t,e),e)}):d(i,o);var g=r?s?"\n":"
":"",m=g+f.join(g||", ");return{renderMode:n,content:m,style:l}}(g):o(f?fr(h,t,c[0]):m?g[0]:g)).content,_=a.seriesIndex+"at"+u,b=aa({color:v,type:"item",renderMode:n,markerId:_});l[_]=v,++u;var S=h.getName(t),M=this.name;Oi(this)||(M=""),M=M?ia(M)+(e?": ":r):"";var I="string"==typeof b?b:b.content;return{html:e?I+M+x:M+I+(S?ia(S)+": "+x:x),markers:l}},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.getShallow("animation");return t&&this.getData().count()>this.getShallow("animationThreshold")&&(t=!1),t},restoreData:function(){this.dataTask.dirty()},getColorFromPalette:function(t,e,i){var n=this.ecModel,o=dI.getColorFromPalette.call(this,t,e,i);return o||(o=n.getColorFromPalette(t,e,i)),o},coordDimToDataDim:function(t){return this.getRawData().mapDimension(t,!0)},getProgressive:function(){return this.get("progressive")},getProgressiveThreshold:function(){return this.get("progressiveThreshold")},getAxisTooltipData:null,getTooltipPosition:null,pipeTask:null,preventIncremental:null,pipelineContext:null});h(YI,ZI),h(YI,dI);var qI=function(){this.group=new tb,this.uid=Ro("viewComponent")};qI.prototype={constructor:qI,init:function(t,e){},render:function(t,e,i,n){},dispose:function(){},filterForExposedEvent:null};var KI=qI.prototype;KI.updateView=KI.updateLayout=KI.updateVisual=function(t,e,i,n){},ji(qI),$i(qI,{registerWhenExtend:!0});var $I=function(){var t=Bi();return function(e){var i=t(e),n=e.pipelineContext,o=i.large,a=i.progressiveRender,r=i.large=n.large,s=i.progressiveRender=n.progressiveRender;return!!(o^r||a^s)&&"reset"}},JI=Bi(),QI=$I();Ar.prototype={type:"chart",init:function(t,e){},render:function(t,e,i,n){},highlight:function(t,e,i,n){Cr(t.getData(),n,"emphasis")},downplay:function(t,e,i,n){Cr(t.getData(),n,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};var tT=Ar.prototype;tT.updateView=tT.updateLayout=tT.updateVisual=function(t,e,i,n){this.render(t,e,i,n)},ji(Ar),$i(Ar,{registerWhenExtend:!0}),Ar.markUpdateMethod=function(t,e){JI(t).updateMethod=e};var eT={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},iT="\0__throttleOriginMethod",nT="\0__throttleRate",oT="\0__throttleType",aT={createOnAllSeries:!0,performRawSeries:!0,reset:function(t,e){var i=t.getData(),n=(t.visualColorAccessPath||"itemStyle.color").split("."),o=t.get(n)||t.getColorFromPalette(t.name,null,e.getSeriesCount());if(i.setVisual("color",o),!e.isSeriesFiltered(t)){"function"!=typeof o||o instanceof IM||i.each(function(e){i.setItemVisual(e,"color",o(t.getDataParams(e)))});return{dataEach:i.hasItemOption?function(t,e){var i=t.getItemModel(e).get(n,!0);null!=i&&t.setItemVisual(e,"color",i)}:null}}}},rT={toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}},sT=function(t,e){function i(t,e){if("string"!=typeof t)return t;var i=t;return d(e,function(t,e){i=i.replace(new RegExp("\\{\\s*"+e+"\\s*\\}","g"),t)}),i}function n(t){var e=a.get(t);if(null==e){for(var i=t.split("."),n=rT.aria,o=0;o1?"series.multiple.prefix":"series.single.prefix"),{seriesCount:r}),e.eachSeries(function(t,e){if(e1?"multiple":"single")+".";a=i(a=n(s?u+"withName":u+"withoutName"),{seriesId:t.seriesIndex,seriesName:t.get("name"),seriesType:o(t.subType)});var c=t.getData();window.data=c,c.count()>l?a+=i(n("data.partialData"),{displayCnt:l}):a+=n("data.allData");for(var d=[],p=0;pi.blockIndex?i.step:null,a=n&&n.modDataCount;return{step:o,modBy:null!=a?Math.ceil(a/o):null,modDataCount:a}}},uT.getPipeline=function(t){return this._pipelineMap.get(t)},uT.updateStreamModes=function(t,e){var i=this._pipelineMap.get(t.uid),n=t.getData().count(),o=i.progressiveEnabled&&e.incrementalPrepareRender&&n>=i.threshold,a=t.get("large")&&n>=t.get("largeThreshold"),r="mod"===t.get("progressiveChunkMode")?n:null;t.pipelineContext=i.context={progressiveRender:o,modDataCount:r,large:a}},uT.restorePipelines=function(t){var e=this,i=e._pipelineMap=R();t.eachSeries(function(t){var n=t.getProgressive(),o=t.uid;i.set(o,{id:o,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:n&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(n||700),count:0}),jr(e,t,t.dataTask)})},uT.prepareStageTasks=function(){var t=this._stageTaskMap,e=this.ecInstance.getModel(),i=this.api;d(this._allHandlers,function(n){var o=t.get(n.uid)||t.set(n.uid,[]);n.reset&&zr(this,n,o,e,i),n.overallReset&&Br(this,n,o,e,i)},this)},uT.prepareView=function(t,e,i,n){var o=t.renderTask,a=o.context;a.model=e,a.ecModel=i,a.api=n,o.__block=!t.incrementalPrepareRender,jr(this,e,o)},uT.performDataProcessorTasks=function(t,e){Rr(this,this._dataProcessorHandlers,t,e,{block:!0})},uT.performVisualTasks=function(t,e,i){Rr(this,this._visualHandlers,t,e,i)},uT.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},uT.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}e=e.getUpstream()}while(e)})};var hT=uT.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},cT=Ur(0);Er.wrapStageHandler=function(t,e){return x(t)&&(t={overallReset:t,seriesType:Yr(t)}),t.uid=Ro("stageHandler"),e&&(t.visualType=e),t};var dT,fT={},pT={};qr(fT,MI),qr(pT,Ga),fT.eachSeriesByType=fT.eachRawSeriesByType=function(t){dT=t},fT.eachComponent=function(t){"series"===t.mainType&&t.subType&&(dT=t.subType)};var gT=["#37A2DA","#32C5E9","#67E0E3","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#E062AE","#E690D1","#e7bcf3","#9d96f5","#8378EA","#96BFFF"],mT={color:gT,colorLayer:[["#37A2DA","#ffd85c","#fd7b5f"],["#37A2DA","#67E0E3","#FFDB5C","#ff9f7f","#E062AE","#9d96f5"],["#37A2DA","#32C5E9","#9FE6B8","#FFDB5C","#ff9f7f","#fb7293","#e7bcf3","#8378EA","#96BFFF"],gT]},vT=["#dd6b66","#759aa0","#e69d87","#8dc1a9","#ea7e53","#eedd78","#73a373","#73b9bc","#7289ab","#91ca8c","#f49f42"],yT={color:vT,backgroundColor:"#333",tooltip:{axisPointer:{lineStyle:{color:"#eee"},crossStyle:{color:"#eee"}}},legend:{textStyle:{color:"#eee"}},textStyle:{color:"#eee"},title:{textStyle:{color:"#eee"}},toolbox:{iconStyle:{normal:{borderColor:"#eee"}}},dataZoom:{textStyle:{color:"#eee"}},visualMap:{textStyle:{color:"#eee"}},timeline:{lineStyle:{color:"#eee"},itemStyle:{normal:{color:vT[1]}},label:{normal:{textStyle:{color:"#eee"}}},controlStyle:{normal:{color:"#eee",borderColor:"#eee"}}},timeAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},logAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},valueAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},categoryAxis:{axisLine:{lineStyle:{color:"#eee"}},axisTick:{lineStyle:{color:"#eee"}},axisLabel:{textStyle:{color:"#eee"}},splitLine:{lineStyle:{type:"dashed",color:"#aaa"}},splitArea:{areaStyle:{color:"#eee"}}},line:{symbol:"circle"},graph:{color:vT},gauge:{title:{textStyle:{color:"#eee"}}},candlestick:{itemStyle:{normal:{color:"#FD1050",color0:"#0CF49B",borderColor:"#FD1050",borderColor0:"#0CF49B"}}}};yT.categoryAxis.splitLine.show=!1,lI.extend({type:"dataset",defaultOption:{seriesLayoutBy:_I,sourceHeader:null,dimensions:null,source:null},optionUpdated:function(){wa(this)}}),qI.extend({type:"dataset"});var xT=Pn.extend({type:"ellipse",shape:{cx:0,cy:0,rx:0,ry:0},buildPath:function(t,e){var i=.5522848,n=e.cx,o=e.cy,a=e.rx,r=e.ry,s=a*i,l=r*i;t.moveTo(n-a,o),t.bezierCurveTo(n-a,o-l,n-s,o-r,n,o-r),t.bezierCurveTo(n+s,o-r,n+a,o-l,n+a,o),t.bezierCurveTo(n+a,o+l,n+s,o+r,n,o+r),t.bezierCurveTo(n-s,o+r,n-a,o+l,n-a,o),t.closePath()}}),_T=/[\s,]+/;$r.prototype.parse=function(t,e){e=e||{};var i=Kr(t);if(!i)throw new Error("Illegal svg");var n=new tb;this._root=n;var o=i.getAttribute("viewBox")||"",a=parseFloat(i.getAttribute("width")||e.width),r=parseFloat(i.getAttribute("height")||e.height);isNaN(a)&&(a=null),isNaN(r)&&(r=null),es(i,n,null,!0);for(var s=i.firstChild;s;)this._parseNode(s,n),s=s.nextSibling;var l,u;if(o){var h=P(o).split(_T);h.length>=4&&(l={x:parseFloat(h[0]||0),y:parseFloat(h[1]||0),width:parseFloat(h[2]),height:parseFloat(h[3])})}if(l&&null!=a&&null!=r&&(u=as(l,a,r),!e.ignoreViewBox)){var c=n;(n=new tb).add(c),c.scale=u.scale.slice(),c.position=u.position.slice()}return e.ignoreRootClip||null==a||null==r||n.setClipPath(new yM({shape:{x:0,y:0,width:a,height:r}})),{root:n,width:a,height:r,viewBoxRect:l,viewBoxTransform:u}},$r.prototype._parseNode=function(t,e){var i=t.nodeName.toLowerCase();"defs"===i?this._isDefine=!0:"text"===i&&(this._isText=!0);var n;if(this._isDefine){if(r=bT[i]){var o=r.call(this,t),a=t.getAttribute("id");a&&(this._defs[a]=o)}}else{var r=wT[i];r&&(n=r.call(this,t,e),e.add(n))}for(var s=t.firstChild;s;)1===s.nodeType&&this._parseNode(s,n),3===s.nodeType&&this._isText&&this._parseText(s,n),s=s.nextSibling;"defs"===i?this._isDefine=!1:"text"===i&&(this._isText=!1)},$r.prototype._parseText=function(t,e){if(1===t.nodeType){var i=t.getAttribute("dx")||0,n=t.getAttribute("dy")||0;this._textX+=parseFloat(i),this._textY+=parseFloat(n)}var o=new rM({style:{text:t.textContent,transformText:!0},position:[this._textX||0,this._textY||0]});Qr(e,o),es(t,o,this._defs);var a=o.style.fontSize;a&&a<9&&(o.style.fontSize=9,o.scale=o.scale||[1,1],o.scale[0]*=a/9,o.scale[1]*=a/9);var r=o.getBoundingRect();return this._textX+=r.width,e.add(o),o};var wT={g:function(t,e){var i=new tb;return Qr(e,i),es(t,i,this._defs),i},rect:function(t,e){var i=new yM;return Qr(e,i),es(t,i,this._defs),i.setShape({x:parseFloat(t.getAttribute("x")||0),y:parseFloat(t.getAttribute("y")||0),width:parseFloat(t.getAttribute("width")||0),height:parseFloat(t.getAttribute("height")||0)}),i},circle:function(t,e){var i=new sM;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),r:parseFloat(t.getAttribute("r")||0)}),i},line:function(t,e){var i=new _M;return Qr(e,i),es(t,i,this._defs),i.setShape({x1:parseFloat(t.getAttribute("x1")||0),y1:parseFloat(t.getAttribute("y1")||0),x2:parseFloat(t.getAttribute("x2")||0),y2:parseFloat(t.getAttribute("y2")||0)}),i},ellipse:function(t,e){var i=new xT;return Qr(e,i),es(t,i,this._defs),i.setShape({cx:parseFloat(t.getAttribute("cx")||0),cy:parseFloat(t.getAttribute("cy")||0),rx:parseFloat(t.getAttribute("rx")||0),ry:parseFloat(t.getAttribute("ry")||0)}),i},polygon:function(t,e){var i=t.getAttribute("points");i&&(i=ts(i));var n=new pM({shape:{points:i||[]}});return Qr(e,n),es(t,n,this._defs),n},polyline:function(t,e){var i=new Pn;Qr(e,i),es(t,i,this._defs);var n=t.getAttribute("points");return n&&(n=ts(n)),new gM({shape:{points:n||[]}})},image:function(t,e){var i=new fi;return Qr(e,i),es(t,i,this._defs),i.setStyle({image:t.getAttribute("xlink:href"),x:t.getAttribute("x"),y:t.getAttribute("y"),width:t.getAttribute("width"),height:t.getAttribute("height")}),i},text:function(t,e){var i=t.getAttribute("x")||0,n=t.getAttribute("y")||0,o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0;this._textX=parseFloat(i)+parseFloat(o),this._textY=parseFloat(n)+parseFloat(a);var r=new tb;return Qr(e,r),es(t,r,this._defs),r},tspan:function(t,e){var i=t.getAttribute("x"),n=t.getAttribute("y");null!=i&&(this._textX=parseFloat(i)),null!=n&&(this._textY=parseFloat(n));var o=t.getAttribute("dx")||0,a=t.getAttribute("dy")||0,r=new tb;return Qr(e,r),es(t,r,this._defs),this._textX+=o,this._textY+=a,r},path:function(t,e){var i=Rn(t.getAttribute("d")||"");return Qr(e,i),es(t,i,this._defs),i}},bT={lineargradient:function(t){var e=parseInt(t.getAttribute("x1")||0,10),i=parseInt(t.getAttribute("y1")||0,10),n=parseInt(t.getAttribute("x2")||10,10),o=parseInt(t.getAttribute("y2")||0,10),a=new TM(e,i,n,o);return Jr(t,a),a},radialgradient:function(t){}},ST={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-align":"textAlign","alignment-baseline":"textBaseline"},MT=/url\(\s*#(.*?)\)/,IT=/(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g,TT=/([^\s:;]+)\s*:\s*([^:;]+)/g,AT=R(),DT={registerMap:function(t,e,i){var n;return y(e)?n=e:e.svg?n=[{type:"svg",source:e.svg,specialAreas:e.specialAreas}]:(e.geoJson&&!e.features&&(i=e.specialAreas,e=e.geoJson),n=[{type:"geoJSON",source:e,specialAreas:i}]),d(n,function(t){var e=t.type;"geoJson"===e&&(e=t.type="geoJSON"),(0,CT[e])(t)}),AT.set(t,n)},retrieveMap:function(t){return AT.get(t)}},CT={geoJSON:function(t){var e=t.source;t.geoJSON=_(e)?"undefined"!=typeof JSON&&JSON.parse?JSON.parse(e):new Function("return ("+e+");")():e},svg:function(t){t.svgXML=Kr(t.source)}},LT=k,kT=d,PT=x,NT=w,OT=lI.parseClassType,ET={zrender:"4.0.6"},RT=1e3,zT=1e3,BT=3e3,VT={PROCESSOR:{FILTER:RT,STATISTIC:5e3},VISUAL:{LAYOUT:zT,GLOBAL:2e3,CHART:BT,COMPONENT:4e3,BRUSH:5e3}},GT="__flagInMainProcess",FT="__optionUpdated",WT=/^[a-zA-Z0-9_]+$/;ls.prototype.on=ss("on"),ls.prototype.off=ss("off"),ls.prototype.one=ss("one"),h(ls,fw);var HT=us.prototype;HT._onframe=function(){if(!this._disposed){var t=this._scheduler;if(this[FT]){var e=this[FT].silent;this[GT]=!0,cs(this),ZT.update.call(this),this[GT]=!1,this[FT]=!1,gs.call(this,e),ms.call(this,e)}else if(t.unfinished){var i=1,n=this._model;this._api;t.unfinished=!1;do{var o=+new Date;t.performSeriesTasks(n),t.performDataProcessorTasks(n),fs(this,n),t.performVisualTasks(n),bs(this,this._model,0,"remain"),i-=+new Date-o}while(i>0&&t.unfinished);t.unfinished||this._zr.flush()}}},HT.getDom=function(){return this._dom},HT.getZr=function(){return this._zr},HT.setOption=function(t,e,i){var n;if(NT(e)&&(i=e.lazyUpdate,n=e.silent,e=e.notMerge),this[GT]=!0,!this._model||e){var o=new Wa(this._api),a=this._theme,r=this._model=new MI(null,null,a,o);r.scheduler=this._scheduler,r.init(null,null,a,o)}this._model.setOption(t,qT),i?(this[FT]={silent:n},this[GT]=!1):(cs(this),ZT.update.call(this),this._zr.flush(),this[FT]=!1,this[GT]=!1,gs.call(this,n),ms.call(this,n))},HT.setTheme=function(){console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0")},HT.getModel=function(){return this._model},HT.getOption=function(){return this._model&&this._model.getOption()},HT.getWidth=function(){return this._zr.getWidth()},HT.getHeight=function(){return this._zr.getHeight()},HT.getDevicePixelRatio=function(){return this._zr.painter.dpr||window.devicePixelRatio||1},HT.getRenderedCanvas=function(t){if(U_.canvasSupported)return(t=t||{}).pixelRatio=t.pixelRatio||1,t.backgroundColor=t.backgroundColor||this._model.get("backgroundColor"),this._zr.painter.getRenderedCanvas(t)},HT.getSvgDataUrl=function(){if(U_.svgSupported){var t=this._zr;return d(t.storage.getDisplayList(),function(t){t.stopAnimation(!0)}),t.painter.pathToDataUrl()}},HT.getDataURL=function(t){var e=(t=t||{}).excludeComponents,i=this._model,n=[],o=this;kT(e,function(t){i.eachComponent({mainType:t},function(t){var e=o._componentsMap[t.__viewId];e.group.ignore||(n.push(e),e.group.ignore=!0)})});var a="svg"===this._zr.painter.getType()?this.getSvgDataUrl():this.getRenderedCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return kT(n,function(t){t.group.ignore=!1}),a},HT.getConnectedDataURL=function(t){if(U_.canvasSupported){var e=this.group,n=Math.min,o=Math.max;if(eA[e]){var a=1/0,r=1/0,s=-1/0,l=-1/0,u=[],h=t&&t.pixelRatio||1;d(tA,function(h,c){if(h.group===e){var d=h.getRenderedCanvas(i(t)),f=h.getDom().getBoundingClientRect();a=n(f.left,a),r=n(f.top,r),s=o(f.right,s),l=o(f.bottom,l),u.push({dom:d,left:f.left,top:f.top})}});var c=(s*=h)-(a*=h),f=(l*=h)-(r*=h),p=iw();p.width=c,p.height=f;var g=Ii(p);return kT(u,function(t){var e=new fi({style:{x:t.left*h-a,y:t.top*h-r,image:t.dom}});g.add(e)}),g.refreshImmediately(),p.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},HT.convertToPixel=v(hs,"convertToPixel"),HT.convertFromPixel=v(hs,"convertFromPixel"),HT.containPixel=function(t,e){var i;return t=Vi(this._model,t),d(t,function(t,n){n.indexOf("Models")>=0&&d(t,function(t){var o=t.coordinateSystem;if(o&&o.containPoint)i|=!!o.containPoint(e);else if("seriesModels"===n){var a=this._chartsMap[t.__viewId];a&&a.containPoint&&(i|=a.containPoint(e,t))}},this)},this),!!i},HT.getVisual=function(t,e){var i=(t=Vi(this._model,t,{defaultMainType:"series"})).seriesModel.getData(),n=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?i.indexOfRawIndex(t.dataIndex):null;return null!=n?i.getItemVisual(n,e):i.getVisual(e)},HT.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},HT.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]};var ZT={prepareAndUpdate:function(t){cs(this),ZT.update.call(this,t)},update:function(t){var e=this._model,i=this._api,n=this._zr,o=this._coordSysMgr,a=this._scheduler;if(e){a.restoreData(e,t),a.performSeriesTasks(e),o.create(e,i),a.performDataProcessorTasks(e,t),fs(this,e),o.update(e,i),xs(e),a.performVisualTasks(e,t),_s(this,e,i,t);var r=e.get("backgroundColor")||"transparent";if(U_.canvasSupported)n.setBackgroundColor(r);else{var s=Gt(r);r=qt(s,"rgb"),0===s[3]&&(r="transparent")}Ss(e,i)}},updateTransform:function(t){var e=this._model,i=this,n=this._api;if(e){var o=[];e.eachComponent(function(a,r){var s=i.getViewOfComponentModel(r);if(s&&s.__alive)if(s.updateTransform){var l=s.updateTransform(r,e,n,t);l&&l.update&&o.push(s)}else o.push(s)});var a=R();e.eachSeries(function(o){var r=i._chartsMap[o.__viewId];if(r.updateTransform){var s=r.updateTransform(o,e,n,t);s&&s.update&&a.set(o.uid,1)}else a.set(o.uid,1)}),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0,dirtyMap:a}),bs(i,e,0,t,a),Ss(e,this._api)}},updateView:function(t){var e=this._model;e&&(Ar.markUpdateMethod(t,"updateView"),xs(e),this._scheduler.performVisualTasks(e,t,{setDirty:!0}),_s(this,this._model,this._api,t),Ss(e,this._api))},updateVisual:function(t){ZT.update.call(this,t)},updateLayout:function(t){ZT.update.call(this,t)}};HT.resize=function(t){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var i=e.resetOption("media"),n=t&&t.silent;this[GT]=!0,i&&cs(this),ZT.update.call(this),this[GT]=!1,gs.call(this,n),ms.call(this,n)}},HT.showLoading=function(t,e){if(NT(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),QT[t]){var i=QT[t](this._api,e),n=this._zr;this._loadingFX=i,n.add(i)}},HT.hideLoading=function(){this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},HT.makeActionFromEvent=function(t){var e=a({},t);return e.type=jT[t.type],e},HT.dispatchAction=function(t,e){NT(e)||(e={silent:!!e}),XT[t.type]&&this._model&&(this[GT]?this._pendingActions.push(t):(ps.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&U_.browser.weChat&&this._throttledZrFlush(),gs.call(this,e.silent),ms.call(this,e.silent)))},HT.appendData=function(t){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0},HT.on=ss("on"),HT.off=ss("off"),HT.one=ss("one");var UT=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];HT._initEvents=function(){kT(UT,function(t){var e=function(e){var i,n=this.getModel(),o=e.target;if("globalout"===t)i={};else if(o&&null!=o.dataIndex){var r=o.dataModel||n.getSeriesByIndex(o.seriesIndex);i=r&&r.getDataParams(o.dataIndex,o.dataType,o)||{}}else o&&o.eventData&&(i=a({},o.eventData));if(i){var s=i.componentType,l=i.componentIndex;"markLine"!==s&&"markPoint"!==s&&"markArea"!==s||(s="series",l=i.seriesIndex);var u=s&&null!=l&&n.getComponent(s,l),h=u&&this["series"===u.mainType?"_chartsMap":"_componentsMap"][u.__viewId];i.event=e,i.type=t,this._ecEventProcessor.eventInfo={targetEl:o,packedEvent:i,model:u,view:h},this.trigger(t,i)}};e.zrEventfulCallAtLast=!0,this._zr.on(t,e,this)},this),kT(jT,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},HT.isDisposed=function(){return this._disposed},HT.clear=function(){this.setOption({series:[]},!0)},HT.dispose=function(){if(!this._disposed){this._disposed=!0,Fi(this.getDom(),oA,"");var t=this._api,e=this._model;kT(this._componentsViews,function(i){i.dispose(e,t)}),kT(this._chartsViews,function(i){i.dispose(e,t)}),this._zr.dispose(),delete tA[this.id]}},h(us,fw),Ds.prototype={constructor:Ds,normalizeQuery:function(t){var e={},i={},n={};if(_(t)){var o=OT(t);e.mainType=o.main||null,e.subType=o.sub||null}else{var a=["Index","Name","Id"],r={name:1,dataIndex:1,dataType:1};d(t,function(t,o){for(var s=!1,l=0;l0&&h===o.length-u.length){var c=o.slice(0,h);"data"!==c&&(e.mainType=c,e[u.toLowerCase()]=t,s=!0)}}r.hasOwnProperty(o)&&(i[o]=t,s=!0),s||(n[o]=t)})}return{cptQuery:e,dataQuery:i,otherQuery:n}},filter:function(t,e,i){function n(t,e,i,n){return null==t[i]||e[n||i]===t[i]}var o=this.eventInfo;if(!o)return!0;var a=o.targetEl,r=o.packedEvent,s=o.model,l=o.view;if(!s||!l)return!0;var u=e.cptQuery,h=e.dataQuery;return n(u,s,"mainType")&&n(u,s,"subType")&&n(u,s,"index","componentIndex")&&n(u,s,"name")&&n(u,s,"id")&&n(h,r,"name")&&n(h,r,"dataIndex")&&n(h,r,"dataType")&&(!l.filterForExposedEvent||l.filterForExposedEvent(t,e.otherQuery,a,r))},afterTrigger:function(){this.eventInfo=null}};var XT={},jT={},YT=[],qT=[],KT=[],$T=[],JT={},QT={},tA={},eA={},iA=new Date-0,nA=new Date-0,oA="_echarts_instance_",aA=Ls;Bs(2e3,aT),Ns(BI),Os(5e3,function(t){var e=R();t.eachSeries(function(t){var i=t.get("stack");if(i){var n=e.get(i)||e.set(i,[]),o=t.getData(),a={stackResultDimension:o.getCalculationInfo("stackResultDimension"),stackedOverDimension:o.getCalculationInfo("stackedOverDimension"),stackedDimension:o.getCalculationInfo("stackedDimension"),stackedByDimension:o.getCalculationInfo("stackedByDimension"),isStackedByIndex:o.getCalculationInfo("isStackedByIndex"),data:o,seriesModel:t};if(!a.stackedDimension||!a.isStackedByIndex&&!a.stackedByDimension)return;n.length&&o.setCalculationInfo("stackedOnSeries",n[n.length-1].seriesModel),n.push(a)}}),e.each(ar)}),Gs("default",function(t,e){r(e=e||{},{text:"loading",color:"#c23531",textColor:"#000",maskColor:"rgba(255, 255, 255, 0.8)",zlevel:0});var i=new yM({style:{fill:e.maskColor},zlevel:e.zlevel,z:1e4}),n=new SM({shape:{startAngle:-lT/2,endAngle:-lT/2+.1,r:10},style:{stroke:e.color,lineCap:"round",lineWidth:5},zlevel:e.zlevel,z:10001}),o=new yM({style:{fill:"none",text:e.text,textPosition:"right",textDistance:10,textFill:e.textColor},zlevel:e.zlevel,z:10001});n.animateShape(!0).when(1e3,{endAngle:3*lT/2}).start("circularInOut"),n.animateShape(!0).when(1e3,{startAngle:3*lT/2}).delay(300).start("circularInOut");var a=new tb;return a.add(n),a.add(o),a.add(i),a.resize=function(){var e=t.getWidth()/2,a=t.getHeight()/2;n.setShape({cx:e,cy:a});var r=n.shape.r;o.setShape({x:e-r,y:a-r,width:2*r,height:2*r}),i.setShape({x:0,y:0,width:t.getWidth(),height:t.getHeight()})},a.resize(),a}),Es({type:"highlight",event:"highlight",update:"highlight"},B),Es({type:"downplay",event:"downplay",update:"downplay"},B),Ps("light",mT),Ps("dark",yT);var rA={};Xs.prototype={constructor:Xs,add:function(t){return this._add=t,this},update:function(t){return this._update=t,this},remove:function(t){return this._remove=t,this},execute:function(){var t=this._old,e=this._new,i={},n=[],o=[];for(js(t,{},n,"_oldKeyGetter",this),js(e,i,o,"_newKeyGetter",this),a=0;ax[1]&&(x[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},el(this)},yA._initDataFromProvider=function(t,e){if(!(t>=e)){for(var i,n=this._chunkSize,o=this._rawData,a=this._storage,r=this.dimensions,s=r.length,l=this._dimensionInfos,u=this._nameList,h=this._idList,c=this._rawExtent,d=this._nameRepeatCount={},f=this._chunkCount,p=0;pM[1]&&(M[1]=S)}if(!o.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=i){var T=r[i],A=a[T][y];if(A){I=A[x];var D=l[T].ordinalMeta;D&&D.categories.length&&(I=D.categories[I])}}var C=null==m?null:m.id;null==C&&null!=I&&(d[I]=d[I]||0,C=I,d[I]>0&&(C+="__ec__"+d[I]),d[I]++),null!=C&&(h[v]=C)}}!o.persistent&&o.clean&&o.clean(),this._rawCount=this._count=e,this._extent={},el(this)}},yA.count=function(){return this._count},yA.getIndices=function(){var t=this._indices;if(t){var e=t.constructor,i=this._count;if(e===Array){n=new e(i);for(o=0;o=0&&e=0&&ea&&(a=s)}return i=[o,a],this._extent[t]=i,i},yA.getApproximateExtent=function(t){return t=this.getDimension(t),this._approximateExtent[t]||this.getDataExtent(t)},yA.setApproximateExtent=function(t,e){e=this.getDimension(e),this._approximateExtent[e]=t.slice()},yA.getCalculationInfo=function(t){return this._calculationInfo[t]},yA.setCalculationInfo=function(t,e){lA(t)?a(this._calculationInfo,t):this._calculationInfo[t]=e},yA.getSum=function(t){var e=0;if(this._storage[t])for(var i=0,n=this.count();i=this._rawCount||t<0)return-1;var e=this._indices,i=e[t];if(null!=i&&it))return a;o=a-1}}return-1},yA.indicesOfNearest=function(t,e,i){var n=[];if(!this._storage[t])return n;null==i&&(i=1/0);for(var o=Number.MAX_VALUE,a=-1,r=0,s=this.count();r=0&&a<0)&&(o=u,a=l,n.length=0),n.push(r))}return n},yA.getRawIndex=nl,yA.getRawDataItem=function(t){if(this._rawData.persistent)return this._rawData.getItem(this.getRawIndex(t));for(var e=[],i=0;i=l&&w<=u||isNaN(w))&&(a[r++]=c),c++;h=!0}else if(2===n){for(var d=this._storage[s],v=this._storage[e[1]],y=t[e[1]][0],x=t[e[1]][1],f=0;f=l&&w<=u||isNaN(w))&&(b>=y&&b<=x||isNaN(b))&&(a[r++]=c),c++}h=!0}}if(!h)if(1===n)for(m=0;m=l&&w<=u||isNaN(w))&&(a[r++]=M)}else for(m=0;mt[I][1])&&(S=!1)}S&&(a[r++]=this.getRawIndex(m))}return rb[1]&&(b[1]=w)}}}return o},yA.downSample=function(t,e,i,n){for(var o=sl(this,[t]),a=o._storage,r=[],s=Math.floor(1/e),l=a[t],u=this.count(),h=this._chunkSize,c=o._rawExtent[t],d=new($s(this))(u),f=0,p=0;pu-p&&(s=u-p,r.length=s);for(var g=0;gc[1]&&(c[1]=x),d[f++]=_}return o._count=f,o._indices=d,o.getRawIndex=ol,o},yA.getItemModel=function(t){var e=this.hostModel;return new No(this.getRawDataItem(t),e,e&&e.ecModel)},yA.diff=function(t){var e=this;return new Xs(t?t.getIndices():[],this.getIndices(),function(e){return al(t,e)},function(t){return al(e,t)})},yA.getVisual=function(t){var e=this._visual;return e&&e[t]},yA.setVisual=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setVisual(i,t[i]);else this._visual=this._visual||{},this._visual[t]=e},yA.setLayout=function(t,e){if(lA(t))for(var i in t)t.hasOwnProperty(i)&&this.setLayout(i,t[i]);else this._layout[t]=e},yA.getLayout=function(t){return this._layout[t]},yA.getItemLayout=function(t){return this._itemLayouts[t]},yA.setItemLayout=function(t,e,i){this._itemLayouts[t]=i?a(this._itemLayouts[t]||{},e):e},yA.clearItemLayouts=function(){this._itemLayouts.length=0},yA.getItemVisual=function(t,e,i){var n=this._itemVisuals[t],o=n&&n[e];return null!=o||i?o:this.getVisual(e)},yA.setItemVisual=function(t,e,i){var n=this._itemVisuals[t]||{},o=this.hasItemVisual;if(this._itemVisuals[t]=n,lA(e))for(var a in e)e.hasOwnProperty(a)&&(n[a]=e[a],o[a]=!0);else n[e]=i,o[e]=!0},yA.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};var xA=function(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType};yA.setItemGraphicEl=function(t,e){var i=this.hostModel;e&&(e.dataIndex=t,e.dataType=this.dataType,e.seriesIndex=i&&i.seriesIndex,"group"===e.type&&e.traverse(xA,e)),this._graphicEls[t]=e},yA.getItemGraphicEl=function(t){return this._graphicEls[t]},yA.eachItemGraphicEl=function(t,e){d(this._graphicEls,function(i,n){i&&t&&t.call(e,i,n)})},yA.cloneShallow=function(t){if(!t){var e=f(this.dimensions,this.getDimensionInfo,this);t=new vA(e,this.hostModel)}if(t._storage=this._storage,Qs(t,this),this._indices){var i=this._indices.constructor;t._indices=new i(this._indices)}else t._indices=null;return t.getRawIndex=t._indices?ol:nl,t},yA.wrapMethod=function(t,e){var i=this[t];"function"==typeof i&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var t=i.apply(this,arguments);return e.apply(this,[t].concat(C(arguments)))})},yA.TRANSFERABLE_METHODS=["cloneShallow","downSample","map"],yA.CHANGABLE_METHODS=["filterSelf","selectRange"];var _A=function(t,e){return e=e||{},hl(e.coordDimensions||[],t,{dimsDef:e.dimensionsDefine||t.dimensionsDefine,encodeDef:e.encodeDefine||t.encodeDefine,dimCount:e.dimensionsCount,generateCoord:e.generateCoord,generateCoordCount:e.generateCoordCount})};xl.prototype.parse=function(t){return t},xl.prototype.getSetting=function(t){return this._setting[t]},xl.prototype.contain=function(t){var e=this._extent;return t>=e[0]&&t<=e[1]},xl.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},xl.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},xl.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},xl.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},xl.prototype.getExtent=function(){return this._extent.slice()},xl.prototype.setExtent=function(t,e){var i=this._extent;isNaN(t)||(i[0]=t),isNaN(e)||(i[1]=e)},xl.prototype.isBlank=function(){return this._isBlank},xl.prototype.setBlank=function(t){this._isBlank=t},xl.prototype.getLabel=null,ji(xl),$i(xl,{registerWhenExtend:!0}),_l.createByAxisModel=function(t){var e=t.option,i=e.data,n=i&&f(i,bl);return new _l({categories:n,needCollect:!n,deduplication:!1!==e.dedplication})};var wA=_l.prototype;wA.getOrdinal=function(t){return wl(this).get(t)},wA.parseAndCollect=function(t){var e,i=this._needCollect;if("string"!=typeof t&&!i)return t;if(i&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var n=wl(this);return null==(e=n.get(t))&&(i?(e=this.categories.length,this.categories[e]=t,n.set(t,e)):e=NaN),e};var bA=xl.prototype,SA=xl.extend({type:"ordinal",init:function(t,e){t&&!y(t)||(t=new _l({categories:t})),this._ordinalMeta=t,this._extent=e||[0,t.categories.length-1]},parse:function(t){return"string"==typeof t?this._ordinalMeta.getOrdinal(t):Math.round(t)},contain:function(t){return t=this.parse(t),bA.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return bA.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(bA.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,i=e[0];i<=e[1];)t.push(i),i++;return t},getLabel:function(t){if(!this.isBlank())return this._ordinalMeta.categories[t]},count:function(){return this._extent[1]-this._extent[0]+1},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},getOrdinalMeta:function(){return this._ordinalMeta},niceTicks:B,niceExtent:B});SA.create=function(){return new SA};var MA=Go,IA=Go,TA=xl.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var i=this._extent;isNaN(t)||(i[0]=parseFloat(t)),isNaN(e)||(i[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),TA.prototype.setExtent.call(this,e[0],e[1])},getInterval:function(){return this._interval},setInterval:function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ml(t)},getTicks:function(){return Al(this._interval,this._extent,this._niceExtent,this._intervalPrecision)},getLabel:function(t,e){if(null==t)return"";var i=e&&e.precision;return null==i?i=Ho(t)||0:"auto"===i&&(i=this._intervalPrecision),t=IA(t,i,!0),ta(t)},niceTicks:function(t,e,i){t=t||5;var n=this._extent,o=n[1]-n[0];if(isFinite(o)){o<0&&(o=-o,n.reverse());var a=Sl(n,t,e,i);this._intervalPrecision=a.intervalPrecision,this._interval=a.interval,this._niceExtent=a.niceTickExtent}},niceExtent:function(t){var e=this._extent;if(e[0]===e[1])if(0!==e[0]){var i=e[0];t.fixMax?e[0]-=i/2:(e[1]+=i/2,e[0]-=i/2)}else e[1]=1;var n=e[1]-e[0];isFinite(n)||(e[0]=0,e[1]=1),this.niceTicks(t.splitNumber,t.minInterval,t.maxInterval);var o=this._interval;t.fixMin||(e[0]=IA(Math.floor(e[0]/o)*o)),t.fixMax||(e[1]=IA(Math.ceil(e[1]/o)*o))}});TA.create=function(){return new TA};var AA="__ec_stack_",DA="undefined"!=typeof Float32Array?Float32Array:Array,CA={seriesType:"bar",plan:$I(),reset:function(t){if(Rl(t)&&zl(t)){var e=t.getData(),i=t.coordinateSystem,n=i.getBaseAxis(),o=i.getOtherAxis(n),a=e.mapDimension(o.dim),r=e.mapDimension(n.dim),s=o.isHorizontal(),l=s?0:1,u=Ol(Pl([t]),n,t).width;return u>.5||(u=.5),{progress:function(t,e){for(var n,h=new DA(2*t.count),c=[],d=[],f=0;null!=(n=t.next());)d[l]=e.get(a,n),d[1-l]=e.get(r,n),c=i.dataToPoint(d,null,c),h[f++]=c[0],h[f++]=c[1];e.setLayout({largePoints:h,barWidth:u,valueAxisStart:Bl(0,o),valueAxisHorizontal:s})}}}}},LA=TA.prototype,kA=Math.ceil,PA=Math.floor,NA=function(t,e,i,n){for(;i>>1;t[o][1]i&&(a=i);var r=EA.length,s=NA(EA,a,0,r),l=EA[Math.min(s,r-1)],u=l[1];"year"===l[0]&&(u*=$o(o/u/t,!0));var h=this.getSetting("useUTC")?0:60*new Date(+n[0]||+n[1]).getTimezoneOffset()*1e3,c=[Math.round(kA((n[0]-h)/u)*u+h),Math.round(PA((n[1]-h)/u)*u+h)];Tl(c,n),this._stepLvl=l,this._interval=u,this._niceExtent=c},parse:function(t){return+Yo(t)}});d(["contain","normalize"],function(t){OA.prototype[t]=function(e){return LA[t].call(this,this.parse(e))}});var EA=[["hh:mm:ss",1e3],["hh:mm:ss",5e3],["hh:mm:ss",1e4],["hh:mm:ss",15e3],["hh:mm:ss",3e4],["hh:mm\nMM-dd",6e4],["hh:mm\nMM-dd",3e5],["hh:mm\nMM-dd",6e5],["hh:mm\nMM-dd",9e5],["hh:mm\nMM-dd",18e5],["hh:mm\nMM-dd",36e5],["hh:mm\nMM-dd",72e5],["hh:mm\nMM-dd",216e5],["hh:mm\nMM-dd",432e5],["MM-dd\nyyyy",864e5],["MM-dd\nyyyy",1728e5],["MM-dd\nyyyy",2592e5],["MM-dd\nyyyy",3456e5],["MM-dd\nyyyy",432e6],["MM-dd\nyyyy",5184e5],["week",6048e5],["MM-dd\nyyyy",864e6],["week",12096e5],["week",18144e5],["month",26784e5],["week",36288e5],["month",53568e5],["week",6048e6],["quarter",8208e6],["month",107136e5],["month",13392e6],["half-year",16416e6],["month",214272e5],["month",26784e6],["year",32832e6]];OA.create=function(t){return new OA({useUTC:t.ecModel.get("useUTC")})};var RA=xl.prototype,zA=TA.prototype,BA=Ho,VA=Go,GA=Math.floor,FA=Math.ceil,WA=Math.pow,HA=Math.log,ZA=xl.extend({type:"log",base:10,$constructor:function(){xl.apply(this,arguments),this._originalScale=new TA},getTicks:function(){var t=this._originalScale,e=this._extent,i=t.getExtent();return f(zA.getTicks.call(this),function(n){var o=Go(WA(this.base,n));return o=n===e[0]&&t.__fixMin?Vl(o,i[0]):o,o=n===e[1]&&t.__fixMax?Vl(o,i[1]):o},this)},getLabel:zA.getLabel,scale:function(t){return t=RA.scale.call(this,t),WA(this.base,t)},setExtent:function(t,e){var i=this.base;t=HA(t)/HA(i),e=HA(e)/HA(i),zA.setExtent.call(this,t,e)},getExtent:function(){var t=this.base,e=RA.getExtent.call(this);e[0]=WA(t,e[0]),e[1]=WA(t,e[1]);var i=this._originalScale,n=i.getExtent();return i.__fixMin&&(e[0]=Vl(e[0],n[0])),i.__fixMax&&(e[1]=Vl(e[1],n[1])),e},unionExtent:function(t){this._originalScale.unionExtent(t);var e=this.base;t[0]=HA(t[0])/HA(e),t[1]=HA(t[1])/HA(e),RA.unionExtent.call(this,t)},unionExtentFromData:function(t,e){this.unionExtent(t.getApproximateExtent(e))},niceTicks:function(t){t=t||10;var e=this._extent,i=e[1]-e[0];if(!(i===1/0||i<=0)){var n=qo(i);for(t/i*n<=.5&&(n*=10);!isNaN(n)&&Math.abs(n)<1&&Math.abs(n)>0;)n*=10;var o=[Go(FA(e[0]/n)*n),Go(GA(e[1]/n)*n)];this._interval=n,this._niceExtent=o}},niceExtent:function(t){zA.niceExtent.call(this,t);var e=this._originalScale;e.__fixMin=t.fixMin,e.__fixMax=t.fixMax}});d(["contain","normalize"],function(t){ZA.prototype[t]=function(e){return e=HA(e)/HA(this.base),RA[t].call(this,e)}}),ZA.create=function(){return new ZA};var UA={getMin:function(t){var e=this.option,i=t||null==e.rangeStart?e.min:e.rangeStart;return this.axis&&null!=i&&"dataMin"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getMax:function(t){var e=this.option,i=t||null==e.rangeEnd?e.max:e.rangeEnd;return this.axis&&null!=i&&"dataMax"!==i&&"function"!=typeof i&&!I(i)&&(i=this.axis.scale.parse(i)),i},getNeedCrossZero:function(){var t=this.option;return null==t.rangeStart&&null==t.rangeEnd&&!t.scale},getCoordSysModel:B,setRange:function(t,e){this.option.rangeStart=t,this.option.rangeEnd=e},resetRange:function(){this.option.rangeStart=this.option.rangeEnd=null}},XA=Un({type:"triangle",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n+a),t.lineTo(i-o,n+a),t.closePath()}}),jA=Un({type:"diamond",shape:{cx:0,cy:0,width:0,height:0},buildPath:function(t,e){var i=e.cx,n=e.cy,o=e.width/2,a=e.height/2;t.moveTo(i,n-a),t.lineTo(i+o,n),t.lineTo(i,n+a),t.lineTo(i-o,n),t.closePath()}}),YA=Un({type:"pin",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.x,n=e.y,o=e.width/5*3,a=Math.max(o,e.height),r=o/2,s=r*r/(a-r),l=n-a+r+s,u=Math.asin(s/r),h=Math.cos(u)*r,c=Math.sin(u),d=Math.cos(u),f=.6*r,p=.7*r;t.moveTo(i-h,l+s),t.arc(i,l,r,Math.PI-u,2*Math.PI+u),t.bezierCurveTo(i+h-c*f,l+s+d*f,i,n-p,i,n),t.bezierCurveTo(i,n-p,i-h+c*f,l+s+d*f,i-h,l+s),t.closePath()}}),qA=Un({type:"arrow",shape:{x:0,y:0,width:0,height:0},buildPath:function(t,e){var i=e.height,n=e.width,o=e.x,a=e.y,r=n/3*2;t.moveTo(o,a),t.lineTo(o+r,a+i),t.lineTo(o,a+i/4*3),t.lineTo(o-r,a+i),t.lineTo(o,a),t.closePath()}}),KA={line:function(t,e,i,n,o){o.x1=t,o.y1=e+n/2,o.x2=t+i,o.y2=e+n/2},rect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n},roundRect:function(t,e,i,n,o){o.x=t,o.y=e,o.width=i,o.height=n,o.r=Math.min(i,n)/4},square:function(t,e,i,n,o){var a=Math.min(i,n);o.x=t,o.y=e,o.width=a,o.height=a},circle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.r=Math.min(i,n)/2},diamond:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n},pin:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},arrow:function(t,e,i,n,o){o.x=t+i/2,o.y=e+n/2,o.width=i,o.height=n},triangle:function(t,e,i,n,o){o.cx=t+i/2,o.cy=e+n/2,o.width=i,o.height=n}},$A={};d({line:_M,rect:yM,roundRect:yM,square:yM,circle:sM,diamond:jA,pin:YA,arrow:qA,triangle:XA},function(t,e){$A[e]=new t});var JA=Un({type:"symbol",shape:{symbolType:"",x:0,y:0,width:0,height:0},beforeBrush:function(){var t=this.style;"pin"===this.shape.symbolType&&"inside"===t.textPosition&&(t.textPosition=["50%","40%"],t.textAlign="center",t.textVerticalAlign="middle")},buildPath:function(t,e,i){var n=e.symbolType,o=$A[n];"none"!==e.symbolType&&(o||(o=$A[n="rect"]),KA[n](e.x,e.y,e.width,e.height,o.shape),o.buildPath(t,o.shape,i))}}),QA={isDimensionStacked:pl,enableDataStack:fl,getStackedDimension:gl},tD=(Object.freeze||Object)({createList:function(t){return ml(t.getSource(),t)},getLayoutRect:ca,dataStack:QA,createScale:function(t,e){var i=e;No.isInstance(e)||h(i=new No(e),UA);var n=Hl(i);return n.setExtent(t[0],t[1]),Wl(n,i),n},mixinAxisModelCommonMethods:function(t){h(t,UA)},completeDimensions:hl,createDimensions:_A,createSymbol:Jl}),eD=1e-8;eu.prototype={constructor:eu,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,i=[e,e],n=[-e,-e],o=[],a=[],r=this.geometries,s=0;s0}),function(t){var e=t.properties,i=t.geometry,n=i.coordinates,o=[];"Polygon"===i.type&&o.push({type:"polygon",exterior:n[0],interiors:n.slice(1)}),"MultiPolygon"===i.type&&d(n,function(t){t[0]&&o.push({type:"polygon",exterior:t[0],interiors:t.slice(1)})});var a=new eu(e.name,o,e.cp);return a.properties=e,a})},nD=Bi(),oD=[0,1],aD=function(t,e,i){this.dim=t,this.scale=e,this._extent=i||[0,0],this.inverse=!1,this.onBand=!1};aD.prototype={constructor:aD,contain:function(t){var e=this._extent,i=Math.min(e[0],e[1]),n=Math.max(e[0],e[1]);return t>=i&&t<=n},containData:function(t){return this.contain(this.dataToCoord(t))},getExtent:function(){return this._extent.slice()},getPixelPrecision:function(t){return Zo(t||this.scale.getExtent(),this._extent)},setExtent:function(t,e){var i=this._extent;i[0]=t,i[1]=e},dataToCoord:function(t,e){var i=this._extent,n=this.scale;return t=n.normalize(t),this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count()),Bo(t,oD,i,e)},coordToData:function(t,e){var i=this._extent,n=this.scale;this.onBand&&"ordinal"===n.type&&yu(i=i.slice(),n.count());var o=Bo(t,i,oD,e);return this.scale.scale(o)},pointToData:function(t,e){},getTicksCoords:function(t){var e=(t=t||{}).tickModel||this.getTickModel(),i=au(this,e),n=f(i.ticks,function(t){return{coord:this.dataToCoord(t),tickValue:t}},this),o=e.get("alignWithLabel");return xu(this,n,i.tickCategoryInterval,o,t.clamp),n},getViewLabels:function(){return ou(this).labels},getLabelModel:function(){return this.model.getModel("axisLabel")},getTickModel:function(){return this.model.getModel("axisTick")},getBandWidth:function(){var t=this._extent,e=this.scale.getExtent(),i=e[1]-e[0]+(this.onBand?1:0);0===i&&(i=1);var n=Math.abs(t[1]-t[0]);return Math.abs(n)/i},isHorizontal:null,getRotate:null,calculateCategoryInterval:function(){return pu(this)}};var rD=iD,sD={};d(["map","each","filter","indexOf","inherits","reduce","filter","bind","curry","isArray","isString","isObject","isFunction","extend","defaults","clone","merge"],function(t){sD[t]=aw[t]});var lD={};d(["extendShape","extendPath","makePath","makeImage","mergePath","resizePath","createIcon","setHoverStyle","setLabelStyle","setTextStyle","setText","getFont","updateProps","initProps","getTransform","clipPointsByRect","clipRectByRect","Group","Image","Text","Circle","Sector","Ring","Polygon","Polyline","Rect","Line","BezierCurve","Arc","IncrementalDisplayable","CompoundPath","LinearGradient","RadialGradient","BoundingRect"],function(t){lD[t]=zM[t]}),YI.extend({type:"series.line",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,clipOverflow:!0,label:{position:"top"},lineStyle:{width:2,type:"solid"},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0}});var uD=wu.prototype,hD=wu.getSymbolSize=function(t,e){var i=t.getItemVisual(e,"symbolSize");return i instanceof Array?i.slice():[+i,+i]};uD._createSymbol=function(t,e,i,n,o){this.removeAll();var a=Jl(t,-1,-1,2,2,e.getItemVisual(i,"color"),o);a.attr({z2:100,culling:!0,scale:bu(n)}),a.drift=Su,this._symbolType=t,this.add(a)},uD.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(t)},uD.getSymbolPath=function(){return this.childAt(0)},uD.getScale=function(){return this.childAt(0).scale},uD.highlight=function(){this.childAt(0).trigger("emphasis")},uD.downplay=function(){this.childAt(0).trigger("normal")},uD.setZ=function(t,e){var i=this.childAt(0);i.zlevel=t,i.z=e},uD.setDraggable=function(t){var e=this.childAt(0);e.draggable=t,e.cursor=t?"move":"pointer"},uD.updateData=function(t,e,i){this.silent=!1;var n=t.getItemVisual(e,"symbol")||"circle",o=t.hostModel,a=hD(t,e),r=n!==this._symbolType;if(r){var s=t.getItemVisual(e,"symbolKeepAspect");this._createSymbol(n,t,e,a,s)}else(l=this.childAt(0)).silent=!1,Io(l,{scale:bu(a)},o,e);if(this._updateCommon(t,e,a,i),r){var l=this.childAt(0),u=i&&i.fadeIn,h={scale:l.scale.slice()};u&&(h.style={opacity:l.style.opacity}),l.scale=[0,0],u&&(l.style.opacity=0),To(l,h,o,e)}this._seriesModel=o};var cD=["itemStyle"],dD=["emphasis","itemStyle"],fD=["label"],pD=["emphasis","label"];uD._updateCommon=function(t,e,i,n){var o=this.childAt(0),r=t.hostModel,s=t.getItemVisual(e,"color");"image"!==o.type&&o.useStyle({strokeNoScale:!0});var l=n&&n.itemStyle,u=n&&n.hoverItemStyle,h=n&&n.symbolRotate,c=n&&n.symbolOffset,d=n&&n.labelModel,f=n&&n.hoverLabelModel,p=n&&n.hoverAnimation,g=n&&n.cursorStyle;if(!n||t.hasItemOption){var m=n&&n.itemModel?n.itemModel:t.getItemModel(e);l=m.getModel(cD).getItemStyle(["color"]),u=m.getModel(dD).getItemStyle(),h=m.getShallow("symbolRotate"),c=m.getShallow("symbolOffset"),d=m.getModel(fD),f=m.getModel(pD),p=m.getShallow("hoverAnimation"),g=m.getShallow("cursor")}else u=a({},u);var v=o.style;o.attr("rotation",(h||0)*Math.PI/180||0),c&&o.attr("position",[Vo(c[0],i[0]),Vo(c[1],i[1])]),g&&o.attr("cursor",g),o.setColor(s,n&&n.symbolInnerColor),o.setStyle(l);var y=t.getItemVisual(e,"opacity");null!=y&&(v.opacity=y);var x=t.getItemVisual(e,"liftZ"),_=o.__z2Origin;null!=x?null==_&&(o.__z2Origin=o.z2,o.z2+=x):null!=_&&(o.z2=_,o.__z2Origin=null);var w=n&&n.useNameLabel;go(v,u,d,f,{labelFetcher:r,labelDataIndex:e,defaultText:function(e,i){return w?t.getName(e):_u(t,e)},isRectText:!0,autoColor:s}),o.off("mouseover").off("mouseout").off("emphasis").off("normal"),o.hoverStyle=u,fo(o),o.__symbolOriginalScale=bu(i),p&&r.isAnimationEnabled()&&o.on("mouseover",Mu).on("mouseout",Iu).on("emphasis",Tu).on("normal",Au)},uD.fadeOut=function(t,e){var i=this.childAt(0);this.silent=i.silent=!0,!(e&&e.keepLabel)&&(i.style.text=null),Io(i,{style:{opacity:0},scale:[0,0]},this._seriesModel,this.dataIndex,t)},u(wu,tb);var gD=Du.prototype;gD.updateData=function(t,e){e=Lu(e);var i=this.group,n=t.hostModel,o=this._data,a=this._symbolCtor,r=ku(t);o||i.removeAll(),t.diff(o).add(function(n){var o=t.getItemLayout(n);if(Cu(t,o,n,e)){var s=new a(t,n,r);s.attr("position",o),t.setItemGraphicEl(n,s),i.add(s)}}).update(function(s,l){var u=o.getItemGraphicEl(l),h=t.getItemLayout(s);Cu(t,h,s,e)?(u?(u.updateData(t,s,r),Io(u,{position:h},n)):(u=new a(t,s)).attr("position",h),i.add(u),t.setItemGraphicEl(s,u)):i.remove(u)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&e.fadeOut(function(){i.remove(e)})}).execute(),this._data=t},gD.isPersistent=function(){return!0},gD.updateLayout=function(){var t=this._data;t&&t.eachItemGraphicEl(function(e,i){var n=t.getItemLayout(i);e.attr("position",n)})},gD.incrementalPrepareUpdate=function(t){this._seriesScope=ku(t),this._data=null,this.group.removeAll()},gD.incrementalUpdate=function(t,e,i){i=Lu(i);for(var n=t.start;n0&&Ru(i[o-1]);o--);for(;n0&&Ru(i[a-1]);a--);for(;o=0){var r=o.getItemGraphicEl(a);if(!r){var s=o.getItemLayout(a);if(!s)return;(r=new wu(o,a)).position=s,r.setZ(t.get("zlevel"),t.get("z")),r.ignore=isNaN(s[0])||isNaN(s[1]),r.__temp=!0,o.setItemGraphicEl(a,r),r.stopSymbolAnimation(!0),this.group.add(r)}r.highlight()}else Ar.prototype.highlight.call(this,t,e,i,n)},downplay:function(t,e,i,n){var o=t.getData(),a=zi(o,n);if(null!=a&&a>=0){var r=o.getItemGraphicEl(a);r&&(r.__temp?(o.setItemGraphicEl(a,null),this.group.remove(r)):r.downplay())}else Ar.prototype.downplay.call(this,t,e,i,n)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new MD({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e,e},_newPolygon:function(t,e){var i=this._polygon;return i&&this._lineGroup.remove(i),i=new ID({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(i),this._polygon=i,i},_updateAnimation:function(t,e,i,n,o,a){var r=this._polyline,s=this._polygon,l=t.hostModel,u=mD(this._data,t,this._stackedOnPoints,e,this._coordSys,i,this._valueOrigin,a),h=u.current,c=u.stackedOnCurrent,d=u.next,f=u.stackedOnNext;o&&(h=Yu(u.current,i,o),c=Yu(u.stackedOnCurrent,i,o),d=Yu(u.next,i,o),f=Yu(u.stackedOnNext,i,o)),r.shape.__points=u.current,r.shape.points=h,Io(r,{shape:{points:d}},l),s&&(s.setShape({points:h,stackedOnPoints:c}),Io(s,{shape:{points:d,stackedOnPoints:f}},l));for(var p=[],g=u.status,m=0;me&&(e=t[i]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,i=0;ie[1]&&e.reverse(),e},getOtherAxis:function(){this.grid.getOtherAxis()},pointToData:function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},toLocalCoord:null,toGlobalCoord:null},u(kD,aD);var PD={show:!0,zlevel:0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#333",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#ccc"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}}},ND={};ND.categoryAxis=n({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},PD),ND.valueAxis=n({boundaryGap:[0,0],splitNumber:5},PD),ND.timeAxis=r({scale:!0,min:"dataMin",max:"dataMax"},ND.valueAxis),ND.logAxis=r({scale:!0,logBase:10},ND.valueAxis);var OD=["value","category","time","log"],ED=function(t,e,i,a){d(OD,function(r){e.extend({type:t+"Axis."+r,mergeDefaultAndTheme:function(e,o){var a=this.layoutMode,s=a?ga(e):{};n(e,o.getTheme().get(r+"Axis")),n(e,this.getDefaultOption()),e.type=i(t,e),a&&pa(e,s,a)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=_l.createByAxisModel(this))},getCategories:function(t){var e=this.option;if("category"===e.type)return t?e.data:this.__ordinalMeta.categories},getOrdinalMeta:function(){return this.__ordinalMeta},defaultOption:o([{},ND[r+"Axis"],a],!0)})}),lI.registerSubTypeDefaulter(t+"Axis",v(i,t))},RD=lI.extend({type:"cartesian2dAxis",axis:null,init:function(){RD.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){RD.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){RD.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});n(RD.prototype,UA);var zD={offset:0};ED("x",RD,th,zD),ED("y",RD,th,zD),lI.extend({type:"grid",dependencies:["xAxis","yAxis"],layoutMode:"box",coordinateSystem:null,defaultOption:{show:!1,zlevel:0,z:0,left:"10%",top:60,right:"10%",bottom:60,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"}});var BD=ih.prototype;BD.type="grid",BD.axisPointerEnabled=!0,BD.getRect=function(){return this._rect},BD.update=function(t,e){var i=this._axesMap;this._updateScale(t,this.model),d(i.x,function(t){Wl(t.scale,t.model)}),d(i.y,function(t){Wl(t.scale,t.model)});var n={};d(i.x,function(t){nh(i,"y",t,n)}),d(i.y,function(t){nh(i,"x",t,n)}),this.resize(this.model,e)},BD.resize=function(t,e,i){function n(){d(a,function(t){var e=t.isHorizontal(),i=e?[0,o.width]:[0,o.height],n=t.inverse?1:0;t.setExtent(i[n],i[1-n]),ah(t,e?o.x:o.y)})}var o=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()});this._rect=o;var a=this._axesList;n(),!i&&t.get("containLabel")&&(d(a,function(t){if(!t.model.get("axisLabel.inside")){var e=jl(t);if(e){var i=t.isHorizontal()?"height":"width",n=t.model.get("axisLabel.margin");o[i]-=e[i]+n,"top"===t.position?o.y+=e.height+n:"left"===t.position&&(o.x+=e.width+n)}}}),n())},BD.getAxis=function(t,e){var i=this._axesMap[t];if(null!=i){if(null==e)for(var n in i)if(i.hasOwnProperty(n))return i[n];return i[e]}},BD.getAxes=function(){return this._axesList.slice()},BD.getCartesian=function(t,e){if(null!=t&&null!=e){var i="x"+t+"y"+e;return this._coordsMap[i]}w(t)&&(e=t.yAxisIndex,t=t.xAxisIndex);for(var n=0,o=this._coordsList;nu[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,ph(o)?t.labelOffset+r*l:0],d=e.get("nameRotate");null!=d&&(d=d*GD/180);var f;ph(o)?n=HD(t.rotation,null!=d?d:t.rotation,r):(n=uh(t,o,d||0,u),null!=(f=t.axisNameAvailableWidth)&&(f=Math.abs(f/Math.sin(n.rotation)),!isFinite(f)&&(f=null)));var p=s.getFont(),g=e.get("nameTruncate",!0)||{},m=g.ellipsis,v=T(t.nameTruncateMaxWidth,g.maxWidth,f),y=null!=m&&null!=v?tI(i,v,p,m,{minChar:2,placeholder:g.placeholder}):i,x=e.get("tooltip",!0),_=e.mainType,w={componentType:_,name:i,$vars:["name"]};w[_+"Index"]=e.componentIndex;var b=new rM({anid:"name",__fullText:i,__truncatedText:y,position:c,rotation:n.rotation,silent:hh(e),z2:1,tooltip:x&&x.show?a({content:i,formatter:function(){return i},formatterParams:w},x):null});mo(b.style,s,{text:y,textFont:p,textFill:s.getTextColor()||e.get("axisLine.lineStyle.color"),textAlign:n.textAlign,textVerticalAlign:n.textVerticalAlign}),e.get("triggerEvent")&&(b.eventData=lh(e),b.eventData.targetType="axisName",b.eventData.name=i),this._dumbGroup.add(b),b.updateTransform(),this.group.add(b),b.decomposeTransform()}}},HD=FD.innerTextLayout=function(t,e,i){var n,o,a=Xo(e-t);return jo(a)?(o=i>0?"top":"bottom",n="center"):jo(a-GD)?(o=i>0?"bottom":"top",n="center"):(o="middle",n=a>0&&a0?"right":"left":i>0?"left":"right"),{rotation:a,textAlign:n,textVerticalAlign:o}},ZD=d,UD=v,XD=Ws({type:"axis",_axisPointer:null,axisPointerClass:null,render:function(t,e,i,n){this.axisPointerClass&&Sh(t),XD.superApply(this,"render",arguments),Dh(this,t,0,i,0,!0)},updateAxisPointer:function(t,e,i,n,o){Dh(this,t,0,i,0,!1)},remove:function(t,e){var i=this._axisPointer;i&&i.remove(e),XD.superApply(this,"remove",arguments)},dispose:function(t,e){Ch(this,e),XD.superApply(this,"dispose",arguments)}}),jD=[];XD.registerAxisPointerClass=function(t,e){jD[t]=e},XD.getAxisPointerClass=function(t){return t&&jD[t]};var YD=["axisLine","axisTickLabel","axisName"],qD=["splitArea","splitLine"],KD=XD.extend({type:"cartesianAxis",axisPointerClass:"CartesianAxisPointer",render:function(t,e,i,n){this.group.removeAll();var o=this._axisGroup;if(this._axisGroup=new tb,this.group.add(this._axisGroup),t.get("show")){var a=t.getCoordSysModel(),r=Lh(a,t),s=new FD(t,r);d(YD,s.add,s),this._axisGroup.add(s.getGroup()),d(qD,function(e){t.get(e+".show")&&this["_"+e](t,a)},this),Lo(o,this._axisGroup,t),KD.superCall(this,"render",t,e,i,n)}},remove:function(){this._splitAreaColors=null},_splitLine:function(t,e){var i=t.axis;if(!i.scale.isBlank()){var n=t.getModel("splitLine"),o=n.getModel("lineStyle"),a=o.get("color");a=y(a)?a:[a];for(var s=e.coordinateSystem.getRect(),l=i.isHorizontal(),u=0,h=i.getTicksCoords({tickModel:n}),c=[],d=[],f=o.getLineStyle(),p=0;p1){var c;"string"==typeof o?c=DD[o]:"function"==typeof o&&(c=o),c&&t.setData(n.downSample(n.mapDimension(s.dim),1/h,c,CD))}}}}}("line"));var $D=YI.extend({type:"series.__base_bar__",getInitialData:function(t,e){return ml(this.getSource(),this)},getMarkerPosition:function(t){var e=this.coordinateSystem;if(e){var i=e.dataToPoint(e.clampData(t)),n=this.getData(),o=n.getLayout("offset"),a=n.getLayout("size");return i[e.getBaseAxis().isHorizontal()?0:1]+=o+a/2,i}return[NaN,NaN]},defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod",itemStyle:{},emphasis:{}}});$D.extend({type:"series.bar",dependencies:["grid","polar"],brushSelector:"rect",getProgressive:function(){return!!this.get("large")&&this.get("progressive")},getProgressiveThreshold:function(){var t=this.get("progressiveThreshold"),e=this.get("largeThreshold");return e>t&&(t=e),t}});var JD=Qb([["fill","color"],["stroke","borderColor"],["lineWidth","borderWidth"],["stroke","barBorderColor"],["lineWidth","barBorderWidth"],["opacity"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),QD={getBarItemStyle:function(t){var e=JD(this,t);if(this.getBorderLineDash){var i=this.getBorderLineDash();i&&(e.lineDash=i)}return e}},tC=["itemStyle","barBorderWidth"];a(No.prototype,QD),Zs({type:"bar",render:function(t,e,i){this._updateDrawMode(t);var n=t.get("coordinateSystem");return"cartesian2d"!==n&&"polar"!==n||(this._isLargeDraw?this._renderLarge(t,e,i):this._renderNormal(t,e,i)),this.group},incrementalPrepareRender:function(t,e,i){this._clear(),this._updateDrawMode(t)},incrementalRender:function(t,e,i,n){this._incrementalRenderLarge(t,e)},_updateDrawMode:function(t){var e=t.pipelineContext.large;(null==this._isLargeDraw||e^this._isLargeDraw)&&(this._isLargeDraw=e,this._clear())},_renderNormal:function(t,e,i){var n,o=this.group,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.getBaseAxis();"cartesian2d"===s.type?n=l.isHorizontal():"polar"===s.type&&(n="angle"===l.dim);var u=t.isAnimationEnabled()?t:null;a.diff(r).add(function(e){if(a.hasValue(e)){var i=a.getItemModel(e),r=iC[s.type](a,e,i),l=eC[s.type](a,e,i,r,n,u);a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,i,r,t,n,"polar"===s.type)}}).update(function(e,i){var l=r.getItemGraphicEl(i);if(a.hasValue(e)){var h=a.getItemModel(e),c=iC[s.type](a,e,h);l?Io(l,{shape:c},u,e):l=eC[s.type](a,e,h,c,n,u,!0),a.setItemGraphicEl(e,l),o.add(l),Eh(l,a,e,h,c,t,n,"polar"===s.type)}else o.remove(l)}).remove(function(t){var e=r.getItemGraphicEl(t);"cartesian2d"===s.type?e&&Nh(t,u,e):e&&Oh(t,u,e)}).execute(),this._data=a},_renderLarge:function(t,e,i){this._clear(),zh(t,this.group)},_incrementalRenderLarge:function(t,e){zh(e,this.group,!0)},dispose:B,remove:function(t){this._clear(t)},_clear:function(t){var e=this.group,i=this._data;t&&t.get("animation")&&i&&!this._isLargeDraw?i.eachItemGraphicEl(function(e){"sector"===e.type?Oh(e.dataIndex,t,e):Nh(e.dataIndex,t,e)}):e.removeAll(),this._data=null}});var eC={cartesian2d:function(t,e,i,n,o,r,s){var l=new yM({shape:a({},n)});if(r){var u=l.shape,h=o?"height":"width",c={};u[h]=0,c[h]=n[h],zM[s?"updateProps":"initProps"](l,{shape:c},r,e)}return l},polar:function(t,e,i,n,o,a,s){var l=n.startAngle0?1:-1,r=n.height>0?1:-1;return{x:n.x+a*o/2,y:n.y+r*o/2,width:n.width-a*o,height:n.height-r*o}},polar:function(t,e,i){var n=t.getItemLayout(e);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle}}},nC=Pn.extend({type:"largeBar",shape:{points:[]},buildPath:function(t,e){for(var i=e.points,n=this.__startPoint,o=this.__valueIdx,a=0;a0&&"scale"!==u){var d=o.getItemLayout(0),f=Math.max(i.getWidth(),i.getHeight())/2,p=m(r.removeClipPath,r);r.setClipPath(this._createClipPath(d.cx,d.cy,f,d.startAngle,d.clockwise,p,t))}else r.removeClipPath();this._data=o}},dispose:function(){},_createClipPath:function(t,e,i,n,o,a,r){var s=new hM({shape:{cx:t,cy:e,r0:0,r:i,startAngle:n,endAngle:n,clockwise:o}});return To(s,{shape:{endAngle:n+(o?1:-1)*Math.PI*2}},r,a),s},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var lC=function(t,e){d(e,function(e){e.update="updateView",Es(e,function(i,n){var o={};return n.eachComponent({mainType:"series",subType:t,query:i},function(t){t[e.method]&&t[e.method](i.name,i.dataIndex);var n=t.getData();n.each(function(e){var i=n.getName(e);o[i]=t.isSelected(i)||!1})}),{name:i.name,selected:o}})})},uC=function(t){return{getTargetSeries:function(e){var i={},n=R();return e.eachSeriesByType(t,function(t){t.__paletteScope=i,n.set(t.uid,t)}),n},reset:function(t,e){var i=t.getRawData(),n={},o=t.getData();o.each(function(t){var e=o.getRawIndex(t);n[e]=t}),i.each(function(e){var a=n[e],r=null!=a&&o.getItemVisual(a,"color",!0);if(r)i.setItemVisual(e,"color",r);else{var s=i.getItemModel(e).get("itemStyle.color")||t.getColorFromPalette(i.getName(e)||e+"",t.__paletteScope,i.count());i.setItemVisual(e,"color",s),null!=a&&o.setItemVisual(a,"color",s)}})}}},hC=function(t,e,i,n){var o,a,r=t.getData(),s=[],l=!1;r.each(function(i){var n,u,h,c,d=r.getItemLayout(i),f=r.getItemModel(i),p=f.getModel("label"),g=p.get("position")||f.get("emphasis.label.position"),m=f.getModel("labelLine"),v=m.get("length"),y=m.get("length2"),x=(d.startAngle+d.endAngle)/2,_=Math.cos(x),w=Math.sin(x);o=d.cx,a=d.cy;var b="inside"===g||"inner"===g;if("center"===g)n=d.cx,u=d.cy,c="center";else{var S=(b?(d.r+d.r0)/2*_:d.r*_)+o,M=(b?(d.r+d.r0)/2*w:d.r*w)+a;if(n=S+3*_,u=M+3*w,!b){var I=S+_*(v+e-d.r),T=M+w*(v+e-d.r),A=I+(_<0?-1:1)*y,D=T;n=A+(_<0?-5:5),u=D,h=[[S,M],[I,T],[A,D]]}c=b?"center":_>0?"left":"right"}var C=p.getFont(),L=p.get("rotate")?_<0?-x+Math.PI:-x:0,k=ke(t.getFormattedLabel(i,"normal")||r.getName(i),C,c,"top");l=!!L,d.label={x:n,y:u,position:g,height:k.height,len:v,len2:y,linePoints:h,textAlign:c,verticalAlign:"middle",rotation:L,inside:b},b||s.push(d.label)}),!l&&t.get("avoidLabelOverlap")&&Hh(s,o,a,e,i,n)},cC=2*Math.PI,dC=Math.PI/180,fC=function(t){return{seriesType:t,reset:function(t,e){var i=e.findComponents({mainType:"legend"});if(i&&i.length){var n=t.getData();n.filterSelf(function(t){for(var e=n.getName(t),o=0;o=0;s--){var l=2*s,u=n[l]-a/2,h=n[l+1]-r/2;if(t>=u&&e>=h&&t<=u+a&&e<=h+r)return s}return-1}}),gC=Uh.prototype;gC.isPersistent=function(){return!this._incremental},gC.updateData=function(t){this.group.removeAll();var e=new pC({rectHover:!0,cursor:"default"});e.setShape({points:t.getLayout("symbolPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},gC.updateLayout=function(t){if(!this._incremental){var e=t.getLayout("symbolPoints");this.group.eachChild(function(t){if(null!=t.startIndex){var i=2*(t.endIndex-t.startIndex),n=4*t.startIndex*2;e=new Float32Array(e.buffer,n,i)}t.setShape("points",e)})}},gC.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>2e6?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},gC.incrementalUpdate=function(t,e){var i;this._incremental?(i=new pC,this._incremental.addDisplayable(i,!0)):((i=new pC({rectHover:!0,cursor:"default",startIndex:t.start,endIndex:t.end})).incremental=!0,this.group.add(i)),i.setShape({points:e.getLayout("symbolPoints")}),this._setCommon(i,e,!!this._incremental)},gC._setCommon=function(t,e,i){var n=e.hostModel,o=e.getVisual("symbolSize");t.setShape("size",o instanceof Array?o:[o,o]),t.symbolProxy=Jl(e.getVisual("symbol"),0,0,0,0),t.setColor=t.symbolProxy.setColor;var a=t.shape.size[0]<4;t.useStyle(n.getModel("itemStyle").getItemStyle(a?["color","shadowBlur","shadowColor"]:["color"]));var r=e.getVisual("color");r&&t.setColor(r),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>=0&&(t.dataIndex=i+(t.startIndex||0))}))},gC.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},gC._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()},Zs({type:"scatter",render:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).updateData(n),this._finished=!0},incrementalPrepareRender:function(t,e,i){var n=t.getData();this._updateSymbolDraw(n,t).incrementalPrepareUpdate(n),this._finished=!1},incrementalRender:function(t,e,i){this._symbolDraw.incrementalUpdate(t,e.getData()),this._finished=t.end===e.getData().count()},updateTransform:function(t,e,i){var n=t.getData();if(this.group.dirty(),!this._finished||n.count()>1e4||!this._symbolDraw.isPersistent())return{update:!0};var o=AD().reset(t);o.progress&&o.progress({start:0,end:n.count()},n),this._symbolDraw.updateLayout(n)},_updateSymbolDraw:function(t,e){var i=this._symbolDraw,n=e.pipelineContext.large;return i&&n===this._isLargeDraw||(i&&i.remove(),i=this._symbolDraw=n?new Uh:new Du,this._isLargeDraw=n,this.group.removeAll()),this.group.add(i.group),i},remove:function(t,e){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},dispose:function(){}}),Bs(TD("scatter","circle")),zs(AD("scatter")),u(Xh,aD),jh.prototype.getIndicatorAxes=function(){return this._indicatorAxes},jh.prototype.dataToPoint=function(t,e){var i=this._indicatorAxes[e];return this.coordToPoint(i.dataToCoord(t),e)},jh.prototype.coordToPoint=function(t,e){var i=this._indicatorAxes[e].angle;return[this.cx+t*Math.cos(i),this.cy-t*Math.sin(i)]},jh.prototype.pointToData=function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=Math.sqrt(e*e+i*i);e/=n,i/=n;for(var o,a=Math.atan2(-i,e),r=1/0,s=-1,l=0;ln[0]&&isFinite(c)&&isFinite(n[0]))}else{r.getTicks().length-1>a&&(u=i(u));var d=Math.round((n[0]+n[1])/2/u)*u,f=Math.round(a/2);r.setExtent(Go(d-f*u),Go(d+(a-f)*u)),r.setInterval(u)}})},jh.dimensions=[],jh.create=function(t,e){var i=[];return t.eachComponent("radar",function(n){var o=new jh(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeriesByType("radar",function(t){"radar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("radarIndex")||0])}),i},Fa.register("radar",jh);var mC=ND.valueAxis,vC=(Fs({type:"radar",optionUpdated:function(){var t=this.get("boundaryGap"),e=this.get("splitNumber"),o=this.get("scale"),s=this.get("axisLine"),l=this.get("axisTick"),u=this.get("axisLabel"),h=this.get("name"),c=this.get("name.show"),d=this.get("name.formatter"),p=this.get("nameGap"),g=this.get("triggerEvent"),m=f(this.get("indicator")||[],function(f){null!=f.max&&f.max>0&&!f.min?f.min=0:null!=f.min&&f.min<0&&!f.max&&(f.max=0);var m=h;if(null!=f.color&&(m=r({color:f.color},h)),f=n(i(f),{boundaryGap:t,splitNumber:e,scale:o,axisLine:s,axisTick:l,axisLabel:u,name:f.text,nameLocation:"end",nameGap:p,nameTextStyle:m,triggerEvent:g},!1),c||(f.name=""),"string"==typeof d){var v=f.name;f.name=d.replace("{value}",null!=v?v:"")}else"function"==typeof d&&(f.name=d(f.name,f));var y=a(new No(f,null,this.ecModel),UA);return y.mainType="radar",y.componentIndex=this.componentIndex,y},this);this.getIndicatorModels=function(){return m}},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"75%",startAngle:90,name:{show:!0},boundaryGap:[0,0],splitNumber:5,nameGap:15,scale:!1,shape:"polygon",axisLine:n({lineStyle:{color:"#bbb"}},mC.axisLine),axisLabel:Yh(mC.axisLabel,!1),axisTick:Yh(mC.axisTick,!1),splitLine:Yh(mC.splitLine,!0),splitArea:Yh(mC.splitArea,!0),indicator:[]}}),["axisLine","axisTickLabel","axisName"]);Ws({type:"radar",render:function(t,e,i){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},_buildAxes:function(t){var e=t.coordinateSystem;d(f(e.getIndicatorAxes(),function(t){return new FD(t.model,{position:[e.cx,e.cy],rotation:t.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(t){d(vC,t.add,t),this.group.add(t.getGroup())},this)},_buildSplitLineAndArea:function(t){function e(t,e,i){var n=i%e.length;return t[n]=t[n]||[],n}var i=t.coordinateSystem,n=i.getIndicatorAxes();if(n.length){var o=t.get("shape"),a=t.getModel("splitLine"),s=t.getModel("splitArea"),l=a.getModel("lineStyle"),u=s.getModel("areaStyle"),h=a.get("show"),c=s.get("show"),p=l.get("color"),g=u.get("color");p=y(p)?p:[p],g=y(g)?g:[g];var m=[],v=[];if("circle"===o)for(var x=n[0].getTicksCoords(),_=i.cx,w=i.cy,b=0;b"+f(i,function(i,n){var o=e.get(e.mapDimension(i.dim),t);return ia(i.name+" : "+o)}).join("
")},defaultOption:{zlevel:0,z:2,coordinateSystem:"radar",legendHoverLink:!0,radarIndex:0,lineStyle:{width:2,type:"solid"},label:{position:"top"},symbol:"emptyCircle",symbolSize:4}});Zs({type:"radar",render:function(t,e,n){function o(t,e){var i=t.getItemVisual(e,"symbol")||"circle",n=t.getItemVisual(e,"color");if("none"!==i){var o=qh(t.getItemVisual(e,"symbolSize")),a=Jl(i,-1,-1,2,2,n);return a.attr({style:{strokeNoScale:!0},z2:100,scale:[o[0]/2,o[1]/2]}),a}}function a(e,i,n,a,r,s){n.removeAll();for(var l=0;l"+ia(n+" : "+i)},getTooltipPosition:function(t){if(null!=t){var e=this.getData().getName(t),i=this.coordinateSystem,n=i.getRegion(e);return n&&i.dataToPoint(n.center)}},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},defaultOption:{zlevel:0,z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:.75,showLegendSymbol:!0,dataRangeHoverLink:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}}}}),aC);var EC="\0_ec_interaction_mutex";Es({type:"takeGlobalCursor",event:"globalCursorTaken",update:"update"},function(){}),h(oc,fw);var RC={axisPointer:1,tooltip:1,brush:1};xc.prototype={constructor:xc,draw:function(t,e,i,n,o){var a="geo"===t.mainType,r=t.getData&&t.getData();a&&e.eachComponent({mainType:"series",subType:"map"},function(e){r||e.getHostGeoModel()!==t||(r=e.getData())});var s=t.coordinateSystem;this._updateBackground(s);var l=this._regionsGroup,u=this.group,h=s.scale,c={position:s.position,scale:h};!l.childAt(0)||o?u.attr(c):Io(u,c,t),l.removeAll();var f=["itemStyle"],p=["emphasis","itemStyle"],g=["label"],m=["emphasis","label"],v=R();d(s.regions,function(e){var i=v.get(e.name)||v.set(e.name,new tb),n=new MM({shape:{paths:[]}});i.add(n);var o,s=(C=t.getRegionModel(e.name)||t).getModel(f),u=C.getModel(p),c=mc(s),y=mc(u),x=C.getModel(g),_=C.getModel(m);if(r){o=r.indexOfName(e.name);var w=r.getItemVisual(o,"color",!0);w&&(c.fill=w)}d(e.geometries,function(t){if("polygon"===t.type){n.shape.paths.push(new pM({shape:{points:t.exterior}}));for(var e=0;e<(t.interiors?t.interiors.length:0);e++)n.shape.paths.push(new pM({shape:{points:t.interiors[e]}}))}}),n.setStyle(c),n.style.strokeNoScale=!0,n.culling=!0;var b=x.get("show"),S=_.get("show"),M=r&&isNaN(r.get(r.mapDimension("value"),o)),I=r&&r.getItemLayout(o);if(a||M&&(b||S)||I&&I.showLabel){var T,A=a?e.name:o;(!r||o>=0)&&(T=t);var D=new rM({position:e.center.slice(),scale:[1/h[0],1/h[1]],z2:10,silent:!0});go(D.style,D.hoverStyle={},x,_,{labelFetcher:T,labelDataIndex:A,defaultText:e.name,useInsideStyle:!1},{textAlign:"center",textVerticalAlign:"middle"}),i.add(D)}if(r)r.setItemGraphicEl(o,i);else{var C=t.getRegionModel(e.name);n.eventData={componentType:"geo",componentIndex:t.componentIndex,geoIndex:t.componentIndex,name:e.name,region:C&&C.option||{}}}(i.__regions||(i.__regions=[])).push(e),fo(i,y,{hoverSilentOnTouch:!!t.get("selectedMode")}),l.add(i)}),this._updateController(t,e,i),vc(this,t,l,i,n),yc(t,l)},remove:function(){this._regionsGroup.removeAll(),this._backgroundGroup.removeAll(),this._controller.dispose(),this._mapName&&OC.removeGraphic(this._mapName,this.uid),this._mapName=null,this._controllerHost={}},_updateBackground:function(t){var e=t.map;this._mapName!==e&&d(OC.makeGraphic(e,this.uid),function(t){this._backgroundGroup.add(t)},this),this._mapName=e},_updateController:function(t,e,i){function n(){var e={type:"geoRoam",componentType:l};return e[l+"Id"]=t.id,e}var o=t.coordinateSystem,r=this._controller,s=this._controllerHost;s.zoomLimit=t.get("scaleLimit"),s.zoom=o.getZoom(),r.enable(t.get("roam")||!1);var l=t.mainType;r.off("pan").on("pan",function(t){this._mouseDownFlag=!1,fc(s,t.dx,t.dy),i.dispatchAction(a(n(),{dx:t.dx,dy:t.dy}))},this),r.off("zoom").on("zoom",function(t){if(this._mouseDownFlag=!1,pc(s,t.scale,t.originX,t.originY),i.dispatchAction(a(n(),{zoom:t.scale,originX:t.originX,originY:t.originY})),this._updateGroup){var e=this.group.scale;this._regionsGroup.traverse(function(t){"text"===t.type&&t.attr("scale",[1/e[0],1/e[1]])})}},this),r.setPointerChecker(function(e,n,a){return o.getViewRectAfterRoam().contain(n,a)&&!gc(e,i,t)})}};var zC="__seriesMapHighDown",BC="__seriesMapCallKey";Zs({type:"map",render:function(t,e,i,n){if(!n||"mapToggleSelect"!==n.type||n.from!==this.uid){var o=this.group;if(o.removeAll(),!t.getHostGeoModel()){if(n&&"geoRoam"===n.type&&"series"===n.componentType&&n.seriesId===t.id)(a=this._mapDraw)&&o.add(a.group);else if(t.needsDrawMap){var a=this._mapDraw||new xc(i,!0);o.add(a.group),a.draw(t,e,i,this,n),this._mapDraw=a}else this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null;t.get("showLegendSymbol")&&e.getComponent("legend")&&this._renderSymbols(t,e,i)}}},remove:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null,this.group.removeAll()},dispose:function(){this._mapDraw&&this._mapDraw.remove(),this._mapDraw=null},_renderSymbols:function(t,e,i){var n=t.originalData,o=this.group;n.each(n.mapDimension("value"),function(e,i){if(!isNaN(e)){var r=n.getItemLayout(i);if(r&&r.point){var s=r.point,l=r.offset,u=new sM({style:{fill:t.getData().getVisual("color")},shape:{cx:s[0]+9*l,cy:s[1],r:3},silent:!0,z2:8+(l?0:NM+1)});if(!l){var h=t.mainSeries.getData(),c=n.getName(i),d=h.indexOfName(c),f=n.getItemModel(i),p=f.getModel("label"),g=f.getModel("emphasis.label"),m=h.getItemGraphicEl(d),y=A(t.getFormattedLabel(d,"normal"),c),x=A(t.getFormattedLabel(d,"emphasis"),y),_=m[zC],w=Math.random();if(!_){_=m[zC]={};var b=v(_c,!0),S=v(_c,!1);m.on("mouseover",b).on("mouseout",S).on("emphasis",b).on("normal",S)}m[BC]=w,a(_,{recordVersion:w,circle:u,labelModel:p,hoverLabelModel:g,emphasisText:x,normalText:y}),wc(_,!1)}o.add(u)}}})}}),Es({type:"geoRoam",event:"geoRoam",update:"updateTransform"},function(t,e){var i=t.componentType||"series";e.eachComponent({mainType:i,query:t},function(e){var n=e.coordinateSystem;if("geo"===n.type){var o=bc(n,t,e.get("scaleLimit"));e.setCenter&&e.setCenter(o.center),e.setZoom&&e.setZoom(o.zoom),"series"===i&&d(e.seriesGroup,function(t){t.setCenter(o.center),t.setZoom(o.zoom)})}})});var VC=Q;h(Sc,Tw),Mc.prototype={constructor:Mc,type:"view",dimensions:["x","y"],setBoundingRect:function(t,e,i,n){return this._rect=new de(t,e,i,n),this._rect},getBoundingRect:function(){return this._rect},setViewRect:function(t,e,i,n){this.transformTo(t,e,i,n),this._viewRect=new de(t,e,i,n)},transformTo:function(t,e,i,n){var o=this.getBoundingRect(),a=this._rawTransformable;a.transform=o.calculateTransform(new de(t,e,i,n)),a.decomposeTransform(),this._updateTransform()},setCenter:function(t){t&&(this._center=t,this._updateCenterAndZoom())},setZoom:function(t){t=t||1;var e=this.zoomLimit;e&&(null!=e.max&&(t=Math.min(e.max,t)),null!=e.min&&(t=Math.max(e.min,t))),this._zoom=t,this._updateCenterAndZoom()},getDefaultCenter:function(){var t=this.getBoundingRect();return[t.x+t.width/2,t.y+t.height/2]},getCenter:function(){return this._center||this.getDefaultCenter()},getZoom:function(){return this._zoom||1},getRoamTransform:function(){return this._roamTransformable.getLocalTransform()},_updateCenterAndZoom:function(){var t=this._rawTransformable.getLocalTransform(),e=this._roamTransformable,i=this.getDefaultCenter(),n=this.getCenter(),o=this.getZoom();n=Q([],n,t),i=Q([],i,t),e.origin=n,e.position=[i[0]-n[0],i[1]-n[1]],e.scale=[o,o],this._updateTransform()},_updateTransform:function(){var t=this._roamTransformable,e=this._rawTransformable;e.parent=t,t.updateTransform(),e.updateTransform(),wt(this.transform||(this.transform=[]),e.transform||xt()),this._rawTransform=e.getLocalTransform(),this.invTransform=this.invTransform||[],Tt(this.invTransform,this.transform),this.decomposeTransform()},getViewRect:function(){return this._viewRect},getViewRectAfterRoam:function(){var t=this.getBoundingRect().clone();return t.applyTransform(this.transform),t},dataToPoint:function(t,e,i){var n=e?this._rawTransform:this.transform;return i=i||[],n?VC(i,t,n):G(i,t)},pointToData:function(t){var e=this.invTransform;return e?VC([],t,e):[t[0],t[1]]},convertToPixel:v(Ic,"dataToPoint"),convertFromPixel:v(Ic,"pointToData"),containPoint:function(t){return this.getViewRectAfterRoam().contain(t[0],t[1])}},h(Mc,Tw),Tc.prototype={constructor:Tc,type:"geo",dimensions:["lng","lat"],containCoord:function(t){for(var e=this.regions,i=0;ie&&(e=n.height)}this.height=e+1},getNodeById:function(t){if(this.getId()===t)return this;for(var e=0,i=this.children,n=i.length;e=0&&this.hostTree.data.setItemLayout(this.dataIndex,t,e)},getLayout:function(){return this.hostTree.data.getItemLayout(this.dataIndex)},getModel:function(t){if(!(this.dataIndex<0)){var e,i=this.hostTree,n=i.data.getItemModel(this.dataIndex),o=this.getLevelModel();return o||0!==this.children.length&&(0===this.children.length||!1!==this.isExpand)||(e=this.getLeavesModel()),n.getModel(t,(o||e||i.hostModel).getModel(t))}},getLevelModel:function(){return(this.hostTree.levelModels||[])[this.depth]},getLeavesModel:function(){return this.hostTree.leavesModel},setVisual:function(t,e){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,t,e)},getVisual:function(t,e){return this.hostTree.data.getItemVisual(this.dataIndex,t,e)},getRawIndex:function(){return this.hostTree.data.getRawIndex(this.dataIndex)},getId:function(){return this.hostTree.data.getId(this.dataIndex)},isAncestorOf:function(t){for(var e=t.parentNode;e;){if(e===this)return!0;e=e.parentNode}return!1},isDescendantOf:function(t){return t!==this&&t.isAncestorOf(this)}},Vc.prototype={constructor:Vc,type:"tree",eachNode:function(t,e,i){this.root.eachNode(t,e,i)},getNodeByDataIndex:function(t){var e=this.data.getRawIndex(t);return this._nodes[e]},getNodeByName:function(t){return this.root.getNodeByName(t)},update:function(){for(var t=this.data,e=this._nodes,i=0,n=e.length;ia&&(a=t.depth)});var r=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:a;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=r}),o.data},getOrient:function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},formatTooltip:function(t){for(var e=this.getData().tree,i=e.root.children[0],n=e.getNodeByDataIndex(t),o=n.getValue(),a=n.name;n&&n!==i;)a=n.parentNode.name+"."+a,n=n.parentNode;return ia(a+(isNaN(o)||null==o?"":" : "+o))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderColor:"#c23531",borderWidth:1.5},label:{show:!0,color:"#555"},leaves:{label:{show:!0}},animationEasing:"linear",animationDuration:700,animationDurationUpdate:1e3}}),Zs({type:"tree",init:function(t,e){this._oldTree,this._mainGroup=new tb,this._controller=new oc(e.getZr()),this._controllerHost={target:this.group},this.group.add(this._mainGroup)},render:function(t,e,i,n){var o=t.getData(),a=t.layoutInfo,r=this._mainGroup,s=t.get("layout");"radial"===s?r.attr("position",[a.x+a.width/2,a.y+a.height/2]):r.attr("position",[a.x,a.y]),this._updateViewCoordSys(t),this._updateController(t,e,i);var l=this._data,u={expandAndCollapse:t.get("expandAndCollapse"),layout:s,orient:t.getOrient(),curvature:t.get("lineStyle.curveness"),symbolRotate:t.get("symbolRotate"),symbolOffset:t.get("symbolOffset"),hoverAnimation:t.get("hoverAnimation"),useNameLabel:!0,fadeIn:!0};o.diff(l).add(function(e){td(o,e)&&id(o,e,null,r,t,u)}).update(function(e,i){var n=l.getItemGraphicEl(i);td(o,e)?id(o,e,n,r,t,u):n&&nd(l,i,n,r,t,u)}).remove(function(e){var i=l.getItemGraphicEl(e);i&&nd(l,e,i,r,t,u)}).execute(),this._nodeScaleRatio=t.get("nodeScaleRatio"),this._updateNodeAndLinkScale(t),!0===u.expandAndCollapse&&o.eachItemGraphicEl(function(e,n){e.off("click").on("click",function(){i.dispatchAction({type:"treeExpandAndCollapse",seriesId:t.id,dataIndex:n})})}),this._data=o},_updateViewCoordSys:function(t){var e=t.getData(),i=[];e.each(function(t){var n=e.getItemLayout(t);!n||isNaN(n.x)||isNaN(n.y)||i.push([+n.x,+n.y])});var n=[],o=[];fn(i,n,o),o[0]-n[0]==0&&(o[0]+=1,n[0]-=1),o[1]-n[1]==0&&(o[1]+=1,n[1]-=1);var a=t.coordinateSystem=new Mc;a.zoomLimit=t.get("scaleLimit"),a.setBoundingRect(n[0],n[1],o[0]-n[0],o[1]-n[1]),a.setCenter(t.get("center")),a.setZoom(t.get("zoom")),this.group.attr({position:a.position,scale:a.scale}),this._viewCoordSys=a},_updateController:function(t,e,i){var n=this._controller,o=this._controllerHost,a=this.group;n.setPointerChecker(function(e,n,o){var r=a.getBoundingRect();return r.applyTransform(a.transform),r.contain(n,o)&&!gc(e,i,t)}),n.enable(t.get("roam")),o.zoomLimit=t.get("scaleLimit"),o.zoom=t.coordinateSystem.getZoom(),n.off("pan").off("zoom").on("pan",function(e){fc(o,e.dx,e.dy),i.dispatchAction({seriesId:t.id,type:"treeRoam",dx:e.dx,dy:e.dy})},this).on("zoom",function(e){pc(o,e.scale,e.originX,e.originY),i.dispatchAction({seriesId:t.id,type:"treeRoam",zoom:e.scale,originX:e.originX,originY:e.originY}),this._updateNodeAndLinkScale(t)},this)},_updateNodeAndLinkScale:function(t){var e=t.getData(),i=this._getNodeGlobalScale(t),n=[i,i];e.eachItemGraphicEl(function(t,e){t.attr("scale",n)})},_getNodeGlobalScale:function(t){var e=t.coordinateSystem;if("view"!==e.type)return 1;var i=this._nodeScaleRatio,n=e.scale,o=n&&n[0]||1;return((e.getZoom()-1)*i+1)/o},dispose:function(){this._controller&&this._controller.dispose(),this._controllerHost={}},remove:function(){this._mainGroup.removeAll(),this._data=null}}),Es({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=t.dataIndex,n=e.getData().tree.getNodeByDataIndex(i);n.isExpand=!n.isExpand})}),Es({type:"treeRoam",event:"treeRoam",update:"none"},function(t,e){e.eachComponent({mainType:"series",subType:"tree",query:t},function(e){var i=bc(e.coordinateSystem,t);e.setCenter&&e.setCenter(i.center),e.setZoom&&e.setZoom(i.zoom)})});Bs(TD("tree","circle")),zs(function(t,e){t.eachSeriesByType("tree",function(t){sd(t,e)})}),YI.extend({type:"series.treemap",layoutMode:"box",dependencies:["grid","polar"],_viewRoot:null,defaultOption:{progressive:0,hoverLayerThreshold:1/0,left:"center",top:"middle",right:null,bottom:null,width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"▶",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",borderColor:"rgba(255,255,255,0.7)",borderWidth:1,shadowColor:"rgba(150,150,150,1)",shadowBlur:3,shadowOffsetX:0,shadowOffsetY:0,textStyle:{color:"#fff"}},emphasis:{textStyle:{}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",ellipsis:!0},upperLabel:{show:!1,position:[0,"50%"],height:20,color:"#fff",ellipsis:!0,verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],color:"#fff",ellipsis:!0,verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},getInitialData:function(t,e){var i={name:t.name,children:t.data};dd(i);var n=t.levels||[];n=t.levels=fd(n,e);var o={};return o.levels=n,Vc.createTree(i,this,o).data},optionUpdated:function(){this.resetViewRoot()},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=ta(y(i)?i[0]:i);return ia(e.getName(t)+": "+n)},getDataParams:function(t){var e=YI.prototype.getDataParams.apply(this,arguments),i=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=cd(i,this),e},setLayoutInfo:function(t){this.layoutInfo=this.layoutInfo||{},a(this.layoutInfo,t)},mapIdToIndex:function(t){var e=this._idIndexMap;e||(e=this._idIndexMap=R(),this._idIndexMapCount=0);var i=e.get(t);return null==i&&e.set(t,i=this._idIndexMapCount++),i},getViewRoot:function(){return this._viewRoot},resetViewRoot:function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)}});var UC=5;pd.prototype={constructor:pd,render:function(t,e,i,n){var o=t.getModel("breadcrumb"),a=this.group;if(a.removeAll(),o.get("show")&&i){var r=o.getModel("itemStyle"),s=r.getModel("textStyle"),l={pos:{left:o.get("left"),right:o.get("right"),top:o.get("top"),bottom:o.get("bottom")},box:{width:e.getWidth(),height:e.getHeight()},emptyItemWidth:o.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(i,l,s),this._renderContent(t,l,r,s,n),da(a,l.pos,l.box)}},_prepare:function(t,e,i){for(var n=t;n;n=n.parentNode){var o=n.getModel().get("name"),a=i.getTextRect(o),r=Math.max(a.width+16,e.emptyItemWidth);e.totalWidth+=r+8,e.renderList.push({node:n,text:o,width:r})}},_renderContent:function(t,e,i,n,o){for(var a=0,s=e.emptyItemWidth,l=t.get("breadcrumb.height"),u=ha(e.pos,e.box),h=e.totalWidth,c=e.renderList,d=c.length-1;d>=0;d--){var f=c[d],p=f.node,g=f.width,m=f.text;h>u.width&&(h-=g-s,g=s,m=null);var y=new pM({shape:{points:gd(a,0,g,l,d===c.length-1,0===d)},style:r(i.getItemStyle(),{lineJoin:"bevel",text:m,textFill:n.getTextColor(),textFont:n.getFont()}),z:10,onclick:v(o,p)});this.group.add(y),md(y,t,p),a+=g+8}},remove:function(){this.group.removeAll()}};var XC=m,jC=tb,YC=yM,qC=d,KC=["label"],$C=["emphasis","label"],JC=["upperLabel"],QC=["emphasis","upperLabel"],tL=10,eL=1,iL=2,nL=Qb([["fill","color"],["stroke","strokeColor"],["lineWidth","strokeWidth"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["shadowColor"]]),oL=function(t){var e=nL(t);return e.stroke=e.fill=e.lineWidth=null,e};Zs({type:"treemap",init:function(t,e){this._containerGroup,this._storage={nodeGroup:[],background:[],content:[]},this._oldTree,this._breadcrumb,this._controller,this._state="ready"},render:function(t,e,i,n){if(!(l(e.findComponents({mainType:"series",subType:"treemap",query:n}),t)<0)){this.seriesModel=t,this.api=i,this.ecModel=e;var o=ld(n,["treemapZoomToNode","treemapRootToNode"],t),a=n&&n.type,r=t.layoutInfo,s=!this._oldTree,u=this._storage,h="treemapRootToNode"===a&&o&&u?{rootNodeGroup:u.nodeGroup[o.node.getRawIndex()],direction:n.direction}:null,c=this._giveContainerGroup(r),d=this._doRender(c,t,h);s||a&&"treemapZoomToNode"!==a&&"treemapRootToNode"!==a?d.renderFinally():this._doAnimation(c,d,t,h),this._resetController(i),this._renderBreadcrumb(t,i,o)}},_giveContainerGroup:function(t){var e=this._containerGroup;return e||(e=this._containerGroup=new jC,this._initEvents(e),this.group.add(e)),e.attr("position",[t.x,t.y]),e},_doRender:function(t,e,i){function n(t,e,i,o,a){function r(t){return t.getId()}function s(r,s){var l=null!=r?t[r]:null,u=null!=s?e[s]:null,c=h(l,u,i,a);c&&n(l&&l.viewChildren||[],u&&u.viewChildren||[],c,o,a+1)}o?(e=t,qC(t,function(t,e){!t.isRemoved()&&s(e,e)})):new Xs(e,t,r,r).add(s).update(s).remove(v(s,null)).execute()}var o=e.getData().tree,a=this._oldTree,r={nodeGroup:[],background:[],content:[]},s={nodeGroup:[],background:[],content:[]},l=this._storage,u=[],h=v(yd,e,s,l,i,r,u);n(o.root?[o.root]:[],a&&a.root?[a.root]:[],t,o===a||!a,0);var c=function(t){var e={nodeGroup:[],background:[],content:[]};return t&&qC(t,function(t,i){var n=e[i];qC(t,function(t){t&&(n.push(t),t.__tmWillDelete=1)})}),e}(l);return this._oldTree=o,this._storage=s,{lastsForAnimation:r,willDeleteEls:c,renderFinally:function(){qC(c,function(t){qC(t,function(t){t.parent&&t.parent.remove(t)})}),qC(u,function(t){t.invisible=!0,t.dirty()})}}},_doAnimation:function(t,e,i,n){if(i.get("animation")){var o=i.get("animationDurationUpdate"),r=i.get("animationEasing"),s=vd();qC(e.willDeleteEls,function(t,e){qC(t,function(t,i){if(!t.invisible){var a,l=t.parent;if(n&&"drillDown"===n.direction)a=l===n.rootNodeGroup?{shape:{x:0,y:0,width:l.__tmNodeWidth,height:l.__tmNodeHeight},style:{opacity:0}}:{style:{opacity:0}};else{var u=0,h=0;l.__tmWillDelete||(u=l.__tmNodeWidth/2,h=l.__tmNodeHeight/2),a="nodeGroup"===e?{position:[u,h],style:{opacity:0}}:{shape:{x:u,y:h,width:0,height:0},style:{opacity:0}}}a&&s.add(t,a,o,r)}})}),qC(this._storage,function(t,i){qC(t,function(t,n){var l=e.lastsForAnimation[i][n],u={};l&&("nodeGroup"===i?l.old&&(u.position=t.position.slice(),t.attr("position",l.old)):(l.old&&(u.shape=a({},t.shape),t.setShape(l.old)),l.fadein?(t.setStyle("opacity",0),u.style={opacity:1}):1!==t.style.opacity&&(u.style={opacity:1})),s.add(t,u,o,r))})},this),this._state="animating",s.done(XC(function(){this._state="ready",e.renderFinally()},this)).start()}},_resetController:function(t){var e=this._controller;e||((e=this._controller=new oc(t.getZr())).enable(this.seriesModel.get("roam")),e.on("pan",XC(this._onPan,this)),e.on("zoom",XC(this._onZoom,this)));var i=new de(0,0,t.getWidth(),t.getHeight());e.setPointerChecker(function(t,e,n){return i.contain(e,n)})},_clearController:function(){var t=this._controller;t&&(t.dispose(),t=null)},_onPan:function(t){if("animating"!==this._state&&(Math.abs(t.dx)>3||Math.abs(t.dy)>3)){var e=this.seriesModel.getData().tree.root;if(!e)return;var i=e.getLayout();if(!i)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:i.x+t.dx,y:i.y+t.dy,width:i.width,height:i.height}})}},_onZoom:function(t){var e=t.originX,i=t.originY;if("animating"!==this._state){var n=this.seriesModel.getData().tree.root;if(!n)return;var o=n.getLayout();if(!o)return;var a=new de(o.x,o.y,o.width,o.height),r=this.seriesModel.layoutInfo;e-=r.x,i-=r.y;var s=xt();St(s,s,[-e,-i]),It(s,s,[t.scale,t.scale]),St(s,s,[e,i]),a.applyTransform(s),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:a.x,y:a.y,width:a.width,height:a.height}})}},_initEvents:function(t){t.on("click",function(t){if("ready"===this._state){var e=this.seriesModel.get("nodeClick",!0);if(e){var i=this.findTarget(t.offsetX,t.offsetY);if(i){var n=i.node;if(n.getLayout().isLeafRoot)this._rootToNode(i);else if("zoomToNode"===e)this._zoomToNode(i);else if("link"===e){var o=n.hostTree.data.getItemModel(n.dataIndex),a=o.get("link",!0),r=o.get("target",!0)||"blank";a&&window.open(a,r)}}}}},this)},_renderBreadcrumb:function(t,e,i){i||(i=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(e.getWidth()/2,e.getHeight()/2))||(i={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new pd(this.group))).render(t,e,i.node,XC(function(e){"animating"!==this._state&&(hd(t.getViewRoot(),e)?this._rootToNode({node:e}):this._zoomToNode({node:e}))},this))},remove:function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},dispose:function(){this._clearController()},_zoomToNode:function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},_rootToNode:function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},findTarget:function(t,e){var i;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(n){var o=this._storage.background[n.getRawIndex()];if(o){var a=o.transformCoordToLocal(t,e),r=o.shape;if(!(r.x<=a[0]&&a[0]<=r.x+r.width&&r.y<=a[1]&&a[1]<=r.y+r.height))return!1;i={node:n,offsetX:a[0],offsetY:a[1]}}},this),i}});for(var aL=["treemapZoomToNode","treemapRender","treemapMove"],rL=0;rL=0&&t.call(e,i[o],o)},TL.eachEdge=function(t,e){for(var i=this.edges,n=i.length,o=0;o=0&&i[o].node1.dataIndex>=0&&i[o].node2.dataIndex>=0&&t.call(e,i[o],o)},TL.breadthFirstTraverse=function(t,e,i,n){if(Jd.isInstance(e)||(e=this._nodesMap[$d(e)]),e){for(var o="out"===i?"outEdges":"in"===i?"inEdges":"edges",a=0;a=0&&i.node2.dataIndex>=0});for(var o=0,a=n.length;o=0&&this[t][e].setItemVisual(this.dataIndex,i,n)},getVisual:function(i,n){return this[t][e].getItemVisual(this.dataIndex,i,n)},setLayout:function(i,n){this.dataIndex>=0&&this[t][e].setItemLayout(this.dataIndex,i,n)},getLayout:function(){return this[t][e].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[t][e].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[t][e].getRawIndex(this.dataIndex)}}};h(Jd,AL("hostGraph","data")),h(Qd,AL("hostGraph","edgeData")),IL.Node=Jd,IL.Edge=Qd,Yi(Jd),Yi(Qd);var DL=function(t,e,i,n,o){for(var a=new IL(n),r=0;r "+f)),h++)}var p,g=i.get("coordinateSystem");if("cartesian2d"===g||"polar"===g)p=ml(t,i);else{var m=Fa.get(g),v=m&&"view"!==m.type?m.dimensions||[]:[];l(v,"value")<0&&v.concat(["value"]);var y=_A(t,{coordDimensions:v});(p=new vA(y,i)).initData(t)}var x=new vA(["value"],i);return x.initData(u,s),o&&o(p,x),kc({mainData:p,struct:a,structAttr:"graph",datas:{node:p,edge:x},datasAttr:{node:"data",edge:"edgeData"}}),a.update(),a},CL=Hs({type:"series.graph",init:function(t){CL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this._categoriesData},this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeOption:function(t){CL.superApply(this,"mergeOption",arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},mergeDefaultAndTheme:function(t){CL.superApply(this,"mergeDefaultAndTheme",arguments),Ci(t,["edgeLabel"],["show"])},getInitialData:function(t,e){var i=t.edges||t.links||[],n=t.data||t.nodes||[],o=this;if(n&&i)return DL(n,i,this,!0,function(t,i){function n(t){return(t=this.parsePath(t))&&"label"===t[0]?r:t&&"emphasis"===t[0]&&"label"===t[1]?l:this.parentModel}t.wrapMethod("getItemModel",function(t){var e=o._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var a=o.getModel("edgeLabel"),r=new No({label:a.option},a.parentModel,e),s=o.getModel("emphasis.edgeLabel"),l=new No({emphasis:{label:s.option}},s.parentModel,e);i.wrapMethod("getItemModel",function(t){return t.customizeGetParent(n),t})}).data},getGraph:function(){return this.getData().graph},getEdgeData:function(){return this.getGraph().edgeData},getCategoriesData:function(){return this._categoriesData},formatTooltip:function(t,e,i){if("edge"===i){var n=this.getData(),o=this.getDataParams(t,i),a=n.graph.getEdgeByIndex(t),r=n.getName(a.node1.dataIndex),s=n.getName(a.node2.dataIndex),l=[];return null!=r&&l.push(r),null!=s&&l.push(s),l=ia(l.join(" > ")),o.value&&(l+=" : "+ia(o.value)),l}return CL.superApply(this,"formatTooltip",arguments)},_updateCategoriesData:function(){var t=f(this.option.categories||[],function(t){return null!=t.value?t:a({value:0},t)}),e=new vA(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t,!0)})},setZoom:function(t){this.option.zoom=t},setCenter:function(t){this.option.center=t},isAnimationEnabled:function(){return CL.superCall(this,"isAnimationEnabled")&&!("force"===this.get("layout")&&this.get("force.layoutAnimation"))},defaultOption:{zlevel:0,z:2,coordinateSystem:"view",legendHoverLink:!0,hoverAnimation:!0,layout:null,focusNodeAdjacency:!1,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle"},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,curveness:0,opacity:.5},emphasis:{label:{show:!0}}}}),LL=_M.prototype,kL=bM.prototype,PL=Un({type:"ec-line",style:{stroke:"#000",fill:null},shape:{x1:0,y1:0,x2:0,y2:0,percent:1,cpx1:null,cpy1:null},buildPath:function(t,e){(tf(e)?LL:kL).buildPath(t,e)},pointAt:function(t){return tf(this.shape)?LL.pointAt.call(this,t):kL.pointAt.call(this,t)},tangentAt:function(t){var e=this.shape,i=tf(e)?[e.x2-e.x1,e.y2-e.y1]:kL.tangentAt.call(this,t);return q(i,i)}}),NL=["fromSymbol","toSymbol"],OL=rf.prototype;OL.beforeUpdate=function(){var t=this,e=t.childOfName("fromSymbol"),i=t.childOfName("toSymbol"),n=t.childOfName("label");if(e||i||!n.ignore){for(var o=1,a=this.parent;a;)a.scale&&(o/=a.scale[0]),a=a.parent;var r=t.childOfName("line");if(this.__dirty||r.__dirty){var s=r.shape.percent,l=r.pointAt(0),u=r.pointAt(s),h=U([],u,l);if(q(h,h),e&&(e.attr("position",l),c=r.tangentAt(0),e.attr("rotation",Math.PI/2-Math.atan2(c[1],c[0])),e.attr("scale",[o*s,o*s])),i){i.attr("position",u);var c=r.tangentAt(1);i.attr("rotation",-Math.PI/2-Math.atan2(c[1],c[0])),i.attr("scale",[o*s,o*s])}if(!n.ignore){n.attr("position",u);var d,f,p,g=5*o;if("end"===n.__position)d=[h[0]*g+u[0],h[1]*g+u[1]],f=h[0]>.8?"left":h[0]<-.8?"right":"center",p=h[1]>.8?"top":h[1]<-.8?"bottom":"middle";else if("middle"===n.__position){var m=s/2,v=[(c=r.tangentAt(m))[1],-c[0]],y=r.pointAt(m);v[1]>0&&(v[0]=-v[0],v[1]=-v[1]),d=[y[0]+v[0]*g,y[1]+v[1]*g],f="center",p="bottom";var x=-Math.atan2(c[1],c[0]);u[0].8?"right":h[0]<-.8?"left":"center",p=h[1]>.8?"bottom":h[1]<-.8?"top":"middle";n.attr({style:{textVerticalAlign:n.__verticalAlign||p,textAlign:n.__textAlign||f},position:d,scale:[o,o]})}}}},OL._createLine=function(t,e,i){var n=t.hostModel,o=of(t.getItemLayout(e));o.shape.percent=0,To(o,{shape:{percent:1}},n,e),this.add(o);var a=new rM({name:"label",lineLabelOriginalOpacity:1});this.add(a),d(NL,function(i){var n=nf(i,t,e);this.add(n),this[ef(i)]=t.getItemVisual(e,i)},this),this._updateCommonStl(t,e,i)},OL.updateData=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=t.getItemLayout(e),r={shape:{}};af(r.shape,a),Io(o,r,n,e),d(NL,function(i){var n=t.getItemVisual(e,i),o=ef(i);if(this[o]!==n){this.remove(this.childOfName(i));var a=nf(i,t,e);this.add(a)}this[o]=n},this),this._updateCommonStl(t,e,i)},OL._updateCommonStl=function(t,e,i){var n=t.hostModel,o=this.childOfName("line"),a=i&&i.lineStyle,s=i&&i.hoverLineStyle,l=i&&i.labelModel,u=i&&i.hoverLabelModel;if(!i||t.hasItemOption){var h=t.getItemModel(e);a=h.getModel("lineStyle").getLineStyle(),s=h.getModel("emphasis.lineStyle").getLineStyle(),l=h.getModel("label"),u=h.getModel("emphasis.label")}var c=t.getItemVisual(e,"color"),f=D(t.getItemVisual(e,"opacity"),a.opacity,1);o.useStyle(r({strokeNoScale:!0,fill:"none",stroke:c,opacity:f},a)),o.hoverStyle=s,d(NL,function(t){var e=this.childOfName(t);e&&(e.setColor(c),e.setStyle({opacity:f}))},this);var p,g,m=l.getShallow("show"),v=u.getShallow("show"),y=this.childOfName("label");if((m||v)&&(p=c||"#000",null==(g=n.getFormattedLabel(e,"normal",t.dataType)))){var x=n.getRawValue(e);g=null==x?t.getName(e):isFinite(x)?Go(x):x}var _=m?g:null,w=v?A(n.getFormattedLabel(e,"emphasis",t.dataType),g):null,b=y.style;null==_&&null==w||(mo(y.style,l,{text:_},{autoColor:p}),y.__textAlign=b.textAlign,y.__verticalAlign=b.textVerticalAlign,y.__position=l.get("position")||"middle"),y.hoverStyle=null!=w?{text:w,textFill:u.getTextColor(!0),fontStyle:u.getShallow("fontStyle"),fontWeight:u.getShallow("fontWeight"),fontSize:u.getShallow("fontSize"),fontFamily:u.getShallow("fontFamily")}:{text:null},y.ignore=!m&&!v,fo(this)},OL.highlight=function(){this.trigger("emphasis")},OL.downplay=function(){this.trigger("normal")},OL.updateLayout=function(t,e){this.setLinePoints(t.getItemLayout(e))},OL.setLinePoints=function(t){var e=this.childOfName("line");af(e.shape,t),e.dirty()},u(rf,tb);var EL=sf.prototype;EL.isPersistent=function(){return!0},EL.updateData=function(t){var e=this,i=e.group,n=e._lineData;e._lineData=t,n||i.removeAll();var o=hf(t);t.diff(n).add(function(i){lf(e,t,i,o)}).update(function(i,a){uf(e,n,t,a,i,o)}).remove(function(t){i.remove(n.getItemGraphicEl(t))}).execute()},EL.updateLayout=function(){var t=this._lineData;t&&t.eachItemGraphicEl(function(e,i){e.updateLayout(t,i)},this)},EL.incrementalPrepareUpdate=function(t){this._seriesScope=hf(t),this._lineData=null,this.group.removeAll()},EL.incrementalUpdate=function(t,e){for(var i=t.start;i=o/3?1:2),l=e.y-n(r)*a*(a>=o/3?1:2);r=e.angle-Math.PI/2,t.moveTo(s,l),t.lineTo(e.x+i(r)*a,e.y+n(r)*a),t.lineTo(e.x+i(e.angle)*o,e.y+n(e.angle)*o),t.lineTo(e.x-i(r)*a,e.y-n(r)*a),t.lineTo(s,l)}}),YL=2*Math.PI,qL=(Ar.extend({type:"gauge",render:function(t,e,i){this.group.removeAll();var n=t.get("axisLine.lineStyle.color"),o=Sf(t,i);this._renderMain(t,e,i,n,o)},dispose:function(){},_renderMain:function(t,e,i,n,o){for(var a=this.group,r=t.getModel("axisLine").getModel("lineStyle"),s=t.get("clockwise"),l=-t.get("startAngle")/180*Math.PI,u=-t.get("endAngle")/180*Math.PI,h=(u-l)%YL,c=l,d=r.get("width"),f=0;f=t&&(0===e?0:n[e-1][0]).4?"bottom":"middle",textAlign:A<-.4?"left":A>.4?"right":"center"},{autoColor:P}),silent:!0}))}if(g.get("show")&&T!==v){for(var N=0;N<=y;N++){var A=Math.cos(w),D=Math.sin(w),O=new _M({shape:{x1:A*c+u,y1:D*c+h,x2:A*(c-_)+u,y2:D*(c-_)+h},silent:!0,style:I});"auto"===I.stroke&&O.setStyle({stroke:n((T+N/y)/v)}),l.add(O),w+=S}w-=S}else w+=b}},_renderPointer:function(t,e,i,n,o,a,r,s){var l=this.group,u=this._data;if(t.get("pointer.show")){var h=[+t.get("min"),+t.get("max")],c=[a,r],d=t.getData(),f=d.mapDimension("value");d.diff(u).add(function(e){var i=new jL({shape:{angle:a}});To(i,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(i),d.setItemGraphicEl(e,i)}).update(function(e,i){var n=u.getItemGraphicEl(i);Io(n,{shape:{angle:Bo(d.get(f,e),h,c,!0)}},t),l.add(n),d.setItemGraphicEl(e,n)}).remove(function(t){var e=u.getItemGraphicEl(t);l.remove(e)}).execute(),d.eachItemGraphicEl(function(t,e){var i=d.getItemModel(e),a=i.getModel("pointer");t.setShape({x:o.cx,y:o.cy,width:Vo(a.get("width"),o.r),r:Vo(a.get("length"),o.r)}),t.useStyle(i.getModel("itemStyle").getItemStyle()),"auto"===t.style.fill&&t.setStyle("fill",n(Bo(d.get(f,e),h,[0,1],!0))),fo(t,i.getModel("emphasis.itemStyle").getItemStyle())}),this._data=d}else u&&u.eachItemGraphicEl(function(t){l.remove(t)})},_renderTitle:function(t,e,i,n,o){var a=t.getData(),r=a.mapDimension("value"),s=t.getModel("title");if(s.get("show")){var l=s.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=+t.get("min"),d=+t.get("max"),f=n(Bo(t.getData().get(r,0),[c,d],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},s,{x:u,y:h,text:a.getName(0),textAlign:"center",textVerticalAlign:"middle"},{autoColor:f,forceRich:!0})}))}},_renderDetail:function(t,e,i,n,o){var a=t.getModel("detail"),r=+t.get("min"),s=+t.get("max");if(a.get("show")){var l=a.get("offsetCenter"),u=o.cx+Vo(l[0],o.r),h=o.cy+Vo(l[1],o.r),c=Vo(a.get("width"),o.r),d=Vo(a.get("height"),o.r),f=t.getData(),p=f.get(f.mapDimension("value"),0),g=n(Bo(p,[r,s],[0,1],!0));this.group.add(new rM({silent:!0,style:mo({},a,{x:u,y:h,text:Mf(p,a.get("formatter")),textWidth:isNaN(c)?null:c,textHeight:isNaN(d)?null:d,textAlign:"center",textVerticalAlign:"middle"},{autoColor:g,forceRich:!0})}))}}}),Hs({type:"series.funnel",init:function(t){qL.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()},this._defaultLabelLine(t)},getInitialData:function(t,e){return oC(this,["value"])},_defaultLabelLine:function(t){Ci(t,"labelLine",["show"]);var e=t.labelLine,i=t.emphasis.labelLine;e.show=e.show&&t.label.show,i.show=i.show&&t.emphasis.label.show},getDataParams:function(t){var e=this.getData(),i=qL.superCall(this,"getDataParams",t),n=e.mapDimension("value"),o=e.getSum(n);return i.percent=o?+(e.get(n,t)/o*100).toFixed(2):0,i.$vars.push("percent"),i},defaultOption:{zlevel:0,z:2,legendHoverLink:!0,left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}}}})),KL=If.prototype,$L=["itemStyle","opacity"];KL.updateData=function(t,e,i){var n=this.childAt(0),o=t.hostModel,a=t.getItemModel(e),s=t.getItemLayout(e),l=t.getItemModel(e).get($L);l=null==l?1:l,n.useStyle({}),i?(n.setShape({points:s.points}),n.setStyle({opacity:0}),To(n,{style:{opacity:l}},o,e)):Io(n,{style:{opacity:l},shape:{points:s.points}},o,e);var u=a.getModel("itemStyle"),h=t.getItemVisual(e,"color");n.setStyle(r({lineJoin:"round",fill:h},u.getItemStyle(["opacity"]))),n.hoverStyle=u.getModel("emphasis").getItemStyle(),this._updateLabel(t,e),fo(this)},KL._updateLabel=function(t,e){var i=this.childAt(1),n=this.childAt(2),o=t.hostModel,a=t.getItemModel(e),r=t.getItemLayout(e).label,s=t.getItemVisual(e,"color");Io(i,{shape:{points:r.linePoints||r.linePoints}},o,e),Io(n,{style:{x:r.x,y:r.y}},o,e),n.attr({rotation:r.rotation,origin:[r.x,r.y],z2:10});var l=a.getModel("label"),u=a.getModel("emphasis.label"),h=a.getModel("labelLine"),c=a.getModel("emphasis.labelLine"),s=t.getItemVisual(e,"color");go(n.style,n.hoverStyle={},l,u,{labelFetcher:t.hostModel,labelDataIndex:e,defaultText:t.getName(e),autoColor:s,useInsideStyle:!!r.inside},{textAlign:r.textAlign,textVerticalAlign:r.verticalAlign}),n.ignore=n.normalIgnore=!l.get("show"),n.hoverIgnore=!u.get("show"),i.ignore=i.normalIgnore=!h.get("show"),i.hoverIgnore=!c.get("show"),i.setStyle({stroke:s}),i.setStyle(h.getModel("lineStyle").getLineStyle()),i.hoverStyle=c.getModel("lineStyle").getLineStyle()},u(If,tb);Ar.extend({type:"funnel",render:function(t,e,i){var n=t.getData(),o=this._data,a=this.group;n.diff(o).add(function(t){var e=new If(n,t);n.setItemGraphicEl(t,e),a.add(e)}).update(function(t,e){var i=o.getItemGraphicEl(e);i.updateData(n,t),a.add(i),n.setItemGraphicEl(t,i)}).remove(function(t){var e=o.getItemGraphicEl(t);a.remove(e)}).execute(),this._data=n},remove:function(){this.group.removeAll(),this._data=null},dispose:function(){}});Bs(uC("funnel")),zs(function(t,e,i){t.eachSeriesByType("funnel",function(t){var i=t.getData(),n=i.mapDimension("value"),o=t.get("sort"),a=Tf(t,e),r=Af(i,o),s=[Vo(t.get("minSize"),a.width),Vo(t.get("maxSize"),a.width)],l=i.getDataExtent(n),u=t.get("min"),h=t.get("max");null==u&&(u=Math.min(l[0],0)),null==h&&(h=l[1]);var c=t.get("funnelAlign"),d=t.get("gap"),f=(a.height-d*(i.count()-1))/i.count(),p=a.y,g=function(t,e){var o,r=Bo(i.get(n,t)||0,[u,h],s,!0);switch(c){case"left":o=a.x;break;case"center":o=a.x+(a.width-r)/2;break;case"right":o=a.x+a.width-r}return[[o,e],[o+r,e]]};"ascending"===o&&(f=-f,d=-d,p+=a.height,r=r.reverse());for(var m=0;ma&&(e[1-n]=e[n]+h.sign*a),e},tk=d,ek=Math.min,ik=Math.max,nk=Math.floor,ok=Math.ceil,ak=Go,rk=Math.PI;Nf.prototype={type:"parallel",constructor:Nf,_init:function(t,e,i){var n=t.dimensions,o=t.parallelAxisIndex;tk(n,function(t,i){var n=o[i],a=e.getComponent("parallelAxis",n),r=this._axesMap.set(t,new JL(t,Hl(a),[0,0],a.get("type"),n)),s="category"===r.type;r.onBand=s&&a.get("boundaryGap"),r.inverse=a.get("inverse"),a.axis=r,r.model=a,r.coordinateSystem=a.coordinateSystem=this},this)},update:function(t,e){this._updateAxesFromSeries(this._model,t)},containPoint:function(t){var e=this._makeLayoutInfo(),i=e.axisBase,n=e.layoutBase,o=e.pixelDimIndex,a=t[1-o],r=t[o];return a>=i&&a<=i+e.axisLength&&r>=n&&r<=n+e.layoutLength},getModel:function(){return this._model},_updateAxesFromSeries:function(t,e){e.eachSeries(function(i){if(t.contains(i,e)){var n=i.getData();tk(this.dimensions,function(t){var e=this._axesMap.get(t);e.scale.unionExtentFromData(n,n.mapDimension(t)),Wl(e.scale,e.model)},this)}},this)},resize:function(t,e){this._rect=ca(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()}),this._layoutAxes()},getRect:function(){return this._rect},_makeLayoutInfo:function(){var t,e=this._model,i=this._rect,n=["x","y"],o=["width","height"],a=e.get("layout"),r="horizontal"===a?0:1,s=i[o[r]],l=[0,s],u=this.dimensions.length,h=Of(e.get("axisExpandWidth"),l),c=Of(e.get("axisExpandCount")||0,[0,u]),d=e.get("axisExpandable")&&u>3&&u>c&&c>1&&h>0&&s>0,f=e.get("axisExpandWindow");f?(t=Of(f[1]-f[0],l),f[1]=f[0]+t):(t=Of(h*(c-1),l),(f=[h*(e.get("axisExpandCenter")||nk(u/2))-t/2])[1]=f[0]+t);var p=(s-t)/(u-c);p<3&&(p=0);var g=[nk(ak(f[0]/h,1))+1,ok(ak(f[1]/h,1))-1],m=p/h*f[0];return{layout:a,pixelDimIndex:r,layoutBase:i[n[r]],layoutLength:s,axisBase:i[n[1-r]],axisLength:i[o[1-r]],axisExpandable:d,axisExpandWidth:h,axisCollapseWidth:p,axisExpandWindow:f,axisCount:u,winInnerIndices:g,axisExpandWindow0Pos:m}},_layoutAxes:function(){var t=this._rect,e=this._axesMap,i=this.dimensions,n=this._makeLayoutInfo(),o=n.layout;e.each(function(t){var e=[0,n.axisLength],i=t.inverse?1:0;t.setExtent(e[i],e[1-i])}),tk(i,function(e,i){var a=(n.axisExpandable?Rf:Ef)(i,n),r={horizontal:{x:a.position,y:n.axisLength},vertical:{x:0,y:a.position}},s={horizontal:rk/2,vertical:0},l=[r[o].x+t.x,r[o].y+t.y],u=s[o],h=xt();Mt(h,h,u),St(h,h,l),this._axesLayout[e]={position:l,rotation:u,transform:h,axisNameAvailableWidth:a.axisNameAvailableWidth,axisLabelShow:a.axisLabelShow,nameTruncateMaxWidth:a.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},getAxis:function(t){return this._axesMap.get(t)},dataToPoint:function(t,e){return this.axisCoordToPoint(this._axesMap.get(e).dataToCoord(t),e)},eachActiveState:function(t,e,i,n){null==i&&(i=0),null==n&&(n=t.count());var o=this._axesMap,a=this.dimensions,r=[],s=[];d(a,function(e){r.push(t.mapDimension(e)),s.push(o.get(e).model)});for(var l=this.hasAxisBrushed(),u=i;uo*(1-h[0])?(l="jump",r=s-o*(1-h[2])):(r=s-o*h[1])>=0&&(r=s-o*(1-h[1]))<=0&&(r=0),(r*=e.axisExpandWidth/u)?QL(r,n,a,"all"):l="none";else{o=n[1]-n[0];(n=[ik(0,a[1]*s/o-o/2)])[1]=ek(a[1],n[0]+o),n[0]=n[1]-o}return{axisExpandWindow:n,behavior:l}}},Fa.register("parallel",{create:function(t,e){var i=[];return t.eachComponent("parallel",function(n,o){var a=new Nf(n,t,e);a.name="parallel_"+o,a.resize(n,e),n.coordinateSystem=a,a.model=n,i.push(a)}),t.eachSeries(function(e){if("parallel"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"parallel",index:e.get("parallelIndex"),id:e.get("parallelId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}});var sk=lI.extend({type:"baseParallelAxis",axis:null,activeIntervals:[],getAreaSelectStyle:function(){return Qb([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},setActiveIntervals:function(t){var e=this.activeIntervals=i(t);if(e)for(var n=e.length-1;n>=0;n--)Fo(e[n])},getActiveState:function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null==t||isNaN(t))return"inactive";if(1===e.length){var i=e[0];if(i[0]<=t&&t<=i[1])return"active"}else for(var n=0,o=e.length;n5)return;var n=this._model.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]);"none"!==n.behavior&&this._dispatchExpand({axisExpandWindow:n.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(t){if(!this._mouseDownPoint&&Ip(this,"mousemove")){var e=this._model,i=e.coordinateSystem.getSlidedAxisExpandWindow([t.offsetX,t.offsetY]),n=i.behavior;"jump"===n&&this._throttledDispatchExpand.debounceNextCall(e.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===n?null:{axisExpandWindow:i.axisExpandWindow,animation:"jump"===n&&null})}}};Ns(function(t){Cf(t),Lf(t)}),YI.extend({type:"series.parallel",dependencies:["parallel"],visualColorAccessPath:"lineStyle.color",getInitialData:function(t,e){var i=this.getSource();return Tp(i,this),ml(i,this)},getRawIndicesByActiveState:function(t){var e=this.coordinateSystem,i=this.getData(),n=[];return e.eachActiveState(i,function(e,o){t===e&&n.push(i.getRawIndex(o))}),n},defaultOption:{zlevel:0,z:2,coordinateSystem:"parallel",parallelIndex:0,label:{show:!1},inactiveOpacity:.05,activeOpacity:1,lineStyle:{width:1,opacity:.45,type:"solid"},emphasis:{label:{show:!1}},progressive:500,smooth:!1,animationEasing:"linear"}});var Dk=.3,Ck=(Ar.extend({type:"parallel",init:function(){this._dataGroup=new tb,this.group.add(this._dataGroup),this._data,this._initialized},render:function(t,e,i,n){var o=this._dataGroup,a=t.getData(),r=this._data,s=t.coordinateSystem,l=s.dimensions,u=kp(t);if(a.diff(r).add(function(t){Pp(Lp(a,o,t,l,s),a,t,u)}).update(function(e,i){var o=r.getItemGraphicEl(i),h=Cp(a,e,l,s);a.setItemGraphicEl(e,o),Io(o,{shape:{points:h}},n&&!1===n.animation?null:t,e),Pp(o,a,e,u)}).remove(function(t){var e=r.getItemGraphicEl(t);o.remove(e)}).execute(),!this._initialized){this._initialized=!0;var h=Dp(s,t,function(){setTimeout(function(){o.removeClipPath()})});o.setClipPath(h)}this._data=a},incrementalPrepareRender:function(t,e,i){this._initialized=!0,this._data=null,this._dataGroup.removeAll()},incrementalRender:function(t,e,i){for(var n=e.getData(),o=e.coordinateSystem,a=o.dimensions,r=kp(e),s=t.start;sn&&(n=e)}),d(e,function(e){var o=new hL({type:"color",mappingMethod:"linear",dataExtent:[i,n],visual:t.get("color")}).mapValueToVisual(e.getLayout().value);e.setVisual("color",o);var a=e.getModel().get("itemStyle.color");null!=a&&e.setVisual("color",a)})}})});var Ok={_baseAxisDim:null,getInitialData:function(t,e){var i,n,o=e.getComponent("xAxis",this.get("xAxisIndex")),a=e.getComponent("yAxis",this.get("yAxisIndex")),r=o.get("type"),s=a.get("type");"category"===r?(t.layout="horizontal",i=o.getOrdinalMeta(),n=!0):"category"===s?(t.layout="vertical",i=a.getOrdinalMeta(),n=!0):t.layout=t.layout||"horizontal";var l=["x","y"],u="horizontal"===t.layout?0:1,h=this._baseAxisDim=l[u],c=l[1-u],f=[o,a],p=f[u].get("type"),g=f[1-u].get("type"),m=t.data;if(m&&n){var v=[];d(m,function(t,e){var i;t.value&&y(t.value)?(i=t.value.slice(),t.value.unshift(e)):y(t)?(i=t.slice(),t.unshift(e)):i=t,v.push(i)}),t.data=v}var x=this.defaultValueDimensions;return oC(this,{coordDimensions:[{name:h,type:qs(p),ordinalMeta:i,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:c,type:qs(g),dimsDef:x.slice()}],dimensionsCount:x.length+1})},getBaseAxis:function(){var t=this._baseAxisDim;return this.ecModel.getComponent(t+"Axis",this.get(t+"AxisIndex")).axis}};h(YI.extend({type:"series.boxplot",dependencies:["xAxis","yAxis","grid"],defaultValueDimensions:[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],dimensions:null,defaultOption:{zlevel:0,z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,hoverAnimation:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:2,shadowOffsetY:2,shadowColor:"rgba(0,0,0,0.4)"}},animationEasing:"elasticOut",animationDuration:800}}),Ok,!0);var Ek=["itemStyle"],Rk=["emphasis","itemStyle"],zk=(Ar.extend({type:"boxplot",render:function(t,e,i){var n=t.getData(),o=this.group,a=this._data;this._data||o.removeAll();var r="horizontal"===t.get("layout")?1:0;n.diff(a).add(function(t){if(n.hasValue(t)){var e=ig(n.getItemLayout(t),n,t,r,!0);n.setItemGraphicEl(t,e),o.add(e)}}).update(function(t,e){var i=a.getItemGraphicEl(e);if(n.hasValue(t)){var s=n.getItemLayout(t);i?ng(s,i,n,t):i=ig(s,n,t,r),o.add(i),n.setItemGraphicEl(t,i)}else o.remove(i)}).remove(function(t){var e=a.getItemGraphicEl(t);e&&o.remove(e)}).execute(),this._data=n},remove:function(t){var e=this.group,i=this._data;this._data=null,i&&i.eachItemGraphicEl(function(t){t&&e.remove(t)})},dispose:B}),Pn.extend({type:"boxplotBoxPath",shape:{},buildPath:function(t,e){var i=e.points,n=0;for(t.moveTo(i[n][0],i[n][1]),n++;n<4;n++)t.lineTo(i[n][0],i[n][1]);for(t.closePath();n0?jk:Yk)}function n(t,e){return e.get(t>0?Uk:Xk)}var o=t.getData(),a=t.pipelineContext.large;if(o.setVisual({legendSymbol:"roundRect",colorP:i(1,t),colorN:i(-1,t),borderColorP:n(1,t),borderColorN:n(-1,t)}),!e.isSeriesFiltered(t))return!a&&{progress:function(t,e){for(var o;null!=(o=t.next());){var a=e.getItemModel(o),r=e.getItemLayout(o).sign;e.setItemVisual(o,{color:i(r,a),borderColor:n(r,a)})}}}}},Kk="undefined"!=typeof Float32Array?Float32Array:Array,$k={seriesType:"candlestick",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.getData(),n=pg(t,i),o=0,a=1,r=["x","y"],s=i.mapDimension(r[o]),l=i.mapDimension(r[a],!0),u=l[0],h=l[1],c=l[2],d=l[3];if(i.setLayout({candleWidth:n,isSimpleBox:n<=1.3}),!(null==s||l.length<4))return{progress:t.pipelineContext.large?function(t,i){for(var n,r,l=new Kk(5*t.count),f=0,p=[],g=[];null!=(r=t.next());){var m=i.get(s,r),v=i.get(u,r),y=i.get(h,r),x=i.get(c,r),_=i.get(d,r);isNaN(m)||isNaN(x)||isNaN(_)?(l[f++]=NaN,f+=4):(l[f++]=fg(i,r,v,y,h),p[o]=m,p[a]=x,n=e.dataToPoint(p,null,g),l[f++]=n?n[0]:NaN,l[f++]=n?n[1]:NaN,p[a]=_,n=e.dataToPoint(p,null,g),l[f++]=n?n[1]:NaN)}i.setLayout("largePoints",l)}:function(t,i){function r(t,i){var n=[];return n[o]=i,n[a]=t,isNaN(i)||isNaN(t)?[NaN,NaN]:e.dataToPoint(n)}function l(t,e,i){var a=e.slice(),r=e.slice();a[o]=Jn(a[o]+n/2,1,!1),r[o]=Jn(r[o]-n/2,1,!0),i?t.push(a,r):t.push(r,a)}function f(t){return t[o]=Jn(t[o],1),t}for(var p;null!=(p=t.next());){var g=i.get(s,p),m=i.get(u,p),v=i.get(h,p),y=i.get(c,p),x=i.get(d,p),_=Math.min(m,v),w=Math.max(m,v),b=r(_,g),S=r(w,g),M=r(y,g),I=r(x,g),T=[];l(T,S,0),l(T,b,1),T.push(f(I),f(S),f(M),f(b)),i.setItemLayout(p,{sign:fg(i,p,m,v,h),initBaseline:m>v?S[a]:b[a],ends:T,brushRect:function(t,e,i){var s=r(t,i),l=r(e,i);return s[o]-=n/2,l[o]-=n/2,{x:s[0],y:s[1],width:a?n:l[0]-s[0],height:a?l[1]-s[1]:n}}(y,x,g)})}}}}};Ns(function(t){t&&y(t.series)&&d(t.series,function(t){w(t)&&"k"===t.type&&(t.type="candlestick")})}),Bs(qk),zs($k),YI.extend({type:"series.effectScatter",dependencies:["grid","polar"],getInitialData:function(t,e){return ml(this.getSource(),this)},brushSelector:"point",defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,effectType:"ripple",progressive:0,showEffectOn:"render",rippleEffect:{period:4,scale:2.5,brushType:"fill"},symbolSize:10}});var Jk=vg.prototype;Jk.stopEffectAnimation=function(){this.childAt(1).removeAll()},Jk.startEffectAnimation=function(t){for(var e=t.symbolType,i=t.color,n=this.childAt(1),o=0;o<3;o++){var a=Jl(e,-1,-1,2,2,i);a.attr({style:{strokeNoScale:!0},z2:99,silent:!0,scale:[.5,.5]});var r=-o/3*t.period+t.effectOffset;a.animate("",!0).when(t.period,{scale:[t.rippleScale/2,t.rippleScale/2]}).delay(r).start(),a.animateStyle(!0).when(t.period,{opacity:0}).delay(r).start(),n.add(a)}mg(n,t)},Jk.updateEffectAnimation=function(t){for(var e=this._effectCfg,i=this.childAt(1),n=["symbolType","period","rippleScale"],o=0;o "))},preventIncremental:function(){return!!this.get("effect.show")},getProgressive:function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},getProgressiveThreshold:function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},defaultOption:{coordinateSystem:"geo",zlevel:0,z:2,legendHoverLink:!0,hoverAnimation:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,label:{show:!1,position:"end"},lineStyle:{opacity:.5}}}),iP=xg.prototype;iP.createLine=function(t,e,i){return new rf(t,e,i)},iP._updateEffectSymbol=function(t,e){var i=t.getItemModel(e).getModel("effect"),n=i.get("symbolSize"),o=i.get("symbol");y(n)||(n=[n,n]);var a=i.get("color")||t.getItemVisual(e,"color"),r=this.childAt(1);this._symbolType!==o&&(this.remove(r),(r=Jl(o,-.5,-.5,1,1,a)).z2=100,r.culling=!0,this.add(r)),r&&(r.setStyle("shadowColor",a),r.setStyle(i.getItemStyle(["color"])),r.attr("scale",n),r.setColor(a),r.attr("scale",n),this._symbolType=o,this._updateEffectAnimation(t,i,e))},iP._updateEffectAnimation=function(t,e,i){var n=this.childAt(1);if(n){var o=this,a=t.getItemLayout(i),r=1e3*e.get("period"),s=e.get("loop"),l=e.get("constantSpeed"),u=T(e.get("delay"),function(e){return e/t.count()*r/3}),h="function"==typeof u;if(n.ignore=!0,this.updateAnimationPoints(n,a),l>0&&(r=this.getLineLength(n)/l*1e3),r!==this._period||s!==this._loop){n.stopAnimation();var c=u;h&&(c=u(i)),n.__t>0&&(c=-r*n.__t),n.__t=0;var d=n.animate("",s).when(r,{__t:1}).delay(c).during(function(){o.updateSymbolPosition(n)});s||d.done(function(){o.remove(n)}),d.start()}this._period=r,this._loop=s}},iP.getLineLength=function(t){return uw(t.__p1,t.__cp1)+uw(t.__cp1,t.__p2)},iP.updateAnimationPoints=function(t,e){t.__p1=e[0],t.__p2=e[1],t.__cp1=e[2]||[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]},iP.updateData=function(t,e,i){this.childAt(0).updateData(t,e,i),this._updateEffectSymbol(t,e)},iP.updateSymbolPosition=function(t){var e=t.__p1,i=t.__p2,n=t.__cp1,o=t.__t,a=t.position,r=sn,s=ln;a[0]=r(e[0],n[0],i[0],o),a[1]=r(e[1],n[1],i[1],o);var l=s(e[0],n[0],i[0],o),u=s(e[1],n[1],i[1],o);t.rotation=-Math.atan2(u,l)-Math.PI/2,t.ignore=!1},iP.updateLayout=function(t,e){this.childAt(0).updateLayout(t,e);var i=t.getItemModel(e).getModel("effect");this._updateEffectAnimation(t,i,e)},u(xg,tb);var nP=_g.prototype;nP._createPolyline=function(t,e,i){var n=t.getItemLayout(e),o=new gM({shape:{points:n}});this.add(o),this._updateCommonStl(t,e,i)},nP.updateData=function(t,e,i){var n=t.hostModel;Io(this.childAt(0),{shape:{points:t.getItemLayout(e)}},n,e),this._updateCommonStl(t,e,i)},nP._updateCommonStl=function(t,e,i){var n=this.childAt(0),o=t.getItemModel(e),a=t.getItemVisual(e,"color"),s=i&&i.lineStyle,l=i&&i.hoverLineStyle;i&&!t.hasItemOption||(s=o.getModel("lineStyle").getLineStyle(),l=o.getModel("emphasis.lineStyle").getLineStyle()),n.useStyle(r({strokeNoScale:!0,fill:"none",stroke:a},s)),n.hoverStyle=l,fo(this)},nP.updateLayout=function(t,e){this.childAt(0).setShape("points",t.getItemLayout(e))},u(_g,tb);var oP=wg.prototype;oP.createLine=function(t,e,i){return new _g(t,e,i)},oP.updateAnimationPoints=function(t,e){this._points=e;for(var i=[0],n=0,o=1;o=0&&!(n[r]<=e);r--);r=Math.min(r,o-2)}else{for(var r=a;re);r++);r=Math.min(r-1,o-2)}J(t.position,i[r],i[r+1],(e-n[r])/(n[r+1]-n[r]));var s=i[r+1][0]-i[r][0],l=i[r+1][1]-i[r][1];t.rotation=-Math.atan2(l,s)-Math.PI/2,this._lastFrame=r,this._lastFramePercent=e,t.ignore=!1}},u(wg,xg);var aP=Un({shape:{polyline:!1,curveness:0,segs:[]},buildPath:function(t,e){var i=e.segs,n=e.curveness;if(e.polyline)for(r=0;r0){t.moveTo(i[r++],i[r++]);for(var a=1;a0){var c=(s+u)/2-(l-h)*n,d=(l+h)/2-(u-s)*n;t.quadraticCurveTo(c,d,u,h)}else t.lineTo(u,h)}},findDataIndex:function(t,e){var i=this.shape,n=i.segs,o=i.curveness;if(i.polyline)for(var a=0,r=0;r0)for(var l=n[r++],u=n[r++],h=1;h0){if(_n(l,u,(l+c)/2-(u-d)*o,(u+d)/2-(c-l)*o,c,d))return a}else if(yn(l,u,c,d))return a;a++}return-1}}),rP=bg.prototype;rP.isPersistent=function(){return!this._incremental},rP.updateData=function(t){this.group.removeAll();var e=new aP({rectHover:!0,cursor:"default"});e.setShape({segs:t.getLayout("linesPoints")}),this._setCommon(e,t),this.group.add(e),this._incremental=null},rP.incrementalPrepareUpdate=function(t){this.group.removeAll(),this._clearIncremental(),t.count()>5e5?(this._incremental||(this._incremental=new Zn({silent:!0})),this.group.add(this._incremental)):this._incremental=null},rP.incrementalUpdate=function(t,e){var i=new aP;i.setShape({segs:e.getLayout("linesPoints")}),this._setCommon(i,e,!!this._incremental),this._incremental?this._incremental.addDisplayable(i,!0):(i.rectHover=!0,i.cursor="default",i.__startIndex=t.start,this.group.add(i))},rP.remove=function(){this._clearIncremental(),this._incremental=null,this.group.removeAll()},rP._setCommon=function(t,e,i){var n=e.hostModel;t.setShape({polyline:n.get("polyline"),curveness:n.get("lineStyle.curveness")}),t.useStyle(n.getModel("lineStyle").getLineStyle()),t.style.strokeNoScale=!0;var o=e.getVisual("color");o&&t.setStyle("stroke",o),t.setStyle("fill"),i||(t.seriesIndex=n.seriesIndex,t.on("mousemove",function(e){t.dataIndex=null;var i=t.findDataIndex(e.offsetX,e.offsetY);i>0&&(t.dataIndex=i+t.__startIndex)}))},rP._clearIncremental=function(){var t=this._incremental;t&&t.clearDisplaybles()};var sP={seriesType:"lines",plan:$I(),reset:function(t){var e=t.coordinateSystem,i=t.get("polyline"),n=t.pipelineContext.large;return{progress:function(o,a){var r=[];if(n){var s,l=o.end-o.start;if(i){for(var u=0,h=o.start;h0){var I=a(v)?s:l;v>0&&(v=v*S+b),x[_++]=I[M],x[_++]=I[M+1],x[_++]=I[M+2],x[_++]=I[M+3]*v*256}else _+=4}return c.putImageData(y,0,0),h},_getBrush:function(){var t=this._brushCanvas||(this._brushCanvas=iw()),e=this.pointSize+this.blurSize,i=2*e;t.width=i,t.height=i;var n=t.getContext("2d");return n.clearRect(0,0,i,i),n.shadowOffsetX=i,n.shadowBlur=this.blurSize,n.shadowColor="#000",n.beginPath(),n.arc(-e,e,this.pointSize,0,2*Math.PI,!0),n.closePath(),n.fill(),t},_getGradient:function(t,e,i){for(var n=this._gradientPixels,o=n[i]||(n[i]=new Uint8ClampedArray(1024)),a=[0,0,0,0],r=0,s=0;s<256;s++)e[i](s/255,!0,a),o[r++]=a[0],o[r++]=a[1],o[r++]=a[2],o[r++]=a[3];return o}},Zs({type:"heatmap",render:function(t,e,i){var n;e.eachComponent("visualMap",function(e){e.eachTargetSeries(function(i){i===t&&(n=e)})}),this.group.removeAll(),this._incrementalDisplayable=null;var o=t.coordinateSystem;"cartesian2d"===o.type||"calendar"===o.type?this._renderOnCartesianAndCalendar(t,i,0,t.getData().count()):Ag(o)&&this._renderOnGeo(o,t,n,i)},incrementalPrepareRender:function(t,e,i){this.group.removeAll()},incrementalRender:function(t,e,i,n){e.coordinateSystem&&this._renderOnCartesianAndCalendar(e,n,t.start,t.end,!0)},_renderOnCartesianAndCalendar:function(t,e,i,n,o){var r,s,l=t.coordinateSystem;if("cartesian2d"===l.type){var u=l.getAxis("x"),h=l.getAxis("y");r=u.getBandWidth(),s=h.getBandWidth()}for(var c=this.group,d=t.getData(),f=t.getModel("itemStyle").getItemStyle(["color"]),p=t.getModel("emphasis.itemStyle").getItemStyle(),g=t.getModel("label"),m=t.getModel("emphasis.label"),v=l.type,y="cartesian2d"===v?[d.mapDimension("x"),d.mapDimension("y"),d.mapDimension("value")]:[d.mapDimension("time"),d.mapDimension("value")],x=i;x=e.y&&t[1]<=e.y+e.height:i.contain(i.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},pointToData:function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},dataToPoint:function(t){var e=this.getAxis(),i=this.getRect(),n=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),n[o]=e.toGlobalCoord(e.dataToCoord(+t)),n[1-o]=0===o?i.y+i.height/2:i.x+i.width/2,n}},Fa.register("single",{create:function(t,e){var i=[];return t.eachComponent("singleAxis",function(n,o){var a=new $g(n,t,e);a.name="single_"+o,a.resize(n,e),n.coordinateSystem=a,i.push(a)}),t.eachSeries(function(e){if("singleAxis"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"singleAxis",index:e.get("singleAxisIndex"),id:e.get("singleAxisId")})[0];e.coordinateSystem=i&&i.coordinateSystem}}),i},dimensions:$g.prototype.dimensions});var gP=["axisLine","axisTickLabel","axisName"],mP=XD.extend({type:"singleAxis",axisPointerClass:"SingleAxisPointer",render:function(t,e,i,n){var o=this.group;o.removeAll();var a=Jg(t),r=new FD(t,a);d(gP,r.add,r),o.add(r.getGroup()),t.get("splitLine.show")&&this._splitLine(t),mP.superCall(this,"render",t,e,i,n)},_splitLine:function(t){var e=t.axis;if(!e.scale.isBlank()){var i=t.getModel("splitLine"),n=i.getModel("lineStyle"),o=n.get("width"),a=n.get("color");a=a instanceof Array?a:[a];for(var r=t.coordinateSystem.getRect(),s=e.isHorizontal(),l=[],u=0,h=e.getTicksCoords({tickModel:i}),c=[],d=[],f=0;f=0)&&i({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},remove:function(t,e){gm(e.getZr(),"axisPointer"),IP.superApply(this._model,"remove",arguments)},dispose:function(t,e){gm("axisPointer",e),IP.superApply(this._model,"dispose",arguments)}}),TP=Bi(),AP=i,DP=m;(mm.prototype={_group:null,_lastGraphicKey:null,_handle:null,_dragging:!1,_lastValue:null,_lastStatus:null,_payloadInfo:null,animationThreshold:15,render:function(t,e,i,n){var o=e.get("value"),a=e.get("status");if(this._axisModel=t,this._axisPointerModel=e,this._api=i,n||this._lastValue!==o||this._lastStatus!==a){this._lastValue=o,this._lastStatus=a;var r=this._group,s=this._handle;if(!a||"hide"===a)return r&&r.hide(),void(s&&s.hide());r&&r.show(),s&&s.show();var l={};this.makeElOption(l,o,t,e,i);var u=l.graphicKey;u!==this._lastGraphicKey&&this.clear(i),this._lastGraphicKey=u;var h=this._moveAnimation=this.determineAnimation(t,e);if(r){var c=v(vm,e,h);this.updatePointerEl(r,l,c,e),this.updateLabelEl(r,l,c,e)}else r=this._group=new tb,this.createPointerEl(r,l,t,e),this.createLabelEl(r,l,t,e),i.getZr().add(r);wm(r,e,!0),this._renderHandle(o)}},remove:function(t){this.clear(t)},dispose:function(t){this.clear(t)},determineAnimation:function(t,e){var i=e.get("animation"),n=t.axis,o="category"===n.type,a=e.get("snap");if(!a&&!o)return!1;if("auto"===i||null==i){var r=this.animationThreshold;if(o&&n.getBandWidth()>r)return!0;if(a){var s=Mh(t).seriesDataCount,l=n.getExtent();return Math.abs(l[0]-l[1])/s>r}return!1}return!0===i},makeElOption:function(t,e,i,n,o){},createPointerEl:function(t,e,i,n){var o=e.pointer;if(o){var a=TP(t).pointerEl=new zM[o.type](AP(e.pointer));t.add(a)}},createLabelEl:function(t,e,i,n){if(e.label){var o=TP(t).labelEl=new yM(AP(e.label));t.add(o),xm(o,n)}},updatePointerEl:function(t,e,i){var n=TP(t).pointerEl;n&&(n.setStyle(e.pointer.style),i(n,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,i,n){var o=TP(t).labelEl;o&&(o.setStyle(e.label.style),i(o,{shape:e.label.shape,position:e.label.position}),xm(o,n))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e=this._axisPointerModel,i=this._api.getZr(),n=this._handle,o=e.getModel("handle"),a=e.get("status");if(!o.get("show")||!a||"hide"===a)return n&&i.remove(n),void(this._handle=null);var r;this._handle||(r=!0,n=this._handle=Po(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){mw(t.event)},onmousedown:DP(this._onHandleDragMove,this,0,0),drift:DP(this._onHandleDragMove,this),ondragend:DP(this._onHandleDragEnd,this)}),i.add(n)),wm(n,e,!1);var s=["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"];n.setStyle(o.getItemStyle(null,s));var l=o.get("size");y(l)||(l=[l,l]),n.attr("scale",[l[0]/2,l[1]/2]),Nr(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)}},_moveHandleToValue:function(t,e){vm(this._axisPointerModel,!e&&this._moveAnimation,this._handle,_m(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var i=this._handle;if(i){this._dragging=!0;var n=this.updateHandleTransform(_m(i),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=n,i.stopAnimation(),i.attr(_m(n)),TP(i).lastProp=null,this._doDispatchAxisPointer()}},_doDispatchAxisPointer:function(){if(this._handle){var t=this._payloadInfo,e=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]})}},_onHandleDragEnd:function(t){if(this._dragging=!1,this._handle){var e=this._axisPointerModel.get("value");this._moveHandleToValue(e),this._api.dispatchAction({type:"hideTip"})}},getHandleTransform:null,updateHandleTransform:null,clear:function(t){this._lastValue=null,this._lastStatus=null;var e=t.getZr(),i=this._group,n=this._handle;e&&i&&(this._lastGraphicKey=null,i&&e.remove(i),n&&e.remove(n),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,i){return i=i||0,{x:t[i],y:t[1-i],width:e[i],height:e[1-i]}}}).constructor=mm,ji(mm);var CP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.grid,s=n.get("type"),l=km(r,a).getOtherAxis(a).getGlobalExtent(),u=a.toGlobalCoord(a.dataToCoord(e,!0));if(s&&"none"!==s){var h=bm(n),c=LP[s](a,u,l,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Lh(r.model,i),i,n,o)},getHandleTransform:function(t,e,i){var n=Lh(e.axis.grid.model,e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.grid,r=o.getGlobalExtent(!0),s=km(a,o).getOtherAxis(o).getGlobalExtent(),l="x"===o.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(r[1],u[l]),u[l]=Math.max(r[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];var d=[{verticalAlign:"middle"},{align:"center"}];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:d[l]}}}),LP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Pm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=Math.max(1,t.getBandWidth()),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Pm(t))}}};XD.registerAxisPointerClass("CartesianAxisPointer",CP),Ns(function(t){if(t){(!t.axisPointer||0===t.axisPointer.length)&&(t.axisPointer={});var e=t.axisPointer.link;e&&!y(e)&&(t.axisPointer.link=[e])}}),Os(VT.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=vh(t,e)}),Es({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,i){var n=t.currTrigger,o=[t.x,t.y],a=t,r=t.dispatchAction||m(i.dispatchAction,i),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){lm(o)&&(o=xP({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},e).point);var l=lm(o),u=a.axesInfo,h=s.axesInfo,c="leave"===n||lm(o),d={},f={},p={list:[],map:{}},g={showPointer:wP(em,f),showTooltip:wP(im,p)};_P(s.coordSysMap,function(t,e){var i=l||t.containPoint(o);_P(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,a=rm(u,t);if(!c&&i&&(!u||a)){var r=a&&a.value;null!=r||l||(r=n.pointToData(o)),null!=r&&Qg(t,r,g,!1,d)}})});var v={};return _P(h,function(t,e){var i=t.linkGroup;i&&!f[e]&&_P(i.axesInfo,function(e,n){var o=f[n];if(e!==t&&o){var a=o.value;i.mapper&&(a=t.axis.scale.parse(i.mapper(a,sm(e),sm(t)))),v[t.key]=a}})}),_P(v,function(t,e){Qg(h[e],t,g,!0,d)}),nm(f,h,d),om(p,o,t,r),am(h,0,i),d}});var kP=["x","y"],PP=["width","height"],NP=mm.extend({makeElOption:function(t,e,i,n,o){var a=i.axis,r=a.coordinateSystem,s=Om(r,1-Nm(a)),l=r.dataToPoint(e)[0],u=n.get("type");if(u&&"none"!==u){var h=bm(n),c=OP[u](a,l,s,h);c.style=h,t.graphicKey=c.type,t.pointer=c}Am(e,t,Jg(i),i,n,o)},getHandleTransform:function(t,e,i){var n=Jg(e,{labelInside:!1});return n.labelMargin=i.get("handle.margin"),{position:Tm(e.axis,t,n),rotation:n.rotation+(n.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,i,n){var o=i.axis,a=o.coordinateSystem,r=Nm(o),s=Om(a,r),l=t.position;l[r]+=e[r],l[r]=Math.min(s[1],l[r]),l[r]=Math.max(s[0],l[r]);var u=Om(a,1-r),h=(u[1]+u[0])/2,c=[h,h];return c[r]=l[r],{position:l,rotation:t.rotation,cursorPoint:c,tooltipOption:{verticalAlign:"middle"}}}}),OP={line:function(t,e,i,n){var o=Dm([e,i[0]],[e,i[1]],Nm(t));return Kn({shape:o,style:n}),{type:"Line",shape:o}},shadow:function(t,e,i,n){var o=t.getBandWidth(),a=i[1]-i[0];return{type:"Rect",shape:Cm([e-o/2,i[0]],[o,a],Nm(t))}}};XD.registerAxisPointerClass("SingleAxisPointer",NP),Ws({type:"single"});var EP=YI.extend({type:"series.themeRiver",dependencies:["singleAxis"],nameMap:null,init:function(t){EP.superApply(this,"init",arguments),this.legendDataProvider=function(){return this.getRawData()}},fixData:function(t){var e=t.length,i=[];Zi(t,function(t){return t[2]}).buckets.each(function(t,e){i.push({name:e,dataList:t})});for(var n=i.length,o=-1,a=-1,r=0;ro&&(o=s,a=r)}for(var l=0;lMath.PI/2?"right":"left"):x&&"center"!==x?"left"===x?(f=u.r0+y,p>Math.PI/2&&(x="right")):"right"===x&&(f=u.r-y,p>Math.PI/2&&(x="left")):(f=(u.r+u.r0)/2,x="center"),d.attr("style",{text:l,textAlign:x,textVerticalAlign:n("verticalAlign")||"middle",opacity:n("opacity")});var _=f*g+u.cx,w=f*m+u.cy;d.attr("position",[_,w]);var b=n("rotate"),S=0;"radial"===b?(S=-p)<-Math.PI/2&&(S+=Math.PI):"tangential"===b?(S=Math.PI/2-p)>Math.PI/2?S-=Math.PI:S<-Math.PI/2&&(S+=Math.PI):"number"==typeof b&&(S=b*Math.PI/180),d.attr("rotation",S)},VP._initEvents=function(t,e,i,n){t.off("mouseover").off("mouseout").off("emphasis").off("normal");var o=this,a=function(){o.onEmphasis(n)},r=function(){o.onNormal()};i.isAnimationEnabled()&&t.on("mouseover",a).on("mouseout",r).on("emphasis",a).on("normal",r).on("downplay",function(){o.onDownplay()}).on("highlight",function(){o.onHighlight()})},u(Vm,tb);Ar.extend({type:"sunburst",init:function(){},render:function(t,e,i,n){function o(i,n){if(c||!i||i.getValue()||(i=null),i!==l&&n!==l)if(n&&n.piece)i?(n.piece.updateData(!1,i,"normal",t,e),s.setItemGraphicEl(i.dataIndex,n.piece)):a(n);else if(i){var o=new Vm(i,t,e);h.add(o),s.setItemGraphicEl(i.dataIndex,o)}}function a(t){t&&t.piece&&(h.remove(t.piece),t.piece=null)}var r=this;this.seriesModel=t,this.api=i,this.ecModel=e;var s=t.getData(),l=s.tree.root,u=t.getViewRoot(),h=this.group,c=t.get("renderLabelForZeroData"),d=[];u.eachNode(function(t){d.push(t)});var f=this._oldChildren||[];if(function(t,e){function i(t){return t.getId()}function n(i,n){o(null==i?null:t[i],null==n?null:e[n])}0===t.length&&0===e.length||new Xs(e,t,i,i).add(n).update(n).remove(v(n,null)).execute()}(d,f),function(i,n){if(n.depth>0){r.virtualPiece?r.virtualPiece.updateData(!1,i,"normal",t,e):(r.virtualPiece=new Vm(i,t,e),h.add(r.virtualPiece)),n.piece._onclickEvent&&n.piece.off("click",n.piece._onclickEvent);var o=function(t){r._rootToNode(n.parentNode)};n.piece._onclickEvent=o,r.virtualPiece.on("click",o)}else r.virtualPiece&&(h.remove(r.virtualPiece),r.virtualPiece=null)}(l,u),n&&n.highlight&&n.highlight.piece){var p=t.getShallow("highlightPolicy");n.highlight.piece.onEmphasis(p)}else if(n&&n.unhighlight){var g=this.virtualPiece;!g&&l.children.length&&(g=l.children[0].piece),g&&g.onNormal()}this._initEvents(),this._oldChildren=d},dispose:function(){},_initEvents:function(){var t=this,e=function(e){var i=!1;t.seriesModel.getViewRoot().eachNode(function(n){if(!i&&n.piece&&n.piece.childAt(0)===e.target){var o=n.getModel().get("nodeClick");if("rootToNode"===o)t._rootToNode(n);else if("link"===o){var a=n.getModel(),r=a.get("link");if(r){var s=a.get("target",!0)||"_blank";window.open(r,s)}}i=!0}})};this.group._onclickEvent&&this.group.off("click",this.group._onclickEvent),this.group.on("click",e),this.group._onclickEvent=e},_rootToNode:function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:"sunburstRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},containPoint:function(t,e){var i=e.getData().getItemLayout(0);if(i){var n=t[0]-i.cx,o=t[1]-i.cy,a=Math.sqrt(n*n+o*o);return a<=i.r&&a>=i.r0}}});var GP="sunburstRootToNode";Es({type:GP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[GP],e);if(n){var o=e.getViewRoot();o&&(t.direction=hd(o,n.node)?"rollUp":"drillDown"),e.resetViewRoot(n.node)}})});var FP="sunburstHighlight";Es({type:FP,update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){var n=ld(t,[FP],e);n&&(t.highlight=n.node)})});Es({type:"sunburstUnhighlight",update:"updateView"},function(t,e){e.eachComponent({mainType:"series",subType:"sunburst",query:t},function(e,i){t.unhighlight=!0})});var WP=Math.PI/180;Bs(v(uC,"sunburst")),zs(v(function(t,e,i,n){e.eachSeriesByType(t,function(t){var e=t.get("center"),n=t.get("radius");y(n)||(n=[0,n]),y(e)||(e=[e,e]);var o=i.getWidth(),a=i.getHeight(),r=Math.min(o,a),s=Vo(e[0],o),l=Vo(e[1],a),u=Vo(n[0],r/2),h=Vo(n[1],r/2),c=-t.get("startAngle")*WP,f=t.get("minAngle")*WP,p=t.getData().tree.root,g=t.getViewRoot(),m=g.depth,v=t.get("sort");null!=v&&Zm(g,v);var x=0;d(g.children,function(t){!isNaN(t.getValue())&&x++});var _=g.getValue(),w=Math.PI/(_||x)*2,b=g.depth>0,S=g.height-(b?-1:1),M=(h-u)/(S||1),I=t.get("clockwise"),T=t.get("stillShowZeroSum"),A=I?1:-1,D=function(t,e){if(t){var i=e;if(t!==p){var n=t.getValue(),o=0===_&&T?w:n*w;on[1]&&n.reverse(),{coordSys:{type:"polar",cx:t.cx,cy:t.cy,r:n[1],r0:n[0]},api:{coord:m(function(n){var o=e.dataToRadius(n[0]),a=i.dataToAngle(n[1]),r=t.coordToPoint([o,a]);return r.push(o,a*Math.PI/180),r}),size:m(qm,t)}}},calendar:function(t){var e=t.getRect(),i=t.getRangeInfo();return{coordSys:{type:"calendar",x:e.x,y:e.y,width:e.width,height:e.height,cellWidth:t.getCellWidth(),cellHeight:t.getCellHeight(),rangeInfo:{start:i.start,end:i.end,weeks:i.weeks,dayCount:i.allDay}},api:{coord:function(e,i){return t.dataToPoint(e,i)}}}}};YI.extend({type:"series.custom",dependencies:["grid","polar","geo","singleAxis","calendar"],defaultOption:{coordinateSystem:"cartesian2d",zlevel:0,z:2,legendHoverLink:!0,useTransform:!0},getInitialData:function(t,e){return ml(this.getSource(),this)},getDataParams:function(t,e,i){var n=YI.prototype.getDataParams.apply(this,arguments);return i&&(n.info=i.info),n}}),Ar.extend({type:"custom",_data:null,render:function(t,e,i,n){var o=this._data,a=t.getData(),r=this.group,s=Qm(t,a,e,i);a.diff(o).add(function(e){ev(null,e,s(e,n),t,r,a)}).update(function(e,i){ev(o.getItemGraphicEl(i),e,s(e,n),t,r,a)}).remove(function(t){var e=o.getItemGraphicEl(t);e&&r.remove(e)}).execute(),this._data=a},incrementalPrepareRender:function(t,e,i){this.group.removeAll(),this._data=null},incrementalRender:function(t,e,i,n,o){for(var a=e.getData(),r=Qm(e,a,i,n),s=t.start;s=0;l--)null==o[l]?o.splice(l,1):delete o[l].$action},_flatten:function(t,e,i){d(t,function(t){if(t){i&&(t.parentOption=i),e.push(t);var n=t.children;"group"===t.type&&n&&this._flatten(n,e,t),delete t.children}},this)},useElOptionsToUpdate:function(){var t=this._elOptionsToUpdate;return this._elOptionsToUpdate=null,t}});Ws({type:"graphic",init:function(t,e){this._elMap=R(),this._lastGraphicModel},render:function(t,e,i){t!==this._lastGraphicModel&&this._clear(),this._lastGraphicModel=t,this._updateElements(t),this._relocate(t,i)},_updateElements:function(t){var e=t.useElOptionsToUpdate();if(e){var i=this._elMap,n=this.group;d(e,function(e){var o=e.$action,a=e.id,r=i.get(a),s=e.parentId,l=null!=s?i.get(s):n,u=e.style;"text"===e.type&&u&&(e.hv&&e.hv[1]&&(u.textVerticalAlign=u.textBaseline=null),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke));var h=fv(e);o&&"merge"!==o?"replace"===o?(dv(r,i),cv(a,l,h,i)):"remove"===o&&dv(r,i):r?r.attr(h):cv(a,l,h,i);var c=i.get(a);c&&(c.__ecGraphicWidth=e.width,c.__ecGraphicHeight=e.height,yv(c,t))})}},_relocate:function(t,e){for(var i=t.option.elements,n=this.group,o=this._elMap,a=i.length-1;a>=0;a--){var r=i[a],s=o.get(r.id);if(s){var l=s.parent;da(s,r,l===n?{width:e.getWidth(),height:e.getHeight()}:{width:l.__ecGraphicWidth||0,height:l.__ecGraphicHeight||0},null,{hv:r.hv,boundingMode:r.bounding})}}},_clear:function(){var t=this._elMap;t.each(function(e){dv(e,t)}),this._elMap=R()},dispose:function(){this._clear()}});var KP=Fs({type:"legend.plain",dependencies:["series"],layoutMode:{type:"box",ignoreSize:!0},init:function(t,e,i){this.mergeDefaultAndTheme(t,i),t.selected=t.selected||{}},mergeOption:function(t){KP.superCall(this,"mergeOption",t)},optionUpdated:function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,i=0;i=0},defaultOption:{zlevel:0,z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,inactiveColor:"#ccc",textStyle:{color:"#333"},selectedMode:!0,tooltip:{show:!1}}});Es("legendToggleSelect","legendselectchanged",v(xv,"toggleSelected")),Es("legendSelect","legendselected",v(xv,"select")),Es("legendUnSelect","legendunselected",v(xv,"unSelect"));var $P=v,JP=d,QP=tb,tN=Ws({type:"legend.plain",newlineDisabled:!1,init:function(){this.group.add(this._contentGroup=new QP),this._backgroundEl,this._isFirstRender=!0},getContentGroup:function(){return this._contentGroup},render:function(t,e,i){var n=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var o=t.get("align");o&&"auto"!==o||(o="right"===t.get("left")&&"vertical"===t.get("orient")?"right":"left"),this.renderInner(o,t,e,i);var a=t.getBoxLayoutParams(),s={width:i.getWidth(),height:i.getHeight()},l=t.get("padding"),u=ca(a,s,l),h=this.layoutInner(t,o,u,n),c=ca(r({width:h.width,height:h.height},a),s,l);this.group.attr("position",[c.x-h.x,c.y-h.y]),this.group.add(this._backgroundEl=wv(h,t))}},resetInner:function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl)},renderInner:function(t,e,i,n){var o=this.getContentGroup(),a=R(),r=e.get("selectedMode"),s=[];i.eachRawSeries(function(t){!t.get("legendHoverLink")&&s.push(t.id)}),JP(e.getData(),function(l,u){var h=l.get("name");if(this.newlineDisabled||""!==h&&"\n"!==h){var c=i.getSeriesByName(h)[0];if(!a.get(h))if(c){var d=c.getData(),f=d.getVisual("color");"function"==typeof f&&(f=f(c.getDataParams(0)));var p=d.getVisual("legendSymbol")||"roundRect",g=d.getVisual("symbol");this._createItem(h,u,l,e,p,g,t,f,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,c.name,null,n,s)).on("mouseout",$P(Mv,c.name,null,n,s)),a.set(h,!0)}else i.eachRawSeries(function(i){if(!a.get(h)&&i.legendDataProvider){var o=i.legendDataProvider(),c=o.indexOfName(h);if(c<0)return;var d=o.getItemVisual(c,"color");this._createItem(h,u,l,e,"roundRect",null,t,d,r).on("click",$P(bv,h,n)).on("mouseover",$P(Sv,null,h,n,s)).on("mouseout",$P(Mv,null,h,n,s)),a.set(h,!0)}},this)}else o.add(new QP({newline:!0}))},this)},_createItem:function(t,e,i,n,o,r,s,l,u){var h=n.get("itemWidth"),c=n.get("itemHeight"),d=n.get("inactiveColor"),f=n.get("symbolKeepAspect"),p=n.isSelected(t),g=new QP,m=i.getModel("textStyle"),v=i.get("icon"),y=i.getModel("tooltip"),x=y.parentModel;if(o=v||o,g.add(Jl(o,0,0,h,c,p?l:d,null==f||f)),!v&&r&&(r!==o||"none"===r)){var _=.8*c;"none"===r&&(r="circle"),g.add(Jl(r,(h-_)/2,(c-_)/2,_,_,p?l:d,null==f||f))}var w="left"===s?h+5:-5,b=s,S=n.get("formatter"),M=t;"string"==typeof S&&S?M=S.replace("{name}",null!=t?t:""):"function"==typeof S&&(M=S(t)),g.add(new rM({style:mo({},m,{text:M,x:w,y:c/2,textFill:p?m.getTextColor():d,textAlign:b,textVerticalAlign:"middle"})}));var I=new yM({shape:g.getBoundingRect(),invisible:!0,tooltip:y.get("show")?a({content:t,formatter:x.get("formatter",!0)||function(){return t},formatterParams:{componentType:"legend",legendIndex:n.componentIndex,name:t,$vars:["name"]}},y.option):null});return g.add(I),g.eachChild(function(t){t.silent=!0}),I.silent=!u,this.getContentGroup().add(g),fo(g),g.__legendDataIndex=e,g},layoutInner:function(t,e,i){var n=this.getContentGroup();aI(t.get("orient"),n,t.get("itemGap"),i.width,i.height);var o=n.getBoundingRect();return n.attr("position",[-o.x,-o.y]),this.group.getBoundingRect()},remove:function(){this.getContentGroup().removeAll(),this._isFirstRender=!0}});Os(function(t){var e=t.findComponents({mainType:"legend"});e&&e.length&&t.filterSeries(function(t){for(var i=0;ii[l],p=[-c.x,-c.y];n||(p[s]=o.position[s]);var g=[0,0],m=[-d.x,-d.y],v=A(t.get("pageButtonGap",!0),t.get("itemGap",!0));f&&("end"===t.get("pageButtonPosition",!0)?m[s]+=i[l]-d[l]:g[s]+=d[l]+v),m[1-s]+=c[u]/2-d[u]/2,o.attr("position",p),a.attr("position",g),r.attr("position",m);var y=this.group.getBoundingRect();if((y={x:0,y:0})[l]=f?i[l]:c[l],y[u]=Math.max(c[u],d[u]),y[h]=Math.min(0,d[h]+m[1-s]),a.__rectSize=i[l],f){var x={x:0,y:0};x[l]=Math.max(i[l]-d[l]-v,0),x[u]=y[u],a.setClipPath(new yM({shape:x})),a.__rectSize=x[l]}else r.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&Io(o,{position:_.contentPosition},!!f&&t),this._updatePageInfoView(t,_),y},_pageGo:function(t,e,i){var n=this._getPageInfo(e)[t];null!=n&&i.dispatchAction({type:"legendScroll",scrollDataIndex:n,legendId:e.id})},_updatePageInfoView:function(t,e){var i=this._controllerGroup;d(["pagePrev","pageNext"],function(n){var o=null!=e[n+"DataIndex"],a=i.childOfName(n);a&&(a.setStyle("fill",o?t.get("pageIconColor",!0):t.get("pageIconInactiveColor",!0)),a.cursor=o?"pointer":"default")});var n=i.childOfName("pageText"),o=t.get("pageFormatter"),a=e.pageIndex,r=null!=a?a+1:0,s=e.pageCount;n&&o&&n.setStyle("text",_(o)?o.replace("{current}",r).replace("{total}",s):o({current:r,total:s}))},_getPageInfo:function(t){function e(t){if(t){var e=t.getBoundingRect(),i=e[l]+t.position[r];return{s:i,e:i+e[s],i:t.__legendDataIndex}}}function i(t,e){return t.e>=e&&t.s<=e+a}var n=t.get("scrollDataIndex",!0),o=this.getContentGroup(),a=this._containerGroup.__rectSize,r=t.getOrient().index,s=nN[r],l=oN[r],u=this._findTargetItemIndex(n),h=o.children(),c=h[u],d=h.length,f=d?1:0,p={contentPosition:o.position.slice(),pageCount:f,pageIndex:f-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return p;var g=e(c);p.contentPosition[r]=-g.s;for(var m=u+1,v=g,y=g,x=null;m<=d;++m)(!(x=e(h[m]))&&y.e>v.s+a||x&&!i(x,v.s))&&(v=y.i>v.i?y:x)&&(null==p.pageNextDataIndex&&(p.pageNextDataIndex=v.i),++p.pageCount),y=x;for(var m=u-1,v=g,y=g,x=null;m>=-1;--m)(x=e(h[m]))&&i(y,x.s)||!(v.i=0;){var r=o.indexOf("|}"),s=o.substr(a+"{marker".length,r-a-"{marker".length);s.indexOf("sub")>-1?n["marker"+s]={textWidth:4,textHeight:4,textBorderRadius:2,textBackgroundColor:e[s],textOffset:[3,0]}:n["marker"+s]={textWidth:10,textHeight:10,textBorderRadius:5,textBackgroundColor:e[s]},a=(o=o.substr(r+1)).indexOf("{marker")}this.el=new rM({style:{rich:n,text:t,textLineHeight:20,textBackgroundColor:i.get("backgroundColor"),textBorderRadius:i.get("borderRadius"),textFill:i.get("textStyle.color"),textPadding:i.get("padding")},z:i.get("z")}),this._zr.add(this.el);var l=this;this.el.on("mouseover",function(){l._enterable&&(clearTimeout(l._hideTimeout),l._show=!0),l._inContent=!0}),this.el.on("mouseout",function(){l._enterable&&l._show&&l.hideLater(l._hideDelay),l._inContent=!1})},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el.getBoundingRect();return[t.width,t.height]},moveTo:function(t,e){this.el&&this.el.attr("position",[t,e])},hide:function(){this.el?this.el.hide():true,this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(m(this.hide,this),t)):this.hide())},isShow:function(){return this._show},getOuterSize:function(){return this.getSize()}};var uN=m,hN=d,cN=Vo,dN=new yM({shape:{x:-1,y:-1,width:2,height:2}});Ws({type:"tooltip",init:function(t,e){if(!U_.node){var i=t.getComponent("tooltip").get("renderMode");this._renderMode=Hi(i);var n;"html"===this._renderMode?(n=new Cv(e.getDom(),e),this._newLine="
"):(n=new Lv(e),this._newLine="\n"),this._tooltipContent=n}},render:function(t,e,i){if(!U_.node){this.group.removeAll(),this._tooltipModel=t,this._ecModel=e,this._api=i,this._lastDataByCoordSys=null,this._alwaysShowContent=t.get("alwaysShowContent");var n=this._tooltipContent;n.update(),n.setEnterable(t.get("enterable")),this._initGlobalListener(),this._keepShow()}},_initGlobalListener:function(){var t=this._tooltipModel.get("triggerOn");um("itemTooltip",this._api,uN(function(e,i,n){"none"!==t&&(t.indexOf(e)>=0?this._tryShow(i,n):"leave"===e&&this._hide(n))},this))},_keepShow:function(){var t=this._tooltipModel,e=this._ecModel,i=this._api;if(null!=this._lastX&&null!=this._lastY&&"none"!==t.get("triggerOn")){var n=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){n.manuallyShowTip(t,e,i,{x:n._lastX,y:n._lastY})})}},manuallyShowTip:function(t,e,i,n){if(n.from!==this.uid&&!U_.node){var o=Pv(n,i);this._ticket="";var a=n.dataByCoordSys;if(n.tooltip&&null!=n.x&&null!=n.y){var r=dN;r.position=[n.x,n.y],r.update(),r.tooltip=n.tooltip,this._tryShow({offsetX:n.x,offsetY:n.y,target:r},o)}else if(a)this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,event:{},dataByCoordSys:n.dataByCoordSys,tooltipOption:n.tooltipOption},o);else if(null!=n.seriesIndex){if(this._manuallyAxisShowTip(t,e,i,n))return;var s=xP(n,e),l=s.point[0],u=s.point[1];null!=l&&null!=u&&this._tryShow({offsetX:l,offsetY:u,position:n.position,target:s.el,event:{}},o)}else null!=n.x&&null!=n.y&&(i.dispatchAction({type:"updateAxisPointer",x:n.x,y:n.y}),this._tryShow({offsetX:n.x,offsetY:n.y,position:n.position,target:i.getZr().findHover(n.x,n.y).target,event:{}},o))}},manuallyHideTip:function(t,e,i,n){var o=this._tooltipContent;!this._alwaysShowContent&&this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=null,n.from!==this.uid&&this._hide(Pv(n,i))},_manuallyAxisShowTip:function(t,e,i,n){var o=n.seriesIndex,a=n.dataIndex,r=e.getComponent("axisPointer").coordSysAxesInfo;if(null!=o&&null!=a&&null!=r){var s=e.getSeriesByIndex(o);if(s&&"axis"===(t=kv([s.getData().getItemModel(a),s,(s.coordinateSystem||{}).model,t])).get("trigger"))return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:a,position:n.position}),!0}},_tryShow:function(t,e){var i=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var n=t.dataByCoordSys;n&&n.length?this._showAxisTooltip(n,t):i&&null!=i.dataIndex?(this._lastDataByCoordSys=null,this._showSeriesItemTooltip(t,i,e)):i&&i.tooltip?(this._lastDataByCoordSys=null,this._showComponentItemTooltip(t,i,e)):(this._lastDataByCoordSys=null,this._hide(e))}},_showOrMove:function(t,e){var i=t.get("showDelay");e=m(e,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(e,i):e()},_showAxisTooltip:function(t,e){var i=this._ecModel,o=this._tooltipModel,a=[e.offsetX,e.offsetY],r=[],s=[],l=kv([e.tooltipOption,o]),u=this._renderMode,h=this._newLine,c={};hN(t,function(t){hN(t.dataByAxis,function(t){var e=i.getComponent(t.axisDim+"Axis",t.axisIndex),o=t.value,a=[];if(e&&null!=o){var l=Im(o,e.axis,i,t.seriesDataIndices,t.valueLabelOpt);d(t.seriesDataIndices,function(r){var h=i.getSeriesByIndex(r.seriesIndex),d=r.dataIndexInside,f=h&&h.getDataParams(d);if(f.axisDim=t.axisDim,f.axisIndex=t.axisIndex,f.axisType=t.axisType,f.axisId=t.axisId,f.axisValue=Xl(e.axis,o),f.axisValueLabel=l,f){s.push(f);var p,g=h.formatTooltip(d,!0,null,u);if(w(g)){p=g.html;var m=g.markers;n(c,m)}else p=g;a.push(p)}});var f=l;"html"!==u?r.push(a.join(h)):r.push((f?ia(f)+h:"")+a.join(h))}})},this),r.reverse(),r=r.join(this._newLine+this._newLine);var f=e.position;this._showOrMove(l,function(){this._updateContentNotChangedOnAxis(t)?this._updatePosition(l,f,a[0],a[1],this._tooltipContent,s):this._showTooltipContent(l,r,s,Math.random(),a[0],a[1],f,void 0,c)})},_showSeriesItemTooltip:function(t,e,i){var n=this._ecModel,o=e.seriesIndex,a=n.getSeriesByIndex(o),r=e.dataModel||a,s=e.dataIndex,l=e.dataType,u=r.getData(),h=kv([u.getItemModel(s),r,a&&(a.coordinateSystem||{}).model,this._tooltipModel]),c=h.get("trigger");if(null==c||"item"===c){var d,f,p=r.getDataParams(s,l),g=r.formatTooltip(s,!1,l,this._renderMode);w(g)?(d=g.html,f=g.markers):(d=g,f=null);var m="item_"+r.name+"_"+s;this._showOrMove(h,function(){this._showTooltipContent(h,d,p,m,t.offsetX,t.offsetY,t.position,t.target,f)}),i({type:"showTip",dataIndexInside:s,dataIndex:u.getRawIndex(s),seriesIndex:o,from:this.uid})}},_showComponentItemTooltip:function(t,e,i){var n=e.tooltip;if("string"==typeof n){var o=n;n={content:o,formatter:o}}var a=new No(n,this._tooltipModel,this._ecModel),r=a.get("content"),s=Math.random();this._showOrMove(a,function(){this._showTooltipContent(a,r,a.get("formatterParams")||{},s,t.offsetX,t.offsetY,t.position,e)}),i({type:"showTip",from:this.uid})},_showTooltipContent:function(t,e,i,n,o,a,r,s,l){if(this._ticket="",t.get("showContent")&&t.get("show")){var u=this._tooltipContent,h=t.get("formatter");r=r||t.get("position");var c=e;if(h&&"string"==typeof h)c=na(h,i,!0);else if("function"==typeof h){var d=uN(function(e,n){e===this._ticket&&(u.setContent(n,l,t),this._updatePosition(t,r,o,a,u,i,s))},this);this._ticket=n,c=h(i,n,d)}u.setContent(c,l,t),u.show(t),this._updatePosition(t,r,o,a,u,i,s)}},_updatePosition:function(t,e,i,n,o,a,r){var s=this._api.getWidth(),l=this._api.getHeight();e=e||t.get("position");var u=o.getSize(),h=t.get("align"),c=t.get("verticalAlign"),d=r&&r.getBoundingRect().clone();if(r&&d.applyTransform(r.transform),"function"==typeof e&&(e=e([i,n],a,o.el,d,{viewSize:[s,l],contentSize:u.slice()})),y(e))i=cN(e[0],s),n=cN(e[1],l);else if(w(e)){e.width=u[0],e.height=u[1];var f=ca(e,{width:s,height:l});i=f.x,n=f.y,h=null,c=null}else"string"==typeof e&&r?(i=(p=Ev(e,d,u))[0],n=p[1]):(i=(p=Nv(i,n,o,s,l,h?null:20,c?null:20))[0],n=p[1]);if(h&&(i-=Rv(h)?u[0]/2:"right"===h?u[0]:0),c&&(n-=Rv(c)?u[1]/2:"bottom"===c?u[1]:0),t.get("confine")){var p=Ov(i,n,o,s,l);i=p[0],n=p[1]}o.moveTo(i,n)},_updateContentNotChangedOnAxis:function(t){var e=this._lastDataByCoordSys,i=!!e&&e.length===t.length;return i&&hN(e,function(e,n){var o=e.dataByAxis||{},a=(t[n]||{}).dataByAxis||[];(i&=o.length===a.length)&&hN(o,function(t,e){var n=a[e]||{},o=t.seriesDataIndices||[],r=n.seriesDataIndices||[];(i&=t.value===n.value&&t.axisType===n.axisType&&t.axisId===n.axisId&&o.length===r.length)&&hN(o,function(t,e){var n=r[e];i&=t.seriesIndex===n.seriesIndex&&t.dataIndex===n.dataIndex})})}),this._lastDataByCoordSys=t,!!i},_hide:function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},dispose:function(t,e){U_.node||(this._tooltipContent.hide(),gm("itemTooltip",e))}}),Es({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},function(){}),Es({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},function(){}),Gv.prototype={constructor:Gv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToRadius:aD.prototype.dataToCoord,radiusToData:aD.prototype.coordToData},u(Gv,aD);var fN=Bi();Fv.prototype={constructor:Fv,pointToData:function(t,e){return this.polar.pointToData(t,e)["radius"===this.dim?0:1]},dataToAngle:aD.prototype.dataToCoord,angleToData:aD.prototype.coordToData,calculateCategoryInterval:function(){var t=this,e=t.getLabelModel(),i=t.scale,n=i.getExtent(),o=i.count();if(n[1]-n[0]<1)return 0;var a=n[0],r=t.dataToCoord(a+1)-t.dataToCoord(a),s=Math.abs(r),l=ke(a,e.getFont(),"center","top"),u=Math.max(l.height,7)/s;isNaN(u)&&(u=1/0);var h=Math.max(0,Math.floor(u)),c=fN(t.model),d=c.lastAutoInterval,f=c.lastTickCount;return null!=d&&null!=f&&Math.abs(d-h)<=1&&Math.abs(f-o)<=1&&d>h?h=d:(c.lastTickCount=o,c.lastAutoInterval=h),h}},u(Fv,aD);var pN=function(t){this.name=t||"",this.cx=0,this.cy=0,this._radiusAxis=new Gv,this._angleAxis=new Fv,this._radiusAxis.polar=this._angleAxis.polar=this};pN.prototype={type:"polar",axisPointerEnabled:!0,constructor:pN,dimensions:["radius","angle"],model:null,containPoint:function(t){var e=this.pointToCoord(t);return this._radiusAxis.contain(e[0])&&this._angleAxis.contain(e[1])},containData:function(t){return this._radiusAxis.containData(t[0])&&this._angleAxis.containData(t[1])},getAxis:function(t){return this["_"+t+"Axis"]},getAxes:function(){return[this._radiusAxis,this._angleAxis]},getAxesByScale:function(t){var e=[],i=this._angleAxis,n=this._radiusAxis;return i.scale.type===t&&e.push(i),n.scale.type===t&&e.push(n),e},getAngleAxis:function(){return this._angleAxis},getRadiusAxis:function(){return this._radiusAxis},getOtherAxis:function(t){var e=this._angleAxis;return t===e?this._radiusAxis:e},getBaseAxis:function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},getTooltipAxes:function(t){var e=null!=t&&"auto"!==t?this.getAxis(t):this.getBaseAxis();return{baseAxes:[e],otherAxes:[this.getOtherAxis(e)]}},dataToPoint:function(t,e){return this.coordToPoint([this._radiusAxis.dataToRadius(t[0],e),this._angleAxis.dataToAngle(t[1],e)])},pointToData:function(t,e){var i=this.pointToCoord(t);return[this._radiusAxis.radiusToData(i[0],e),this._angleAxis.angleToData(i[1],e)]},pointToCoord:function(t){var e=t[0]-this.cx,i=t[1]-this.cy,n=this.getAngleAxis(),o=n.getExtent(),a=Math.min(o[0],o[1]),r=Math.max(o[0],o[1]);n.inverse?a=r-360:r=a+360;var s=Math.sqrt(e*e+i*i);e/=s,i/=s;for(var l=Math.atan2(-i,e)/Math.PI*180,u=lr;)l+=360*u;return[s,l]},coordToPoint:function(t){var e=t[0],i=t[1]/180*Math.PI;return[Math.cos(i)*e+this.cx,-Math.sin(i)*e+this.cy]}};var gN=lI.extend({type:"polarAxis",axis:null,getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"polar",index:this.option.polarIndex,id:this.option.polarId})[0]}});n(gN.prototype,UA);var mN={angle:{startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:!1}},radius:{splitNumber:5}};ED("angle",gN,Wv,mN.angle),ED("radius",gN,Wv,mN.radius),Fs({type:"polar",dependencies:["polarAxis","angleAxis"],coordinateSystem:null,findAxisModel:function(t){var e;return this.ecModel.eachComponent(t,function(t){t.getCoordSysModel()===this&&(e=t)},this),e},defaultOption:{zlevel:0,z:0,center:["50%","50%"],radius:"80%"}});var vN={dimensions:pN.prototype.dimensions,create:function(t,e){var i=[];return t.eachComponent("polar",function(t,n){var o=new pN(n);o.update=Zv;var a=o.getRadiusAxis(),r=o.getAngleAxis(),s=t.findAxisModel("radiusAxis"),l=t.findAxisModel("angleAxis");Uv(a,s),Uv(r,l),Hv(o,t,e),i.push(o),t.coordinateSystem=o,o.model=t}),t.eachSeries(function(e){if("polar"===e.get("coordinateSystem")){var i=t.queryComponents({mainType:"polar",index:e.get("polarIndex"),id:e.get("polarId")})[0];e.coordinateSystem=i.coordinateSystem}}),i}};Fa.register("polar",vN);var yN=["axisLine","axisLabel","axisTick","splitLine","splitArea"];XD.extend({type:"angleAxis",axisPointerClass:"PolarAxisPointer",render:function(t,e){if(this.group.removeAll(),t.get("show")){var n=t.axis,o=n.polar,a=o.getRadiusAxis().getExtent(),r=n.getTicksCoords(),s=f(n.getViewLabels(),function(t){return(t=i(t)).coord=n.dataToCoord(t.tickValue),t});Yv(s),Yv(r),d(yN,function(e){!t.get(e+".show")||n.scale.isBlank()&&"axisLine"!==e||this["_"+e](t,o,r,a,s)},this)}},_axisLine:function(t,e,i,n){var o=t.getModel("axisLine.lineStyle"),a=new sM({shape:{cx:e.cx,cy:e.cy,r:n[jv(e)]},style:o.getLineStyle(),z2:1,silent:!0});a.style.fill=null,this.group.add(a)},_axisTick:function(t,e,i,n){var o=t.getModel("axisTick"),a=(o.get("inside")?-1:1)*o.get("length"),s=n[jv(e)],l=f(i,function(t){return new _M({shape:Xv(e,[s,s+a],t.coord)})});this.group.add(OM(l,{style:r(o.getModel("lineStyle").getLineStyle(),{stroke:t.get("axisLine.lineStyle.color")})}))},_axisLabel:function(t,e,i,n,o){var a=t.getCategories(!0),r=t.getModel("axisLabel"),s=r.get("margin");d(o,function(i,o){var l=r,u=i.tickValue,h=n[jv(e)],c=e.coordToPoint([h+s,i.coord]),d=e.cx,f=e.cy,p=Math.abs(c[0]-d)/h<.3?"center":c[0]>d?"left":"right",g=Math.abs(c[1]-f)/h<.3?"middle":c[1]>f?"top":"bottom";a&&a[u]&&a[u].textStyle&&(l=new No(a[u].textStyle,r,r.ecModel));var m=new rM({silent:!0});this.group.add(m),mo(m.style,l,{x:c[0],y:c[1],textFill:l.getTextColor()||t.get("axisLine.lineStyle.color"),text:i.formattedLabel,textAlign:p,textVerticalAlign:g})},this)},_splitLine:function(t,e,i,n){var o=t.getModel("splitLine").getModel("lineStyle"),a=o.get("color"),s=0;a=a instanceof Array?a:[a];for(var l=[],u=0;u=0?"p":"n",M=y;v&&(n[r][b]||(n[r][b]={p:y,n:y}),M=n[r][b][S]);var I,T,A,D;if("radius"===h.dim){var C=h.dataToRadius(w)-y,L=a.dataToAngle(b);Math.abs(C)=0},kN.findTargetInfo=function(t,e){for(var i=this._targetInfoList,n=dy(e,t),o=0;o=0||AN(n,t.getAxis("y").model)>=0)&&a.push(t)}),e.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:a[0],coordSyses:a,getPanelRect:ON.grid,xAxisDeclared:r[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,e){TN(t.geoModels,function(t){var i=t.coordinateSystem;e.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:i,coordSyses:[i],getPanelRect:ON.geo})})}},NN=[function(t,e){var i=t.xAxisModel,n=t.yAxisModel,o=t.gridModel;return!o&&i&&(o=i.axis.grid.model),!o&&n&&(o=n.axis.grid.model),o&&o===e.gridModel},function(t,e){var i=t.geoModel;return i&&i===e.geoModel}],ON={grid:function(){return this.coordSys.grid.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Ao(t)),e}},EN={lineX:DN(fy,0),lineY:DN(fy,1),rect:function(t,e,i){var n=e[CN[t]]([i[0][0],i[1][0]]),o=e[CN[t]]([i[0][1],i[1][1]]),a=[cy([n[0],o[0]]),cy([n[1],o[1]])];return{values:a,xyMinMax:a}},polygon:function(t,e,i){var n=[[1/0,-1/0],[1/0,-1/0]];return{values:f(i,function(i){var o=e[CN[t]](i);return n[0][0]=Math.min(n[0][0],o[0]),n[1][0]=Math.min(n[1][0],o[1]),n[0][1]=Math.max(n[0][1],o[0]),n[1][1]=Math.max(n[1][1],o[1]),o}),xyMinMax:n}}},RN={lineX:DN(py,0),lineY:DN(py,1),rect:function(t,e,i){return[[t[0][0]-i[0]*e[0][0],t[0][1]-i[0]*e[0][1]],[t[1][0]-i[1]*e[1][0],t[1][1]-i[1]*e[1][1]]]},polygon:function(t,e,i){return f(t,function(t,n){return[t[0]-i[0]*e[n][0],t[1]-i[1]*e[n][1]]})}},zN=["inBrush","outOfBrush"],BN="__ecBrushSelect",VN="__ecInBrushSelectEvent",GN=VT.VISUAL.BRUSH;zs(GN,function(t,e,i){t.eachComponent({mainType:"brush"},function(e){i&&"takeGlobalCursor"===i.type&&e.setBrushOption("brush"===i.key?i.brushOption:{brushType:!1}),(e.brushTargetManager=new hy(e.option,t)).setInputRanges(e.areas,t)})}),Bs(GN,function(t,e,n){var o,a,s=[];t.eachComponent({mainType:"brush"},function(e,n){function l(t){return"all"===m||v[t]}function u(t){return!!t.length}function h(t,e){var i=t.coordinateSystem;w|=i.hasAxisBrushed(),l(e)&&i.eachActiveState(t.getData(),function(t,e){"active"===t&&(x[e]=1)})}function c(i,n,o){var a=_y(i);if(a&&!wy(e,n)&&(d(b,function(n){a[n.brushType]&&e.brushTargetManager.controlSeries(n,i,t)&&o.push(n),w|=u(o)}),l(n)&&u(o))){var r=i.getData();r.each(function(t){xy(a,o,r,t)&&(x[t]=1)})}}var p={brushId:e.id,brushIndex:n,brushName:e.name,areas:i(e.areas),selected:[]};s.push(p);var g=e.option,m=g.brushLink,v=[],x=[],_=[],w=0;n||(o=g.throttleType,a=g.throttleDelay);var b=f(e.areas,function(t){return by(r({boundingRect:FN[t.brushType](t)},t))}),S=ty(e.option,zN,function(t){t.mappingMethod="fixed"});y(m)&&d(m,function(t){v[t]=1}),t.eachSeries(function(t,e){var i=_[e]=[];"parallel"===t.subType?h(t,e):c(t,e,i)}),t.eachSeries(function(t,e){var i={seriesId:t.id,seriesIndex:e,seriesName:t.name,dataIndex:[]};p.selected.push(i);var n=_y(t),o=_[e],a=t.getData(),r=l(e)?function(t){return x[t]?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return xy(n,o,a,t)?(i.dataIndex.push(a.getRawIndex(t)),"inBrush"):"outOfBrush"};(l(e)?w:u(o))&&iy(zN,S,a,r)})}),vy(e,o,a,s,n)});var FN={lineX:B,lineY:B,rect:function(t){return Sy(t.range)},polygon:function(t){for(var e,i=t.range,n=0,o=i.length;ne[0][1]&&(e[0][1]=a[0]),a[1]e[1][1]&&(e[1][1]=a[1])}return e&&Sy(e)}},WN=["#ddd"];Fs({type:"brush",dependencies:["geo","grid","xAxis","yAxis","parallel","series"],defaultOption:{toolbox:null,brushLink:null,seriesIndex:"all",geoIndex:null,xAxisIndex:null,yAxisIndex:null,brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(120,140,180,0.3)",borderColor:"rgba(120,140,180,0.8)"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},areas:[],brushType:null,brushOption:{},coordInfoList:[],optionUpdated:function(t,e){var i=this.option;!e&&ey(i,t,["inBrush","outOfBrush"]);var n=i.inBrush=i.inBrush||{};i.outOfBrush=i.outOfBrush||{color:WN},n.hasOwnProperty("liftZ")||(n.liftZ=5)},setAreas:function(t){t&&(this.areas=f(t,function(t){return My(this.option,t)},this))},setBrushOption:function(t){this.brushOption=My(this.option,t),this.brushType=this.brushOption.brushType}});Ws({type:"brush",init:function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new zf(e.getZr())).on("brush",m(this._onBrush,this)).mount()},render:function(t){return this.model=t,Iy.apply(this,arguments)},updateTransform:Iy,updateView:Iy,dispose:function(){this._brushController.dispose()},_onBrush:function(t,e){var n=this.model.id;this.model.brushTargetManager.setOutputRanges(t,this.ecModel),(!e.isEnd||e.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:n,areas:i(t),$from:n})}}),Es({type:"brush",event:"brush"},function(t,e){e.eachComponent({mainType:"brush",query:t},function(e){e.setAreas(t.areas)})}),Es({type:"brushSelect",event:"brushSelected",update:"none"},function(){});var HN={},ZN=rT.toolbox.brush;Dy.defaultOption={show:!0,type:["rect","polygon","lineX","lineY","keep","clear"],icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:i(ZN.title)};var UN=Dy.prototype;UN.render=UN.updateView=function(t,e,i){var n,o,a;e.eachComponent({mainType:"brush"},function(t){n=t.brushType,o=t.brushOption.brushMode||"single",a|=t.areas.length}),this._brushType=n,this._brushMode=o,d(t.get("type",!0),function(e){t.setIconStatus(e,("keep"===e?"multiple"===o:"clear"===e?a:e===n)?"emphasis":"normal")})},UN.getIcons=function(){var t=this.model,e=t.get("icon",!0),i={};return d(t.get("type",!0),function(t){e[t]&&(i[t]=e[t])}),i},UN.onclick=function(t,e,i){var n=this._brushType,o=this._brushMode;"clear"===i?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===i?n:n!==i&&i,brushMode:"keep"===i?"multiple"===o?"single":"multiple":o}})},Ty("brush",Dy),Ns(function(t,e){var i=t&&t.brush;if(y(i)||(i=i?[i]:[]),i.length){var n=[];d(i,function(t){var e=t.hasOwnProperty("toolbox")?t.toolbox:[];e instanceof Array&&(n=n.concat(e))});var o=t&&t.toolbox;y(o)&&(o=o[0]),o||(o={feature:{}},t.toolbox=[o]);var a=o.feature||(o.feature={}),r=a.brush||(a.brush={}),s=r.type||(r.type=[]);s.push.apply(s,n),Jv(s),e&&!s.length&&s.push.apply(s,SN)}});Cy.prototype={constructor:Cy,type:"calendar",dimensions:["time","value"],getDimensionsInfo:function(){return[{name:"time",type:"time"},"value"]},getRangeInfo:function(){return this._rangeInfo},getModel:function(){return this._model},getRect:function(){return this._rect},getCellWidth:function(){return this._sw},getCellHeight:function(){return this._sh},getOrient:function(){return this._orient},getFirstDayOfWeek:function(){return this._firstDayOfWeek},getDateInfo:function(t){var e=(t=Yo(t)).getFullYear(),i=t.getMonth()+1;i=i<10?"0"+i:i;var n=t.getDate();n=n<10?"0"+n:n;var o=t.getDay();return o=Math.abs((o+7-this.getFirstDayOfWeek())%7),{y:e,m:i,d:n,day:o,time:t.getTime(),formatedDate:e+"-"+i+"-"+n,date:t}},getNextNDay:function(t,e){return 0===(e=e||0)?this.getDateInfo(t):((t=new Date(this.getDateInfo(t).time)).setDate(t.getDate()+e),this.getDateInfo(t))},update:function(t,e){function i(t,e){return null!=t[e]&&"auto"!==t[e]}this._firstDayOfWeek=+this._model.getModel("dayLabel").get("firstDay"),this._orient=this._model.get("orient"),this._lineWidth=this._model.getModel("itemStyle").getItemStyle().lineWidth||0,this._rangeInfo=this._getRangeInfo(this._initRangeOption());var n=this._rangeInfo.weeks||1,o=["width","height"],a=this._model.get("cellSize").slice(),r=this._model.getBoxLayoutParams(),s="horizontal"===this._orient?[n,7]:[7,n];d([0,1],function(t){i(a,t)&&(r[o[t]]=a[t]*s[t])});var l={width:e.getWidth(),height:e.getHeight()},u=this._rect=ca(r,l);d([0,1],function(t){i(a,t)||(a[t]=u[o[t]]/s[t])}),this._sw=a[0],this._sh=a[1]},dataToPoint:function(t,e){y(t)&&(t=t[0]),null==e&&(e=!0);var i=this.getDateInfo(t),n=this._rangeInfo,o=i.formatedDate;if(e&&!(i.time>=n.start.time&&i.timea.end.time&&t.reverse(),t},_getRangeInfo:function(t){var e;(t=[this.getDateInfo(t[0]),this.getDateInfo(t[1])])[0].time>t[1].time&&(e=!0,t.reverse());var i=Math.floor(t[1].time/864e5)-Math.floor(t[0].time/864e5)+1,n=new Date(t[0].time),o=n.getDate(),a=t[1].date.getDate();if(n.setDate(o+i-1),n.getDate()!==a)for(var r=n.getTime()-t[1].time>0?1:-1;n.getDate()!==a&&(n.getTime()-t[1].time)*r>0;)i-=r,n.setDate(o+i-1);var s=Math.floor((i+t[0].day+6)/7),l=e?1-s:s-1;return e&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:i,weeks:s,nthWeek:l,fweek:t[0].day,lweek:t[1].day}},_getDateByWeeksAndDay:function(t,e,i){var n=this._getRangeInfo(i);if(t>n.weeks||0===t&&en.lweek)return!1;var o=7*(t-1)-n.fweek+e,a=new Date(n.start.time);return a.setDate(n.start.d+o),this.getDateInfo(a)}},Cy.dimensions=Cy.prototype.dimensions,Cy.getDimensionsInfo=Cy.prototype.getDimensionsInfo,Cy.create=function(t,e){var i=[];return t.eachComponent("calendar",function(n){var o=new Cy(n,t,e);i.push(o),n.coordinateSystem=o}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=i[t.get("calendarIndex")||0])}),i},Fa.register("calendar",Cy);var XN=lI.extend({type:"calendar",coordinateSystem:null,defaultOption:{zlevel:0,z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",nameMap:"en",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",nameMap:"en",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},init:function(t,e,i,n){var o=ga(t);XN.superApply(this,"init",arguments),ky(t,o)},mergeOption:function(t,e){XN.superApply(this,"mergeOption",arguments),ky(this.option,t)}}),jN={EN:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CN:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},YN={EN:["S","M","T","W","T","F","S"],CN:["日","一","二","三","四","五","六"]};Ws({type:"calendar",_tlpoints:null,_blpoints:null,_firstDayOfMonth:null,_firstDayPoints:null,render:function(t,e,i){var n=this.group;n.removeAll();var o=t.coordinateSystem,a=o.getRangeInfo(),r=o.getOrient();this._renderDayRect(t,a,n),this._renderLines(t,a,r,n),this._renderYearText(t,a,r,n),this._renderMonthText(t,r,n),this._renderWeekText(t,a,r,n)},_renderDayRect:function(t,e,i){for(var n=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),a=n.getCellWidth(),r=n.getCellHeight(),s=e.start.time;s<=e.end.time;s=n.getNextNDay(s,1).time){var l=n.dataToRect([s],!1).tl,u=new yM({shape:{x:l[0],y:l[1],width:a,height:r},cursor:"default",style:o});i.add(u)}},_renderLines:function(t,e,i,n){function o(e){a._firstDayOfMonth.push(r.getDateInfo(e)),a._firstDayPoints.push(r.dataToRect([e],!1).tl);var o=a._getLinePointsOfOneWeek(t,e,i);a._tlpoints.push(o[0]),a._blpoints.push(o[o.length-1]),l&&a._drawSplitline(o,s,n)}var a=this,r=t.coordinateSystem,s=t.getModel("splitLine.lineStyle").getLineStyle(),l=t.get("splitLine.show"),u=s.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var h=e.start,c=0;h.time<=e.end.time;c++){o(h.formatedDate),0===c&&(h=r.getDateInfo(e.start.y+"-"+e.start.m));var d=h.date;d.setMonth(d.getMonth()+1),h=r.getDateInfo(d)}o(r.getNextNDay(e.end.time,1).formatedDate),l&&this._drawSplitline(a._getEdgesPoints(a._tlpoints,u,i),s,n),l&&this._drawSplitline(a._getEdgesPoints(a._blpoints,u,i),s,n)},_getEdgesPoints:function(t,e,i){var n=[t[0].slice(),t[t.length-1].slice()],o="horizontal"===i?0:1;return n[0][o]=n[0][o]-e/2,n[1][o]=n[1][o]+e/2,n},_drawSplitline:function(t,e,i){var n=new gM({z2:20,shape:{points:t},style:e});i.add(n)},_getLinePointsOfOneWeek:function(t,e,i){var n=t.coordinateSystem;e=n.getDateInfo(e);for(var o=[],a=0;a<7;a++){var r=n.getNextNDay(e.time,a),s=n.dataToRect([r.time],!1);o[2*r.day]=s.tl,o[2*r.day+1]=s["horizontal"===i?"bl":"tr"]}return o},_formatterLabel:function(t,e){return"string"==typeof t&&t?oa(t,e):"function"==typeof t?t(e):e.nameMap},_yearTextPositionControl:function(t,e,i,n,o){e=e.slice();var a=["center","bottom"];"bottom"===n?(e[1]+=o,a=["center","top"]):"left"===n?e[0]-=o:"right"===n?(e[0]+=o,a=["center","top"]):e[1]-=o;var r=0;return"left"!==n&&"right"!==n||(r=Math.PI/2),{rotation:r,position:e,style:{textAlign:a[0],textVerticalAlign:a[1]}}},_renderYearText:function(t,e,i,n){var o=t.getModel("yearLabel");if(o.get("show")){var a=o.get("margin"),r=o.get("position");r||(r="horizontal"!==i?"top":"left");var s=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],l=(s[0][0]+s[1][0])/2,u=(s[0][1]+s[1][1])/2,h="horizontal"===i?0:1,c={top:[l,s[h][1]],bottom:[l,s[1-h][1]],left:[s[1-h][0],u],right:[s[h][0],u]},d=e.start.y;+e.end.y>+e.start.y&&(d=d+"-"+e.end.y);var f=o.get("formatter"),p={start:e.start.y,end:e.end.y,nameMap:d},g=this._formatterLabel(f,p),m=new rM({z2:30});mo(m.style,o,{text:g}),m.attr(this._yearTextPositionControl(m,c[r],i,r,a)),n.add(m)}},_monthTextPositionControl:function(t,e,i,n,o){var a="left",r="top",s=t[0],l=t[1];return"horizontal"===i?(l+=o,e&&(a="center"),"start"===n&&(r="bottom")):(s+=o,e&&(r="middle"),"start"===n&&(a="right")),{x:s,y:l,textAlign:a,textVerticalAlign:r}},_renderMonthText:function(t,e,i){var n=t.getModel("monthLabel");if(n.get("show")){var o=n.get("nameMap"),r=n.get("margin"),s=n.get("position"),l=n.get("align"),u=[this._tlpoints,this._blpoints];_(o)&&(o=jN[o.toUpperCase()]||[]);var h="start"===s?0:1,c="horizontal"===e?0:1;r="start"===s?-r:r;for(var d="center"===l,f=0;f=r[0]&&t<=r[1]}if(t===this._dataZoomModel){var n=this._dimName,o=this.getTargetSeriesModels(),a=t.get("filterMode"),r=this._valueWindow;"none"!==a&&$N(o,function(t){var e=t.getData(),o=e.mapDimension(n,!0);o.length&&("weakFilter"===a?e.filterSelf(function(t){for(var i,n,a,s=0;sr[1];if(u&&!h&&!c)return!0;u&&(a=!0),h&&(i=!0),c&&(n=!0)}return a&&i&&n}):$N(o,function(n){if("empty"===a)t.setData(e.map(n,function(t){return i(t)?t:NaN}));else{var o={};o[n]=r,e.selectRange(o)}}),$N(o,function(t){e.setApproximateExtent(r,t)}))})}}};var tO=d,eO=KN,iO=Fs({type:"dataZoom",dependencies:["xAxis","yAxis","zAxis","radiusAxis","angleAxis","singleAxis","series"],defaultOption:{zlevel:0,z:4,orient:null,xAxisIndex:null,yAxisIndex:null,filterMode:"filter",throttle:null,start:0,end:100,startValue:null,endValue:null,minSpan:null,maxSpan:null,minValueSpan:null,maxValueSpan:null,rangeMode:null},init:function(t,e,i){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var n=By(t);this.mergeDefaultAndTheme(t,i),this.doInit(n)},mergeOption:function(t){var e=By(t);n(this.option,t,!0),this.doInit(e)},doInit:function(t){var e=this.option;U_.canvasSupported||(e.realtime=!1),this._setDefaultThrottle(t),Vy(this,t),tO([["start","startValue"],["end","endValue"]],function(t,i){"value"===this._rangePropMode[i]&&(e[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var t=this._axisProxies;this.eachTargetAxis(function(e,i,n,o){var a=this.dependentModels[e.axis][i],r=a.__dzAxisProxy||(a.__dzAxisProxy=new QN(e.name,i,this,o));t[e.name+"_"+i]=r},this)},_resetTarget:function(){var t=this.option,e=this._judgeAutoMode();eO(function(e){var i=e.axisIndex;t[i]=Di(t[i])},this),"axisIndex"===e?this._autoSetAxisIndex():"orient"===e&&this._autoSetOrient()},_judgeAutoMode:function(){var t=this.option,e=!1;eO(function(i){null!=t[i.axisIndex]&&(e=!0)},this);var i=t.orient;return null==i&&e?"orient":e?void 0:(null==i&&(t.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var t=!0,e=this.get("orient",!0),i=this.option,n=this.dependentModels;if(t){var o="vertical"===e?"y":"x";n[o+"Axis"].length?(i[o+"AxisIndex"]=[0],t=!1):tO(n.singleAxis,function(n){t&&n.get("orient",!0)===e&&(i.singleAxisIndex=[n.componentIndex],t=!1)})}t&&eO(function(e){if(t){var n=[],o=this.dependentModels[e.axis];if(o.length&&!n.length)for(var a=0,r=o.length;a0?100:20}},getFirstTargetAxisModel:function(){var t;return eO(function(e){if(null==t){var i=this.get(e.axisIndex);i.length&&(t=this.dependentModels[e.axis][i[0]])}},this),t},eachTargetAxis:function(t,e){var i=this.ecModel;eO(function(n){tO(this.get(n.axisIndex),function(o){t.call(e,n,o,this,i)},this)},this)},getAxisProxy:function(t,e){return this._axisProxies[t+"_"+e]},getAxisModel:function(t,e){var i=this.getAxisProxy(t,e);return i&&i.getAxisModel()},setRawRange:function(t,e){var i=this.option;tO([["start","startValue"],["end","endValue"]],function(e){null==t[e[0]]&&null==t[e[1]]||(i[e[0]]=t[e[0]],i[e[1]]=t[e[1]])},this),!e&&Vy(this,t)},getPercentRange:function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},getValueRange:function(t,e){if(null!=t||null!=e)return this.getAxisProxy(t,e).getDataValueWindow();var i=this.findRepresentativeAxisProxy();return i?i.getDataValueWindow():void 0},findRepresentativeAxisProxy:function(t){if(t)return t.__dzAxisProxy;var e=this._axisProxies;for(var i in e)if(e.hasOwnProperty(i)&&e[i].hostedBy(this))return e[i];for(var i in e)if(e.hasOwnProperty(i)&&!e[i].hostedBy(this))return e[i]},getRangePropMode:function(){return this._rangePropMode.slice()}}),nO=qI.extend({type:"dataZoom",render:function(t,e,i,n){this.dataZoomModel=t,this.ecModel=e,this.api=i},getTargetCoordInfo:function(){function t(t,e,i,n){for(var o,a=0;a0&&e%g)p+=f;else{var i=null==t||isNaN(t)||""===t,n=i?0:aO(t,a,u,!0);i&&!l&&e?(c.push([c[c.length-1][0],0]),d.push([d[d.length-1][0],0])):!i&&l&&(c.push([p,0]),d.push([p,0])),c.push([p,n]),d.push([p,n]),p+=f,l=i}});var m=this.dataZoomModel;this._displayables.barGroup.add(new pM({shape:{points:c},style:r({fill:m.get("dataBackgroundColor")},m.getModel("dataBackground.areaStyle").getAreaStyle()),silent:!0,z2:-20})),this._displayables.barGroup.add(new gM({shape:{points:d},style:m.getModel("dataBackground.lineStyle").getLineStyle(),silent:!0,z2:-19}))}}},_prepareDataShadowInfo:function(){var t=this.dataZoomModel,e=t.get("showDataShadow");if(!1!==e){var i,n=this.ecModel;return t.eachTargetAxis(function(o,a){d(t.getAxisProxy(o.name,a).getTargetSeriesModels(),function(t){if(!(i||!0!==e&&l(cO,t.get("type"))<0)){var r,s=n.getComponent(o.axis,a).axis,u=Gy(o.name),h=t.coordinateSystem;null!=u&&h.getOtherAxis&&(r=h.getOtherAxis(s).inverse),u=t.getData().mapDimension(u),i={thisAxis:s,series:t,thisDim:o.name,otherDim:u,otherAxisInverse:r}}},this)},this),i}},_renderHandle:function(){var t=this._displayables,e=t.handles=[],i=t.handleLabels=[],n=this._displayables.barGroup,o=this._size,a=this.dataZoomModel;n.add(t.filler=new oO({draggable:!0,cursor:Fy(this._orient),drift:sO(this._onDragMove,this,"all"),onmousemove:function(t){mw(t.event)},ondragstart:sO(this._showDataInfo,this,!0),ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1),style:{fill:a.get("fillerColor"),textPosition:"inside"}})),n.add(new oO($n({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{stroke:a.get("dataBackgroundColor")||a.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}}))),lO([0,1],function(t){var o=Po(a.get("handleIcon"),{cursor:Fy(this._orient),draggable:!0,drift:sO(this._onDragMove,this,t),onmousemove:function(t){mw(t.event)},ondragend:sO(this._onDragEnd,this),onmouseover:sO(this._showDataInfo,this,!0),onmouseout:sO(this._showDataInfo,this,!1)},{x:-1,y:0,width:2,height:2}),r=o.getBoundingRect();this._handleHeight=Vo(a.get("handleSize"),this._size[1]),this._handleWidth=r.width/r.height*this._handleHeight,o.setStyle(a.getModel("handleStyle").getItemStyle());var s=a.get("handleColor");null!=s&&(o.style.fill=s),n.add(e[t]=o);var l=a.textStyleModel;this.group.add(i[t]=new rM({silent:!0,invisible:!0,style:{x:0,y:0,text:"",textVerticalAlign:"middle",textAlign:"center",textFill:l.getTextColor(),textFont:l.getFont()},z2:10}))},this)},_resetInterval:function(){var t=this._range=this.dataZoomModel.getPercentRange(),e=this._getViewExtent();this._handleEnds=[aO(t[0],[0,100],e,!0),aO(t[1],[0,100],e,!0)]},_updateInterval:function(t,e){var i=this.dataZoomModel,n=this._handleEnds,o=this._getViewExtent(),a=i.findRepresentativeAxisProxy().getMinMaxSpan(),r=[0,100];QL(e,n,o,i.get("zoomLock")?"all":t,null!=a.minSpan?aO(a.minSpan,r,o,!0):null,null!=a.maxSpan?aO(a.maxSpan,r,o,!0):null);var s=this._range,l=this._range=rO([aO(n[0],o,r,!0),aO(n[1],o,r,!0)]);return!s||s[0]!==l[0]||s[1]!==l[1]},_updateView:function(t){var e=this._displayables,i=this._handleEnds,n=rO(i.slice()),o=this._size;lO([0,1],function(t){var n=e.handles[t],a=this._handleHeight;n.attr({scale:[a/2,a/2],position:[i[t],o[1]/2-a/2]})},this),e.filler.setShape({x:n[0],y:0,width:n[1]-n[0],height:o[1]}),this._updateDataInfo(t)},_updateDataInfo:function(t){function e(t){var e=Ao(n.handles[t].parent,this.group),i=Co(0===t?"right":"left",e),s=this._handleWidth/2+hO,l=Do([c[t]+(0===t?-s:s),this._size[1]/2],e);o[t].setStyle({x:l[0],y:l[1],textVerticalAlign:a===uO?"middle":i,textAlign:a===uO?i:"center",text:r[t]})}var i=this.dataZoomModel,n=this._displayables,o=n.handleLabels,a=this._orient,r=["",""];if(i.get("showDetail")){var s=i.findRepresentativeAxisProxy();if(s){var l=s.getAxisModel().axis,u=this._range,h=t?s.calculateDataWindow({start:u[0],end:u[1]}).valueWindow:s.getDataValueWindow();r=[this._formatLabel(h[0],l),this._formatLabel(h[1],l)]}}var c=rO(this._handleEnds.slice());e.call(this,0),e.call(this,1)},_formatLabel:function(t,e){var i=this.dataZoomModel,n=i.get("labelFormatter"),o=i.get("labelPrecision");null!=o&&"auto"!==o||(o=e.getPixelPrecision());var a=null==t||isNaN(t)?"":"category"===e.type||"time"===e.type?e.scale.getLabel(Math.round(t)):t.toFixed(Math.min(o,20));return x(n)?n(t,a):_(n)?n.replace("{value}",a):a},_showDataInfo:function(t){t=this._dragging||t;var e=this._displayables.handleLabels;e[0].attr("invisible",!t),e[1].attr("invisible",!t)},_onDragMove:function(t,e,i){this._dragging=!0;var n=Do([e,i],this._displayables.barGroup.getLocalTransform(),!0),o=this._updateInterval(t,n[0]),a=this.dataZoomModel.get("realtime");this._updateView(!a),o&&a&&this._dispatchZoomAction()},_onDragEnd:function(){this._dragging=!1,this._showDataInfo(!1),!this.dataZoomModel.get("realtime")&&this._dispatchZoomAction()},_onClickPanelClick:function(t){var e=this._size,i=this._displayables.barGroup.transformCoordToLocal(t.offsetX,t.offsetY);if(!(i[0]<0||i[0]>e[0]||i[1]<0||i[1]>e[1])){var n=this._handleEnds,o=(n[0]+n[1])/2,a=this._updateInterval("all",i[0]-o);this._updateView(),a&&this._dispatchZoomAction()}},_dispatchZoomAction:function(){var t=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,start:t[0],end:t[1]})},_findCoordRect:function(){var t;if(lO(this.getTargetCoordInfo(),function(e){if(!t&&e.length){var i=e[0].model.coordinateSystem;t=i.getRect&&i.getRect()}}),!t){var e=this.api.getWidth(),i=this.api.getHeight();t={x:.2*e,y:.2*i,width:.6*e,height:.6*i}}return t}});iO.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var fO="\0_ec_dataZoom_roams",pO=m,gO=nO.extend({type:"dataZoom.inside",init:function(t,e){this._range},render:function(t,e,i,n){gO.superApply(this,"render",arguments),this._range=t.getPercentRange(),d(this.getTargetCoordInfo(),function(e,n){var o=f(e,function(t){return Zy(t.model)});d(e,function(e){var a=e.model,r={};d(["pan","zoom","scrollMove"],function(t){r[t]=pO(mO[t],this,e,n)},this),Wy(i,{coordId:Zy(a),allCoordIds:o,containsPoint:function(t,e,i){return a.coordinateSystem.containPoint([e,i])},dataZoomId:t.id,dataZoomModel:t,getRange:r})},this)},this)},dispose:function(){Hy(this.api,this.dataZoomModel.id),gO.superApply(this,"dispose",arguments),this._range=null}}),mO={zoom:function(t,e,i,n){var o=this._range,a=o.slice(),r=t.axisModels[0];if(r){var s=vO[e](null,[n.originX,n.originY],r,i,t),l=(s.signal>0?s.pixelStart+s.pixelLength-s.pixel:s.pixel-s.pixelStart)/s.pixelLength*(a[1]-a[0])+a[0],u=Math.max(1/n.scale,0);a[0]=(a[0]-l)*u+l,a[1]=(a[1]-l)*u+l;var h=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();return QL(0,a,[0,100],0,h.minSpan,h.maxSpan),this._range=a,o[0]!==a[0]||o[1]!==a[1]?a:void 0}},pan:Ky(function(t,e,i,n,o,a){var r=vO[n]([a.oldX,a.oldY],[a.newX,a.newY],e,o,i);return r.signal*(t[1]-t[0])*r.pixel/r.pixelLength}),scrollMove:Ky(function(t,e,i,n,o,a){return vO[n]([0,0],[a.scrollDelta,a.scrollDelta],e,o,i).signal*(t[1]-t[0])*a.scrollDelta})},vO={grid:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem.getRect();return t=t||[0,0],"x"===a.dim?(r.pixel=e[0]-t[0],r.pixelLength=s.width,r.pixelStart=s.x,r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=s.height,r.pixelStart=s.y,r.signal=a.inverse?-1:1),r},polar:function(t,e,i,n,o){var a=i.axis,r={},s=o.model.coordinateSystem,l=s.getRadiusAxis().getExtent(),u=s.getAngleAxis().getExtent();return t=t?s.pointToCoord(t):[0,0],e=s.pointToCoord(e),"radiusAxis"===i.mainType?(r.pixel=e[0]-t[0],r.pixelLength=l[1]-l[0],r.pixelStart=l[0],r.signal=a.inverse?1:-1):(r.pixel=e[1]-t[1],r.pixelLength=u[1]-u[0],r.pixelStart=u[0],r.signal=a.inverse?-1:1),r},singleAxis:function(t,e,i,n,o){var a=i.axis,r=o.model.coordinateSystem.getRect(),s={};return t=t||[0,0],"horizontal"===a.orient?(s.pixel=e[0]-t[0],s.pixelLength=r.width,s.pixelStart=r.x,s.signal=a.inverse?1:-1):(s.pixel=e[1]-t[1],s.pixelLength=r.height,s.pixelStart=r.y,s.signal=a.inverse?-1:1),s}};Os({getTargetSeries:function(t){var e=R();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){d(n.getAxisProxy(t.name,i).getTargetSeriesModels(),function(t){e.set(t.uid,t)})})}),e},modifyOutputEnd:!0,overallReset:function(t,e){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).reset(n,e)}),t.eachTargetAxis(function(t,i,n){n.getAxisProxy(t.name,i).filterData(n,e)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),i=e.getDataPercentWindow(),n=e.getDataValueWindow();t.setRawRange({start:i[0],end:i[1],startValue:n[0],endValue:n[1]},!0)})}}),Es("dataZoom",function(t,e){var i=Ny(m(e.eachComponent,e,"dataZoom"),KN,function(t,e){return t.get(e.axisIndex)}),n=[];e.eachComponent({mainType:"dataZoom",query:t},function(t,e){n.push.apply(n,i(t).nodes)}),d(n,function(e,i){e.setRawRange({start:t.start,end:t.end,startValue:t.startValue,endValue:t.endValue})})});var yO=d,xO=function(t){var e=t&&t.visualMap;y(e)||(e=e?[e]:[]),yO(e,function(t){if(t){$y(t,"splitList")&&!$y(t,"pieces")&&(t.pieces=t.splitList,delete t.splitList);var e=t.pieces;e&&y(e)&&yO(e,function(t){w(t)&&($y(t,"start")&&!$y(t,"min")&&(t.min=t.start),$y(t,"end")&&!$y(t,"max")&&(t.max=t.end))})}})};lI.registerSubTypeDefaulter("visualMap",function(t){return t.categories||(t.pieces?t.pieces.length>0:t.splitNumber>0)&&!t.calculable?"piecewise":"continuous"});var _O=VT.VISUAL.COMPONENT;Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=[];return e.eachComponent("visualMap",function(e){var n=t.pipelineContext;!e.isTargetSeries(t)||n&&n.large||i.push(ny(e.stateList,e.targetVisuals,m(e.getValueState,e),e.getDataDimension(t.getData())))}),i}}),Bs(_O,{createOnAllSeries:!0,reset:function(t,e){var i=t.getData(),n=[];e.eachComponent("visualMap",function(e){if(e.isTargetSeries(t)){var o=e.getVisualMeta(m(Jy,null,t,e))||{stops:[],outerColors:[]},a=e.getDataDimension(i),r=i.getDimensionInfo(a);null!=r&&(o.dimension=r.index,n.push(o))}}),t.getData().setVisual("visualMeta",n)}});var wO={get:function(t,e,n){var o=i((bO[t]||{})[e]);return n&&y(o)?o[o.length-1]:o}},bO={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},SO=hL.mapVisual,MO=hL.eachVisual,IO=y,TO=d,AO=Fo,DO=Bo,CO=B,LO=Fs({type:"visualMap",dependencies:["series"],stateList:["inRange","outOfRange"],replacableOptionKeys:["inRange","outOfRange","target","controller","color"],dataBound:[-1/0,1/0],layoutMode:{type:"box",ignoreSize:!0},defaultOption:{show:!0,zlevel:0,z:4,seriesIndex:"all",min:0,max:200,dimension:null,inRange:null,outOfRange:null,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,color:null,formatter:null,text:null,textStyle:{color:"#333"}},init:function(t,e,i){this._dataExtent,this.targetVisuals={},this.controllerVisuals={},this.textStyleModel,this.itemSize,this.mergeDefaultAndTheme(t,i)},optionUpdated:function(t,e){var i=this.option;U_.canvasSupported||(i.realtime=!1),!e&&ey(i,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},resetVisual:function(t){var e=this.stateList;t=m(t,this),this.controllerVisuals=ty(this.option.controller,e,t),this.targetVisuals=ty(this.option.target,e,t)},getTargetSeriesIndices:function(){var t=this.option.seriesIndex,e=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,i){e.push(i)}):e=Di(t),e},eachTargetSeries:function(t,e){d(this.getTargetSeriesIndices(),function(i){t.call(e,this.ecModel.getSeriesByIndex(i))},this)},isTargetSeries:function(t){var e=!1;return this.eachTargetSeries(function(i){i===t&&(e=!0)}),e},formatValueText:function(t,e,i){function n(t){return t===l[0]?"min":t===l[1]?"max":(+t).toFixed(Math.min(s,20))}var o,a,r=this.option,s=r.precision,l=this.dataBound,u=r.formatter;return i=i||["<",">"],y(t)&&(t=t.slice(),o=!0),a=e?t:o?[n(t[0]),n(t[1])]:n(t),_(u)?u.replace("{value}",o?a[0]:a).replace("{value2}",o?a[1]:a):x(u)?o?u(t[0],t[1]):u(t):o?t[0]===l[0]?i[0]+" "+a[1]:t[1]===l[1]?i[1]+" "+a[0]:a[0]+" - "+a[1]:a},resetExtent:function(){var t=this.option,e=AO([t.min,t.max]);this._dataExtent=e},getDataDimension:function(t){var e=this.option.dimension,i=t.dimensions;if(null!=e||i.length){if(null!=e)return t.getDimension(e);for(var n=t.dimensions,o=n.length-1;o>=0;o--){var a=n[o];if(!t.getDimensionInfo(a).isCalculationCoord)return a}}},getExtent:function(){return this._dataExtent.slice()},completeVisualOption:function(){function t(t){IO(o.color)&&!t.inRange&&(t.inRange={color:o.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")},TO(this.stateList,function(e){var i=t[e];if(_(i)){var n=wO.get(i,"active",l);n?(t[e]={},t[e][i]=n):delete t[e]}},this)}var e=this.ecModel,o=this.option,a={inRange:o.inRange,outOfRange:o.outOfRange},r=o.target||(o.target={}),s=o.controller||(o.controller={});n(r,a),n(s,a);var l=this.isCategory();t.call(this,r),t.call(this,s),function(t,e,i){var n=t[e],o=t[i];n&&!o&&(o=t[i]={},TO(n,function(t,e){if(hL.isValidType(e)){var i=wO.get(e,"inactive",l);null!=i&&(o[e]=i,"color"!==e||o.hasOwnProperty("opacity")||o.hasOwnProperty("colorAlpha")||(o.opacity=[0,0]))}}))}.call(this,r,"inRange","outOfRange"),function(t){var e=(t.inRange||{}).symbol||(t.outOfRange||{}).symbol,n=(t.inRange||{}).symbolSize||(t.outOfRange||{}).symbolSize,o=this.get("inactiveColor");TO(this.stateList,function(a){var r=this.itemSize,s=t[a];s||(s=t[a]={color:l?o:[o]}),null==s.symbol&&(s.symbol=e&&i(e)||(l?"roundRect":["roundRect"])),null==s.symbolSize&&(s.symbolSize=n&&i(n)||(l?r[0]:[r[0],r[0]])),s.symbol=SO(s.symbol,function(t){return"none"===t||"square"===t?"roundRect":t});var u=s.symbolSize;if(null!=u){var h=-1/0;MO(u,function(t){t>h&&(h=t)}),s.symbolSize=SO(u,function(t){return DO(t,[0,h],[0,r[0]],!0)})}},this)}.call(this,s)},resetItemSize:function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},isCategory:function(){return!!this.option.categories},setSelected:CO,getValueState:CO,getVisualMeta:CO}),kO=[20,140],PO=LO.extend({type:"visualMap.continuous",defaultOption:{align:"auto",calculable:!1,range:null,realtime:!0,itemHeight:null,itemWidth:null,hoverLink:!0,hoverLinkDataSize:null,hoverLinkOnHandle:null},optionUpdated:function(t,e){PO.superApply(this,"optionUpdated",arguments),this.resetExtent(),this.resetVisual(function(t){t.mappingMethod="linear",t.dataExtent=this.getExtent()}),this._resetRange()},resetItemSize:function(){PO.superApply(this,"resetItemSize",arguments);var t=this.itemSize;"horizontal"===this._orient&&t.reverse(),(null==t[0]||isNaN(t[0]))&&(t[0]=kO[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=kO[1])},_resetRange:function(){var t=this.getExtent(),e=this.option.range;!e||e.auto?(t.auto=1,this.option.range=t):y(e)&&(e[0]>e[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},completeVisualOption:function(){LO.prototype.completeVisualOption.apply(this,arguments),d(this.stateList,function(t){var e=this.option.controller[t].symbolSize;e&&e[0]!==e[1]&&(e[0]=0)},this)},setSelected:function(t){this.option.range=t.slice(),this._resetRange()},getSelected:function(){var t=this.getExtent(),e=Fo((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=i[1]||t<=e[1])?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){t[0]<=e&&e<=t[1]&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getVisualMeta:function(t){function e(e,i){o.push({value:e,color:t(e,i)})}for(var i=Qy(0,0,this.getExtent()),n=Qy(0,0,this.option.range.slice()),o=[],a=0,r=0,s=n.length,l=i.length;rt[1])break;i.push({color:this.getControllerVisual(a,"color",e),offset:o/100})}return i.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),i},_createBarPoints:function(t,e){var i=this.visualMapModel.itemSize;return[[i[0]-e[0],t[0]],[i[0],t[0]],[i[0],t[1]],[i[0]-e[1],t[1]]]},_createBarGroup:function(t){var e=this._orient,i=this.visualMapModel.get("inverse");return new tb("horizontal"!==e||i?"horizontal"===e&&i?{scale:"bottom"===t?[-1,1]:[1,1],rotation:-Math.PI/2}:"vertical"!==e||i?{scale:"left"===t?[1,1]:[-1,1]}:{scale:"left"===t?[1,-1]:[-1,-1]}:{scale:"bottom"===t?[1,1]:[-1,1],rotation:Math.PI/2})},_updateHandle:function(t,e){if(this._useHandle){var i=this._shapes,n=this.visualMapModel,o=i.handleThumbs,a=i.handleLabels;EO([0,1],function(r){var s=o[r];s.setStyle("fill",e.handlesColor[r]),s.position[1]=t[r];var l=Do(i.handleLabelPoints[r],Ao(s,this.group));a[r].setStyle({x:l[0],y:l[1],text:n.formatValueText(this._dataInterval[r]),textVerticalAlign:"middle",textAlign:this._applyTransform("horizontal"===this._orient?0===r?"bottom":"top":"left",i.barGroup)})},this)}},_showIndicator:function(t,e,i,n){var o=this.visualMapModel,a=o.getExtent(),r=o.itemSize,s=[0,r[1]],l=OO(t,a,s,!0),u=this._shapes,h=u.indicator;if(h){h.position[1]=l,h.attr("invisible",!1),h.setShape("points",ox(!!i,n,l,r[1]));var c={convertOpacityToAlpha:!0},d=this.getControllerVisual(t,"color",c);h.setStyle("fill",d);var f=Do(u.indicatorLabelPoint,Ao(h,this.group)),p=u.indicatorLabel;p.attr("invisible",!1);var g=this._applyTransform("left",u.barGroup),m=this._orient;p.setStyle({text:(i||"")+o.formatValueText(e),textVerticalAlign:"horizontal"===m?g:"middle",textAlign:"horizontal"===m?"center":g,x:f[0],y:f[1]})}},_enableHoverLinkToSeries:function(){var t=this;this._shapes.barGroup.on("mousemove",function(e){if(t._hovering=!0,!t._dragging){var i=t.visualMapModel.itemSize,n=t._applyTransform([e.offsetX,e.offsetY],t._shapes.barGroup,!0,!0);n[1]=RO(zO(0,n[1]),i[1]),t._doHoverLinkToSeries(n[1],0<=n[0]&&n[0]<=i[0])}}).on("mouseout",function(){t._hovering=!1,!t._dragging&&t._clearHoverLinkToSeries()})},_enableHoverLinkFromSeries:function(){var t=this.api.getZr();this.visualMapModel.option.hoverLink?(t.on("mouseover",this._hoverLinkFromSeriesMouseOver,this),t.on("mouseout",this._hideIndicator,this)):this._clearHoverLinkFromSeries()},_doHoverLinkToSeries:function(t,e){var i=this.visualMapModel,n=i.itemSize;if(i.option.hoverLink){var o=[0,n[1]],a=i.getExtent();t=RO(zO(o[0],t),o[1]);var r=ax(i,a,o),s=[t-r,t+r],l=OO(t,o,a,!0),u=[OO(s[0],o,a,!0),OO(s[1],o,a,!0)];s[0]o[1]&&(u[1]=1/0),e&&(u[0]===-1/0?this._showIndicator(l,u[1],"< ",r):u[1]===1/0?this._showIndicator(l,u[0],"> ",r):this._showIndicator(l,l,"≈ ",r));var h=this._hoverLinkDataIndices,c=[];(e||rx(i))&&(c=this._hoverLinkDataIndices=i.findTargetDataIndices(u));var d=Ri(h,c);this._dispatchHighDown("downplay",ex(d[0])),this._dispatchHighDown("highlight",ex(d[1]))}},_hoverLinkFromSeriesMouseOver:function(t){var e=t.target,i=this.visualMapModel;if(e&&null!=e.dataIndex){var n=this.ecModel.getSeriesByIndex(e.seriesIndex);if(i.isTargetSeries(n)){var o=n.getData(e.dataType),a=o.get(i.getDataDimension(o),e.dataIndex,!0);isNaN(a)||this._showIndicator(a,a)}}},_hideIndicator:function(){var t=this._shapes;t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0)},_clearHoverLinkToSeries:function(){this._hideIndicator();var t=this._hoverLinkDataIndices;this._dispatchHighDown("downplay",ex(t)),t.length=0},_clearHoverLinkFromSeries:function(){this._hideIndicator();var t=this.api.getZr();t.off("mouseover",this._hoverLinkFromSeriesMouseOver),t.off("mouseout",this._hideIndicator)},_applyTransform:function(t,e,i,n){var o=Ao(e,n?null:this.group);return zM[y(t)?"applyTransform":"transformDirection"](t,o,i)},_dispatchHighDown:function(t,e){e&&e.length&&this.api.dispatchAction({type:t,batch:e})},dispose:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()},remove:function(){this._clearHoverLinkFromSeries(),this._clearHoverLinkToSeries()}});Es({type:"selectDataRange",event:"dataRangeSelected",update:"update"},function(t,e){e.eachComponent({mainType:"visualMap",query:t},function(e){e.setSelected(t.selected)})}),Ns(xO);var FO=LO.extend({type:"visualMap.piecewise",defaultOption:{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieceList:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0,showLabel:null},optionUpdated:function(t,e){FO.superApply(this,"optionUpdated",arguments),this._pieceList=[],this.resetExtent();var n=this._mode=this._determineMode();WO[this._mode].call(this),this._resetSelected(t,e);var o=this.option.categories;this.resetVisual(function(t,e){"categories"===n?(t.mappingMethod="category",t.categories=i(o)):(t.dataExtent=this.getExtent(),t.mappingMethod="piecewise",t.pieceList=f(this._pieceList,function(t){var t=i(t);return"inRange"!==e&&(t.visual=null),t}))})},completeVisualOption:function(){function t(t,e,i){return t&&t[e]&&(w(t[e])?t[e].hasOwnProperty(i):t[e]===i)}var e=this.option,i={},n=hL.listVisualTypes(),o=this.isCategory();d(e.pieces,function(t){d(n,function(e){t.hasOwnProperty(e)&&(i[e]=1)})}),d(i,function(i,n){var a=0;d(this.stateList,function(i){a|=t(e,i,n)||t(e.target,i,n)},this),!a&&d(this.stateList,function(t){(e[t]||(e[t]={}))[n]=wO.get(n,"inRange"===t?"active":"inactive",o)})},this),LO.prototype.completeVisualOption.apply(this,arguments)},_resetSelected:function(t,e){var i=this.option,n=this._pieceList,o=(e?i:t).selected||{};if(i.selected=o,d(n,function(t,e){var i=this.getSelectedMapKey(t);o.hasOwnProperty(i)||(o[i]=!0)},this),"single"===i.selectedMode){var a=!1;d(n,function(t,e){var i=this.getSelectedMapKey(t);o[i]&&(a?o[i]=!1:a=!0)},this)}},getSelectedMapKey:function(t){return"categories"===this._mode?t.value+"":t.index+""},getPieceList:function(){return this._pieceList},_determineMode:function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},setSelected:function(t){this.option.selected=i(t)},getValueState:function(t){var e=hL.findPieceIndex(t,this._pieceList);return null!=e&&this.option.selected[this.getSelectedMapKey(this._pieceList[e])]?"inRange":"outOfRange"},findTargetDataIndices:function(t){var e=[];return this.eachTargetSeries(function(i){var n=[],o=i.getData();o.each(this.getDataDimension(o),function(e,i){hL.findPieceIndex(e,this._pieceList)===t&&n.push(i)},this),e.push({seriesId:i.id,dataIndex:n})},this),e},getRepresentValue:function(t){var e;if(this.isCategory())e=t.value;else if(null!=t.value)e=t.value;else{var i=t.interval||[];e=i[0]===-1/0&&i[1]===1/0?0:(i[0]+i[1])/2}return e},getVisualMeta:function(t){function e(e,a){var r=o.getRepresentValue({interval:e});a||(a=o.getValueState(r));var s=t(r,a);e[0]===-1/0?n[0]=s:e[1]===1/0?n[1]=s:i.push({value:e[0],color:s},{value:e[1],color:s})}if(!this.isCategory()){var i=[],n=[],o=this,a=this._pieceList.slice();if(a.length){var r=a[0].interval[0];r!==-1/0&&a.unshift({interval:[-1/0,r]}),(r=a[a.length-1].interval[1])!==1/0&&a.push({interval:[r,1/0]})}else a.push({interval:[-1/0,1/0]});var s=-1/0;return d(a,function(t){var i=t.interval;i&&(i[0]>s&&e([s,i[0]],"outOfRange"),e(i.slice()),s=i[1])},this),{stops:i,outerColors:n}}}}),WO={splitNumber:function(){var t=this.option,e=this._pieceList,i=Math.min(t.precision,20),n=this.getExtent(),o=t.splitNumber;o=Math.max(parseInt(o,10),1),t.splitNumber=o;for(var a=(n[1]-n[0])/o;+a.toFixed(i)!==a&&i<5;)i++;t.precision=i,a=+a.toFixed(i);var r=0;t.minOpen&&e.push({index:r++,interval:[-1/0,n[0]],close:[0,0]});for(var s=n[0],l=r+o;r","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,i)},this)}};NO.extend({type:"visualMap.piecewise",doRender:function(){var t=this.group;t.removeAll();var e=this.visualMapModel,i=e.get("textGap"),n=e.textStyleModel,o=n.getFont(),a=n.getTextColor(),r=this._getItemAlign(),s=e.itemSize,l=this._getViewData(),u=l.endsText,h=T(e.get("showLabel",!0),!u);u&&this._renderEndsText(t,u[0],s,h,r),d(l.viewPieceList,function(n){var l=n.piece,u=new tb;u.onclick=m(this._onItemClick,this,l),this._enableHoverLink(u,n.indexInModelPieceList);var c=e.getRepresentValue(l);if(this._createItemSymbol(u,c,[0,0,s[0],s[1]]),h){var d=this.visualMapModel.getValueState(c);u.add(new rM({style:{x:"right"===r?-i:s[0]+i,y:s[1]/2,text:l.text,textVerticalAlign:"middle",textAlign:r,textFont:o,textFill:a,opacity:"outOfRange"===d?.5:1}}))}t.add(u)},this),u&&this._renderEndsText(t,u[1],s,h,r),aI(e.get("orient"),t,e.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},_enableHoverLink:function(t,e){function i(t){var i=this.visualMapModel;i.option.hoverLink&&this.api.dispatchAction({type:t,batch:ex(i.findTargetDataIndices(e))})}t.on("mouseover",m(i,this,"highlight")).on("mouseout",m(i,this,"downplay"))},_getItemAlign:function(){var t=this.visualMapModel,e=t.option;if("vertical"===e.orient)return tx(t,this.api,t.itemSize);var i=e.align;return i&&"auto"!==i||(i="left"),i},_renderEndsText:function(t,e,i,n,o){if(e){var a=new tb,r=this.visualMapModel.textStyleModel;a.add(new rM({style:{x:n?"right"===o?i[0]:0:i[0]/2,y:i[1]/2,textVerticalAlign:"middle",textAlign:n?o:"center",text:e,textFont:r.getFont(),textFill:r.getTextColor()}})),t.add(a)}},_getViewData:function(){var t=this.visualMapModel,e=f(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),i=t.get("text"),n=t.get("orient"),o=t.get("inverse");return("horizontal"===n?o:!o)?e.reverse():i&&(i=i.slice().reverse()),{viewPieceList:e,endsText:i}},_createItemSymbol:function(t,e,i){t.add(Jl(this.getControllerVisual(e,"symbol"),i[0],i[1],i[2],i[3],this.getControllerVisual(e,"color")))},_onItemClick:function(t){var e=this.visualMapModel,n=e.option,o=i(n.selected),a=e.getSelectedMapKey(t);"single"===n.selectedMode?(o[a]=!0,d(o,function(t,e){o[e]=e===a})):o[a]=!o[a],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:o})}});Ns(xO);var HO=ta,ZO=ia,UO=Fs({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,i,n){this.mergeDefaultAndTheme(t,i),this.mergeOption(t,i,n.createdBySelf,!0)},isAnimationEnabled:function(){if(U_.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e,i,n){var o=this.constructor,r=this.mainType+"Model";i||e.eachSeries(function(t){var i=t.get(this.mainType,!0),s=t[r];i&&i.data?(s?s.mergeOption(i,e,!0):(n&&ux(i),d(i.data,function(t){t instanceof Array?(ux(t[0]),ux(t[1])):ux(t)}),a(s=new o(i,this,e),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),s.__hostSeries=t),t[r]=s):t[r]=null},this)},formatTooltip:function(t){var e=this.getData(),i=this.getRawValue(t),n=y(i)?f(i,HO).join(", "):HO(i),o=e.getName(t),a=ZO(this.name);return(null!=i||o)&&(a+="
"),o&&(a+=ZO(o),null!=i&&(a+=" : ")),null!=i&&(a+=ZO(n)),a},getData:function(){return this._data},setData:function(t){this._data=t}});h(UO,ZI),UO.extend({type:"markPoint",defaultOption:{zlevel:0,z:5,symbol:"pin",symbolSize:50,tooltip:{trigger:"item"},label:{show:!0,position:"inside"},itemStyle:{borderWidth:2},emphasis:{label:{show:!0}}}});var XO=l,jO=v,YO={min:jO(dx,"min"),max:jO(dx,"max"),average:jO(dx,"average")},qO=Ws({type:"marker",init:function(){this.markerGroupMap=R()},render:function(t,e,i){var n=this.markerGroupMap;n.each(function(t){t.__keep=!1});var o=this.type+"Model";e.eachSeries(function(t){var n=t[o];n&&this.renderSeries(t,n,e,i)},this),n.each(function(t){!t.__keep&&this.group.remove(t.group)},this)},renderSeries:function(){}});qO.extend({type:"markPoint",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markPointModel;e&&(xx(e.getData(),t,i),this.markerGroupMap.get(t.id).updateLayout(e))},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,r=t.getData(),s=this.markerGroupMap,l=s.get(a)||s.set(a,new Du),u=_x(o,t,e);e.setData(u),xx(e.getData(),t,n),u.each(function(t){var i=u.getItemModel(t),n=i.getShallow("symbolSize");"function"==typeof n&&(n=n(e.getRawValue(t),e.getDataParams(t))),u.setItemVisual(t,{symbolSize:n,color:i.get("itemStyle.color")||r.getVisual("color"),symbol:i.getShallow("symbol")})}),l.updateData(u),this.group.add(l.group),u.eachItemGraphicEl(function(t){t.traverse(function(t){t.dataModel=e})}),l.__keep=!0,l.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markPoint=t.markPoint||{}}),UO.extend({type:"markLine",defaultOption:{zlevel:0,z:5,symbol:["circle","arrow"],symbolSize:[8,16],precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end"},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"}});var KO=function(t,e,o,r){var s=t.getData(),l=r.type;if(!y(r)&&("min"===l||"max"===l||"average"===l||"median"===l||null!=r.xAxis||null!=r.yAxis)){var u,h;if(null!=r.yAxis||null!=r.xAxis)u=null!=r.yAxis?"y":"x",e.getAxis(u),h=T(r.yAxis,r.xAxis);else{var c=px(r,s,e,t);u=c.valueDataDim,c.valueAxis,h=yx(s,u,l)}var d="x"===u?0:1,f=1-d,p=i(r),g={};p.type=null,p.coord=[],g.coord=[],p.coord[f]=-1/0,g.coord[f]=1/0;var m=o.get("precision");m>=0&&"number"==typeof h&&(h=+h.toFixed(Math.min(m,20))),p.coord[d]=g.coord[d]=h,r=[p,g,{type:l,valueIndex:r.valueIndex,value:h}]}return r=[fx(t,r[0]),fx(t,r[1]),a({},r[2])],r[2].type=r[2].type||"",n(r[2],r[0]),n(r[2],r[1]),r};qO.extend({type:"markLine",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markLineModel;if(e){var n=e.getData(),o=e.__from,a=e.__to;o.each(function(e){Ix(o,e,!0,t,i),Ix(a,e,!1,t,i)}),n.each(function(t){n.setItemLayout(t,[o.getItemLayout(t),a.getItemLayout(t)])}),this.markerGroupMap.get(t.id).updateLayout()}},this)},renderSeries:function(t,e,i,n){function o(e,i,o){var a=e.getItemModel(i);Ix(e,i,o,t,n),e.setItemVisual(i,{symbolSize:a.get("symbolSize")||g[o?0:1],symbol:a.get("symbol",!0)||p[o?0:1],color:a.get("itemStyle.color")||s.getVisual("color")})}var a=t.coordinateSystem,r=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(r)||l.set(r,new sf);this.group.add(u.group);var h=Tx(a,t,e),c=h.from,d=h.to,f=h.line;e.__from=c,e.__to=d,e.setData(f);var p=e.get("symbol"),g=e.get("symbolSize");y(p)||(p=[p,p]),"number"==typeof g&&(g=[g,g]),h.from.each(function(t){o(c,t,!0),o(d,t,!1)}),f.each(function(t){var e=f.getItemModel(t).get("lineStyle.color");f.setItemVisual(t,{color:e||c.getItemVisual(t,"color")}),f.setItemLayout(t,[c.getItemLayout(t),d.getItemLayout(t)]),f.setItemVisual(t,{fromSymbolSize:c.getItemVisual(t,"symbolSize"),fromSymbol:c.getItemVisual(t,"symbol"),toSymbolSize:d.getItemVisual(t,"symbolSize"),toSymbol:d.getItemVisual(t,"symbol")})}),u.updateData(f),h.line.eachItemGraphicEl(function(t,i){t.traverse(function(t){t.dataModel=e})}),u.__keep=!0,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markLine=t.markLine||{}}),UO.extend({type:"markArea",defaultOption:{zlevel:0,z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}}});var $O=function(t,e,i,n){var a=fx(t,n[0]),r=fx(t,n[1]),s=T,l=a.coord,u=r.coord;l[0]=s(l[0],-1/0),l[1]=s(l[1],-1/0),u[0]=s(u[0],1/0),u[1]=s(u[1],1/0);var h=o([{},a,r]);return h.coord=[a.coord,r.coord],h.x0=a.x,h.y0=a.y,h.x1=r.x,h.y1=r.y,h},JO=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]];qO.extend({type:"markArea",updateTransform:function(t,e,i){e.eachSeries(function(t){var e=t.markAreaModel;if(e){var n=e.getData();n.each(function(e){var o=f(JO,function(o){return Lx(n,e,o,t,i)});n.setItemLayout(e,o),n.getItemGraphicEl(e).setShape("points",o)})}},this)},renderSeries:function(t,e,i,n){var o=t.coordinateSystem,a=t.id,s=t.getData(),l=this.markerGroupMap,u=l.get(a)||l.set(a,{group:new tb});this.group.add(u.group),u.__keep=!0;var h=kx(o,t,e);e.setData(h),h.each(function(e){h.setItemLayout(e,f(JO,function(i){return Lx(h,e,i,t,n)})),h.setItemVisual(e,{color:s.getVisual("color")})}),h.diff(u.__data).add(function(t){var e=new pM({shape:{points:h.getItemLayout(t)}});h.setItemGraphicEl(t,e),u.group.add(e)}).update(function(t,i){var n=u.__data.getItemGraphicEl(i);Io(n,{shape:{points:h.getItemLayout(t)}},e,t),u.group.add(n),h.setItemGraphicEl(t,n)}).remove(function(t){var e=u.__data.getItemGraphicEl(t);u.group.remove(e)}).execute(),h.eachItemGraphicEl(function(t,i){var n=h.getItemModel(i),o=n.getModel("label"),a=n.getModel("emphasis.label"),s=h.getItemVisual(i,"color");t.useStyle(r(n.getModel("itemStyle").getItemStyle(),{fill:Yt(s,.4),stroke:s})),t.hoverStyle=n.getModel("emphasis.itemStyle").getItemStyle(),go(t.style,t.hoverStyle,o,a,{labelFetcher:e,labelDataIndex:i,defaultText:h.getName(i)||"",isRectText:!0,autoColor:s}),fo(t,{}),t.dataModel=e}),u.__data=h,u.group.silent=e.get("silent")||t.get("silent")}}),Ns(function(t){t.markArea=t.markArea||{}});lI.registerSubTypeDefaulter("timeline",function(){return"slider"}),Es({type:"timelineChange",event:"timelineChanged",update:"prepareAndUpdate"},function(t,e){var i=e.getComponent("timeline");return i&&null!=t.currentIndex&&(i.setCurrentIndex(t.currentIndex),!i.get("loop",!0)&&i.isIndexMax()&&i.setPlayState(!1)),e.resetOption("timeline"),r({currentIndex:i.option.currentIndex},t)}),Es({type:"timelinePlayChange",event:"timelinePlayChanged",update:"update"},function(t,e){var i=e.getComponent("timeline");i&&null!=t.playState&&i.setPlayState(t.playState)});var QO=lI.extend({type:"timeline",layoutMode:"box",defaultOption:{zlevel:0,z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},init:function(t,e,i){this._data,this._names,this.mergeDefaultAndTheme(t,i),this._initData()},mergeOption:function(t){QO.superApply(this,"mergeOption",arguments),this._initData()},setCurrentIndex:function(t){null==t&&(t=this.option.currentIndex);var e=this._data.count();this.option.loop?t=(t%e+e)%e:(t>=e&&(t=e-1),t<0&&(t=0)),this.option.currentIndex=t},getCurrentIndex:function(){return this.option.currentIndex},isIndexMax:function(){return this.getCurrentIndex()>=this._data.count()-1},setPlayState:function(t){this.option.autoPlay=!!t},getPlayState:function(){return!!this.option.autoPlay},_initData:function(){var t=this.option,e=t.data||[],n=t.axisType,o=this._names=[];if("category"===n){var a=[];d(e,function(t,e){var n,r=Li(t);w(t)?(n=i(t)).value=e:n=e,a.push(n),_(r)||null!=r&&!isNaN(r)||(r=""),o.push(r+"")}),e=a}var r={category:"ordinal",time:"time"}[n]||"number";(this._data=new vA([{name:"value",type:r}],this)).initData(e,o)},getData:function(){return this._data},getCategories:function(){if("category"===this.get("axisType"))return this._names.slice()}});h(QO.extend({type:"timeline.slider",defaultOption:{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"emptyCircle",symbolSize:10,lineStyle:{show:!0,width:2,color:"#304654"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#304654"},itemStyle:{color:"#304654",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:13,color:"#c23531",borderWidth:5,borderColor:"rgba(194,53,49, 0.5)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:22,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"path://M18.6,50.8l22.5-22.5c0.2-0.2,0.3-0.4,0.3-0.7c0-0.3-0.1-0.5-0.3-0.7L18.7,4.4c-0.1-0.1-0.2-0.3-0.2-0.5 c0-0.4,0.3-0.8,0.8-0.8c0.2,0,0.5,0.1,0.6,0.3l23.5,23.5l0,0c0.2,0.2,0.3,0.4,0.3,0.7c0,0.3-0.1,0.5-0.3,0.7l-0.1,0.1L19.7,52 c-0.1,0.1-0.3,0.2-0.5,0.2c-0.4,0-0.8-0.3-0.8-0.8C18.4,51.2,18.5,51,18.6,50.8z",prevIcon:"path://M43,52.8L20.4,30.3c-0.2-0.2-0.3-0.4-0.3-0.7c0-0.3,0.1-0.5,0.3-0.7L42.9,6.4c0.1-0.1,0.2-0.3,0.2-0.5 c0-0.4-0.3-0.8-0.8-0.8c-0.2,0-0.5,0.1-0.6,0.3L18.3,28.8l0,0c-0.2,0.2-0.3,0.4-0.3,0.7c0,0.3,0.1,0.5,0.3,0.7l0.1,0.1L41.9,54 c0.1,0.1,0.3,0.2,0.5,0.2c0.4,0,0.8-0.3,0.8-0.8C43.2,53.2,43.1,53,43,52.8z",color:"#304654",borderColor:"#304654",borderWidth:1},emphasis:{label:{show:!0,color:"#c23531"},itemStyle:{color:"#c23531"},controlStyle:{color:"#c23531",borderColor:"#c23531",borderWidth:2}},data:[]}}),ZI);var tE=qI.extend({type:"timeline"}),eE=function(t,e,i,n){aD.call(this,t,e,i),this.type=n||"value",this.model=null};eE.prototype={constructor:eE,getLabelModel:function(){return this.model.getModel("label")},isHorizontal:function(){return"horizontal"===this.model.get("orient")}},u(eE,aD);var iE=m,nE=d,oE=Math.PI;tE.extend({type:"timeline.slider",init:function(t,e){this.api=e,this._axis,this._viewRect,this._timer,this._currentPointer,this._mainGroup,this._labelGroup},render:function(t,e,i,n){if(this.model=t,this.api=i,this.ecModel=e,this.group.removeAll(),t.get("show",!0)){var o=this._layout(t,i),a=this._createGroup("mainGroup"),r=this._createGroup("labelGroup"),s=this._axis=this._createAxis(o,t);t.formatTooltip=function(t){return ia(s.scale.getLabel(t))},nE(["AxisLine","AxisTick","Control","CurrentPointer"],function(e){this["_render"+e](o,a,s,t)},this),this._renderAxisLabel(o,r,s,t),this._position(o,t)}this._doPlayStop()},remove:function(){this._clearTimer(),this.group.removeAll()},dispose:function(){this._clearTimer()},_layout:function(t,e){var i=t.get("label.position"),n=t.get("orient"),o=Ex(t,e);null==i||"auto"===i?i="horizontal"===n?o.y+o.height/2=0||"+"===i?"left":"right"},r={horizontal:i>=0||"+"===i?"top":"bottom",vertical:"middle"},s={horizontal:0,vertical:oE/2},l="vertical"===n?o.height:o.width,u=t.getModel("controlStyle"),h=u.get("show",!0),c=h?u.get("itemSize"):0,d=h?u.get("itemGap"):0,f=c+d,p=t.get("label.rotate")||0;p=p*oE/180;var g,m,v,y,x=u.get("position",!0),_=h&&u.get("showPlayBtn",!0),w=h&&u.get("showPrevBtn",!0),b=h&&u.get("showNextBtn",!0),S=0,M=l;return"left"===x||"bottom"===x?(_&&(g=[0,0],S+=f),w&&(m=[S,0],S+=f),b&&(v=[M-c,0],M-=f)):(_&&(g=[M-c,0],M-=f),w&&(m=[0,0],S+=f),b&&(v=[M-c,0],M-=f)),y=[S,M],t.get("inverse")&&y.reverse(),{viewRect:o,mainLength:l,orient:n,rotation:s[n],labelRotation:p,labelPosOpt:i,labelAlign:t.get("label.align")||a[n],labelBaseline:t.get("label.verticalAlign")||t.get("label.baseline")||r[n],playPosition:g,prevBtnPosition:m,nextBtnPosition:v,axisExtent:y,controlSize:c,controlGap:d}},_position:function(t,e){function i(t){var e=t.position;t.origin=[c[0][0]-e[0],c[1][0]-e[1]]}function n(t){return[[t.x,t.x+t.width],[t.y,t.y+t.height]]}function o(t,e,i,n,o){t[n]+=i[n][o]-e[n][o]}var a=this._mainGroup,r=this._labelGroup,s=t.viewRect;if("vertical"===t.orient){var l=xt(),u=s.x,h=s.y+s.height;St(l,l,[-u,-h]),Mt(l,l,-oE/2),St(l,l,[u,h]),(s=s.clone()).applyTransform(l)}var c=n(s),d=n(a.getBoundingRect()),f=n(r.getBoundingRect()),p=a.position,g=r.position;g[0]=p[0]=c[0][0];var m=t.labelPosOpt;if(isNaN(m))o(p,d,c,1,v="+"===m?0:1),o(g,f,c,1,1-v);else{var v=m>=0?0:1;o(p,d,c,1,v),g[1]=p[1]+m}a.attr("position",p),r.attr("position",g),a.rotation=r.rotation=t.rotation,i(a),i(r)},_createAxis:function(t,e){var i=e.getData(),n=e.get("axisType"),o=Hl(e,n);o.getTicks=function(){return i.mapArray(["value"],function(t){return t})};var a=i.getDataExtent("value");o.setExtent(a[0],a[1]),o.niceTicks();var r=new eE("value",o,t.axisExtent,n);return r.model=e,r},_createGroup:function(t){var e=this["_"+t]=new tb;return this.group.add(e),e},_renderAxisLine:function(t,e,i,n){var o=i.getExtent();n.get("lineStyle.show")&&e.add(new _M({shape:{x1:o[0],y1:0,x2:o[1],y2:0},style:a({lineCap:"round"},n.getModel("lineStyle").getLineStyle()),silent:!0,z2:1}))},_renderAxisTick:function(t,e,i,n){var o=n.getData(),a=i.scale.getTicks();nE(a,function(t){var a=i.dataToCoord(t),r=o.getItemModel(t),s=r.getModel("itemStyle"),l=r.getModel("emphasis.itemStyle"),u={position:[a,0],onclick:iE(this._changeTimeline,this,t)},h=zx(r,s,e,u);fo(h,l.getItemStyle()),r.get("tooltip")?(h.dataIndex=t,h.dataModel=n):h.dataIndex=h.dataModel=null},this)},_renderAxisLabel:function(t,e,i,n){if(i.getLabelModel().get("show")){var o=n.getData(),a=i.getViewLabels();nE(a,function(n){var a=n.tickValue,r=o.getItemModel(a),s=r.getModel("label"),l=r.getModel("emphasis.label"),u=i.dataToCoord(n.tickValue),h=new rM({position:[u,0],rotation:t.labelRotation-t.rotation,onclick:iE(this._changeTimeline,this,a),silent:!1});mo(h.style,s,{text:n.formattedLabel,textAlign:t.labelAlign,textVerticalAlign:t.labelBaseline}),e.add(h),fo(h,mo({},l))},this)}},_renderControl:function(t,e,i,n){function o(t,i,o,h){if(t){var c=Rx(n,i,u,{position:t,origin:[a/2,0],rotation:h?-r:0,rectHover:!0,style:s,onclick:o});e.add(c),fo(c,l)}}var a=t.controlSize,r=t.rotation,s=n.getModel("controlStyle").getItemStyle(),l=n.getModel("emphasis.controlStyle").getItemStyle(),u=[0,-a/2,a,a],h=n.getPlayState(),c=n.get("inverse",!0);o(t.nextBtnPosition,"controlStyle.nextIcon",iE(this._changeTimeline,this,c?"-":"+")),o(t.prevBtnPosition,"controlStyle.prevIcon",iE(this._changeTimeline,this,c?"+":"-")),o(t.playPosition,"controlStyle."+(h?"stopIcon":"playIcon"),iE(this._handlePlayClick,this,!h),!0)},_renderCurrentPointer:function(t,e,i,n){var o=n.getData(),a=n.getCurrentIndex(),r=o.getItemModel(a).getModel("checkpointStyle"),s=this,l={onCreate:function(t){t.draggable=!0,t.drift=iE(s._handlePointerDrag,s),t.ondragend=iE(s._handlePointerDragend,s),Bx(t,a,i,n,!0)},onUpdate:function(t){Bx(t,a,i,n)}};this._currentPointer=zx(r,r,this._mainGroup,{},this._currentPointer,l)},_handlePlayClick:function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},_handlePointerDrag:function(t,e,i){this._clearTimer(),this._pointerChangeTimeline([i.offsetX,i.offsetY])},_handlePointerDragend:function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},_pointerChangeTimeline:function(t,e){var i=this._toAxisCoord(t)[0],n=Fo(this._axis.getExtent().slice());i>n[1]&&(i=n[1]),ii.getHeight()&&(n.textPosition="top",l=!0);var u=l?-5-o.height:s+8;a+o.width/2>i.getWidth()?(n.textPosition=["100%",u],n.textAlign="right"):a-o.width/2<0&&(n.textPosition=[0,u],n.textAlign="left")}})}},updateView:function(t,e,i,n){d(this._features,function(t){t.updateView&&t.updateView(t.model,e,i,n)})},remove:function(t,e){d(this._features,function(i){i.remove&&i.remove(t,e)}),this.group.removeAll()},dispose:function(t,e){d(this._features,function(i){i.dispose&&i.dispose(t,e)})}});var rE=rT.toolbox.saveAsImage;Gx.defaultOption={show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:rE.title,type:"png",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:rE.lang.slice()},Gx.prototype.unusable=!U_.canvasSupported,Gx.prototype.onclick=function(t,e){var i=this.model,n=i.get("name")||t.get("title.0.text")||"echarts",o=document.createElement("a"),a=i.get("type",!0)||"png";o.download=n+"."+a,o.target="_blank";var r=e.getConnectedDataURL({type:a,backgroundColor:i.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",excludeComponents:i.get("excludeComponents"),pixelRatio:i.get("pixelRatio")});if(o.href=r,"function"!=typeof MouseEvent||U_.browser.ie||U_.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var s=atob(r.split(",")[1]),l=s.length,u=new Uint8Array(l);l--;)u[l]=s.charCodeAt(l);var h=new Blob([u]);window.navigator.msSaveOrOpenBlob(h,n+"."+a)}else{var c=i.get("lang"),d='';window.open().document.write(d)}else{var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});o.dispatchEvent(f)}},Ty("saveAsImage",Gx);var sE=rT.toolbox.magicType;Fx.defaultOption={show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z",tiled:"M2.3,2.2h22.8V25H2.3V2.2z M35,2.2h22.8V25H35V2.2zM2.3,35h22.8v22.8H2.3V35z M35,35h22.8v22.8H35V35z"},title:i(sE.title),option:{},seriesIndex:{}};var lE=Fx.prototype;lE.getIcons=function(){var t=this.model,e=t.get("icon"),i={};return d(t.get("type"),function(t){e[t]&&(i[t]=e[t])}),i};var uE={line:function(t,e,i,o){if("bar"===t)return n({id:e,type:"line",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.line")||{},!0)},bar:function(t,e,i,o){if("line"===t)return n({id:e,type:"bar",data:i.get("data"),stack:i.get("stack"),markPoint:i.get("markPoint"),markLine:i.get("markLine")},o.get("option.bar")||{},!0)},stack:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:"__ec_magicType_stack__"},o.get("option.stack")||{},!0)},tiled:function(t,e,i,o){if("line"===t||"bar"===t)return n({id:e,stack:""},o.get("option.tiled")||{},!0)}},hE=[["line","bar"],["stack","tiled"]];lE.onclick=function(t,e,i){var n=this.model,o=n.get("seriesIndex."+i);if(uE[i]){var a={series:[]};d(hE,function(t){l(t,i)>=0&&d(t,function(t){n.setIconStatus(t,"normal")})}),n.setIconStatus(i,"emphasis"),t.eachComponent({mainType:"series",query:null==o?null:{seriesIndex:o}},function(e){var o=e.subType,s=e.id,l=uE[i](o,s,e,n);l&&(r(l,e.option),a.series.push(l));var u=e.coordinateSystem;if(u&&"cartesian2d"===u.type&&("line"===i||"bar"===i)){var h=u.getAxesByScale("ordinal")[0];if(h){var c=h.dim+"Axis",d=t.queryComponents({mainType:c,index:e.get(name+"Index"),id:e.get(name+"Id")})[0].componentIndex;a[c]=a[c]||[];for(var f=0;f<=d;f++)a[c][d]=a[c][d]||{};a[c][d].boundaryGap="bar"===i}}}),e.dispatchAction({type:"changeMagicType",currentType:i,newOption:a})}},Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Ty("magicType",Fx);var cE=rT.toolbox.dataView,dE=new Array(60).join("-"),fE="\t",pE=new RegExp("["+fE+"]+","g");$x.defaultOption={show:!0,readOnly:!1,optionToContent:null,contentToOption:null,icon:"M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",title:i(cE.title),lang:i(cE.lang),backgroundColor:"#fff",textColor:"#000",textareaColor:"#fff",textareaBorderColor:"#333",buttonColor:"#c23531",buttonTextColor:"#fff"},$x.prototype.onclick=function(t,e){function i(){n.removeChild(a),x._dom=null}var n=e.getDom(),o=this.model;this._dom&&n.removeChild(this._dom);var a=document.createElement("div");a.style.cssText="position:absolute;left:5px;top:5px;bottom:5px;right:5px;",a.style.backgroundColor=o.get("backgroundColor")||"#fff";var r=document.createElement("h4"),s=o.get("lang")||[];r.innerHTML=s[0]||o.get("title"),r.style.cssText="margin: 10px 20px;",r.style.color=o.get("textColor");var l=document.createElement("div"),u=document.createElement("textarea");l.style.cssText="display:block;width:100%;overflow:auto;";var h=o.get("optionToContent"),c=o.get("contentToOption"),d=Ux(t);if("function"==typeof h){var f=h(e.getOption());"string"==typeof f?l.innerHTML=f:M(f)&&l.appendChild(f)}else l.appendChild(u),u.readOnly=o.get("readOnly"),u.style.cssText="width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;",u.style.color=o.get("textColor"),u.style.borderColor=o.get("textareaBorderColor"),u.style.backgroundColor=o.get("textareaColor"),u.value=d.value;var p=d.meta,g=document.createElement("div");g.style.cssText="position:absolute;bottom:0;left:0;right:0;";var m="float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px",v=document.createElement("div"),y=document.createElement("div");m+=";background-color:"+o.get("buttonColor"),m+=";color:"+o.get("buttonTextColor");var x=this;ht(v,"click",i),ht(y,"click",function(){var t;try{t="function"==typeof c?c(l,e.getOption()):Kx(u.value,p)}catch(t){throw i(),new Error("Data view format error "+t)}t&&e.dispatchAction({type:"changeDataView",newOption:t}),i()}),v.innerHTML=s[1],y.innerHTML=s[2],y.style.cssText=m,v.style.cssText=m,!o.get("readOnly")&&g.appendChild(y),g.appendChild(v),ht(u,"keydown",function(t){if(9===(t.keyCode||t.which)){var e=this.value,i=this.selectionStart,n=this.selectionEnd;this.value=e.substring(0,i)+fE+e.substring(n),this.selectionStart=this.selectionEnd=i+1,mw(t)}}),a.appendChild(r),a.appendChild(l),a.appendChild(g),l.style.height=n.clientHeight-80+"px",n.appendChild(a),this._dom=a},$x.prototype.remove=function(t,e){this._dom&&e.getDom().removeChild(this._dom)},$x.prototype.dispose=function(t,e){this.remove(t,e)},Ty("dataView",$x),Es({type:"changeDataView",event:"dataViewChanged",update:"prepareAndUpdate"},function(t,e){var i=[];d(t.newOption.series,function(t){var n=e.getSeriesByName(t.name)[0];if(n){var o=n.get("data");i.push({name:t.name,data:Jx(t.data,o)})}else i.push(a({type:"scatter"},t))}),e.mergeOption(r({series:i},t.newOption))});var gE=d,mE="\0_ec_hist_store";iO.extend({type:"dataZoom.select"}),nO.extend({type:"dataZoom.select"});var vE=rT.toolbox.dataZoom,yE=d,xE="\0_ec_\0toolbox-dataZoom_";o_.defaultOption={show:!0,icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:i(vE.title)};var _E=o_.prototype;_E.render=function(t,e,i,n){this.model=t,this.ecModel=e,this.api=i,s_(t,e,this,n,i),r_(t,e)},_E.onclick=function(t,e,i){wE[i].call(this)},_E.remove=function(t,e){this._brushController.unmount()},_E.dispose=function(t,e){this._brushController.dispose()};var wE={zoom:function(){var t=!this._isZoomActive;this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:t})},back:function(){this._dispatchZoomAction(t_(this.ecModel))}};_E._onBrush=function(t,e){function i(t,e,i){var r=e.getAxis(t),s=r.model,l=n(t,s,a),u=l.findRepresentativeAxisProxy(s).getMinMaxSpan();null==u.minValueSpan&&null==u.maxValueSpan||(i=QL(0,i.slice(),r.scale.getExtent(),0,u.minValueSpan,u.maxValueSpan)),l&&(o[l.id]={dataZoomId:l.id,startValue:i[0],endValue:i[1]})}function n(t,e,i){var n;return i.eachComponent({mainType:"dataZoom",subType:"select"},function(i){i.getAxisModel(t,e.componentIndex)&&(n=i)}),n}if(e.isEnd&&t.length){var o={},a=this.ecModel;this._brushController.updateCovers([]),new hy(a_(this.model.option),a,{include:["grid"]}).matchOutputRanges(t,a,function(t,e,n){if("cartesian2d"===n.type){var o=t.brushType;"rect"===o?(i("x",n,e[0]),i("y",n,e[1])):i({lineX:"x",lineY:"y"}[o],n,e)}}),Qx(a,o),this._dispatchZoomAction(o)}},_E._dispatchZoomAction=function(t){var e=[];yE(t,function(t,n){e.push(i(t))}),e.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:e})},Ty("dataZoom",o_),Ns(function(t){function e(t,e){if(e){var o=t+"Index",a=e[o];null==a||"all"===a||y(a)||(a=!1===a||"none"===a?[]:[a]),i(t,function(e,i){if(null==a||"all"===a||-1!==l(a,i)){var r={type:"select",$fromToolbox:!0,id:xE+t+i};r[o]=i,n.push(r)}})}}function i(e,i){var n=t[e];y(n)||(n=n?[n]:[]),yE(n,i)}if(t){var n=t.dataZoom||(t.dataZoom=[]);y(n)||(t.dataZoom=n=[n]);var o=t.toolbox;if(o&&(y(o)&&(o=o[0]),o&&o.feature)){var a=o.feature.dataZoom;e("xAxis",a),e("yAxis",a)}}});var bE=rT.toolbox.restore;l_.defaultOption={show:!0,icon:"M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",title:bE.title},l_.prototype.onclick=function(t,e,i){e_(t),e.dispatchAction({type:"restore",from:this.uid})},Ty("restore",l_),Es({type:"restore",event:"restore",update:"prepareAndUpdate"},function(t,e){e.resetOption("recreate")});var SE,ME="urn:schemas-microsoft-com:vml",IE="undefined"==typeof window?null:window,TE=!1,AE=IE&&IE.document;if(AE&&!U_.canvasSupported)try{!AE.namespaces.zrvml&&AE.namespaces.add("zrvml",ME),SE=function(t){return AE.createElement("')}}catch(t){SE=function(t){return AE.createElement("<"+t+' xmlns="'+ME+'" class="zrvml">')}}var DE=ES.CMD,CE=Math.round,LE=Math.sqrt,kE=Math.abs,PE=Math.cos,NE=Math.sin,OE=Math.max;if(!U_.canvasSupported){var EE=21600,RE=EE/2,zE=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=EE+","+EE,t.coordorigin="0,0"},BE=function(t){return String(t).replace(/&/g,"&").replace(/"/g,""")},VE=function(t,e,i){return"rgb("+[t,e,i].join(",")+")"},GE=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},FE=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},WE=function(t,e,i){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+i},HE=function(t,e){return"string"==typeof t?t.lastIndexOf("%")>=0?parseFloat(t)/100*e:parseFloat(t):t},ZE=function(t,e,i){var n=Gt(e);i=+i,isNaN(i)&&(i=1),n&&(t.color=VE(n[0],n[1],n[2]),t.opacity=i*n[3])},UE=function(t){var e=Gt(t);return[VE(e[0],e[1],e[2]),e[3]]},XE=function(t,e,i){var n=e.fill;if(null!=n)if(n instanceof IM){var o,a=0,r=[0,0],s=0,l=1,u=i.getBoundingRect(),h=u.width,c=u.height;if("linear"===n.type){o="gradient";var d=i.transform,f=[n.x*h,n.y*c],p=[n.x2*h,n.y2*c];d&&(Q(f,f,d),Q(p,p,d));var g=p[0]-f[0],m=p[1]-f[1];(a=180*Math.atan2(g,m)/Math.PI)<0&&(a+=360),a<1e-6&&(a=0)}else{o="gradientradial";var f=[n.x*h,n.y*c],d=i.transform,v=i.scale,y=h,x=c;r=[(f[0]-u.x)/y,(f[1]-u.y)/x],d&&Q(f,f,d),y/=v[0]*EE,x/=v[1]*EE;var _=OE(y,x);s=0/_,l=2*n.r/_-s}var w=n.colorStops.slice();w.sort(function(t,e){return t.offset-e.offset});for(var b=w.length,S=[],M=[],I=0;I=2){var D=S[0][0],C=S[1][0],L=S[0][1]*e.opacity,k=S[1][1]*e.opacity;t.type=o,t.method="none",t.focus="100%",t.angle=a,t.color=D,t.color2=C,t.colors=M.join(","),t.opacity=k,t.opacity2=L}"radial"===o&&(t.focusposition=r.join(","))}else ZE(t,n,e.opacity)},jE=function(t,e){null!=e.lineDash&&(t.dashstyle=e.lineDash.join(" ")),null==e.stroke||e.stroke instanceof IM||ZE(t,e.stroke,e.opacity)},YE=function(t,e,i,n){var o="fill"===e,a=t.getElementsByTagName(e)[0];null!=i[e]&&"none"!==i[e]&&(o||!o&&i.lineWidth)?(t[o?"filled":"stroked"]="true",i[e]instanceof IM&&FE(t,a),a||(a=u_(e)),o?XE(a,i,n):jE(a,i),GE(t,a)):(t[o?"filled":"stroked"]="false",FE(t,a))},qE=[[],[],[]],KE=function(t,e){var i,n,o,a,r,s,l=DE.M,u=DE.C,h=DE.L,c=DE.A,d=DE.Q,f=[],p=t.data,g=t.len();for(a=0;a.01?N&&(O+=.0125):Math.abs(E-D)<1e-4?N&&OA?x-=.0125:x+=.0125:N&&ED?y+=.0125:y-=.0125),f.push(R,CE(((A-C)*M+b)*EE-RE),",",CE(((D-L)*I+S)*EE-RE),",",CE(((A+C)*M+b)*EE-RE),",",CE(((D+L)*I+S)*EE-RE),",",CE((O*M+b)*EE-RE),",",CE((E*I+S)*EE-RE),",",CE((y*M+b)*EE-RE),",",CE((x*I+S)*EE-RE)),r=y,s=x;break;case DE.R:var z=qE[0],B=qE[1];z[0]=p[a++],z[1]=p[a++],B[0]=z[0]+p[a++],B[1]=z[1]+p[a++],e&&(Q(z,z,e),Q(B,B,e)),z[0]=CE(z[0]*EE-RE),B[0]=CE(B[0]*EE-RE),z[1]=CE(z[1]*EE-RE),B[1]=CE(B[1]*EE-RE),f.push(" m ",z[0],",",z[1]," l ",B[0],",",z[1]," l ",B[0],",",B[1]," l ",z[0],",",B[1]);break;case DE.Z:f.push(" x ")}if(i>0){f.push(n);for(var V=0;V100&&(tR=0,QE={});var i,n=eR.style;try{n.font=t,i=n.fontFamily.split(",")[0]}catch(t){}e={style:n.fontStyle||"normal",variant:n.fontVariant||"normal",weight:n.fontWeight||"normal",size:0|parseFloat(n.fontSize||12),family:i||"Microsoft YaHei"},QE[t]=e,tR++}return e};!function(t,e){bb[t]=e}("measureText",function(t,e){var i=AE;JE||((JE=i.createElement("div")).style.cssText="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;",AE.body.appendChild(JE));try{JE.style.font=e}catch(t){}return JE.innerHTML="",JE.appendChild(i.createTextNode(t)),{width:JE.offsetWidth}});for(var nR=new de,oR=[Db,di,fi,Pn,rM],aR=0;aR=o&&u+1>=a){for(var h=[],c=0;c=o&&c+1>=a)return T_(0,s.components);l[i]=s}else l[i]=void 0}r++}();if(d)return d}},pushComponent:function(t,e,i){var n=t[t.length-1];n&&n.added===e&&n.removed===i?t[t.length-1]={count:n.count+1,added:e,removed:i}:t.push({count:1,added:e,removed:i})},extractCommon:function(t,e,i,n){for(var o=e.length,a=i.length,r=t.newPos,s=r-n,l=0;r+1=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},D_.prototype.update=function(t,e){if(t){var i=this.getDefs(!1);if(t[this._domName]&&i.contains(t[this._domName]))"function"==typeof e&&e(t);else{var n=this.add(t);n&&(t[this._domName]=n)}}},D_.prototype.addDom=function(t){this.getDefs(!0).appendChild(t)},D_.prototype.removeDom=function(t){var e=this.getDefs(!1);e&&t[this._domName]&&(e.removeChild(t[this._domName]),t[this._domName]=null)},D_.prototype.getDoms=function(){var t=this.getDefs(!1);if(!t)return[];var e=[];return d(this._tagNames,function(i){var n=t.getElementsByTagName(i);e=e.concat([].slice.call(n))}),e},D_.prototype.markAllUnused=function(){var t=this;d(this.getDoms(),function(e){e[t._markLabel]="0"})},D_.prototype.markUsed=function(t){t&&(t[this._markLabel]="1")},D_.prototype.removeUnused=function(){var t=this.getDefs(!1);if(t){var e=this;d(this.getDoms(),function(i){"1"!==i[e._markLabel]&&t.removeChild(i)})}},D_.prototype.getSvgProxy=function(t){return t instanceof Pn?yR:t instanceof fi?xR:t instanceof rM?_R:yR},D_.prototype.getTextSvgElement=function(t){return t.__textSvgEl},D_.prototype.getSvgElement=function(t){return t.__svgEl},u(C_,D_),C_.prototype.addWithoutUpdate=function(t,e){if(e&&e.style){var i=this;d(["fill","stroke"],function(n){if(e.style[n]&&("linear"===e.style[n].type||"radial"===e.style[n].type)){var o,a=e.style[n],r=i.getDefs(!0);a._dom?(o=a._dom,r.contains(a._dom)||i.addDom(o)):o=i.add(a),i.markUsed(e);var s=o.getAttribute("id");t.setAttribute(n,"url(#"+s+")")}})}},C_.prototype.add=function(t){var e;if("linear"===t.type)e=this.createElement("linearGradient");else{if("radial"!==t.type)return Yw("Illegal gradient type."),null;e=this.createElement("radialGradient")}return t.id=t.id||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-gradient-"+t.id),this.updateDom(t,e),this.addDom(e),e},C_.prototype.update=function(t){var e=this;D_.prototype.update.call(this,t,function(){var i=t.type,n=t._dom.tagName;"linear"===i&&"linearGradient"===n||"radial"===i&&"radialGradient"===n?e.updateDom(t,t._dom):(e.removeDom(t),e.add(t))})},C_.prototype.updateDom=function(t,e){if("linear"===t.type)e.setAttribute("x1",t.x),e.setAttribute("y1",t.y),e.setAttribute("x2",t.x2),e.setAttribute("y2",t.y2);else{if("radial"!==t.type)return void Yw("Illegal gradient type.");e.setAttribute("cx",t.x),e.setAttribute("cy",t.y),e.setAttribute("r",t.r)}t.global?e.setAttribute("gradientUnits","userSpaceOnUse"):e.setAttribute("gradientUnits","objectBoundingBox"),e.innerHTML="";for(var i=t.colorStops,n=0,o=i.length;n0){var n,o,a=this.getDefs(!0),r=e[0],s=i?"_textDom":"_dom";r[s]?(o=r[s].getAttribute("id"),n=r[s],a.contains(n)||a.appendChild(n)):(o="zr"+this._zrId+"-clip-"+this.nextId,++this.nextId,(n=this.createElement("clipPath")).setAttribute("id",o),a.appendChild(n),r[s]=n);var l=this.getSvgProxy(r);if(r.transform&&r.parent.invTransform&&!i){var u=Array.prototype.slice.call(r.transform);bt(r.transform,r.parent.invTransform,r.transform),l.brush(r),r.transform=u}else l.brush(r);var h=this.getSvgElement(r);n.innerHTML="",n.appendChild(h.cloneNode()),t.setAttribute("clip-path","url(#"+o+")"),e.length>1&&this.updateDom(n,e.slice(1),i)}else t&&t.setAttribute("clip-path","none")},L_.prototype.markUsed=function(t){var e=this;t.__clipPaths&&t.__clipPaths.length>0&&d(t.__clipPaths,function(t){t._dom&&D_.prototype.markUsed.call(e,t._dom),t._textDom&&D_.prototype.markUsed.call(e,t._textDom)})},u(k_,D_),k_.prototype.addWithoutUpdate=function(t,e){if(e&&P_(e.style)){var i,n=e.style;n._shadowDom?(i=n._shadowDom,this.getDefs(!0).contains(n._shadowDom)||this.addDom(i)):i=this.add(e),this.markUsed(e);var o=i.getAttribute("id");t.style.filter="url(#"+o+")"}},k_.prototype.add=function(t){var e=this.createElement("filter"),i=t.style;return i._shadowDomId=i._shadowDomId||this.nextId++,e.setAttribute("id","zr"+this._zrId+"-shadow-"+i._shadowDomId),this.updateDom(t,e),this.addDom(e),e},k_.prototype.update=function(t,e){var i=e.style;if(P_(i)){var n=this;D_.prototype.update.call(this,e,function(t){n.updateDom(e,t._shadowDom)})}else this.remove(t,i)},k_.prototype.remove=function(t,e){null!=e._shadowDomId&&(this.removeDom(e),t.style.filter="")},k_.prototype.updateDom=function(t,e){var i=e.getElementsByTagName("feDropShadow");i=0===i.length?this.createElement("feDropShadow"):i[0];var n,o,a,r,s=t.style,l=t.scale?t.scale[0]||1:1,u=t.scale?t.scale[1]||1:1;if(s.shadowBlur||s.shadowOffsetX||s.shadowOffsetY)n=s.shadowOffsetX||0,o=s.shadowOffsetY||0,a=s.shadowBlur,r=s.shadowColor;else{if(!s.textShadowBlur)return void this.removeDom(e,s);n=s.textShadowOffsetX||0,o=s.textShadowOffsetY||0,a=s.textShadowBlur,r=s.textShadowColor}i.setAttribute("dx",n/l),i.setAttribute("dy",o/u),i.setAttribute("flood-color",r);var h=a/2/l+" "+a/2/u;i.setAttribute("stdDeviation",h),e.setAttribute("x","-100%"),e.setAttribute("y","-100%"),e.setAttribute("width",Math.ceil(a/2*200)+"%"),e.setAttribute("height",Math.ceil(a/2*200)+"%"),e.appendChild(i),s._shadowDom=e},k_.prototype.markUsed=function(t){var e=t.style;e&&e._shadowDom&&D_.prototype.markUsed.call(this,e._shadowDom)};var IR=function(t,e,i,n){this.root=t,this.storage=e,this._opts=i=a({},i||{});var o=p_("svg");o.setAttribute("xmlns","http://www.w3.org/2000/svg"),o.setAttribute("version","1.1"),o.setAttribute("baseProfile","full"),o.style.cssText="user-select:none;position:absolute;left:0;top:0;",this.gradientManager=new C_(n,o),this.clipPathManager=new L_(n,o),this.shadowManager=new k_(n,o);var r=document.createElement("div");r.style.cssText="overflow:hidden;position:relative",this._svgRoot=o,this._viewport=r,t.appendChild(r),r.appendChild(o),this.resize(i.width,i.height),this._visibleList=[]};IR.prototype={constructor:IR,getType:function(){return"svg"},getViewportRoot:function(){return this._viewport},getViewportRootOffset:function(){var t=this.getViewportRoot();if(t)return{offsetLeft:t.offsetLeft||0,offsetTop:t.offsetTop||0}},refresh:function(){var t=this.storage.getDisplayList(!0);this._paintList(t)},setBackgroundColor:function(t){this._viewport.style.background=t},_paintList:function(t){this.gradientManager.markAllUnused(),this.clipPathManager.markAllUnused(),this.shadowManager.markAllUnused();var e,i=this._svgRoot,n=this._visibleList,o=t.length,a=[];for(e=0;e=0;--n)if(e[n]===t)return!0;return!1}),i):null:i[0]},resize:function(t,e){var i=this._viewport;i.style.display="none";var n=this._opts;if(null!=t&&(n.width=t),null!=e&&(n.height=e),t=this._getSize(0),e=this._getSize(1),i.style.display="",this._width!==t||this._height!==e){this._width=t,this._height=e;var o=i.style;o.width=t+"px",o.height=e+"px";var a=this._svgRoot;a.setAttribute("width",t),a.setAttribute("height",e)}},getWidth:function(){return this._width},getHeight:function(){return this._height},_getSize:function(t){var e=this._opts,i=["width","height"][t],n=["clientWidth","clientHeight"][t],o=["paddingLeft","paddingTop"][t],a=["paddingRight","paddingBottom"][t];if(null!=e[i]&&"auto"!==e[i])return parseFloat(e[i]);var r=this.root,s=document.defaultView.getComputedStyle(r);return(r[n]||N_(s[i])||N_(r.style[i]))-(N_(s[o])||0)-(N_(s[a])||0)|0},dispose:function(){this.root.innerHTML="",this._svgRoot=this._viewport=this.storage=null},clear:function(){this._viewport&&this.root.removeChild(this._viewport)},pathToDataUrl:function(){return this.refresh(),"data:image/svg+xml;charset=UTF-8,"+this._svgRoot.outerHTML}},d(["getLayer","insertLayer","eachLayer","eachBuiltinLayer","eachOtherLayer","getLayers","modLayer","delLayer","clearLayer","toDataURL","pathToImage"],function(t){IR.prototype[t]=F_(t)}),Ti("svg",IR),t.version="4.2.1",t.dependencies=ET,t.PRIORITY=VT,t.init=function(t,e,i){var n=ks(t);if(n)return n;var o=new us(t,e,i);return o.id="ec_"+iA++,tA[o.id]=o,Fi(t,oA,o.id),Cs(o),o},t.connect=function(t){if(y(t)){var e=t;t=null,kT(e,function(e){null!=e.group&&(t=e.group)}),t=t||"g_"+nA++,kT(e,function(e){e.group=t})}return eA[t]=!0,t},t.disConnect=Ls,t.disconnect=aA,t.dispose=function(t){"string"==typeof t?t=tA[t]:t instanceof us||(t=ks(t)),t instanceof us&&!t.isDisposed()&&t.dispose()},t.getInstanceByDom=ks,t.getInstanceById=function(t){return tA[t]},t.registerTheme=Ps,t.registerPreprocessor=Ns,t.registerProcessor=Os,t.registerPostUpdate=function(t){KT.push(t)},t.registerAction=Es,t.registerCoordinateSystem=Rs,t.getCoordinateSystemDimensions=function(t){var e=Fa.get(t);if(e)return e.getDimensionsInfo?e.getDimensionsInfo():e.dimensions.slice()},t.registerLayout=zs,t.registerVisual=Bs,t.registerLoading=Gs,t.extendComponentModel=Fs,t.extendComponentView=Ws,t.extendSeriesModel=Hs,t.extendChartView=Zs,t.setCanvasCreator=function(t){e("createCanvas",t)},t.registerMap=function(t,e,i){DT.registerMap(t,e,i)},t.getMap=function(t){var e=DT.retrieveMap(t);return e&&e[0]&&{geoJson:e[0].geoJSON,specialAreas:e[0].specialAreas}},t.dataTool=rA,t.zrender=Hb,t.number=YM,t.format=eI,t.throttle=Pr,t.helper=tD,t.matrix=Sw,t.vector=cw,t.color=Ww,t.parseGeoJSON=iD,t.parseGeoJson=rD,t.util=sD,t.graphic=lD,t.List=vA,t.Model=No,t.Axis=aD,t.env=U_}); \ No newline at end of file diff --git a/uni_modules/uni-badge/changelog.md b/uni_modules/uni-badge/changelog.md new file mode 100644 index 0000000..e352c60 --- /dev/null +++ b/uni_modules/uni-badge/changelog.md @@ -0,0 +1,33 @@ +## 1.2.2(2023-01-28) +- 修复 运行/打包 控制台警告问题 +## 1.2.1(2022-09-05) +- 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-badge](https://uniapp.dcloud.io/component/uniui/uni-badge) +## 1.1.7(2021-11-08) +- 优化 升级ui +- 修改 size 属性默认值调整为 small +- 修改 type 属性,默认值调整为 error,info 替换 default +## 1.1.6(2021-09-22) +- 修复 在字节小程序上样式不生效的 bug +## 1.1.5(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.4(2021-07-29) +- 修复 去掉 nvue 不支持css 的 align-self 属性,nvue 下不暂支持 absolute 属性 +## 1.1.3(2021-06-24) +- 优化 示例项目 +## 1.1.1(2021-05-12) +- 新增 组件示例地址 +## 1.1.0(2021-05-12) +- 新增 uni-badge 的 absolute 属性,支持定位 +- 新增 uni-badge 的 offset 属性,支持定位偏移 +- 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +## 1.0.7(2021-05-07) +- 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- 新增 uni-badge 属性 custom-style, 支持自定义样式 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue new file mode 100644 index 0000000..956354b --- /dev/null +++ b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/uni_modules/uni-badge/package.json b/uni_modules/uni-badge/package.json new file mode 100644 index 0000000..b0bac93 --- /dev/null +++ b/uni_modules/uni-badge/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-badge", + "displayName": "uni-badge 数字角标", + "version": "1.2.2", + "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。", + "keywords": [ + "", + "badge", + "uni-ui", + "uniui", + "数字角标", + "徽章" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-badge/readme.md b/uni_modules/uni-badge/readme.md new file mode 100644 index 0000000..bdf175d --- /dev/null +++ b/uni_modules/uni-badge/readme.md @@ -0,0 +1,10 @@ +## Badge 数字角标 +> **组件名:uni-badge** +> 代码块: `uBadge` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-breadcrumb/changelog.md b/uni_modules/uni-breadcrumb/changelog.md new file mode 100644 index 0000000..209e5c5 --- /dev/null +++ b/uni_modules/uni-breadcrumb/changelog.md @@ -0,0 +1,6 @@ +## 0.1.2(2022-06-08) +- 修复 微信小程序 separator 不显示的Bug +## 0.1.1(2022-06-02) +- 新增 支持 uni.scss 修改颜色 +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue new file mode 100644 index 0000000..b9edbd6 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue @@ -0,0 +1,121 @@ + + + diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue new file mode 100644 index 0000000..94493a2 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue @@ -0,0 +1,41 @@ + + + diff --git a/uni_modules/uni-breadcrumb/package.json b/uni_modules/uni-breadcrumb/package.json new file mode 100644 index 0000000..0a04e50 --- /dev/null +++ b/uni_modules/uni-breadcrumb/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-breadcrumb", + "displayName": "uni-breadcrumb 面包屑", + "version": "0.1.2", + "description": "Breadcrumb 面包屑", + "keywords": [ + "uni-breadcrumb", + "breadcrumb", + "uni-ui", + "面包屑导航", + "面包屑" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-breadcrumb/readme.md b/uni_modules/uni-breadcrumb/readme.md new file mode 100644 index 0000000..6976b8d --- /dev/null +++ b/uni_modules/uni-breadcrumb/readme.md @@ -0,0 +1,66 @@ + +## breadcrumb 面包屑导航 +> **组件名:uni-breadcrumb** +> 代码块: `ubreadcrumb` + +显示当前页面的路径,快速返回之前的任意页面。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + {{route.name}} + +``` + +```js +export default { + name: "uni-stat-breadcrumb", + data() { + return { + routes: [{ + to: '/A', + name: 'A页面' + }, { + to: '/B', + name: 'B页面' + }, { + to: '/C', + name: 'C页面' + }] + }; + } + } +``` + + +## API + +### Breadcrumb Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|separator |String |斜杠'/' |分隔符 | +|separatorClass |String | |图标分隔符 class | + +### Breadcrumb Item Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|to |String | |路由跳转页面路径 | +|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb) \ No newline at end of file diff --git a/uni_modules/uni-calendar/changelog.md b/uni_modules/uni-calendar/changelog.md new file mode 100644 index 0000000..f291eec --- /dev/null +++ b/uni_modules/uni-calendar/changelog.md @@ -0,0 +1,26 @@ +## 1.4.10(2023-04-10) +- 修复 某些情况 monthSwitch 未触发的Bug +## 1.4.9(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 1.4.8(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/161964) +## 1.4.7(2022-09-16) +- 优化 支持使用 uni-scss 控制主题色 +## 1.4.6(2022-09-08) +- 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件的Bug +## 1.4.5(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.4(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式的Bug +## 1.4.3(2021-09-22) +- 修复 startDate、 endDate 属性失效的Bug +## 1.4.2(2021-08-24) +- 新增 支持国际化 +## 1.4.1(2021-08-05) +- 修复 弹出层被 tabbar 遮盖的Bug +## 1.4.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.3.16(2021-05-12) +- 新增 组件示例地址 +## 1.3.15(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-calendar/components/uni-calendar/calendar.js b/uni_modules/uni-calendar/components/uni-calendar/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json new file mode 100644 index 0000000..fcbd13c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "ok", + "uni-calender.cancel": "cancel", + "uni-calender.today": "today", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json new file mode 100644 index 0000000..1ca43de --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "确定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json new file mode 100644 index 0000000..e0fe33b --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "確定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue new file mode 100644 index 0000000..a54135e --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue new file mode 100644 index 0000000..17c958d --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue @@ -0,0 +1,566 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/util.js b/uni_modules/uni-calendar/components/uni-calendar/util.js new file mode 100644 index 0000000..5ec8a92 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/util.js @@ -0,0 +1,360 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31 && AddDayCount>0) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + const preMonth = dd.getMonth() + dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期 + const nextMonth = dd.getMonth() + // 处理 pre 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount<0 && preMonth!==0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth+(nextMonth-preMonth+AddDayCount)) + } + // 处理 next 切换月份目标月份为2月没有当前日(30 31) 切换错误问题 + if(AddDayCount>0 && nextMonth-preMonth>AddDayCount){ + dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount)) + } + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), + afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !(disableBefore && disableAfter), + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + } + this._getWeek(fullDate) + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + year, + month + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-calendar/package.json b/uni_modules/uni-calendar/package.json new file mode 100644 index 0000000..fad841f --- /dev/null +++ b/uni_modules/uni-calendar/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-calendar", + "displayName": "uni-calendar 日历", + "version": "1.4.10", + "description": "日历组件", + "keywords": [ + "uni-ui", + "uniui", + "日历", + "", + "打卡", + "日历选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-calendar/readme.md b/uni_modules/uni-calendar/readme.md new file mode 100644 index 0000000..4e1748c --- /dev/null +++ b/uni_modules/uni-calendar/readme.md @@ -0,0 +1,103 @@ + + +## Calendar 日历 +> **组件名:uni-calendar** +> 代码块: `uCalendar` + + +日历组件 + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js) +> - 仅支持自定义组件模式 +> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date() +> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意 +> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动 + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + + +``` + +### 通过方法打开日历 + +需要设置 `insert` 为 `false` + +```html + + + + +``` + +```javascript + +export default { + data() { + return {}; + }, + methods: { + open(){ + this.$refs.calendar.open(); + }, + confirm(e) { + console.log(e); + } + } +}; + +``` + + +## API + +### Calendar Props + +| 属性名 | 类型 | 默认值| 说明 | +| - | - | - | - | +| date | String |- | 自定义当前时间,默认为今天 | +| lunar | Boolean | false | 显示农历 | +| startDate | String |- | 日期选择范围-开始日期 | +| endDate | String |- | 日期选择范围-结束日期 | +| range | Boolean | false | 范围选择 | +| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 | +|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 | +| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] | +|showMonth | Boolean | true | 是否显示月份为背景 | + +### Calendar Events + +| 事件名 | 说明 |返回值| +| - | - | - | +| open | 弹出日历组件,`insert :false` 时生效|- | + + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar) diff --git a/uni_modules/uni-card/changelog.md b/uni_modules/uni-card/changelog.md new file mode 100644 index 0000000..c3cd8c4 --- /dev/null +++ b/uni_modules/uni-card/changelog.md @@ -0,0 +1,26 @@ +## 1.3.1(2021-12-20) +- 修复 在vue页面下略缩图显示不正常的bug +## 1.3.0(2021-11-19) +- 重构插槽的用法 ,header 替换为 title +- 新增 actions 插槽 +- 新增 cover 封面图属性和插槽 +- 新增 padding 内容默认内边距离 +- 新增 margin 卡片默认外边距离 +- 新增 spacing 卡片默认内边距 +- 新增 shadow 卡片阴影属性 +- 取消 mode 属性,可使用组合插槽代替 +- 取消 note 属性 ,使用actions插槽代替 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card) +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-07-01) +- 优化 图文卡片无图片加载时,提供占位图标 +- 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- 修复 thumbnail 不存在仍然占位的 bug +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-card/components/uni-card/uni-card.vue b/uni_modules/uni-card/components/uni-card/uni-card.vue new file mode 100644 index 0000000..88d8342 --- /dev/null +++ b/uni_modules/uni-card/components/uni-card/uni-card.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/uni_modules/uni-card/package.json b/uni_modules/uni-card/package.json new file mode 100644 index 0000000..f16224d --- /dev/null +++ b/uni_modules/uni-card/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-card", + "displayName": "uni-card 卡片", + "version": "1.3.1", + "description": "Card 组件,提供常见的卡片样式。", + "keywords": [ + "uni-ui", + "uniui", + "card", + "", + "卡片" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-card/readme.md b/uni_modules/uni-card/readme.md new file mode 100644 index 0000000..7434e71 --- /dev/null +++ b/uni_modules/uni-card/readme.md @@ -0,0 +1,12 @@ + + +## Card 卡片 +> **组件名:uni-card** +> 代码块: `uCard` + +卡片视图组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-collapse/changelog.md b/uni_modules/uni-collapse/changelog.md new file mode 100644 index 0000000..292e4c7 --- /dev/null +++ b/uni_modules/uni-collapse/changelog.md @@ -0,0 +1,36 @@ +## 1.4.3(2022-01-25) +- 修复 初始化的时候 ,open 属性失效的bug +## 1.4.2(2022-01-21) +- 修复 微信小程序resize后组件收起的bug +## 1.4.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse) +## 1.3.3(2021-08-17) +- 优化 show-arrow 属性默认为true +## 1.3.2(2021-08-17) +- 新增 show-arrow 属性,控制是否显示右侧箭头 +## 1.3.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.3.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.2(2021-07-21) +- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +## 1.2.1(2021-07-21) +- 优化 组件示例 +## 1.2.0(2021-07-21) +- 新增 组件折叠动画 +- 新增 value\v-model 属性 ,动态修改面板折叠状态 +- 新增 title 插槽 ,可定义面板标题 +- 新增 border 属性 ,显示隐藏面板内容分隔线 +- 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- 修复 resize 方法失效的Bug +- 修复 change 事件返回参数不正确的Bug +- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.1.5(2021-02-05) +- 调整为uni_modules目录规范 \ No newline at end of file diff --git a/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue new file mode 100644 index 0000000..d62a6a7 --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue @@ -0,0 +1,402 @@ + + + + + diff --git a/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue new file mode 100644 index 0000000..384c39a --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue @@ -0,0 +1,147 @@ + + + diff --git a/uni_modules/uni-collapse/package.json b/uni_modules/uni-collapse/package.json new file mode 100644 index 0000000..65349cf --- /dev/null +++ b/uni_modules/uni-collapse/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-collapse", + "displayName": "uni-collapse 折叠面板", + "version": "1.4.3", + "description": "Collapse 组件,可以折叠 / 展开的内容区域。", + "keywords": [ + "uni-ui", + "折叠", + "折叠面板", + "手风琴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-collapse/readme.md b/uni_modules/uni-collapse/readme.md new file mode 100644 index 0000000..bc758eb --- /dev/null +++ b/uni_modules/uni-collapse/readme.md @@ -0,0 +1,12 @@ + + +## Collapse 折叠面板 +> **组件名:uni-collapse** +> 代码块: `uCollapse` +> 关联组件:`uni-collapse-item`、`uni-icons`。 + + +折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-combox/changelog.md b/uni_modules/uni-combox/changelog.md new file mode 100644 index 0000000..23c2748 --- /dev/null +++ b/uni_modules/uni-combox/changelog.md @@ -0,0 +1,15 @@ +## 1.0.1(2021-11-23) +- 优化 label、label-width 属性 +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) +## 0.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.6(2021-05-12) +- 新增 组件示例地址 +## 0.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 0.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..83454e5 --- /dev/null +++ b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/uni_modules/uni-combox/package.json b/uni_modules/uni-combox/package.json new file mode 100644 index 0000000..4a05c3f --- /dev/null +++ b/uni_modules/uni-combox/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-combox", + "displayName": "uni-combox 组合框", + "version": "1.0.1", + "description": "可以选择也可以输入的表单项 ", + "keywords": [ + "uni-ui", + "uniui", + "combox", + "组合框", + "select" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-combox/readme.md b/uni_modules/uni-combox/readme.md new file mode 100644 index 0000000..ffa2cc8 --- /dev/null +++ b/uni_modules/uni-combox/readme.md @@ -0,0 +1,11 @@ + + +## Combox 组合框 +> **组件名:uni-combox** +> 代码块: `uCombox` + + +组合框组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-countdown/changelog.md b/uni_modules/uni-countdown/changelog.md new file mode 100644 index 0000000..f25beef --- /dev/null +++ b/uni_modules/uni-countdown/changelog.md @@ -0,0 +1,24 @@ +## 1.2.2(2022-01-19) +- 修复 在微信小程序中样式不生效的bug +## 1.2.1(2022-01-18) +- 新增 update 方法 ,在动态更新时间后,刷新组件 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown) +## 1.1.3(2021-10-18) +- 重构 +- 新增 font-size 支持自定义字体大小 +## 1.1.2(2021-08-24) +- 新增 支持国际化 +## 1.1.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-06-18) +- 修复 uni-countdown 重复赋值跳两秒的 bug +## 1.0.4(2021-05-12) +- 新增 组件示例地址 +## 1.0.3(2021-05-08) +- 修复 uni-countdown 不能控制倒计时的 bug +## 1.0.2(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json new file mode 100644 index 0000000..06309cb --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "day", + "uni-countdown.h": "h", + "uni-countdown.m": "m", + "uni-countdown.s": "s" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json new file mode 100644 index 0000000..358cdd1 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "时", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json new file mode 100644 index 0000000..e5a63de --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "時", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue new file mode 100644 index 0000000..65a1216 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue @@ -0,0 +1,267 @@ + + + diff --git a/uni_modules/uni-countdown/package.json b/uni_modules/uni-countdown/package.json new file mode 100644 index 0000000..70e99ee --- /dev/null +++ b/uni_modules/uni-countdown/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-countdown", + "displayName": "uni-countdown 倒计时", + "version": "1.2.2", + "description": "CountDown 倒计时组件", + "keywords": [ + "uni-ui", + "uniui", + "countdown", + "倒计时" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-countdown/readme.md b/uni_modules/uni-countdown/readme.md new file mode 100644 index 0000000..4bcb1aa --- /dev/null +++ b/uni_modules/uni-countdown/readme.md @@ -0,0 +1,10 @@ + + +## CountDown 倒计时 +> **组件名:uni-countdown** +> 代码块: `uCountDown` + +倒计时组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-checkbox/changelog.md b/uni_modules/uni-data-checkbox/changelog.md new file mode 100644 index 0000000..c7a468a --- /dev/null +++ b/uni_modules/uni-data-checkbox/changelog.md @@ -0,0 +1,45 @@ +## 1.0.3(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.2(2022-06-30) +- 优化 在 uni-forms 中的依赖注入方式 +## 1.0.1(2022-02-07) +- 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +## 0.2.5(2021-08-23) +- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +## 0.2.4(2021-08-17) +- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +## 0.2.3(2021-08-11) +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +## 0.2.2(2021-07-30) +- 优化 在uni-forms组件,与label不对齐的问题 +## 0.2.1(2021-07-27) +- 修复 单选默认值为0不能选中的Bug +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.11(2021-07-06) +- 优化 删除无用日志 +## 0.1.10(2021-07-05) +- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +## 0.1.9(2021-07-05) +- 修复 nvue 黑框样式问题 +## 0.1.8(2021-06-28) +- 修复 selectedTextColor 属性不生效的Bug +## 0.1.7(2021-06-02) +- 新增 map 属性,可以方便映射text/value属性 +## 0.1.6(2021-05-26) +- 修复 不关联服务空间的情况下组件报错的Bug +## 0.1.5(2021-05-12) +- 新增 组件示例地址 +## 0.1.4(2021-04-09) +- 修复 nvue 下无法选中的问题 +## 0.1.3(2021-03-22) +- 新增 disabled属性 +## 0.1.2(2021-02-24) +- 优化 默认颜色显示 +## 0.1.1(2021-02-24) +- 新增 支持nvue +## 0.1.0(2021-02-18) +- “暂无数据”显示居中 diff --git a/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue new file mode 100644 index 0000000..3c75d9f --- /dev/null +++ b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue @@ -0,0 +1,821 @@ + + + + + diff --git a/uni_modules/uni-data-checkbox/package.json b/uni_modules/uni-data-checkbox/package.json new file mode 100644 index 0000000..113c350 --- /dev/null +++ b/uni_modules/uni-data-checkbox/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-data-checkbox", + "displayName": "uni-data-checkbox 数据选择器", + "version": "1.0.3", + "description": "通过数据驱动的单选框和复选框", + "keywords": [ + "uni-ui", + "checkbox", + "单选", + "多选", + "单选多选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more","uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-checkbox/readme.md b/uni_modules/uni-data-checkbox/readme.md new file mode 100644 index 0000000..6eb253d --- /dev/null +++ b/uni_modules/uni-data-checkbox/readme.md @@ -0,0 +1,18 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 +2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 +3. 本组件合并了单选多选 +4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 + +在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-picker/changelog.md b/uni_modules/uni-data-picker/changelog.md new file mode 100644 index 0000000..1dd79f7 --- /dev/null +++ b/uni_modules/uni-data-picker/changelog.md @@ -0,0 +1,75 @@ +## 1.1.2(2023-04-11) +- 修复 更改 modelValue 报错的 bug +- 修复 v-for 未使用 key 值控制台 warning +## 1.1.1(2023-02-21) +- 修复代码合并时引发 value 属性为空时不渲染数据的问题 +## 1.1.0(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.9(2023-02-15) +- 修复 localdata 不支持动态更新的bug +## 1.0.8(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 1.0.7(2022-07-06) +- 优化 pc端图标位置不正确的问题 +## 1.0.6(2022-07-05) +- 优化 显示样式 +## 1.0.5(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.0.4(2022-04-19) +- 修复 字节小程序 本地数据无法选择下一级的Bug +## 1.0.3(2022-02-25) +- 修复 nvue 不支持的 v-show 的 bug +## 1.0.2(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.0.1(2021-11-23) +- 修复 由上个版本引发的map、v-model等属性不生效的bug +## 1.0.0(2021-11-19) +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +## 0.4.9(2021-10-28) +- 修复 VUE2 v-model 概率无效的 bug +## 0.4.8(2021-10-27) +- 修复 v-model 概率无效的 bug +## 0.4.7(2021-10-25) +- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+ +- 修复 树型 uniCloud 数据类型为 int 时报错的 bug +## 0.4.6(2021-10-19) +- 修复 非 VUE3 v-model 为 0 时无法选中的 bug +## 0.4.5(2021-09-26) +- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效 +- 修复 readonly 为 true 时报错的 bug +## 0.4.4(2021-09-26) +- 修复 上一版本造成的 map 属性失效的 bug +- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略 +## 0.4.3(2021-09-24) +- 修复 某些情况下级联未触发的 bug +## 0.4.2(2021-09-23) +- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用 +- 新增 选项内容过长自动添加省略号 +## 0.4.1(2021-09-15) +- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段 +## 0.4.0(2021-07-13) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.3.5(2021-06-04) +- 修复 无法加载云端数据的问题 +## 0.3.4(2021-05-28) +- 修复 v-model 无效问题 +- 修复 loaddata 为空数据组时加载时间过长问题 +- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点 +## 0.3.3(2021-05-12) +- 新增 组件示例地址 +## 0.3.2(2021-04-22) +- 修复 非树形数据有 where 属性查询报错的问题 +## 0.3.1(2021-04-15) +- 修复 本地数据概率无法回显时问题 +## 0.3.0(2021-04-07) +- 新增 支持云端非树形表结构数据 +- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题 +## 0.2.0(2021-03-15) +- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题 +## 0.1.9(2021-03-09) +- 修复 微信小程序某些情况下无法选择的问题 +## 0.1.8(2021-02-05) +- 优化 部分样式在 nvue 上的兼容表现 +## 0.1.7(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue new file mode 100644 index 0000000..179a4e0 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -0,0 +1,551 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js new file mode 100644 index 0000000..cfae22a --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js @@ -0,0 +1,622 @@ +export default { + props: { + localdata: { + type: [Array, Object], + default () { + return [] + } + }, + spaceInfo: { + type: Object, + default () { + return {} + } + }, + collection: { + type: String, + 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: 500 + }, + getcount: { + type: [Boolean, String], + default: false + }, + getone: { + type: [Boolean, String], + default: false + }, + gettree: { + type: [Boolean, String], + default: false + }, + manual: { + type: Boolean, + default: false + }, + value: { + type: [Array, String, Number], + default () { + return [] + } + }, + modelValue: { + type: [Array, String, Number], + default () { + return [] + } + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + map: { + type: Object, + default () { + return { + text: "text", + value: "value" + } + } + } + }, + data() { + return { + loading: false, + errorMessage: '', + loadMore: { + contentdown: '', + contentrefresh: '', + contentnomore: '' + }, + dataList: [], + selected: [], + selectedIndex: 0, + page: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + } + } + }, + computed: { + isLocalData() { + return !this.collection.length; + }, + isCloudData() { + return this.collection.length > 0; + }, + isCloudDataList() { + return (this.isCloudData && (!this.parentField && !this.selfField)); + }, + isCloudDataTree() { + return (this.isCloudData && this.parentField && this.selfField); + }, + dataValue() { + let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || + this.modelValue !== undefined); + return isModelValue ? this.modelValue : this.value; + }, + hasValue() { + if (typeof this.dataValue === 'number') { + return true + } + return (this.dataValue != null) && (this.dataValue.length > 0) + } + }, + created() { + this.$watch(() => { + var al = []; + ['pageCurrent', + 'pageSize', + 'spaceInfo', + 'value', + 'modelValue', + 'localdata', + 'collection', + 'action', + 'field', + 'orderby', + 'where', + 'getont', + 'getcount', + 'gettree' + ].forEach(key => { + al.push(this[key]) + }); + return al + }, (newValue, oldValue) => { + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (newValue[0] != oldValue[0]) { + this.page.current = this.pageCurrent + } + this.page.size = this.pageSize + + this.onPropsChange() + }) + this._treeData = [] + }, + methods: { + onPropsChange() { + this._treeData = []; + }, + + // 填充 pickview 数据 + async loadData() { + if (this.isLocalData) { + this.loadLocalData(); + } else if (this.isCloudDataList) { + this.loadCloudDataList(); + } else if (this.isCloudDataTree) { + this.loadCloudDataTree(); + } + }, + + // 加载本地数据 + async loadLocalData() { + this._treeData = []; + this._extractTree(this.localdata, this._treeData); + + let inputValue = this.dataValue; + if (inputValue === undefined) { + return; + } + + if (Array.isArray(inputValue)) { + inputValue = inputValue[inputValue.length - 1]; + if (typeof inputValue === 'object' && inputValue[this.map.value]) { + inputValue = inputValue[this.map.value]; + } + } + + this.selected = this._findNodePath(inputValue, this.localdata); + }, + + // 加载 Cloud 数据 (单列) + async loadCloudDataList() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let response = await this.getCommand(); + let responseData = response.result.data; + + this._treeData = responseData; + + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (树形) + async loadCloudDataTree() { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataTreeWhere() + }; + if (this.gettree) { + commandOptions.startwith = `${this.selfField}=='${this.dataValue}'`; + } + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + this._treeData = responseData; + this._updateBindData(); + this._updateSelected(); + + this.onDataChange(); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 加载 Cloud 数据 (节点) + async loadCloudDataNode(callback) { + if (this.loading) { + return; + } + this.loading = true; + + try { + let commandOptions = { + field: this._cloudDataPostField(), + where: this._cloudDataNodeWhere() + }; + + let response = await this.getCommand(commandOptions); + let responseData = response.result.data; + + callback(responseData); + } catch (e) { + this.errorMessage = e; + } finally { + this.loading = false; + } + }, + + // 回显 Cloud 数据 + getCloudDataValue() { + if (this.isCloudDataList) { + return this.getCloudDataListValue(); + } + + if (this.isCloudDataTree) { + return this.getCloudDataTreeValue(); + } + }, + + // 回显 Cloud 数据 (单列) + getCloudDataListValue() { + // 根据 field's as value标识匹配 where 条件 + let where = []; + let whereField = this._getForeignKeyByField(); + if (whereField) { + where.push(`${whereField} == '${this.dataValue}'`) + } + + where = where.join(' || '); + + if (this.where) { + where = `(${this.where}) && (${where})` + } + + return this.getCommand({ + field: this._cloudDataPostField(), + where + }).then((res) => { + this.selected = res.result.data; + return res.result.data; + }); + }, + + // 回显 Cloud 数据 (树形) + getCloudDataTreeValue() { + return this.getCommand({ + field: this._cloudDataPostField(), + getTreePath: { + startWith: `${this.selfField}=='${this.dataValue}'` + } + }).then((res) => { + let treePath = []; + this._extractTreePath(res.result.data, treePath); + this.selected = treePath; + return treePath; + }); + }, + + getCommand(options = {}) { + /* eslint-disable no-undef */ + let db = uniCloud.database(this.spaceInfo) + + const action = options.action || this.action + if (action) { + db = db.action(action) + } + + const collection = options.collection || this.collection + db = db.collection(collection) + + const where = options.where || this.where + if (!(!where || !Object.keys(where).length)) { + db = db.where(where) + } + + const field = options.field || this.field + if (field) { + db = db.field(field) + } + + const orderby = options.orderby || this.orderby + if (orderby) { + db = db.orderBy(orderby) + } + + const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current + const size = options.pageSize !== undefined ? options.pageSize : this.page.size + const getCount = options.getcount !== undefined ? options.getcount : this.getcount + const getTree = options.gettree !== undefined ? options.gettree : this.gettree + + const getOptions = { + getCount, + getTree + } + if (options.getTreePath) { + getOptions.getTreePath = options.getTreePath + } + + db = db.skip(size * (current - 1)).limit(size).get(getOptions) + + return db + }, + + _cloudDataPostField() { + let fields = [this.field]; + if (this.parentField) { + fields.push(`${this.parentField} as parent_value`); + } + return fields.join(','); + }, + + _cloudDataTreeWhere() { + let result = [] + let selected = this.selected + let parentField = this.parentField + if (parentField) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selected.length) { + for (var i = 0; i < selected.length - 1; i++) { + result.push(`${parentField} == '${selected[i].value}'`) + } + } + + let where = [] + if (this.where) { + where.push(`(${this.where})`) + } + + if (result.length) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + + _cloudDataNodeWhere() { + let where = [] + let selected = this.selected; + if (selected.length) { + where.push(`${this.parentField} == '${selected[selected.length - 1].value}'`); + } + + where = where.join(' || '); + + if (this.where) { + return `(${this.where}) && (${where})` + } + + return where + }, + + _getWhereByForeignKey() { + let result = [] + let whereField = this._getForeignKeyByField(); + if (whereField) { + result.push(`${whereField} == '${this.dataValue}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + + _getForeignKeyByField() { + let fields = this.field.split(','); + let whereField = null; + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as'); + if (items.length < 2) { + continue; + } + if (items[1].trim() === 'value') { + whereField = items[0].trim(); + break; + } + } + return whereField; + }, + + _updateBindData(node) { + const { + dataList, + hasNodes + } = this._filterData(this._treeData, this.selected) + + let isleaf = this._stepSearh === false && !hasNodes + + if (node) { + node.isleaf = isleaf + } + + this.dataList = dataList + this.selectedIndex = dataList.length - 1 + + if (!isleaf && this.selected.length < dataList.length) { + this.selected.push({ + value: null, + text: "请选择" + }) + } + + return { + isleaf, + hasNodes + } + }, + + _updateSelected() { + let dl = this.dataList + let sl = this.selected + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < sl.length; i++) { + let value = sl[i].value + let dl2 = dl[i] + for (let j = 0; j < dl2.length; j++) { + let item2 = dl2[j] + if (item2[valueField] === value) { + sl[i].text = item2[textField] + break + } + } + } + }, + + _filterData(data, paths) { + let dataList = [] + let hasNodes = true + + dataList.push(data.filter((item) => { + return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '') + })) + for (let i = 0; i < paths.length; i++) { + let value = paths[i].value + let nodes = data.filter((item) => { + return item.parent_value === value + }) + + if (nodes.length) { + dataList.push(nodes) + } else { + hasNodes = false + } + } + + return { + dataList, + hasNodes + } + }, + + _extractTree(nodes, result, parent_value) { + let list = result || [] + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + if (parent_value !== null && parent_value !== undefined && parent_value !== '') { + child.parent_value = parent_value + } + result.push(child) + + let children = node.children + if (children) { + this._extractTree(children, result, node[valueField]) + } + } + }, + + _extractTreePath(nodes, result) { + let list = result || [] + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + result.push(child) + + let children = node.children + if (children) { + this._extractTreePath(children, result) + } + } + }, + + _findNodePath(key, nodes, path = []) { + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + let children = node.children + let text = node[textField] + let value = node[valueField] + + path.push({ + value, + text + }) + + if (value === key) { + return path + } + + if (children) { + const p = this._findNodePath(key, children, path) + if (p.length) { + return p + } + } + + path.pop() + } + return [] + } + } +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue new file mode 100644 index 0000000..6ebced9 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/uni_modules/uni-data-picker/package.json b/uni_modules/uni-data-picker/package.json new file mode 100644 index 0000000..038f9ce --- /dev/null +++ b/uni_modules/uni-data-picker/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-data-picker", + "displayName": "uni-data-picker 数据驱动的picker选择器", + "version": "1.1.2", + "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景", + "keywords": [ + "uni-ui", + "uniui", + "picker", + "级联", + "省市区", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-load-more", + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-data-picker/readme.md b/uni_modules/uni-data-picker/readme.md new file mode 100644 index 0000000..6cda224 --- /dev/null +++ b/uni_modules/uni-data-picker/readme.md @@ -0,0 +1,22 @@ +## DataPicker 级联选择 +> **组件名:uni-data-picker** +> 代码块: `uDataPicker` +> 关联组件:`uni-data-pickerview`、`uni-load-more`。 + + +`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 + +支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + +候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 + +`` 组件尤其适用于地址选择、分类选择等选择类。 + +`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 + +`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 + +在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-select/changelog.md b/uni_modules/uni-data-select/changelog.md new file mode 100644 index 0000000..eb3d1ce --- /dev/null +++ b/uni_modules/uni-data-select/changelog.md @@ -0,0 +1,35 @@ +## 1.0.6(2023-04-12) +- 修复 微信小程序点击时会改变背景颜色的 bug +## 1.0.5(2023-02-03) +- 修复 禁用时会显示清空按钮 +## 1.0.4(2023-02-02) +- 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +## 1.0.3(2023-01-16) +- 修复 不关联服务空间报错的问题 +## 1.0.2(2023-01-14) +- 新增 属性 `format` 可用于格式化显示选项内容 +## 1.0.1(2022-12-06) +- 修复 当where变化时,数据不会自动更新的问题 +## 0.1.9(2022-09-05) +- 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +## 0.1.8(2022-08-29) +- 修复 点击的位置不准确 +## 0.1.7(2022-08-12) +- 新增 支持 disabled 属性 +## 0.1.6(2022-07-06) +- 修复 pc端宽度异常的bug +## 0.1.5 +- 修复 pc端宽度异常的bug +## 0.1.4(2022-07-05) +- 优化 显示样式 +## 0.1.3(2022-06-02) +- 修复 localdata 赋值不生效的 bug +- 新增 支持 uni.scss 修改颜色 +- 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +## 0.1.2(2022-05-08) +- 修复 当 value 为 0 时选择不生效的 bug +## 0.1.1(2022-05-07) +- 新增 记住上次的选项(仅 collection 存在时有效) +## 0.1.0(2022-04-22) +- 初始化 diff --git a/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue new file mode 100644 index 0000000..9b32348 --- /dev/null +++ b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue @@ -0,0 +1,517 @@ + + + + + diff --git a/uni_modules/uni-data-select/package.json b/uni_modules/uni-data-select/package.json new file mode 100644 index 0000000..0187429 --- /dev/null +++ b/uni_modules/uni-data-select/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-data-select", + "displayName": "uni-data-select 下拉框选择器", + "version": "1.0.6", + "description": "通过数据驱动的下拉框选择器", + "keywords": [ + "uni-ui", + "select", + "uni-data-select", + "下拉框", + "下拉选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-load-more"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-select/readme.md b/uni_modules/uni-data-select/readme.md new file mode 100644 index 0000000..eb58de3 --- /dev/null +++ b/uni_modules/uni-data-select/readme.md @@ -0,0 +1,8 @@ +## DataSelect 下拉框选择器 +> **组件名:uni-data-select** +> 代码块: `uDataSelect` + +当选项过多时,使用下拉菜单展示并选择内容 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-dateformat/changelog.md b/uni_modules/uni-dateformat/changelog.md new file mode 100644 index 0000000..d551d7b --- /dev/null +++ b/uni_modules/uni-dateformat/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +## 0.0.5(2021-07-08) +- 调整 默认时间不再是当前时间,而是显示'-'字符 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 +- 修复 iOS 平台日期格式化出错的问题 diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js new file mode 100644 index 0000000..e00d559 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js @@ -0,0 +1,200 @@ +// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型 +function pad(str, length = 2) { + str += '' + while (str.length < length) { + str = '0' + str + } + return str.slice(-length) +} + +const parser = { + yyyy: (dateObj) => { + return pad(dateObj.year, 4) + }, + yy: (dateObj) => { + return pad(dateObj.year) + }, + MM: (dateObj) => { + return pad(dateObj.month) + }, + M: (dateObj) => { + return dateObj.month + }, + dd: (dateObj) => { + return pad(dateObj.day) + }, + d: (dateObj) => { + return dateObj.day + }, + hh: (dateObj) => { + return pad(dateObj.hour) + }, + h: (dateObj) => { + return dateObj.hour + }, + mm: (dateObj) => { + return pad(dateObj.minute) + }, + m: (dateObj) => { + return dateObj.minute + }, + ss: (dateObj) => { + return pad(dateObj.second) + }, + s: (dateObj) => { + return dateObj.second + }, + SSS: (dateObj) => { + return pad(dateObj.millisecond, 3) + }, + S: (dateObj) => { + return dateObj.millisecond + }, +} + +// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12 +function getDate(time) { + if (time instanceof Date) { + return time + } + switch (typeof time) { + case 'string': + { + // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000 + if (time.indexOf('T') > -1) { + return new Date(time) + } + return new Date(time.replace(/-/g, '/')) + } + default: + return new Date(time) + } +} + +export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') { + if (!date && date !== 0) { + return '' + } + date = getDate(date) + const dateObj = { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + } + const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/ + let flag = true + let result = format + while (flag) { + flag = false + result = result.replace(tokenRegExp, function(matched) { + flag = true + return parser[matched](dateObj) + }) + } + return result +} + +export function friendlyDate(time, { + locale = 'zh', + threshold = [60000, 3600000], + format = 'yyyy/MM/dd hh:mm:ss' +}) { + if (time === '-') { + return time + } + if (!time && time !== 0) { + return '' + } + const localeText = { + zh: { + year: '年', + month: '月', + day: '天', + hour: '小时', + minute: '分钟', + second: '秒', + ago: '前', + later: '后', + justNow: '刚刚', + soon: '马上', + template: '{num}{unit}{suffix}' + }, + en: { + year: 'year', + month: 'month', + day: 'day', + hour: 'hour', + minute: 'minute', + second: 'second', + ago: 'ago', + later: 'later', + justNow: 'just now', + soon: 'soon', + template: '{num} {unit} {suffix}' + } + } + const text = localeText[locale] || localeText.zh + let date = getDate(time) + let ms = date.getTime() - Date.now() + let absMs = Math.abs(ms) + if (absMs < threshold[0]) { + return ms < 0 ? text.justNow : text.soon + } + if (absMs >= threshold[1]) { + return formatDate(date, format) + } + let num + let unit + let suffix = text.later + if (ms < 0) { + suffix = text.ago + ms = -ms + } + const seconds = Math.floor((ms) / 1000) + const minutes = Math.floor(seconds / 60) + const hours = Math.floor(minutes / 60) + const days = Math.floor(hours / 24) + const months = Math.floor(days / 30) + const years = Math.floor(months / 12) + switch (true) { + case years > 0: + num = years + unit = text.year + break + case months > 0: + num = months + unit = text.month + break + case days > 0: + num = days + unit = text.day + break + case hours > 0: + num = hours + unit = text.hour + break + case minutes > 0: + num = minutes + unit = text.minute + break + default: + num = seconds + unit = text.second + break + } + + if (locale === 'en') { + if (num === 1) { + num = 'a' + } else { + unit += 's' + } + } + + return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g, + suffix) +} diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue new file mode 100644 index 0000000..c5ed030 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/uni_modules/uni-dateformat/package.json b/uni_modules/uni-dateformat/package.json new file mode 100644 index 0000000..786a670 --- /dev/null +++ b/uni_modules/uni-dateformat/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-dateformat", + "displayName": "uni-dateformat 日期格式化", + "version": "1.0.0", + "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式", + "keywords": [ + "uni-ui", + "uniui", + "日期格式化", + "时间格式化", + "格式化时间", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-dateformat/readme.md b/uni_modules/uni-dateformat/readme.md new file mode 100644 index 0000000..37ddb6e --- /dev/null +++ b/uni_modules/uni-dateformat/readme.md @@ -0,0 +1,11 @@ + + +### DateFormat 日期格式化 +> **组件名:uni-dateformat** +> 代码块: `uDateformat` + + +日期格式化组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..1f1a554 --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,133 @@ +## 2.2.22(2023-03-30) +- 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +## 2.2.21(2023-02-20) +- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +## 2.2.20(2023-02-17) +- 优化 值为空依然选中当天问题 +- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- 优化 字节小程序日期时间范围选择,底部日期换行问题 +## 2.2.19(2023-02-09) +- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +## 2.2.18(2023-02-08) +- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- 优化 PC端输入日期格式错误时返回当前日期时间 +- 优化 PC端输入日期时间超出 start、end 限制的Bug +- 优化 移动端日期时间范围用法时间展示不完整问题 +## 2.2.17(2023-02-04) +- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- 修复 vue3 time-picker 无法显示绑定时分秒的Bug +## 2.2.16(2023-02-02) +- 修复 字节小程序报错的Bug +## 2.2.15(2023-02-02) +- 修复 某些情况切换月份错误的Bug +## 2.2.14(2023-01-30) +- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033) +## 2.2.13(2023-01-10) +- 修复 多次加载组件造成内存占用的Bug +## 2.2.12(2022-12-01) +- 修复 vue3 下 i18n 国际化初始值不正确的Bug +## 2.2.11(2022-09-19) +- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861) +## 2.2.10(2022-09-19) +- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +## 2.2.9(2022-09-16) +- 可以使用 uni-scss 控制主题色 +## 2.2.8(2022-09-08) +- 修复 close事件无效的Bug +## 2.2.7(2022-09-05) +- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824) +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化的Bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的Bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的Bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的Bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的Bug +- 修复 单选赋默认值时,赋值日期未高亮的Bug +- 修复 赋默认值时,移动端未正确显示时间的Bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的Bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的Bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的Bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的Bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的Bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的Bug +- 修复 start 和 end 不能动态赋值的Bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的Bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的Bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的Bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的Bug +- 修复 chang事件触发2次的Bug +- 修复 分、秒 end 范围错误的Bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..dba9887 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..3418f49 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,928 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..024f22f --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select date and time", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..81a042a --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,934 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..bd96488 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1026 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..7dc34c4 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,403 @@ +class Calendar { + constructor({ + selected, + startDate, + endDate, + range, + } = {}) { + // 当前日期 + this.date = this.getDateObj(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 起始时间 + this.startDate = startDate + // 终止时间 + this.endDate = endDate + // 是否范围选择 + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + const selectDate = this.getDateObj(date) + this.getWeeks(selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + setStartDate(startDate) { + this.startDate = startDate + } + + setEndDate(endDate) { + this.endDate = endDate + } + + getPreMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth - 1) + const newMonth = date.getMonth() + if(oldMonth !== 0 && newMonth - oldMonth === 0){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + getNextMonthObj(date){ + date = fixIosDateFormat(date) + date = new Date(date) + + const oldMonth = date.getMonth() + date.setMonth(oldMonth + 1) + const newMonth = date.getMonth() + if(newMonth - oldMonth > 1){ + date.setMonth(newMonth - 1) + } + return this.getDateObj(date) + } + + /** + * 获取指定格式Date对象 + */ + getDateObj(date) { + date = fixIosDateFormat(date) + date = new Date(date) + + return { + fullDate: getDate(date), + year: date.getFullYear(), + month: addZero(date.getMonth() + 1), + date: addZero(date.getDate()), + day: date.getDay() + } + } + + /** + * 获取上一个月日期集合 + */ + getPreMonthDays(amount, dateObj) { + const result = [] + for (let i = amount - 1; i >= 0; i--) { + const month = dateObj.month - 1 + result.push({ + date: new Date(dateObj.year, month, -i).getDate(), + month, + disable: true + }) + } + return result + } + /** + * 获取本月日期集合 + */ + getCurrentMonthDays(amount, dateObj) { + const result = [] + const fullDate = this.date.fullDate + for (let i = 1; i <= amount; i++) { + const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}` + const isToday = fullDate === currentDate + // 获取打点信息 + const info = this.selected && this.selected.find((item) => { + if (this.dateEqual(currentDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + disableBefore = dateCompare(this.startDate, currentDate) + } + + if (this.endDate) { + disableAfter = dateCompare(currentDate, this.endDate) + } + + let multiples = this.multipleStatus.data + let multiplesStatus = -1 + if (this.range && multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, currentDate) + }) + } + const checked = multiplesStatus !== -1 + + result.push({ + fullDate: currentDate, + year: dateObj.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after), + month: dateObj.month, + disable: (this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate,this.endDate)), + isToday, + userChecked: false, + extraInfo: info + }) + } + return result + } + /** + * 获取下一个月日期集合 + */ + _getNextMonthDays(amount, dateObj) { + const result = [] + const month = dateObj.month + 1 + for (let i = 1; i <= amount; i++) { + result.push({ + date: i, + month, + disable: true + }) + } + return result + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + + return this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate) + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + before = new Date(fixIosDateFormat(before)) + after = new Date(fixIosDateFormat(after)) + return before.valueOf() === after.valueOf() + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDate, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDate) + } + + isLogicAfter(currentDate, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDate) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDateObj(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + if (!this.range) return + + let { + before, + after + } = this.multipleStatus + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this.getWeeks(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + if (!this.range || this.lastHover) return + + const { before } = this.multipleStatus + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this.getWeeks(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this.getWeeks(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this.getWeeks(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + getWeeks(dateData) { + const { + year, + month, + } = this.getDateObj(dateData) + + const preMonthDayAmount = new Date(year, month - 1, 1).getDay() + const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData)) + + const currentMonthDayAmount = new Date(year, month, 0).getDate() + const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData)) + + const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount + const nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData)) + + const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays] + + const weeks = new Array(6) + for (let i = 0; i < calendarDays.length; i++) { + const index = Math.floor(i / 7) + if(!weeks[index]){ + weeks[index] = new Array(7) + } + weeks[index][i % 7] = calendarDays[i] + } + + this.calendar = calendarDays + this.weeks = weeks + } +} + +function getDateTime(date, hideSecond){ + return `${getDate(date)} ${getTime(date, hideSecond)}` +} + +function getDate(date) { + date = fixIosDateFormat(date) + date = new Date(date) + const year = date.getFullYear() + const month = date.getMonth()+1 + const day = date.getDate() + return `${year}-${addZero(month)}-${addZero(day)}` +} + +function getTime(date, hideSecond){ + date = fixIosDateFormat(date) + date = new Date(date) + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + return hideSecond ? `${addZero(hour)}:${addZero(minute)}` : `${addZero(hour)}:${addZero(minute)}:${addZero(second)}` +} + +function addZero(num) { + if(num < 10){ + num = `0${num}` + } + return num +} + +function getDefaultSecond(hideSecond) { + return hideSecond ? '00:00' : '00:00:00' +} + +function dateCompare(startDate, endDate) { + startDate = new Date(fixIosDateFormat(startDate)) + endDate = new Date(fixIosDateFormat(endDate)) + return startDate <= endDate +} + +function checkDate(date){ + const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g + return date.match(dateReg) +} + +const dateTimeReg = /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])( [0-5][0-9]:[0-5][0-9]:[0-5][0-9])?$/ +function fixIosDateFormat(value) { + if (typeof value === 'string' && dateTimeReg.test(value)) { + value = value.replace(/-/g, '/') + } + return value +} + +export {Calendar, getDateTime, getDate, getTime, addZero, getDefaultSecond, dateCompare, checkDate, fixIosDateFormat} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..8abed63 --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.22", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-drawer/changelog.md b/uni_modules/uni-drawer/changelog.md new file mode 100644 index 0000000..6d2488c --- /dev/null +++ b/uni_modules/uni-drawer/changelog.md @@ -0,0 +1,13 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer) +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/uni_modules/uni-drawer/components/uni-drawer/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue new file mode 100644 index 0000000..82331a8 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/uni_modules/uni-drawer/package.json b/uni_modules/uni-drawer/package.json new file mode 100644 index 0000000..dd056e4 --- /dev/null +++ b/uni_modules/uni-drawer/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-drawer", + "displayName": "uni-drawer 抽屉", + "version": "1.2.1", + "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。", + "keywords": [ + "uni-ui", + "uniui", + "drawer", + "抽屉", + "侧滑导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-drawer/readme.md b/uni_modules/uni-drawer/readme.md new file mode 100644 index 0000000..dcf6e6b --- /dev/null +++ b/uni_modules/uni-drawer/readme.md @@ -0,0 +1,10 @@ + + +## Drawer 抽屉 +> **组件名:uni-drawer** +> 代码块: `uDrawer` + +抽屉侧滑菜单。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-easyinput/changelog.md b/uni_modules/uni-easyinput/changelog.md new file mode 100644 index 0000000..765401a --- /dev/null +++ b/uni_modules/uni-easyinput/changelog.md @@ -0,0 +1,97 @@ +## 1.1.9(2023-04-11) +- 修复 vue3 下 keyboardheightchange 事件报错的bug +## 1.1.8(2023-03-29) +- 优化 trim 属性默认值 +## 1.1.7(2023-03-29) +- 新增 cursor-spacing 属性 +## 1.1.6(2023-01-28) +- 新增 keyboardheightchange 事件,可监听键盘高度变化 +## 1.1.5(2022-11-29) +- 优化 主题样式 +## 1.1.4(2022-10-27) +- 修复 props 中背景颜色无默认值的bug +## 1.1.0(2022-06-30) + +- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- 新增 clear 事件,点击右侧叉号图标触发 +- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 + +## 1.0.5(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.4(2022-06-07) + +- 优化 clearable 显示策略 + +## 1.0.3(2022-05-20) + +- 修复 关闭图标某些情况下无法取消的 bug + +## 1.0.2(2022-04-12) + +- 修复 默认值不生效的 bug + +## 1.0.1(2022-04-02) + +- 修复 value 不能为 0 的 bug + +## 1.0.0(2021-11-19) + +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput) + +## 0.1.4(2021-08-20) + +- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug + +## 0.1.3(2021-08-11) + +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 + +## 0.1.2(2021-07-30) + +- 优化 vue3 下事件警告的问题 + +## 0.1.1 + +- 优化 errorMessage 属性支持 Boolean 类型 + +## 0.1.0(2021-07-13) + +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) + +## 0.0.16(2021-06-29) + +- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug + +## 0.0.15(2021-06-21) + +- 修复 passwordIcon 属性拼写错误的 bug + +## 0.0.14(2021-06-18) + +- 新增 passwordIcon 属性,当 type=password 时是否显示小眼睛图标 +- 修复 confirmType 属性不生效的问题 + +## 0.0.13(2021-06-04) + +- 修复 disabled 状态可清出内容的 bug + +## 0.0.12(2021-05-12) + +- 新增 组件示例地址 + +## 0.0.11(2021-05-07) + +- 修复 input-border 属性不生效的问题 + +## 0.0.10(2021-04-30) + +- 修复 ios 遮挡文字、显示一半的问题 + +## 0.0.9(2021-02-05) + +- 调整为 uni_modules 目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/uni_modules/uni-easyinput/components/uni-easyinput/common.js new file mode 100644 index 0000000..df9abe1 --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/common.js @@ -0,0 +1,56 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + console.log(1); + return function() { + console.log(123); + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..2c7993a --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,657 @@ + + + + + diff --git a/uni_modules/uni-easyinput/package.json b/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..bd128e1 --- /dev/null +++ b/uni_modules/uni-easyinput/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.9", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-easyinput/readme.md b/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fab/changelog.md b/uni_modules/uni-fab/changelog.md new file mode 100644 index 0000000..9bd4729 --- /dev/null +++ b/uni_modules/uni-fab/changelog.md @@ -0,0 +1,23 @@ +## 1.2.5(2023-03-29) +- 新增 pattern.icon 属性,可自定义图标 +## 1.2.4(2022-09-07) +小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +## 1.2.3(2022-09-05) +- 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +## 1.2.2(2021-12-29) +- 更新 组件依赖 +## 1.2.1(2021-11-19) +- 修复 阴影颜色不正确的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 按钮背景色调整 +- 优化 兼容pc端 diff --git a/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..dfa65c1 --- /dev/null +++ b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue @@ -0,0 +1,491 @@ + + + + + diff --git a/uni_modules/uni-fab/package.json b/uni_modules/uni-fab/package.json new file mode 100644 index 0000000..18c0810 --- /dev/null +++ b/uni_modules/uni-fab/package.json @@ -0,0 +1,84 @@ +{ + "id": "uni-fab", + "displayName": "uni-fab 悬浮按钮", + "version": "1.2.5", + "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", + "keywords": [ + "uni-ui", + "uniui", + "按钮", + "悬浮按钮", + "fab" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fab/readme.md b/uni_modules/uni-fab/readme.md new file mode 100644 index 0000000..9a444e8 --- /dev/null +++ b/uni_modules/uni-fab/readme.md @@ -0,0 +1,9 @@ +## Fab 悬浮按钮 +> **组件名:uni-fab** +> 代码块: `uFab` + + +点击可展开一个图形按钮菜单 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fav/changelog.md b/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/uni_modules/uni-fav/package.json b/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fav/readme.md b/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-file-picker/changelog.md b/uni_modules/uni-file-picker/changelog.md new file mode 100644 index 0000000..b8230e9 --- /dev/null +++ b/uni_modules/uni-file-picker/changelog.md @@ -0,0 +1,67 @@ +## 1.0.4(2023-03-29) +- 修复 手动上传删除一个文件后不能再上传的bug +## 1.0.3(2022-12-19) +- 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.0.2(2022-07-04) +- 修复 在uni-forms下样式不生效的bug +## 1.0.1(2021-11-23) +- 修复 参数为对象的情况下,url在某些情况显示错误的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +## 0.2.16(2021-11-08) +- 修复 传入空对象 ,显示错误的Bug +## 0.2.15(2021-08-30) +- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug +## 0.2.14(2021-08-23) +- 新增 参数中返回 fileID 字段 +## 0.2.13(2021-08-23) +- 修复 腾讯云传入fileID 不能回显的bug +- 修复 选择图片后,不能放大的问题 +## 0.2.12(2021-08-17) +- 修复 由于 0.2.11 版本引起的不能回显图片的Bug +## 0.2.11(2021-08-16) +- 新增 clearFiles(index) 方法,可以手动删除指定文件 +- 修复 v-model 值设为 null 报错的Bug +## 0.2.10(2021-08-13) +- 修复 return-type="object" 时,无法删除文件的Bug +## 0.2.9(2021-08-03) +- 修复 auto-upload 属性失效的Bug +## 0.2.8(2021-07-31) +- 修复 fileExtname属性不指定值报错的Bug +## 0.2.7(2021-07-31) +- 修复 在某种场景下图片不回显的Bug +## 0.2.6(2021-07-30) +- 修复 return-type为object下,返回值不正确的Bug +## 0.2.5(2021-07-30) +- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +## 0.2.3(2021-07-28) +- 优化 调整示例代码 +## 0.2.2(2021-07-27) +- 修复 vue3 下赋值错误的Bug +- 优化 h5平台下上传文件导致页面卡死的问题 +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.1(2021-07-02) +- 修复 sourceType 缺少默认值导致 ios 无法选择文件 +## 0.1.0(2021-06-30) +- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +## 0.0.11(2021-06-30) +- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +## 0.0.10(2021-06-29) +- 优化 文件上传后进度条消失时机 +## 0.0.9(2021-06-29) +- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +## 0.0.8(2021-06-15) +- 修复 删除文件时无法触发 v-model 的Bug +## 0.0.7(2021-05-12) +- 新增 组件示例地址 +## 0.0.6(2021-04-09) +- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug +## 0.0.5(2021-04-09) +- 优化 更新组件示例 +## 0.0.4(2021-04-09) +- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js new file mode 100644 index 0000000..aff0864 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js @@ -0,0 +1,224 @@ +'use strict'; + +const ERR_MSG_OK = 'chooseAndUploadFile:ok'; +const ERR_MSG_FAIL = 'chooseAndUploadFile:fail'; + +function chooseImage(opts) { + const { + count, + sizeType = ['original', 'compressed'], + sourceType, + extension + } = opts + return new Promise((resolve, reject) => { + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseVideo(opts) { + const { + camera, + compressed, + maxDuration, + sourceType, + extension + } = opts; + return new Promise((resolve, reject) => { + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { + tempFilePath, + duration, + size, + height, + width + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFilePaths: [tempFilePath], + tempFiles: [ + { + name: (res.tempFile && res.tempFile.name) || '', + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || '', + width, + height, + duration, + fileType: 'video', + cloudPath: '', + }, ], + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseAll(opts) { + const { + count, + extension + } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if (typeof wx !== 'undefined' && + typeof wx.chooseMessageFile === 'function') { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== 'function') { + return reject({ + errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。', + }); + } + chooseFile({ + type: 'all', + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf('/') + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.')); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)) + const len = files.length + let count = 0 + let self = this + return new Promise(resolve => { + while (count < max) { + next() + } + + function next() { + let cur = count++ + if (cur >= len) { + !files.find(item => !item.url && !item.errMsg) && resolve(files) + return + } + const fileItem = files[cur] + const index = self.files.findIndex(v => v.uuid === fileItem.uuid) + fileItem.url = '' + delete fileItem.errMsg + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: res => { + res.index = index + onUploadProgress && onUploadProgress(res) + } + }) + .then(res => { + fileItem.url = res.fileID + fileItem.index = index + if (cur < len) { + next() + } + }) + .catch(res => { + fileItem.errMsg = res.errMsg || res.message + fileItem.index = index + if (cur < len) { + next() + } + }) + } + }) +} + + + + + +function uploadFiles(choosePromise, { + onChooseFile, + onUploadProgress +}) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== 'undefined') { + return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ? + res : chooseRes); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res + }) +} + +function chooseAndUploadFile(opts = { + type: 'all' +}) { + if (opts.type === 'image') { + return uploadFiles(chooseImage(opts), opts); + } + else if (opts.type === 'video') { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { + chooseAndUploadFile, + uploadCloudFiles +}; diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..370441d --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,667 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..625d92e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..2a29bc2 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..60aaa3e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js @@ -0,0 +1,109 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf('.') + const len = name.length + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len) + } +} + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, '') + return extname.split(',') + } else { + return fileExtname + } + return [] +} + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = [] + let files = [] + if(!_extname || _extname.length === 0){ + return { + filePaths, + files + } + } + res.tempFiles.forEach(v => { + let fileFullName = get_file_ext(v.name) + const extname = fileFullName.ext.toLowerCase() + if (_extname.indexOf(extname) !== -1) { + files.push(v) + filePaths.push(v.path) + } + }) + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`, + icon: 'none', + duration: 5000 + }) + } + + return { + filePaths, + files + } +} + + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = 'image') => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name) + const extname = fileFullName.ext.toLowerCase() + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || '', + cloudPath: files.cloudPath, + fileType: files.fileType, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {} + } + if (type === 'image') { + const imageinfo = await get_file_info(files.path) + delete filedata.video + filedata.image.width = imageinfo.width + filedata.image.height = imageinfo.height + filedata.image.location = imageinfo.path + } else { + delete filedata.image + } + return filedata +} diff --git a/uni_modules/uni-file-picker/package.json b/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..35c926c --- /dev/null +++ b/uni_modules/uni-file-picker/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.0.4", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-file-picker/readme.md b/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-forms/changelog.md b/uni_modules/uni-forms/changelog.md new file mode 100644 index 0000000..8218df5 --- /dev/null +++ b/uni_modules/uni-forms/changelog.md @@ -0,0 +1,92 @@ +## 1.4.9(2023-02-10) +- 修复 required 参数无法动态绑定 +## 1.4.8(2022-08-23) +- 优化 根据 rules 自动添加 required 的问题 +## 1.4.7(2022-08-22) +- 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +## 1.4.6(2022-07-13) +- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug +## 1.4.5(2022-07-05) +- 新增 更多表单示例 +- 优化 子表单组件过期提示的问题 +- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +## 1.4.4(2022-07-04) +- 更新 删除组件日志 +## 1.4.3(2022-07-04) +- 修复 由 1.4.0 引发的 label 插槽不生效的bug +## 1.4.2(2022-07-04) +- 修复 子组件找不到 setValue 报错的bug +## 1.4.1(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.4.0(2022-06-30) +- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题 +- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- 优化 动态表单校验方式,废弃拼接name的方式 +## 1.3.3(2022-06-22) +- 修复 表单校验顺序无序问题 +## 1.3.2(2021-12-09) +- +## 1.3.1(2021-11-19) +- 修复 label 插槽不生效的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms) +## 1.2.7(2021-08-13) +- 修复 没有添加校验规则的字段依然报错的Bug +## 1.2.6(2021-08-11) +- 修复 重置表单错误信息无法清除的问题 +## 1.2.5(2021-08-11) +- 优化 组件文档 +## 1.2.4(2021-08-11) +- 修复 表单验证只生效一次的问题 +## 1.2.3(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.2(2021-07-26) +- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- 修复 1.2.1 引起的示例在小程序平台报错的Bug +## 1.2.1(2021-07-22) +- 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- 修复 不指定name属性时,运行报错的Bug +- 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- 优化 组件示例,新增动态校验示例代码 +- 优化 组件文档,使用方式更清晰 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-06-25) +- 修复 pattern 属性在微信小程序平台无效的问题 +## 1.1.1(2021-06-22) +- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +## 1.1.0(2021-06-22) +- 修复 只写setRules方法而导致校验不生效的Bug +- 修复 由上个办法引发的错误提示文字错位的Bug +## 1.0.48(2021-06-21) +- 修复 不设置 label 属性 ,无法设置label插槽的问题 +## 1.0.47(2021-06-21) +- 修复 不设置label属性,label-width属性不生效的bug +- 修复 setRules 方法与rules属性冲突的问题 +## 1.0.46(2021-06-04) +- 修复 动态删减数据导致报错的问题 +## 1.0.45(2021-06-04) +- 新增 modelValue 属性 ,value 即将废弃 +## 1.0.44(2021-06-02) +- 新增 uni-forms-item 可以设置单独的 rules +- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- 优化 submit 事件重命名为 validate +## 1.0.43(2021-05-12) +- 新增 组件示例地址 +## 1.0.42(2021-04-30) +- 修复 自定义检验器失效的问题 +## 1.0.41(2021-03-05) +- 更新 校验器 +- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug +## 1.0.40(2021-03-04) +- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +## 1.0.39(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 校验器传入 int 等类型 ,返回String类型的Bug diff --git a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..91fe351 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,627 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..ed2f6d9 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/utils.js b/uni_modules/uni-forms/components/uni-forms/utils.js new file mode 100644 index 0000000..6da2421 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/utils.js @@ -0,0 +1,293 @@ +/** + * 简单处理对象拷贝 + * @param {Obejct} 被拷贝对象 + * @@return {Object} 拷贝对象 + */ +export const deepCopy = (val) => { + return JSON.parse(JSON.stringify(val)) +} +/** + * 过滤数字类型 + * @param {String} format 数字类型 + * @@return {Boolean} 返回是否为数字类型 + */ +export const typeFilter = (format) => { + return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp'; +} + +/** + * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined + * @param {String} key 字段名 + * @param {any} value 字段值 + * @param {Object} rules 表单校验规则 + */ +export const getValue = (key, value, rules) => { + const isRuleNumType = rules.find(val => val.format && typeFilter(val.format)); + const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool'); + // 输入类型为 number + if (!!isRuleNumType) { + if (!value && value !== 0) { + value = null + } else { + value = isNumber(Number(value)) ? Number(value) : value + } + } + + // 输入类型为 boolean + if (!!isRuleBoolType) { + value = isBoolean(value) ? value : false + } + + return value; +} + +/** + * 获取表单数据 + * @param {String|Array} name 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + * @param {any} value 需要设置的值 + */ +export const setDataValue = (field, formdata, value) => { + formdata[field] = value + return value || '' +} + +/** + * 获取表单数据 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + */ +export const getDataValue = (field, data) => { + return objGet(data, field) +} + +/** + * 获取表单类型 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + */ +export const getDataValueType = (field, data) => { + const value = getDataValue(field, data) + return { + type: type(value), + value + } +} + +/** + * 获取表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const realName = (name, data = {}) => { + const base_name = _basePath(name) + if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) { + const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_') + return realname + } + return base_name[0] || name +} + +/** + * 判断是否表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const isRealName = (name) => { + const reg = /^_formdata_#*/ + return reg.test(name) +} + +/** + * 获取表单数据的原始格式 + * @@return {Object|Array} object 需要解析的数据 + */ +export const rawData = (object = {}, name) => { + let newData = JSON.parse(JSON.stringify(object)) + let formData = {} + for(let i in newData){ + let path = name2arr(i) + objSet(formData,path,newData[i]) + } + return formData +} + +/** + * 真实name还原为 array + * @param {*} name + */ +export const name2arr = (name) => { + let field = name.replace('_formdata_#', '') + field = field.split('#').map(v => (isNumber(v) ? Number(v) : v)) + return field +} + +/** + * 对象中设置值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} value 需要设置的值 + */ +export const objSet = (object, path, value) => { + if (typeof object !== 'object') return object; + _basePath(path).reduce((o, k, i, _) => { + if (i === _.length - 1) { + // 若遍历结束直接赋值 + o[k] = value + return null + } else if (k in o) { + // 若存在对应路径,则返回找到的对象,进行下一次遍历 + return o[k] + } else { + // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象 + o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {} + return o[k] + } + }, object) + // 返回object + return object; +} + +// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用 +function _basePath(path) { + // 若是数组,则直接返回 + if (Array.isArray(path)) return path + // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']' + return path.replace(/\[/g, '.').replace(/\]/g, '').split('.') +} + +/** + * 从对象中获取值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} defaultVal 如果无法从调用链中获取值的默认值 + */ +export const objGet = (object, path, defaultVal = 'undefined') => { + // 先将path处理成统一格式 + let newPath = _basePath(path) + // 递归处理,返回最后结果 + let val = newPath.reduce((o, k) => { + return (o || {})[k] + }, object); + return !val || val !== undefined ? val : defaultVal +} + + +/** + * 是否为 number 类型 + * @param {any} num 需要判断的值 + * @return {Boolean} 是否为 number + */ +export const isNumber = (num) => { + return !isNaN(Number(num)) +} + +/** + * 是否为 boolean 类型 + * @param {any} bool 需要判断的值 + * @return {Boolean} 是否为 boolean + */ +export const isBoolean = (bool) => { + return (typeof bool === 'boolean') +} +/** + * 是否有必填字段 + * @param {Object} rules 规则 + * @return {Boolean} 是否有必填字段 + */ +export const isRequiredField = (rules) => { + let isNoField = false; + for (let i = 0; i < rules.length; i++) { + const ruleData = rules[i]; + if (ruleData.required) { + isNoField = true; + break; + } + } + return isNoField; +} + + +/** + * 获取数据类型 + * @param {Any} obj 需要获取数据类型的值 + */ +export const type = (obj) => { + var class2type = {}; + + // 生成class2type映射 + "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) { + class2type["[object " + item + "]"] = item.toLowerCase(); + }) + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[Object.prototype.toString.call(obj)] || "object" : + typeof obj; +} + +/** + * 判断两个值是否相等 + * @param {any} a 值 + * @param {any} b 值 + * @return {Boolean} 是否相等 + */ +export const isEqual = (a, b) => { + //如果a和b本来就全等 + if (a === b) { + //判断是否为0和-0 + return a !== 0 || 1 / a === 1 / b; + } + //判断是否为null和undefined + if (a == null || b == null) { + return a === b; + } + //接下来判断a和b的数据类型 + var classNameA = toString.call(a), + classNameB = toString.call(b); + //如果数据类型不相等,则返回false + if (classNameA !== classNameB) { + return false; + } + //如果数据类型相等,再根据不同数据类型分别判断 + switch (classNameA) { + case '[object RegExp]': + case '[object String]': + //进行字符串转换比较 + return '' + a === '' + b; + case '[object Number]': + //进行数字转换比较,判断是否为NaN + if (+a !== +a) { + return +b !== +b; + } + //判断是否为0或-0 + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + } + //如果是对象类型 + if (classNameA == '[object Object]') { + //获取a和b的属性长度 + var propsA = Object.getOwnPropertyNames(a), + propsB = Object.getOwnPropertyNames(b); + if (propsA.length != propsB.length) { + return false; + } + for (var i = 0; i < propsA.length; i++) { + var propName = propsA[i]; + //如果对应属性对应值不相等,则返回false + if (a[propName] !== b[propName]) { + return false; + } + } + return true; + } + //如果是数组类型 + if (classNameA == '[object Array]') { + if (a.toString() == b.toString()) { + return true; + } + return false; + } +} diff --git a/uni_modules/uni-forms/components/uni-forms/validate.js b/uni_modules/uni-forms/components/uni-forms/validate.js new file mode 100644 index 0000000..1834c6c --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/validate.js @@ -0,0 +1,486 @@ +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, + url: new RegExp( + "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", + 'i') +}; + +const FORMAT_MAPPING = { + "int": 'integer', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' + // "fileurls": 'array' +} + +function formatMessage(args, resources = '') { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function(value) { + return typeof value === 'boolean'; + }, + "float": function(value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + return value instanceof Date; + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + return true; + }, + file(value) { + return typeof value.url === 'string'; + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + }, + idcard(value) { + return typeof value === 'string' && !!value.match(pattern.idcard); + }, + 'url-https'(value) { + return this.url(value) && value.startsWith('https://'); + }, + 'url-scheme'(value) { + return value.startsWith('://'); + }, + 'url-web'(value) { + return false; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(fieldKey, fieldValue, value, data, allData) { + var result = null + + let rules = fieldValue.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + Object.assign(rule, { + label: fieldValue.label || `["${fieldKey}"]` + }) + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + if (result !== null) { + result = message.TAG + result + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.arrayType) { + result = 'arrayTypeFormat' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum !== undefined || rule.minimum !== undefined) { + result = 'rangeNumber' + } else if (rule.maxLength !== undefined || rule.minLength !== undefined) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } else if (rule.validateFunction) { + result = 'validateFunction' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { + range, + errorMessage + } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { + minimum, + maximum, + exclusiveMinimum, + exclusiveMaximum + } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ? + 'exclusiveMinimum' : 'minimum' + ]) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ? + 'exclusiveMaximum' : 'maximum' + ]) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].minLength) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].maxLength) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType); + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + } + + return null + }, + + arrayTypeFormat(rule, value, message) { + if (!Array.isArray(value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + + for (let i = 0; i < value.length; i++) { + const element = value[i]; + let formatResult = this.format(rule, element, message) + if (formatResult !== null) { + return formatResult + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(key, value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + + var noExistFields = keys.filter((key) => { + return keys2.indexOf(key) < 0; + }) + var errorMessage = formatMessage({ + field: JSON.stringify(noExistFields) + }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid']) + return [{ + key: 'invalid', + errorMessage + }] + } +} + +function Message() { + return { + TAG: "", + default: '验证错误', + defaultInvalid: '提交的字段{field}在数据库中并不存在', + validateFunction: '验证无效', + required: '{label}必填', + 'enum': '{label}超出范围', + timestamp: '{label}格式无效', + whitespace: '{label}不能为空', + typeError: '{label}类型无效', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + length: { + minLength: '{label}长度不能少于{minLength}', + maxLength: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + minimum: '{label}不能小于{minimum}', + maximum: '{label}不能大于{maximum}', + exclusiveMinimum: '{label}不能小于等于{minimum}', + exclusiveMaximum: '{label}不能大于等于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new Message(); + +export default SchemaValidator diff --git a/uni_modules/uni-forms/package.json b/uni_modules/uni-forms/package.json new file mode 100644 index 0000000..1925611 --- /dev/null +++ b/uni_modules/uni-forms/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-forms", + "displayName": "uni-forms 表单", + "version": "1.4.9", + "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "keywords": [ + "uni-ui", + "表单", + "校验", + "表单校验", + "表单验证" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-forms/readme.md b/uni_modules/uni-forms/readme.md new file mode 100644 index 0000000..63d5a04 --- /dev/null +++ b/uni_modules/uni-forms/readme.md @@ -0,0 +1,23 @@ + + +## Forms 表单 + +> **组件名:uni-forms** +> 代码块: `uForms`、`uni-forms-item` +> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 + + +uni-app的内置组件已经有了 `
`组件,用于提交表单内容。 + +然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 + +`` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 + +每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 + +``组件内部预留了显示error message的区域,默认是在表单项的底部。 + +另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-goods-nav/changelog.md b/uni_modules/uni-goods-nav/changelog.md new file mode 100644 index 0000000..c6264c6 --- /dev/null +++ b/uni_modules/uni-goods-nav/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json new file mode 100644 index 0000000..dcdba41 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "shop", + "uni-goods-nav.options.cart": "cart", + "uni-goods-nav.buttonGroup.addToCart": "add to cart", + "uni-goods-nav.buttonGroup.buyNow": "buy now" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json new file mode 100644 index 0000000..48ee344 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店铺", + "uni-goods-nav.options.cart": "购物车", + "uni-goods-nav.buttonGroup.addToCart": "加入购物车", + "uni-goods-nav.buttonGroup.buyNow": "立即购买" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json new file mode 100644 index 0000000..d0a0255 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店鋪", + "uni-goods-nav.options.cart": "購物車", + "uni-goods-nav.buttonGroup.addToCart": "加入購物車", + "uni-goods-nav.buttonGroup.buyNow": "立即購買" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..8a16b17 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uni-goods-nav/package.json b/uni_modules/uni-goods-nav/package.json new file mode 100644 index 0000000..636e45e --- /dev/null +++ b/uni_modules/uni-goods-nav/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-goods-nav", + "displayName": "uni-goods-nav 商品导航", + "version": "1.2.1", + "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作", + "keywords": [ + "uni-ui", + "uniui", + "商品导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-goods-nav/readme.md b/uni_modules/uni-goods-nav/readme.md new file mode 100644 index 0000000..07df93f --- /dev/null +++ b/uni_modules/uni-goods-nav/readme.md @@ -0,0 +1,10 @@ + + +## GoodsNav 商品导航 +> **组件名:uni-goods-nav** +> 代码块: `uGoodsNav` + +商品加入购物车,立即购买等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-grid/changelog.md b/uni_modules/uni-grid/changelog.md new file mode 100644 index 0000000..d301166 --- /dev/null +++ b/uni_modules/uni-grid/changelog.md @@ -0,0 +1,13 @@ +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) +## 1.3.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.3.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.3.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.4(2021-05-12) +- 新增 组件示例地址 +## 1.2.3(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..20fd54e --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uni-grid/components/uni-grid/uni-grid.vue b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..96a412f --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/uni_modules/uni-grid/package.json b/uni_modules/uni-grid/package.json new file mode 100644 index 0000000..ccb2c91 --- /dev/null +++ b/uni_modules/uni-grid/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-grid", + "displayName": "uni-grid 宫格", + "version": "1.4.0", + "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。", + "keywords": [ + "uni-ui", + "uniui", + "九宫格", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-grid/readme.md b/uni_modules/uni-grid/readme.md new file mode 100644 index 0000000..0aa44cc --- /dev/null +++ b/uni_modules/uni-grid/readme.md @@ -0,0 +1,11 @@ + + +## Grid 宫格 +> **组件名:uni-grid** +> 代码块: `uGrid` + + +宫格组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-group/changelog.md b/uni_modules/uni-group/changelog.md new file mode 100644 index 0000000..a7024fd --- /dev/null +++ b/uni_modules/uni-group/changelog.md @@ -0,0 +1,16 @@ +## 1.2.2(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) +## 1.1.7(2021-11-08) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 优化 组件文档 +## 1.0.3(2021-05-12) +- 新增 组件示例地址 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-group/components/uni-group/uni-group.vue b/uni_modules/uni-group/components/uni-group/uni-group.vue new file mode 100644 index 0000000..3425ecd --- /dev/null +++ b/uni_modules/uni-group/components/uni-group/uni-group.vue @@ -0,0 +1,134 @@ + + + + diff --git a/uni_modules/uni-group/package.json b/uni_modules/uni-group/package.json new file mode 100644 index 0000000..ea00a08 --- /dev/null +++ b/uni_modules/uni-group/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-group", + "displayName": "uni-group 分组", + "version": "1.2.2", + "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块", + "keywords": [ + "uni-ui", + "uniui", + "group", + "分组", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-group/readme.md b/uni_modules/uni-group/readme.md new file mode 100644 index 0000000..bae67f4 --- /dev/null +++ b/uni_modules/uni-group/readme.md @@ -0,0 +1,9 @@ + +## Group 分组 +> **组件名:uni-group** +> 代码块: `uGroup` + +分组组件可用于将组件分组,添加间隔,以产生明显的区块。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000..835f33b Binary files /dev/null and b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf differ diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-indexed-list/changelog.md b/uni_modules/uni-indexed-list/changelog.md new file mode 100644 index 0000000..08fa71c --- /dev/null +++ b/uni_modules/uni-indexed-list/changelog.md @@ -0,0 +1,17 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..2f13bae --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..35e168c --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,367 @@ + + + diff --git a/uni_modules/uni-indexed-list/package.json b/uni_modules/uni-indexed-list/package.json new file mode 100644 index 0000000..125c0e7 --- /dev/null +++ b/uni_modules/uni-indexed-list/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-indexed-list", + "displayName": "uni-indexed-list 索引列表", + "version": "1.2.1", + "description": "索引列表组件,右侧带索引的列表,方便快速定位到具体内容,通常用于城市/机场选择等场景", + "keywords": [ + "uni-ui", + "索引列表", + "索引", + "列表" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-indexed-list/readme.md b/uni_modules/uni-indexed-list/readme.md new file mode 100644 index 0000000..44ad84b --- /dev/null +++ b/uni_modules/uni-indexed-list/readme.md @@ -0,0 +1,11 @@ + + +## IndexedList 索引列表 +> **组件名:uni-indexed-list** +> 代码块: `uIndexedList` + + +用于展示索引列表。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-link/changelog.md b/uni_modules/uni-link/changelog.md new file mode 100644 index 0000000..2cfbf59 --- /dev/null +++ b/uni_modules/uni-link/changelog.md @@ -0,0 +1,17 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) +## 1.1.7(2021-11-08) +## 0.0.7(2021-09-03) +- 修复 在 nvue 下不显示的 bug +## 0.0.6(2021-07-30) +- 新增 支持自定义插槽 +## 0.0.5(2021-06-21) +- 新增 download 属性,H5平台下载文件名 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-03-09) +- 新增 href 属性支持 tel:|mailto: + +## 0.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-link/components/uni-link/uni-link.vue b/uni_modules/uni-link/components/uni-link/uni-link.vue new file mode 100644 index 0000000..27c5468 --- /dev/null +++ b/uni_modules/uni-link/components/uni-link/uni-link.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uni-link/package.json b/uni_modules/uni-link/package.json new file mode 100644 index 0000000..77b1986 --- /dev/null +++ b/uni_modules/uni-link/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-link", + "displayName": "uni-link 超链接", + "version": "1.0.0", + "description": "uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打", + "keywords": [ + "uni-ui", + "uniui", + "link", + "超链接", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-link/readme.md b/uni_modules/uni-link/readme.md new file mode 100644 index 0000000..7f09e94 --- /dev/null +++ b/uni_modules/uni-link/readme.md @@ -0,0 +1,11 @@ + + +## Link 链接 +> **组件名:uni-link** +> 代码块: `uLink` + + +uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-list/changelog.md b/uni_modules/uni-list/changelog.md new file mode 100644 index 0000000..8254a18 --- /dev/null +++ b/uni_modules/uni-list/changelog.md @@ -0,0 +1,46 @@ +## 1.2.14(2023-04-14) +- 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +## 1.2.13(2023-03-03) +- uni-list-chat 新增 支持具名插槽`header` +## 1.2.12(2023-02-01) +- 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +## 1.2.11(2023-01-31) +- 修复 无反馈效果呈现的bug +## 1.2.9(2022-11-22) +- 修复 uni-list-chat 在vue3下跳转报错的bug +## 1.2.8(2022-11-21) +- 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +## 1.2.7(2022-11-21) +- 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +## 1.2.6(2022-11-18) +- 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +## 1.2.5(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +## 1.2.4(2022-11-15) +- 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +## 1.2.3(2022-11-14) +- uni-list-chat 新增 avatar 支持 fileId +## 1.2.2(2022-11-11) +- uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +## 1.2.1(2022-03-30) +- 删除无用文件 +## 1.2.0(2021-11-23) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-list](https://uniapp.dcloud.io/component/uniui/uni-list) +## 1.1.3(2021-08-30) +- 修复 在vue3中to属性在发行应用的时候报错的bug +## 1.1.2(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.1(2021-07-21) +- 修复 与其他组件嵌套使用时,点击失效的Bug +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.17(2021-05-12) +- 新增 组件示例地址 +## 1.0.16(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.15(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 uni-list-chat 角标显示不正常的问题 diff --git a/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue new file mode 100644 index 0000000..b9349c2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss new file mode 100644 index 0000000..311f8d9 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss @@ -0,0 +1,58 @@ +/** + * 这里是 uni-list 组件内置的常用样式变量 + * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码 + * + */ + +// 背景色 +$background-color : #fff; +// 分割线颜色 +$divide-line-color : #e5e5e5; + +// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像 +// nvue 页面不支持修改头像大小 +$avatar-width : 45px ; + +// 头像边框 +$avatar-border-radius: 5px; +$avatar-border-color: #eee; +$avatar-border-width: 1px; + +// 标题文字样式 +$title-size : 16px; +$title-color : #3b4144; +$title-weight : normal; + +// 描述文字样式 +$note-size : 12px; +$note-color : #999; +$note-weight : normal; + +// 右侧额外内容默认样式 +$right-text-size : 12px; +$right-text-color : #999; +$right-text-weight : normal; + +// 角标样式 +// nvue 页面不支持修改圆点位置以及大小 +// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动 +$badge-left: 0px; +$badge-top: 0px; + +// 显示圆点时,圆点大小 +$dot-width: 10px; +$dot-height: 10px; + +// 显示角标时,角标大小和字体大小 +$badge-size : 18px; +$badge-font : 12px; +// 显示角标时,角标前景色 +$badge-color : #fff; +// 显示角标时,角标背景色 +$badge-background-color : #ff5a5f; +// 显示角标时,角标左右间距 +$badge-space : 6px; + +// 状态样式 +// 选中颜色 +$hover : #f5f5f5; diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue new file mode 100644 index 0000000..d49fd7c --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue @@ -0,0 +1,593 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue new file mode 100644 index 0000000..a274ac8 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue @@ -0,0 +1,534 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uni-list/components/uni-list/uni-list.vue b/uni_modules/uni-list/components/uni-list/uni-list.vue new file mode 100644 index 0000000..6ef5972 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-list.vue @@ -0,0 +1,123 @@ + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.vue b/uni_modules/uni-list/components/uni-list/uni-refresh.vue new file mode 100644 index 0000000..3b4c5a2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.wxs b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs new file mode 100644 index 0000000..818a6b7 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs @@ -0,0 +1,87 @@ +var pullDown = { + threshold: 95, + maxHeight: 200, + callRefresh: 'onrefresh', + callPullingDown: 'onpullingdown', + refreshSelector: '.uni-refresh' +}; + +function ready(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.canPullDown = newValue; + // console.log(newValue); +} + +function touchStart(e, instance) { + var state = instance.getState(); + state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); + state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); + if (!state.canPullDown) { + return + } + + // console.log("touchStart"); + + state.height = 0; + state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; + state.refreshInstance.setStyle({ + 'height': 0 + }); + state.refreshInstance.callMethod("onchange", true); +} + +function touchMove(e, ownerInstance) { + var instance = e.instance; + var state = instance.getState(); + if (!state.canPullDown) { + return + } + + var oldHeight = state.height; + var endY = e.touches[0].pageY || e.changedTouches[0].pageY; + var height = endY - state.touchStartY; + if (height > pullDown.maxHeight) { + return; + } + + var refreshInstance = state.refreshInstance; + refreshInstance.setStyle({ + 'height': height + 'px' + }); + + height = height < pullDown.maxHeight ? height : pullDown.maxHeight; + state.height = height; + refreshInstance.callMethod(pullDown.callPullingDown, { + height: height + }); +} + +function touchEnd(e, ownerInstance) { + var state = e.instance.getState(); + if (!state.canPullDown) { + return + } + + state.refreshInstance.callMethod("onchange", false); + + var refreshInstance = state.refreshInstance; + if (state.height > pullDown.threshold) { + refreshInstance.callMethod(pullDown.callRefresh); + return; + } + + refreshInstance.setStyle({ + 'height': 0 + }); +} + +function propObserver(newValue, oldValue, instance) { + pullDown = newValue; +} + +module.exports = { + touchmove: touchMove, + touchstart: touchStart, + touchend: touchEnd, + propObserver: propObserver +} diff --git a/uni_modules/uni-list/package.json b/uni_modules/uni-list/package.json new file mode 100644 index 0000000..8350efc --- /dev/null +++ b/uni_modules/uni-list/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-list", + "displayName": "uni-list 列表", + "version": "1.2.14", + "description": "List 组件 ,帮助使用者快速构建列表。", + "keywords": [ + "", + "uni-ui", + "uniui", + "列表", + "", + "list" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-list/readme.md b/uni_modules/uni-list/readme.md new file mode 100644 index 0000000..32c2865 --- /dev/null +++ b/uni_modules/uni-list/readme.md @@ -0,0 +1,346 @@ +## List 列表 +> **组件名:uni-list** +> 代码块: `uList`、`uListItem` +> 关联组件:`uni-list-item`、`uni-badge`、`uni-icons`、`uni-list-chat`、`uni-list-ad` + + +List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。 + +在vue页面里,它默认使用页面级滚动。在app-nvue页面里,它默认使用原生list组件滚动。这样的长列表,在滚动出屏幕外后,系统会回收不可见区域的渲染内存资源,不会造成滚动越长手机越卡的问题。 + +uni-list组件是父容器,里面的核心是uni-list-item子组件,它代表列表中的一个可重复行,子组件可以无限循环。 + +uni-list-item有很多风格,uni-list-item组件通过内置的属性,满足一些常用的场景。当内置属性不满足需求时,可以通过扩展插槽来自定义列表内容。 + +内置属性可以覆盖的场景包括:导航列表、设置列表、小图标列表、通信录列表、聊天记录列表。 + +涉及很多大图或丰富内容的列表,比如类今日头条的新闻列表、类淘宝的电商列表,需要通过扩展插槽实现。 + +下文均有样例给出。 + +uni-list不包含下拉刷新和上拉翻页。上拉翻页另见组件:[uni-load-more](https://ext.dcloud.net.cn/plugin?id=29) + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 组件需要依赖 `sass` 插件 ,请自行手动安装 +> - 组件内部依赖 `'uni-icons'` 、`uni-badge` 组件 +> - `uni-list` 和 `uni-list-item` 需要配套使用,暂不支持单独使用 `uni-list-item` +> - 只有开启点击反馈后,会有点击选中效果 +> - 使用插槽时,可以完全自定义内容 +> - note 、rightText 属性暂时没做限制,不支持文字溢出隐藏,使用时应该控制长度显示或通过默认插槽自行扩展 +> - 支付宝小程序平台需要在支付宝小程序开发者工具里开启 component2 编译模式,开启方式: 详情 --> 项目配置 --> 启用 component2 编译 +> - 如果需要修改 `switch`、`badge` 样式,请使用插槽自定义 +> - 在 `HBuilderX` 低版本中,可能会出现组件显示 `undefined` 的问题,请升级最新的 `HBuilderX` 或者 `cli` +> - 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + +### 基本用法 + +- 设置 `title` 属性,可以显示列表标题 +- 设置 `disabled` 属性,可以禁用当前项 + +```html + + + + + +``` + +### 多行内容显示 + +- 设置 `note` 属性 ,可以在第二行显示描述文本信息 + +```html + + + + + +``` + +### 右侧显示角标、switch + +- 设置 `show-badge` 属性 ,可以显示角标内容 +- 设置 `show-switch` 属性,可以显示 switch 开关 + +```html + + + + + +``` + +### 左侧显示略缩图、图标 + +- 设置 `thumb` 属性 ,可以在列表左侧显示略缩图 +- 设置 `show-extra-icon` 属性,并指定 `extra-icon` 可以在左侧显示图标 + +```html + + + + +``` + +### 开启点击反馈和右侧箭头 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,并给列表右侧添加一个箭头 +- 设置 `to` 属性,可以跳转页面,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` + +```html + + + + + + + +``` + + +### 聊天列表示例 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` +- 设置 `to` 属性,可以跳转页面 +- `time` 属性,通常会设置成时间显示,但是这个属性不仅仅可以设置时间,你可以传入任何文本,注意文本长度可能会影响显示 +- `avatar` 和 `avatarList` 属性同时只会有一个生效,同时设置的话,`avatarList` 属性的长度大于1 ,`avatar` 属性将失效 +- 可以通过默认插槽自定义列表右侧内容 + +```html + + + + + + + + + + + + + + + + + 刚刚 + + + + + + + +``` + +```javascript + +export default { + components: {}, + data() { + return { + avatarList: [{ + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }] + } + } +} + +``` + + +```css + +.chat-custom-right { + flex: 1; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + justify-content: space-between; + align-items: flex-end; +} + +.chat-custom-text { + font-size: 12px; + color: #999; +} + +``` + +## API + +### List Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +border |Boolean |true | 是否显示边框 + + +### ListItem Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +ellipsis |Number |0 | title 是否溢出隐藏,可选值,0:默认; 1:显示一行; 2:显示两行;【nvue 暂不支持】 +thumb |String |- | 左侧缩略图,若thumb有值,则不会显示扩展图标 +thumbSize |String |medium | 略缩图尺寸,可选值,lg:大图; medium:一般; sm:小图; +showBadge |Boolean |false | 是否显示数字角标 +badgeText |String |- | 数字角标内容 +badgeType |String |- | 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21) +badgeStyle |Object |- | 数字角标样式,使用uni-badge的custom-style参数 +rightText |String |- | 右侧文字内容 +disabled |Boolean |false | 是否禁用 +showArrow |Boolean |true | 是否显示箭头图标 +link |String |navigateTo | 新页面跳转方式,可选值见下表 +to |String |- | 新页面跳转地址,如填写此属性,click 会返回页面是否跳转成功 +clickable |Boolean |false | 是否开启点击反馈 +showSwitch |Boolean |false | 是否显示Switch +switchChecked |Boolean |false | Switch是否被选中 +showExtraIcon |Boolean |false | 左侧是否显示扩展图标 +extraIcon |Object |- | 扩展图标参数,格式为 ``{color: '#4cd964',size: '22',type: 'spinner'}``,参考 [uni-icons](https://ext.dcloud.net.cn/plugin?id=28) +direction | String |row | 排版方向,可选值,row:水平排列; column:垂直排列; 3个插槽是水平排还是垂直排,也受此属性控制 + + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItem Events + +事件称名 |说明 |返回参数 +:-: |:-: |:-: +click |点击 uniListItem 触发事件,需开启点击反馈 |- +switchChange |点击切换 Switch 时触发,需显示 switch |e={value:checked} + + + +### ListItem Slots + +名称 | 说明 +:-: | :-: +header | 左/上内容插槽,可完全自定义默认显示 +body | 中间内容插槽,可完全自定义中间内容 +footer | 右/下内容插槽,可完全自定义右侧内容 + + +> **通过插槽扩展** +> 需要注意的是当使用插槽时,内置样式将会失效,只保留排版样式,此时的样式需要开发者自己实现 +> 如果 `uni-list-item` 组件内置属性样式无法满足需求,可以使用插槽来自定义uni-list-item里的内容。 +> uni-list-item提供了3个可扩展的插槽:`header`、`body`、`footer` +> - 当 `direction` 属性为 `row` 时表示水平排列,此时 `header` 表示列表的左边部分,`body` 表示列表的中间部分,`footer` 表示列表的右边部分 +> - 当 `direction` 属性为 `column` 时表示垂直排列,此时 `header` 表示列表的上边部分,`body` 表示列表的中间部分,`footer` 表示列表的下边部分 +> 开发者可以只用1个插槽,也可以3个一起使用。在插槽中可自主编写view标签,实现自己所需的效果。 + + +**示例** + +```html + + + + + + + + + 自定义插槽 + + + + +``` + + + + + +### ListItemChat Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +clickable |Boolean |false | 是否开启点击反馈 +badgeText |String |- | 数字角标内容,设置为 `dot` 将显示圆点 +badgePositon |String |right | 角标位置 +link |String |navigateTo | 是否展示右侧箭头并开启点击反馈,可选值见下表 +clickable |Boolean |false | 是否开启点击反馈 +to |String |- | 跳转页面地址,如填写此属性,click 会返回页面是否跳转成功 +time |String |- | 右侧时间显示 +avatarCircle |Boolean |false | 是否显示圆形头像 +avatar |String |- | 头像地址,avatarCircle 不填时生效 +avatarList |Array |- | 头像组,格式为 [{url:''}] + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItemChat Slots + +名称 | 说明 +:- | :- +default | 自定义列表右侧内容(包括时间和角标显示) + +### ListItemChat Events +事件称名 | 说明 | 返回参数 +:-: | :-: | :-: +@click | 点击 uniListChat 触发事件 | {data:{}} ,如有 to 属性,会返回页面跳转信息 + + + + + + +## 基于uni-list扩展的页面模板 + +通过扩展插槽,可实现多种常见样式的列表 + +**新闻列表类** + +1. 云端一体混合布局:[https://ext.dcloud.net.cn/plugin?id=2546](https://ext.dcloud.net.cn/plugin?id=2546) +2. 云端一体垂直布局,大图模式:[https://ext.dcloud.net.cn/plugin?id=2583](https://ext.dcloud.net.cn/plugin?id=2583) +3. 云端一体垂直布局,多行图文混排:[https://ext.dcloud.net.cn/plugin?id=2584](https://ext.dcloud.net.cn/plugin?id=2584) +4. 云端一体垂直布局,多图模式:[https://ext.dcloud.net.cn/plugin?id=2585](https://ext.dcloud.net.cn/plugin?id=2585) +5. 云端一体水平布局,左图右文:[https://ext.dcloud.net.cn/plugin?id=2586](https://ext.dcloud.net.cn/plugin?id=2586) +6. 云端一体水平布局,左文右图:[https://ext.dcloud.net.cn/plugin?id=2587](https://ext.dcloud.net.cn/plugin?id=2587) +7. 云端一体垂直布局,无图模式,主标题+副标题:[https://ext.dcloud.net.cn/plugin?id=2588](https://ext.dcloud.net.cn/plugin?id=2588) + +**商品列表类** + +1. 云端一体列表/宫格视图互切:[https://ext.dcloud.net.cn/plugin?id=2651](https://ext.dcloud.net.cn/plugin?id=2651) +2. 云端一体列表(宫格模式):[https://ext.dcloud.net.cn/plugin?id=2671](https://ext.dcloud.net.cn/plugin?id=2671) +3. 云端一体列表(列表模式):[https://ext.dcloud.net.cn/plugin?id=2672](https://ext.dcloud.net.cn/plugin?id=2672) + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/list/list](https://hellouniapp.dcloud.net.cn/pages/extUI/list/list) \ No newline at end of file diff --git a/uni_modules/uni-load-more/changelog.md b/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/uni_modules/uni-load-more/package.json b/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-load-more/readme.md b/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-nav-bar/changelog.md b/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..0f9a2f1 --- /dev/null +++ b/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,51 @@ +## 1.3.11(2023-03-29) +- 修复 自定义状态栏高度闪动BUG +## 1.3.10(2023-03-29) +- 修复 暗黑模式下边线颜色错误的bug +## 1.3.9(2022-10-13) +- 修复 条件编译错误的bug +## 1.3.8(2022-10-12) +- 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.7(2022-08-11) +- 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..c890860 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,357 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..4ac73ae --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/package.json b/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..240ae95 --- /dev/null +++ b/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.11", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-nav-bar/readme.md b/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-notice-bar/changelog.md b/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..d526811 --- /dev/null +++ b/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-09-05) +- 新增 属性 fontSize,可修改文字大小。 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..98d4720 --- /dev/null +++ b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/uni_modules/uni-notice-bar/package.json b/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..8d9b13c --- /dev/null +++ b/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.2.1", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-notice-bar/readme.md b/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..fb2ede2 --- /dev/null +++ b/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,13 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-number-box/changelog.md b/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..5925c32 --- /dev/null +++ b/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,25 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..e91c032 --- /dev/null +++ b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,221 @@ + + + diff --git a/uni_modules/uni-number-box/package.json b/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..ad82336 --- /dev/null +++ b/uni_modules/uni-number-box/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.1", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-number-box/readme.md b/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-pagination/changelog.md b/uni_modules/uni-pagination/changelog.md new file mode 100644 index 0000000..2e94adc --- /dev/null +++ b/uni_modules/uni-pagination/changelog.md @@ -0,0 +1,27 @@ +## 1.2.4(2022-09-19) +- 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- 修复,未对移动端当前页文字做主题色适配。 +## 1.2.3(2022-09-15) +- 修复未使用 uni-scss 主题色的 bug。 +## 1.2.2(2022-07-06) +- 修复 es 语言 i18n 错误 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) +## 1.1.2(2021-10-08) +- 修复 current 、value 属性未监听,导致高亮样式失效的 bug +## 1.1.1(2021-08-20) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-12) +- 新增 PC 和 移动端适配不同的 ui +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json new file mode 100644 index 0000000..d6e2897 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "prev", + "uni-pagination.nextText": "next", + "uni-pagination.piecePerPage": "piece/page" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json new file mode 100644 index 0000000..604a113 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "anterior", + "uni-pagination.nextText": "prxima", + "uni-pagination.piecePerPage": "Artculo/Pgina" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json new file mode 100644 index 0000000..a7a0c77 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "précédente", + "uni-pagination.nextText": "suivante", + "uni-pagination.piecePerPage": "Articles/Pages" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json new file mode 100644 index 0000000..782bbe4 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一页", + "uni-pagination.nextText": "下一页", + "uni-pagination.piecePerPage": "条/页" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json new file mode 100644 index 0000000..180fddb --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一頁", + "uni-pagination.nextText": "下一頁", + "uni-pagination.piecePerPage": "條/頁" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..5305b5f --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/uni_modules/uni-pagination/package.json b/uni_modules/uni-pagination/package.json new file mode 100644 index 0000000..862d5ab --- /dev/null +++ b/uni_modules/uni-pagination/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-pagination", + "displayName": "uni-pagination 分页器", + "version": "1.2.4", + "description": "Pagination 分页器组件,用于展示页码、请求数据等。", + "keywords": [ + "uni-ui", + "uniui", + "分页器", + "页码" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-pagination/readme.md b/uni_modules/uni-pagination/readme.md new file mode 100644 index 0000000..97ea1d6 --- /dev/null +++ b/uni_modules/uni-pagination/readme.md @@ -0,0 +1,11 @@ + + +## Pagination 分页器 +> **组件名:uni-pagination** +> 代码块: `uPagination` + + +分页器组件,用于展示页码、请求数据等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..bc59f07 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,68 @@ +## 1.8.3(2023-04-17) +- 修复 uni-popup 重复打开时的 bug +## 1.8.2(2023-02-02) +- uni-popup-dialog 组件新增 inputType 属性 +## 1.8.1(2022-12-01) +- 修复 nvue 下 v-show 报错 +## 1.8.0(2022-11-29) +- 优化 主题样式 +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..b5eee79 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..5be7624 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..54afee2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,473 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..f40556b --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.8.3", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-rate/changelog.md b/uni_modules/uni-rate/changelog.md new file mode 100644 index 0000000..8a98a61 --- /dev/null +++ b/uni_modules/uni-rate/changelog.md @@ -0,0 +1,25 @@ +## 1.3.1(2022-02-25) +- 修复 条件判断 `NaN` 错误的 bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) +## 1.2.2(2021-09-10) +- 优化 默认值修改为 0 颗星 +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-05-12) +- 新增 组件示例地址 +## 1.1.1(2021-04-21) +- 修复 布局变化后 uni-rate 星星计算不准确的 bug +- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +## 1.1.0(2021-04-16) +- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug + +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 支持 pc 端 diff --git a/uni_modules/uni-rate/components/uni-rate/uni-rate.vue b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..9802dfc --- /dev/null +++ b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue @@ -0,0 +1,365 @@ + + + + + diff --git a/uni_modules/uni-rate/package.json b/uni_modules/uni-rate/package.json new file mode 100644 index 0000000..64e8e33 --- /dev/null +++ b/uni_modules/uni-rate/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-rate", + "displayName": "uni-rate 评分", + "version": "1.3.1", + "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。", + "keywords": [ + "uni-ui", + "uniui", + "评分" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-rate/readme.md b/uni_modules/uni-rate/readme.md new file mode 100644 index 0000000..eae7b5c --- /dev/null +++ b/uni_modules/uni-rate/readme.md @@ -0,0 +1,12 @@ + + +## Rate 评分 +> **组件名:uni-rate** +> 代码块: `uRate` +> 关联组件:`uni-icons` + + +评分组件,多用于购买商品后,对商品进行评价等场景 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-row/changelog.md b/uni_modules/uni-row/changelog.md new file mode 100644 index 0000000..5b465bc --- /dev/null +++ b/uni_modules/uni-row/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 新增uni-row组件 diff --git a/uni_modules/uni-row/components/uni-col/uni-col.vue b/uni_modules/uni-row/components/uni-col/uni-col.vue new file mode 100644 index 0000000..d5f3728 --- /dev/null +++ b/uni_modules/uni-row/components/uni-col/uni-col.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/uni-row/components/uni-row/uni-row.vue b/uni_modules/uni-row/components/uni-row/uni-row.vue new file mode 100644 index 0000000..c7d9370 --- /dev/null +++ b/uni_modules/uni-row/components/uni-row/uni-row.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/uni_modules/uni-row/package.json b/uni_modules/uni-row/package.json new file mode 100644 index 0000000..3f52fa6 --- /dev/null +++ b/uni_modules/uni-row/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-row", + "displayName": "uni-row 布局-行", + "version": "1.0.0", + "description": "流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。", + "keywords": [ + "uni-ui", + "uniui", + "栅格", + "布局", + "layout" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-row/readme.md b/uni_modules/uni-row/readme.md new file mode 100644 index 0000000..3c9c8b9 --- /dev/null +++ b/uni_modules/uni-row/readme.md @@ -0,0 +1,10 @@ +## Layout 布局 + +> **组件名 uni-row、uni-col** +> 代码块: `uRow`、`uCol` + + +流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-search-bar/changelog.md b/uni_modules/uni-search-bar/changelog.md new file mode 100644 index 0000000..b41fdd3 --- /dev/null +++ b/uni_modules/uni-search-bar/changelog.md @@ -0,0 +1,33 @@ +## 1.2.3(2022-05-24) +- 新增 readonly 属性,组件只读 +## 1.2.2(2022-05-06) +- 修复 vue3 input 事件不生效的bug +## 1.2.1(2022-05-06) +- 修复 多余代码导致的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +## 1.1.2(2021-08-30) +- 修复 value 属性与 modelValue 属性不兼容的Bug +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 项目示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-04-15) +- uni-ui 新增 uni-search-bar 的 focus 事件 + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持双向绑定 +- 更改 input 事件的返回值,e={value:Number} --> e=value +- 新增 支持图标插槽 +- 新增 支持 clear、blur 事件 +- 新增 支持 focus 属性 +- 去掉组件背景色 diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json new file mode 100644 index 0000000..dd083a5 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "Search enter content" +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json new file mode 100644 index 0000000..d4e5c12 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "请输入搜索内容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json new file mode 100644 index 0000000..318b6ef --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "請輸入搜索內容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..5a518a8 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/uni_modules/uni-search-bar/package.json b/uni_modules/uni-search-bar/package.json new file mode 100644 index 0000000..9352c57 --- /dev/null +++ b/uni_modules/uni-search-bar/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-search-bar", + "displayName": "uni-search-bar 搜索栏", + "version": "1.2.3", + "description": "搜索栏组件,通常用于搜索商品、文章等", + "keywords": [ + "uni-ui", + "uniui", + "搜索框", + "搜索栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/readme.md b/uni_modules/uni-search-bar/readme.md new file mode 100644 index 0000000..253092f --- /dev/null +++ b/uni_modules/uni-search-bar/readme.md @@ -0,0 +1,14 @@ + + +## SearchBar 搜索栏 + +> **组件名:uni-search-bar** +> 代码块: `uSearchBar` + + +搜索栏组件 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-section/changelog.md b/uni_modules/uni-section/changelog.md new file mode 100644 index 0000000..738f2b3 --- /dev/null +++ b/uni_modules/uni-section/changelog.md @@ -0,0 +1,2 @@ +## 0.0.1(2022-07-22) +- 初始化 diff --git a/uni_modules/uni-section/components/uni-section/uni-section.vue b/uni_modules/uni-section/components/uni-section/uni-section.vue new file mode 100644 index 0000000..9a52e0b --- /dev/null +++ b/uni_modules/uni-section/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/uni_modules/uni-section/package.json b/uni_modules/uni-section/package.json new file mode 100644 index 0000000..0a31fb5 --- /dev/null +++ b/uni_modules/uni-section/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-section", + "displayName": "uni-section 标题栏", + "version": "0.0.1", + "description": "标题栏组件", + "keywords": [ + "uni-ui", + "uniui", + "标题栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-section/readme.md b/uni_modules/uni-section/readme.md new file mode 100644 index 0000000..d47faab --- /dev/null +++ b/uni_modules/uni-section/readme.md @@ -0,0 +1,8 @@ +## Section 标题栏 +> **组件名:uni-section** +> 代码块: `uSection` + +uni-section 组件主要用于文章、列表详情等标题展示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-segmented-control/changelog.md b/uni_modules/uni-segmented-control/changelog.md new file mode 100644 index 0000000..a44385d --- /dev/null +++ b/uni_modules/uni-segmented-control/changelog.md @@ -0,0 +1,9 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-05-12) +- 新增 项目示例地址 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..e8bb3e5 --- /dev/null +++ b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/uni_modules/uni-segmented-control/package.json b/uni_modules/uni-segmented-control/package.json new file mode 100644 index 0000000..6cae41d --- /dev/null +++ b/uni_modules/uni-segmented-control/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-segmented-control", + "displayName": "uni-segmented-control 分段器", + "version": "1.2.0", + "description": "分段器由至少 2 个分段控件组成,用作不同视图的显示", + "keywords": [ + "uni-ui", + "uniui", + "分段器", + "segement", + "顶部选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-segmented-control/readme.md b/uni_modules/uni-segmented-control/readme.md new file mode 100644 index 0000000..3527b03 --- /dev/null +++ b/uni_modules/uni-segmented-control/readme.md @@ -0,0 +1,13 @@ + + +## SegmentedControl 分段器 +> **组件名:uni-segmented-control** +> 代码块: `uSegmentedControl` + + +用作不同视图的显示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-steps/changelog.md b/uni_modules/uni-steps/changelog.md new file mode 100644 index 0000000..cb9d367 --- /dev/null +++ b/uni_modules/uni-steps/changelog.md @@ -0,0 +1,16 @@ +## 1.1.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) +## 1.0.8(2021-05-12) +- 新增 项目示例地址 +## 1.0.7(2021-05-06) +- 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-steps/components/uni-steps/uni-steps.vue b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..a6c8f28 --- /dev/null +++ b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/uni_modules/uni-steps/package.json b/uni_modules/uni-steps/package.json new file mode 100644 index 0000000..c687b40 --- /dev/null +++ b/uni_modules/uni-steps/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-steps", + "displayName": "uni-steps 步骤条", + "version": "1.1.1", + "description": "步骤条组件,提供横向和纵向两种布局格式。", + "keywords": [ + "uni-ui", + "uniui", + "步骤条", + "时间轴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-steps/readme.md b/uni_modules/uni-steps/readme.md new file mode 100644 index 0000000..da7a4bf --- /dev/null +++ b/uni_modules/uni-steps/readme.md @@ -0,0 +1,13 @@ + + +## Steps 步骤条 +> **组件名:uni-steps** +> 代码块: `uSteps` + + +步骤条,常用于显示进度 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-swipe-action/changelog.md b/uni_modules/uni-swipe-action/changelog.md new file mode 100644 index 0000000..c916427 --- /dev/null +++ b/uni_modules/uni-swipe-action/changelog.md @@ -0,0 +1,43 @@ +## 1.3.8(2023-04-13) +- 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +## 1.3.7(2022-06-06) +- 修复 vue3 下使用组件不能正常运行的Bug +## 1.3.6(2022-05-31) +- 修复 h5端点击click触发两次的Bug +## 1.3.5(2022-05-23) +- 修复 isPC 找不到的Bug +## 1.3.4(2022-05-19) +- 修复 在 nvue 下 disabled 失效的bug +## 1.3.3(2022-03-31) +- 修复 按钮字体大小不能设置的bug +## 1.3.2(2022-03-16) +- 修复 h5和app端下报el错误的bug +## 1.3.1(2022-03-07) +- 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swipe-action](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +## 1.2.4(2021-08-20) +- 优化 close-all 方法 +## 1.2.3(2021-08-20) +- 新增 close-all 方法,关闭所有已打开的组件 +## 1.2.2(2021-08-17) +- 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.2.1(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.1.10(2021-06-17) +- 修复 按钮点击执行两次的bug +## 1.1.9(2021-05-12) +- 新增 项目示例地址 +## 1.1.8(2021-03-26) +- 修复 微信小程序 nv_navigator is not defined 报错的bug +## 1.1.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 左侧滑动 +- 新增 插槽使用方式 +- 新增 threshold 属性,可以控制滑动缺省值 +- 优化 长列表滚动性能 +- 修复 滚动页面时触发组件滑动的Bug diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..707e432 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,302 @@ +let bindIngXMixins = {} + +// #ifdef APP-NVUE +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +bindIngXMixins = { + data() { + return {} + }, + + watch: { + show(newVal) { + if (this.autoClose) return + if (this.stop) return + this.stop = true + if (newVal) { + this.open(newVal) + } else { + this.close() + } + }, + leftOptions() { + this.getSelectorQuery() + this.init() + }, + rightOptions(newVal) { + this.init() + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.box = this.getEl(this.$refs['selector-box--hock']) + this.selector = this.getEl(this.$refs['selector-content--hock']); + this.leftButton = this.getEl(this.$refs['selector-left-button--hock']); + this.rightButton = this.getEl(this.$refs['selector-right-button--hock']); + this.init() + }, + // beforeDestroy() { + // this.swipeaction.children.forEach((item, index) => { + // if (item === this) { + // this.swipeaction.children.splice(index, 1) + // } + // }) + // }, + methods: { + init() { + this.$nextTick(() => { + this.x = 0 + this.button = { + show: false + } + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }) + }, + onClick(index, item, position) { + this.$emit('click', { + content: item, + index, + position + }) + }, + touchstart(e) { + // fix by mehaotian 禁止滑动 + if (this.disabled) return + // 每次只触发一次,避免多次监听造成闪烁 + if (this.stop) return + this.stop = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + let expression = this.range(this.x, -rightWidth, leftWidth) + let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0) + let rightExpression = this.range(this.x + rightWidth, 0, rightWidth) + + this.eventpan = BindingX.bind({ + anchor: this.box, + eventType: 'pan', + props: [{ + element: this.selector, + property: 'transform.translateX', + expression + }, { + element: this.leftButton, + property: 'transform.translateX', + expression: leftExpression + }, { + element: this.rightButton, + property: 'transform.translateX', + expression: rightExpression + }, ] + }, (e) => { + // nope + if (e.state === 'end') { + this.x = e.deltaX + this.x; + this.isclick = true + this.bindTiming(e.deltaX) + } + }); + }, + touchend(e) { + if (this.isopen !== 'none' && !this.isclick) { + this.open('none') + } + }, + bindTiming(x) { + const left = this.x + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + const threshold = this.threshold + if (!this.isopen || this.isopen === 'none') { + if (left > threshold) { + this.open('left') + } else if (left < -threshold) { + this.open('right') + } else { + this.open('none') + } + } else { + if ((x > -leftWidth && x < 0) || x > rightWidth) { + if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) { + this.open('left') + } else { + this.open('none') + } + } else { + if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) { + this.open('right') + } else { + this.open('none') + } + } + } + }, + + /** + * 移动范围 + * @param {Object} num + * @param {Object} mix + * @param {Object} max + */ + range(num, mix, max) { + return `min(max(x+${num}, ${mix}), ${max})` + }, + + /** + * 开启swipe + */ + open(type) { + this.animation(type) + }, + + /** + * 关闭swipe + */ + close() { + this.animation('none') + }, + + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + const time = 300 + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + if (this.eventpan && this.eventpan.token) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + + switch (type) { + case 'left': + Promise.all([ + this.move(this.selector, leftWidth), + this.move(this.leftButton, 0), + this.move(this.rightButton, rightWidth * 2) + ]).then(() => { + this.setEmit(leftWidth, type) + }) + break + case 'right': + Promise.all([ + this.move(this.selector, -rightWidth), + this.move(this.leftButton, -leftWidth * 2), + this.move(this.rightButton, 0) + ]).then(() => { + this.setEmit(-rightWidth, type) + }) + break + default: + Promise.all([ + this.move(this.selector, 0), + this.move(this.leftButton, -leftWidth), + this.move(this.rightButton, rightWidth) + ]).then(() => { + this.setEmit(0, type) + }) + + } + }, + setEmit(x, type) { + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + this.isopen = this.isopen || 'none' + this.stop = false + this.isclick = false + // 只有状态不一致才会返回结果 + if (this.isopen !== type && this.x !== x) { + if (type === 'left' && leftWidth > 0) { + this.$emit('change', 'left') + } + if (type === 'right' && rightWidth > 0) { + this.$emit('change', 'right') + } + if (type === 'none') { + this.$emit('change', 'none') + } + } + this.x = x + this.isopen = type + }, + move(ref, value) { + return new Promise((resolve, reject) => { + animation.transition(ref, { + styles: { + transform: `translateX(${value})`, + }, + duration: 150, //ms + timingFunction: 'linear', + needLayout: false, + delay: 0 //ms + }, function(res) { + resolve(res) + }) + }) + + }, + + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + Promise.all([ + this.getDom('left'), + this.getDom('right'), + ]).then((data) => { + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + + if (show === 'none') { + // this.close() + } else { + this.open(show) + } + + }) + + }, + getDom(str) { + return new Promise((resolve, reject) => { + dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => { + if (data) { + this.button[str] = data.size + resolve(data) + } else { + reject() + } + }) + }) + } + } +} + +// #endif + +export default bindIngXMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js new file mode 100644 index 0000000..917cb48 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js @@ -0,0 +1,12 @@ +export function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (let v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..35c796b --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,195 @@ +export default { + data() { + return { + x: 0, + transition: false, + width: 0, + viewWidth: 0, + swipeShow: 0 + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal && newVal !== 'none') { + this.transition = true + this.open(newVal) + } else { + this.close() + } + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.isopen = false + setTimeout(() => { + this.getQuerySelect() + }, 50) + }, + methods: { + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + /** + * 移动触发 + * @param {Object} e + */ + onChange(e) { + this.moveX = e.detail.x + this.isclose = false + }, + touchstart(e) { + this.transition = false + this.isclose = true + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + touchmove(e) {}, + touchend(e) { + // 0的位置什么都不执行 + if (this.isclose && this.isopen === 'none') return + if (this.isclose && this.isopen !== 'none') { + this.transition = true + this.close() + } else { + this.move(this.moveX + this.leftWidth) + } + }, + + /** + * 移动 + * @param {Object} moveX + */ + move(moveX) { + // 打开关闭的处理逻辑不太一样 + this.transition = true + // 未打开状态 + if (!this.isopen || this.isopen === 'none') { + if (moveX > this.threshold) { + this.open('left') + } else if (moveX < -this.threshold) { + this.open('right') + } else { + this.close() + } + } else { + if (moveX < 0 && moveX < this.rightWidth) { + const rightX = this.rightWidth + moveX + if (rightX < this.threshold) { + this.open('right') + } else { + this.close() + } + } else if (moveX > 0 && moveX < this.leftWidth) { + const leftX = this.leftWidth - moveX + if (leftX < this.threshold) { + this.open('left') + } else { + this.close() + } + } + + } + + }, + + /** + * 打开 + */ + open(type) { + this.x = this.moveX + this.animation(type) + }, + + /** + * 关闭 + */ + close() { + this.x = this.moveX + // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化 + this.$nextTick(() => { + this.x = -this.leftWidth + if (this.isopen !== 'none') { + this.$emit('change', 'none') + } + this.isopen = 'none' + }) + }, + + /** + * 执行结束动画 + * @param {Object} type + */ + animation(type) { + this.$nextTick(() => { + if (type === 'left') { + this.x = 0 + } else { + this.x = -this.rightWidth - this.leftWidth + } + + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + }) + + }, + getSlide(x) {}, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.movable-view--hock').boundingClientRect(data => { + this.leftWidth = data[1].width + this.rightWidth = data[2].width + this.width = data[0].width + this.viewWidth = this.width + this.rightWidth + this.leftWidth + if (this.leftWidth === 0) { + // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点 + this.x = -0.1 + } else { + this.x = -this.leftWidth + } + this.moveX = this.x + this.$nextTick(() => { + this.swipeShow = 1 + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show !== 'none') { + this.transition = true + this.open(this.shows) + } + }).exec(); + + } + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..d389bce --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,260 @@ +let otherMixins = {} + +// #ifndef APP-PLUS|| MP-WEIXIN || H5 +const MIN_DISTANCE = 10; +otherMixins = { + data() { + // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug + const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}` + return { + uniShow: false, + left: 0, + buttonShow: 'none', + ani: false, + moveLeft: '', + elClass + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + left() { + this.moveLeft = `translateX(${this.left}px)` + }, + buttonShow(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + leftOptions() { + this.init() + }, + rightOptions() { + this.init() + } + }, + mounted() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + this.init() + }, + methods: { + init() { + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.getSelectorQuery() + }, 100) + // 移动距离 + this.left = 0 + this.x = 0 + }, + + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + touchstart(e) { + if (this.disabled) return + this.ani = false + this.x = this.left || 0 + this.stopTouchStart(e) + this.autoClose && this.closeSwipe() + }, + touchmove(e) { + if (this.disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e); + if (this.direction !== 'horizontal') { + return; + } + this.move(this.x + this.deltaX) + return false + }, + touchend() { + if (this.disabled) return + this.moveDirection(this.left) + }, + /** + * 设置移动距离 + * @param {Object} value + */ + move(value) { + value = value || 0 + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + // 获取可滑动范围 + this.left = this.range(value, -rightWidth, leftWidth); + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + */ + moveDirection(left) { + const threshold = this.threshold + const isopen = this.isopen || 'none' + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + if (this.deltaX === 0) { + this.openState('none') + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > + 0 && rightWidth + + left < threshold)) { + // right + this.openState('right') + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > + 0 && + leftWidth - left < threshold)) { + // left + this.openState('left') + } else { + // default + this.openState('none') + } + }, + + /** + * 开启状态 + * @param {Boolean} type + */ + openState(type) { + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + let left = '' + this.isopen = this.isopen ? this.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + + if (this.isopen !== type) { + this.throttle = true + this.$emit('change', type) + } + + this.isopen = type + // 添加动画类 + this.ani = true + this.$nextTick(() => { + this.move(left) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 + }, + close() { + this.openState('none') + }, + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus() { + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event) { + this.resetTouchStatus(); + const touch = event.touches[0]; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY); + }, + + getSelectorQuery() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.' + this.elClass) + .boundingClientRect(data => { + if (data.length === 0) return + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + this.leftWidth = data[0].width || 0 + this.rightWidth = data[1].width || 0 + this.buttonShow = show + }) + .exec() + } + } +} + +// #endif + +export default otherMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..08de1c9 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,84 @@ +let mpMixins = {} +let is_pc = null +// #ifdef H5 +import { + isPC +} from "./isPC" +is_pc = isPC() +// #endif +// #ifdef APP-VUE|| MP-WEIXIN || H5 + +mpMixins = { + data() { + return { + is_show: 'none' + } + }, + watch: { + show(newVal) { + this.is_show = this.show + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction && Array.isArray(this.swipeaction.children)) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.is_show = this.show + }, + methods: { + // wxs 中调用 + closeSwipe(e) { + if (this.autoClose && this.swipeaction) { + this.swipeaction.closeOther(this) + } + }, + + change(e) { + this.$emit('change', e.open) + if (this.is_show !== e.open) { + this.is_show = e.open + } + }, + + appTouchStart(e) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + onClickForPC(index, item, position) { + if (!is_pc) return + // #ifdef H5 + this.$emit('click', { + content: item, + index, + position + }) + // #endif + } + } +} + +// #endif +export default mpMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js new file mode 100644 index 0000000..78f0ec6 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js @@ -0,0 +1,270 @@ +const MIN_DISTANCE = 10; +export default { + showWatch(newVal, oldVal, ownerInstance, instance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + if (!$el) return + this.getDom(instance, ownerInstance, self) + if (newVal && newVal !== 'none') { + this.openState(newVal, instance, ownerInstance, self) + return + } + + if (state.left) { + this.openState('none', instance, ownerInstance, self) + } + this.resetTouchStatus(instance, self) + }, + + /** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ + touchstart(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state; + this.getDom(instance, ownerInstance, self) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + this.stopTouchStart(e, ownerInstance, self) + }, + + /** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchmove(e, ownerInstance, self) { + let instance = e.instance; + // 删除之后已经那不到实例了 + if (!instance) return; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e, self); + if (state.direction !== 'horizontal') { + return; + } + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + let x = state.x + state.deltaX + this.move(x, instance, ownerInstance, self) + }, + + /** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchend(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + this.moveDirection(state.left, instance, ownerInstance, self) + + }, + + /** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ + move(value, instance, ownerInstance, self) { + value = value || 0 + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = this.range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + + }, + + /** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ + getDom(instance, ownerInstance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + var leftDom = $el.querySelector('.button-group--left') + var rightDom = $el.querySelector('.button-group--right') + + state.leftWidth = leftDom.offsetWidth || 0 + state.rightWidth = rightDom.offsetWidth || 0 + state.threshold = instance.getDataset().threshold + }, + + getDisabledType(value) { + return (typeof(value) === 'string' ? JSON.parse(value) : value) || false; + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + + + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ + moveDirection(left, ins, ownerInstance, self) { + var state = self.state + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + this.openState('none', ins, ownerInstance, self) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + this.openState('right', ins, ownerInstance, self) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + this.openState('left', ins, ownerInstance, self) + } else { + // default + this.openState('none', ins, ownerInstance, self) + } + }, + + + /** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ + openState(type, ins, ownerInstance, self) { + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + let left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(() => { + ins.addClass('ani'); + this.move(left, ins, ownerInstance, self) + }) + }, + + + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus(instance, self) { + let state = self.state; + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event, ownerInstance, self) { + let instance = event.instance; + let state = self.state + this.resetTouchStatus(instance, self); + var touch = event.touches[0]; + state.startX = touch.clientX; + state.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event, self) { + let instance = event.instance; + let state = self.state; + let touch = event.touches[0]; + + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY); + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..d79c297 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,347 @@ + + + + + + diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs new file mode 100644 index 0000000..b394244 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs @@ -0,0 +1,341 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function showWatch(newVal, oldVal, ownerInstance, instance) { + var state = instance.getState() + getDom(instance, ownerInstance) + if (newVal && newVal !== 'none') { + openState(newVal, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + getDom(instance, ownerInstance) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ownerInstance) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ +function getDom(instance, ownerInstance) { + var state = instance.getState() + var leftDom = ownerInstance.selectComponent('.button-group--left') + var rightDom = ownerInstance.selectComponent('.button-group--right') + var leftStyles = { + width: 0 + } + var rightStyles = { + width: 0 + } + leftStyles = leftDom.getBoundingClientRect() + rightStyles = rightDom.getBoundingClientRect() + + state.leftWidth = leftStyles.width || 0 + state.rightWidth = rightStyles.width || 0 + state.threshold = instance.getDataset().threshold +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + showWatch: showWatch, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..4971782 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/uni_modules/uni-swipe-action/package.json b/uni_modules/uni-swipe-action/package.json new file mode 100644 index 0000000..47651a6 --- /dev/null +++ b/uni_modules/uni-swipe-action/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swipe-action", + "displayName": "uni-swipe-action 滑动操作", + "version": "1.3.8", + "description": "SwipeAction 滑动操作操作组件", + "keywords": [ + "", + "uni-ui", + "uniui", + "滑动删除", + "侧滑删除" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-swipe-action/readme.md b/uni_modules/uni-swipe-action/readme.md new file mode 100644 index 0000000..93a5cac --- /dev/null +++ b/uni_modules/uni-swipe-action/readme.md @@ -0,0 +1,11 @@ + + +## SwipeAction 滑动操作 +> **组件名:uni-swipe-action** +> 代码块: `uSwipeAction`、`uSwipeActionItem` + + +通过滑动触发选项的容器 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/changelog.md b/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..46eb8c1 --- /dev/null +++ b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uni-swiper-dot/package.json b/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/readme.md b/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-table/changelog.md b/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..9f87c67 --- /dev/null +++ b/uni_modules/uni-table/changelog.md @@ -0,0 +1,27 @@ +## 1.2.3(2023-03-28) +- 修复 在vue3模式下可能会出现错误的问题 +## 1.2.2(2022-11-29) +- 优化 主题样式 +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-table/components/uni-table/uni-table.vue b/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..21d9527 --- /dev/null +++ b/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-td/uni-td.vue b/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..df22a71 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,511 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/uni-th.vue b/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..14889dd --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,285 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..0dd18cd --- /dev/null +++ b/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..1089187 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..f9b9671 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-table/i18n/en.json b/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/es.json b/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/uni_modules/uni-table/i18n/fr.json b/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/index.js b/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-table/i18n/zh-Hans.json b/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/uni_modules/uni-table/i18n/zh-Hant.json b/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/uni_modules/uni-table/package.json b/uni_modules/uni-table/package.json new file mode 100644 index 0000000..7c2f91c --- /dev/null +++ b/uni_modules/uni-table/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.3", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, +"dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-table/readme.md b/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/uni_modules/uni-tag/changelog.md b/uni_modules/uni-tag/changelog.md new file mode 100644 index 0000000..c0c5839 --- /dev/null +++ b/uni_modules/uni-tag/changelog.md @@ -0,0 +1,21 @@ +## 2.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) +## 2.0.0(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +- 移除 插槽 +- 移除 type 属性的 royal 选项 +## 1.1.1(2021-08-11) +- type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-06-18) +- 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.0.6(2021-06-04) +- 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.0.5(2021-05-10) +- 修复 royal 类型无效的bug +- 修复 uni-tag 宽度不自适应的bug +- 新增 uni-tag 支持属性 custom-style 自定义样式 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-tag/components/uni-tag/uni-tag.vue b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..6378a0b --- /dev/null +++ b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uni-tag/package.json b/uni_modules/uni-tag/package.json new file mode 100644 index 0000000..1878088 --- /dev/null +++ b/uni_modules/uni-tag/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-tag", + "displayName": "uni-tag 标签", + "version": "2.1.0", + "description": "Tag 组件,用于展示1个或多个文字标签,可点击切换选中、不选中的状态。", + "keywords": [ + "uni-ui", + "uniui", + "", + "tag", + "标签" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tag/readme.md b/uni_modules/uni-tag/readme.md new file mode 100644 index 0000000..6e78ff5 --- /dev/null +++ b/uni_modules/uni-tag/readme.md @@ -0,0 +1,13 @@ + + +## Tag 标签 +> **组件名:uni-tag** +> 代码块: `uTag` + + +用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-test/changelog.md b/uni_modules/uni-test/changelog.md new file mode 100644 index 0000000..2f3b102 --- /dev/null +++ b/uni_modules/uni-test/changelog.md @@ -0,0 +1,39 @@ +## 2.0.13(2021-11-18) +邱 +## 2.0.12(2021-11-18) +123123 +## 2.0.11(2021-11-18) +0000 +## 2.0.10(2021-11-18) +111234 +## 2.0.9(2021-11-18) +3333 +## 2.0.8(2021-11-18) +=== +## 2.0.7(2021-11-18) +111 +## 2.0.6(2021-05-26) +- test +## 0.0.37(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.36(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.35(2021-03-23) +- uni-forms 更新 校验器 +- uni-forms 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug + + +## 0.0.34(2021-03-23) +- 测试新同步插件 +## 0.0.33(2021-03-09) +- test +## 0.0.32(2021-02-24) +- 更新 read 2 +## 0.0.31(2021-02-24) +- 同步 readme.md diff --git a/uni_modules/uni-test/components/uni-test/uni-test.vue b/uni_modules/uni-test/components/uni-test/uni-test.vue new file mode 100644 index 0000000..9ea8aaf --- /dev/null +++ b/uni_modules/uni-test/components/uni-test/uni-test.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/uni_modules/uni-test/package.json b/uni_modules/uni-test/package.json new file mode 100644 index 0000000..9a3c4c4 --- /dev/null +++ b/uni_modules/uni-test/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-test", + "displayName": "Test 测试插件", + "version": "2.0.13", + "description": "测试插件 ", + "keywords": [ + "test" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.3" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-test/readme.md b/uni_modules/uni-test/readme.md new file mode 100644 index 0000000..ddb24c6 --- /dev/null +++ b/uni_modules/uni-test/readme.md @@ -0,0 +1,10 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) \ No newline at end of file diff --git a/uni_modules/uni-title/changelog.md b/uni_modules/uni-title/changelog.md new file mode 100644 index 0000000..7626216 --- /dev/null +++ b/uni_modules/uni-title/changelog.md @@ -0,0 +1,10 @@ +## 1.1.1(2022-05-19) +- 修改组件描述 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) +## 1.0.2(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-title/components/uni-title/uni-title.vue b/uni_modules/uni-title/components/uni-title/uni-title.vue new file mode 100644 index 0000000..bf4f926 --- /dev/null +++ b/uni_modules/uni-title/components/uni-title/uni-title.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-title/package.json b/uni_modules/uni-title/package.json new file mode 100644 index 0000000..2249f5a --- /dev/null +++ b/uni_modules/uni-title/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-title", + "displayName": "uni-title 章节标题", + "version": "1.1.1", + "description": "章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题", + "keywords": [ + "uni-ui", + "uniui", + "标题", + "章节", + "章节标题", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-title/readme.md b/uni_modules/uni-title/readme.md new file mode 100644 index 0000000..0e60b1b --- /dev/null +++ b/uni_modules/uni-title/readme.md @@ -0,0 +1,14 @@ + + +## Title 标题 +> **组件名:uni-title** +> 代码块: `uTitle` + + +章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + diff --git a/uni_modules/uni-tooltip/changelog.md b/uni_modules/uni-tooltip/changelog.md new file mode 100644 index 0000000..00f1572 --- /dev/null +++ b/uni_modules/uni-tooltip/changelog.md @@ -0,0 +1,10 @@ +## 0.2.1(2022-05-09) +- 修复 content 为空时仍然弹出的bug +## 0.2.0(2022-05-07) +**注意:破坏性更新** +- 更新 text 属性变更为 content +- 更新 移除 width 属性 +## 0.1.1(2022-04-27) +- 修复 组件根 text 嵌套组件 warning +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue new file mode 100644 index 0000000..ffbb6fa --- /dev/null +++ b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/uni_modules/uni-tooltip/package.json b/uni_modules/uni-tooltip/package.json new file mode 100644 index 0000000..e88ecf8 --- /dev/null +++ b/uni_modules/uni-tooltip/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-tooltip", + "displayName": "uni-tooltip 提示文字", + "version": "0.2.1", + "description": "Tooltip 提示文字", + "keywords": [ + "uni-tooltip", + "uni-ui", + "tooltip", + "tip", + "文字提示" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无 ", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tooltip/readme.md b/uni_modules/uni-tooltip/readme.md new file mode 100644 index 0000000..faafa2e --- /dev/null +++ b/uni_modules/uni-tooltip/readme.md @@ -0,0 +1,8 @@ +## Badge 数字角标 +> **组件名:uni-tooltip** +> 代码块: `uTooltip` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..b1a824b --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,20 @@ +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..8f89b18 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,131 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + // 在iOS10+QQ小程序平台下,传给原生的对象一定是个普通对象而不是Proxy对象,否则会报parameter should be Object instead of ProxyObject的错误 + this.animation = uni.createAnimation({ + ...options + }) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..a2bf104 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,281 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d15fdf0 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.1", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-ui/changelog.md b/uni_modules/uni-ui/changelog.md new file mode 100644 index 0000000..61b26d0 --- /dev/null +++ b/uni_modules/uni-ui/changelog.md @@ -0,0 +1,541 @@ +## 1.4.27(2023-04-23) +- uni-calendar 修复 某些情况 monthSwitch 未触发的Bug +- uni-calendar 修复 某些情况切换月份错误的Bug +- uni-data-picker 修复 更改 modelValue 报错的 bug +- uni-data-picker 修复 v-for 未使用 key 值控制台 warning +- uni-data-picker 修复代码合并时引发 value 属性为空时不渲染数据的问题 +- uni-data-picker 修复 localdata 不支持动态更新的bug +- uni-data-select 修复 微信小程序点击时会改变背景颜色的 bug +- uni-data-select 修复 禁用时会显示清空按钮 +- uni-data-select 优化 查询条件短期内多次变更只查询最后一次变更后的结果 +- uni-data-select 调整 内部缓存键名调整为 uni-data-select-lastSelectedValue +- uni-datetime-picker 修复 日历 picker 修改年月后,自动选中当月1日 [详情](https://ask.dcloud.net.cn/question/165937) +- uni-datetime-picker 修复 小程序端 低版本 ios NaN [详情](https://ask.dcloud.net.cn/question/162979) +- uni-datetime-picker 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362) +- uni-datetime-picker 优化 值为空依然选中当天问题 +- uni-datetime-picker 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间 +- uni-datetime-picker 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间 +- uni-datetime-picker 优化 字节小程序日期时间范围选择,底部日期换行问题 +- uni-datetime-picker 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686) +- uni-datetime-picker 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684) +- uni-datetime-picker 优化 PC端输入日期格式错误时返回当前日期时间 +- uni-datetime-picker 优化 PC端输入日期时间超出 start、end 限制的Bug +- uni-datetime-picker 优化 移动端日期时间范围用法时间展示不完整问题 +- uni-datetime-picker 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679) +- uni-datetime-picker 修复 vue3 time-picker 无法显示绑定时分秒的Bug +- uni-datetime-picker 修复 字节小程序报错的Bug +- uni-datetime-picker 修复 某些情况切换月份错误的Bug +- uni-easyinput 修复 vue3 下 keyboardheightchange 事件报错的bug +- uni-easyinput 优化 trim 属性默认值 +- uni-easyinput 新增 cursor-spacing 属性 +- uni-fab 新增 pattern.icon 属性,可自定义图标 +- uni-file-picker 修复 手动上传删除一个文件后不能再上传的bug +- uni-forms 修复 required 参数无法动态绑定 +- uni-list 优化 uni-list-chat 具名插槽`header` 非app端套一层元素,方便使用时通过外层元素定位实现样式修改 +- uni-list uni-list-chat 新增 支持具名插槽`header` +- uni-list 新增 列表图标新增 customPrefix 属性 ,用法 [详见](https://uniapp.dcloud.net.cn/component/uniui/uni-icons.html#icons-props) +- uni-nav-bar 修复 自定义状态栏高度闪动BUG +- uni-nav-bar 修复 暗黑模式下边线颜色错误的bug +- uni-popup 修复 uni-popup 重复打开时的 bug +- uni-popup uni-popup-dialog 组件新增 inputType 属性 +- uni-swipe-action 修复`uni-swipe-action`和`uni-swipe-action-item`不同时使用导致 closeOther 方法报错的 bug +- uni-table 修复 在vue3模式下可能会出现错误的问题 +## 1.4.26(2023-01-31) +- uni-badge 修复 运行/打包 控制台警告问题 +- uni-calendar 修复 某些情况切换月份错误问题 +- uni-data-select 修复 不关联服务空间报错的问题 +- uni-data-select 新增 属性 `format` 可用于格式化显示选项内容 +- uni-datetime-picker 修复 某些情况切换月份错误问题 +- uni-easyinput 新增 keyboardheightchange 事件,可监听键盘高度变化 +- uni-list 修复 无反馈效果呈现的bug +## 1.4.25(2023-01-11) +- uni-file-picker 新增 sourceType 属性, 可以自定义图片和视频选择的来源 +## 1.4.24(2023-01-11) +- uni-data-select 修复 当where变化时,数据不会自动更新的问题 +- uni-datetime-picker 修复 多次加载组件造成内存占用的 bug +- uni-datetime-picker 修复 vue3 下 i18n 国际化初始值不正确的 bug +- uni-easyinput 修复 props 中背景颜色无默认值的bug +- uni-list 修复 uni-list-chat 在vue3下跳转报错的bug +- uni-list 修复 uni-list-chat avatar属性 值为本地路径时错误的问题 +- uni-list 修复 uni-list-chat avatar属性 在腾讯云版uniCloud下错误的问题 +- uni-list 修复 uni-list-chat note属性 支持:“草稿”字样功能 文本少1位的问题 +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在 H5端 无效的bug +- uni-list 修复 uni-list-item 的 customStyle 属性 padding值在nvue(vue2)下无效的bug +- uni-list uni-list-chat 新增 avatar 支持 fileId +- uni-list uni-list 新增属性 render-reverse 详情参考:[https://uniapp.dcloud.net.cn/component/list.html](https://uniapp.dcloud.net.cn/component/list.html) +- uni-list uni-list-chat note属性 支持:“草稿”字样 加红显示 详情参考uni-im:[https://ext.dcloud.net.cn/plugin?name=uni-im](https://ext.dcloud.net.cn/plugin?name=uni-im) +- uni-list uni-list-item 新增属性 customStyle 支持设置padding、backgroundColor +- uni-popup 修复 nvue 下 v-show 报错 +## 1.4.23(2022-10-25) +- uni-datetime-picker 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861) + +- uni-nav-bar 修复 条件编译错误的bug +- uni-nav-bar 修复 nvue 环境 fixed 为 true 的情况下,无法置顶的 bug +## 1.4.22(2022-09-19) +- 优化 部分组件适配 uni-scss 主题色 +- uni-badge 修复 当 text 超过 max-num 时,badge 的宽度计算是根据 text 的长度计算,更改为 css 计算实际展示宽度,详见:[https://ask.dcloud.net.cn/question/150473](https://ask.dcloud.net.cn/question/150473) +- uni-calendar 修复 表头年月切换,导致改变当前日期为选择月1号,且未触发change事件 +- uni-data-select 修复 微信小程序下拉框出现后选择会点击到蒙板后面的输入框 +- uni-data-select 修复 点击的位置不准确 +- uni-data-select 新增 支持 disabled 属性 +- uni-datetime-picker 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false) +- uni-datetime-picker 修复 close事件无效的 bug +- uni-datetime-picker 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false) +- uni-fab 修复 小程序端由于 style 使用了对象导致报错,[详情](https://ask.dcloud.net.cn/question/152790?item_id=211778&rf=false) +- uni-fab 修复 nvue 环境下,具有 tabBar 时,fab 组件下部位置无法正常获取 --window-bottom 的bug,详见:[https://ask.dcloud.net.cn/question/110638?notification_id=826310](https://ask.dcloud.net.cn/question/110638?notification_id=826310) +- uni-forms 优化 根据 rules 自动添加 required 的问题 +- uni-forms 修复 item 未设置 require 属性,rules 设置 require 后,星号也显示的 bug,详见:[https://ask.dcloud.net.cn/question/151540](https://ask.dcloud.net.cn/question/151540) +- uni-nav-bar 修复 nvue 环境下 fixed 为 true 的情况下,无法置顶的 bug +- uni-notice-bar 新增 属性 fontSize,可修改文字大小。 +- uni-pagination 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。 +- uni-pagination 修复,未对移动端当前页文字做主题色适配。 +- uni-pagination 修复 es 语言 i18n 错误 +## 1.4.21(2022-09-19) +- 修复,安装时未导入 uni-data-select 和 uni-tooltip 的问题。 +## 1.4.20(2022-07-25) +- uni-section 新增组件 +- uni-forms 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug + +## 1.4.19(2022-07-07) +- uni-data-picker 优化 pc端图标位置不正确的问题 +- uni-data-select 修复 pc端宽度异常的bug +## 1.4.18(2022-07-06) +- uni-forms 【重要】组件逻辑重构,部分用法旧版本不兼容,请注意兼容问题 +- uni-forms 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- uni-forms 新增 更多表单示例 +- uni-forms 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- uni-forms 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- uni-forms 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- uni-forms 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- uni-forms 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- uni-forms 修复 由 1.4.0 引发的 label 插槽不生效的bug +- uni-forms 修复 子组件找不到 setValue 报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- uni-forms 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-forms 修复 表单校验顺序无序问题 +- uni-forms 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +- uni-forms 优化 动态表单校验方式,废弃拼接name的方式 +- uni-breadcrumb 修复 微信小程序 separator 不显示问题 +- uni-data-checkbox 优化 在 uni-forms 中的依赖注入方式 +- uni-data-picker 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +- uni-data-picker 优化 显示样式 +- uni-data-select 优化 显示样式 +- uni-datetime-picker 修复 日历顶部年月及底部确认未国际化 bug +- uni-datetime-picker 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +- uni-easyinput 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- uni-easyinput 新增 clear 事件,点击右侧叉号图标触发 +- uni-easyinput 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- uni-easyinput 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 +- uni-easyinput 优化 clearable 显示策略 +- uni-file-picker 修复 在uni-forms下样式不生效的bug +- uni-nav-bar 修复 组件示例中插槽用法无法显示内容的bug +- uni-swipe-action 修复 vue3 下使用组件不能正常运行的Bug +- uni-swipe-action 修复 h5端点击click触发两次的Bug +- uni-table 修复 微信小程序存在无使用组件的问题 +## 1.4.17(2022-06-30) +- 支持 ios 安全区 +## 1.4.16(2022-06-06) +- uni-breadcrumb 新增 支持 uni.scss 修改颜色 +- uni-data-select 修复 localdata 赋值不生效的 bug +- uni-data-select 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +- uni-data-select 修复 当 value 为 0 时选择不生效的 bug +- uni-easyinput 修复 关闭图标某些情况下无法取消的bug +- uni-fav 新增 stat 属性 ,是否开启uni统计功能 +- uni-goods-nav 新增 stat属性,是否开启uni统计功能 +- uni-group 新增 stat属性,是否开启uni统计功能 +- uni-nav-bar 新增 stat 属性 ,可开启统计 title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +- uni-search-bar 新增 readonly 属性,组件只读 +- uni-swipe-action 修复 isPC 找不到的Bug +- uni-swipe-action 修复 在 nvue 下 disabled 失效的bug +- uni-tooltip 修复 content 为空时仍然弹出的bug +## 1.4.15(2022-05-07) +- uni-data-picker 修复 字节小程序 本地数据无法选择下一级的Bug +- uni-data-select 新增 记住上次的选项(仅 collection 存在时有效) +- uni-search-bar 修复 vue3 input 事件不生效的bug +- uni-search-bar 修复 多余代码导致的bug +- uni-tooltip 更新 text 属性变更为 content +- uni-tooltip 更新 移除 width 属性 +- uni-tooltip 修复 组件根 text 嵌套组件 warning +## 1.4.14(2022-04-18) +- uni-datetime-picker 修复 Vue3 下动态赋值,单选类型未响应的 bug +- uni-easyinput 修复 默认值不生效的bug +## 1.4.13(2022-04-02) +- uni-calendar 修复 条件编译 nvue 不支持的 css 样式 +- uni-calendar 修复 startDate、 endDate 属性失效的 bug +- uni-data-picker 修复 nvue 不支持的 v-show 的 bug +- uni-data-picker 修复 条件编译 nvue 不支持的 css 样式 +- uni-datetime-picker 修复 Vue3 下动态赋值未响应的 bug +- uni-easyinput 修复 value不能为0的bug +- uni-popup 修复 弹出层内部无法滚动的bug +- uni-popup 修复 小程序中高度错误的bug +- uni-popup 修复 快速调用open出现问题的Bug +- uni-rate 修复 条件判断 `NaN` 错误的 bug +- uni-swipe-action 修复 按钮字体大小不能设置的bug +- uni-swipe-action 修复 h5和app端下报el错误的bug +- uni-swipe-action 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.4.12(2022-02-19) +- uni-collapse 修复 初始化的时候 ,open 属性失效的bug +- uni-data-checkbox 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +- uni-icons 优化 size 属性可以传入不带单位的字符串数值 +- uni-icons 优化 size 支持其他单位 +- uni-nav-bar 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +- uni-popup 修复 safeArea 属性不能设置为false的bug +## 1.4.11(2022-01-21) +- uni-collapse 修复 微信小程序resize后组件收起的bug +- uni-countdown 修复 在微信小程序中样式不生效的bug +- uni-countdown 新增 update 方法 ,在动态更新时间后,刷新组件 +- uni-load-more 新增 showText属性 ,是否显示文本 +- uni-load-more 修复 nvue 平台下不显示文本的bug +- uni-load-more 修复 微信小程序平台样式选择器报警告的问题 +- uni-nav-bar 修复 在vue下,标题不垂直居中的bug +- uni-nav-bar 修复 height 属性类型错误 +- uni-nav-bar 新增 height 属性,可修改组件高度 +- uni-nav-bar 新增 dark 属性可可开启暗黑模式 +- uni-nav-bar 优化 标题字数过多显示省略号 +- uni-nav-bar 优化 插槽,插入内容可完全覆盖 +- uni-popup 修复 isMaskClick 失效的bug +- uni-popup 新增 cancelText \ confirmText 属性 ,可自定义文本 +- uni-popup 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- uni-popup 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 + +## 1.4.10(2022-01-17) +- uni-card 修复 在vue页面下略缩图显示不正常的bug +- uni-datetime-picker 修复 clear-icon 属性在小程序平台不生效的 bug +- uni-datetime-picker 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +- uni-fab 更新 组件依赖 +- +- uni-icons 修复 nvue 有些图标不显示的bug,兼容老版本图标 +- uni-icons 优化 示例可复制图标名称 +- uni-nav-bar 修复 color 属性不生效的bug +- uni-popup 修复 设置 safeArea 属性不生效的bug +- uni-popup 优化 组件示例 +- uni-popup 修复 vuedoc 文字错误 +## 1.4.9(2021-11-23) +- uni-ui 修复 vue3中某些scss变量无法找到的问题 +- uni-combox 优化 label、label-width 属性 +- uni-data-picker 修复 由上个版本引发的map、v-model等属性不生效的bug +- uni-file-picker 修复 参数为对象的情况下,url在某些情况显示错误的bug +- uni-icons 优化 兼容旧组件 type 值 +- uni-list 修复 在vue3中to属性在发行应用的时候报错的bug +- uni-scss 修复 vue3中scss语法兼容问题 +- uni-transition 修复 init 方法初始化问题 +## 1.4.8(2021-11-19) +- uni-fab 修复 阴影颜色不正确的bug +## 1.4.7(2021-11-19) +- uni-ui 新增 支持国际化 +- uni-ui 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- uni-ui 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) +- uni-badge 修改 size 属性默认值调整为 small +- uni-badge 修改 type 属性,默认值调整为 error,info 替换 default +- uni-badge 修复 在字节小程序上样式不生效的 bug +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-card 重构插槽的用法 ,header 替换为 title +- uni-card 新增 actions 插槽 +- uni-card 新增 cover 封面图属性和插槽 +- uni-card 新增 padding 内容默认内边距离 +- uni-card 新增 margin 卡片默认外边距离 +- uni-card 新增 spacing 卡片默认内边距 +- uni-card 新增 shadow 卡片阴影属性 +- uni-card 取消 mode 属性,可使用组合插槽代替 +- uni-card 取消 note 属性 ,使用actions插槽代替 +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-countdown 新增 font-size 支持自定义字体大小 +- uni-data-checkbox 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 优化 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 修复 hide-second 在移动端的 bug +- uni-datetime-picker 修复 单选赋默认值时,赋值日期未高亮的 bug +- uni-datetime-picker 修复 赋默认值时,移动端未正确显示时间的 bug +- uni-datetime-picker 新增 hide-second 属性,支持只使用时分,隐藏秒 +- uni-datetime-picker 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- uni-datetime-picker 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- uni-datetime-picker 优化 调整字号大小,美化日历界面 +- uni-datetime-picker 优化 范围选择器在 pc 端过宽的问题 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 新增 参数中返回 fileID 字段 +- uni-file-picker 修复 腾讯云传入fileID 不能回显的bug +- uni-file-picker 修复 选择图片后,不能放大的问题 +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 label 插槽不生效的bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-icons 新增 更多图标 +- uni-icons 优化 自定义图标使用方式 +- uni-link 修复 在 nvue 下不显示的 bug +- uni-pagination 修复 current 、value 属性未监听,导致高亮样式失效的 bug +- uni-rate 优化 默认值修改为 0 颗星 +- uni-search-bar 修复 value 属性与 modelValue 属性不兼容的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +- uni-tag 新增 提供组件设计资源,组件样式调整 +- uni-tag 移除 插槽 +- uni-tag 移除 type 属性的 royal 选项 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.4.2(2021-08-20) +- 新增 uni-ui 组件支持国际化 i18n +- uni-collapse 优化 show-arrow 属性默认为true +- uni-collapse 新增 show-arrow 属性,控制是否显示右侧箭头 +- uni-data-checkbox 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +- uni-easyinput 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +- uni-file-picker 修复 由于 0.2.11 版本引起的不能回显图片的Bug +- uni-file-picker 新增 clearFiles(index) 方法,可以手动删除指定文件 +- uni-file-picker 修复 v-model 值设为 null 报错的Bug +- uni-swipe-action 新增 close-all 方法,关闭所有已打开的组件 +- uni-swipe-action 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- uni-swipe-action 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- uni-swipe-action 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.4.0(2021-08-13) +- uni-calendar 修复 弹出层被 tabbar 遮盖 bug +- uni-data-checkbox 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-dateformat 调整 默认时间不再是当前时间,而是显示'-'字符 +- uni-datetime-picker 新增 适配 vue3 +- uni-datetime-picker 新增 支持作为 uni-forms 子组件相关功能 +- uni-datetime-picker 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +- uni-datetime-picker 修复 type 属性动态赋值无效的 bug +- uni-datetime-picker 修复 ‘确认’按钮被 tabbar 遮盖 bug +- uni-datetime-picker 修复 组件未赋值时范围选左、右日历相同的 bug +- uni-datetime-picker 修复 范围选未正确显示当前值的 bug +- uni-datetime-picker 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +- uni-easyinput 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +- uni-file-picker 修复 return-type="object" 时,无法删除文件的Bug +- uni-file-picker 修复 auto-upload 属性失效的Bug +- uni-forms 修复 没有添加校验规则的字段依然报错的Bug +- uni-forms 修复 重置表单错误信息无法清除的问题 +- uni-forms 优化 组件文档 +- uni-forms 修复 表单验证只生效一次的问题 +- uni-tag type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.3.9(2021-08-02) +- uni-datetime-picker 新增 return-type 属性支持返回 date 日期对象 +- uni-file-picker 修复 fileExtname属性不指定值报错的Bug +- uni-file-picker 修复 在某种场景下图片不回显的Bug +- uni-link 支持自定义插槽 +## 1.3.8(2021-07-31) +- uni-ui 组件兼容 vue3 +- uni-collapse 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +- uni-collapse 优化 组件示例 +- uni-collapse 新增 组件折叠动画 +- uni-collapse 新增 value\v-model 属性 ,动态修改面板折叠状态 +- uni-collapse 新增 title 插槽 ,可定义面板标题 +- uni-collapse 新增 border 属性 ,显示隐藏面板内容分隔线 +- uni-collapse 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- uni-collapse 修复 resize 方法失效的Bug +- uni-collapse 修复 change 事件返回参数不正确的Bug +- uni-collapse 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +- uni-data-checkbox 优化 在uni-forms组件,与label不对齐的问题 +- uni-data-checkbox 修复 单选默认值为0不能选中的Bug +- uni-easyinput 优化 errorMessage 属性支持 Boolean 类型 +- uni-file-picker 修复 return-type为object下,返回值不正确的Bug +- uni-file-picker 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +- uni-file-picker 优化 h5平台下上传文件导致页面卡死的问题 +- uni-forms 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- uni-forms 修复 1.2.1 引起的示例在小程序平台报错的Bug +- uni-forms 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- uni-forms 修复 不指定name属性时,运行报错的Bug +- uni-forms 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- uni-forms 优化 组件示例,新增动态校验示例代码 +- uni-forms 优化 组件文档,使用方式更清晰 +- uni-list 修复 与其他组件嵌套使用时,点击失效的Bug +- uni-swipe-action 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.3.7(2021-07-16) +- uni-ui 兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- uni-datetime-picker 修复 单选日期类型,初始赋值后不在当前日历的 bug +- uni-datetime-picker 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- uni-datetime-picker 优化 移动端移除显示框的清空按钮,无实际用途 +- uni-datetime-picker 修复 组件赋值为空,界面未更新的 bug +- uni-datetime-picker 修复 start 和 end 不能动态赋值的 bug +- uni-datetime-picker 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 1.3.6(2021-07-09) +- uni-data-checkbox 优化 删除无用日志 +- uni-data-checkbox 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +- uni-data-checkbox 修复 nvue 黑框样式问题 +- uni-datetime-picker 修复 范围选择不能动态赋值的 bug +- uni-datetime-picker 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘定位不准确的问题 +- uni-datetime-picker 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- uni-datetime-picker 优化 弹出层在超出视窗边缘被遮盖的问题 +- uni-datetime-picker 新增 maskClick 事件 +- uni-datetime-picker 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- uni-datetime-picker 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +- uni-datetime-picker 新增 日期时间显示框支持插槽 +- uni-file-picker 修复 sourceType 缺少默认值导致 ios 无法选择文件 +- uni-file-picker 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +- uni-table 新增 uni-th 支持 date 日期筛选范围 +- uni-table 新增 uni-th 支持 range 筛选范围 +- uni-table 新增 uni-th 筛选功能 +## 1.3.5(2021-07-02) +- uni-card 优化 图文卡片无图片加载时,提供占位图标 +- uni-card 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- uni-card 修复 thumbnail 不存在仍然占位的 bug +- uni-data-checkbox 修复 selectedTextColor 属性不生效的Bug +- uni-datetime-picker 优化 添加 uni-icons 依赖 +- uni-easyinput 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug +- uni-file-picker 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +- uni-file-picker 优化 文件上传后进度条消失时机 +- uni-file-picker 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +- uni-forms 修复 pattern 属性在微信小程序平台无效的问题 +## 1.3.4(2021-06-25) +- uni-badge 优化 示例项目 +- uni-countdown 修复 uni-countdown 重复赋值跳两秒的 bug +- uni-easyinput 修复 passwordIcon 属性拼写错误的 bug +- uni-forms 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +- uni-forms 修复 只写setRules方法而导致校验不生效的Bug +- uni-forms 修复 由上个办法引发的错误提示文字错位的Bug +- uni-forms 修复 不设置 label 属性 ,无法设置label插槽的问题 +- uni-forms 修复 不设置label属性,label-width属性不生效的bug +- uni-forms 修复 setRules 方法与rules属性冲突的问题 +- uni-link 新增 download 属性,H5平台下载文件名 +- uni-popup 新增 mask-click 遮罩层点击事件 +- uni-popup 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-tag 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.3.3(2021-06-18) +- uni-easyinput 新增 passwordIcon 属性,当type=password时是否显示小眼睛图标 +- uni-easyinput 修复 confirmType 属性不生效的问题 +- uni-easyinput 修复 disabled 状态可清出内容的 bug +- uni-file-picker 修复 删除文件时无法触发 v-model 的Bug +- uni-popup 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +- uni-popup 修复 错误的 watch 字段 +- uni-popup 修复 safeArea 属性不生效的问题 +- uni-popup 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.3.2(2021-06-04) +- uni-data-checkbox 新增 map 属性,可以方便映射text/value属性 +- uni-data-checkbox 修复 不关联服务空间的情况下组件报错的Bug +- uni-data-picker 修复 上个版本引出的本地数据无法选择带有children的2级节点 +- uni-forms 修复 动态删减数据导致报错的问题 +- uni-forms 新增 modelValue 属性 ,value 即将废弃 +- uni-forms 新增 uni-forms-item 可以设置单独的 rules +- uni-forms 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- uni-forms 优化 submit 事件重命名为 validate +- uni-data-picker 修复 无法加载云端数据的问题 +- uni-data-picker 修复 v-model无效问题 +- uni-data-picker 修复 loaddata 为空数据组时加载时间过长问题 +- uni-datetime-picker 修复 图标在小程序上不显示的 bug +- uni-datetime-picker 优化 重命名引用组件,避免潜在组件命名冲突 +- uni-datetime-picker 优化 代码目录扁平化 +- uni-tag 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.3.1(2021-05-14) +- uni-badge 新增 uni-badge 的 absolute 属性,支持定位 +- uni-badge 新增 uni-badge 的 offset 属性,支持定位偏移 +- uni-badge 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- uni-badge 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- uni-badge 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +- uni-badge 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- uni-badge 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- uni-badge 新增 uni-badge 属性 custom-style, 支持自定义样式 +- uni-datetime-picker 修复 ios 下不识别 '-' 日期格式的 bug +- uni-datetime-picker 优化 pc 下弹出层添加边框和阴影 +- uni-datetime-picker 修复 在 admin 中获取弹出层定位错误的bug +- uni-datetime-picker 修复 type 属性向下兼容,默认值从 date 变更为 datetime +- uni-datetime-picker 支持日历形式的日期+时间的范围选择 +- uni-steps 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +- uni-countdown 修复 uni-countdown 不能控制倒计时的 bug +- uni-tag 修复 royal 类型无效的bug +- uni-tag 修复 uni-tag 宽度不自适应的bug +- uni-tag 新增 uni-tag 支持属性 custom-style 自定义样式 +- uni-link 新增 href 属性支持 tel:|mailto: +- uni-popup 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +- uni-popup 新增 type 属性的 left\right 值,支持左右弹出 +- uni-popup 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- uni-popup 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- uni-popup 新增 safeArea 属性,是否适配底部安全区 +- uni-popup 修复 App\h5\微信小程序底部安全区占位不对的Bug +- uni-popup 修复 App 端弹出等待的Bug +- uni-popup 优化 提升低配设备性能,优化动画卡顿问题 +- uni-popup 优化 更简单的组件自定义方式 +- uni-table 修复 示例项目缺少组件的Bug +- uni-forms 修复 自定义检验器失效的问题 +- uni-title 修复 示例项目缺少组件的Bug +- uni-transition 修复 示例项目缺少组件的Bug +- uni-swiper-dot 修复 示例项目缺少组件的Bug +- uni-ui 新增 组件示例地址 +## 1.3.0(2021-04-23) +- uni-combox 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-data-picker 修复 非树形数据有 where 属性查询报错的问题 +- uni-fav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-goods-nav 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-nav-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-notice-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-number-box 修复 uni-number-box 浮点数运算不精确的 bug +- uni-number-box 修复 uni-number-box change 事件触发不正确的 bug +- uni-number-box 新增 uni-number-box v-model 双向绑定 +- uni-rate 修复 布局变化后 uni-rate 星星计算不准确的 bug +- uni-rate 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +- uni-search-bar 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-steps 优化 添加依赖 uni-icons, 导入后自动下载依赖 +- uni-transition 新增 通过方法自定义动画 +- uni-transition 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- uni-transition 优化 动画触发逻辑,使动画更流畅 +- uni-transition 优化 支持单独的动画类型 +- uni-transition 优化 文档示例 +## 1.2.13(2021-04-16) +- uni-ui 新增 uni-data-picker 支持云端非树形表结构数据 +- uni-ui 修复 uni-data-checkbox nvue 下无法选中的问题 +- uni-ui 修复 uni-data-picker 根节点 parent_field 字段等于null时选择界面错乱问题 +- uni-ui 修复 uni-file-picker 选择的文件非 file-extname 字段指定的扩展名报错的Bug +- uni-ui 修复 uni-swipe-action 报错 nv_navigator is not defined 的bug +- uni-ui 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +- uni-ui 优化 uni-file-picker file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +- uni-ui 优化 uni-pagination PC 和 移动端适配不同的 ui +- uni-ui 更新 uni-file-picker 组件示例 +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug +- uni-ui 新增 uni-search-bar 的 focus 事件 +- uni-ui 修复 uni-rate 属性 margin 值为 string 组件失效的 bug +- uni-data-picker 修复 本地数据概率无法回显时问题 +- uni-table 新增 sortable 属性,是否开启单列排序 +- uni-table 优化 表格多选逻辑 +## 1.2.12(2021-03-23) +- uni-ui 新增 uni-datetime-picker 的 hide-second 属性、border 属性; +- uni-ui 修复 uni-datetime-picker 选择跟显示的日期不一样的 bug, +- uni-ui 修复 uni-datetime-picker change事件触发2次的 bug +- uni-ui 修复 uni-datetime-picker 分、秒 end 范围错误的 bug +- uni-ui 新增 uni-tr selectable 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +- uni-ui 新增 uni-data-checkbox 新增 disabled属性,支持nvue +- uni-ui 优化 uni-data-checkbox 无选项时提示“暂无数据” +- uni-ui 优化 uni-data-checkbox 默认颜色显示 +- uni-ui 新增 uni-link href 属性支持 tel:|mailto: +- uni-ui 新增 uni-table 示例demo +- uni-ui 修复 uni-data-picker 微信小程序某些情况下无法选择的问题,事件无法触发的问题 +- uni-ui 修复 uni-nav-bar easycom 下,找不到 uni-status-bar 的bug +- uni-ui 修复 uni-easyinput 示例在 qq 小程序上的bug +- uni-ui 修复 uni-forms 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +- uni-ui 调整 cli 项目 建议使用 easycom 方式引用组件,如使用按需引用,需手动维护组件内部引用 + +## 1.2.11(2021-02-24) +- 调整为uni_modules目录规范 +- uni-data-picker 新增 数据驱动的picker选择器 +- uni-file-picker 新增 文件选择上传 +- uni-row 新增 栅格系统 +- uni-data-checkbox 优化 支持 nvue +- uni-forms 修复 偶发性获取表单值错误的Bug +- uni-forms 修复 校验 uni-data-picker value 为 0 时,返回值错误的Bug +- uni-forms 修复 uni-forms-item 组件隐藏时依然触发校验的bug +- uni-forms 优化 实时校验 +- uni-forms 优化 兼容nvue页面 +- uni-easyinput 优化 兼容nvue页面 +- uni-group 优化 兼容nvue页面 +- uni-popup 优化 组件适配 PC +- uni-fab 优化 适配 PC +- uni-swiper-dot 优化 适配 PC +- uni-rate 优化 适配 PC +- uni-notice-bar 优化 适配 PC +- uni-indexed-list 优化 适配 PC +- uni-combox 优化 适配 PC +- uni-transition 优化 适配 PC +- uni-nav-bar 优化 适配 PC +- uni-swipe-action 优化 适配 PC diff --git a/uni_modules/uni-ui/components/uni-ui/uni-ui.vue b/uni_modules/uni-ui/components/uni-ui/uni-ui.vue new file mode 100644 index 0000000..0970892 --- /dev/null +++ b/uni_modules/uni-ui/components/uni-ui/uni-ui.vue @@ -0,0 +1,7 @@ + + + diff --git a/uni_modules/uni-ui/package.json b/uni_modules/uni-ui/package.json new file mode 100644 index 0000000..857ed51 --- /dev/null +++ b/uni_modules/uni-ui/package.json @@ -0,0 +1,129 @@ +{ + "id": "uni-ui", + "displayName": "uni-ui", + "version": "1.4.27", + "description": "uni-ui 是基于uni-app的、全端兼容的、高性能UI框架", + "keywords": [ + "uni-ui", + "uniui", + "UI组件库", + "ui框架", + "ui库" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.10" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui", + "type": "component-vue" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-calendar", + "uni-card", + "uni-collapse", + "uni-combox", + "uni-countdown", + "uni-data-checkbox", + "uni-data-picker", + "uni-data-select", + "uni-dateformat", + "uni-datetime-picker", + "uni-drawer", + "uni-easyinput", + "uni-fab", + "uni-fav", + "uni-file-picker", + "uni-forms", + "uni-goods-nav", + "uni-grid", + "uni-group", + "uni-icons", + "uni-indexed-list", + "uni-link", + "uni-list", + "uni-load-more", + "uni-nav-bar", + "uni-notice-bar", + "uni-number-box", + "uni-pagination", + "uni-popup", + "uni-rate", + "uni-row", + "uni-search-bar", + "uni-section", + "uni-segmented-control", + "uni-steps", + "uni-swipe-action", + "uni-swiper-dot", + "uni-table", + "uni-tag", + "uni-title", + "uni-tooltip", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-ui/readme.md b/uni_modules/uni-ui/readme.md new file mode 100644 index 0000000..23f8456 --- /dev/null +++ b/uni_modules/uni-ui/readme.md @@ -0,0 +1,247 @@ +> 当前插件不包含示例页面 ,如需示例请在 HBuiderX 中新建 `hello uni-app > 扩展组件` 中查看 +> +> 代码示例地址 :[https://ext.dcloud.net.cn/plugin?id=4941](https://ext.dcloud.net.cn/plugin?id=4941) +> +> 组件演示地址:[https://hellouniapp.dcloud.net.cn](https://hellouniapp.dcloud.net.cn/pages/extUI/badge/badge) +> +> 组件文档地址:[https://uniapp.dcloud.io/component/uniui/uni-ui](https://uniapp.dcloud.io/component/uniui/uni-ui) + +# uni-ui 介绍 + +## uni-ui产品特点 + +### 1. 高性能 + +目前为止,在小程序和混合app领域,暂时还没有比 `uni-ui` 更高性能的框架。 +- 自动差量更新数据 + +虽然uni-app支持小程序自定义组件,所有小程序的ui库都可以用。但小程序自定义组件的ui库都需要使用setData手动更新数据,在大数据量时、或高频更新数据时,很容易产生性能问题。 + +而 `uni-ui` 属于vue组件,uni-app引擎底层自动diff更新数据。当然其实插件市场里众多vue组件都具备这个特点。 +- 优化逻辑层和视图层通讯折损 + +非H5,不管是小程序还是App,不管是app的webview渲染还是原生渲染,全都是逻辑层和视图层分离的。这里就有一个逻辑层和视图层通讯的折损问题。 +比如在视图层拖动一个可跟手的组件,由于通讯的损耗,用js监听很难做到实时跟手。 + +这时就需要使用css动画以及平台底层提供的wxs、bindingx等技术。不过这些技术都比较复杂,所以 `uni-ui` 里做了封装,在需要跟手式操作的ui组件,比如swiperaction列表项左滑菜单,就在底层使用了这些技术,实现了高性能的交互体验 +- 背景停止 + +很多ui组件是会一直动的,比如轮播图、跑马灯。即便这个窗体被新窗体挡住,它在背景层仍然在消耗着硬件资源。在Android的webview版本为chrome66以上,背景操作ui会引发很严重的性能问题,造成前台界面明显卡顿。 + +而 `uni-ui` 的组件,会自动判断自己的显示状态,在组件不再可见时,不会再消耗硬件资源。 + +### 2. 全端 + + `uni-ui` 的组件都是多端自适应的,底层会抹平很多小程序平台的差异或bug。 + +比如导航栏navbar组件,会自动处理不同端的状态栏。 +比如swiperaction组件,在app和微信小程序上会使用交互体验更好的wxs技术,但在不支持wxs的其他小程序端会使用js模拟类似效果。 + + `uni-ui` 还支持nvue原生渲染,[详见](https://github.com/dcloudio/uni-ui/tree/nvue-uni-ui) + +未来 `uni-ui` 还会支持pc等大屏设备。 + +### 3. 与uni统计自动集成实现免打点 + +uni统计是优秀的多端统计平台,见[tongji.dcloud.net.cn](https://tongji.dcloud.net.cn)。 + +除了一张报表看全端,它的另一个重要特点是免打点。 +比如使用 `uni-ui` 的navbar标题栏、收藏、购物车等组件,均可实现自动打点,统计页面标题等各种行为数据。 +当然你也可以关闭uni统计,这不是强制的。 + +### 4. 主题扩展 + + `uni-ui` 支持[uni.scss](https://uniapp.dcloud.io/collocation/uni-scss),可以方便的切换App的风格。 + +ui是一种需求非常发散的产品,DCloud官方也无意用 `uni-ui` 压制第三方ui插件的空间,但官方有义务在性能和多端方面提供一个开源的标杆给大家。 + +我们欢迎更多优秀的ui组件出现,也欢迎更多人贡献 `uni-ui` 的主题风格,满足更多用户的需求。 + + +## 快速开始 + +uni-ui支持 HBuilderX直接新建项目模板、npm安装和单独导入个别组件等多种使用方式 + +### 在HBuilderX 新建uni-app项目的模板中,选择uni-ui模板 +![HBuilderX内创建uni-ui项目](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/create-uni-ui-project.jpg) + +由于uni-app独特的[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)技术,可以免引用、注册,直接使用各种符合规则的vue组件。 + +在代码区键入`u`,拉出各种内置或uni-ui的组件列表,选择其中一个,即可使用该组件。 + +光标放在组件名称上,按F1,可以查阅组件的文档。 + +![uni-ui代码块](https://img.cdn.aliyun.dcloud.net.cn/uni-app/doc/uni-ui-snippet.jpg) + +### 通过 uni_modules 单独安装组件 +如果你没有创建uni-ui项目模板,也可以在你的工程里,通过 uni_modules 单独安装需要的某个组件。下表为uni-ui的扩展组件清单,点击每个组件在详情页面可以导入组件到项目下,导入后直接使用即可,无需import和注册。 + +|组件名|组件说明| +|---|---| +|uni-badge|[数字角标](https://ext.dcloud.net.cn/plugin?name=uni-badge)| +|uni-calendar|[日历](https://ext.dcloud.net.cn/plugin?name=uni-calendar)| +|uni-card|[卡片](https://ext.dcloud.net.cn/plugin?name=uni-card)| +|uni-collapse|[折叠面板](https://ext.dcloud.net.cn/plugin?name=uni-collapse)| +|uni-combox|[组合框](https://ext.dcloud.net.cn/plugin?name=uni-combox)| +|uni-countdown|[倒计时](https://ext.dcloud.net.cn/plugin?name=uni-countdown)| +|uni-data-checkbox|[数据选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-checkbox)| +|uni-data-picker|[数据驱动的picker选择器](https://ext.dcloud.net.cn/plugin?name=uni-data-picker)| +|uni-dateformat|[日期格式化](https://ext.dcloud.net.cn/plugin?name=uni-dateformat)| +|uni-datetime-picker|[日期选择器](https://ext.dcloud.net.cn/plugin?name=uni-datetime-picker)| +|uni-drawer|[抽屉](https://ext.dcloud.net.cn/plugin?name=uni-drawer)| +|uni-easyinput|[增强输入框](https://ext.dcloud.net.cn/plugin?name=uni-easyinput)| +|uni-fab|[悬浮按钮](https://ext.dcloud.net.cn/plugin?name=uni-fab)| +|uni-fav|[收藏按钮](https://ext.dcloud.net.cn/plugin?name=uni-fav)| +|uni-file-picker|[文件选择上传](https://ext.dcloud.net.cn/plugin?name=uni-file-picker)| +|uni-forms|[表单](https://ext.dcloud.net.cn/plugin?name=uni-forms)| +|uni-goods-nav|[商品导航](https://ext.dcloud.net.cn/plugin?name=uni-goods-nav)| +|uni-grid|[宫格](https://ext.dcloud.net.cn/plugin?name=uni-grid)| +|uni-group|[分组](https://ext.dcloud.net.cn/plugin?name=uni-group)| +|uni-icons|[图标](https://ext.dcloud.net.cn/plugin?name=uni-icons)| +|uni-indexed-list|[索引列表](https://ext.dcloud.net.cn/plugin?name=uni-indexed-list)| +|uni-link|[超链接](https://ext.dcloud.net.cn/plugin?name=uni-link)| +|uni-list|[列表](https://ext.dcloud.net.cn/plugin?name=uni-list)| +|uni-load-more|[加载更多](https://ext.dcloud.net.cn/plugin?name=uni-load-more)| +|uni-nav-bar|[自定义导航栏](https://ext.dcloud.net.cn/plugin?name=uni-nav-bar)| +|uni-notice-bar|[通告栏](https://ext.dcloud.net.cn/plugin?name=uni-notice-bar)| +|uni-number-box|[数字输入框](https://ext.dcloud.net.cn/plugin?name=uni-number-box)| +|uni-pagination|[分页器](https://ext.dcloud.net.cn/plugin?name=uni-pagination)| +|uni-popup|[弹出层](https://ext.dcloud.net.cn/plugin?name=uni-popup)| +|uni-rate|[评分](https://ext.dcloud.net.cn/plugin?name=uni-rate)| +|uni-row|[布局-行](https://ext.dcloud.net.cn/plugin?name=uni-row)| +|uni-search-bar|[搜索栏](https://ext.dcloud.net.cn/plugin?name=uni-search-bar)| +|uni-segmented-control|[分段器](https://ext.dcloud.net.cn/plugin?name=uni-segmented-control)| +|uni-steps|[步骤条](https://ext.dcloud.net.cn/plugin?name=uni-steps)| +|uni-swipe-action|[滑动操作](https://ext.dcloud.net.cn/plugin?name=uni-swipe-action)| +|uni-swiper-dot|[轮播图指示点](https://ext.dcloud.net.cn/plugin?name=uni-swiper-dot)| +|uni-table|[表格](https://ext.dcloud.net.cn/plugin?name=uni-table)| +|uni-tag|[标签](https://ext.dcloud.net.cn/plugin?name=uni-tag)| +|uni-title|[章节标题](https://ext.dcloud.net.cn/plugin?name=uni-title)| +|uni-transition|[过渡动画](https://ext.dcloud.net.cn/plugin?name=uni-transition)| + + +使用 `uni_modules` 方式安装组件库,可以直接通过插件市场导入,通过右键菜单快速更新组件,不需要引用、注册,直接在页面中使用 `uni-ui` 组件。[点击安装 uni-ui 组件库](https://ext.dcloud.net.cn/plugin?id=55) + +**注意:下载最新的组件目前仅支持 uni_modules ,非 uni_modules 版本最高支持到组件的1.2.10版本** + +如不能升级到 `uni_modules` 版本,可以使用 `uni_modules` 安装好对应组件,将组件拷贝到对应目录。 + +例如需更新 `uni-list`和`uni-badge` ,将 `uni_modules>uni-list>components`和`uni_modules>uni-badege>components`下所有目录拷贝到如下目录即可: + + +**目录示例** + +```json +┌─components 组件目录 +│ ├─uni-list list 列表目录 +│ │ └─uni-list.vue list 组件文件 +│ ├─uni-list-item list-item 列表目录 +│ │ └─uni-list-item.vue list 组件文件 +│ ├─uni-badge badge 角标目录 +│ │ └─uni-badge.vue badge 组件文件 +│ └─ //.... 更多组件文件 +├─pages 业务页面文件存放的目录 +│ ├─index +│ │ └─index.vue index示例页面 +├─main.js Vue初始化入口文件 +├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期 +├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见 +└─pages.json 配置页 + +``` + +### 通过 `uni_modules` 导入全部组件 +如果想一次把所有uni-ui组件导入到项目中,只需要导入一个 `uni-ui` 组件即可 [点击去导入](https://ext.dcloud.net.cn/plugin?id=55)。 + +如果没有自动导入其他组件,可以在 uni-ui 组件目录上右键选择 `安装三方插件依赖` 即可。 + + + +### npm安装 +在 `vue-cli` 项目中可以使用 `npm` 安装 `uni-ui` 库 ,或者直接在 `HBuilderX` 项目中使用 `npm` 。 + +> **注意** +> cli 项目默认是不编译 `node_modules` 下的组件的,导致条件编译等功能失效 ,导致组件异常 +> 需要在根目录创建 `vue.config.js` 文件 ,增加 `@dcloudio/uni-ui` 包的编译即可正常 +> ```javascript +> // vue.config.js +> module.exports = { +> transpileDependencies:['@dcloudio/uni-ui'] +> } +> ``` + + + +**准备 sass** + +`vue-cli` 项目请先安装 sass 及 sass-loader,如在 HBuliderX 中使用,可跳过此步。 + +- 安装 sass +``` + npm i sass -D 或 yarn add sass -D +``` + +- 安装 sass-loader +``` +npm i sass-loader@10.1.1 -D 或 yarn add sass-loader@10.1.1 -D +``` + +> 如果 `node` 版本小于 16 ,sass-loader 请使用低于 @11.0.0 的版本,[sass-loader@11.0.0 不支持 vue@2.6.12 ](https://stackoverflow.com/questions/66082397/typeerror-this-getoptions-is-not-a-function) +> 如果 `node` 版本大于 16 , `sass-loader` 建议使用 `v8.x` 版本 + +**安装 uni-ui** + +``` +npm i @dcloudio/uni-ui 或 yarn add @dcloudio/uni-ui +``` + + + +**配置easycom** + +使用 `npm` 安装好 `uni-ui` 之后,需要配置 `easycom` 规则,让 `npm` 安装的组件支持 `easycom` + +打开项目根目录下的 `pages.json` 并添加 `easycom` 节点: + +```javascript +// pages.json +{ + "easycom": { + "autoscan": true, + "custom": { + // uni-ui 规则如下配置 + "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" + } + }, + + // 其他内容 + pages:[ + // ... + ] +} + +``` + +在 ``template`` 中使用组件: + +```html + + + +``` + + **注意** + - uni-ui 现在只推荐使用 `easycom` ,如自己引用组件,可能会出现组件找不到的问题 + - 使用 npm 安装的组件,默认情况下 babel-loader 会忽略所有 node_modules 中的文件 ,导致条件编译失效,需要通过配置 `vue.config.js` 解决: + ```javascript + // 在根目录创建 vue.config.js 文件,并配置如下 + module.exports = { + transpileDependencies: ['@dcloudio/uni-ui'] + } + ``` + - uni-ui 是uni-app内置组件的扩展。注意与web开发不同,uni-ui不包括基础组件,它是基础组件的补充。web开发中有的开发者习惯用一个ui库完成所有开发,但在uni-app体系中,推荐开发者首先使用性能更高的基础组件,然后按需引入必要的扩展组件。 + - `uni-ui` 不支持使用 `Vue.use()` 的方式安装 + + +### 贡献代码 +在使用 `uni-ui` 中,如遇到无法解决的问题,请提 [Issues](https://github.com/dcloudio/uni-ui/issues) 给我们,假如您有更好的点子或更好的实现方式,也欢迎给我们提交 [PR](https://github.com/dcloudio/uni-ui/pulls) \ No newline at end of file diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE new file mode 100644 index 0000000..4db40ef --- /dev/null +++ b/uni_modules/uview-ui/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 www.uviewui.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md new file mode 100644 index 0000000..c78ff47 --- /dev/null +++ b/uni_modules/uview-ui/README.md @@ -0,0 +1,66 @@ +

+ logo +

+

uView 2.0

+

多平台快速开发的UI框架

+ +[![stars](https://img.shields.io/github/stars/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![forks](https://img.shields.io/github/forks/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0) +[![issues](https://img.shields.io/github/issues/umicro/uView2.0?style=flat-square&logo=GitHub)](https://github.com/umicro/uView2.0/issues) +[![Website](https://img.shields.io/badge/uView-up-blue?style=flat-square)](https://uviewui.com) +[![release](https://img.shields.io/github/v/release/umicro/uView2.0?style=flat-square)](https://gitee.com/umicro/uView2.0/releases) +[![license](https://img.shields.io/github/license/umicro/uView2.0?style=flat-square)](https://en.wikipedia.org/wiki/MIT_License) + +## 说明 + +uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水 + +## [官方文档:https://uviewui.com](https://uviewui.com) + + +## 预览 + +您可以通过**微信**扫码,查看最佳的演示效果。 +
+
+ + + +## 链接 + +- [官方文档](https://www.uviewui.com/) +- [更新日志](https://www.uviewui.com/components/changelog.html) +- [升级指南](https://www.uviewui.com/components/changeGuide.html) +- [关于我们](https://www.uviewui.com/cooperation/about.html) + +## 交流反馈 + +欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html) + +## 关于PR + +> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。 +> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢! + +## 安装 + +#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593) + +请通过[官网安装文档](https://www.uviewui.com/components/install.html)了解更详细的内容 + +## 快速上手 + +请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 + +## 使用方法 +配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。 + +```html + +``` + +## 版权信息 +uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。 + diff --git a/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md new file mode 100644 index 0000000..16fb337 --- /dev/null +++ b/uni_modules/uview-ui/changelog.md @@ -0,0 +1,374 @@ +## 2.0.37(2024-03-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复表单校验`trigger`触发器参数无效问题 +2. 修复`u-input`组件的`password`属性在动态切换为`false`时失效的问题 +3. 添加微信小程序用户同意隐私协议事件回调 +4. 修复支付宝小程序picker样式问题 +5. `u-modal`添加`duration`字段控制动画过度时间 +6. 修复`picker` `lastIndex`异常导致的`column`异常问题 +7. `tabs`增加长按事件支持 +8. 修复`u-avatar` `square`属性在小程序`open-data`下无效问题 +9. 其他一些修复 +## 2.0.36(2023-03-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 重构`deepClone` & `deepMerge`方法 +2. 其他优化 +## 2.0.34(2022-09-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-input`、`u-textarea`增加`ignoreCompositionEvent`属性 +2. 修复`route`方法调用可能报错的问题 +3. 修复`u-no-network`组件`z-index`无效的问题 +4. 修复`textarea`组件在h5上confirmType=""报错的问题 +5. `u-rate`适配`nvue` +6. 优化验证手机号码的正则表达式(根据工信部发布的《电信网编号计划(2017年版)》进行修改。) +7. `form-item`添加`labelPosition`属性 +8. `u-calendar`修复`maxDate`设置为当前日期,并且当前时间大于08:00时无法显示日期列表的问题 (#724) +9. `u-radio`增加一个默认插槽用于自定义修改label内容 (#680) +10. 修复`timeFormat`函数在safari重的兼容性问题 (#664) +## 2.0.33(2022-06-17) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`loadmore`组件`lineColor`类型错误问题 +2. 修复`u-parse`组件`imgtap`、`linktap`不生效问题 +## 2.0.32(2022-06-16) +# uView2.0重磅发布,利剑出鞘,一统江湖 +1. `u-loadmore`新增自定义颜色、虚/实线 +2. 修复`u-swiper-action`组件部分平台不能上下滑动的问题 +3. 修复`u-list`回弹问题 +4. 修复`notice-bar`组件动画在低端安卓机可能会抖动的问题 +5. `u-loading-page`添加控制图标大小的属性`iconSize` +6. 修复`u-tooltip`组件`color`参数不生效的问题 +7. 修复`u--input`组件使用`blur`事件输出为`undefined`的bug +8. `u-code-input`组件新增键盘弹起时,是否自动上推页面参数`adjustPosition` +9. 修复`image`组件`load`事件无回调对象问题 +10. 修复`button`组件`loadingSize`设置无效问题 +10. 其他修复 +## 2.0.31(2022-04-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`upload`在`vue`页面上传成功后没有成功标志的问题 +2. 解决演示项目中微信小程序模拟上传图片一直出于上传中问题 +3. 修复`u-code-input`组件在`nvue`页面编译到`app`平台上光标异常问题(`app`去除此功能) +4. 修复`actionSheet`组件标题关闭按钮点击事件名称错误的问题 +5. 其他修复 +## 2.0.30(2022-04-04) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. `u-rate`增加`readonly`属性 +2. `tabs`滑块支持设置背景图片 +3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题 +4. `u-code-input`添加光标效果动画 +5. 修复`popup`的`open`事件不触发 +6. 修复`u-flex-column`无效的问题 +7. 修复`u-datetime-picker`索引在特定场合异常问题 +8. 修复`u-datetime-picker`最小时间字符串模板错误问题 +9. `u-swiper`添加`m3u8`验证 +10. `u-swiper`修改判断image和video逻辑 +11. 修复`swiper`无法使用本地图片问题,增加`type`参数 +12. 修复`u-row-notice`格式错误问题 +13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题 +14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题 +15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题 +16. 修复`u-checkbox-group`设置`shape`属性无效的问题 +17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题 +18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题 +19. 修复`u-list`触顶事件的触发错误的问题 +20. 修复`u-text`只有手机号可拨打的问题 +21. 修复`u-textarea`不能换行的问题 +22. 其他修复 +## 2.0.29(2022-03-13) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复`u--text`组件设置`decoration`属性未生效的问题 +2. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +3. 修复`u-datetime-picker` `intercept` 可能为undefined +4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度 +5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效 +6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug +7. 修复`u-datetime-picker`使用`formatter`后返回值不正确 +8. 修复`u-image`组件`loading`无效果的问题 +9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题 +10. 修复`u-datetime-picker`组件`itemHeight`无效问题 +11. 其他修复 +## 2.0.28(2022-02-22) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. search组件新增searchIconSize属性 +2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56 +3. 修复text value.js 判断日期出format错误问题 +4. priceFormat格式化金额出现精度错误 +5. priceFormat在部分情况下出现精度损失问题 +6. 优化表单rules提示 +7. 修复avatar组件src为空时,展示状态不对 +8. 其他修复 +## 2.0.27(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.26(2022-01-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1.样式修复 +## 2.0.25(2022-01-27) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复text组件mode=price时,可能会导致精度错误的问题 +2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题 +4. 修复$u.addUnit()对配置默认单位可能无效的问题 +## 2.0.24(2022-01-25) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复swiper在current指定非0时缩放有误 +2. 修复u-icon添加stop属性的时候报错 +3. 优化遗留的通过正则判断rpx单位的问题 +4. 优化Layout布局 vue使用gutter时,会超出固定区域 +5. 优化search组件高度单位问题(rpx -> px) +6. 修复u-image slot 加载和错误的图片失去了高度 +7. 修复u-index-list中footer插槽与header插槽存在性判断错误 +8. 修复部分机型下u-popup关闭时会闪烁 +9. 修复u-image在nvue-app下失去宽高 +10. 修复u-popup运行报错 +11. 修复u-tooltip报错 +12. 修复box-sizing在app下的警告 +13. 修复u-navbar在小程序中报运行时错误 +14. 其他修复 +## 2.0.23(2022-01-24) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题 +2. 修复col组件gutter参数带rpx单位处理不正确的问题 +3. 修复text组件单行时无法显示省略号的问题 +4. navbar添加titleStyle参数 +5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题 +## 2.0.22(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. $u.page()方法优化,避免在特殊场景可能报错的问题 +2. picker组件添加immediateChange参数 +3. 新增$u.pages()方法 +## 2.0.21(2022-01-19) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化:form组件在用户设置rules的时候提示用户model必传 +2. 优化遗留的通过正则判断rpx单位的问题 +3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确 +4. 修复swiper在current指定非0时缩放有误 +5. 修复u-icon添加stop属性的时候报错 +6. 修复upload组件在accept=all的时候没有作用 +7. 修复在text组件mode为phone时call属性无效的问题 +8. 处理u-form clearValidate方法 +9. 其他修复 +## 2.0.20(2022-01-14) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题 +2. 修复Slider缺少disabled props 还有注释 +3. 修复u-notice-bar点击事件无法拿到index索引值的问题 +4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题 +5. 优化头像为空时显示默认头像 +6. 修复图片地址赋值后判断加载状态为完成问题 +7. 修复日历滚动到默认日期月份区域 +8. search组件暴露点击左边icon事件 +9. 修复u-form clearValidate方法不生效 +10. upload h5端增加返回文件参数(文件的name参数) +11. 处理upload选择文件后url为blob类型无法预览的问题 +12. u-code-input 修复输入框没有往左移出一半屏幕 +13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误 +14. 临时处理ios app下grid点击坍塌问题 +15. 其他修复 +## 2.0.19(2021-12-29) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码” +2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题 +3. navbar添加autoBack参数 +4. 允许avatar组件的事件冒泡 +5. 修复cell组件报错问题 +6. 其他修复 +## 2.0.18(2021-12-28) +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复app端编译报错问题 +2. 重新处理微信小程序端setData过大的性能问题 +3. 修复边框问题 +4. 修复最大最小月份不大于0则没有数据出现的问题 +5. 修复SwipeAction微信小程序端无法上下滑动问题 +6. 修复input的placeholder在小程序端默认显示为true问题 +7. 修复divider组件click事件无效问题 +8. 修复u-code-input maxlength 属性值为 String 类型时显示异常 +9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题 +10. 处理form-item的label为top时,取消错误提示的左边距 +11. 其他修复 +## 2.0.17(2021-12-26) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决HBuilderX3.3.3.20211225版本导致的样式问题 +2. calendar日历添加monthNum参数 +3. navbar添加center slot +## 2.0.16(2021-12-25) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 解决微信小程序setData性能问题 +2. 修复count-down组件change事件不触发问题 +## 2.0.15(2021-12-21) +## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复Cell单元格titleWidth无效 +2. 修复cheakbox组件ischecked不更新 +3. 修复keyboard是否显示"."按键默认值问题 +4. 修复number-keyboard是否显示键盘的"."符号问题 +5. 修复Input输入框 readonly无效 +6. 修复u-avatar 导致打包app、H5时候报错问题 +7. 修复Upload上传deletable无效 +8. 修复upload当设置maxSize时无效的问题 +9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题 +10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星 +## 2.0.13(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题 +## 2.0.12(2021-12-14) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复tabs组件在vue环境下划线消失的问题 +2. 修复upload组件在安卓小程序无法选择视频的问题 +3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE) +4. 修复textarea组件在没绑定v-model时,字符统计不生效问题 +5. 修复nvue下控制是否出现滚动条失效问题 +## 2.0.11(2021-12-13) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. text组件align参数无效的问题 +2. subsection组件添加keyName参数 +3. upload组件无法判断[Object file]类型的问题 +4. 处理notify层级过低问题 +5. codeInput组件添加disabledDot参数 +6. 处理actionSheet组件round参数无效的问题 +7. calendar组件添加round参数用于控制圆角值 +8. 处理swipeAction组件在vue环境下默认被打开的问题 +9. button组件的throttleTime节流参数无效的问题 +10. 解决u-notify手动关闭方法close()无效的问题 +11. input组件readonly不生效问题 +12. tag组件type参数为info不生效问题 +## 2.0.10(2021-12-08) +## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复button sendMessagePath属性不生效 +2. 修复DatetimePicker选择器title无效 +3. 修复u-toast设置loading=true不生效 +4. 修复u-text金额模式传0报错 +5. 修复u-toast组件的icon属性配置不生效 +6. button的icon在特殊场景下的颜色优化 +7. IndexList优化,增加# +## 2.0.9(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题 +2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题 +3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效 +4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题 +## 2.0.8(2021-12-01) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复toast的position参数无效问题 +2. 处理input在ios nvue上无法获得焦点的问题 +3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制 +4. tabs组件添加keyName参数用于配置从对象中读取的键名 +5. 处理text组件名字脱敏默认配置无效的问题 +6. 处理picker组件item文本太长换行问题 +## 2.0.7(2021-11-30) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 修复radio和checkbox动态改变v-model无效的问题。 +2. 优化form规则validator在微信小程序用法 +3. 修复backtop组件mode参数在微信小程序无效的问题 +4. 处理Album的previewFullImage属性无效的问题 +5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题 +## 2.0.6(2021-11-27) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. 处理tag组件在vue下边框无效的问题。 +2. 处理popup组件圆角参数可能无效的问题。 +3. 处理tabs组件lineColor参数可能无效的问题。 +4. propgress组件在值很小时,显示异常的问题。 +## 2.0.5(2021-11-25) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. calendar在vue下显示异常问题。 +2. form组件labelPosition和errorType参数无效的问题 +3. input组件inputAlign无效的问题 +4. 其他一些修复 +## 2.0.4(2021-11-23) +## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +0. input组件缺失@confirm事件,以及subfix和prefix无效问题 +1. component.scss文件样式在vue下干扰全局布局问题 +2. 修复subsection在vue环境下表现异常的问题 +3. tag组件的bgColor等参数无效的问题 +4. upload组件不换行的问题 +5. 其他的一些修复处理 +## 2.0.3(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 处理modal的confirm回调事件拼写错误问题 +6. 处理input组件@input事件参数错误问题 +7. 其他一些修复 +## 2.0.2(2021-11-16) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 +6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss +## 2.0.0(2020-11-15) +## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU) + +# uView2.0重磅发布,利剑出鞘,一统江湖 + +1. uView2.0已实现全面兼容nvue +2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升 +3. 目前uView2.0为公测阶段,相关细节可能会有变动 +4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html) +5. 修复input组件formatter参数缺失问题 + + diff --git a/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue new file mode 100644 index 0000000..d534ece --- /dev/null +++ b/uni_modules/uview-ui/components/u--form/u--form.vue @@ -0,0 +1,78 @@ + + + diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue new file mode 100644 index 0000000..21b7ab1 --- /dev/null +++ b/uni_modules/uview-ui/components/u--image/u--image.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue new file mode 100644 index 0000000..1e58b01 --- /dev/null +++ b/uni_modules/uview-ui/components/u--input/u--input.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue new file mode 100644 index 0000000..44ee52a --- /dev/null +++ b/uni_modules/uview-ui/components/u--text/u--text.vue @@ -0,0 +1,44 @@ + + + diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue new file mode 100644 index 0000000..f4df0b9 --- /dev/null +++ b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue @@ -0,0 +1,48 @@ + + + diff --git a/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js new file mode 100644 index 0000000..e96e04f --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 操作菜单是否展示 (默认false) + show: { + type: Boolean, + default: uni.$u.props.actionSheet.show + }, + // 标题 + title: { + type: String, + default: uni.$u.props.actionSheet.title + }, + // 选项上方的描述信息 + description: { + type: String, + default: uni.$u.props.actionSheet.description + }, + // 数据 + actions: { + type: Array, + default: uni.$u.props.actionSheet.actions + }, + // 取消按钮的文字,不为空时显示按钮 + cancelText: { + type: String, + default: uni.$u.props.actionSheet.cancelText + }, + // 点击某个菜单项时是否关闭弹窗 + closeOnClickAction: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickAction + }, + // 处理底部安全区(默认true) + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.actionSheet.safeAreaInsetBottom + }, + // 小程序的打开方式 + openType: { + type: String, + default: uni.$u.props.actionSheet.openType + }, + // 点击遮罩是否允许关闭 (默认true) + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.actionSheet.closeOnClickOverlay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.actionSheet.round + } + } +} diff --git a/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..26d5d8d --- /dev/null +++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,278 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js new file mode 100644 index 0000000..75cdb37 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 图片地址,Array|Array形式 + urls: { + type: Array, + default: uni.$u.props.album.urls + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.album.keyName + }, + // 单图时,图片长边的长度 + singleSize: { + type: [String, Number], + default: uni.$u.props.album.singleSize + }, + // 多图时,图片边长 + multipleSize: { + type: [String, Number], + default: uni.$u.props.album.multipleSize + }, + // 多图时,图片水平和垂直之间的间隔 + space: { + type: [String, Number], + default: uni.$u.props.album.space + }, + // 单图时,图片缩放裁剪的模式 + singleMode: { + type: String, + default: uni.$u.props.album.singleMode + }, + // 多图时,图片缩放裁剪的模式 + multipleMode: { + type: String, + default: uni.$u.props.album.multipleMode + }, + // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.album.maxCount + }, + // 是否可以预览图片 + previewFullImage: { + type: Boolean, + default: uni.$u.props.album.previewFullImage + }, + // 每行展示图片数量,如设置,singleSize和multipleSize将会无效 + rowCount: { + type: [String, Number], + default: uni.$u.props.album.rowCount + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.album.showMore + } + } +} diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue new file mode 100644 index 0000000..687e2d5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-album/u-album.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js new file mode 100644 index 0000000..4297e2c --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 显示文字 + title: { + type: String, + default: uni.$u.props.alert.title + }, + // 主题,success/warning/info/error + type: { + type: String, + default: uni.$u.props.alert.type + }, + // 辅助性文字 + description: { + type: String, + default: uni.$u.props.alert.description + }, + // 是否可关闭 + closable: { + type: Boolean, + default: uni.$u.props.alert.closable + }, + // 是否显示图标 + showIcon: { + type: Boolean, + default: uni.$u.props.alert.showIcon + }, + // 浅或深色调,light-浅色,dark-深色 + effect: { + type: String, + default: uni.$u.props.alert.effect + }, + // 文字是否居中 + center: { + type: Boolean, + default: uni.$u.props.alert.center + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.alert.fontSize + } + } +} diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue new file mode 100644 index 0000000..81f7d43 --- /dev/null +++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue @@ -0,0 +1,243 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js new file mode 100644 index 0000000..58b42ac --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/props.js @@ -0,0 +1,52 @@ +export default { + props: { + // 头像图片组 + urls: { + type: Array, + default: uni.$u.props.avatarGroup.urls + }, + // 最多展示的头像数量 + maxCount: { + type: [String, Number], + default: uni.$u.props.avatarGroup.maxCount + }, + // 头像形状 + shape: { + type: String, + default: uni.$u.props.avatarGroup.shape + }, + // 图片裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatarGroup.mode + }, + // 超出maxCount时是否显示查看更多的提示 + showMore: { + type: Boolean, + default: uni.$u.props.avatarGroup.showMore + }, + // 头像大小 + size: { + type: [String, Number], + default: uni.$u.props.avatarGroup.size + }, + // 指定从数组的对象元素中读取哪个属性作为图片地址 + keyName: { + type: String, + default: uni.$u.props.avatarGroup.keyName + }, + // 头像之间的遮挡比例 + gap: { + type: [String, Number], + validator(value) { + return value >= 0 && value <= 1 + }, + default: uni.$u.props.avatarGroup.gap + }, + // 需额外显示的值 + extraValue: { + type: [Number, String], + default: uni.$u.props.avatarGroup.extraValue + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue new file mode 100644 index 0000000..7e996d7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..d38d8a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js new file mode 100644 index 0000000..6c702c2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/props.js @@ -0,0 +1,54 @@ +export default { + props: { + // 返回顶部的形状,circle-圆形,square-方形 + mode: { + type: String, + default: uni.$u.props.backtop.mode + }, + // 自定义图标 + icon: { + type: String, + default: uni.$u.props.backtop.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.backtop.text + }, + // 返回顶部滚动时间 + duration: { + type: [String, Number], + default: uni.$u.props.backtop.duration + }, + // 滚动距离 + scrollTop: { + type: [String, Number], + default: uni.$u.props.backtop.scrollTop + }, + // 距离顶部多少距离显示,单位px + top: { + type: [String, Number], + default: uni.$u.props.backtop.top + }, + // 返回顶部按钮到底部的距离,单位px + bottom: { + type: [String, Number], + default: uni.$u.props.backtop.bottom + }, + // 返回顶部按钮到右边的距离,单位px + right: { + type: [String, Number], + default: uni.$u.props.backtop.right + }, + // 层级 + zIndex: { + type: [String, Number], + default: uni.$u.props.backtop.zIndex + }, + // 图标的样式,对象形式 + iconStyle: { + type: Object, + default: uni.$u.props.backtop.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..2d07566 --- /dev/null +++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js new file mode 100644 index 0000000..74c032c --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/props.js @@ -0,0 +1,72 @@ +export default { + props: { + // 是否显示圆点 + isDot: { + type: Boolean, + default: uni.$u.props.badge.isDot + }, + // 显示的内容 + value: { + type: [Number, String], + default: uni.$u.props.badge.value + }, + // 是否显示 + show: { + type: Boolean, + default: uni.$u.props.badge.show + }, + // 最大值,超过最大值会显示 '{max}+' + max: { + type: [Number, String], + default: uni.$u.props.badge.max + }, + // 主题类型,error|warning|success|primary + type: { + type: String, + default: uni.$u.props.badge.type + }, + // 当数值为 0 时,是否展示 Badge + showZero: { + type: Boolean, + default: uni.$u.props.badge.showZero + }, + // 背景颜色,优先级比type高,如设置,type参数会失效 + bgColor: { + type: [String, null], + default: uni.$u.props.badge.bgColor + }, + // 字体颜色 + color: { + type: [String, null], + default: uni.$u.props.badge.color + }, + // 徽标形状,circle-四角均为圆角,horn-左下角为直角 + shape: { + type: String, + default: uni.$u.props.badge.shape + }, + // 设置数字的显示方式,overflow|ellipsis|limit + // overflow会根据max字段判断,超出显示`${max}+` + // ellipsis会根据max判断,超出显示`${max}...` + // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数 + numberType: { + type: String, + default: uni.$u.props.badge.numberType + }, + // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效 + offset: { + type: Array, + default: uni.$u.props.badge.offset + }, + // 是否反转背景和字体颜色 + inverted: { + type: Boolean, + default: uni.$u.props.badge.inverted + }, + // 是否绝对定位 + absolute: { + type: Boolean, + default: uni.$u.props.badge.absolute + } + } +} diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..53cfc81 --- /dev/null +++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss new file mode 100644 index 0000000..490db7d --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/nvue.scss @@ -0,0 +1,46 @@ +$u-button-active-opacity:0.75 !default; +$u-button-loading-text-margin-left:4px !default; +$u-button-text-color: #FFFFFF !default; +$u-button-text-plain-error-color:$u-error !default; +$u-button-text-plain-warning-color:$u-warning !default; +$u-button-text-plain-success-color:$u-success !default; +$u-button-text-plain-info-color:$u-info !default; +$u-button-text-plain-primary-color:$u-primary !default; +.u-button { + &--active { + opacity: $u-button-active-opacity; + } + + &--active--plain { + background-color: rgb(217, 217, 217); + } + + &__loading-text { + margin-left:$u-button-loading-text-margin-left; + } + + &__text, + &__loading-text { + color:$u-button-text-color; + } + + &__text--plain--error { + color:$u-button-text-plain-error-color; + } + + &__text--plain--warning { + color:$u-button-text-plain-warning-color; + } + + &__text--plain--success{ + color:$u-button-text-plain-success-color; + } + + &__text--plain--info { + color:$u-button-text-plain-info-color; + } + + &__text--plain--primary { + color:$u-button-text-plain-primary-color; + } +} \ No newline at end of file diff --git a/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js new file mode 100644 index 0000000..07fd844 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/props.js @@ -0,0 +1,161 @@ +/* + * @Author : LQ + * @Description : + * @version : 1.0 + * @Date : 2021-08-16 10:04:04 + * @LastAuthor : LQ + * @lastTime : 2021-08-16 10:04:24 + * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js + */ +export default { + props: { + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.button.hairline + }, + // 按钮的预置样式,info,primary,error,warning,success + type: { + type: String, + default: uni.$u.props.button.type + }, + // 按钮尺寸,large,normal,small,mini + size: { + type: String, + default: uni.$u.props.button.size + }, + // 按钮形状,circle(两边为半圆),square(带圆角) + shape: { + type: String, + default: uni.$u.props.button.shape + }, + // 按钮是否镂空 + plain: { + type: Boolean, + default: uni.$u.props.button.plain + }, + // 是否禁止状态 + disabled: { + type: Boolean, + default: uni.$u.props.button.disabled + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.button.loading + }, + // 加载中提示文字 + loadingText: { + type: [String, Number], + default: uni.$u.props.button.loadingText + }, + // 加载状态图标类型 + loadingMode: { + type: String, + default: uni.$u.props.button.loadingMode + }, + // 加载图标大小 + loadingSize: { + type: [String, Number], + default: uni.$u.props.button.loadingSize + }, + // 开放能力,具体请看uniapp稳定关于button组件部分说明 + // https://uniapp.dcloud.io/component/button + openType: { + type: String, + default: uni.$u.props.button.openType + }, + // 用于 组件,点击分别会触发 组件的 submit/reset 事件 + // 取值为submit(提交表单),reset(重置表单) + formType: { + type: String, + default: uni.$u.props.button.formType + }, + // 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效 + // 只微信小程序、QQ小程序有效 + appParameter: { + type: String, + default: uni.$u.props.button.appParameter + }, + // 指定是否阻止本节点的祖先节点出现点击态,微信小程序有效 + hoverStopPropagation: { + type: Boolean, + default: uni.$u.props.button.hoverStopPropagation + }, + // 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。只微信小程序有效 + lang: { + type: String, + default: uni.$u.props.button.lang + }, + // 会话来源,open-type="contact"时有效。只微信小程序有效 + sessionFrom: { + type: String, + default: uni.$u.props.button.sessionFrom + }, + // 会话内消息卡片标题,open-type="contact"时有效 + // 默认当前标题,只微信小程序有效 + sendMessageTitle: { + type: String, + default: uni.$u.props.button.sendMessageTitle + }, + // 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效 + // 默认当前分享路径,只微信小程序有效 + sendMessagePath: { + type: String, + default: uni.$u.props.button.sendMessagePath + }, + // 会话内消息卡片图片,open-type="contact"时有效 + // 默认当前页面截图,只微信小程序有效 + sendMessageImg: { + type: String, + default: uni.$u.props.button.sendMessageImg + }, + // 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示, + // 用户点击后可以快速发送小程序消息,open-type="contact"时有效 + showMessageCard: { + type: Boolean, + default: uni.$u.props.button.showMessageCard + }, + // 额外传参参数,用于小程序的data-xxx属性,通过target.dataset.name获取 + dataName: { + type: String, + default: uni.$u.props.button.dataName + }, + // 节流,一定时间内只能触发一次 + throttleTime: { + type: [String, Number], + default: uni.$u.props.button.throttleTime + }, + // 按住后多久出现点击态,单位毫秒 + hoverStartTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStartTime + }, + // 手指松开后点击态保留时间,单位毫秒 + hoverStayTime: { + type: [String, Number], + default: uni.$u.props.button.hoverStayTime + }, + // 按钮文字,之所以通过props传入,是因为slot传入的话 + // nvue中无法控制文字的样式 + text: { + type: [String, Number], + default: uni.$u.props.button.text + }, + // 按钮图标 + icon: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮图标 + iconColor: { + type: String, + default: uni.$u.props.button.icon + }, + // 按钮颜色,支持传入linear-gradient渐变色 + color: { + type: String, + default: uni.$u.props.button.color + } + } +} diff --git a/uni_modules/uview-ui/components/u-button/u-button.vue b/uni_modules/uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..d60f73e --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/u-button.vue @@ -0,0 +1,495 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-button/vue.scss b/uni_modules/uview-ui/components/u-button/vue.scss new file mode 100644 index 0000000..32019b2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-button/vue.scss @@ -0,0 +1,80 @@ +// nvue下hover-class无效 +$u-button-before-top:50% !default; +$u-button-before-left:50% !default; +$u-button-before-width:100% !default; +$u-button-before-height:100% !default; +$u-button-before-transform:translate(-50%, -50%) !default; +$u-button-before-opacity:0 !default; +$u-button-before-background-color:#000 !default; +$u-button-before-border-color:#000 !default; +$u-button-active-before-opacity:.15 !default; +$u-button-icon-margin-left:4px !default; +$u-button-plain-u-button-info-color:$u-info; +$u-button-plain-u-button-success-color:$u-success; +$u-button-plain-u-button-error-color:$u-error; +$u-button-plain-u-button-warning-color:$u-error; + +.u-button { + width: 100%; + + &__text { + white-space: nowrap; + line-height: 1; + } + + &:before { + position: absolute; + top:$u-button-before-top; + left:$u-button-before-left; + width:$u-button-before-width; + height:$u-button-before-height; + border: inherit; + border-radius: inherit; + transform:$u-button-before-transform; + opacity:$u-button-before-opacity; + content: " "; + background-color:$u-button-before-background-color; + border-color:$u-button-before-border-color; + } + + &--active { + &:before { + opacity: .15 + } + } + + &__icon+&__text:not(:empty), + &__loading-text { + margin-left:$u-button-icon-margin-left; + } + + &--plain { + &.u-button--primary { + color: $u-primary; + } + } + + &--plain { + &.u-button--info { + color:$u-button-plain-u-button-info-color; + } + } + + &--plain { + &.u-button--success { + color:$u-button-plain-u-button-success-color; + } + } + + &--plain { + &.u-button--error { + color:$u-button-plain-u-button-error-color; + } + } + + &--plain { + &.u-button--warning { + color:$u-button-plain-u-button-warning-color; + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/header.vue b/uni_modules/uview-ui/components/u-calendar/header.vue new file mode 100644 index 0000000..dc4f7d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/header.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/month.vue b/uni_modules/uview-ui/components/u-calendar/month.vue new file mode 100644 index 0000000..c20937f --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/month.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/props.js b/uni_modules/uview-ui/components/u-calendar/props.js new file mode 100644 index 0000000..2ad7bc7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/props.js @@ -0,0 +1,144 @@ +export default { + props: { + // 日历顶部标题 + title: { + type: String, + default: uni.$u.props.calendar.title + }, + // 是否显示标题 + showTitle: { + type: Boolean, + default: uni.$u.props.calendar.showTitle + }, + // 是否显示副标题 + showSubtitle: { + type: Boolean, + default: uni.$u.props.calendar.showSubtitle + }, + // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 + mode: { + type: String, + default: uni.$u.props.calendar.mode + }, + // mode=range时,第一个日期底部的提示文字 + startText: { + type: String, + default: uni.$u.props.calendar.startText + }, + // mode=range时,最后一个日期底部的提示文字 + endText: { + type: String, + default: uni.$u.props.calendar.endText + }, + // 自定义列表 + customList: { + type: Array, + default: uni.$u.props.calendar.customList + }, + // 主题色,对底部按钮和选中日期有效 + color: { + type: String, + default: uni.$u.props.calendar.color + }, + // 最小的可选日期 + minDate: { + type: [String, Number], + default: uni.$u.props.calendar.minDate + }, + // 最大可选日期 + maxDate: { + type: [String, Number], + default: uni.$u.props.calendar.maxDate + }, + // 默认选中的日期,mode为multiple或range是必须为数组格式 + defaultDate: { + type: [Array, String, Date, null], + default: uni.$u.props.calendar.defaultDate + }, + // mode=multiple时,最多可选多少个日期 + maxCount: { + type: [String, Number], + default: uni.$u.props.calendar.maxCount + }, + // 日期行高 + rowHeight: { + type: [String, Number], + default: uni.$u.props.calendar.rowHeight + }, + // 日期格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.calendar.formatter + }, + // 是否显示农历 + showLunar: { + type: Boolean, + default: uni.$u.props.calendar.showLunar + }, + // 是否显示月份背景色 + showMark: { + type: Boolean, + default: uni.$u.props.calendar.showMark + }, + // 确定按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.calendar.confirmText + }, + // 确认按钮处于禁用状态时的文字 + confirmDisabledText: { + type: String, + default: uni.$u.props.calendar.confirmDisabledText + }, + // 是否显示日历弹窗 + show: { + type: Boolean, + default: uni.$u.props.calendar.show + }, + // 是否允许点击遮罩关闭日历 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.calendar.closeOnClickOverlay + }, + // 是否为只读状态,只读状态下禁止选择日期 + readonly: { + type: Boolean, + default: uni.$u.props.calendar.readonly + }, + // 是否展示确认按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.calendar.showConfirm + }, + // 日期区间最多可选天数,默认无限制,mode = range时有效 + maxRange: { + type: [Number, String], + default: uni.$u.props.calendar.maxRange + }, + // 范围选择超过最多可选天数时的提示文案,mode = range时有效 + rangePrompt: { + type: String, + default: uni.$u.props.calendar.rangePrompt + }, + // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 + showRangePrompt: { + type: Boolean, + default: uni.$u.props.calendar.showRangePrompt + }, + // 是否允许日期范围的起止时间为同一天,mode = range时有效 + allowSameDay: { + type: Boolean, + default: uni.$u.props.calendar.allowSameDay + }, + // 圆角值 + round: { + type: [Boolean, String, Number], + default: uni.$u.props.calendar.round + }, + // 最多展示月份数量 + monthNum: { + type: [Number, String], + default: 3 + } + } +} diff --git a/uni_modules/uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..511f993 --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-calendar/util.js b/uni_modules/uview-ui/components/u-calendar/util.js new file mode 100644 index 0000000..ca4736b --- /dev/null +++ b/uni_modules/uview-ui/components/u-calendar/util.js @@ -0,0 +1,85 @@ +export default { + methods: { + // 设置月份数据 + setMonth() { + // 月初是周几 + const day = dayjs(this.date).date(1).day() + const start = day == 0 ? 6 : day - 1 + + // 本月天数 + const days = dayjs(this.date).endOf('month').format('D') + + // 上个月天数 + const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') + + // 日期数据 + const arr = [] + // 清空表格 + this.month = [] + + // 添加上月数据 + arr.push( + ...new Array(start).fill(1).map((e, i) => { + const day = prevDays - start + i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加本月数据 + arr.push( + ...new Array(days - 0).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + date: dayjs(this.date).date(day).format('YYYY-MM-DD') + } + }) + ) + + // 添加下个月 + arr.push( + ...new Array(42 - days - start).fill(1).map((e, i) => { + const day = i + 1 + + return { + value: day, + disabled: true, + date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') + } + }) + ) + + // 分割数组 + for (let n = 0; n < arr.length; n += 7) { + this.month.push( + arr.slice(n, n + 7).map((e, i) => { + e.index = i + n + + // 自定义信息 + const custom = this.customList.find((c) => c.date == e.date) + + // 农历 + if (this.lunar) { + const { + IDayCn, + IMonthCn + } = this.getLunar(e.date) + e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn + } + + return { + ...e, + ...custom + } + }) + ) + } + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/props.js b/uni_modules/uview-ui/components/u-car-keyboard/props.js new file mode 100644 index 0000000..3553647 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: false + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: false + } + } +} diff --git a/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..51175b5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,311 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-cell-group/props.js b/uni_modules/uview-ui/components/u-cell-group/props.js new file mode 100644 index 0000000..350ef40 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 分组标题 + title: { + type: String, + default: uni.$u.props.cellGroup.title + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.cellGroup.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..a9508c0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,61 @@ + + + + + + diff --git a/uni_modules/uview-ui/components/u-cell/props.js b/uni_modules/uview-ui/components/u-cell/props.js new file mode 100644 index 0000000..da03330 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/props.js @@ -0,0 +1,110 @@ +export default { + props: { + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.cell.title + }, + // 标题下方的描述信息 + label: { + type: [String, Number], + default: uni.$u.props.cell.label + }, + // 右侧的内容 + value: { + type: [String, Number], + default: uni.$u.props.cell.value + }, + // 左侧图标名称,或者图片链接(本地文件建议使用绝对地址) + icon: { + type: String, + default: uni.$u.props.cell.icon + }, + // 是否禁用cell + disabled: { + type: Boolean, + default: uni.$u.props.cell.disabled + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.cell.border + }, + // 内容是否垂直居中(主要是针对右侧的value部分) + center: { + type: Boolean, + default: uni.$u.props.cell.center + }, + // 点击后跳转的URL地址 + url: { + type: String, + default: uni.$u.props.cell.url + }, + // 链接跳转的方式,内部使用的是uView封装的route方法,可能会进行拦截操作 + linkType: { + type: String, + default: uni.$u.props.cell.linkType + }, + // 是否开启点击反馈(表现为点击时加上灰色背景) + clickable: { + type: Boolean, + default: uni.$u.props.cell.clickable + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.cell.isLink + }, + // 是否显示表单状态下的必填星号(此组件可能会内嵌入input组件) + required: { + type: Boolean, + default: uni.$u.props.cell.required + }, + // 右侧的图标箭头 + rightIcon: { + type: String, + default: uni.$u.props.cell.rightIcon + }, + // 右侧箭头的方向,可选值为:left,up,down + arrowDirection: { + type: String, + default: uni.$u.props.cell.arrowDirection + }, + // 左侧图标样式 + iconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.iconStyle + } + }, + // 右侧箭头图标的样式 + rightIconStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.rightIconStyle + } + }, + // 标题的样式 + titleStyle: { + type: [Object, String], + default: () => { + return uni.$u.props.cell.titleStyle + } + }, + // 单位元的大小,可选值为large + size: { + type: String, + default: uni.$u.props.cell.size + }, + // 点击cell是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.cell.stop + }, + // 标识符,cell被点击时返回 + name: { + type: [Number, String], + default: uni.$u.props.cell.name + } + } +} diff --git a/uni_modules/uview-ui/components/u-cell/u-cell.vue b/uni_modules/uview-ui/components/u-cell/u-cell.vue new file mode 100644 index 0000000..b099c90 --- /dev/null +++ b/uni_modules/uview-ui/components/u-cell/u-cell.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox-group/props.js b/uni_modules/uview-ui/components/u-checkbox-group/props.js new file mode 100644 index 0000000..2f818a1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/props.js @@ -0,0 +1,82 @@ +export default { + props: { + // 标识符 + name: { + type: String, + default: uni.$u.props.checkboxGroup.name + }, + // 绑定的值 + value: { + type: Array, + default: uni.$u.props.checkboxGroup.value + }, + // 形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.checkboxGroup.shape + }, + // 是否禁用全部checkbox + disabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.disabled + }, + + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkboxGroup.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkboxGroup.inactiveColor + }, + + // 整个组件的尺寸,默认px + size: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.size + }, + // 布局方式,row-横向,column-纵向 + placement: { + type: String, + default: uni.$u.props.checkboxGroup.placement + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.labelSize + }, + // label的字体颜色 + labelColor: { + type: [String], + default: uni.$u.props.checkboxGroup.labelColor + }, + // 是否禁止点击文本操作 + labelDisabled: { + type: Boolean, + default: uni.$u.props.checkboxGroup.labelDisabled + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkboxGroup.iconColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkboxGroup.iconSize + }, + // 勾选图标的对齐方式,left-左边,right-右边 + iconPlacement: { + type: String, + default: uni.$u.props.checkboxGroup.iconPlacement + }, + // 竖向配列时,是否显示下划线 + borderBottom: { + type: Boolean, + default: uni.$u.props.checkboxGroup.borderBottom + } + + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..7a6b4fa --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-checkbox/props.js b/uni_modules/uview-ui/components/u-checkbox/props.js new file mode 100644 index 0000000..93f4fd9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/props.js @@ -0,0 +1,69 @@ +export default { + props: { + // checkbox的名称 + name: { + type: [String, Number, Boolean], + default: uni.$u.props.checkbox.name + }, + // 形状,square为方形,circle为圆型 + shape: { + type: String, + default: uni.$u.props.checkbox.shape + }, + // 整体的大小 + size: { + type: [String, Number], + default: uni.$u.props.checkbox.size + }, + // 是否默认选中 + checked: { + type: Boolean, + default: uni.$u.props.checkbox.checked + }, + // 是否禁用 + disabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.disabled + }, + // 选中状态下的颜色,如设置此值,将会覆盖parent的activeColor值 + activeColor: { + type: String, + default: uni.$u.props.checkbox.activeColor + }, + // 未选中的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.checkbox.inactiveColor + }, + // 图标的大小,单位px + iconSize: { + type: [String, Number], + default: uni.$u.props.checkbox.iconSize + }, + // 图标颜色 + iconColor: { + type: String, + default: uni.$u.props.checkbox.iconColor + }, + // label提示文字,因为nvue下,直接slot进来的文字,由于特殊的结构,无法修改样式 + label: { + type: [String, Number], + default: uni.$u.props.checkbox.label + }, + // label的字体大小,px单位 + labelSize: { + type: [String, Number], + default: uni.$u.props.checkbox.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.checkbox.labelColor + }, + // 是否禁止点击提示语选中复选框 + labelDisabled: { + type: [String, Boolean], + default: uni.$u.props.checkbox.labelDisabled + } + } +} diff --git a/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..6429cca --- /dev/null +++ b/uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-circle-progress/props.js b/uni_modules/uview-ui/components/u-circle-progress/props.js new file mode 100644 index 0000000..d776cfb --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/props.js @@ -0,0 +1,8 @@ +export default { + props: { + percentage: { + type: [String, Number], + default: uni.$u.props.circleProgress.percentage + } + } +} diff --git a/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..d1ee286 --- /dev/null +++ b/uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code-input/props.js b/uni_modules/uview-ui/components/u-code-input/props.js new file mode 100644 index 0000000..0f016ee --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/props.js @@ -0,0 +1,79 @@ +export default { + props: { + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.codeInput.adjustPosition + }, + // 最大输入长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.codeInput.maxlength + }, + // 是否用圆点填充 + dot: { + type: Boolean, + default: uni.$u.props.codeInput.dot + }, + // 显示模式,box-盒子模式,line-底部横线模式 + mode: { + type: String, + default: uni.$u.props.codeInput.mode + }, + // 是否细边框 + hairline: { + type: Boolean, + default: uni.$u.props.codeInput.hairline + }, + // 字符间的距离 + space: { + type: [String, Number], + default: uni.$u.props.codeInput.space + }, + // 预置值 + value: { + type: [String, Number], + default: uni.$u.props.codeInput.value + }, + // 是否自动获取焦点 + focus: { + type: Boolean, + default: uni.$u.props.codeInput.focus + }, + // 字体是否加粗 + bold: { + type: Boolean, + default: uni.$u.props.codeInput.bold + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.codeInput.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.codeInput.fontSize + }, + // 输入框的大小,宽等于高 + size: { + type: [String, Number], + default: uni.$u.props.codeInput.size + }, + // 是否隐藏原生键盘,如果想用自定义键盘的话,需设置此参数为true + disabledKeyboard: { + type: Boolean, + default: uni.$u.props.codeInput.disabledKeyboard + }, + // 边框和线条颜色 + borderColor: { + type: String, + default: uni.$u.props.codeInput.borderColor + }, + // 是否禁止输入"."符号 + disabledDot: { + type: Boolean, + default: uni.$u.props.codeInput.disabledDot + } + } +} diff --git a/uni_modules/uview-ui/components/u-code-input/u-code-input.vue b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue new file mode 100644 index 0000000..96241cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-code-input/u-code-input.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-code/props.js b/uni_modules/uview-ui/components/u-code/props.js new file mode 100644 index 0000000..eaf80d0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/props.js @@ -0,0 +1,34 @@ +export default { + props: { + // 倒计时总秒数 + seconds: { + type: [String, Number], + default: uni.$u.props.code.seconds + }, + // 尚未开始时提示 + startText: { + type: String, + default: uni.$u.props.code.startText + }, + // 正在倒计时中的提示 + changeText: { + type: String, + default: uni.$u.props.code.changeText + }, + // 倒计时结束时的提示 + endText: { + type: String, + default: uni.$u.props.code.endText + }, + // 是否在H5刷新或各端返回再进入时继续倒计时 + keepRunning: { + type: Boolean, + default: uni.$u.props.code.keepRunning + }, + // 为了区分多个页面,或者一个页面多个倒计时组件本地存储的继续倒计时变了 + uniqueKey: { + type: String, + default: uni.$u.props.code.uniqueKey + } + } +} diff --git a/uni_modules/uview-ui/components/u-code/u-code.vue b/uni_modules/uview-ui/components/u-code/u-code.vue new file mode 100644 index 0000000..f79a09a --- /dev/null +++ b/uni_modules/uview-ui/components/u-code/u-code.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-col/props.js b/uni_modules/uview-ui/components/u-col/props.js new file mode 100644 index 0000000..0622251 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 占父容器宽度的多少等分,总分为12份 + span: { + type: [String, Number], + default: uni.$u.props.col.span + }, + // 指定栅格左侧的间隔数(总12栏) + offset: { + type: [String, Number], + default: uni.$u.props.col.offset + }, + // 水平排列方式,可选值为`start`(或`flex-start`)、`end`(或`flex-end`)、`center`、`around`(或`space-around`)、`between`(或`space-between`) + justify: { + type: String, + default: uni.$u.props.col.justify + }, + // 垂直对齐方式,可选值为top、center、bottom、stretch + align: { + type: String, + default: uni.$u.props.col.align + }, + // 文字对齐方式 + textAlign: { + type: String, + default: uni.$u.props.col.textAlign + } + } +} diff --git a/uni_modules/uview-ui/components/u-col/u-col.vue b/uni_modules/uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..8be1517 --- /dev/null +++ b/uni_modules/uview-ui/components/u-col/u-col.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse-item/props.js b/uni_modules/uview-ui/components/u-collapse-item/props.js new file mode 100644 index 0000000..bd5749b --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 标题 + title: { + type: String, + default: uni.$u.props.collapseItem.title + }, + // 标题右侧内容 + value: { + type: String, + default: uni.$u.props.collapseItem.value + }, + // 标题下方的描述信息 + label: { + type: String, + default: uni.$u.props.collapseItem.label + }, + // 是否禁用折叠面板 + disabled: { + type: Boolean, + default: uni.$u.props.collapseItem.disabled + }, + // 是否展示右侧箭头并开启点击反馈 + isLink: { + type: Boolean, + default: uni.$u.props.collapseItem.isLink + }, + // 是否开启点击反馈 + clickable: { + type: Boolean, + default: uni.$u.props.collapseItem.clickable + }, + // 是否显示内边框 + border: { + type: Boolean, + default: uni.$u.props.collapseItem.border + }, + // 标题的对齐方式 + align: { + type: String, + default: uni.$u.props.collapseItem.align + }, + // 唯一标识符 + name: { + type: [String, Number], + default: uni.$u.props.collapseItem.name + }, + // 标题左侧图片,可为绝对路径的图片或内置图标 + icon: { + type: String, + default: uni.$u.props.collapseItem.icon + }, + // 面板展开收起的过渡时间,单位ms + duration: { + type: Number, + default: uni.$u.props.collapseItem.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..0e1b703 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-collapse/props.js b/uni_modules/uview-ui/components/u-collapse/props.js new file mode 100644 index 0000000..7ee6d31 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 当前展开面板的name,非手风琴模式:[],手风琴模式:string | number + value: { + type: [String, Number, Array, null], + default: uni.$u.props.collapse.value + }, + // 是否手风琴模式 + accordion: { + type: Boolean, + default: uni.$u.props.collapse.accordion + }, + // 是否显示外边框 + border: { + type: Boolean, + default: uni.$u.props.collapse.border + } + } +} diff --git a/uni_modules/uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..fc188a2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-column-notice/props.js b/uni_modules/uview-ui/components/u-column-notice/props.js new file mode 100644 index 0000000..4809154 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/props.js @@ -0,0 +1,55 @@ +export default { + props: { + // 显示的内容,字符串 + text: { + type: [Array], + default: uni.$u.props.columnNotice.text + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.columnNotice.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.columnNotice.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.columnNotice.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.columnNotice.bgColor + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.columnNotice.fontSize + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.columnNotice.speed + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.columnNotice.step + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.columnNotice.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.columnNotice.disableTouch + } + } +} diff --git a/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..fc39532 --- /dev/null +++ b/uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/props.js b/uni_modules/uview-ui/components/u-count-down/props.js new file mode 100644 index 0000000..d62f025 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 倒计时时长,单位ms + time: { + type: [String, Number], + default: uni.$u.props.countDown.time + }, + // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒 + format: { + type: String, + default: uni.$u.props.countDown.format + }, + // 是否自动开始倒计时 + autoStart: { + type: Boolean, + default: uni.$u.props.countDown.autoStart + }, + // 是否展示毫秒倒计时 + millisecond: { + type: Boolean, + default: uni.$u.props.countDown.millisecond + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..b5e85a6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-count-down/utils.js b/uni_modules/uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/uview-ui/components/u-count-to/props.js b/uni_modules/uview-ui/components/u-count-to/props.js new file mode 100644 index 0000000..86873c1 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 开始的数值,默认从0增长到某一个数 + startVal: { + type: [String, Number], + default: uni.$u.props.countTo.startVal + }, + // 要滚动的目标数值,必须 + endVal: { + type: [String, Number], + default: uni.$u.props.countTo.endVal + }, + // 滚动到目标数值的动画持续时间,单位为毫秒(ms) + duration: { + type: [String, Number], + default: uni.$u.props.countTo.duration + }, + // 设置数值后是否自动开始滚动 + autoplay: { + type: Boolean, + default: uni.$u.props.countTo.autoplay + }, + // 要显示的小数位数 + decimals: { + type: [String, Number], + default: uni.$u.props.countTo.decimals + }, + // 是否在即将到达目标数值的时候,使用缓慢滚动的效果 + useEasing: { + type: Boolean, + default: uni.$u.props.countTo.useEasing + }, + // 十进制分割 + decimal: { + type: [String, Number], + default: uni.$u.props.countTo.decimal + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.countTo.color + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.countTo.fontSize + }, + // 是否加粗字体 + bold: { + type: Boolean, + default: uni.$u.props.countTo.bold + }, + // 千位分隔符,类似金额的分割(¥23,321.05中的",") + separator: { + type: String, + default: uni.$u.props.countTo.separator + } + } +} diff --git a/uni_modules/uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..417b732 --- /dev/null +++ b/uni_modules/uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-datetime-picker/props.js b/uni_modules/uview-ui/components/u-datetime-picker/props.js new file mode 100644 index 0000000..f44c0f9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/props.js @@ -0,0 +1,116 @@ +export default { + props: { + // 是否打开组件 + show: { + type: Boolean, + default: uni.$u.props.datetimePicker.show + }, + // 是否展示顶部的操作栏 + showToolbar: { + type: Boolean, + default: uni.$u.props.datetimePicker.showToolbar + }, + // 绑定值 + value: { + type: [String, Number], + default: uni.$u.props.datetimePicker.value + }, + // 顶部标题 + title: { + type: String, + default: uni.$u.props.datetimePicker.title + }, + // 展示格式,mode=date为日期选择,mode=time为时间选择,mode=year-month为年月选择,mode=datetime为日期时间选择 + mode: { + type: String, + default: uni.$u.props.datetimePicker.mode + }, + // 可选的最大时间 + maxDate: { + type: Number, + // 最大默认值为后10年 + default: uni.$u.props.datetimePicker.maxDate + }, + // 可选的最小时间 + minDate: { + type: Number, + // 最小默认值为前10年 + default: uni.$u.props.datetimePicker.minDate + }, + // 可选的最小小时,仅mode=time有效 + minHour: { + type: Number, + default: uni.$u.props.datetimePicker.minHour + }, + // 可选的最大小时,仅mode=time有效 + maxHour: { + type: Number, + default: uni.$u.props.datetimePicker.maxHour + }, + // 可选的最小分钟,仅mode=time有效 + minMinute: { + type: Number, + default: uni.$u.props.datetimePicker.minMinute + }, + // 可选的最大分钟,仅mode=time有效 + maxMinute: { + type: Number, + default: uni.$u.props.datetimePicker.maxMinute + }, + // 选项过滤函数 + filter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.filter + }, + // 选项格式化函数 + formatter: { + type: [Function, null], + default: uni.$u.props.datetimePicker.formatter + }, + // 是否显示加载中状态 + loading: { + type: Boolean, + default: uni.$u.props.datetimePicker.loading + }, + // 各列中,单个选项的高度 + itemHeight: { + type: [String, Number], + default: uni.$u.props.datetimePicker.itemHeight + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.datetimePicker.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.datetimePicker.confirmText + }, + // 取消按钮的颜色 + cancelColor: { + type: String, + default: uni.$u.props.datetimePicker.cancelColor + }, + // 确认按钮的颜色 + confirmColor: { + type: String, + default: uni.$u.props.datetimePicker.confirmColor + }, + // 每列中可见选项的数量 + visibleItemCount: { + type: [String, Number], + default: uni.$u.props.datetimePicker.visibleItemCount + }, + // 是否允许点击遮罩关闭选择器 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.datetimePicker.closeOnClickOverlay + }, + // 各列的默认索引 + defaultIndex: { + type: Array, + default: uni.$u.props.datetimePicker.defaultIndex + } + } +} diff --git a/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue new file mode 100644 index 0000000..18d8dcc --- /dev/null +++ b/uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue @@ -0,0 +1,360 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-divider/props.js b/uni_modules/uview-ui/components/u-divider/props.js new file mode 100644 index 0000000..1fa8359 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/props.js @@ -0,0 +1,44 @@ +export default { + props: { + // 是否虚线 + dashed: { + type: Boolean, + default: uni.$u.props.divider.dashed + }, + // 是否细线 + hairline: { + type: Boolean, + default: uni.$u.props.divider.hairline + }, + // 是否以点替代文字,优先于text字段起作用 + dot: { + type: Boolean, + default: uni.$u.props.divider.dot + }, + // 内容文本的位置,left-左边,center-中间,right-右边 + textPosition: { + type: String, + default: uni.$u.props.divider.textPosition + }, + // 文本内容 + text: { + type: [String, Number], + default: uni.$u.props.divider.text + }, + // 文本大小 + textSize: { + type: [String, Number], + default: uni.$u.props.divider.textSize + }, + // 文本颜色 + textColor: { + type: String, + default: uni.$u.props.divider.textColor + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.divider.lineColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-divider/u-divider.vue b/uni_modules/uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..b629da6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown-item/props.js b/uni_modules/uview-ui/components/u-dropdown-item/props.js new file mode 100644 index 0000000..501a1f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/props.js @@ -0,0 +1,36 @@ +export default { + props: { + // 当前选中项的value值 + value: { + type: [Number, String, Array], + default: '' + }, + // 菜单项标题 + title: { + type: [String, Number], + default: '' + }, + // 选项数据,如果传入了默认slot,此参数无效 + options: { + type: Array, + default() { + return [] + } + }, + // 是否禁用此菜单项 + disabled: { + type: Boolean, + default: false + }, + // 下拉弹窗的高度 + height: { + type: [Number, String], + default: 'auto' + }, + // 点击遮罩是否可以收起弹窗 + closeOnClickOverlay: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-dropdown/props.js b/uni_modules/uview-ui/components/u-dropdown/props.js new file mode 100644 index 0000000..5f8465e --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/props.js @@ -0,0 +1,65 @@ +export default { + props: { + // 标题选中时的样式 + activeStyle: { + type: [String, Object], + default: () => ({ + color: '#2979ff', + fontSize: '14px' + }) + }, + // 标题未选中时的样式 + inactiveStyle: { + type: [String, Object], + default: () => ({ + color: '#606266', + fontSize: '14px' + }) + }, + // 点击遮罩是否关闭菜单 + closeOnClickMask: { + type: Boolean, + default: true + }, + // 点击当前激活项标题是否关闭菜单 + closeOnClickSelf: { + type: Boolean, + default: true + }, + // 过渡时间 + duration: { + type: [Number, String], + default: 300 + }, + // 标题菜单的高度 + height: { + type: [Number, String], + default: 40 + }, + // 是否显示下边框 + borderBottom: { + type: Boolean, + default: false + }, + // 标题的字体大小 + titleSize: { + type: [Number, String], + default: 14 + }, + // 下拉出来的内容部分的圆角值 + borderRadius: { + type: [Number, String], + default: 0 + }, + // 菜单右侧的icon图标 + menuIcon: { + type: String, + default: 'arrow-down' + }, + // 菜单右侧图标的大小 + menuIconSize: { + type: [Number, String], + default: 14 + } + } +} diff --git a/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..f830291 --- /dev/null +++ b/uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-empty/props.js b/uni_modules/uview-ui/components/u-empty/props.js new file mode 100644 index 0000000..78662f8 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 内置图标名称,或图片路径,建议绝对路径 + icon: { + type: String, + default: uni.$u.props.empty.icon + }, + // 提示文字 + text: { + type: String, + default: uni.$u.props.empty.text + }, + // 文字颜色 + textColor: { + type: String, + default: uni.$u.props.empty.textColor + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.empty.textSize + }, + // 图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.empty.iconColor + }, + // 图标的大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.empty.iconSize + }, + // 选择预置的图标类型 + mode: { + type: String, + default: uni.$u.props.empty.mode + }, + // 图标宽度,单位px + width: { + type: [String, Number], + default: uni.$u.props.empty.width + }, + // 图标高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.empty.height + }, + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.empty.show + }, + // 组件距离上一个元素之间的距离,默认px单位 + marginTop: { + type: [String, Number], + default: uni.$u.props.empty.marginTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-empty/u-empty.vue b/uni_modules/uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..03d6a27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form-item/props.js b/uni_modules/uview-ui/components/u-form-item/props.js new file mode 100644 index 0000000..7b16655 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/props.js @@ -0,0 +1,48 @@ +export default { + props: { + // input的label提示语 + label: { + type: String, + default: uni.$u.props.formItem.label + }, + // 绑定的值 + prop: { + type: String, + default: uni.$u.props.formItem.prop + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: [String, Boolean], + default: uni.$u.props.formItem.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.formItem.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.formItem.labelWidth + }, + // 右侧图标 + rightIcon: { + type: String, + default: uni.$u.props.formItem.rightIcon + }, + // 左侧图标 + leftIcon: { + type: String, + default: uni.$u.props.formItem.leftIcon + }, + // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 + required: { + type: Boolean, + default: uni.$u.props.formItem.required + }, + leftIconStyle: { + type: [String, Object], + default: uni.$u.props.formItem.leftIconStyle, + } + } +} diff --git a/uni_modules/uview-ui/components/u-form-item/u-form-item.vue b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue new file mode 100644 index 0000000..6aa8d69 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form-item/u-form-item.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-form/props.js b/uni_modules/uview-ui/components/u-form/props.js new file mode 100644 index 0000000..f2a629c --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/props.js @@ -0,0 +1,45 @@ +export default { + props: { + // 当前form的需要验证字段的集合 + model: { + type: Object, + default: uni.$u.props.form.model + }, + // 验证规则 + rules: { + type: [Object, Function, Array], + default: uni.$u.props.form.rules + }, + // 有错误时的提示方式,message-提示信息,toast-进行toast提示 + // border-bottom-下边框呈现红色,none-无提示 + errorType: { + type: String, + default: uni.$u.props.form.errorType + }, + // 是否显示表单域的下划线边框 + borderBottom: { + type: Boolean, + default: uni.$u.props.form.borderBottom + }, + // label的位置,left-左边,top-上边 + labelPosition: { + type: String, + default: uni.$u.props.form.labelPosition + }, + // label的宽度,单位px + labelWidth: { + type: [String, Number], + default: uni.$u.props.form.labelWidth + }, + // lable字体的对齐方式 + labelAlign: { + type: String, + default: uni.$u.props.form.labelAlign + }, + // lable的样式,对象形式 + labelStyle: { + type: Object, + default: uni.$u.props.form.labelStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-form/u-form.vue b/uni_modules/uview-ui/components/u-form/u-form.vue new file mode 100644 index 0000000..fe2dde2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-form/u-form.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-gap/props.js b/uni_modules/uview-ui/components/u-gap/props.js new file mode 100644 index 0000000..89953e3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 背景颜色(默认transparent) + bgColor: { + type: String, + default: uni.$u.props.gap.bgColor + }, + // 分割槽高度,单位px(默认30) + height: { + type: [String, Number], + default: uni.$u.props.gap.height + }, + // 与上一个组件的距离 + marginTop: { + type: [String, Number], + default: uni.$u.props.gap.marginTop + }, + // 与下一个组件的距离 + marginBottom: { + type: [String, Number], + default: uni.$u.props.gap.marginBottom + } + } +} diff --git a/uni_modules/uview-ui/components/u-gap/u-gap.vue b/uni_modules/uview-ui/components/u-gap/u-gap.vue new file mode 100644 index 0000000..e4429f0 --- /dev/null +++ b/uni_modules/uview-ui/components/u-gap/u-gap.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid-item/props.js b/uni_modules/uview-ui/components/u-grid-item/props.js new file mode 100644 index 0000000..06c3c66 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/props.js @@ -0,0 +1,14 @@ +export default { + props: { + // 宫格的name + name: { + type: [String, Number, null], + default: uni.$u.props.gridItem.name + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.gridItem.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue new file mode 100644 index 0000000..fc0c7cf --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-grid/props.js b/uni_modules/uview-ui/components/u-grid/props.js new file mode 100644 index 0000000..87b0f6a --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 分成几列 + col: { + type: [String, Number], + default: uni.$u.props.grid.col + }, + // 是否显示边框 + border: { + type: Boolean, + default: uni.$u.props.grid.border + }, + // 宫格对齐方式,表现为数量少的时候,靠左,居中,还是靠右 + align: { + type: String, + default: uni.$u.props.grid.align + } + } +} diff --git a/uni_modules/uview-ui/components/u-grid/u-grid.vue b/uni_modules/uview-ui/components/u-grid/u-grid.vue new file mode 100644 index 0000000..b43cc27 --- /dev/null +++ b/uni_modules/uview-ui/components/u-grid/u-grid.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-icon/icons.js b/uni_modules/uview-ui/components/u-icon/icons.js new file mode 100644 index 0000000..f4d0fe2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/icons.js @@ -0,0 +1,214 @@ +export default { + 'uicon-level': '\ue693', + 'uicon-column-line': '\ue68e', + 'uicon-checkbox-mark': '\ue807', + 'uicon-folder': '\ue7f5', + 'uicon-movie': '\ue7f6', + 'uicon-star-fill': '\ue669', + 'uicon-star': '\ue65f', + 'uicon-phone-fill': '\ue64f', + 'uicon-phone': '\ue622', + 'uicon-apple-fill': '\ue881', + 'uicon-chrome-circle-fill': '\ue885', + 'uicon-backspace': '\ue67b', + 'uicon-attach': '\ue632', + 'uicon-cut': '\ue948', + 'uicon-empty-car': '\ue602', + 'uicon-empty-coupon': '\ue682', + 'uicon-empty-address': '\ue646', + 'uicon-empty-favor': '\ue67c', + 'uicon-empty-permission': '\ue686', + 'uicon-empty-news': '\ue687', + 'uicon-empty-search': '\ue664', + 'uicon-github-circle-fill': '\ue887', + 'uicon-rmb': '\ue608', + 'uicon-person-delete-fill': '\ue66a', + 'uicon-reload': '\ue788', + 'uicon-order': '\ue68f', + 'uicon-server-man': '\ue6bc', + 'uicon-search': '\ue62a', + 'uicon-fingerprint': '\ue955', + 'uicon-more-dot-fill': '\ue630', + 'uicon-scan': '\ue662', + 'uicon-share-square': '\ue60b', + 'uicon-map': '\ue61d', + 'uicon-map-fill': '\ue64e', + 'uicon-tags': '\ue629', + 'uicon-tags-fill': '\ue651', + 'uicon-bookmark-fill': '\ue63b', + 'uicon-bookmark': '\ue60a', + 'uicon-eye': '\ue613', + 'uicon-eye-fill': '\ue641', + 'uicon-mic': '\ue64a', + 'uicon-mic-off': '\ue649', + 'uicon-calendar': '\ue66e', + 'uicon-calendar-fill': '\ue634', + 'uicon-trash': '\ue623', + 'uicon-trash-fill': '\ue658', + 'uicon-play-left': '\ue66d', + 'uicon-play-right': '\ue610', + 'uicon-minus': '\ue618', + 'uicon-plus': '\ue62d', + 'uicon-info': '\ue653', + 'uicon-info-circle': '\ue7d2', + 'uicon-info-circle-fill': '\ue64b', + 'uicon-question': '\ue715', + 'uicon-error': '\ue6d3', + 'uicon-close': '\ue685', + 'uicon-checkmark': '\ue6a8', + 'uicon-android-circle-fill': '\ue67e', + 'uicon-android-fill': '\ue67d', + 'uicon-ie': '\ue87b', + 'uicon-IE-circle-fill': '\ue889', + 'uicon-google': '\ue87a', + 'uicon-google-circle-fill': '\ue88a', + 'uicon-setting-fill': '\ue872', + 'uicon-setting': '\ue61f', + 'uicon-minus-square-fill': '\ue855', + 'uicon-plus-square-fill': '\ue856', + 'uicon-heart': '\ue7df', + 'uicon-heart-fill': '\ue851', + 'uicon-camera': '\ue7d7', + 'uicon-camera-fill': '\ue870', + 'uicon-more-circle': '\ue63e', + 'uicon-more-circle-fill': '\ue645', + 'uicon-chat': '\ue620', + 'uicon-chat-fill': '\ue61e', + 'uicon-bag-fill': '\ue617', + 'uicon-bag': '\ue619', + 'uicon-error-circle-fill': '\ue62c', + 'uicon-error-circle': '\ue624', + 'uicon-close-circle': '\ue63f', + 'uicon-close-circle-fill': '\ue637', + 'uicon-checkmark-circle': '\ue63d', + 'uicon-checkmark-circle-fill': '\ue635', + 'uicon-question-circle-fill': '\ue666', + 'uicon-question-circle': '\ue625', + 'uicon-share': '\ue631', + 'uicon-share-fill': '\ue65e', + 'uicon-shopping-cart': '\ue621', + 'uicon-shopping-cart-fill': '\ue65d', + 'uicon-bell': '\ue609', + 'uicon-bell-fill': '\ue640', + 'uicon-list': '\ue650', + 'uicon-list-dot': '\ue616', + 'uicon-zhihu': '\ue6ba', + 'uicon-zhihu-circle-fill': '\ue709', + 'uicon-zhifubao': '\ue6b9', + 'uicon-zhifubao-circle-fill': '\ue6b8', + 'uicon-weixin-circle-fill': '\ue6b1', + 'uicon-weixin-fill': '\ue6b2', + 'uicon-twitter-circle-fill': '\ue6ab', + 'uicon-twitter': '\ue6aa', + 'uicon-taobao-circle-fill': '\ue6a7', + 'uicon-taobao': '\ue6a6', + 'uicon-weibo-circle-fill': '\ue6a5', + 'uicon-weibo': '\ue6a4', + 'uicon-qq-fill': '\ue6a1', + 'uicon-qq-circle-fill': '\ue6a0', + 'uicon-moments-circel-fill': '\ue69a', + 'uicon-moments': '\ue69b', + 'uicon-qzone': '\ue695', + 'uicon-qzone-circle-fill': '\ue696', + 'uicon-baidu-circle-fill': '\ue680', + 'uicon-baidu': '\ue681', + 'uicon-facebook-circle-fill': '\ue68a', + 'uicon-facebook': '\ue689', + 'uicon-car': '\ue60c', + 'uicon-car-fill': '\ue636', + 'uicon-warning-fill': '\ue64d', + 'uicon-warning': '\ue694', + 'uicon-clock-fill': '\ue638', + 'uicon-clock': '\ue60f', + 'uicon-edit-pen': '\ue612', + 'uicon-edit-pen-fill': '\ue66b', + 'uicon-email': '\ue611', + 'uicon-email-fill': '\ue642', + 'uicon-minus-circle': '\ue61b', + 'uicon-minus-circle-fill': '\ue652', + 'uicon-plus-circle': '\ue62e', + 'uicon-plus-circle-fill': '\ue661', + 'uicon-file-text': '\ue663', + 'uicon-file-text-fill': '\ue665', + 'uicon-pushpin': '\ue7e3', + 'uicon-pushpin-fill': '\ue86e', + 'uicon-grid': '\ue673', + 'uicon-grid-fill': '\ue678', + 'uicon-play-circle': '\ue647', + 'uicon-play-circle-fill': '\ue655', + 'uicon-pause-circle-fill': '\ue654', + 'uicon-pause': '\ue8fa', + 'uicon-pause-circle': '\ue643', + 'uicon-eye-off': '\ue648', + 'uicon-eye-off-outline': '\ue62b', + 'uicon-gift-fill': '\ue65c', + 'uicon-gift': '\ue65b', + 'uicon-rmb-circle-fill': '\ue657', + 'uicon-rmb-circle': '\ue677', + 'uicon-kefu-ermai': '\ue656', + 'uicon-server-fill': '\ue751', + 'uicon-coupon-fill': '\ue8c4', + 'uicon-coupon': '\ue8ae', + 'uicon-integral': '\ue704', + 'uicon-integral-fill': '\ue703', + 'uicon-home-fill': '\ue964', + 'uicon-home': '\ue965', + 'uicon-hourglass-half-fill': '\ue966', + 'uicon-hourglass': '\ue967', + 'uicon-account': '\ue628', + 'uicon-plus-people-fill': '\ue626', + 'uicon-minus-people-fill': '\ue615', + 'uicon-account-fill': '\ue614', + 'uicon-thumb-down-fill': '\ue726', + 'uicon-thumb-down': '\ue727', + 'uicon-thumb-up': '\ue733', + 'uicon-thumb-up-fill': '\ue72f', + 'uicon-lock-fill': '\ue979', + 'uicon-lock-open': '\ue973', + 'uicon-lock-opened-fill': '\ue974', + 'uicon-lock': '\ue97a', + 'uicon-red-packet-fill': '\ue690', + 'uicon-photo-fill': '\ue98b', + 'uicon-photo': '\ue98d', + 'uicon-volume-off-fill': '\ue659', + 'uicon-volume-off': '\ue644', + 'uicon-volume-fill': '\ue670', + 'uicon-volume': '\ue633', + 'uicon-red-packet': '\ue691', + 'uicon-download': '\ue63c', + 'uicon-arrow-up-fill': '\ue6b0', + 'uicon-arrow-down-fill': '\ue600', + 'uicon-play-left-fill': '\ue675', + 'uicon-play-right-fill': '\ue676', + 'uicon-rewind-left-fill': '\ue679', + 'uicon-rewind-right-fill': '\ue67a', + 'uicon-arrow-downward': '\ue604', + 'uicon-arrow-leftward': '\ue601', + 'uicon-arrow-rightward': '\ue603', + 'uicon-arrow-upward': '\ue607', + 'uicon-arrow-down': '\ue60d', + 'uicon-arrow-right': '\ue605', + 'uicon-arrow-left': '\ue60e', + 'uicon-arrow-up': '\ue606', + 'uicon-skip-back-left': '\ue674', + 'uicon-skip-forward-right': '\ue672', + 'uicon-rewind-right': '\ue66f', + 'uicon-rewind-left': '\ue671', + 'uicon-arrow-right-double': '\ue68d', + 'uicon-arrow-left-double': '\ue68c', + 'uicon-wifi-off': '\ue668', + 'uicon-wifi': '\ue667', + 'uicon-empty-data': '\ue62f', + 'uicon-empty-history': '\ue684', + 'uicon-empty-list': '\ue68b', + 'uicon-empty-page': '\ue627', + 'uicon-empty-order': '\ue639', + 'uicon-man': '\ue697', + 'uicon-woman': '\ue69c', + 'uicon-man-add': '\ue61c', + 'uicon-man-add-fill': '\ue64c', + 'uicon-man-delete': '\ue61a', + 'uicon-man-delete-fill': '\ue66a', + 'uicon-zh': '\ue70a', + 'uicon-en': '\ue692' +} diff --git a/uni_modules/uview-ui/components/u-icon/props.js b/uni_modules/uview-ui/components/u-icon/props.js new file mode 100644 index 0000000..71845b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 图标类名 + name: { + type: String, + default: uni.$u.props.icon.name + }, + // 图标颜色,可接受主题色 + color: { + type: String, + default: uni.$u.props.icon.color + }, + // 字体大小,单位px + size: { + type: [String, Number], + default: uni.$u.props.icon.size + }, + // 是否显示粗体 + bold: { + type: Boolean, + default: uni.$u.props.icon.bold + }, + // 点击图标的时候传递事件出去的index(用于区分点击了哪一个) + index: { + type: [String, Number], + default: uni.$u.props.icon.index + }, + // 触摸图标时的类名 + hoverClass: { + type: String, + default: uni.$u.props.icon.hoverClass + }, + // 自定义扩展前缀,方便用户扩展自己的图标库 + customPrefix: { + type: String, + default: uni.$u.props.icon.customPrefix + }, + // 图标右边或者下面的文字 + label: { + type: [String, Number], + default: uni.$u.props.icon.label + }, + // label的位置,只能右边或者下边 + labelPos: { + type: String, + default: uni.$u.props.icon.labelPos + }, + // label的大小 + labelSize: { + type: [String, Number], + default: uni.$u.props.icon.labelSize + }, + // label的颜色 + labelColor: { + type: String, + default: uni.$u.props.icon.labelColor + }, + // label与图标的距离 + space: { + type: [String, Number], + default: uni.$u.props.icon.space + }, + // 图片的mode + imgMode: { + type: String, + default: uni.$u.props.icon.imgMode + }, + // 用于显示图片小图标时,图片的宽度 + width: { + type: [String, Number], + default: uni.$u.props.icon.width + }, + // 用于显示图片小图标时,图片的高度 + height: { + type: [String, Number], + default: uni.$u.props.icon.height + }, + // 用于解决某些情况下,让图标垂直居中的用途 + top: { + type: [String, Number], + default: uni.$u.props.icon.top + }, + // 是否阻止事件传播 + stop: { + type: Boolean, + default: uni.$u.props.icon.stop + } + } +} diff --git a/uni_modules/uview-ui/components/u-icon/u-icon.vue b/uni_modules/uview-ui/components/u-icon/u-icon.vue new file mode 100644 index 0000000..9340328 --- /dev/null +++ b/uni_modules/uview-ui/components/u-icon/u-icon.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-image/props.js b/uni_modules/uview-ui/components/u-image/props.js new file mode 100644 index 0000000..2eabb74 --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 图片地址 + src: { + type: String, + default: uni.$u.props.image.src + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.image.mode + }, + // 宽度,单位任意 + width: { + type: [String, Number], + default: uni.$u.props.image.width + }, + // 高度,单位任意 + height: { + type: [String, Number], + default: uni.$u.props.image.height + }, + // 图片形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.image.shape + }, + // 圆角,单位任意 + radius: { + type: [String, Number], + default: uni.$u.props.image.radius + }, + // 是否懒加载,微信小程序、App、百度小程序、字节跳动小程序 + lazyLoad: { + type: Boolean, + default: uni.$u.props.image.lazyLoad + }, + // 开启长按图片显示识别微信小程序码菜单 + showMenuByLongpress: { + type: Boolean, + default: uni.$u.props.image.showMenuByLongpress + }, + // 加载中的图标,或者小图片 + loadingIcon: { + type: String, + default: uni.$u.props.image.loadingIcon + }, + // 加载失败的图标,或者小图片 + errorIcon: { + type: String, + default: uni.$u.props.image.errorIcon + }, + // 是否显示加载中的图标或者自定义的slot + showLoading: { + type: Boolean, + default: uni.$u.props.image.showLoading + }, + // 是否显示加载错误的图标或者自定义的slot + showError: { + type: Boolean, + default: uni.$u.props.image.showError + }, + // 是否需要淡入效果 + fade: { + type: Boolean, + default: uni.$u.props.image.fade + }, + // 只支持网络资源,只对微信小程序有效 + webp: { + type: Boolean, + default: uni.$u.props.image.webp + }, + // 过渡时间,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.image.duration + }, + // 背景颜色,用于深色页面加载图片时,为了和背景色融合 + bgColor: { + type: String, + default: uni.$u.props.image.bgColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-image/u-image.vue b/uni_modules/uview-ui/components/u-image/u-image.vue new file mode 100644 index 0000000..473e35b --- /dev/null +++ b/uni_modules/uview-ui/components/u-image/u-image.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-anchor/props.js b/uni_modules/uview-ui/components/u-index-anchor/props.js new file mode 100644 index 0000000..6d8b59a --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 列表锚点文本内容 + text: { + type: [String, Number], + default: uni.$u.props.indexAnchor.text + }, + // 列表锚点文字颜色 + color: { + type: String, + default: uni.$u.props.indexAnchor.color + }, + // 列表锚点文字大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.indexAnchor.size + }, + // 列表锚点背景颜色 + bgColor: { + type: String, + default: uni.$u.props.indexAnchor.bgColor + }, + // 列表锚点高度,单位默认px + height: { + type: [String, Number], + default: uni.$u.props.indexAnchor.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue new file mode 100644 index 0000000..b95ddef --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-item/props.js b/uni_modules/uview-ui/components/u-index-item/props.js new file mode 100644 index 0000000..7c11331 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/props.js @@ -0,0 +1,5 @@ +export default { + props: { + + } +} diff --git a/uni_modules/uview-ui/components/u-index-item/u-index-item.vue b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue new file mode 100644 index 0000000..0bc7fb3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-item/u-index-item.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-index-list/props.js b/uni_modules/uview-ui/components/u-index-list/props.js new file mode 100644 index 0000000..354d459 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 右边锚点非激活的颜色 + inactiveColor: { + type: String, + default: uni.$u.props.indexList.inactiveColor + }, + // 右边锚点激活的颜色 + activeColor: { + type: String, + default: uni.$u.props.indexList.activeColor + }, + // 索引字符列表,数组形式 + indexList: { + type: Array, + default: uni.$u.props.indexList.indexList + }, + // 是否开启锚点自动吸顶 + sticky: { + type: Boolean, + default: uni.$u.props.indexList.sticky + }, + // 自定义导航栏的高度 + customNavHeight: { + type: [String, Number], + default: uni.$u.props.indexList.customNavHeight + } + } +} diff --git a/uni_modules/uview-ui/components/u-index-list/u-index-list.vue b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue new file mode 100644 index 0000000..d712618 --- /dev/null +++ b/uni_modules/uview-ui/components/u-index-list/u-index-list.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-input/props.js b/uni_modules/uview-ui/components/u-input/props.js new file mode 100644 index 0000000..2c50870 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/props.js @@ -0,0 +1,187 @@ +export default { + props: { + // 输入的值 + value: { + type: [String, Number], + default: uni.$u.props.input.value + }, + // 输入框类型 + // number-数字输入键盘,app-vue下可以输入浮点数,app-nvue和小程序平台下只能输入整数 + // idcard-身份证输入键盘,微信、支付宝、百度、QQ小程序 + // digit-带小数点的数字键盘,App的nvue页面、微信、支付宝、百度、头条、QQ小程序 + // text-文本输入键盘 + type: { + type: String, + default: uni.$u.props.input.type + }, + // 如果 textarea 是在一个 position:fixed 的区域,需要显示指定属性 fixed 为 true, + // 兼容性:微信小程序、百度小程序、字节跳动小程序、QQ小程序 + fixed: { + type: Boolean, + default: uni.$u.props.input.fixed + }, + // 是否禁用输入框 + disabled: { + type: Boolean, + default: uni.$u.props.input.disabled + }, + // 禁用状态时的背景色 + disabledColor: { + type: String, + default: uni.$u.props.input.disabledColor + }, + // 是否显示清除控件 + clearable: { + type: Boolean, + default: uni.$u.props.input.clearable + }, + // 是否密码类型 + password: { + type: Boolean, + default: uni.$u.props.input.password + }, + // 最大输入长度,设置为 -1 的时候不限制最大长度 + maxlength: { + type: [String, Number], + default: uni.$u.props.input.maxlength + }, + // 输入框为空时的占位符 + placeholder: { + type: String, + default: uni.$u.props.input.placeholder + }, + // 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ + placeholderClass: { + type: String, + default: uni.$u.props.input.placeholderClass + }, + // 指定placeholder的样式 + placeholderStyle: { + type: [String, Object], + default: uni.$u.props.input.placeholderStyle + }, + // 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 + showWordLimit: { + type: Boolean, + default: uni.$u.props.input.showWordLimit + }, + // 设置右下角按钮的文字,有效值:send|search|next|go|done,兼容性详见uni-app文档 + // https://uniapp.dcloud.io/component/input + // https://uniapp.dcloud.io/component/textarea + confirmType: { + type: String, + default: uni.$u.props.input.confirmType + }, + // 点击键盘右下角按钮时是否保持键盘不收起,H5无效 + confirmHold: { + type: Boolean, + default: uni.$u.props.input.confirmHold + }, + // focus时,点击页面的时候不收起键盘,微信小程序有效 + holdKeyboard: { + type: Boolean, + default: uni.$u.props.input.holdKeyboard + }, + // 自动获取焦点 + // 在 H5 平台能否聚焦以及软键盘是否跟随弹出,取决于当前浏览器本身的实现。nvue 页面不支持,需使用组件的 focus()、blur() 方法控制焦点 + focus: { + type: Boolean, + default: uni.$u.props.input.focus + }, + // 键盘收起时,是否自动失去焦点,目前仅App3.0.0+有效 + autoBlur: { + type: Boolean, + default: uni.$u.props.input.autoBlur + }, + // 是否去掉 iOS 下的默认内边距,仅微信小程序,且type=textarea时有效 + disableDefaultPadding: { + type: Boolean, + default: uni.$u.props.input.disableDefaultPadding + }, + // 指定focus时光标的位置 + cursor: { + type: [String, Number], + default: uni.$u.props.input.cursor + }, + // 输入框聚焦时底部与键盘的距离 + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.input.cursorSpacing + }, + // 光标起始位置,自动聚集时有效,需与selection-end搭配使用 + selectionStart: { + type: [String, Number], + default: uni.$u.props.input.selectionStart + }, + // 光标结束位置,自动聚集时有效,需与selection-start搭配使用 + selectionEnd: { + type: [String, Number], + default: uni.$u.props.input.selectionEnd + }, + // 键盘弹起时,是否自动上推页面 + adjustPosition: { + type: Boolean, + default: uni.$u.props.input.adjustPosition + }, + // 输入框内容对齐方式,可选值为:left|center|right + inputAlign: { + type: String, + default: uni.$u.props.input.inputAlign + }, + // 输入框字体的大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.input.fontSize + }, + // 输入框字体颜色 + color: { + type: String, + default: uni.$u.props.input.color + }, + // 输入框前置图标 + prefixIcon: { + type: String, + default: uni.$u.props.input.prefixIcon + }, + // 前置图标样式,对象或字符串 + prefixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.prefixIconStyle + }, + // 输入框后置图标 + suffixIcon: { + type: String, + default: uni.$u.props.input.suffixIcon + }, + // 后置图标样式,对象或字符串 + suffixIconStyle: { + type: [String, Object], + default: uni.$u.props.input.suffixIconStyle + }, + // 边框类型,surround-四周边框,bottom-底部边框,none-无边框 + border: { + type: String, + default: uni.$u.props.input.border + }, + // 是否只读,与disabled不同之处在于disabled会置灰组件,而readonly则不会 + readonly: { + type: Boolean, + default: uni.$u.props.input.readonly + }, + // 输入框形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.input.shape + }, + // 用于处理或者过滤输入框内容的方法 + formatter: { + type: [Function, null], + default: uni.$u.props.input.formatter + }, + // 是否忽略组件内对文本合成系统事件的处理 + ignoreCompositionEvent: { + type: Boolean, + default: true + } + } +} diff --git a/uni_modules/uview-ui/components/u-input/u-input.vue b/uni_modules/uview-ui/components/u-input/u-input.vue new file mode 100644 index 0000000..4c83757 --- /dev/null +++ b/uni_modules/uview-ui/components/u-input/u-input.vue @@ -0,0 +1,354 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-keyboard/props.js b/uni_modules/uview-ui/components/u-keyboard/props.js new file mode 100644 index 0000000..cfdb00a --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘 + mode: { + type: String, + default: uni.$u.props.keyboard.mode + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.keyboard.dotDisabled + }, + // 是否显示顶部工具条 + tooltip: { + type: Boolean, + default: uni.$u.props.keyboard.tooltip + }, + // 是否显示工具条中间的提示 + showTips: { + type: Boolean, + default: uni.$u.props.keyboard.showTips + }, + // 工具条中间的提示文字 + tips: { + type: String, + default: uni.$u.props.keyboard.tips + }, + // 是否显示工具条左边的"取消"按钮 + showCancel: { + type: Boolean, + default: uni.$u.props.keyboard.showCancel + }, + // 是否显示工具条右边的"完成"按钮 + showConfirm: { + type: Boolean, + default: uni.$u.props.keyboard.showConfirm + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.keyboard.random + }, + // 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距 + safeAreaInsetBottom: { + type: Boolean, + default: uni.$u.props.keyboard.safeAreaInsetBottom + }, + // 是否允许通过点击遮罩关闭键盘 + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.keyboard.closeOnClickOverlay + }, + // 控制键盘的弹出与收起 + show: { + type: Boolean, + default: uni.$u.props.keyboard.show + }, + // 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩 + overlay: { + type: Boolean, + default: uni.$u.props.keyboard.overlay + }, + // z-index值 + zIndex: { + type: [String, Number], + default: uni.$u.props.keyboard.zIndex + }, + // 取消按钮的文字 + cancelText: { + type: String, + default: uni.$u.props.keyboard.cancelText + }, + // 确认按钮的文字 + confirmText: { + type: String, + default: uni.$u.props.keyboard.confirmText + }, + // 输入一个中文后,是否自动切换到英文 + autoChange: { + type: Boolean, + default: uni.$u.props.keyboard.autoChange + } + } +} diff --git a/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue new file mode 100644 index 0000000..14228cb --- /dev/null +++ b/uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line-progress/props.js b/uni_modules/uview-ui/components/u-line-progress/props.js new file mode 100644 index 0000000..a4210bd --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/props.js @@ -0,0 +1,28 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: uni.$u.props.lineProgress.activeColor + }, + inactiveColor: { + type: String, + default: uni.$u.props.lineProgress.color + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: uni.$u.props.lineProgress.inactiveColor + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: uni.$u.props.lineProgress.showText + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.lineProgress.height + } + } +} diff --git a/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue new file mode 100644 index 0000000..4e27931 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-line/props.js b/uni_modules/uview-ui/components/u-line/props.js new file mode 100644 index 0000000..2308cc3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/props.js @@ -0,0 +1,33 @@ +export default { + props: { + color: { + type: String, + default: uni.$u.props.line.color + }, + // 长度,竖向时表现为高度,横向时表现为长度,可以为百分比,带px单位的值等 + length: { + type: [String, Number], + default: uni.$u.props.line.length + }, + // 线条方向,col-竖向,row-横向 + direction: { + type: String, + default: uni.$u.props.line.direction + }, + // 是否显示细边框 + hairline: { + type: Boolean, + default: uni.$u.props.line.hairline + }, + // 线条与上下左右元素的间距,字符串形式,如"30px"、"20px 30px" + margin: { + type: [String, Number], + default: uni.$u.props.line.margin + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.line.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-line/u-line.vue b/uni_modules/uview-ui/components/u-line/u-line.vue new file mode 100644 index 0000000..e0a6d92 --- /dev/null +++ b/uni_modules/uview-ui/components/u-line/u-line.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-link/props.js b/uni_modules/uview-ui/components/u-link/props.js new file mode 100644 index 0000000..d39353f --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/props.js @@ -0,0 +1,39 @@ +export default { + props: { + // 文字颜色 + color: { + type: String, + default: uni.$u.props.link.color + }, + // 字体大小,单位px + fontSize: { + type: [String, Number], + default: uni.$u.props.link.fontSize + }, + // 是否显示下划线 + underLine: { + type: Boolean, + default: uni.$u.props.link.underLine + }, + // 要跳转的链接 + href: { + type: String, + default: uni.$u.props.link.href + }, + // 小程序中复制到粘贴板的提示语 + mpTips: { + type: String, + default: uni.$u.props.link.mpTips + }, + // 下划线颜色 + lineColor: { + type: String, + default: uni.$u.props.link.lineColor + }, + // 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色 + text: { + type: String, + default: uni.$u.props.link.text + } + } +} diff --git a/uni_modules/uview-ui/components/u-link/u-link.vue b/uni_modules/uview-ui/components/u-link/u-link.vue new file mode 100644 index 0000000..c6802a5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-link/u-link.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list-item/props.js b/uni_modules/uview-ui/components/u-list-item/props.js new file mode 100644 index 0000000..58ddc49 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/props.js @@ -0,0 +1,9 @@ +export default { + props: { + // 用于滚动到指定item + anchor: { + type: [String, Number], + default: uni.$u.props.listItem.anchor + } + } +} diff --git a/uni_modules/uview-ui/components/u-list-item/u-list-item.vue b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue new file mode 100644 index 0000000..1a25db6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list-item/u-list-item.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-list/props.js b/uni_modules/uview-ui/components/u-list/props.js new file mode 100644 index 0000000..25406f4 --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/props.js @@ -0,0 +1,76 @@ +export default { + props: { + // 控制是否出现滚动条,仅nvue有效 + showScrollbar: { + type: Boolean, + default: uni.$u.props.list.showScrollbar + }, + // 距底部多少时触发scrolltolower事件 + lowerThreshold: { + type: [String, Number], + default: uni.$u.props.list.lowerThreshold + }, + // 距顶部多少时触发scrolltoupper事件,非nvue有效 + upperThreshold: { + type: [String, Number], + default: uni.$u.props.list.upperThreshold + }, + // 设置竖向滚动条位置 + scrollTop: { + type: [String, Number], + default: uni.$u.props.list.scrollTop + }, + // 控制 onscroll 事件触发的频率,仅nvue有效 + offsetAccuracy: { + type: [String, Number], + default: uni.$u.props.list.offsetAccuracy + }, + // 启用 flexbox 布局。开启后,当前节点声明了display: flex就会成为flex container,并作用于其孩子节点,仅微信小程序有效 + enableFlex: { + type: Boolean, + default: uni.$u.props.list.enableFlex + }, + // 是否按分页模式显示List,默认值false + pagingEnabled: { + type: Boolean, + default: uni.$u.props.list.pagingEnabled + }, + // 是否允许List滚动 + scrollable: { + type: Boolean, + default: uni.$u.props.list.scrollable + }, + // 值应为某子元素id(id不能以数字开头) + scrollIntoView: { + type: String, + default: uni.$u.props.list.scrollIntoView + }, + // 在设置滚动条位置时使用动画过渡 + scrollWithAnimation: { + type: Boolean, + default: uni.$u.props.list.scrollWithAnimation + }, + // iOS点击顶部状态栏、安卓双击标题栏时,滚动条返回顶部,只对微信小程序有效 + enableBackToTop: { + type: Boolean, + default: uni.$u.props.list.enableBackToTop + }, + // 列表的高度 + height: { + type: [String, Number], + default: uni.$u.props.list.height + }, + // 列表宽度 + width: { + type: [String, Number], + default: uni.$u.props.list.width + }, + // 列表前后预渲染的屏数,1代表一个屏幕的高度,1.5代表1个半屏幕高度 + preLoadScreen: { + type: [String, Number], + default: uni.$u.props.list.preLoadScreen + } + // vue下,是否开启虚拟列表 + + } +} diff --git a/uni_modules/uview-ui/components/u-list/u-list.vue b/uni_modules/uview-ui/components/u-list/u-list.vue new file mode 100644 index 0000000..4447cab --- /dev/null +++ b/uni_modules/uview-ui/components/u-list/u-list.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-icon/props.js b/uni_modules/uview-ui/components/u-loading-icon/props.js new file mode 100644 index 0000000..c35524e --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/props.js @@ -0,0 +1,59 @@ +export default { + props: { + // 是否显示组件 + show: { + type: Boolean, + default: uni.$u.props.loadingIcon.show + }, + // 颜色 + color: { + type: String, + default: uni.$u.props.loadingIcon.color + }, + // 提示文字颜色 + textColor: { + type: String, + default: uni.$u.props.loadingIcon.textColor + }, + // 文字和图标是否垂直排列 + vertical: { + type: Boolean, + default: uni.$u.props.loadingIcon.vertical + }, + // 模式选择,circle-圆形,spinner-花朵形,semicircle-半圆形 + mode: { + type: String, + default: uni.$u.props.loadingIcon.mode + }, + // 图标大小,单位默认px + size: { + type: [String, Number], + default: uni.$u.props.loadingIcon.size + }, + // 文字大小 + textSize: { + type: [String, Number], + default: uni.$u.props.loadingIcon.textSize + }, + // 文字内容 + text: { + type: [String, Number], + default: uni.$u.props.loadingIcon.text + }, + // 动画模式 + timingFunction: { + type: String, + default: uni.$u.props.loadingIcon.timingFunction + }, + // 动画执行周期时间 + duration: { + type: [String, Number], + default: uni.$u.props.loadingIcon.duration + }, + // mode=circle时的暗边颜色 + inactiveColor: { + type: String, + default: uni.$u.props.loadingIcon.inactiveColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue new file mode 100644 index 0000000..2ede5c3 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loading-page/props.js b/uni_modules/uview-ui/components/u-loading-page/props.js new file mode 100644 index 0000000..e239b61 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 提示内容 + loadingText: { + type: [String, Number], + default: uni.$u.props.loadingPage.loadingText + }, + // 文字上方用于替换loading动画的图片 + image: { + type: String, + default: uni.$u.props.loadingPage.image + }, + // 加载动画的模式,circle-圆形,spinner-花朵形,semicircle-半圆形 + loadingMode: { + type: String, + default: uni.$u.props.loadingPage.loadingMode + }, + // 是否加载中 + loading: { + type: Boolean, + default: uni.$u.props.loadingPage.loading + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.loadingPage.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.loadingPage.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadingPage.fontSize + }, + // 加载中图标的颜色,只能rgb或者十六进制颜色值 + loadingColor: { + type: String, + default: uni.$u.props.loadingPage.loadingColor + } + } +} diff --git a/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue new file mode 100644 index 0000000..03a78ad --- /dev/null +++ b/uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-loadmore/props.js b/uni_modules/uview-ui/components/u-loadmore/props.js new file mode 100644 index 0000000..1e67d89 --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/props.js @@ -0,0 +1,94 @@ +export default { + props: { + // 组件状态,loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态 + status: { + type: String, + default: uni.$u.props.loadmore.status + }, + // 组件背景色 + bgColor: { + type: String, + default: uni.$u.props.loadmore.bgColor + }, + // 是否显示加载中的图标 + icon: { + type: Boolean, + default: uni.$u.props.loadmore.icon + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.loadmore.fontSize + }, + // 图标大小 + iconSize: { + type: [String, Number], + default: uni.$u.props.loadmore.iconSize + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.loadmore.color + }, + // 加载中状态的图标,spinner-花朵状图标,circle-圆圈状,semicircle-半圆 + loadingIcon: { + type: String, + default: uni.$u.props.loadmore.loadingIcon + }, + // 加载前的提示语 + loadmoreText: { + type: String, + default: uni.$u.props.loadmore.loadmoreText + }, + // 加载中提示语 + loadingText: { + type: String, + default: uni.$u.props.loadmore.loadingText + }, + // 没有更多的提示语 + nomoreText: { + type: String, + default: uni.$u.props.loadmore.nomoreText + }, + // 在“没有更多”状态下,是否显示粗点 + isDot: { + type: Boolean, + default: uni.$u.props.loadmore.isDot + }, + // 加载中图标的颜色 + iconColor: { + type: String, + default: uni.$u.props.loadmore.iconColor + }, + // 上边距 + marginTop: { + type: [String, Number], + default: uni.$u.props.loadmore.marginTop + }, + // 下边距 + marginBottom: { + type: [String, Number], + default: uni.$u.props.loadmore.marginBottom + }, + // 高度,单位px + height: { + type: [String, Number], + default: uni.$u.props.loadmore.height + }, + // 是否显示左边分割线 + line: { + type: Boolean, + default: uni.$u.props.loadmore.line + }, + // 线条颜色 + lineColor: { + type: String, + default: uni.$u.props.loadmore.lineColor + }, + // 是否虚线,true-虚线,false-实线 + dashed: { + type: Boolean, + default: uni.$u.props.loadmore.dashed + } + } +} diff --git a/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue new file mode 100644 index 0000000..73c79fe --- /dev/null +++ b/uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-modal/props.js b/uni_modules/uview-ui/components/u-modal/props.js new file mode 100644 index 0000000..94b3078 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/props.js @@ -0,0 +1,89 @@ +export default { + props: { + // 是否展示modal + show: { + type: Boolean, + default: uni.$u.props.modal.show + }, + // 标题 + title: { + type: [String], + default: uni.$u.props.modal.title + }, + // 弹窗内容 + content: { + type: String, + default: uni.$u.props.modal.content + }, + // 确认文案 + confirmText: { + type: String, + default: uni.$u.props.modal.confirmText + }, + // 取消文案 + cancelText: { + type: String, + default: uni.$u.props.modal.cancelText + }, + // 是否显示确认按钮 + showConfirmButton: { + type: Boolean, + default: uni.$u.props.modal.showConfirmButton + }, + // 是否显示取消按钮 + showCancelButton: { + type: Boolean, + default: uni.$u.props.modal.showCancelButton + }, + // 确认按钮颜色 + confirmColor: { + type: String, + default: uni.$u.props.modal.confirmColor + }, + // 取消文字颜色 + cancelColor: { + type: String, + default: uni.$u.props.modal.cancelColor + }, + // 对调确认和取消的位置 + buttonReverse: { + type: Boolean, + default: uni.$u.props.modal.buttonReverse + }, + // 是否开启缩放效果 + zoom: { + type: Boolean, + default: uni.$u.props.modal.zoom + }, + // 是否异步关闭,只对确定按钮有效 + asyncClose: { + type: Boolean, + default: uni.$u.props.modal.asyncClose + }, + // 是否允许点击遮罩关闭modal + closeOnClickOverlay: { + type: Boolean, + default: uni.$u.props.modal.closeOnClickOverlay + }, + // 给一个负的margin-top,往上偏移,避免和键盘重合的情况 + negativeTop: { + type: [String, Number], + default: uni.$u.props.modal.negativeTop + }, + // modal宽度,不支持百分比,可以数值,px,rpx单位 + width: { + type: [String, Number], + default: uni.$u.props.modal.width + }, + // 确认按钮的样式,circle-圆形,square-方形,如设置,将不会显示取消按钮 + confirmButtonShape: { + type: String, + default: uni.$u.props.modal.confirmButtonShape + }, + // 弹窗动画过度时间 + duration:{ + type:String | Number, + default: uni.$u.props.modal.duration + } + } +} diff --git a/uni_modules/uview-ui/components/u-modal/u-modal.vue b/uni_modules/uview-ui/components/u-modal/u-modal.vue new file mode 100644 index 0000000..72e1ed2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-modal/u-modal.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-navbar/props.js b/uni_modules/uview-ui/components/u-navbar/props.js new file mode 100644 index 0000000..5398de2 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/props.js @@ -0,0 +1,84 @@ +export default { + props: { + // 是否开启顶部安全区适配 + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.navbar.safeAreaInsetTop + }, + // 固定在顶部时,是否生成一个等高元素,以防止塌陷 + placeholder: { + type: Boolean, + default: uni.$u.props.navbar.placeholder + }, + // 是否固定在顶部 + fixed: { + type: Boolean, + default: uni.$u.props.navbar.fixed + }, + // 是否显示下边框 + border: { + type: Boolean, + default: uni.$u.props.navbar.border + }, + // 左边的图标 + leftIcon: { + type: String, + default: uni.$u.props.navbar.leftIcon + }, + // 左边的提示文字 + leftText: { + type: String, + default: uni.$u.props.navbar.leftText + }, + // 左右的提示文字 + rightText: { + type: String, + default: uni.$u.props.navbar.rightText + }, + // 右边的图标 + rightIcon: { + type: String, + default: uni.$u.props.navbar.rightIcon + }, + // 标题 + title: { + type: [String, Number], + default: uni.$u.props.navbar.title + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.navbar.bgColor + }, + // 标题的宽度 + titleWidth: { + type: [String, Number], + default: uni.$u.props.navbar.titleWidth + }, + // 导航栏高度 + height: { + type: [String, Number], + default: uni.$u.props.navbar.height + }, + // 左侧返回图标的大小 + leftIconSize: { + type: [String, Number], + default: uni.$u.props.navbar.leftIconSize + }, + // 左侧返回图标的颜色 + leftIconColor: { + type: String, + default: uni.$u.props.navbar.leftIconColor + }, + // 点击左侧区域(返回图标),是否自动返回上一页 + autoBack: { + type: Boolean, + default: uni.$u.props.navbar.autoBack + }, + // 标题的样式,对象或字符串 + titleStyle: { + type: [String, Object], + default: uni.$u.props.navbar.titleStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-navbar/u-navbar.vue b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue new file mode 100644 index 0000000..2b206b7 --- /dev/null +++ b/uni_modules/uview-ui/components/u-navbar/u-navbar.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-no-network/props.js b/uni_modules/uview-ui/components/u-no-network/props.js new file mode 100644 index 0000000..9f3af62 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 页面文字提示 + tips: { + type: String, + default: uni.$u.props.noNetwork.tips + }, + // 一个z-index值,用于设置没有网络这个组件的层次,因为页面可能会有其他定位的元素层级过高,导致此组件被覆盖 + zIndex: { + type: [String, Number], + default: uni.$u.props.noNetwork.zIndex + }, + // image 没有网络的图片提示 + image: { + type: String, + default: uni.$u.props.noNetwork.image + } + } +} diff --git a/uni_modules/uview-ui/components/u-no-network/u-no-network.vue b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue new file mode 100644 index 0000000..9710729 --- /dev/null +++ b/uni_modules/uview-ui/components/u-no-network/u-no-network.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-notice-bar/props.js b/uni_modules/uview-ui/components/u-notice-bar/props.js new file mode 100644 index 0000000..7040c29 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/props.js @@ -0,0 +1,70 @@ +export default { + props: { + // 显示的内容,数组 + text: { + type: [Array, String], + default: uni.$u.props.noticeBar.text + }, + // 通告滚动模式,row-横向滚动,column-竖向滚动 + direction: { + type: String, + default: uni.$u.props.noticeBar.direction + }, + // direction = row时,是否使用步进形式滚动 + step: { + type: Boolean, + default: uni.$u.props.noticeBar.step + }, + // 是否显示左侧的音量图标 + icon: { + type: String, + default: uni.$u.props.noticeBar.icon + }, + // 通告模式,link-显示右箭头,closable-显示右侧关闭图标 + mode: { + type: String, + default: uni.$u.props.noticeBar.mode + }, + // 文字颜色,各图标也会使用文字颜色 + color: { + type: String, + default: uni.$u.props.noticeBar.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.noticeBar.bgColor + }, + // 水平滚动时的滚动速度,即每秒滚动多少px(px),这有利于控制文字无论多少时,都能有一个恒定的速度 + speed: { + type: [String, Number], + default: uni.$u.props.noticeBar.speed + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.noticeBar.fontSize + }, + // 滚动一个周期的时间长,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.noticeBar.duration + }, + // 是否禁止用手滑动切换 + // 目前HX2.6.11,只支持App 2.5.5+、H5 2.5.5+、支付宝小程序、字节跳动小程序 + disableTouch: { + type: Boolean, + default: uni.$u.props.noticeBar.disableTouch + }, + // 跳转的页面路径 + url: { + type: String, + default: uni.$u.props.noticeBar.url + }, + // 页面跳转的类型 + linkType: { + type: String, + default: uni.$u.props.noticeBar.linkType + } + } +} diff --git a/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue new file mode 100644 index 0000000..a06eb39 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue @@ -0,0 +1,101 @@ + + + + diff --git a/uni_modules/uview-ui/components/u-notify/props.js b/uni_modules/uview-ui/components/u-notify/props.js new file mode 100644 index 0000000..57a9d71 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/props.js @@ -0,0 +1,49 @@ +export default { + props: { + // 到顶部的距离 + top: { + type: [String, Number], + default: uni.$u.props.notify.top + }, + // 是否展示组件 + // show: { + // type: Boolean, + // default: uni.$u.props.notify.show + // }, + // type主题,primary,success,warning,error + type: { + type: String, + default: uni.$u.props.notify.type + }, + // 字体颜色 + color: { + type: String, + default: uni.$u.props.notify.color + }, + // 背景颜色 + bgColor: { + type: String, + default: uni.$u.props.notify.bgColor + }, + // 展示的文字内容 + message: { + type: String, + default: uni.$u.props.notify.message + }, + // 展示时长,为0时不消失,单位ms + duration: { + type: [String, Number], + default: uni.$u.props.notify.duration + }, + // 字体大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.notify.fontSize + }, + // 是否留出顶部安全距离(状态栏高度) + safeAreaInsetTop: { + type: Boolean, + default: uni.$u.props.notify.safeAreaInsetTop + } + } +} diff --git a/uni_modules/uview-ui/components/u-notify/u-notify.vue b/uni_modules/uview-ui/components/u-notify/u-notify.vue new file mode 100644 index 0000000..30adb72 --- /dev/null +++ b/uni_modules/uview-ui/components/u-notify/u-notify.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-box/props.js b/uni_modules/uview-ui/components/u-number-box/props.js new file mode 100644 index 0000000..fb0fa94 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/props.js @@ -0,0 +1,109 @@ +export default { + props: { + // 步进器标识符,在change回调返回 + name: { + type: [String, Number], + default: uni.$u.props.numberBox.name + }, + // 用于双向绑定的值,初始化时设置设为默认min值(最小值) + value: { + type: [String, Number], + default: uni.$u.props.numberBox.value + }, + // 最小值 + min: { + type: [String, Number], + default: uni.$u.props.numberBox.min + }, + // 最大值 + max: { + type: [String, Number], + default: uni.$u.props.numberBox.max + }, + // 加减的步长,可为小数 + step: { + type: [String, Number], + default: uni.$u.props.numberBox.step + }, + // 是否只允许输入整数 + integer: { + type: Boolean, + default: uni.$u.props.numberBox.integer + }, + // 是否禁用,包括输入框,加减按钮 + disabled: { + type: Boolean, + default: uni.$u.props.numberBox.disabled + }, + // 是否禁用输入框 + disabledInput: { + type: Boolean, + default: uni.$u.props.numberBox.disabledInput + }, + // 是否开启异步变更,开启后需要手动控制输入值 + asyncChange: { + type: Boolean, + default: uni.$u.props.numberBox.asyncChange + }, + // 输入框宽度,单位为px + inputWidth: { + type: [String, Number], + default: uni.$u.props.numberBox.inputWidth + }, + // 是否显示减少按钮 + showMinus: { + type: Boolean, + default: uni.$u.props.numberBox.showMinus + }, + // 是否显示增加按钮 + showPlus: { + type: Boolean, + default: uni.$u.props.numberBox.showPlus + }, + // 显示的小数位数 + decimalLength: { + type: [String, Number, null], + default: uni.$u.props.numberBox.decimalLength + }, + // 是否开启长按加减手势 + longPress: { + type: Boolean, + default: uni.$u.props.numberBox.longPress + }, + // 输入框文字和加减按钮图标的颜色 + color: { + type: String, + default: uni.$u.props.numberBox.color + }, + // 按钮大小,宽高等于此值,单位px,输入框高度和此值保持一致 + buttonSize: { + type: [String, Number], + default: uni.$u.props.numberBox.buttonSize + }, + // 输入框和按钮的背景颜色 + bgColor: { + type: String, + default: uni.$u.props.numberBox.bgColor + }, + // 指定光标于键盘的距离,避免键盘遮挡输入框,单位px + cursorSpacing: { + type: [String, Number], + default: uni.$u.props.numberBox.cursorSpacing + }, + // 是否禁用增加按钮 + disablePlus: { + type: Boolean, + default: uni.$u.props.numberBox.disablePlus + }, + // 是否禁用减少按钮 + disableMinus: { + type: Boolean, + default: uni.$u.props.numberBox.disableMinus + }, + // 加减按钮图标的样式 + iconStyle: { + type: [Object, String], + default: uni.$u.props.numberBox.iconStyle + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-box/u-number-box.vue b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue new file mode 100644 index 0000000..69211c5 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-box/u-number-box.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-number-keyboard/props.js b/uni_modules/uview-ui/components/u-number-keyboard/props.js new file mode 100644 index 0000000..5e3bf55 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/props.js @@ -0,0 +1,19 @@ +export default { + props: { + // 键盘的类型,number-数字键盘,card-身份证键盘 + mode: { + type: String, + default: uni.$u.props.numberKeyboard.value + }, + // 是否显示键盘的"."符号 + dotDisabled: { + type: Boolean, + default: uni.$u.props.numberKeyboard.dotDisabled + }, + // 是否打乱键盘按键的顺序 + random: { + type: Boolean, + default: uni.$u.props.numberKeyboard.random + } + } +} diff --git a/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue new file mode 100644 index 0000000..4f505c6 --- /dev/null +++ b/uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-overlay/props.js b/uni_modules/uview-ui/components/u-overlay/props.js new file mode 100644 index 0000000..e6974df --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/props.js @@ -0,0 +1,24 @@ +export default { + props: { + // 是否显示遮罩 + show: { + type: Boolean, + default: uni.$u.props.overlay.show + }, + // 层级z-index + zIndex: { + type: [String, Number], + default: uni.$u.props.overlay.zIndex + }, + // 遮罩的过渡时间,单位为ms + duration: { + type: [String, Number], + default: uni.$u.props.overlay.duration + }, + // 不透明度值,当做rgba的第四个参数 + opacity: { + type: [String, Number], + default: uni.$u.props.overlay.opacity + } + } +} diff --git a/uni_modules/uview-ui/components/u-overlay/u-overlay.vue b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue new file mode 100644 index 0000000..92de4e9 --- /dev/null +++ b/uni_modules/uview-ui/components/u-overlay/u-overlay.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/uni_modules/uview-ui/components/u-parse/node/node.vue b/uni_modules/uview-ui/components/u-parse/node/node.vue new file mode 100644 index 0000000..73e30fd --- /dev/null +++ b/uni_modules/uview-ui/components/u-parse/node/node.vue @@ -0,0 +1,499 @@ +