From daf362315d933d4c9240bc24a2435291eb757400 Mon Sep 17 00:00:00 2001 From: baozw Date: Thu, 24 Sep 2020 17:06:07 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=BD=AC=E7=9B=98=E9=A1=B9=E7=9B=AE]=E6=96=B0?= =?UTF-8?q?=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 13 + .gitignore | 46 + .vscode/launch.json | 15 + README.md | 7 + angular.json | 143 + browserslist | 12 + e2e/protractor.conf.js | 32 + e2e/src/app.e2e-spec.ts | 23 + e2e/src/app.po.ts | 11 + e2e/tsconfig.json | 13 + karma.conf.js | 32 + package-lock.json | 18426 ++++++++++++++++ package.json | 67 + proxy.config.json | 7 + reset.css | 27 + src/app/_theming.scss | 5098 +++++ src/app/app-routing.module.ts | 44 + src/app/app.component.html | 1 + src/app/app.component.scss | 0 src/app/app.component.spec.ts | 35 + src/app/app.component.ts | 37 + src/app/app.module.ts | 48 + src/app/auth.guard.ts | 31 + src/app/canvas-share-data.service.ts | 744 + .../gis-labeling/gis-labeling.component.html | 3 + .../gis-labeling/gis-labeling.component.scss | 84 + .../gis-labeling.component.spec.ts | 25 + .../gis-labeling/gis-labeling.component.ts | 74 + .../gis-management-routing.module.ts | 11 + .../gis-management/gis-management.module.ts | 100 + src/app/home/home.component.html | 114 + src/app/home/home.component.scss | 1 + src/app/home/home.component.spec.ts | 25 + src/app/home/home.component.ts | 483 + src/app/http-interceptors/base-interceptor.ts | 83 + .../http-interceptors/cache-token.service.ts | 70 + src/app/http-interceptors/index.ts | 9 + src/app/http-interceptors/tree.service.ts | 38 + src/app/interface.ts | 51 + src/app/m-token-k1/m-token-k1.component.html | 6 + src/app/m-token-k1/m-token-k1.component.scss | 3 + .../m-token-k1/m-token-k1.component.spec.ts | 25 + src/app/m-token-k1/m-token-k1.component.ts | 96 + src/app/m-token-k1/m-token-k1.service.spec.ts | 16 + src/app/m-token-k1/m-token-k1.service.ts | 67 + src/app/navigation/navigation.component.html | 15 + src/app/navigation/navigation.component.scss | 60 + .../navigation/navigation.component.spec.ts | 25 + src/app/navigation/navigation.component.ts | 44 + src/app/navigation/navigation.module.ts | 114 + src/app/pages/home/home.component.html | 50 + src/app/pages/home/home.component.scss | 5 + src/app/pages/home/home.component.spec.ts | 25 + src/app/pages/home/home.component.ts | 1131 + src/app/pages/home2/home2.component.html | 63 + src/app/pages/home2/home2.component.scss | 247 + src/app/pages/home2/home2.component.spec.ts | 25 + src/app/pages/home2/home2.component.ts | 348 + .../homedetail/homedetail.component.html | 70 + .../homedetail/homedetail.component.scss | 1 + .../homedetail/homedetail.component.spec.ts | 25 + .../pages/homedetail/homedetail.component.ts | 563 + .../lockscreen/lockscreen.component.html | 22 + .../lockscreen/lockscreen.component.scss | 111 + .../lockscreen/lockscreen.component.spec.ts | 25 + .../pages/lockscreen/lockscreen.component.ts | 21 + src/app/pages/login/login.component.html | 54 + src/app/pages/login/login.component.scss | 87 + src/app/pages/login/login.component.spec.ts | 25 + src/app/pages/login/login.component.ts | 58 + src/app/pages/pages-routing.module.ts | 12 + src/app/pages/pages.component.html | 1 + src/app/pages/pages.component.scss | 0 src/app/pages/pages.component.spec.ts | 25 + src/app/pages/pages.component.ts | 15 + src/app/pages/pages.module.ts | 117 + .../personaldata/personaldata.component.html | 280 + .../personaldata/personaldata.component.scss | 110 + .../personaldata.component.spec.ts | 25 + .../personaldata/personaldata.component.ts | 15 + .../pages/register/register.component.html | 81 + .../pages/register/register.component.scss | 88 + .../pages/register/register.component.spec.ts | 25 + src/app/pages/register/register.component.ts | 18 + src/app/pipes/boolean.pipe.ts | 43 + src/app/pipes/time.pipe.ts | 9 + src/app/tabbar/tabbar.component.html | 178 + src/app/tabbar/tabbar.component.scss | 181 + src/app/tabbar/tabbar.component.spec.ts | 25 + src/app/tabbar/tabbar.component.ts | 135 + src/app/theme.scss | 18 + .../changepassword.component.html | 48 + .../changepassword.component.scss | 15 + .../changepassword.component.ts | 44 + .../equal-validator.directive.ts | 30 + .../ui/collection-tools/addDisposalNode.html | 24 + .../ui/collection-tools/addPlaneFigure.html | 38 + .../collection-tools.component.html | 530 + .../collection-tools.component.scss | 677 + .../collection-tools.component.spec.ts | 25 + .../collection-tools.component.ts | 2153 ++ .../ui/collection-tools/createBuilding.html | 28 + src/app/ui/collection-tools/editBuilding.html | 23 + .../ui/collection-tools/editDisposalNode.html | 23 + .../ui/collection-tools/editPlaneFigure.html | 39 + .../collection-tools/leftFunctionalDomain.ts | 180 + src/app/ui/collection-tools/panel.scss | 297 + src/app/ui/collection-tools/save.ts | 250 + src/app/ui/collection-tools/saveOne.html | 5 + src/app/ui/collection-tools/saveTwo.html | 53 + src/app/ui/collection-tools/viewdetails.html | 24 + src/app/ui/dangerous/dangerous.component.html | 76 + src/app/ui/dangerous/dangerous.component.scss | 261 + .../ui/dangerous/dangerous.component.spec.ts | 25 + src/app/ui/dangerous/dangerous.component.ts | 267 + src/app/ui/dangerous/gis.html | 11 + .../disposal-node.component.html | 46 + .../disposal-node.component.scss | 151 + .../disposal-node.component.spec.ts | 25 + .../disposal-node/disposal-node.component.ts | 129 + src/app/ui/luck-draw/luck-draw.component.html | 55 + src/app/ui/luck-draw/luck-draw.component.scss | 126 + .../ui/luck-draw/luck-draw.component.spec.ts | 25 + src/app/ui/luck-draw/luck-draw.component.ts | 21 + .../plan-assistance.component.html | 98 + .../plan-assistance.component.scss | 269 + .../plan-assistance.component.spec.ts | 25 + .../plan-assistance.component.ts | 7464 +++++++ .../ui/plan/collection-tools.component.html | 264 + .../ui/plan/collection-tools.component.scss | 495 + src/app/ui/plan/collection-tools.component.ts | 1469 ++ src/app/ui/plan/panel.scss | 286 + src/app/ui/plan/saveOne.html | 5 + src/app/ui/plan/saveTwo.html | 53 + src/app/ui/plan/viewdetails.html | 24 + .../ui/real-cases/real-cases.component.html | 91 + .../ui/real-cases/real-cases.component.scss | 260 + .../real-cases/real-cases.component.spec.ts | 25 + src/app/ui/real-cases/real-cases.component.ts | 220 + .../similar-plans.component.html | 52 + .../similar-plans.component.scss | 122 + .../similar-plans.component.spec.ts | 25 + .../similar-plans/similar-plans.component.ts | 44 + src/app/ui/ui-routing.module.ts | 28 + src/app/ui/ui.component.html | 1 + src/app/ui/ui.component.scss | 0 src/app/ui/ui.component.spec.ts | 25 + src/app/ui/ui.component.ts | 15 + src/app/ui/ui.module.ts | 127 + src/app/working-area/charm.js | 836 + .../working-area/working-area.component.html | 2 + .../working-area/working-area.component.scss | 0 .../working-area.component.spec.ts | 25 + .../working-area/working-area.component.ts | 3138 +++ src/assets/.gitkeep | 0 src/assets/chartstheme/chongqing.js | 31 + src/assets/chartstheme/echarts-skin.js | 675 + src/assets/chartstheme/westeros.js | 513 + src/assets/css/newStyle.css | 533 + src/assets/css/style.css | 505 + src/assets/echarts/echarts.common.min.js | 22 + src/assets/flexible/flexible.js | 43 + src/assets/font/DS-DIGIT.TTF | Bin 0 -> 25480 bytes src/assets/font/digiface.ttf | Bin 0 -> 41344 bytes src/assets/icon/MaterialIcons-Regular.eot | Bin 0 -> 143258 bytes src/assets/icon/MaterialIcons-Regular.ijmap | 1 + src/assets/icon/MaterialIcons-Regular.svg | 2373 ++ src/assets/icon/MaterialIcons-Regular.ttf | Bin 0 -> 128180 bytes src/assets/icon/MaterialIcons-Regular.woff | Bin 0 -> 57620 bytes src/assets/icon/MaterialIcons-Regular.woff2 | Bin 0 -> 44300 bytes src/assets/icon/material-icons.css | 36 + src/assets/images/background.jpg | Bin 0 -> 699115 bytes src/assets/images/barbg.png | Bin 0 -> 375 bytes src/assets/images/bg.jpg | Bin 0 -> 258297 bytes src/assets/images/bg.png | Bin 0 -> 3465 bytes src/assets/images/biglogo.png | Bin 0 -> 20693 bytes src/assets/images/common-active.png | Bin 0 -> 11628 bytes src/assets/images/common-bg.png | Bin 0 -> 9307 bytes src/assets/images/common01.png | Bin 0 -> 11453 bytes src/assets/images/demo.jpg | Bin 0 -> 2251201 bytes src/assets/images/direction.png | Bin 0 -> 2132 bytes src/assets/images/enterPaintButton.png | Bin 0 -> 36289 bytes src/assets/images/filelogo.png | Bin 0 -> 99430 bytes src/assets/images/fire.png | Bin 0 -> 1883 bytes src/assets/images/force.png | Bin 0 -> 2039 bytes src/assets/images/head_bg.png | Bin 0 -> 7881 bytes src/assets/images/header-bg.png | Bin 0 -> 94593 bytes src/assets/images/home.png | Bin 0 -> 3388366 bytes src/assets/images/homeBGC.jpg | Bin 0 -> 258297 bytes src/assets/images/homeHeader.png | Bin 0 -> 7881 bytes src/assets/images/homeLine.png | Bin 0 -> 3943 bytes src/assets/images/jt.png | Bin 0 -> 73629 bytes src/assets/images/lbx.png | Bin 0 -> 83208 bytes src/assets/images/line.png | Bin 0 -> 3943 bytes src/assets/images/login-header.png | Bin 0 -> 104853 bytes src/assets/images/login-inputbg.png | Bin 0 -> 8621 bytes src/assets/images/login-inputbg01.png | Bin 0 -> 15125 bytes src/assets/images/loginbg.jpg | Bin 0 -> 161163 bytes src/assets/images/loginbtn-bg.png | Bin 0 -> 46719 bytes src/assets/images/loginlogo.png | Bin 0 -> 11304 bytes src/assets/images/logo.png | Bin 0 -> 28861 bytes src/assets/images/lotteryBtn.png | Bin 0 -> 11489 bytes src/assets/images/lotteryContent.png | Bin 0 -> 49774 bytes src/assets/images/map.png | Bin 0 -> 309355 bytes src/assets/images/noFire.png | Bin 0 -> 1291 bytes src/assets/images/noForce.png | Bin 0 -> 1762 bytes src/assets/images/noImg.png | Bin 0 -> 40543 bytes src/assets/images/numbg.png | Bin 0 -> 28929 bytes src/assets/images/panel-bg.png | Bin 0 -> 49192 bytes src/assets/images/panel-bg02.png | Bin 0 -> 39492 bytes src/assets/images/panel-bg03.png | Bin 0 -> 40081 bytes src/assets/images/panel-bg04.png | Bin 0 -> 23727 bytes src/assets/images/panel-bg05.png | Bin 0 -> 26738 bytes src/assets/images/panel-bg06.png | Bin 0 -> 39617 bytes src/assets/images/panel-bg07.png | Bin 0 -> 130066 bytes src/assets/images/route.png | Bin 0 -> 1491 bytes src/assets/images/upload.jpg | Bin 0 -> 1944 bytes src/assets/images/upload.png | Bin 0 -> 3113 bytes src/assets/images/upload2.png | Bin 0 -> 1234 bytes src/assets/images/weather.png | Bin 0 -> 2320 bytes src/assets/images/举高喷射消防车.png | Bin 0 -> 3882 bytes src/assets/images/列表背景.png | Bin 0 -> 29605 bytes .../images/压缩空气泡沫消防车.png | Bin 0 -> 4468 bytes src/assets/images/固定水泡.png | Bin 0 -> 5176 bytes src/assets/images/地上消火栓.png | Bin 0 -> 4578 bytes src/assets/images/标签正常.png | Bin 0 -> 2585 bytes src/assets/images/标签经过.png | Bin 0 -> 4758 bytes src/assets/images/标签选中.png | Bin 0 -> 2791 bytes src/assets/images/水罐消防车.png | Bin 0 -> 4293 bytes src/assets/images/泡沫栓.png | Bin 0 -> 6406 bytes src/assets/images/泡沫消防车.png | Bin 0 -> 3982 bytes src/assets/images/输入框.png | Bin 0 -> 3639 bytes src/assets/images/进攻方向.png | Bin 0 -> 6126 bytes src/assets/js/jquery-3.5.1.min.js | 2 + src/assets/js/kinerLottery.js | 135 + src/assets/js/zepto.min.js | 2 + src/assets/mTokenK1/mToken_K1.js | 646 + src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 16 + src/favicon.ico | Bin 0 -> 948 bytes src/index.html | 21 + src/main.ts | 13 + src/polyfills.ts | 63 + src/styles.scss | 86 + src/test.ts | 20 + tsconfig.app.json | 18 + tsconfig.json | 27 + tsconfig.spec.json | 18 + tslint.json | 91 + yarn.lock | 7996 +++++++ 250 files changed, 66012 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 README.md create mode 100644 angular.json create mode 100644 browserslist create mode 100644 e2e/protractor.conf.js create mode 100644 e2e/src/app.e2e-spec.ts create mode 100644 e2e/src/app.po.ts create mode 100644 e2e/tsconfig.json create mode 100644 karma.conf.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 proxy.config.json create mode 100644 reset.css create mode 100644 src/app/_theming.scss create mode 100644 src/app/app-routing.module.ts create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.scss create mode 100644 src/app/app.component.spec.ts create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/auth.guard.ts create mode 100644 src/app/canvas-share-data.service.ts create mode 100644 src/app/gis-management/gis-labeling/gis-labeling.component.html create mode 100644 src/app/gis-management/gis-labeling/gis-labeling.component.scss create mode 100644 src/app/gis-management/gis-labeling/gis-labeling.component.spec.ts create mode 100644 src/app/gis-management/gis-labeling/gis-labeling.component.ts create mode 100644 src/app/gis-management/gis-management-routing.module.ts create mode 100644 src/app/gis-management/gis-management.module.ts create mode 100644 src/app/home/home.component.html create mode 100644 src/app/home/home.component.scss create mode 100644 src/app/home/home.component.spec.ts create mode 100644 src/app/home/home.component.ts create mode 100644 src/app/http-interceptors/base-interceptor.ts create mode 100644 src/app/http-interceptors/cache-token.service.ts create mode 100644 src/app/http-interceptors/index.ts create mode 100644 src/app/http-interceptors/tree.service.ts create mode 100644 src/app/interface.ts create mode 100644 src/app/m-token-k1/m-token-k1.component.html create mode 100644 src/app/m-token-k1/m-token-k1.component.scss create mode 100644 src/app/m-token-k1/m-token-k1.component.spec.ts create mode 100644 src/app/m-token-k1/m-token-k1.component.ts create mode 100644 src/app/m-token-k1/m-token-k1.service.spec.ts create mode 100644 src/app/m-token-k1/m-token-k1.service.ts create mode 100644 src/app/navigation/navigation.component.html create mode 100644 src/app/navigation/navigation.component.scss create mode 100644 src/app/navigation/navigation.component.spec.ts create mode 100644 src/app/navigation/navigation.component.ts create mode 100644 src/app/navigation/navigation.module.ts create mode 100644 src/app/pages/home/home.component.html create mode 100644 src/app/pages/home/home.component.scss create mode 100644 src/app/pages/home/home.component.spec.ts create mode 100644 src/app/pages/home/home.component.ts create mode 100644 src/app/pages/home2/home2.component.html create mode 100644 src/app/pages/home2/home2.component.scss create mode 100644 src/app/pages/home2/home2.component.spec.ts create mode 100644 src/app/pages/home2/home2.component.ts create mode 100644 src/app/pages/homedetail/homedetail.component.html create mode 100644 src/app/pages/homedetail/homedetail.component.scss create mode 100644 src/app/pages/homedetail/homedetail.component.spec.ts create mode 100644 src/app/pages/homedetail/homedetail.component.ts create mode 100644 src/app/pages/lockscreen/lockscreen.component.html create mode 100644 src/app/pages/lockscreen/lockscreen.component.scss create mode 100644 src/app/pages/lockscreen/lockscreen.component.spec.ts create mode 100644 src/app/pages/lockscreen/lockscreen.component.ts create mode 100644 src/app/pages/login/login.component.html create mode 100644 src/app/pages/login/login.component.scss create mode 100644 src/app/pages/login/login.component.spec.ts create mode 100644 src/app/pages/login/login.component.ts create mode 100644 src/app/pages/pages-routing.module.ts create mode 100644 src/app/pages/pages.component.html create mode 100644 src/app/pages/pages.component.scss create mode 100644 src/app/pages/pages.component.spec.ts create mode 100644 src/app/pages/pages.component.ts create mode 100644 src/app/pages/pages.module.ts create mode 100644 src/app/pages/personaldata/personaldata.component.html create mode 100644 src/app/pages/personaldata/personaldata.component.scss create mode 100644 src/app/pages/personaldata/personaldata.component.spec.ts create mode 100644 src/app/pages/personaldata/personaldata.component.ts create mode 100644 src/app/pages/register/register.component.html create mode 100644 src/app/pages/register/register.component.scss create mode 100644 src/app/pages/register/register.component.spec.ts create mode 100644 src/app/pages/register/register.component.ts create mode 100644 src/app/pipes/boolean.pipe.ts create mode 100644 src/app/pipes/time.pipe.ts create mode 100644 src/app/tabbar/tabbar.component.html create mode 100644 src/app/tabbar/tabbar.component.scss create mode 100644 src/app/tabbar/tabbar.component.spec.ts create mode 100644 src/app/tabbar/tabbar.component.ts create mode 100644 src/app/theme.scss create mode 100644 src/app/ui/changepassword/changepassword.component.html create mode 100644 src/app/ui/changepassword/changepassword.component.scss create mode 100644 src/app/ui/changepassword/changepassword.component.ts create mode 100644 src/app/ui/changepassword/equal-validator.directive.ts create mode 100644 src/app/ui/collection-tools/addDisposalNode.html create mode 100644 src/app/ui/collection-tools/addPlaneFigure.html create mode 100644 src/app/ui/collection-tools/collection-tools.component.html create mode 100644 src/app/ui/collection-tools/collection-tools.component.scss create mode 100644 src/app/ui/collection-tools/collection-tools.component.spec.ts create mode 100644 src/app/ui/collection-tools/collection-tools.component.ts create mode 100644 src/app/ui/collection-tools/createBuilding.html create mode 100644 src/app/ui/collection-tools/editBuilding.html create mode 100644 src/app/ui/collection-tools/editDisposalNode.html create mode 100644 src/app/ui/collection-tools/editPlaneFigure.html create mode 100644 src/app/ui/collection-tools/leftFunctionalDomain.ts create mode 100644 src/app/ui/collection-tools/panel.scss create mode 100644 src/app/ui/collection-tools/save.ts create mode 100644 src/app/ui/collection-tools/saveOne.html create mode 100644 src/app/ui/collection-tools/saveTwo.html create mode 100644 src/app/ui/collection-tools/viewdetails.html create mode 100644 src/app/ui/dangerous/dangerous.component.html create mode 100644 src/app/ui/dangerous/dangerous.component.scss create mode 100644 src/app/ui/dangerous/dangerous.component.spec.ts create mode 100644 src/app/ui/dangerous/dangerous.component.ts create mode 100644 src/app/ui/dangerous/gis.html create mode 100644 src/app/ui/disposal-node/disposal-node.component.html create mode 100644 src/app/ui/disposal-node/disposal-node.component.scss create mode 100644 src/app/ui/disposal-node/disposal-node.component.spec.ts create mode 100644 src/app/ui/disposal-node/disposal-node.component.ts create mode 100644 src/app/ui/luck-draw/luck-draw.component.html create mode 100644 src/app/ui/luck-draw/luck-draw.component.scss create mode 100644 src/app/ui/luck-draw/luck-draw.component.spec.ts create mode 100644 src/app/ui/luck-draw/luck-draw.component.ts create mode 100644 src/app/ui/plan-assistance/plan-assistance.component.html create mode 100644 src/app/ui/plan-assistance/plan-assistance.component.scss create mode 100644 src/app/ui/plan-assistance/plan-assistance.component.spec.ts create mode 100644 src/app/ui/plan-assistance/plan-assistance.component.ts create mode 100644 src/app/ui/plan/collection-tools.component.html create mode 100644 src/app/ui/plan/collection-tools.component.scss create mode 100644 src/app/ui/plan/collection-tools.component.ts create mode 100644 src/app/ui/plan/panel.scss create mode 100644 src/app/ui/plan/saveOne.html create mode 100644 src/app/ui/plan/saveTwo.html create mode 100644 src/app/ui/plan/viewdetails.html create mode 100644 src/app/ui/real-cases/real-cases.component.html create mode 100644 src/app/ui/real-cases/real-cases.component.scss create mode 100644 src/app/ui/real-cases/real-cases.component.spec.ts create mode 100644 src/app/ui/real-cases/real-cases.component.ts create mode 100644 src/app/ui/similar-plans/similar-plans.component.html create mode 100644 src/app/ui/similar-plans/similar-plans.component.scss create mode 100644 src/app/ui/similar-plans/similar-plans.component.spec.ts create mode 100644 src/app/ui/similar-plans/similar-plans.component.ts create mode 100644 src/app/ui/ui-routing.module.ts create mode 100644 src/app/ui/ui.component.html create mode 100644 src/app/ui/ui.component.scss create mode 100644 src/app/ui/ui.component.spec.ts create mode 100644 src/app/ui/ui.component.ts create mode 100644 src/app/ui/ui.module.ts create mode 100644 src/app/working-area/charm.js create mode 100644 src/app/working-area/working-area.component.html create mode 100644 src/app/working-area/working-area.component.scss create mode 100644 src/app/working-area/working-area.component.spec.ts create mode 100644 src/app/working-area/working-area.component.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/chartstheme/chongqing.js create mode 100644 src/assets/chartstheme/echarts-skin.js create mode 100644 src/assets/chartstheme/westeros.js create mode 100644 src/assets/css/newStyle.css create mode 100644 src/assets/css/style.css create mode 100644 src/assets/echarts/echarts.common.min.js create mode 100644 src/assets/flexible/flexible.js create mode 100644 src/assets/font/DS-DIGIT.TTF create mode 100644 src/assets/font/digiface.ttf create mode 100644 src/assets/icon/MaterialIcons-Regular.eot create mode 100644 src/assets/icon/MaterialIcons-Regular.ijmap create mode 100644 src/assets/icon/MaterialIcons-Regular.svg create mode 100644 src/assets/icon/MaterialIcons-Regular.ttf create mode 100644 src/assets/icon/MaterialIcons-Regular.woff create mode 100644 src/assets/icon/MaterialIcons-Regular.woff2 create mode 100644 src/assets/icon/material-icons.css create mode 100644 src/assets/images/background.jpg create mode 100644 src/assets/images/barbg.png create mode 100644 src/assets/images/bg.jpg create mode 100644 src/assets/images/bg.png create mode 100644 src/assets/images/biglogo.png create mode 100644 src/assets/images/common-active.png create mode 100644 src/assets/images/common-bg.png create mode 100644 src/assets/images/common01.png create mode 100644 src/assets/images/demo.jpg create mode 100644 src/assets/images/direction.png create mode 100644 src/assets/images/enterPaintButton.png create mode 100644 src/assets/images/filelogo.png create mode 100644 src/assets/images/fire.png create mode 100644 src/assets/images/force.png create mode 100644 src/assets/images/head_bg.png create mode 100644 src/assets/images/header-bg.png create mode 100644 src/assets/images/home.png create mode 100644 src/assets/images/homeBGC.jpg create mode 100644 src/assets/images/homeHeader.png create mode 100644 src/assets/images/homeLine.png create mode 100644 src/assets/images/jt.png create mode 100644 src/assets/images/lbx.png create mode 100644 src/assets/images/line.png create mode 100644 src/assets/images/login-header.png create mode 100644 src/assets/images/login-inputbg.png create mode 100644 src/assets/images/login-inputbg01.png create mode 100644 src/assets/images/loginbg.jpg create mode 100644 src/assets/images/loginbtn-bg.png create mode 100644 src/assets/images/loginlogo.png create mode 100644 src/assets/images/logo.png create mode 100644 src/assets/images/lotteryBtn.png create mode 100644 src/assets/images/lotteryContent.png create mode 100644 src/assets/images/map.png create mode 100644 src/assets/images/noFire.png create mode 100644 src/assets/images/noForce.png create mode 100644 src/assets/images/noImg.png create mode 100644 src/assets/images/numbg.png create mode 100644 src/assets/images/panel-bg.png create mode 100644 src/assets/images/panel-bg02.png create mode 100644 src/assets/images/panel-bg03.png create mode 100644 src/assets/images/panel-bg04.png create mode 100644 src/assets/images/panel-bg05.png create mode 100644 src/assets/images/panel-bg06.png create mode 100644 src/assets/images/panel-bg07.png create mode 100644 src/assets/images/route.png create mode 100644 src/assets/images/upload.jpg create mode 100644 src/assets/images/upload.png create mode 100644 src/assets/images/upload2.png create mode 100644 src/assets/images/weather.png create mode 100644 src/assets/images/举高喷射消防车.png create mode 100644 src/assets/images/列表背景.png create mode 100644 src/assets/images/压缩空气泡沫消防车.png create mode 100644 src/assets/images/固定水泡.png create mode 100644 src/assets/images/地上消火栓.png create mode 100644 src/assets/images/标签正常.png create mode 100644 src/assets/images/标签经过.png create mode 100644 src/assets/images/标签选中.png create mode 100644 src/assets/images/水罐消防车.png create mode 100644 src/assets/images/泡沫栓.png create mode 100644 src/assets/images/泡沫消防车.png create mode 100644 src/assets/images/输入框.png create mode 100644 src/assets/images/进攻方向.png create mode 100644 src/assets/js/jquery-3.5.1.min.js create mode 100644 src/assets/js/kinerLottery.js create mode 100644 src/assets/js/zepto.min.js create mode 100644 src/assets/mTokenK1/mToken_K1.js create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/styles.scss create mode 100644 src/test.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.spec.json create mode 100644 tslint.json create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e89330a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86d943a --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a1481f9 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "pwa-chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:4200", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..41fa697 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +智能实战指挥平台-前端项目 + + ---广西 演示 + +项目初始化:npm install + +项目启动:npm start diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..b435257 --- /dev/null +++ b/angular.json @@ -0,0 +1,143 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "anxin119": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/anxin119", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss", + "./node_modules/swiper/css/swiper.min.css", + "./node_modules/viewerjs/dist/viewer.css" + ], + "scripts": [ + "node_modules/echarts/dist/echarts.js", + "src/assets/mTokenK1/mToken_K1.js", + "./node_modules/swiper/js/swiper.min.js", + "src/assets/echarts/echarts.common.min.js", + "src/assets/chartstheme/chongqing.js", + "src/assets/chartstheme/westeros.js", + "src/assets/chartstheme/echarts-skin.js" + ] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "anxin119:build", + "proxyConfig": "proxy.config.json" + }, + "configurations": { + "production": { + "browserTarget": "anxin119:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "anxin119:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "tsconfig.app.json", + "tsconfig.spec.json", + "e2e/tsconfig.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "anxin119:serve" + }, + "configurations": { + "production": { + "devServerTarget": "anxin119:serve:production" + } + } + } + } + } + }, + "defaultProject": "anxin119", + "cli": { + "analytics": "6210f5d0-2cd7-43dc-b245-2140372d1b89" + } +} \ No newline at end of file diff --git a/browserslist b/browserslist new file mode 100644 index 0000000..8084853 --- /dev/null +++ b/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/e2e/protractor.conf.js b/e2e/protractor.conf.js new file mode 100644 index 0000000..7c798cf --- /dev/null +++ b/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + browserName: 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/e2e/src/app.e2e-spec.ts b/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..c33b59d --- /dev/null +++ b/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('anxin119 app is running!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/e2e/src/app.po.ts b/e2e/src/app.po.ts new file mode 100644 index 0000000..b8498c2 --- /dev/null +++ b/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText() { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json new file mode 100644 index 0000000..39b800f --- /dev/null +++ b/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..45eb74b --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, './coverage/anxin119'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5b2bab3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18426 @@ +{ + "name": "anxin119", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.900.1", + "resolved": "https://registry.npm.taobao.org/@angular-devkit/architect/download/@angular-devkit/architect-0.900.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40angular-devkit%2Farchitect%2Fdownload%2F%40angular-devkit%2Farchitect-0.900.1.tgz", + "integrity": "sha1-YKOaOI0a8ktk8BwW2FJ3fpVddto=", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.1", + "rxjs": "6.5.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.900.1", + "resolved": "https://registry.npm.taobao.org/@angular-devkit/build-angular/download/@angular-devkit/build-angular-0.900.1.tgz?cache=0&sync_timestamp=1581037635842&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40angular-devkit%2Fbuild-angular%2Fdownload%2F%40angular-devkit%2Fbuild-angular-0.900.1.tgz", + "integrity": "sha1-hOmJ6Y0luHwGxfuFL6aj9PxyPbE=", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.1", + "@angular-devkit/build-optimizer": "0.900.1", + "@angular-devkit/build-webpack": "0.900.1", + "@angular-devkit/core": "9.0.1", + "@babel/core": "7.7.7", + "@babel/generator": "7.7.7", + "@babel/preset-env": "7.7.7", + "@ngtools/webpack": "9.0.1", + "ajv": "6.10.2", + "autoprefixer": "9.7.1", + "babel-loader": "8.0.6", + "browserslist": "4.8.3", + "cacache": "13.0.1", + "caniuse-lite": "1.0.30001020", + "circular-dependency-plugin": "5.2.0", + "copy-webpack-plugin": "5.1.1", + "core-js": "3.6.0", + "coverage-istanbul-loader": "2.0.3", + "cssnano": "4.1.10", + "file-loader": "4.2.0", + "find-cache-dir": "3.0.0", + "glob": "7.1.5", + "jest-worker": "24.9.0", + "karma-source-map-support": "1.4.0", + "less": "3.10.3", + "less-loader": "5.0.0", + "license-webpack-plugin": "2.1.3", + "loader-utils": "1.2.3", + "magic-string": "0.25.4", + "mini-css-extract-plugin": "0.8.0", + "minimatch": "3.0.4", + "open": "7.0.0", + "parse5": "4.0.0", + "postcss": "7.0.21", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "3.1.0", + "regenerator-runtime": "0.13.3", + "rimraf": "3.0.0", + "rollup": "1.25.2", + "rxjs": "6.5.3", + "sass": "1.23.3", + "sass-loader": "8.0.0", + "semver": "6.3.0", + "source-map": "0.7.3", + "source-map-loader": "0.2.4", + "source-map-support": "0.5.16", + "speed-measure-webpack-plugin": "1.3.1", + "style-loader": "1.0.0", + "stylus": "0.54.7", + "stylus-loader": "3.0.2", + "terser": "4.5.1", + "terser-webpack-plugin": "2.3.3", + "tree-kill": "1.2.2", + "webpack": "4.41.2", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.9.0", + "webpack-merge": "4.2.2", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.3.4", + "worker-plugin": "3.2.0" + }, + "dependencies": { + "glob": { + "version": "7.1.5", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.5.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.5.tgz", + "integrity": "sha1-ZxTGm+4g88PmTE3ZBVU+UytAzcA=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.0.tgz?cache=0&sync_timestamp=1581257110269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-3.0.0.tgz", + "integrity": "sha1-YUF21LMBC3Xlw5DrDulvbcDOu5s=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.16.tgz", + "integrity": "sha1-CuBp5/47p1OMZMmFFeNTOerFoEI=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.900.1", + "resolved": "https://registry.npm.taobao.org/@angular-devkit/build-optimizer/download/@angular-devkit/build-optimizer-0.900.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40angular-devkit%2Fbuild-optimizer%2Fdownload%2F%40angular-devkit%2Fbuild-optimizer-0.900.1.tgz", + "integrity": "sha1-uWIajmI00yM7YbqbqG5dZLjkErU=", + "dev": true, + "requires": { + "loader-utils": "1.2.3", + "source-map": "0.7.3", + "tslib": "1.10.0", + "typescript": "3.6.4", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "typescript": { + "version": "3.6.4", + "resolved": "https://registry.npm.taobao.org/typescript/download/typescript-3.6.4.tgz", + "integrity": "sha1-sYdSuzeSvBoCgTNff26/G7/FuR0=", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.900.1", + "resolved": "https://registry.npm.taobao.org/@angular-devkit/build-webpack/download/@angular-devkit/build-webpack-0.900.1.tgz", + "integrity": "sha1-G5DJyH7Cb6i0cezBcXXFvF9sdKQ=", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.1", + "@angular-devkit/core": "9.0.1", + "rxjs": "6.5.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/core": { + "version": "9.0.1", + "resolved": "https://registry.npm.taobao.org/@angular-devkit/core/download/@angular-devkit/core-9.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40angular-devkit%2Fcore%2Fdownload%2F%40angular-devkit%2Fcore-9.0.1.tgz", + "integrity": "sha1-7xB7Dp7uGiiSTN+SEIzdWrjfm2k=", + "dev": true, + "requires": { + "ajv": "6.10.2", + "fast-json-stable-stringify": "2.0.0", + "magic-string": "0.25.4", + "rxjs": "6.5.3", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular-devkit/schematics": { + "version": "9.0.1", + "resolved": "https://registry.npm.taobao.org/@angular-devkit/schematics/download/@angular-devkit/schematics-9.0.1.tgz", + "integrity": "sha1-onororX+ySszVkvFB4xfE8lpkxo=", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.1", + "ora": "4.0.2", + "rxjs": "6.5.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@angular/animations": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/animations/download/@angular/animations-9.0.0.tgz", + "integrity": "sha1-jSuFLFJzvMFh0T+C+q81ZqtWKVE=" + }, + "@angular/cdk": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/cdk/download/@angular/cdk-9.0.0.tgz", + "integrity": "sha1-VzSBeulwRPkNME+g8lycGn+gv5Y=", + "requires": { + "parse5": "^5.0.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1573036762880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz", + "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=", + "optional": true + } + } + }, + "@angular/cli": { + "version": "9.0.1", + "resolved": "https://registry.npm.taobao.org/@angular/cli/download/@angular/cli-9.0.1.tgz?cache=0&sync_timestamp=1581037644954&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40angular%2Fcli%2Fdownload%2F%40angular%2Fcli-9.0.1.tgz", + "integrity": "sha1-OZzcT4UlYHS4CHOLo6TexBZ99To=", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.900.1", + "@angular-devkit/core": "9.0.1", + "@angular-devkit/schematics": "9.0.1", + "@schematics/angular": "9.0.1", + "@schematics/update": "0.900.1", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "^4.1.1", + "ini": "1.3.5", + "inquirer": "7.0.0", + "npm-package-arg": "6.1.1", + "npm-pick-manifest": "3.0.2", + "open": "7.0.0", + "pacote": "9.5.8", + "read-package-tree": "5.3.1", + "rimraf": "3.0.0", + "semver": "6.3.0", + "symbol-observable": "1.2.0", + "universal-analytics": "^0.4.20", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-4.1.1.tgz", + "integrity": "sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=", + "dev": true + }, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.0.tgz", + "integrity": "sha1-YUF21LMBC3Xlw5DrDulvbcDOu5s=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@angular/common": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/common/download/@angular/common-9.0.0.tgz", + "integrity": "sha1-DjskUtQvh9GCWkSKMa1yxZPuB4U=" + }, + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/compiler/download/@angular/compiler-9.0.0.tgz", + "integrity": "sha1-h+C+9MNptsra4H46QpV3j8k3mdU=" + }, + "@angular/compiler-cli": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/compiler-cli/download/@angular/compiler-cli-9.0.0.tgz", + "integrity": "sha1-7M5oCCByWIX+0pivaZRr2qEtc9M=", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "yargs": "13.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", + "dev": true + }, + "fs-extra": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "yargs": { + "version": "13.1.0", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-13.1.0.tgz?cache=0&sync_timestamp=1577940861093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-13.1.0.tgz", + "integrity": "sha1-snKc5L/AxYSTlxlRQJnYqRatIwE=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.1.tgz?cache=0&sync_timestamp=1572648717575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.1.tgz", + "integrity": "sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/core/download/@angular/core-9.0.0.tgz", + "integrity": "sha1-In3FPhrIGCT5mMbnYAC378UiZB4=" + }, + "@angular/fire": { + "version": "5.4.2", + "resolved": "https://registry.npm.taobao.org/@angular/fire/download/@angular/fire-5.4.2.tgz", + "integrity": "sha1-+y1Uk13g2DeJ6UDl9Xpv/A4e9Os=" + }, + "@angular/forms": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/forms/download/@angular/forms-9.0.0.tgz", + "integrity": "sha1-IBfk3e4QH6V9xdyboRObHwJJlCI=" + }, + "@angular/language-service": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/language-service/download/@angular/language-service-9.0.0.tgz", + "integrity": "sha1-JLpjrl21ZrcPfEC7FI3Deneqo3M=", + "dev": true + }, + "@angular/material": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/material/download/@angular/material-9.0.0.tgz", + "integrity": "sha1-ZVv9TUBHM36ESAufkr6Oga83W5I=" + }, + "@angular/platform-browser": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/platform-browser/download/@angular/platform-browser-9.0.0.tgz", + "integrity": "sha1-uUVPKdjtrwJGaLqp4HCD7vc96sI=" + }, + "@angular/platform-browser-dynamic": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/platform-browser-dynamic/download/@angular/platform-browser-dynamic-9.0.0.tgz", + "integrity": "sha1-G4c1XCDQsqBGwZFAhXAaPVztUto=" + }, + "@angular/router": { + "version": "9.0.0", + "resolved": "https://registry.npm.taobao.org/@angular/router/download/@angular/router-9.0.0.tgz", + "integrity": "sha1-EXhPyM6cszFMfsEIP/m+fGERgcI=" + }, + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz", + "integrity": "sha1-vAeC9tafe31JUxIZaZuYj2aaj50=", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.7.7", + "resolved": "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.7.7.tgz?cache=0&sync_timestamp=1580387977677&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.7.7.tgz", + "integrity": "sha1-7hVdLhIwC8wM/2qK1G8q9QY4A+k=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.7", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.7", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.1.1.tgz", + "integrity": "sha1-gbbLBOm6SW8ccAXQe0NoomOPkLY=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.7.7", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.7.7.tgz", + "integrity": "sha1-hZrHM8RMdBSOGnKYCmTshLhfT0U=", + "dev": true, + "requires": { + "@babel/types": "^7.7.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha1-YLwLxlf2Ogkk/5pLSgskoTz03u4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha1-yECXpCegYaxWocMOv1S3si0kFQM=", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-call-delegate": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.8.3.tgz", + "integrity": "sha1-3oJhmJiqYF1AnEK+b/uNcgRXlpI=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.4.tgz", + "integrity": "sha1-NbvHRIaVb+QlGCn59sSDMOjQmF4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.4.tgz", + "integrity": "sha1-8IRYIjZfnVsOMS7TlZ0/gn+Gnjw=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.8.3.tgz", + "integrity": "sha1-x3QmjJXsB+6SR2o4YrdcwoOb63k=", + "dev": true, + "requires": { + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.6.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.8.3.tgz", + "integrity": "sha1-oGVcrVRRw3YLcm66h18c2PqgLBU=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha1-pyjcW06J4w/C38fQT6KKkwZT+YI=", + "dev": true, + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.4.tgz", + "integrity": "sha1-NbvHRIaVb+QlGCn59sSDMOjQmF4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.4.tgz", + "integrity": "sha1-8IRYIjZfnVsOMS7TlZ0/gn+Gnjw=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.7.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.7.4.tgz", + "integrity": "sha1-q24EHnE11DbY8KPsoV3ltno0Gi4=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.7.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha1-y0Y0jS+ICOYy8KsEgXITDmNgBfA=", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha1-Hb6ba1XXjJtBg/yM3G4wzrg7cTQ=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha1-ZZtxBJjqbB2ZB+DHPyBu7n2twkw=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.8.3.tgz", + "integrity": "sha1-f+OVibOcAWMxtrjD9EHo8LFBlJg=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-module-transforms": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.8.3.tgz", + "integrity": "sha1-0wXjXQK+5yD7wsPDYjqgwxbAFZA=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha1-ftBxgT0Jx1KY708giVYAa2ER7Lk=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha1-nqKTvhm6vA9S/4yoizTDYRsghnA=", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.8.3.tgz", + "integrity": "sha1-E5dyYH1RuT8j7/5yEFsxnSpMaWU=", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha1-JzxgDYub9QBhQsHjWIfVVcEu3YY=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.4.tgz", + "integrity": "sha1-NbvHRIaVb+QlGCn59sSDMOjQmF4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.4.tgz", + "integrity": "sha1-8IRYIjZfnVsOMS7TlZ0/gn+Gnjw=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.8.3.tgz", + "integrity": "sha1-kRktJfarvNQdqKmJ1EkldPsVMLw=", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.4.tgz", + "integrity": "sha1-NbvHRIaVb+QlGCn59sSDMOjQmF4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.4.tgz", + "integrity": "sha1-8IRYIjZfnVsOMS7TlZ0/gn+Gnjw=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.8.3.tgz", + "integrity": "sha1-f4EJkotNq0ZUB2mGr1dSMd62Oa4=", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.7.4", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha1-Vykq9gRDxKNiLPdAQN3Cjmgzb9g=", + "dev": true, + "requires": { + "@babel/types": "^7.7.4" + } + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.8.3.tgz", + "integrity": "sha1-nb2yu1XvFKqgH+jJm2Kb1TUthhA=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.4.tgz", + "integrity": "sha1-NbvHRIaVb+QlGCn59sSDMOjQmF4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.4.tgz", + "integrity": "sha1-8IRYIjZfnVsOMS7TlZ0/gn+Gnjw=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helpers": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.8.4.tgz", + "integrity": "sha1-dU6z7nJ8Fl4KJA1sIH3nxFXzb3M=", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.4", + "@babel/types": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/generator": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.8.4.tgz", + "integrity": "sha1-NbvHRIaVb+QlGCn59sSDMOjQmF4=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.8.4.tgz", + "integrity": "sha1-8IRYIjZfnVsOMS7TlZ0/gn+Gnjw=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.4", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.4", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz?cache=0&sync_timestamp=1562245140883&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhighlight%2Fdownload%2F%40babel%2Fhighlight-7.5.0.tgz", + "integrity": "sha1-VtETEr2SSPphlZHQJHK+boyzJUA=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.7.7", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.7.7.tgz", + "integrity": "sha1-G4hllUGc+S2BExbVtxWlP/OLSTc=", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha1-utMpxnCzgliXIbJ1QMfSiGAcbm8=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha1-OMT+VVdEgm6X4q6TCw+0zAfmYFQ=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha1-2lIWsjipi1ih4F1oUhBLEPmnDWs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.8.3.tgz?cache=0&sync_timestamp=1578956763418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-proposal-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-proposal-object-rest-spread-7.8.3.tgz", + "integrity": "sha1-61rjZhGN3KZ77Vg7U9dVTK2ZUbs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-ne6WqxZQ7tiGRq6XNMoWesSpxck=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.8.3.tgz", + "integrity": "sha1-tkbDrepfmIAMmrRRBaw00GzUpH8=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha1-Os3s5pXmsTqvV/wpHRqACVDHE5E=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha1-gndsLtDNnhpJlW2uuJYCTJRzuLY=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha1-Qwj60NlAnXHq+5sabuNfnWS2QIY=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha1-Q37sW3mbWFIHIISzrl72boNJ6KM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha1-l9Ndq2aFekN8FmNYuR0JBQyGjzo=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.8.3.tgz", + "integrity": "sha1-Rv16nSu56onOiHIEd5ef4NcbIbg=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha1-ManzAHD5E2inGCzwX4MXgQZfx6k=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha1-ltDSi3985OtbEguy4OlDNDyG+Bs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.8.3.tgz", + "integrity": "sha1-IN372eRnaQaxBW7mCviFkMx6qgs=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha1-w8bsXuYSXGmTxcvKINyGIanqem4=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha1-jRLfMJqlN/JyiZxWXqF2jihuIfE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha1-WBptf1aXDga/UVYM1k9elHtw17c=", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.8.4.tgz?cache=0&sync_timestamp=1580387791572&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-for-of%2Fdownload%2F%40babel%2Fplugin-transform-for-of-7.8.4.tgz", + "integrity": "sha1-b+jq5daHUIbuGF3QsJioUTeDtH0=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha1-J5NzyycyKqrWfCaD53bfxHGW7Ys=", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.8.3.tgz", + "integrity": "sha1-7utmWgGx8RBo6fuGrVahyxqCTMo=", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.8.3.tgz", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.8.4.tgz", + "integrity": "sha1-0dvmRpHWA1ipdClfpT2gdN0s6Og=", + "dev": true + }, + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.3.tgz", + "integrity": "sha1-4CrQT+JipleAkyf1eAVsoV/U0bg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha1-rvI5gj2RmU7Hto5VGTUl1229XcE=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha1-lj/tS2IKx8v2Apx1VCQCn6OkBBA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.8.3.tgz?cache=0&sync_timestamp=1578956828453&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.8.3.tgz", + "integrity": "sha1-ZWBtRGFrUCJedvVXjzPFaKC4dqU=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.8.3.tgz", + "integrity": "sha1-3yUXBuwzG9BYo0vdcmE5FfgpKKU=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.8.3.tgz", + "integrity": "sha1-2LvyIsHb42YfRA8vAMFum7fQ1CA=", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.8.3.tgz", + "integrity": "sha1-WS1XjOBsUvW5iwL5E9ZT/+lyZho=", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha1-oqcr/6ICrA4tBQav0JOcXsvEjGw=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha1-YMwq5m2FyVq1QOs0urtkNNTHDEM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.8.3.tgz", + "integrity": "sha1-67ah56hv+paFi9asAQLWWUQmFyU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.8.4.tgz?cache=0&sync_timestamp=1580387794920&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.8.4.tgz", + "integrity": "sha1-HVFV3gtl2wzPmXEWV0XTu5kNd9M=", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.8.3", + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + }, + "dependencies": { + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha1-uJS5R70AQ4HOY+odufCFR+kgq9U=", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.8.3.tgz", + "integrity": "sha1-Wjg9/6VBbbG3Pe3/0xH/0HiPsxw=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha1-MxlDANhTnB7SjGKtUIe6OAe5gmM=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.8.3.tgz", + "integrity": "sha1-sxAx6AWcB0lb8jYUyX89lpi8bsg=", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha1-mgY1rE5mXSmxYoN908xQdF398fU=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha1-KFRSFuAjqDLU06EYXtSSvP6sCMg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha1-nI/+gXD9+4ixFOy5ILgvtulf5eg=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha1-vnoSkPgdrnZ0dUUhmeH3bWF1sQA=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha1-e/pHMrRV6mpDEwrcC6dn7A5AKoA=", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.4", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.8.4.tgz?cache=0&sync_timestamp=1580387785094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-typeof-symbol%2Fdownload%2F%40babel%2Fplugin-transform-typeof-symbol-7.8.4.tgz", + "integrity": "sha1-7eQGIxXOCq+KZXqSCFjxovNfxBI=", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha1-DO8247pz5cVyc+/7GC9GuRoeyq0=", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.7.7", + "resolved": "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.7.7.tgz?cache=0&sync_timestamp=1580387976946&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-env%2Fdownload%2F%40babel%2Fpreset-env-7.7.7.tgz", + "integrity": "sha1-wpQWe5HlPn422CDpQ+zo0Mf+Rqw=", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-async-generator-functions": "^7.7.4", + "@babel/plugin-proposal-dynamic-import": "^7.7.4", + "@babel/plugin-proposal-json-strings": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", + "@babel/plugin-syntax-async-generators": "^7.7.4", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-syntax-json-strings": "^7.7.4", + "@babel/plugin-syntax-object-rest-spread": "^7.7.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", + "@babel/plugin-syntax-top-level-await": "^7.7.4", + "@babel/plugin-transform-arrow-functions": "^7.7.4", + "@babel/plugin-transform-async-to-generator": "^7.7.4", + "@babel/plugin-transform-block-scoped-functions": "^7.7.4", + "@babel/plugin-transform-block-scoping": "^7.7.4", + "@babel/plugin-transform-classes": "^7.7.4", + "@babel/plugin-transform-computed-properties": "^7.7.4", + "@babel/plugin-transform-destructuring": "^7.7.4", + "@babel/plugin-transform-dotall-regex": "^7.7.7", + "@babel/plugin-transform-duplicate-keys": "^7.7.4", + "@babel/plugin-transform-exponentiation-operator": "^7.7.4", + "@babel/plugin-transform-for-of": "^7.7.4", + "@babel/plugin-transform-function-name": "^7.7.4", + "@babel/plugin-transform-literals": "^7.7.4", + "@babel/plugin-transform-member-expression-literals": "^7.7.4", + "@babel/plugin-transform-modules-amd": "^7.7.5", + "@babel/plugin-transform-modules-commonjs": "^7.7.5", + "@babel/plugin-transform-modules-systemjs": "^7.7.4", + "@babel/plugin-transform-modules-umd": "^7.7.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", + "@babel/plugin-transform-new-target": "^7.7.4", + "@babel/plugin-transform-object-super": "^7.7.4", + "@babel/plugin-transform-parameters": "^7.7.7", + "@babel/plugin-transform-property-literals": "^7.7.4", + "@babel/plugin-transform-regenerator": "^7.7.5", + "@babel/plugin-transform-reserved-words": "^7.7.4", + "@babel/plugin-transform-shorthand-properties": "^7.7.4", + "@babel/plugin-transform-spread": "^7.7.4", + "@babel/plugin-transform-sticky-regex": "^7.7.4", + "@babel/plugin-transform-template-literals": "^7.7.4", + "@babel/plugin-transform-typeof-symbol": "^7.7.4", + "@babel/plugin-transform-unicode-regex": "^7.7.4", + "@babel/types": "^7.7.4", + "browserslist": "^4.6.0", + "core-js-compat": "^3.6.0", + "invariant": "^2.2.2", + "js-levenshtein": "^1.1.3", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.7.4.tgz", + "integrity": "sha1-Qop9nuz/4n3qwKmOI7+ONnXSp3s=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" + } + }, + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.7.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.7.4.tgz", + "integrity": "sha1-nB58YPtnn+T8+qQlAIMzM8IFhVg=", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.7.4.tgz", + "integrity": "sha1-UWVw1TnkTd8wjAdWnCWP+U/ekZM=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@firebase/analytics": { + "version": "0.2.13", + "resolved": "https://registry.npm.taobao.org/@firebase/analytics/download/@firebase/analytics-0.2.13.tgz", + "integrity": "sha1-Vfqp16h/oIt2TAjT4Cbacdp3V3o=", + "requires": { + "@firebase/analytics-types": "0.2.6", + "@firebase/component": "0.1.5", + "@firebase/installations": "0.4.2", + "@firebase/util": "0.2.40", + "tslib": "1.10.0" + } + }, + "@firebase/analytics-types": { + "version": "0.2.6", + "resolved": "https://registry.npm.taobao.org/@firebase/analytics-types/download/@firebase/analytics-types-0.2.6.tgz", + "integrity": "sha1-yPQQLCxkkvVjpTOBoNtiDdasFxE=" + }, + "@firebase/app": { + "version": "0.5.4", + "resolved": "https://registry.npm.taobao.org/@firebase/app/download/@firebase/app-0.5.4.tgz", + "integrity": "sha1-PCPqvQ87L0jao1MPbGsY7rlqjsI=", + "requires": { + "@firebase/app-types": "0.5.1", + "@firebase/component": "0.1.5", + "@firebase/logger": "0.1.35", + "@firebase/util": "0.2.40", + "dom-storage": "2.1.0", + "tslib": "1.10.0", + "xmlhttprequest": "1.8.0" + } + }, + "@firebase/app-types": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/@firebase/app-types/download/@firebase/app-types-0.5.1.tgz", + "integrity": "sha1-it1B0QxTN1moCjdtCdJK8KEAk0M=" + }, + "@firebase/auth": { + "version": "0.13.5", + "resolved": "https://registry.npm.taobao.org/@firebase/auth/download/@firebase/auth-0.13.5.tgz", + "integrity": "sha1-L8CuyJdERj0+FGCL9v4obyNBjaM=", + "requires": { + "@firebase/auth-types": "0.9.5" + } + }, + "@firebase/auth-interop-types": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@firebase/auth-interop-types/download/@firebase/auth-interop-types-0.1.2.tgz", + "integrity": "sha1-L3aro5tPIsUrtLLrfzG+tuwxKzM=" + }, + "@firebase/auth-types": { + "version": "0.9.5", + "resolved": "https://registry.npm.taobao.org/@firebase/auth-types/download/@firebase/auth-types-0.9.5.tgz", + "integrity": "sha1-FtbsLKAlkVKAiIQPgmymbjlPxP0=" + }, + "@firebase/component": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/@firebase/component/download/@firebase/component-0.1.5.tgz", + "integrity": "sha1-V4NjOQc+vrrVy/yB2D0FB7NjDKY=", + "requires": { + "@firebase/util": "0.2.40", + "tslib": "1.10.0" + } + }, + "@firebase/database": { + "version": "0.5.21", + "resolved": "https://registry.npm.taobao.org/@firebase/database/download/@firebase/database-0.5.21.tgz", + "integrity": "sha1-JUQ5mp4Bi6tCQVWZMsyuaprhyzU=", + "requires": { + "@firebase/auth-interop-types": "0.1.2", + "@firebase/component": "0.1.5", + "@firebase/database-types": "0.4.11", + "@firebase/logger": "0.1.35", + "@firebase/util": "0.2.40", + "faye-websocket": "0.11.3", + "tslib": "1.10.0" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "@firebase/database-types": { + "version": "0.4.11", + "resolved": "https://registry.npm.taobao.org/@firebase/database-types/download/@firebase/database-types-0.4.11.tgz", + "integrity": "sha1-92oeZo5yFaKFXe0qB0YBoJEda9s=", + "requires": { + "@firebase/app-types": "0.5.1" + } + }, + "@firebase/firestore": { + "version": "1.10.1", + "resolved": "https://registry.npm.taobao.org/@firebase/firestore/download/@firebase/firestore-1.10.1.tgz", + "integrity": "sha1-0AzPH281biuguv7nGglkbOu/qG8=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/firestore-types": "1.9.1", + "@firebase/logger": "0.1.35", + "@firebase/util": "0.2.40", + "@firebase/webchannel-wrapper": "0.2.35", + "@grpc/proto-loader": "^0.5.0", + "grpc": "1.24.2", + "tslib": "1.10.0" + } + }, + "@firebase/firestore-types": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/@firebase/firestore-types/download/@firebase/firestore-types-1.9.1.tgz", + "integrity": "sha1-KlNys/MUkBGG7b/US4mPkSDPOkg=" + }, + "@firebase/functions": { + "version": "0.4.32", + "resolved": "https://registry.npm.taobao.org/@firebase/functions/download/@firebase/functions-0.4.32.tgz", + "integrity": "sha1-HXO6BmtuIaSOGySeCIMRGU4olFE=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/functions-types": "0.3.14", + "@firebase/messaging-types": "0.4.2", + "isomorphic-fetch": "2.2.1", + "tslib": "1.10.0" + } + }, + "@firebase/functions-types": { + "version": "0.3.14", + "resolved": "https://registry.npm.taobao.org/@firebase/functions-types/download/@firebase/functions-types-0.3.14.tgz", + "integrity": "sha1-ar3r/ibAiW4Bdu39F1AgEbaMMlk=" + }, + "@firebase/installations": { + "version": "0.4.2", + "resolved": "https://registry.npm.taobao.org/@firebase/installations/download/@firebase/installations-0.4.2.tgz", + "integrity": "sha1-Rxpsk2sCmqFeJQXceSV+KUdGddQ=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/installations-types": "0.3.1", + "@firebase/util": "0.2.40", + "idb": "3.0.2", + "tslib": "1.10.0" + } + }, + "@firebase/installations-types": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/@firebase/installations-types/download/@firebase/installations-types-0.3.1.tgz", + "integrity": "sha1-+fkmQWgIEGDvgAfRoCtaJTF8MXY=" + }, + "@firebase/logger": { + "version": "0.1.35", + "resolved": "https://registry.npm.taobao.org/@firebase/logger/download/@firebase/logger-0.1.35.tgz", + "integrity": "sha1-6ZOOyl2BtytYG5pMkDH/69sx5W0=" + }, + "@firebase/messaging": { + "version": "0.6.4", + "resolved": "https://registry.npm.taobao.org/@firebase/messaging/download/@firebase/messaging-0.6.4.tgz", + "integrity": "sha1-YLZTfD6ubQm58WeMXi/s7Z282yg=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/installations": "0.4.2", + "@firebase/messaging-types": "0.4.2", + "@firebase/util": "0.2.40", + "idb": "3.0.2", + "tslib": "1.10.0" + } + }, + "@firebase/messaging-types": { + "version": "0.4.2", + "resolved": "https://registry.npm.taobao.org/@firebase/messaging-types/download/@firebase/messaging-types-0.4.2.tgz", + "integrity": "sha1-fNhIn7zOF8HzVTdkHEF4gyafrQI=" + }, + "@firebase/performance": { + "version": "0.2.32", + "resolved": "https://registry.npm.taobao.org/@firebase/performance/download/@firebase/performance-0.2.32.tgz", + "integrity": "sha1-D4VUD3/mFtIknqYFBHHws/rJhZg=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/installations": "0.4.2", + "@firebase/logger": "0.1.35", + "@firebase/performance-types": "0.0.9", + "@firebase/util": "0.2.40", + "tslib": "1.10.0" + } + }, + "@firebase/performance-types": { + "version": "0.0.9", + "resolved": "https://registry.npm.taobao.org/@firebase/performance-types/download/@firebase/performance-types-0.0.9.tgz", + "integrity": "sha1-JyJ7kRSc9Xw/WxX8GiNP3HkaZa4=" + }, + "@firebase/polyfill": { + "version": "0.3.31", + "resolved": "https://registry.npm.taobao.org/@firebase/polyfill/download/@firebase/polyfill-0.3.31.tgz", + "integrity": "sha1-4ixRtuSBla14huvvJakA3rCGYOQ=", + "requires": { + "core-js": "3.6.2", + "promise-polyfill": "8.1.3", + "whatwg-fetch": "2.0.4" + }, + "dependencies": { + "core-js": { + "version": "3.6.2", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.6.2.tgz", + "integrity": "sha1-J5nqGlkFDwrPUN/om5FtZQOxbKo=" + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/whatwg-fetch/download/whatwg-fetch-2.0.4.tgz", + "integrity": "sha1-3eal3zFfnTmZGqF2IYU9cguFVm8=" + } + } + }, + "@firebase/remote-config": { + "version": "0.1.13", + "resolved": "https://registry.npm.taobao.org/@firebase/remote-config/download/@firebase/remote-config-0.1.13.tgz", + "integrity": "sha1-SuKavyThP8ZzKdCaCOB/pmSG3ZI=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/installations": "0.4.2", + "@firebase/logger": "0.1.35", + "@firebase/remote-config-types": "0.1.6", + "@firebase/util": "0.2.40", + "tslib": "1.10.0" + } + }, + "@firebase/remote-config-types": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/@firebase/remote-config-types/download/@firebase/remote-config-types-0.1.6.tgz", + "integrity": "sha1-n4Hl7e5nscKiWM9gnHxVFKBXXoY=" + }, + "@firebase/storage": { + "version": "0.3.26", + "resolved": "https://registry.npm.taobao.org/@firebase/storage/download/@firebase/storage-0.3.26.tgz", + "integrity": "sha1-QGggkoHlafGC/IowSgzBNgEZW74=", + "requires": { + "@firebase/component": "0.1.5", + "@firebase/storage-types": "0.3.9", + "@firebase/util": "0.2.40", + "tslib": "1.10.0" + } + }, + "@firebase/storage-types": { + "version": "0.3.9", + "resolved": "https://registry.npm.taobao.org/@firebase/storage-types/download/@firebase/storage-types-0.3.9.tgz", + "integrity": "sha1-Do9lMcgMYRDfgAtg1MMBN1REALA=" + }, + "@firebase/util": { + "version": "0.2.40", + "resolved": "https://registry.npm.taobao.org/@firebase/util/download/@firebase/util-0.2.40.tgz", + "integrity": "sha1-uMM0N8Y+CHScTIcgJdcHIdaQqmk=", + "requires": { + "tslib": "1.10.0" + } + }, + "@firebase/webchannel-wrapper": { + "version": "0.2.35", + "resolved": "https://registry.npm.taobao.org/@firebase/webchannel-wrapper/download/@firebase/webchannel-wrapper-0.2.35.tgz", + "integrity": "sha1-Iy6FdpjvswzdqYtvanoxqQXRYUc=" + }, + "@grpc/proto-loader": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/@grpc/proto-loader/download/@grpc/proto-loader-0.5.3.tgz", + "integrity": "sha1-ojMHByC/dWDE1w4p55UMclSaEyw=", + "requires": { + "lodash.camelcase": "^4.3.0", + "protobufjs": "^6.8.6" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@istanbuljs/schema/download/@istanbuljs/schema-0.1.2.tgz", + "integrity": "sha1-JlIL8Jq+SlZEzVQU43ElqJVCQd0=", + "dev": true + }, + "@ngtools/webpack": { + "version": "9.0.1", + "resolved": "https://registry.npm.taobao.org/@ngtools/webpack/download/@ngtools/webpack-9.0.1.tgz", + "integrity": "sha1-Nv/1smmVmzfu5MI8jCK9doaqSGA=", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.1", + "enhanced-resolve": "4.1.1", + "rxjs": "6.5.3", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@pixi/accessibility": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/accessibility/download/@pixi/accessibility-5.3.3.tgz", + "integrity": "sha1-t7qxfjz1619RFHHflDFVpOrfDG4=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/app": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/app/download/@pixi/app-5.3.3.tgz", + "integrity": "sha1-Y1fi5azB7RGLf5TBF5zvVc5u1Zw=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3" + } + }, + "@pixi/constants": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/constants/download/@pixi/constants-5.3.3.tgz", + "integrity": "sha1-+q7S0M42TWf+Pmmsl+nbH2rWwEE=" + }, + "@pixi/core": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/core/download/@pixi/core-5.3.3.tgz", + "integrity": "sha1-S5c+49GPYyTWMxHooApo7LGZZTI=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/runner": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/ticker": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/display": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/display/download/@pixi/display-5.3.3.tgz", + "integrity": "sha1-FGRrNbgLhYYxa+NJXjwOf6YQ9Jk=", + "requires": { + "@pixi/math": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/extract": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/extract/download/@pixi/extract-5.3.3.tgz", + "integrity": "sha1-Wrjil3gj0Op12wA+RdbG1yvCtkI=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/filter-adjustment": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-adjustment/download/@pixi/filter-adjustment-3.1.1.tgz", + "integrity": "sha1-KqQQSBBvogBmSN6uWYE7+1XI/lQ=" + }, + "@pixi/filter-advanced-bloom": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-advanced-bloom/download/@pixi/filter-advanced-bloom-3.1.1.tgz", + "integrity": "sha1-5FuPqL0XqY5iQvqKlsGZSEqCyiI=", + "requires": { + "@pixi/filter-kawase-blur": "3.1.1" + } + }, + "@pixi/filter-alpha": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-alpha/download/@pixi/filter-alpha-5.3.3.tgz", + "integrity": "sha1-LT4Q6PQveHpRFegbEyZYObIWJ5c=", + "requires": { + "@pixi/core": "5.3.3" + } + }, + "@pixi/filter-ascii": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-ascii/download/@pixi/filter-ascii-3.1.1.tgz", + "integrity": "sha1-7cyOX9CLcplvhI0Yr0dh9Km5J2c=" + }, + "@pixi/filter-bevel": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-bevel/download/@pixi/filter-bevel-3.1.1.tgz", + "integrity": "sha1-3bc4oxh2hUtON8Pl2p1iLVegPas=" + }, + "@pixi/filter-bloom": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-bloom/download/@pixi/filter-bloom-3.1.1.tgz", + "integrity": "sha1-TAdwHnk47xtDV3qhSsOkiYML6wo=", + "requires": { + "@pixi/filter-alpha": "^5.0.0", + "@pixi/filter-blur": "^5.0.0" + } + }, + "@pixi/filter-blur": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-blur/download/@pixi/filter-blur-5.3.3.tgz", + "integrity": "sha1-xTDkADjewXJaOZdTrJf6o0GFWc8=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/settings": "5.3.3" + } + }, + "@pixi/filter-bulge-pinch": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-bulge-pinch/download/@pixi/filter-bulge-pinch-3.1.1.tgz", + "integrity": "sha1-zSpE6YAOdBAcAcntnIhOiQ1Swi8=" + }, + "@pixi/filter-color-map": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-color-map/download/@pixi/filter-color-map-3.1.1.tgz", + "integrity": "sha1-ZpHE3sDhQkXxpSkE5PRiLvC2j78=" + }, + "@pixi/filter-color-matrix": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-color-matrix/download/@pixi/filter-color-matrix-5.3.3.tgz", + "integrity": "sha1-wez4OkT2jXi1Q2uSC0WcUiLzc6U=", + "requires": { + "@pixi/core": "5.3.3" + } + }, + "@pixi/filter-color-overlay": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-color-overlay/download/@pixi/filter-color-overlay-3.1.1.tgz", + "integrity": "sha1-S/ss9Zq/jhkTohYhpc3juDmXLhs=" + }, + "@pixi/filter-color-replace": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-color-replace/download/@pixi/filter-color-replace-3.1.1.tgz", + "integrity": "sha1-ZsDd/5/FSOJO9xo6UrqqIHQ0aVw=" + }, + "@pixi/filter-convolution": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-convolution/download/@pixi/filter-convolution-3.1.1.tgz", + "integrity": "sha1-+AE3rtHgjisn0u9kHeaEfhVWQqk=" + }, + "@pixi/filter-cross-hatch": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-cross-hatch/download/@pixi/filter-cross-hatch-3.1.1.tgz", + "integrity": "sha1-cuhH5t5pfGTh31uqquh53BAFRgk=" + }, + "@pixi/filter-crt": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-crt/download/@pixi/filter-crt-3.1.1.tgz", + "integrity": "sha1-P9dpqFPUOrMi3KEiJdiF+dvCrN4=" + }, + "@pixi/filter-displacement": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-displacement/download/@pixi/filter-displacement-5.3.3.tgz", + "integrity": "sha1-8lGT9zi5DMdc0Eu7zQrv6eoDevE=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/math": "5.3.3" + } + }, + "@pixi/filter-dot": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-dot/download/@pixi/filter-dot-3.1.1.tgz", + "integrity": "sha1-hASRWOf8hhkrOi+9o1L45+Mfnqk=" + }, + "@pixi/filter-drop-shadow": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-drop-shadow/download/@pixi/filter-drop-shadow-3.1.1.tgz", + "integrity": "sha1-r0MTuk8/msmXAsQ4gzPG+/XHSiw=", + "requires": { + "@pixi/filter-kawase-blur": "3.1.1" + } + }, + "@pixi/filter-emboss": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-emboss/download/@pixi/filter-emboss-3.1.1.tgz", + "integrity": "sha1-NlfDoagFDcaT2RQDPt1VTvHFfZk=" + }, + "@pixi/filter-fxaa": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-fxaa/download/@pixi/filter-fxaa-5.3.3.tgz", + "integrity": "sha1-x3AWMdYPSFtuwQUvca+wY3yl8Lg=", + "requires": { + "@pixi/core": "5.3.3" + } + }, + "@pixi/filter-glitch": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-glitch/download/@pixi/filter-glitch-3.1.1.tgz", + "integrity": "sha1-ldlzQ56eQYFJpbF+/6+X1D/vLlQ=" + }, + "@pixi/filter-glow": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-glow/download/@pixi/filter-glow-3.1.1.tgz", + "integrity": "sha1-yMQ0h8uoiW68JwhEpcag9PKV6H4=", + "requires": { + "@pixi/core": "^5.0.0", + "@pixi/utils": "^5.0.0" + } + }, + "@pixi/filter-godray": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-godray/download/@pixi/filter-godray-3.1.1.tgz", + "integrity": "sha1-Tp9oysvEwzC3cn5h8dEIXVkz1Ig=" + }, + "@pixi/filter-kawase-blur": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-kawase-blur/download/@pixi/filter-kawase-blur-3.1.1.tgz", + "integrity": "sha1-nkGfF78X9G3qMjC6v/mwRJQ17hE=" + }, + "@pixi/filter-motion-blur": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-motion-blur/download/@pixi/filter-motion-blur-3.1.1.tgz", + "integrity": "sha1-VHJzisFo+Eui3G649LMpxP7o7JY=" + }, + "@pixi/filter-multi-color-replace": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-multi-color-replace/download/@pixi/filter-multi-color-replace-3.1.1.tgz", + "integrity": "sha1-yBNruGZYUKErxAy3qk3sFdENnME=" + }, + "@pixi/filter-noise": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-noise/download/@pixi/filter-noise-5.3.3.tgz", + "integrity": "sha1-XYIdn4P5fYPUvlLz7Mfi0G/xwIQ=", + "requires": { + "@pixi/core": "5.3.3" + } + }, + "@pixi/filter-old-film": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-old-film/download/@pixi/filter-old-film-3.1.1.tgz", + "integrity": "sha1-iNa4o7pz9H7jit1cioTdRy0SE6A=" + }, + "@pixi/filter-outline": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-outline/download/@pixi/filter-outline-3.1.1.tgz", + "integrity": "sha1-4UYUMT5SrhraLal87qMiXulCn0E=" + }, + "@pixi/filter-pixelate": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-pixelate/download/@pixi/filter-pixelate-3.1.1.tgz", + "integrity": "sha1-iXYXH3mtRSY3ZRzVM0tKYIMj/fQ=" + }, + "@pixi/filter-radial-blur": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-radial-blur/download/@pixi/filter-radial-blur-3.1.1.tgz", + "integrity": "sha1-08bXdYP9UA8QJ0rfelui+8l5Ko4=" + }, + "@pixi/filter-reflection": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-reflection/download/@pixi/filter-reflection-3.1.1.tgz", + "integrity": "sha1-Nw/iR6iYEmvAjkKPaVRrhbF0qsQ=" + }, + "@pixi/filter-rgb-split": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-rgb-split/download/@pixi/filter-rgb-split-3.1.1.tgz", + "integrity": "sha1-C50fvn4ea47CRzP5tUcaZ049hnk=" + }, + "@pixi/filter-shockwave": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-shockwave/download/@pixi/filter-shockwave-3.1.1.tgz", + "integrity": "sha1-dX5/fVbd8bH2X/iy7uH6nMTHfsU=" + }, + "@pixi/filter-simple-lightmap": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-simple-lightmap/download/@pixi/filter-simple-lightmap-3.1.1.tgz", + "integrity": "sha1-T+Rjxo3dptW4SrXKYPaGTXkTPVc=" + }, + "@pixi/filter-tilt-shift": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-tilt-shift/download/@pixi/filter-tilt-shift-3.1.1.tgz", + "integrity": "sha1-J/0XVhjqzZWRgbOV1sRYFYYQIcg=" + }, + "@pixi/filter-twist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-twist/download/@pixi/filter-twist-3.1.1.tgz", + "integrity": "sha1-9ccHL4TstI+8h+yitDz7aUB0p6I=" + }, + "@pixi/filter-zoom-blur": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/@pixi/filter-zoom-blur/download/@pixi/filter-zoom-blur-3.1.1.tgz", + "integrity": "sha1-D6tdHAVi698VJKRUx41/EpvMjmQ=" + }, + "@pixi/graphics": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/graphics/download/@pixi/graphics-5.3.3.tgz", + "integrity": "sha1-z69aCpSoEfc1nCCHVUfBQJXx7Ow=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/sprite": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/interaction": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/interaction/download/@pixi/interaction-5.3.3.tgz", + "integrity": "sha1-BzSOfSW45nRz7VT2eevoSrnuBAA=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/ticker": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/loaders": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/loaders/download/@pixi/loaders-5.3.3.tgz", + "integrity": "sha1-1BXyX5r2TZeBDkWcqiwKyktqG3w=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/utils": "5.3.3", + "resource-loader": "^3.0.1" + } + }, + "@pixi/math": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/math/download/@pixi/math-5.3.3.tgz", + "integrity": "sha1-XUDTb6FwHhlQg624S93y9kIML0w=" + }, + "@pixi/mesh": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/mesh/download/@pixi/mesh-5.3.3.tgz", + "integrity": "sha1-8K3wNiwY5udka3q6zOxH0wTLtAU=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/mesh-extras": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/mesh-extras/download/@pixi/mesh-extras-5.3.3.tgz", + "integrity": "sha1-mccS/bGwqdtm/ZWnbeJjYacFWrQ=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/mesh": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/mixin-cache-as-bitmap": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/mixin-cache-as-bitmap/download/@pixi/mixin-cache-as-bitmap-5.3.3.tgz", + "integrity": "sha1-ysai7PO3L7rlirNleZg2Ddvac4I=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/sprite": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/mixin-get-child-by-name": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/mixin-get-child-by-name/download/@pixi/mixin-get-child-by-name-5.3.3.tgz", + "integrity": "sha1-go3Jp76uYDZI6+LMtnUXxxN7/xk=", + "requires": { + "@pixi/display": "5.3.3" + } + }, + "@pixi/mixin-get-global-position": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/mixin-get-global-position/download/@pixi/mixin-get-global-position-5.3.3.tgz", + "integrity": "sha1-VwCwN5Tlsh9hwBWu2nM8PLYl/HU=", + "requires": { + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3" + } + }, + "@pixi/particles": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/particles/download/@pixi/particles-5.3.3.tgz", + "integrity": "sha1-Pp0tMX1s0Ro3NoMN+9TMDDoQgsg=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/polyfill": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/polyfill/download/@pixi/polyfill-5.3.3.tgz", + "integrity": "sha1-TQBQsLt1p7UYQfe/7EwpJDpgW+c=", + "requires": { + "es6-promise-polyfill": "^1.2.0", + "object-assign": "^4.1.1" + } + }, + "@pixi/prepare": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/prepare/download/@pixi/prepare-5.3.3.tgz", + "integrity": "sha1-o0Zuz1JWpcP7m4alVdsXzHLVTIc=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/graphics": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/text": "5.3.3", + "@pixi/ticker": "5.3.3" + } + }, + "@pixi/runner": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/runner/download/@pixi/runner-5.3.3.tgz", + "integrity": "sha1-efs1sSYg13JMZfSnqlBxkOqCWsA=" + }, + "@pixi/settings": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/settings/download/@pixi/settings-5.3.3.tgz", + "integrity": "sha1-P/X4r8g3bRLHYnvgQ+wxfroTnc0=", + "requires": { + "ismobilejs": "^1.1.0" + } + }, + "@pixi/sprite": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/sprite/download/@pixi/sprite-5.3.3.tgz", + "integrity": "sha1-FoHV/QpyVYG/7jycLEkFN7+NIeo=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/sprite-animated": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/sprite-animated/download/@pixi/sprite-animated-5.3.3.tgz", + "integrity": "sha1-8klJrgSu/5/0TiJUS8i38zbVIJ4=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/sprite": "5.3.3", + "@pixi/ticker": "5.3.3" + } + }, + "@pixi/sprite-tiling": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/sprite-tiling/download/@pixi/sprite-tiling-5.3.3.tgz", + "integrity": "sha1-1zBiVre/bxPBgepKLZWQX1rmm50=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/sprite": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/spritesheet": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/spritesheet/download/@pixi/spritesheet-5.3.3.tgz", + "integrity": "sha1-4wdADQr+Sqbh2NdWpRnjkXBrXzU=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/loaders": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/text": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/text/download/@pixi/text-5.3.3.tgz", + "integrity": "sha1-1vwAxSvAVEUK5D4tXG987c7p7NI=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/sprite": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/text-bitmap": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/text-bitmap/download/@pixi/text-bitmap-5.3.3.tgz", + "integrity": "sha1-DWWEc9bgLOWY93nCB8QjM3QeFb0=", + "requires": { + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/loaders": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/mesh": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/text": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "@pixi/ticker": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/ticker/download/@pixi/ticker-5.3.3.tgz", + "integrity": "sha1-qHZthBeHn//XUHF13oaYBa7iXrI=", + "requires": { + "@pixi/settings": "5.3.3" + } + }, + "@pixi/utils": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/@pixi/utils/download/@pixi/utils-5.3.3.tgz", + "integrity": "sha1-UlMh87sA4+AB40ECCj7e6UzA0Ao=", + "requires": { + "@pixi/constants": "5.3.3", + "@pixi/settings": "5.3.3", + "earcut": "^2.1.5", + "eventemitter3": "^3.1.0", + "url": "^0.11.0" + }, + "dependencies": { + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz?cache=0&sync_timestamp=1598517795415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-3.1.2.tgz", + "integrity": "sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc=" + } + } + }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@protobufjs/aspromise/download/@protobufjs/aspromise-1.1.2.tgz", + "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@protobufjs/base64/download/@protobufjs/base64-1.1.2.tgz", + "integrity": "sha1-TIVzDlm5ofHzSQR9vyQpYDS7JzU=" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/@protobufjs/codegen/download/@protobufjs/codegen-2.0.4.tgz", + "integrity": "sha1-fvN/DQEPsCitGtWXIuUG2SYoFcs=" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@protobufjs/eventemitter/download/@protobufjs/eventemitter-1.1.0.tgz", + "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@protobufjs/fetch/download/@protobufjs/fetch-1.1.0.tgz", + "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/@protobufjs/float/download/@protobufjs/float-1.0.2.tgz", + "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@protobufjs/inquire/download/@protobufjs/inquire-1.1.0.tgz", + "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/@protobufjs/path/download/@protobufjs/path-1.1.2.tgz", + "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@protobufjs/pool/download/@protobufjs/pool-1.1.0.tgz", + "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@protobufjs/utf8/download/@protobufjs/utf8-1.1.0.tgz", + "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + }, + "@schematics/angular": { + "version": "9.0.1", + "resolved": "https://registry.npm.taobao.org/@schematics/angular/download/@schematics/angular-9.0.1.tgz", + "integrity": "sha1-GwjJONpNzuJHK0ZB88vJBtbriK8=", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.1", + "@angular-devkit/schematics": "9.0.1" + } + }, + "@schematics/update": { + "version": "0.900.1", + "resolved": "https://registry.npm.taobao.org/@schematics/update/download/@schematics/update-0.900.1.tgz", + "integrity": "sha1-SSO+iLlLXbCwTNLH8+deZ6ShNog=", + "dev": true, + "requires": { + "@angular-devkit/core": "9.0.1", + "@angular-devkit/schematics": "9.0.1", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "npm-package-arg": "^7.0.0", + "pacote": "9.5.8", + "rxjs": "6.5.3", + "semver": "6.3.0", + "semver-intersect": "1.4.0" + }, + "dependencies": { + "npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/npm-package-arg/download/npm-package-arg-7.0.0.tgz", + "integrity": "sha1-Us3wi0kcDFnfaHxMklqJEC73lKU=", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1580434257623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.3.tgz", + "integrity": "sha1-UQ4mMX9NuRp+sd532d2boKSJmjo=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@turf/along": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/along/download/@turf/along-5.1.5.tgz", + "integrity": "sha1-YdbmplhKzdq1asVYTge/jL5fi+s=", + "requires": { + "@turf/bearing": "^5.1.5", + "@turf/destination": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/area": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/area/download/@turf/area-5.1.5.tgz", + "integrity": "sha1-79iZv9Jgzb0VQbKjwVX4pdLu+h0=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/bbox": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/bbox/download/@turf/bbox-5.1.5.tgz", + "integrity": "sha1-MFHfUUrUxQ9KT5uKLRX9i2hA7aM=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/bbox-clip": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/bbox-clip/download/@turf/bbox-clip-5.1.5.tgz", + "integrity": "sha1-M2S1Mo3/nzz0HZ4C7a/zdNFQzIQ=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "lineclip": "^1.1.5" + } + }, + "@turf/bbox-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/bbox-polygon/download/@turf/bbox-polygon-5.1.5.tgz", + "integrity": "sha1-auuk7VHYXSluD3w4uIwznwHu4CQ=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/bearing": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/bearing/download/@turf/bearing-5.1.5.tgz", + "integrity": "sha1-egt5ATbE70eX8CRjBdRcvi0ns/c=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/bezier-spline": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/bezier-spline/download/@turf/bezier-spline-5.1.5.tgz", + "integrity": "sha1-WaJ7ul17l+8Vqz/VpA+9I4cEm8o=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/boolean-clockwise": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-clockwise/download/@turf/boolean-clockwise-5.1.5.tgz", + "integrity": "sha1-MwK32sYsXikaB4nimvcoM4f6nes=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/boolean-contains": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-contains/download/@turf/boolean-contains-5.1.5.tgz", + "integrity": "sha1-WW1jruY2961T7pn5/yTJaZSg7xQ=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/boolean-point-on-line": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/boolean-crosses": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-crosses/download/@turf/boolean-crosses-5.1.5.tgz", + "integrity": "sha1-Ab+uollvFk3kpNMlCU3HwlXHFdY=", + "requires": { + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-intersect": "^5.1.5", + "@turf/polygon-to-line": "^5.1.5" + } + }, + "@turf/boolean-disjoint": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-disjoint/download/@turf/boolean-disjoint-5.1.6.tgz", + "integrity": "sha1-P72HCEsmkTP1/RVyXes8ZnX7ip0=", + "requires": { + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/line-intersect": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/polygon-to-line": "^5.1.5" + } + }, + "@turf/boolean-equal": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-equal/download/@turf/boolean-equal-5.1.5.tgz", + "integrity": "sha1-Kfj21gu4RQff12WzIlTbjnLJOKQ=", + "requires": { + "@turf/clean-coords": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "geojson-equality": "0.1.6" + } + }, + "@turf/boolean-overlap": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-overlap/download/@turf/boolean-overlap-5.1.5.tgz", + "integrity": "sha1-DU5kxSx3CijpPZ7834qLg3OsznU=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-intersect": "^5.1.5", + "@turf/line-overlap": "^5.1.5", + "@turf/meta": "^5.1.5", + "geojson-equality": "0.1.6" + } + }, + "@turf/boolean-parallel": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-parallel/download/@turf/boolean-parallel-5.1.5.tgz", + "integrity": "sha1-c5NYR16ltlx+GCejw+DopofTqF0=", + "requires": { + "@turf/clean-coords": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/line-segment": "^5.1.5", + "@turf/rhumb-bearing": "^5.1.5" + } + }, + "@turf/boolean-point-in-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-point-in-polygon/download/@turf/boolean-point-in-polygon-5.1.5.tgz", + "integrity": "sha1-8BzBlNHgMKVIv9qYHLpDz9YpQbc=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/boolean-point-on-line": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-point-on-line/download/@turf/boolean-point-on-line-5.1.5.tgz", + "integrity": "sha1-9jPF/4Aq0ku48Vja269v9KAj3Xs=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/boolean-within": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/boolean-within/download/@turf/boolean-within-5.1.5.tgz", + "integrity": "sha1-RxBdVtB1Kp0Pv81Dw2pfkUnchpc=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/boolean-point-on-line": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/buffer": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/buffer/download/@turf/buffer-5.1.5.tgz", + "integrity": "sha1-hByWJ8+5dLEirE4alW8EZrwCMcQ=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/center": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/projection": "^5.1.5", + "d3-geo": "1.7.1", + "turf-jsts": "*" + } + }, + "@turf/center": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/center/download/@turf/center-5.1.5.tgz", + "integrity": "sha1-RKss2VT2PA03dX9xWKmcPvURS4A=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/center-mean": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/center-mean/download/@turf/center-mean-5.1.5.tgz", + "integrity": "sha1-jI6YdTkeXwnw5uePXWYbiLIQigo=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/center-median": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/center-median/download/@turf/center-median-5.1.5.tgz", + "integrity": "sha1-u0Yb/noqSGAdikcnaFcYcjoUqHI=", + "requires": { + "@turf/center-mean": "^5.1.5", + "@turf/centroid": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/center-of-mass": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/center-of-mass/download/@turf/center-of-mass-5.1.5.tgz", + "integrity": "sha1-TTvXnYhJjbq4Mk1PafAyL2Uguco=", + "requires": { + "@turf/centroid": "^5.1.5", + "@turf/convex": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/centroid": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/centroid/download/@turf/centroid-5.1.5.tgz", + "integrity": "sha1-d4radCFjNQIa2P0OemWoNJ1Tx2k=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/circle": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/circle/download/@turf/circle-5.1.5.tgz", + "integrity": "sha1-mxV3g1UIq1L7HBCypQZcuiuHtqU=", + "requires": { + "@turf/destination": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/clean-coords": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/clean-coords/download/@turf/clean-coords-5.1.5.tgz", + "integrity": "sha1-EoAKmKeMmkUqcuxChJPEOs8q2h8=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/clone": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/clone/download/@turf/clone-5.1.5.tgz", + "integrity": "sha1-JT6NNUdxgZduM636tQoPAqfw42c=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/clusters": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/clusters/download/@turf/clusters-5.1.5.tgz", + "integrity": "sha1-ZzpeXxsZycq6vFfJCO6t1oIiTdQ=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/clusters-dbscan": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/clusters-dbscan/download/@turf/clusters-dbscan-5.1.5.tgz", + "integrity": "sha1-V4H7TmVsdHoLjpk333MYHAMJ4m8=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "density-clustering": "1.3.0" + } + }, + "@turf/clusters-kmeans": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/clusters-kmeans/download/@turf/clusters-kmeans-5.1.5.tgz", + "integrity": "sha1-/W3+qLEzuovcI3CsPKzuFYejAvE=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "skmeans": "0.9.7" + } + }, + "@turf/collect": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/collect/download/@turf/collect-5.1.5.tgz", + "integrity": "sha1-/pjJqMIY7PJP/DPXApUXt8GbKj4=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/helpers": "^5.1.5", + "rbush": "^2.0.1" + }, + "dependencies": { + "quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/quickselect/download/quickselect-1.1.1.tgz", + "integrity": "sha1-hS5BLOQY8jetW2YNcM/6xkeulMI=" + }, + "rbush": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/rbush/download/rbush-2.0.2.tgz", + "integrity": "sha1-u2AFwnMbe6HVqaA1dykn0WphRgU=", + "requires": { + "quickselect": "^1.0.1" + } + } + } + }, + "@turf/combine": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/combine/download/@turf/combine-5.1.5.tgz", + "integrity": "sha1-uxS976VVBDVxlfwaEkzX1TqMiQU=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/concave": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/concave/download/@turf/concave-5.1.5.tgz", + "integrity": "sha1-I7uqw4fQNLlldKG9cNBZI3qdIRA=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/tin": "^5.1.5", + "topojson-client": "3.x", + "topojson-server": "3.x" + } + }, + "@turf/convex": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/convex/download/@turf/convex-5.1.5.tgz", + "integrity": "sha1-Dfk3fdACIWzpghsH9wXgN9rj4B0=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5", + "concaveman": "*" + } + }, + "@turf/destination": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/destination/download/@turf/destination-5.1.5.tgz", + "integrity": "sha1-7TU4G9zoO73cvQei4rzivd/7zCY=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/difference": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/difference/download/@turf/difference-5.1.5.tgz", + "integrity": "sha1-ok1pCnvKgD8QkKnuO52Qb8Q3H0I=", + "requires": { + "@turf/area": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "turf-jsts": "*" + } + }, + "@turf/dissolve": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/dissolve/download/@turf/dissolve-5.1.5.tgz", + "integrity": "sha1-LPEzqQIdIWODHD16lY1lB/nYGTg=", + "requires": { + "@turf/boolean-overlap": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-intersect": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/union": "^5.1.5", + "geojson-rbush": "2.1.0", + "get-closest": "*" + } + }, + "@turf/distance": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/distance/download/@turf/distance-5.1.5.tgz", + "integrity": "sha1-Oc8YIEu/h1h9cH5gmmARiQkVZAk=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/ellipse": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/ellipse/download/@turf/ellipse-5.1.5.tgz", + "integrity": "sha1-1XyrhTmFkgzeYCKKeNgEWAJcVL4=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/rhumb-destination": "^5.1.5", + "@turf/transform-rotate": "^5.1.5" + } + }, + "@turf/envelope": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/envelope/download/@turf/envelope-5.1.5.tgz", + "integrity": "sha1-UBMwnFP91D369LWIplw/7X28EIo=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/bbox-polygon": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/explode": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/explode/download/@turf/explode-5.1.5.tgz", + "integrity": "sha1-sSsvd0AEobSPYrqVsgocZVo94Rg=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/flatten": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/flatten/download/@turf/flatten-5.1.5.tgz", + "integrity": "sha1-2iknBnEz7WFpsLnWB7khVoiqE1g=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/flip": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/flip/download/@turf/flip-5.1.5.tgz", + "integrity": "sha1-Q29kOnIvDKU7n85jjkaT2zYIpoo=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/great-circle": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/great-circle/download/@turf/great-circle-5.1.5.tgz", + "integrity": "sha1-3r+2cc5HVQnLY3MBwV/PzPo1mpM=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/helpers": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/helpers/download/@turf/helpers-5.1.5.tgz", + "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8=" + }, + "@turf/hex-grid": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/hex-grid/download/@turf/hex-grid-5.1.5.tgz", + "integrity": "sha1-m3ul/s9QUfHoWJL3E/zlxVBQKmo=", + "requires": { + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/intersect": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/interpolate": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/interpolate/download/@turf/interpolate-5.1.5.tgz", + "integrity": "sha1-DxLwq3VtbdEK+ykMpuh3ve8BPqo=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/centroid": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/hex-grid": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/point-grid": "^5.1.5", + "@turf/square-grid": "^5.1.5", + "@turf/triangle-grid": "^5.1.5" + } + }, + "@turf/intersect": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/@turf/intersect/download/@turf/intersect-5.1.6.tgz", + "integrity": "sha1-E//M63pSnCp+XWaBqzumcfho6V8=", + "requires": { + "@turf/clean-coords": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/truncate": "^5.1.5", + "turf-jsts": "*" + } + }, + "@turf/invariant": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/invariant/download/@turf/invariant-5.1.5.tgz", + "integrity": "sha1-9Z9P76CSJLFdzhZR+QPIaNV6JOE=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/isobands": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/isobands/download/@turf/isobands-5.1.5.tgz", + "integrity": "sha1-a0TO9YTVUaMTBBh68jtKFYLj8I0=", + "requires": { + "@turf/area": "^5.1.5", + "@turf/bbox": "^5.1.5", + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/explode": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/isolines": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/isolines/download/@turf/isolines-5.1.5.tgz", + "integrity": "sha1-irTn9Cuz38VGFOW/FVln9+VdLeE=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/kinks": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/kinks/download/@turf/kinks-5.1.5.tgz", + "integrity": "sha1-irtpYdm7AQchO63fLCwmQNAlaYA=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/length": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/length/download/@turf/length-5.1.5.tgz", + "integrity": "sha1-86X4ZMK5lqi7RxeUU1ofrxLuvvs=", + "requires": { + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/line-arc": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-arc/download/@turf/line-arc-5.1.5.tgz", + "integrity": "sha1-AHinRHg1oSrkFKIR+aZNEYYVDhU=", + "requires": { + "@turf/circle": "^5.1.5", + "@turf/destination": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/line-chunk": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-chunk/download/@turf/line-chunk-5.1.5.tgz", + "integrity": "sha1-kQqFwFwG2dD5w4l3oF4IGNUIXEI=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/length": "^5.1.5", + "@turf/line-slice-along": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/line-intersect": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-intersect/download/@turf/line-intersect-5.1.5.tgz", + "integrity": "sha1-DikHGuQDKV5JFyO8SfXPrI0R3fM=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-segment": "^5.1.5", + "@turf/meta": "^5.1.5", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-offset": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-offset/download/@turf/line-offset-5.1.5.tgz", + "integrity": "sha1-KrWy8In4yRPiMdmUN4553KkLWh4=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/line-overlap": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-overlap/download/@turf/line-overlap-5.1.5.tgz", + "integrity": "sha1-lDxvh6A4bcQ9+sEdKz/5wRLNP2A=", + "requires": { + "@turf/boolean-point-on-line": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-segment": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/nearest-point-on-line": "^5.1.5", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-segment": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-segment/download/@turf/line-segment-5.1.5.tgz", + "integrity": "sha1-Mgeq7lRqskw9jcPMY/kcdwuAE+U=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/line-slice": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-slice/download/@turf/line-slice-5.1.5.tgz", + "integrity": "sha1-Hs/OFGKjeFeXVM7fRGTN4mgp8rU=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/nearest-point-on-line": "^5.1.5" + } + }, + "@turf/line-slice-along": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-slice-along/download/@turf/line-slice-along-5.1.5.tgz", + "integrity": "sha1-7drQoh70efKWihG9LdcomiEy6aU=", + "requires": { + "@turf/bearing": "^5.1.5", + "@turf/destination": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/line-split": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-split/download/@turf/line-split-5.1.5.tgz", + "integrity": "sha1-Wy30w3YZty73JbUWPPmSbVVArLc=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-intersect": "^5.1.5", + "@turf/line-segment": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/nearest-point-on-line": "^5.1.5", + "@turf/square": "^5.1.5", + "@turf/truncate": "^5.1.5", + "geojson-rbush": "2.1.0" + } + }, + "@turf/line-to-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/line-to-polygon/download/@turf/line-to-polygon-5.1.5.tgz", + "integrity": "sha1-ITz0Gmj4Ikd4ujnTGH3sPouBhlo=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/mask": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/mask/download/@turf/mask-5.1.5.tgz", + "integrity": "sha1-mrD+8aJyyY/j70kvn/thggayQtU=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/union": "^5.1.5", + "rbush": "^2.0.1" + }, + "dependencies": { + "quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/quickselect/download/quickselect-1.1.1.tgz", + "integrity": "sha1-hS5BLOQY8jetW2YNcM/6xkeulMI=" + }, + "rbush": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/rbush/download/rbush-2.0.2.tgz", + "integrity": "sha1-u2AFwnMbe6HVqaA1dykn0WphRgU=", + "requires": { + "quickselect": "^1.0.1" + } + } + } + }, + "@turf/meta": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/@turf/meta/download/@turf/meta-5.1.6.tgz", + "integrity": "sha1-wgqGPt7Qhp+yhUje6Ik0G8y0akY=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/midpoint": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/midpoint/download/@turf/midpoint-5.1.5.tgz", + "integrity": "sha1-4mH2srDqgSTM7/VSomLdRlydBfA=", + "requires": { + "@turf/bearing": "^5.1.5", + "@turf/destination": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/nearest-point": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/nearest-point/download/@turf/nearest-point-5.1.5.tgz", + "integrity": "sha1-EgUN5Bw5hEMiTHl43g9iE5ANNPs=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/nearest-point-on-line": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/nearest-point-on-line/download/@turf/nearest-point-on-line-5.1.5.tgz", + "integrity": "sha1-VgauKX8VlHUkvqUaKp71HsG/nDY=", + "requires": { + "@turf/bearing": "^5.1.5", + "@turf/destination": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-intersect": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/nearest-point-to-line": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/@turf/nearest-point-to-line/download/@turf/nearest-point-to-line-5.1.6.tgz", + "integrity": "sha1-0wt2BuVqPc6X9NttRdNSRw4LP4g=", + "requires": { + "@turf/helpers": "6.x", + "@turf/invariant": "6.x", + "@turf/meta": "6.x", + "@turf/point-to-line-distance": "^5.1.5", + "object-assign": "*" + }, + "dependencies": { + "@turf/helpers": { + "version": "6.1.4", + "resolved": "https://registry.npm.taobao.org/@turf/helpers/download/@turf/helpers-6.1.4.tgz", + "integrity": "sha1-1v1+vmeC3ZyH3KVVm9pcSK5MODY=" + }, + "@turf/invariant": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/@turf/invariant/download/@turf/invariant-6.1.2.tgz", + "integrity": "sha1-YBPtYhn5rC7a2psx4d+lkY6wovc=", + "requires": { + "@turf/helpers": "6.x" + } + }, + "@turf/meta": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/@turf/meta/download/@turf/meta-6.0.2.tgz", + "integrity": "sha1-65KVESbSSmE6wbe5nXM/zCD9MM8=", + "requires": { + "@turf/helpers": "6.x" + } + } + } + }, + "@turf/planepoint": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/planepoint/download/@turf/planepoint-5.1.5.tgz", + "integrity": "sha1-GLvfAG91ne9eQsagBsn53oGyt/8=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/point-grid": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/point-grid/download/@turf/point-grid-5.1.5.tgz", + "integrity": "sha1-MFFBJI9Quv42zn5mukuX56sjaIc=", + "requires": { + "@turf/boolean-within": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/point-on-feature": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/point-on-feature/download/@turf/point-on-feature-5.1.5.tgz", + "integrity": "sha1-MMfwMkMCd8ZBjZbSieRba/shP+c=", + "requires": { + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/center": "^5.1.5", + "@turf/explode": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/nearest-point": "^5.1.5" + } + }, + "@turf/point-to-line-distance": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/@turf/point-to-line-distance/download/@turf/point-to-line-distance-5.1.6.tgz", + "integrity": "sha1-lU9stoVGQgoDDYSAOSUDJklw0tg=", + "requires": { + "@turf/bearing": "6.x", + "@turf/distance": "6.x", + "@turf/helpers": "6.x", + "@turf/invariant": "6.x", + "@turf/meta": "6.x", + "@turf/projection": "6.x", + "@turf/rhumb-bearing": "6.x", + "@turf/rhumb-distance": "6.x" + }, + "dependencies": { + "@turf/bearing": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/@turf/bearing/download/@turf/bearing-6.0.1.tgz", + "integrity": "sha1-jaXRcJLlcfFwzee/suWw10kjyS0=", + "requires": { + "@turf/helpers": "6.x", + "@turf/invariant": "6.x" + } + }, + "@turf/clone": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/@turf/clone/download/@turf/clone-6.0.2.tgz", + "integrity": "sha1-dWPOu7Pi4Z82FZm7JERn4NzCBck=", + "requires": { + "@turf/helpers": "6.x" + } + }, + "@turf/distance": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/@turf/distance/download/@turf/distance-6.0.1.tgz", + "integrity": "sha1-B2Hyh4QobnhlpCfE5+NZNWnC3qg=", + "requires": { + "@turf/helpers": "6.x", + "@turf/invariant": "6.x" + } + }, + "@turf/helpers": { + "version": "6.1.4", + "resolved": "https://registry.npm.taobao.org/@turf/helpers/download/@turf/helpers-6.1.4.tgz", + "integrity": "sha1-1v1+vmeC3ZyH3KVVm9pcSK5MODY=" + }, + "@turf/invariant": { + "version": "6.1.2", + "resolved": "https://registry.npm.taobao.org/@turf/invariant/download/@turf/invariant-6.1.2.tgz", + "integrity": "sha1-YBPtYhn5rC7a2psx4d+lkY6wovc=", + "requires": { + "@turf/helpers": "6.x" + } + }, + "@turf/meta": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/@turf/meta/download/@turf/meta-6.0.2.tgz", + "integrity": "sha1-65KVESbSSmE6wbe5nXM/zCD9MM8=", + "requires": { + "@turf/helpers": "6.x" + } + }, + "@turf/projection": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/@turf/projection/download/@turf/projection-6.0.1.tgz", + "integrity": "sha1-vecK6EQbnO/d8m1xx9t0vD2XkrE=", + "requires": { + "@turf/clone": "6.x", + "@turf/helpers": "6.x", + "@turf/meta": "6.x" + } + }, + "@turf/rhumb-bearing": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/@turf/rhumb-bearing/download/@turf/rhumb-bearing-6.0.1.tgz", + "integrity": "sha1-GCxMIf6VHgl/tGiuEo3CLvYHjz8=", + "requires": { + "@turf/helpers": "6.x", + "@turf/invariant": "6.x" + } + }, + "@turf/rhumb-distance": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/@turf/rhumb-distance/download/@turf/rhumb-distance-6.0.1.tgz", + "integrity": "sha1-rhxcgjtLBPdc1/wkD3+TZH24vdQ=", + "requires": { + "@turf/helpers": "6.x", + "@turf/invariant": "6.x" + } + } + } + }, + "@turf/points-within-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/points-within-polygon/download/@turf/points-within-polygon-5.1.5.tgz", + "integrity": "sha1-K4VaXfOq2lfC7oIKB1SrlJKKIzc=", + "requires": { + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/polygon-tangents": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/polygon-tangents/download/@turf/polygon-tangents-5.1.5.tgz", + "integrity": "sha1-K/AJkUcwJbF44lDcfLmuVAm71lI=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/polygon-to-line": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/polygon-to-line/download/@turf/polygon-to-line-5.1.5.tgz", + "integrity": "sha1-I7tEjYTcTGUZmaxhGjbZHFklA2o=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/polygonize": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/polygonize/download/@turf/polygonize-5.1.5.tgz", + "integrity": "sha1-BJP6EYefOdELmtAs5qI+lC0IqjI=", + "requires": { + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/envelope": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/projection": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/projection/download/@turf/projection-5.1.5.tgz", + "integrity": "sha1-JFF+7rLzaBa6n3EueubWo2jt91c=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/random": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/random/download/@turf/random-5.1.5.tgz", + "integrity": "sha1-sy78k0Vgroulfo67UfJBw5+6Lns=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/rewind": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/rewind/download/@turf/rewind-5.1.5.tgz", + "integrity": "sha1-nqPbSmi3PB/R3RH1djGxQ8/vock=", + "requires": { + "@turf/boolean-clockwise": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/rhumb-bearing": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/rhumb-bearing/download/@turf/rhumb-bearing-5.1.5.tgz", + "integrity": "sha1-rPalAkJ+uMSeGM2mrg7/qwxd3NI=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/rhumb-destination": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/rhumb-destination/download/@turf/rhumb-destination-5.1.5.tgz", + "integrity": "sha1-sbKuuSFUfyrAwamUtqEw+SRjx0I=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/rhumb-distance": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/rhumb-distance/download/@turf/rhumb-distance-5.1.5.tgz", + "integrity": "sha1-GAaFdiX0IlOE2tQT5p85U4/192U=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/sample": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/sample/download/@turf/sample-5.1.5.tgz", + "integrity": "sha1-6ctEikeJzFbuPeLdZ4HiNDQ1tBE=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/sector": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/sector/download/@turf/sector-5.1.5.tgz", + "integrity": "sha1-rCu5TBPt1gNPb9wrZwCBNdIPXgc=", + "requires": { + "@turf/circle": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/line-arc": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/shortest-path": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/shortest-path/download/@turf/shortest-path-5.1.5.tgz", + "integrity": "sha1-hUroCW9rw+EwD6ynfz6PZ9j5Nas=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/bbox-polygon": "^5.1.5", + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/clean-coords": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/transform-scale": "^5.1.5" + } + }, + "@turf/simplify": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/simplify/download/@turf/simplify-5.1.5.tgz", + "integrity": "sha1-Csjyei60IYGD7dmZjDJ1q+QIuSY=", + "requires": { + "@turf/clean-coords": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/square": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/square/download/@turf/square-5.1.5.tgz", + "integrity": "sha1-qnsh5gM8ySUsOlvW89iNq9b+0YA=", + "requires": { + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5" + } + }, + "@turf/square-grid": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/square-grid/download/@turf/square-grid-5.1.5.tgz", + "integrity": "sha1-G9X3uesU8LYLwjH+/nNR0aMvGlE=", + "requires": { + "@turf/boolean-contains": "^5.1.5", + "@turf/boolean-overlap": "^5.1.5", + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/intersect": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/standard-deviational-ellipse": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/standard-deviational-ellipse/download/@turf/standard-deviational-ellipse-5.1.5.tgz", + "integrity": "sha1-hc0oO14ayljyG9ZkEuQUtW2FIyQ=", + "requires": { + "@turf/center-mean": "^5.1.5", + "@turf/ellipse": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/points-within-polygon": "^5.1.5" + } + }, + "@turf/tag": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/tag/download/@turf/tag-5.1.5.tgz", + "integrity": "sha1-0e4aUIjs/UoUEQGcmCOczypJfSA=", + "requires": { + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/tesselate": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/tesselate/download/@turf/tesselate-5.1.5.tgz", + "integrity": "sha1-MqWU6cIaAEIKn5DSxD3z4RZgYc0=", + "requires": { + "@turf/helpers": "^5.1.5", + "earcut": "^2.0.0" + } + }, + "@turf/tin": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/tin/download/@turf/tin-5.1.5.tgz", + "integrity": "sha1-KCI+r8X76a6azKgc3P6l0UJMkX0=", + "requires": { + "@turf/helpers": "^5.1.5" + } + }, + "@turf/transform-rotate": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/transform-rotate/download/@turf/transform-rotate-5.1.5.tgz", + "integrity": "sha1-0Jbt2eMA/jFQadVNjkWMQJIh7fs=", + "requires": { + "@turf/centroid": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/rhumb-bearing": "^5.1.5", + "@turf/rhumb-destination": "^5.1.5", + "@turf/rhumb-distance": "^5.1.5" + } + }, + "@turf/transform-scale": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/transform-scale/download/@turf/transform-scale-5.1.5.tgz", + "integrity": "sha1-cP064BhWz3uunxWtVhzf6PiQAbk=", + "requires": { + "@turf/bbox": "^5.1.5", + "@turf/center": "^5.1.5", + "@turf/centroid": "^5.1.5", + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/rhumb-bearing": "^5.1.5", + "@turf/rhumb-destination": "^5.1.5", + "@turf/rhumb-distance": "^5.1.5" + } + }, + "@turf/transform-translate": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/transform-translate/download/@turf/transform-translate-5.1.5.tgz", + "integrity": "sha1-Uwolf7Hccmja3Ks05nkB6yo97GM=", + "requires": { + "@turf/clone": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "@turf/meta": "^5.1.5", + "@turf/rhumb-destination": "^5.1.5" + } + }, + "@turf/triangle-grid": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/triangle-grid/download/@turf/triangle-grid-5.1.5.tgz", + "integrity": "sha1-ezZ2IQhVTBTyjK/zxIsc/ILI3IE=", + "requires": { + "@turf/distance": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/intersect": "^5.1.5", + "@turf/invariant": "^5.1.5" + } + }, + "@turf/truncate": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/truncate/download/@turf/truncate-5.1.5.tgz", + "integrity": "sha1-nu37Oxi6gfLJjT6tCUMcyhiErYk=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5" + } + }, + "@turf/turf": { + "version": "5.1.6", + "resolved": "https://registry.npm.taobao.org/@turf/turf/download/@turf/turf-5.1.6.tgz", + "integrity": "sha1-wxIlkoh+0jS3VGi4qMRb+Ib7+PY=", + "requires": { + "@turf/along": "5.1.x", + "@turf/area": "5.1.x", + "@turf/bbox": "5.1.x", + "@turf/bbox-clip": "5.1.x", + "@turf/bbox-polygon": "5.1.x", + "@turf/bearing": "5.1.x", + "@turf/bezier-spline": "5.1.x", + "@turf/boolean-clockwise": "5.1.x", + "@turf/boolean-contains": "5.1.x", + "@turf/boolean-crosses": "5.1.x", + "@turf/boolean-disjoint": "5.1.x", + "@turf/boolean-equal": "5.1.x", + "@turf/boolean-overlap": "5.1.x", + "@turf/boolean-parallel": "5.1.x", + "@turf/boolean-point-in-polygon": "5.1.x", + "@turf/boolean-point-on-line": "5.1.x", + "@turf/boolean-within": "5.1.x", + "@turf/buffer": "5.1.x", + "@turf/center": "5.1.x", + "@turf/center-mean": "5.1.x", + "@turf/center-median": "5.1.x", + "@turf/center-of-mass": "5.1.x", + "@turf/centroid": "5.1.x", + "@turf/circle": "5.1.x", + "@turf/clean-coords": "5.1.x", + "@turf/clone": "5.1.x", + "@turf/clusters": "5.1.x", + "@turf/clusters-dbscan": "5.1.x", + "@turf/clusters-kmeans": "5.1.x", + "@turf/collect": "5.1.x", + "@turf/combine": "5.1.x", + "@turf/concave": "5.1.x", + "@turf/convex": "5.1.x", + "@turf/destination": "5.1.x", + "@turf/difference": "5.1.x", + "@turf/dissolve": "5.1.x", + "@turf/distance": "5.1.x", + "@turf/ellipse": "5.1.x", + "@turf/envelope": "5.1.x", + "@turf/explode": "5.1.x", + "@turf/flatten": "5.1.x", + "@turf/flip": "5.1.x", + "@turf/great-circle": "5.1.x", + "@turf/helpers": "5.1.x", + "@turf/hex-grid": "5.1.x", + "@turf/interpolate": "5.1.x", + "@turf/intersect": "5.1.x", + "@turf/invariant": "5.1.x", + "@turf/isobands": "5.1.x", + "@turf/isolines": "5.1.x", + "@turf/kinks": "5.1.x", + "@turf/length": "5.1.x", + "@turf/line-arc": "5.1.x", + "@turf/line-chunk": "5.1.x", + "@turf/line-intersect": "5.1.x", + "@turf/line-offset": "5.1.x", + "@turf/line-overlap": "5.1.x", + "@turf/line-segment": "5.1.x", + "@turf/line-slice": "5.1.x", + "@turf/line-slice-along": "5.1.x", + "@turf/line-split": "5.1.x", + "@turf/line-to-polygon": "5.1.x", + "@turf/mask": "5.1.x", + "@turf/meta": "5.1.x", + "@turf/midpoint": "5.1.x", + "@turf/nearest-point": "5.1.x", + "@turf/nearest-point-on-line": "5.1.x", + "@turf/nearest-point-to-line": "5.1.x", + "@turf/planepoint": "5.1.x", + "@turf/point-grid": "5.1.x", + "@turf/point-on-feature": "5.1.x", + "@turf/point-to-line-distance": "5.1.x", + "@turf/points-within-polygon": "5.1.x", + "@turf/polygon-tangents": "5.1.x", + "@turf/polygon-to-line": "5.1.x", + "@turf/polygonize": "5.1.x", + "@turf/projection": "5.1.x", + "@turf/random": "5.1.x", + "@turf/rewind": "5.1.x", + "@turf/rhumb-bearing": "5.1.x", + "@turf/rhumb-destination": "5.1.x", + "@turf/rhumb-distance": "5.1.x", + "@turf/sample": "5.1.x", + "@turf/sector": "5.1.x", + "@turf/shortest-path": "5.1.x", + "@turf/simplify": "5.1.x", + "@turf/square": "5.1.x", + "@turf/square-grid": "5.1.x", + "@turf/standard-deviational-ellipse": "5.1.x", + "@turf/tag": "5.1.x", + "@turf/tesselate": "5.1.x", + "@turf/tin": "5.1.x", + "@turf/transform-rotate": "5.1.x", + "@turf/transform-scale": "5.1.x", + "@turf/transform-translate": "5.1.x", + "@turf/triangle-grid": "5.1.x", + "@turf/truncate": "5.1.x", + "@turf/union": "5.1.x", + "@turf/unkink-polygon": "5.1.x", + "@turf/voronoi": "5.1.x" + } + }, + "@turf/union": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/union/download/@turf/union-5.1.5.tgz", + "integrity": "sha1-UyhbYJQEf8WNlqrA6pCGXsNNRUs=", + "requires": { + "@turf/helpers": "^5.1.5", + "turf-jsts": "*" + } + }, + "@turf/unkink-polygon": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/unkink-polygon/download/@turf/unkink-polygon-5.1.5.tgz", + "integrity": "sha1-ewGEfFD7V0riV54Z5Ey6hSbSE8M=", + "requires": { + "@turf/area": "^5.1.5", + "@turf/boolean-point-in-polygon": "^5.1.5", + "@turf/helpers": "^5.1.5", + "@turf/meta": "^5.1.5", + "rbush": "^2.0.1" + }, + "dependencies": { + "quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/quickselect/download/quickselect-1.1.1.tgz", + "integrity": "sha1-hS5BLOQY8jetW2YNcM/6xkeulMI=" + }, + "rbush": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/rbush/download/rbush-2.0.2.tgz", + "integrity": "sha1-u2AFwnMbe6HVqaA1dykn0WphRgU=", + "requires": { + "quickselect": "^1.0.1" + } + } + } + }, + "@turf/voronoi": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/@turf/voronoi/download/@turf/voronoi-5.1.5.tgz", + "integrity": "sha1-6FbpQG3MLyXWbdyJhYTifC6/ymY=", + "requires": { + "@turf/helpers": "^5.1.5", + "@turf/invariant": "^5.1.5", + "d3-voronoi": "1.1.2" + } + }, + "@types/bytebuffer": { + "version": "5.0.40", + "resolved": "https://registry.npm.taobao.org/@types/bytebuffer/download/@types/bytebuffer-5.0.40.tgz", + "integrity": "sha1-1vqsQNz7Cc2FbNxMAdNpC6U20+4=", + "requires": { + "@types/long": "*", + "@types/node": "*" + } + }, + "@types/cesium": { + "version": "1.65.3", + "resolved": "https://registry.npm.taobao.org/@types/cesium/download/@types/cesium-1.65.3.tgz", + "integrity": "sha1-vG0xrx67i8IAIsKtXHqnDIaNp5I=" + }, + "@types/estree": { + "version": "0.0.42", + "resolved": "https://registry.npm.taobao.org/@types/estree/download/@types/estree-0.0.42.tgz", + "integrity": "sha1-jQwfSAM57+2z5GBw4i3WPgQw3RE=", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz?cache=0&sync_timestamp=1572461527196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fevents%2Fdownload%2F%40types%2Fevents-3.0.0.tgz", + "integrity": "sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz", + "integrity": "sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU=", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.3.16", + "resolved": "https://registry.npm.taobao.org/@types/jasmine/download/@types/jasmine-3.3.16.tgz", + "integrity": "sha1-fIQHT11/hNqaFPgWzPua602hPyc=", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npm.taobao.org/@types/jasminewd2/download/@types/jasminewd2-2.0.8.tgz", + "integrity": "sha1-Z6/lCY1e8jhgc6e3OEtpqEDf6Ts=", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/long": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/@types/long/download/@types/long-4.0.1.tgz", + "integrity": "sha1-RZxl+hhn2v5qjzIsTFFpVmPMVek=" + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz?cache=0&sync_timestamp=1572464707542&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.3.tgz", + "integrity": "sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0=", + "dev": true + }, + "@types/node": { + "version": "12.12.26", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.12.26.tgz?cache=0&sync_timestamp=1580843161457&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.12.26.tgz", + "integrity": "sha1-IT4VO6usDtFp1EptkZUB5o9Z3qk=" + }, + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.16", + "resolved": "https://registry.npm.taobao.org/@types/selenium-webdriver/download/@types/selenium-webdriver-3.0.16.tgz?cache=0&sync_timestamp=1576496118589&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fselenium-webdriver%2Fdownload%2F%40types%2Fselenium-webdriver-3.0.16.tgz", + "integrity": "sha1-UKR1X44z7azZxAZynpuTDSRRkCo=", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz", + "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=", + "dev": true + }, + "@types/swiper": { + "version": "5.3.0", + "resolved": "https://registry.npm.taobao.org/@types/swiper/download/@types/swiper-5.3.0.tgz?cache=0&sync_timestamp=1586226993478&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fswiper%2Fdownload%2F%40types%2Fswiper-5.3.0.tgz", + "integrity": "sha1-Ga2dBDiv6krLcZAT2pgybRcQziA=" + }, + "@types/webpack-sources": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/@types/webpack-sources/download/@types/webpack-sources-0.1.6.tgz", + "integrity": "sha1-PSHfwuwK0Md3WOeTYkJqm6fXy8s=", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz", + "integrity": "sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k=", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE=", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz", + "integrity": "sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc=", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz", + "integrity": "sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ=", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz", + "integrity": "sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4=", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz", + "integrity": "sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI=", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz", + "integrity": "sha1-3vS5knsBAdyMu9jR7bW3ucguskU=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha1-U3p1Dt31weky83RCBlUckcG5PmE=", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz", + "integrity": "sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz", + "integrity": "sha1-cSMp2+8kDza/V70ve4+5v0FUQh4=", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz", + "integrity": "sha1-BE7es06mefPgTNT9mCTV41dnrhA=", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz", + "integrity": "sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw=", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz", + "integrity": "sha1-li2hKqWswcExyBxCMpkcgs5W4Bo=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz", + "integrity": "sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz", + "integrity": "sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz", + "integrity": "sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz", + "integrity": "sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz", + "integrity": "sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz", + "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/@yarnpkg/lockfile/download/@yarnpkg/lockfile-1.1.0.tgz", + "integrity": "sha1-53qX+9NFt22DJF7c0X05OxtB+zE=", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.5.tgz", + "integrity": "sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", + "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.0.tgz?cache=0&sync_timestamp=1574807785634&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.1.0.tgz", + "integrity": "sha1-lJ028sKSU12mAig1hsJHfFfrLWw=", + "dev": true + }, + "adm-zip": { + "version": "0.4.13", + "resolved": "https://registry.npm.taobao.org/adm-zip/download/adm-zip-0.4.13.tgz", + "integrity": "sha1-WX4vjMNnIVHhMH0+lc3bx1ZyMUo=", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npm.taobao.org/after/download/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/agent-base/download/agent-base-4.3.0.tgz", + "integrity": "sha1-gWXwHENgCbzK0LHRIvBe13Dvxu4=", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npm.taobao.org/agentkeepalive/download/agentkeepalive-3.5.2.tgz", + "integrity": "sha1-oROSTdP6JKC8O3gQjEUMKr7gD2c=", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.0.1.tgz?cache=0&sync_timestamp=1570168672550&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faggregate-error%2Fdownload%2Faggregate-error-3.0.1.tgz", + "integrity": "sha1-2y/nJG5Tb0DZtUQqOeEX191qJOA=", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz", + "integrity": "sha1-086gTWsBeyiUrWkED+yLYj60vVI=", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz", + "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "angular-calendar": { + "version": "0.28.2", + "resolved": "https://registry.npm.taobao.org/angular-calendar/download/angular-calendar-0.28.2.tgz", + "integrity": "sha1-x/xtKUZcJc1vGxrRRN7FK3tigpM=", + "requires": { + "angular-draggable-droppable": "^4.3.8", + "angular-resizable-element": "^3.2.6", + "calendar-utils": "^0.7.0", + "positioning": "^2.0.0", + "tslib": "^1.9.0" + } + }, + "angular-draggable-droppable": { + "version": "4.3.8", + "resolved": "https://registry.npm.taobao.org/angular-draggable-droppable/download/angular-draggable-droppable-4.3.8.tgz", + "integrity": "sha1-+xOjWAFUeBUr0GbHCZ3QDTIBmB8=", + "requires": { + "dom-autoscroller": "^2.3.4", + "tslib": "^1.9.0" + } + }, + "angular-resizable-element": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/angular-resizable-element/download/angular-resizable-element-3.3.0.tgz", + "integrity": "sha1-eSf3LtK3gpYeGDe5palWaSStIBM=", + "requires": { + "tslib": "^1.9.0" + } + }, + "animation-frame-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/animation-frame-polyfill/download/animation-frame-polyfill-1.0.1.tgz", + "integrity": "sha1-X1rZk6eHlL0Xas3lttzmKGdBDJ0=" + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz", + "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.0.tgz", + "integrity": "sha1-pM4rM9ayFLeVDYWVwhLxKsnMVp0=", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz", + "integrity": "sha1-xV7PAhheJGklk5kxDBc84xIzsUI=", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/app-root-path/download/app-root-path-2.2.1.tgz?cache=0&sync_timestamp=1572535971842&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapp-root-path%2Fdownload%2Fapp-root-path-2.2.1.tgz", + "integrity": "sha1-0N9KaC7kCCc1g9Q/b3npiSYkvJo=", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/append-transform/download/append-transform-1.0.0.tgz?cache=0&sync_timestamp=1568135722905&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fappend-transform%2Fdownload%2Fappend-transform-1.0.0.tgz", + "integrity": "sha1-BGpSrlgqIovXL1is++KWfGeHWas=", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz", + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/aria-query/download/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=", + "dev": true + }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/array-from/download/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/arraybuffer.slice/download/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farrify%2Fdownload%2Farrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "ascli": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ascli/download/ascli-1.0.1.tgz", + "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", + "requires": { + "colour": "~0.7.1", + "optjs": "~3.2.2" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz", + "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npm.taobao.org/ast-types-flow/download/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-2.6.3.tgz", + "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz", + "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz?cache=0&sync_timestamp=1574271725892&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-limiter%2Fdownload%2Fasync-limiter-1.0.1.tgz", + "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=", + "dev": true + }, + "autoprefixer": { + "version": "9.7.1", + "resolved": "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.7.1.tgz", + "integrity": "sha1-n/xExV9cqJJT2btxhs77Ae9XdH8=", + "dev": true, + "requires": { + "browserslist": "^4.7.2", + "caniuse-lite": "^1.0.30001006", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.21", + "postcss-value-parser": "^4.0.2" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.9.0.tgz?cache=0&sync_timestamp=1574808901079&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.9.0.tgz", + "integrity": "sha1-JDkOatYThrCnRyZXVNKhchnehiw=", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/axobject-query/download/axobject-query-2.0.2.tgz", + "integrity": "sha1-6hh6vluQArN3+SXYv30cVhrfOPk=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282918610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz", + "integrity": "sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs=", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha1-8A9Qe9qjw+P/bn5emNkKesq5b38=", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz", + "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/base64id/download/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/better-assert/download/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.0.0.tgz", + "integrity": "sha1-I8DfFPaogHf1+YbA0WfsA8PVU3w=", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz", + "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npm.taobao.org/blob/download/blob-0.0.5.tgz", + "integrity": "sha1-1oDu7yX4zZGtUz9bAe7UjmTK9oM=", + "dev": true + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/blocking-proxy/download/blocking-proxy-1.0.1.tgz", + "integrity": "sha1-gdb9H+E6TA1pV99/kbdemNrEDLI=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz", + "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz", + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", + "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz", + "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.8.3", + "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.8.3.tgz?cache=0&sync_timestamp=1580344947770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.8.3.tgz", + "integrity": "sha1-ZYAvzXcXfIeOAV8OMYnyxPYnukQ=", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001017", + "electron-to-chromium": "^1.3.322", + "node-releases": "^1.1.44" + } + }, + "browserstack": { + "version": "1.5.3", + "resolved": "https://registry.npm.taobao.org/browserstack/download/browserstack-1.5.3.tgz", + "integrity": "sha1-k6tIeZoS75nb0HTdWVQQ3bGWp6w=", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "bson-objectid": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/bson-objectid/download/bson-objectid-1.3.1.tgz", + "integrity": "sha1-EeTOTDQZFh/TiBE3gbtiwd+840s=" + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&sync_timestamp=1573257749794&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz", + "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz", + "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz", + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/builtins/download/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytebuffer": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/bytebuffer/download/bytebuffer-5.0.1.tgz", + "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", + "requires": { + "long": "~3" + }, + "dependencies": { + "long": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/long/download/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-13.0.1.tgz?cache=0&sync_timestamp=1580176348786&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-13.0.1.tgz", + "integrity": "sha1-qAAMIWlwiQgvhSh6GuxuOCAkpxw=", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "calendar-utils": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/calendar-utils/download/calendar-utils-0.7.0.tgz", + "integrity": "sha1-1X5X7v6ExNl/LO2FwPxfW/eyF2g=" + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz?cache=0&sync_timestamp=1562668977312&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaller-callsite%2Fdownload%2Fcaller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/callsite/download/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz", + "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001020", + "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001020.tgz", + "integrity": "sha1-PwTBc3UA/9p4vpvrC1weIHDhWSY=", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/canonical-path/download/canonical-path-1.0.0.tgz", + "integrity": "sha1-/LRwwjlY3vhQgYVr56hukE8YDR0=", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "cesium": { + "version": "1.66.0", + "resolved": "https://registry.npm.taobao.org/cesium/download/cesium-1.66.0.tgz", + "integrity": "sha1-rIqYWDKXQOsiMEk2B26m+Ob6rYI=", + "requires": { + "esm": "^3.2.25" + } + }, + "cesium-typings": { + "version": "1.50.2", + "resolved": "https://registry.npm.taobao.org/cesium-typings/download/cesium-typings-1.50.2.tgz", + "integrity": "sha1-/Osooxu2SGDHIRFTP/Df/d3S8Zc=" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1573282918610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", + "dev": true + }, + "chokidar": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-3.3.1.tgz", + "integrity": "sha1-yE5bPRjZpNd1WP70ZrG/FrvrNFA=", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.0.tgz?cache=0&sync_timestamp=1569136652060&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob-parent%2Fdownload%2Fglob-parent-5.1.0.tgz", + "integrity": "sha1-X0wdHnSNMM1zrSlEs1d6gbCB6MI=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.3.tgz", + "integrity": "sha1-Qtg31SOWiNVfMDADpQgjD6ZycUI=", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz", + "integrity": "sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ=", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/circular-dependency-plugin/download/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha1-4J28LdPikoRCQD4tRbQc6ga8CpM=", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/clean-stack/download/clean-stack-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclean-stack%2Fdownload%2Fclean-stack-2.2.0.tgz", + "integrity": "sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz", + "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz", + "integrity": "sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c=", + "dev": true + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz?cache=0&sync_timestamp=1573943458671&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz", + "integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz", + "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz", + "integrity": "sha1-aQoUdbhPKohP0HzXl8APXzE1bqg=", + "dev": true + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "codelyzer": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/codelyzer/download/codelyzer-5.2.1.tgz", + "integrity": "sha1-RP1DHhKACfOMdhgowz66y6lUnTI=", + "dev": true, + "requires": { + "app-root-path": "^2.2.1", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.1.2.tgz", + "integrity": "sha1-2hdlJiv4wPVxdJ8q1sJjACB65nM=", + "dev": true + } + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor%2Fdownload%2Fcolor-3.1.2.tgz", + "integrity": "sha1-aBSOf4XUGtdknF+oyBBvCY0inhA=", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz", + "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/colors/download/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "colour": { + "version": "0.7.1", + "resolved": "https://registry.npm.taobao.org/colour/download/colour-0.7.1.tgz", + "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npm.taobao.org/commander/download/commander-2.20.3.tgz", + "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/compare-versions/download/compare-versions-3.5.1.tgz?cache=0&sync_timestamp=1564604665649&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcompare-versions%2Fdownload%2Fcompare-versions-3.5.1.tgz", + "integrity": "sha1-JuH1zw1Ip37O1QRrn2e2thB1o5M=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/component-bind/download/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz", + "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npm.taobao.org/component-inherit/download/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz", + "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + }, + "dependencies": { + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz", + "integrity": "sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg=", + "dev": true + } + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz", + "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concaveman": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/concaveman/download/concaveman-1.1.1.tgz", + "integrity": "sha1-bCSCWAslI874L8K+wAoEFebmgWI=", + "requires": { + "monotone-convex-hull-2d": "^1.0.1", + "point-in-polygon": "^1.0.1", + "rbush": "^2.0.1", + "robust-orientation": "^1.1.3", + "tinyqueue": "^1.1.0" + }, + "dependencies": { + "quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/quickselect/download/quickselect-1.1.1.tgz", + "integrity": "sha1-hS5BLOQY8jetW2YNcM/6xkeulMI=" + }, + "rbush": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/rbush/download/rbush-2.0.2.tgz", + "integrity": "sha1-u2AFwnMbe6HVqaA1dykn0WphRgU=", + "requires": { + "quickselect": "^1.0.1" + } + } + } + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npm.taobao.org/connect/download/connect-3.7.0.tgz", + "integrity": "sha1-XUk0iRDKpeB6AYALAw0MNfIEhPg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz?cache=0&sync_timestamp=1572252287978&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconsole-browserify%2Fdownload%2Fconsole-browserify-1.2.0.tgz", + "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", + "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz?cache=0&sync_timestamp=1573003862096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fconvert-source-map%2Fdownload%2Fconvert-source-map-1.7.0.tgz", + "integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz", + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-5.1.1.tgz?cache=0&sync_timestamp=1576145009360&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.1.tgz", + "integrity": "sha1-VIGgPeoRI9iKmIxv+LeCRyFPC4g=", + "dev": true, + "requires": { + "cacache": "^12.0.3", + "find-cache-dir": "^2.1.0", + "glob-parent": "^3.1.0", + "globby": "^7.1.1", + "is-glob": "^4.0.1", + "loader-utils": "^1.2.3", + "minimatch": "^3.0.4", + "normalize-path": "^3.0.0", + "p-limit": "^2.2.1", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz", + "integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz?cache=0&sync_timestamp=1571961490394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "core-js": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-3.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.6.0.tgz", + "integrity": "sha1-K4VORR3hln0eKYlgJc3BOiUY2eo=", + "dev": true + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npm.taobao.org/core-js-compat/download/core-js-compat-3.6.4.tgz", + "integrity": "sha1-k4R2Vp67bNqA0zm88Zn65PFv/xc=", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz", + "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz", + "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "coverage-istanbul-loader": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/coverage-istanbul-loader/download/coverage-istanbul-loader-2.0.3.tgz", + "integrity": "sha1-h9QvA/oP0/qHQ+x2lF2dZ/EFcio=", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.0", + "loader-utils": "^1.2.3", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.6.1" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.4.tgz", + "integrity": "sha1-on779uTnhonZGHLuPM+lfXvdD1M=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-point-cb": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/create-point-cb/download/create-point-cb-1.2.0.tgz", + "integrity": "sha1-G85H/E/AGFXuEhONZ2sMsqfLznE=", + "requires": { + "type-func": "^1.0.1" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz?cache=0&sync_timestamp=1570440024132&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcross-spawn%2Fdownload%2Fcross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/css/download/css-2.2.4.tgz", + "integrity": "sha1-xkZ1XHOXHyu6amAeLPL9cbEpiSk=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz?cache=0&sync_timestamp=1581171003780&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-declaration-sorter%2Fdownload%2Fcss-declaration-sorter-4.0.1.tgz", + "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/css-parse/download/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/css-select/download/css-select-2.1.0.tgz", + "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npm.taobao.org/css-selector-tokenizer/download/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-1.0.0.tgz?cache=0&sync_timestamp=1568402850982&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz?cache=0&sync_timestamp=1575583542748&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-tree%2Fdownload%2Fcss-tree-1.0.0-alpha.37.tgz", + "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/css-what/download/css-what-3.2.1.tgz", + "integrity": "sha1-9KjxJCEGRiG0VnVeNKA6LCLfXaE=", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/cssauron/download/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssnano%2Fdownload%2Fcssnano-4.1.10.tgz", + "integrity": "sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y=", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=", + "dev": true + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.0.2.tgz", + "integrity": "sha1-5fgas6Vrju+38Aks5yeTKfRU3j0=", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/custom-event/download/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/d3-array/download/d3-array-1.2.4.tgz", + "integrity": "sha1-Y1zk1e6nWfb2BYY9vPww7cc39x8=" + }, + "d3-geo": { + "version": "1.7.1", + "resolved": "https://registry.npm.taobao.org/d3-geo/download/d3-geo-1.7.1.tgz", + "integrity": "sha1-RLvHohix/YWfPY/XxEPKg2Vpzpk=", + "requires": { + "d3-array": "1" + } + }, + "d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/d3-voronoi/download/d3-voronoi-1.1.2.tgz", + "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw=" + }, + "damerau-levenshtein": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/damerau-levenshtein/download/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha1-eAz3FE6y6NvRw7uDrjEQDMwxpBQ=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-fns": { + "version": "2.9.0", + "resolved": "https://registry.npm.taobao.org/date-fns/download/date-fns-2.9.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-2.9.0.tgz", + "integrity": "sha1-0LF1pcN+1fF7l+InK7wfpa7Gd9I=" + }, + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/date-format/download/date-format-2.1.0.tgz?cache=0&sync_timestamp=1572559173297&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-format%2Fdownload%2Fdate-format-2.1.0.tgz", + "integrity": "sha1-MdW16iEc9f12TNOLr50DPffhJc8=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/debuglog/download/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.1.1.tgz", + "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz", + "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/default-require-extensions/download/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz", + "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz?cache=0&sync_timestamp=1563032875018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-2.1.0.tgz", + "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "density-clustering": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/density-clustering/download/density-clustering-1.3.0.tgz", + "integrity": "sha1-3J9ZyPCrl+FiSsZJMP0xlIF9ysU=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npm.taobao.org/dependency-graph/download/dependency-graph-0.7.2.tgz", + "integrity": "sha1-kdud5utyaZIJ2IrqTB/VIhysHEk=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz", + "integrity": "sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/dezalgo/download/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/di/download/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/diff/download/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-autoscroller": { + "version": "2.3.4", + "resolved": "https://registry.npm.taobao.org/dom-autoscroller/download/dom-autoscroller-2.3.4.tgz", + "integrity": "sha1-HtJcveK9878+t2KTcImyDs7xkL0=", + "requires": { + "animation-frame-polyfill": "^1.0.0", + "create-point-cb": "^1.0.0", + "dom-mousemove-dispatcher": "^1.0.1", + "dom-plane": "^1.0.1", + "dom-set": "^1.0.1", + "type-func": "^1.0.1" + } + }, + "dom-mousemove-dispatcher": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/dom-mousemove-dispatcher/download/dom-mousemove-dispatcher-1.0.1.tgz", + "integrity": "sha1-okpt35Oye7NpT3IIdUalf8fpFA8=" + }, + "dom-plane": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/dom-plane/download/dom-plane-1.0.2.tgz", + "integrity": "sha1-+MheaXxYfxR+j8L6wd4HjB/kFyw=", + "requires": { + "create-point-cb": "^1.0.0" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/dom-serialize/download/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.2.tgz", + "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz", + "integrity": "sha1-H4vf6R9aeAYydOgDtL3O326U+U0=", + "dev": true + } + } + }, + "dom-set": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/dom-set/download/dom-set-1.1.1.tgz", + "integrity": "sha1-XCxhDuSDm1IO1fmN28vjFMD6lUo=", + "requires": { + "array-from": "^2.1.1", + "is-array": "^1.0.1", + "iselement": "^1.1.4" + } + }, + "dom-storage": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/dom-storage/download/dom-storage-2.1.0.tgz", + "integrity": "sha1-APuGi8kgE1fqJDx7z9MwTB406jk=" + }, + "dom7": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/dom7/download/dom7-2.1.3.tgz", + "integrity": "sha1-pzb5w7+8TKA5qBzQlfl9HX894Zw=", + "requires": { + "ssr-window": "^1.0.1" + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz", + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz", + "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz", + "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz", + "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz", + "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "e-ngx-cesium": { + "version": "6.3.2", + "resolved": "https://registry.npm.taobao.org/e-ngx-cesium/download/e-ngx-cesium-6.3.2.tgz", + "integrity": "sha1-IwpQcI56SjWDuIqabN65MQYMUKQ=", + "requires": { + "@turf/turf": "^5.1.5", + "cesium": "^1.50.0", + "cesium-typings": "^1.50.0", + "font-awesome": "^4.7.0", + "lodash": "^4.17.4" + } + }, + "earcut": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/earcut/download/earcut-2.2.2.tgz", + "integrity": "sha1-QbC8NfY+D+gNp83f8oUR5+LoDRE=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "echarts": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.6.0.tgz?cache=0&sync_timestamp=1577438297540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.6.0.tgz", + "integrity": "sha1-taR6EEbOyTzu75VPnuVHUTQFWOw=", + "requires": { + "zrender": "4.2.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.346", + "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.346.tgz", + "integrity": "sha1-sIvsv71kpCBhGVr9Okkj0EFsXUY=", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz?cache=0&sync_timestamp=1574449990666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.2.tgz", + "integrity": "sha1-BcVnjXFzwEnYykM1UiJKSV0ON2I=", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz", + "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npm.taobao.org/encoding/download/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz?cache=0&sync_timestamp=1569416272686&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fend-of-stream%2Fdownload%2Fend-of-stream-1.4.4.tgz", + "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/engine.io/download/engine.io-3.2.1.tgz?cache=0&sync_timestamp=1568404651035&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fengine.io%2Fdownload%2Fengine.io-3.2.1.tgz", + "integrity": "sha1-tgKBw1SEpw7gNR6g6/+D7IyVIqI=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-3.3.3.tgz", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/engine.io-client/download/engine.io-client-3.2.1.tgz?cache=0&sync_timestamp=1568404651365&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fengine.io-client%2Fdownload%2Fengine.io-client-3.2.1.tgz", + "integrity": "sha1-b1TAR13khxWKGnx30QF4cItq3TY=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-3.3.3.tgz", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/engine.io-parser/download/engine.io-parser-2.1.3.tgz", + "integrity": "sha1-dXq5cPvy37Mse3SwMyFtVznveaY=", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.1.tgz?cache=0&sync_timestamp=1572991320122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.1.1.tgz", + "integrity": "sha1-KTfiuAZs0P584JkKmPDXGjUYn2Y=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/ent/download/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz", + "integrity": "sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q=", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/err-code/download/err-code-1.1.2.tgz?cache=0&sync_timestamp=1563379842735&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ferr-code%2Fdownload%2Ferr-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes-abstract%2Fdownload%2Fes-abstract-1.17.0.tgz", + "integrity": "sha1-9CpRfQA2pVkduyxGNZHci7UDCbE=", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz?cache=0&sync_timestamp=1573280885098&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes-to-primitive%2Fdownload%2Fes-to-primitive-1.2.1.tgz", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.8.tgz", + "integrity": "sha1-TrIVlMlyvEBVPSduUQU5FD21Pgo=", + "dev": true + }, + "es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/es6-promise-polyfill/download/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha1-84kl8jyz4+jObNqP93T867sJDN4=" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/es6-promisify/download/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz", + "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npm.taobao.org/esm/download/esm-3.2.25.tgz", + "integrity": "sha1-NCwYwp1WFXaIulzjH4Qx+7eVzBA=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1565734335990&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz", + "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.0.tgz", + "integrity": "sha1-1lF2FjiH7lnzhtZMgmELaWpKdOs=", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/events/download/events-3.1.0.tgz", + "integrity": "sha1-hCea8bNMt1qoi/X/KR9tC9mzGlk=", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz?cache=0&sync_timestamp=1576776304100&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexeca%2Fdownload%2Fexeca-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz", + "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz", + "integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz", + "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=", + "dev": true + }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.1.0.tgz?cache=0&sync_timestamp=1571715625804&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-3.1.0.tgz", + "integrity": "sha1-SxmN0H2NcVMGQoZK8tRd2eRZxOw=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.2.0.tgz", + "integrity": "sha1-X7Ek0jadcHXXCppavs0S5gqVIV4=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.4.tgz", + "integrity": "sha1-on779uTnhonZGHLuPM+lfXvdD1M=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz", + "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=", + "dev": true, + "optional": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/fileset/download/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz", + "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", + "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.0.0.tgz", + "integrity": "sha1-zUt92Xtxhbfhfb/i1uQRXuPuuPw=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.0.0.tgz", + "integrity": "sha1-G1859rknDtM/nwVMXA+EMEmJ+AE=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "firebase": { + "version": "7.8.1", + "resolved": "https://registry.npm.taobao.org/firebase/download/firebase-7.8.1.tgz", + "integrity": "sha1-HyoXcdiazxqsGjb7NdWHCk2k2VM=", + "requires": { + "@firebase/analytics": "0.2.13", + "@firebase/app": "0.5.4", + "@firebase/app-types": "0.5.1", + "@firebase/auth": "0.13.5", + "@firebase/database": "0.5.21", + "@firebase/firestore": "1.10.1", + "@firebase/functions": "0.4.32", + "@firebase/installations": "0.4.2", + "@firebase/messaging": "0.6.4", + "@firebase/performance": "0.2.32", + "@firebase/polyfill": "0.3.31", + "@firebase/remote-config": "0.1.13", + "@firebase/storage": "0.3.26", + "@firebase/util": "0.2.40" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz", + "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.9.0.tgz", + "integrity": "sha1-jVvNxltxCP4VCGScecEtcy3O208=", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npm.taobao.org/font-awesome/download/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/fs-access/download/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz", + "integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.2.tgz?cache=0&sync_timestamp=1576323112997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.1.2.tgz", + "integrity": "sha1-TAofs0vGjlQ7S4Kp7Dkr+9qECAU=", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz", + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/genfun/download/genfun-5.0.0.tgz", + "integrity": "sha1-ndlxCgaQClxKW/V6yl2k5S/nZTc=", + "dev": true + }, + "geojson-equality": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/geojson-equality/download/geojson-equality-0.1.6.tgz", + "integrity": "sha1-oXE3TvBD5dR5eZWEC65GSOB1LXI=", + "requires": { + "deep-equal": "^1.0.0" + } + }, + "geojson-rbush": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/geojson-rbush/download/geojson-rbush-2.1.0.tgz", + "integrity": "sha1-O9c745H8ELCuaT2bis6iquC4Oo0=", + "requires": { + "@turf/helpers": "*", + "@turf/meta": "*", + "rbush": "*" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=", + "dev": true + }, + "get-closest": { + "version": "0.0.4", + "resolved": "https://registry.npm.taobao.org/get-closest/download/get-closest-0.0.4.tgz", + "integrity": "sha1-JprHdtHmAiqg/Vht1wjop9Miaa8=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.4.tgz", + "integrity": "sha1-qmCKL2xXetNX4a5aXCbZqNGWklU=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz?cache=0&sync_timestamp=1569136652060&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob-parent%2Fdownload%2Fglob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz", + "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz", + "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=", + "dev": true + }, + "grpc": { + "version": "1.24.2", + "resolved": "https://registry.npm.taobao.org/grpc/download/grpc-1.24.2.tgz", + "integrity": "sha1-dtBHv6ewW2B8u+OruZBl3O/gwJk=", + "requires": { + "@types/bytebuffer": "^5.0.40", + "lodash.camelcase": "^4.3.0", + "lodash.clone": "^4.5.0", + "nan": "^2.13.2", + "node-pre-gyp": "^0.14.0", + "protobufjs": "^5.0.3" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, + "chownr": { + "version": "1.1.3", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz?cache=0&sync_timestamp=1573943458671&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.4", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "bundled": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true + } + } + }, + "ms": { + "version": "2.1.2", + "bundled": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true + }, + "npm-packlist": { + "version": "1.4.6", + "bundled": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true + }, + "protobufjs": { + "version": "5.0.3", + "resolved": "https://registry.npm.taobao.org/protobufjs/download/protobufjs-5.0.3.tgz", + "integrity": "sha1-5N/p+2fJCyYw0VhoJJvMSWFGehc=", + "requires": { + "ascli": "~1", + "bytebuffer": "~5", + "glob": "^7.0.5", + "yargs": "^3.10.0" + } + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "sax": { + "version": "1.2.4", + "bundled": true + }, + "semver": { + "version": "5.7.1", + "bundled": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "3.1.1", + "bundled": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-3.32.0.tgz?cache=0&sync_timestamp=1577940861093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "handle-thing": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz", + "integrity": "sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q=", + "dev": true + }, + "handlebars": { + "version": "4.5.3", + "resolved": "https://registry.npm.taobao.org/handlebars/download/handlebars-4.5.3.tgz?cache=0&sync_timestamp=1574061127997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhandlebars%2Fdownload%2Fhandlebars-4.5.3.tgz", + "integrity": "sha1-XPdb2HFPdgVxNRGla+fDSb7LBII=", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz?cache=0&sync_timestamp=1568144153016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-ansi%2Fdownload%2Fhas-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/has-binary2/download/has-binary2-1.0.3.tgz", + "integrity": "sha1-d3asYn8+p3JQz8My2rfd9eT10R0=", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz?cache=0&sync_timestamp=1562592125418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/has-cors/download/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz?cache=0&sync_timestamp=1573950719586&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-symbols%2Fdownload%2Fhas-symbols-1.0.1.tgz", + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz", + "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-3.0.2.tgz?cache=0&sync_timestamp=1570493570687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-3.0.2.tgz", + "integrity": "sha1-i3470RS1m1F4b4ut4POd3IAnWpc=", + "dev": true, + "requires": { + "lru-cache": "^5.1.1" + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=", + "dev": true + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npm.taobao.org/http-cache-semantics/download/http-cache-semantics-3.8.1.tgz", + "integrity": "sha1-ObDhat2bYFvwqe89nar0hDtMrNI=", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz", + "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.4.10", + "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.0.tgz", + "integrity": "sha1-2+VfY+daNH2389mZdPJpKjFKajo=", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/http-proxy-agent/download/http-proxy-agent-2.1.0.tgz", + "integrity": "sha1-5IIb7vWyFCogJr1zkm/lN2McVAU=", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1572997209501&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/https-proxy-agent/download/https-proxy-agent-2.2.4.tgz?cache=0&sync_timestamp=1576014210252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttps-proxy-agent%2Fdownload%2Fhttps-proxy-agent-2.2.4.tgz", + "integrity": "sha1-TuenN6vZJniik9mzShr00NCMeHs=", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/humanize-ms/download/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idb": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/idb/download/idb-3.0.2.tgz", + "integrity": "sha1-yOkSLV3dQPE7YK5mXkhi+LE/o4Q=" + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.3.tgz", + "integrity": "sha1-AX4kRxhL/q3nwjjkrv3R6PlbHjc=", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1569840751769&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npm.taobao.org/immediate/download/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1573664960772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-4.0.0.tgz", + "integrity": "sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/indexof/download/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz", + "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz", + "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=", + "dev": true + }, + "inquirer": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/inquirer/download/inquirer-7.0.0.tgz?cache=0&sync_timestamp=1579939863311&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finquirer%2Fdownload%2Finquirer-7.0.0.tgz", + "integrity": "sha1-nisDLd532h2124BHWLj+o6lwUZo=", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz", + "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz", + "integrity": "sha1-lSGCxGzHssMT0VluYjmSvRY7crU=", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz", + "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + } + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz", + "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz", + "integrity": "sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U=", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz?cache=0&sync_timestamp=1569735515256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.0.4.tgz", + "integrity": "sha1-P6+WbHy6D/Q3+zH2JQCC/PBEjPM=" + }, + "is-array": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-array/download/is-array-1.0.1.tgz", + "integrity": "sha1-6YUMwsyGDDvAl36EzPDdRkWEJ5o=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz", + "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz?cache=0&sync_timestamp=1576778289528&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-callable%2Fdownload%2Fis-callable-1.1.5.tgz", + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=" + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz?cache=0&sync_timestamp=1576729182289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz", + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz", + "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-interactive/download/is-interactive-1.0.0.tgz?cache=0&sync_timestamp=1569142823241&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-interactive%2Fdownload%2Fis-interactive-1.0.0.tgz", + "integrity": "sha1-zqbmrlyHCnsKAAQHC3tYfgJSkS4=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz", + "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz", + "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz", + "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz?cache=0&sync_timestamp=1569835858319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-inside%2Fdownload%2Fis-path-inside-2.1.0.tgz", + "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz", + "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz", + "integrity": "sha1-kyHb0pwhLlypnE+peUxxS8r6L3U=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz", + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=", + "dev": true + }, + "is-wsl": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-2.1.1.tgz", + "integrity": "sha1-ShwVLUKd89RBZpSY4khtNZbrrx0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592125418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/isbinaryfile/download/isbinaryfile-3.0.3.tgz", + "integrity": "sha1-XW3vPt6/boyoyunDAYOoBLX4voA=", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "iselement": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/iselement/download/iselement-1.1.4.tgz", + "integrity": "sha1-flW1Ko68pQp+LoDluNKEDzI1MUY=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "ismobilejs": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/ismobilejs/download/ismobilejs-1.1.1.tgz", + "integrity": "sha1-xWygro5Sskyg8iul7zIVot27qg4=" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/isomorphic-fetch/download/isomorphic-fetch-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisomorphic-fetch%2Fdownload%2Fisomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "^1.0.1", + "whatwg-fetch": ">=0.10.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "2.1.6", + "resolved": "https://registry.npm.taobao.org/istanbul-api/download/istanbul-api-2.1.6.tgz", + "integrity": "sha1-1hcCqdHGatidkuZtQB4WsL2ko18=", + "dev": true, + "requires": { + "async": "^2.6.2", + "compare-versions": "^3.4.0", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha1-Z18KtpUD+tSx2En3NrqsqAM0T0k=", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-3.3.0.tgz?cache=0&sync_timestamp=1577062492583&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-instrument%2Fdownload%2Fistanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha1-pfY9kfC7wMPkee9MXeAnM17G1jA=", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha1-9ZRKN8cLVQsCp4pcOyBVsoDOyOw=", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-hook/download/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha1-yVaV84PU+PYN8fBCUqlVDhW1sTM=", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-4.0.1.tgz?cache=0&sync_timestamp=1580741110293&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-instrument%2Fdownload%2Fistanbul-lib-instrument-4.0.1.tgz", + "integrity": "sha1-YfE6wsls/vsHb+cTEVbMBZB4dOY=", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@babel/parser": "^7.7.5", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha1-WoETzXRtQ8SInro2qxDn1QybTzM=", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha1-Z18KtpUD+tSx2En3NrqsqAM0T0k=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha1-KEmXxIIRdS7EhiU9qX44ed77qMg=", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha1-Z18KtpUD+tSx2En3NrqsqAM0T0k=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.6", + "resolved": "https://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-2.2.6.tgz", + "integrity": "sha1-e08mYNgrKTA6j+YJH4ykvwWNoa8=", + "dev": true, + "requires": { + "handlebars": "^4.1.2" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npm.taobao.org/jasmine/download/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npm.taobao.org/jasmine-core/download/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "3.4.0", + "resolved": "https://registry.npm.taobao.org/jasmine-core/download/jasmine-core-3.4.0.tgz", + "integrity": "sha1-KnRhjpZgJlMMNRjwPp+EXSZHPOM=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/jasmine-spec-reporter/download/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha1-HWMq7ANBZwrTJPkrqEtLMrNeniI=", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/jasminewd2/download/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-24.9.0.tgz", + "integrity": "sha1-Xb/bWy0yLphWeJgjipaXvM5ns+U=", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz", + "integrity": "sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", + "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/jsonparse/download/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/jszip/download/jszip-3.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjszip%2Fdownload%2Fjszip-3.2.2.tgz", + "integrity": "sha1-sUOBbffhBqlZepTHdJM4WtylvR0=", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/karma/download/karma-4.1.0.tgz", + "integrity": "sha1-0HOHyXQ6V1tA+vc+ij61Qhwhk+E=", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npm.taobao.org/core-js/download/core-js-2.6.11.tgz?cache=0&sync_timestamp=1577253942551&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.11.tgz", + "integrity": "sha1-OIMUafmSK97Y7iHJ3EaYXgOZMIw=", + "dev": true + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.11.tgz?cache=0&sync_timestamp=1576323112997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.11.tgz", + "integrity": "sha1-Z79X9HWPAu3oj7KhcS/vTRU1i+M=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz", + "integrity": "sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U=", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/karma-chrome-launcher/download/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.6", + "resolved": "https://registry.npm.taobao.org/karma-coverage-istanbul-reporter/download/karma-coverage-istanbul-reporter-2.0.6.tgz", + "integrity": "sha1-e26ciHgUR7uHqmrCS/dLk+VYrcM=", + "dev": true, + "requires": { + "istanbul-api": "^2.1.6", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/karma-jasmine/download/karma-jasmine-2.0.1.tgz", + "integrity": "sha1-JuPjHy+vJy3YDrsOGJiRTMOhl2M=", + "dev": true, + "requires": { + "jasmine-core": "^3.3" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/karma-jasmine-html-reporter/download/karma-jasmine-html-reporter-1.5.1.tgz?cache=0&sync_timestamp=1577250900227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkarma-jasmine-html-reporter%2Fdownload%2Fkarma-jasmine-html-reporter-1.5.1.tgz", + "integrity": "sha1-D60tKsQWvARyQxiq0puJvYb3v7w=", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/karma-source-map-support/download/karma-source-map-support-1.4.0.tgz", + "integrity": "sha1-WFJs7M9+hzDlbv/Zek3o1xKsDWs=", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "less": { + "version": "3.10.3", + "resolved": "https://registry.npm.taobao.org/less/download/less-3.10.3.tgz", + "integrity": "sha1-QXoJddXu7MUs/0vPo8CdNXgeZ5I=", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/less-loader/download/less-loader-5.0.0.tgz", + "integrity": "sha1-SY3eOmxsT4h0WO6e0/CGoSrRtGY=", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + } + }, + "license-webpack-plugin": { + "version": "2.1.3", + "resolved": "https://registry.npm.taobao.org/license-webpack-plugin/download/license-webpack-plugin-2.1.3.tgz?cache=0&sync_timestamp=1571015436334&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flicense-webpack-plugin%2Fdownload%2Flicense-webpack-plugin-2.1.3.tgz", + "integrity": "sha1-ZW+mqLLnEe41wnrI4WWahyQO9/M=", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/lie/download/lie-3.3.0.tgz", + "integrity": "sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lineclip": { + "version": "1.1.5", + "resolved": "https://registry.npm.taobao.org/lineclip/download/lineclip-1.1.5.tgz", + "integrity": "sha1-K/JgZ9lDVP6r+R5CdoI221YW/RM=" + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz?cache=0&sync_timestamp=1574712695617&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz", + "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz", + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/lodash.camelcase/download/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.clone/download/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.clonedeep/download/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-3.0.0.tgz", + "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q=", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "log4js": { + "version": "4.5.1", + "resolved": "https://registry.npm.taobao.org/log4js/download/log4js-4.5.1.tgz", + "integrity": "sha1-5UNiXpfZ5vPm58n8GW3WqyyuMLU=", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "loglevel": { + "version": "1.6.6", + "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.6.tgz?cache=0&sync_timestamp=1573147570728&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.6.6.tgz", + "integrity": "sha1-DuYwDMBY22s1UfocS/c7g7t3ExI=", + "dev": true + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/long/download/long-4.0.0.tgz", + "integrity": "sha1-mntxz7fTYaGU6lVSQckvdGjVvyg=" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "dev": true, + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyallist%2Fdownload%2Fyallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + } + } + }, + "magic-string": { + "version": "0.25.4", + "resolved": "https://registry.npm.taobao.org/magic-string/download/magic-string-0.25.4.tgz?cache=0&sync_timestamp=1578578366977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmagic-string%2Fdownload%2Fmagic-string-0.25.4.tgz", + "integrity": "sha1-MluKCnn8Qj2xCbd/1aGRg7e6UUM=", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz", + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/make-error/download/make-error-1.3.5.tgz", + "integrity": "sha1-7+ToH22yjK3WBccPKcgxtY73dsg=", + "dev": true + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npm.taobao.org/make-fetch-happen/download/make-fetch-happen-5.0.2.tgz?cache=0&sync_timestamp=1576543101528&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-fetch-happen%2Fdownload%2Fmake-fetch-happen-5.0.2.tgz", + "integrity": "sha1-qoOHEE8mh+3KAchofuRQE9AtGb0=", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz?cache=0&sync_timestamp=1580176348786&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.3.tgz", + "integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz?cache=0&sync_timestamp=1571961490394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + } + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npm.taobao.org/mamacro/download/mamacro-0.0.3.tgz", + "integrity": "sha1-rSyVdhl8nxq/MI0Hh4Zb2XWj8+Q=", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz", + "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1573816302294&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz", + "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz", + "integrity": "sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg=", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz?cache=0&sync_timestamp=1570537491040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemory-fs%2Fdownload%2Fmemory-fs-0.5.0.tgz", + "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz", + "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz", + "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz", + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", + "dev": true + }, + "mime-db": { + "version": "1.42.0", + "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.42.0.tgz", + "integrity": "sha1-PiUpB7THrbkGWXtLZWNics+ee6w=", + "dev": true + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.25.tgz?cache=0&sync_timestamp=1573568362177&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.25.tgz", + "integrity": "sha1-OXctRmIfk+KoCoVsU7hqYhVqZDc=", + "dev": true, + "requires": { + "mime-db": "1.42.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz", + "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.8.0", + "resolved": "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.8.0.tgz", + "integrity": "sha1-gdQexP5YxxOpatfHI82y0L1NcOE=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + } + } + }, + "mini-signals": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/mini-signals/download/mini-signals-1.2.0.tgz", + "integrity": "sha1-RbCAE8X65RokqhqTXNMXye1yHXQ=" + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz", + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "minipass": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.1.tgz", + "integrity": "sha1-dgfOd4RyoYWtbYkIKqIHD3nO3NU=", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/minipass-collect/download/minipass-collect-1.0.2.tgz", + "integrity": "sha1-IrgTv3Rdxu26JXa5QAIq1u3Ixhc=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/minipass-flush/download/minipass-flush-1.0.5.tgz", + "integrity": "sha1-gucTXX6JpQ/+ZGEKeHlTxMTLs3M=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/minipass-pipeline/download/minipass-pipeline-1.2.2.tgz", + "integrity": "sha1-PctrtKVG4ylpx61xDyx5qGq7qTo=", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/minizlib/download/minizlib-1.3.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminizlib%2Fdownload%2Fminizlib-1.3.3.tgz", + "integrity": "sha1-IpDeloGKNMKVUcio0wEha9Zahh0=", + "dev": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz", + "integrity": "sha1-5xN2Ln0+Mv7YAxFc+T4EvKn8yaY=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyallist%2Fdownload%2Fyallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + } + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz", + "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "monotone-convex-hull-2d": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/monotone-convex-hull-2d/download/monotone-convex-hull-2d-1.0.1.tgz", + "integrity": "sha1-R/Xa6t88Sv03dkuqGqh4ekDu4Iw=", + "requires": { + "robust-orientation": "^1.1.3" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz", + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz", + "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz", + "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz", + "integrity": "sha1-rCetpmFn+ohJpq3dg39rGJrSCBw=", + "dev": true + }, + "ng2-file-upload": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/ng2-file-upload/download/ng2-file-upload-1.4.0.tgz", + "integrity": "sha1-jeoo1XMjTFKvR0rSpAAbM1Jx5cQ=", + "requires": { + "tslib": "^1.9.0" + } + }, + "ngx-countdown": { + "version": "9.0.1", + "resolved": "https://registry.npm.taobao.org/ngx-countdown/download/ngx-countdown-9.0.1.tgz", + "integrity": "sha1-6pbbzbgq9YdPCEkKh2nd+RnjTI0=" + }, + "ngx-echarts": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/ngx-echarts/download/ngx-echarts-4.2.2.tgz", + "integrity": "sha1-nrX2n5IwhIaeoBTxF5Fc1sw2Y0M=", + "requires": { + "tslib": "^1.9.0" + } + }, + "ngx-perfect-scrollbar": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/ngx-perfect-scrollbar/download/ngx-perfect-scrollbar-8.0.0.tgz", + "integrity": "sha1-GcG7+bGjbYmwCmj3g045Qn0pGC8=", + "requires": { + "perfect-scrollbar": "^1.4.0", + "resize-observer-polyfill": "^1.5.0" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/node-fetch/download/node-fetch-1.7.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-fetch%2Fdownload%2Fnode-fetch-1.7.3.tgz", + "integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=", + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node-fetch-npm": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/node-fetch-npm/download/node-fetch-npm-2.0.2.tgz", + "integrity": "sha1-cljJBGGC3KNFtCCO2pGNrzNpf/c=", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.9.0.tgz", + "integrity": "sha1-1iQFDtu0SHStyhK7mlLsY8t4JXk=", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz", + "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.48", + "resolved": "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.48.tgz?cache=0&sync_timestamp=1580980678309&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.48.tgz", + "integrity": "sha1-f2R/DEU6BJW81ky9R3jCYDXC8Do=", + "dev": true, + "requires": { + "semver": "^6.3.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.5.tgz?cache=0&sync_timestamp=1570493570687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.5.tgz", + "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz", + "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz", + "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.1.1.tgz?cache=0&sync_timestamp=1575936466832&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-bundled%2Fdownload%2Fnpm-bundled-1.1.1.tgz", + "integrity": "sha1-Ht1XCGWpTNsbyCIHdeKUZsn7I0s=", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/npm-normalize-package-bin/download/npm-normalize-package-bin-1.0.1.tgz?cache=0&sync_timestamp=1575936472299&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-normalize-package-bin%2Fdownload%2Fnpm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha1-bnmkHyP9I1wGIyGCKNp9nCO49uI=", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npm.taobao.org/npm-package-arg/download/npm-package-arg-6.1.1.tgz", + "integrity": "sha1-AhaMsKSaK3W/mIooaY3ntSnfXLc=", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.5.tgz?cache=0&sync_timestamp=1570493570687&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.5.tgz", + "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.8.tgz?cache=0&sync_timestamp=1579784145028&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-packlist%2Fdownload%2Fnpm-packlist-1.4.8.tgz", + "integrity": "sha1-Vu5swTW5+YrT1Rwcldoiu7my7z4=", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/npm-pick-manifest/download/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha1-9Nnl/UviFT5fTl+be+jcQZqZq7c=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/npm-registry-fetch/download/npm-registry-fetch-4.0.2.tgz?cache=0&sync_timestamp=1576573503812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-registry-fetch%2Fdownload%2Fnpm-registry-fetch-4.0.2.tgz", + "integrity": "sha1-KxQ0+TzL5rY4X45F9F25PhaSHXo=", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz", + "integrity": "sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk=", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&sync_timestamp=1577053378987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz", + "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/null-check/download/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npm.taobao.org/object-component/download/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.7.0.tgz", + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=" + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.0.2.tgz", + "integrity": "sha1-a4DrhP5FFJj2UAeYLwNaW0Re3sQ=" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz", + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/object.values/download/object.values-1.1.1.tgz", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz", + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz", + "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz", + "integrity": "sha1-//DzyRYX/mK7UBiWNumayKbfe+U=", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.0", + "resolved": "https://registry.npm.taobao.org/open/download/open-7.0.0.tgz", + "integrity": "sha1-flKZmxTrc/kPDwgH/pOJfErnPsk=", + "dev": true, + "requires": { + "is-wsl": "^2.1.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz", + "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, + "optjs": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/optjs/download/optjs-3.2.2.tgz", + "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" + }, + "ora": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/ora/download/ora-4.0.2.tgz", + "integrity": "sha1-Dh5o/UWxNdKGSLJ88ICB+m6KKX0=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz", + "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz", + "integrity": "sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4=", + "dev": true + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.2.tgz?cache=0&sync_timestamp=1577904187480&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.2.2.tgz", + "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-3.0.0.tgz?cache=0&sync_timestamp=1563032875018&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-3.0.0.tgz", + "integrity": "sha1-1wTZr4orpoTiYA2aIVmD1BQal50=", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz", + "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", + "dev": true + }, + "pacote": { + "version": "9.5.8", + "resolved": "https://registry.npm.taobao.org/pacote/download/pacote-9.5.8.tgz", + "integrity": "sha1-I0gO/cT6dFFYVcns85z2QHj5l4Y=", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz?cache=0&sync_timestamp=1580176348786&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.3.tgz", + "integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz", + "integrity": "sha1-5xN2Ln0+Mv7YAxFc+T4EvKn8yaY=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz?cache=0&sync_timestamp=1571961490394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyallist%2Fdownload%2Fyallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + } + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz", + "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz", + "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.5.tgz", + "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-uri": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/parse-uri/download/parse-uri-1.0.3.tgz", + "integrity": "sha1-88JKdJB6TjV8F0HpbKn6rez9bbU=" + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz?cache=0&sync_timestamp=1573036762880&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-4.0.0.tgz", + "integrity": "sha1-bXhlbj2o14tOwLkG98CO8d/j9gg=", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npm.taobao.org/parseqs/download/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npm.taobao.org/parseuri/download/parseuri-0.0.5.tgz?cache=0&sync_timestamp=1568821215232&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparseuri%2Fdownload%2Fparseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz", + "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "perfect-scrollbar": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/perfect-scrollbar/download/perfect-scrollbar-1.5.0.tgz", + "integrity": "sha1-gh0iTtj/YZkMI/JttjBIzcdba4M=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.1.tgz", + "integrity": "sha1-IbrIiLbthgH4Mc54FuM1vHefCko=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz", + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pixi-filters": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/pixi-filters/download/pixi-filters-3.1.1.tgz", + "integrity": "sha1-mvXDcCjze+MYLnyf65WZYLwBvj8=", + "requires": { + "@pixi/filter-adjustment": "3.1.1", + "@pixi/filter-advanced-bloom": "3.1.1", + "@pixi/filter-ascii": "3.1.1", + "@pixi/filter-bevel": "3.1.1", + "@pixi/filter-bloom": "3.1.1", + "@pixi/filter-bulge-pinch": "3.1.1", + "@pixi/filter-color-map": "3.1.1", + "@pixi/filter-color-overlay": "3.1.1", + "@pixi/filter-color-replace": "3.1.1", + "@pixi/filter-convolution": "3.1.1", + "@pixi/filter-cross-hatch": "3.1.1", + "@pixi/filter-crt": "3.1.1", + "@pixi/filter-dot": "3.1.1", + "@pixi/filter-drop-shadow": "3.1.1", + "@pixi/filter-emboss": "3.1.1", + "@pixi/filter-glitch": "3.1.1", + "@pixi/filter-glow": "3.1.1", + "@pixi/filter-godray": "3.1.1", + "@pixi/filter-kawase-blur": "3.1.1", + "@pixi/filter-motion-blur": "3.1.1", + "@pixi/filter-multi-color-replace": "3.1.1", + "@pixi/filter-old-film": "3.1.1", + "@pixi/filter-outline": "3.1.1", + "@pixi/filter-pixelate": "3.1.1", + "@pixi/filter-radial-blur": "3.1.1", + "@pixi/filter-reflection": "3.1.1", + "@pixi/filter-rgb-split": "3.1.1", + "@pixi/filter-shockwave": "3.1.1", + "@pixi/filter-simple-lightmap": "3.1.1", + "@pixi/filter-tilt-shift": "3.1.1", + "@pixi/filter-twist": "3.1.1", + "@pixi/filter-zoom-blur": "3.1.1" + } + }, + "pixi.js": { + "version": "5.3.3", + "resolved": "https://registry.npm.taobao.org/pixi.js/download/pixi.js-5.3.3.tgz", + "integrity": "sha1-bjJqUlQvSs2X6j+Fk8sK6uUC35o=", + "requires": { + "@pixi/accessibility": "5.3.3", + "@pixi/app": "5.3.3", + "@pixi/constants": "5.3.3", + "@pixi/core": "5.3.3", + "@pixi/display": "5.3.3", + "@pixi/extract": "5.3.3", + "@pixi/filter-alpha": "5.3.3", + "@pixi/filter-blur": "5.3.3", + "@pixi/filter-color-matrix": "5.3.3", + "@pixi/filter-displacement": "5.3.3", + "@pixi/filter-fxaa": "5.3.3", + "@pixi/filter-noise": "5.3.3", + "@pixi/graphics": "5.3.3", + "@pixi/interaction": "5.3.3", + "@pixi/loaders": "5.3.3", + "@pixi/math": "5.3.3", + "@pixi/mesh": "5.3.3", + "@pixi/mesh-extras": "5.3.3", + "@pixi/mixin-cache-as-bitmap": "5.3.3", + "@pixi/mixin-get-child-by-name": "5.3.3", + "@pixi/mixin-get-global-position": "5.3.3", + "@pixi/particles": "5.3.3", + "@pixi/polyfill": "5.3.3", + "@pixi/prepare": "5.3.3", + "@pixi/runner": "5.3.3", + "@pixi/settings": "5.3.3", + "@pixi/sprite": "5.3.3", + "@pixi/sprite-animated": "5.3.3", + "@pixi/sprite-tiling": "5.3.3", + "@pixi/spritesheet": "5.3.3", + "@pixi/text": "5.3.3", + "@pixi/text-bitmap": "5.3.3", + "@pixi/ticker": "5.3.3", + "@pixi/utils": "5.3.3" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "point-in-polygon": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/point-in-polygon/download/point-in-polygon-1.0.1.tgz", + "integrity": "sha1-1Ztk6P7kHElFiqyCtWcYxZV7Kvc=" + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.25.tgz", + "integrity": "sha1-JU/TN/+6hp9LnTftwpgFnLTTXso=", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "positioning": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/positioning/download/positioning-2.0.0.tgz", + "integrity": "sha1-aXhc8r9s2rtv7z/RQaZLhp5X8wU=" + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.21.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.21.tgz", + "integrity": "sha1-BrsHgkwZwgIcXQVtWxDDW5iffhc=", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.1.tgz", + "integrity": "sha1-Ntd7qwI7Dsu5eJ2E3LI8SUEUVDY=", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz", + "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz", + "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-import/download/postcss-import-12.0.1.tgz", + "integrity": "sha1-z4x6sLXMq1ZJAkU25WX4QZKLcVM=", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-2.1.0.tgz", + "integrity": "sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM=", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz", + "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz", + "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha1-JJBENWaXsztk8aj3yAki3d7nGVw=", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz", + "integrity": "sha1-OxO9G7HLNuG8taTc0n9UxdyzVwM=", + "dev": true + } + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz", + "integrity": "sha1-F7mXvHEbMzurFDqu07jT1uPTglg=", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.2.tgz", + "integrity": "sha1-SCKCwJpCcG0fyaBptz9E7Ag5Hck=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz", + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz", + "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npm.taobao.org/promise/download/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-polyfill": { + "version": "8.1.3", + "resolved": "https://registry.npm.taobao.org/promise-polyfill/download/promise-polyfill-8.1.3.tgz", + "integrity": "sha1-jJmzz1PzqRxoIm/9573oHX+QQRY=" + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/promise-retry/download/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "protobufjs": { + "version": "6.8.8", + "resolved": "https://registry.npm.taobao.org/protobufjs/download/protobufjs-6.8.8.tgz", + "integrity": "sha1-yLTxKC/XqQ5vWxCe0RyEr4KQjnw=", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "10.17.14", + "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-10.17.14.tgz?cache=0&sync_timestamp=1580843161457&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-10.17.14.tgz", + "integrity": "sha1-tsYOvy+15CKf3XUf+d364PXzFUE=" + } + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/protoduck/download/protoduck-5.0.1.tgz", + "integrity": "sha1-A8NlnKGAB7aaUP2Cp+vMUWJhFR8=", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "5.4.2", + "resolved": "https://registry.npm.taobao.org/protractor/download/protractor-5.4.2.tgz", + "integrity": "sha1-Mp7+N/SLIUGrlGd5m+LU0S60jBM=", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1573282918610&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npm.taobao.org/del/download/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/globby/download/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-1.0.1.tgz", + "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz?cache=0&sync_timestamp=1569835858319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-path-inside%2Fdownload%2Fis-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.4.18.tgz", + "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npm.taobao.org/webdriver-manager/download/webdriver-manager-12.1.7.tgz", + "integrity": "sha1-7U6u6PkGszwUboabVehQVTobEWI=", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz", + "integrity": "sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ=", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.7.0.tgz", + "integrity": "sha1-8cTEeo75cWfepda79IFtc26ISjw=", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz?cache=0&sync_timestamp=1569938272548&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpumpify%2Fdownload%2Fpumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/q/download/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/qjobs/download/qjobs-1.2.0.tgz", + "integrity": "sha1-xF6cYYAL0IfviNfiVkI73Unl0HE=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npm.taobao.org/query-string/download/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz", + "integrity": "sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=", + "dev": true + }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/quickselect/download/quickselect-2.0.0.tgz", + "integrity": "sha1-8ZaApIal7vtYEwPgI+mPqvJd0Bg=" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", + "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", + "dev": true + } + } + }, + "raw-loader": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/raw-loader/download/raw-loader-3.1.0.tgz?cache=0&sync_timestamp=1574695040943&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fraw-loader%2Fdownload%2Fraw-loader-3.1.0.tgz", + "integrity": "sha1-Xp05mloiLMDeGPQsO8XklndTKz8=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.4.tgz", + "integrity": "sha1-on779uTnhonZGHLuPM+lfXvdD1M=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "rbush": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/rbush/download/rbush-3.0.1.tgz", + "integrity": "sha1-X6+op5s7mv3+UAhAOnIMwd6ILs8=", + "requires": { + "quickselect": "^2.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/read-cache/download/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-package-json": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/read-package-json/download/read-package-json-2.1.1.tgz", + "integrity": "sha1-FqpmxZ59Ta1iiPF53ZKV/Vm7mPE=", + "dev": true, + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/read-package-tree/download/read-package-tree-5.3.1.tgz", + "integrity": "sha1-oyy2TH8x64pvMe8G+c7fdAaP5jY=", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz", + "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/readdir-scoped-modules/download/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha1-jUVAe0+HCg3K68DihnDRjnRRQwk=", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.3.0", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.3.0.tgz", + "integrity": "sha1-mERY0ToeQuLp9YQbEp4WLzaa/xc=", + "dev": true, + "requires": { + "picomatch": "^2.0.7" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npm.taobao.org/reflect-metadata/download/reflect-metadata-0.1.13.tgz", + "integrity": "sha1-Z648pXyXKiqhZCsQ/jY/4y1J3Ag=", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz", + "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha1-71Hg8OpK1CS3e/fLQfPgFccKPw4=", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz", + "integrity": "sha1-fPanfY9cb2Drc8X8GVWyzrAea/U=", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.1", + "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.1.tgz", + "integrity": "sha1-Oy/OThq3cywI9mXf2zFHScfd0vs=", + "dev": true, + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.6.0.tgz?cache=0&sync_timestamp=1568402850982&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.6.0.tgz", + "integrity": "sha1-IDfBizJ8/Oim/qKk7EQfJDKvuLY=", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.1.tgz", + "integrity": "sha1-SPC/Gl6iBRlpKcDZeYtC0e2YRDw=", + "dev": true + }, + "regjsparser": { + "version": "0.6.2", + "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.2.tgz", + "integrity": "sha1-/WLHU5kUZ9nR/+Cp9n8npSkCS5Y=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.0.tgz", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=" + }, + "resolve": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.14.1.tgz", + "integrity": "sha1-ngGMVA/PDEJ9Z4uZMcv0XphLyv8=", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resource-loader": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/resource-loader/download/resource-loader-3.0.1.tgz", + "integrity": "sha1-MzVbtUIeKZT1lFS7x/bb/43wbUc=", + "requires": { + "mini-signals": "^1.2.0", + "parse-uri": "^1.0.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz", + "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz", + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npm.taobao.org/rfdc/download/rfdc-1.1.4.tgz", + "integrity": "sha1-unLME2egzNnPgahws7WL060H+MI=", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz", + "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "robust-orientation": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/robust-orientation/download/robust-orientation-1.1.3.tgz", + "integrity": "sha1-2v9bANO+TmByLw6cAVbvln8cIEk=", + "requires": { + "robust-scale": "^1.0.2", + "robust-subtract": "^1.0.0", + "robust-sum": "^1.0.0", + "two-product": "^1.0.2" + } + }, + "robust-scale": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/robust-scale/download/robust-scale-1.0.2.tgz", + "integrity": "sha1-d1Ey7QlULQKOWLLMecBikLz3jDI=", + "requires": { + "two-product": "^1.0.2", + "two-sum": "^1.0.0" + } + }, + "robust-subtract": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/robust-subtract/download/robust-subtract-1.0.0.tgz", + "integrity": "sha1-4LFk4e2LpOOl3aRaEgODSNvtPpo=" + }, + "robust-sum": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/robust-sum/download/robust-sum-1.0.0.tgz", + "integrity": "sha1-FmRuUlKStNJdgnV6KGlV4Lv6U9k=" + }, + "rollup": { + "version": "1.25.2", + "resolved": "https://registry.npm.taobao.org/rollup/download/rollup-1.25.2.tgz?cache=0&sync_timestamp=1580452414800&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup%2Fdownload%2Frollup-1.25.2.tgz", + "integrity": "sha1-c59Qi9j37OUrtsH82oNGavgrf20=", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.4.tgz", + "integrity": "sha1-4Hd/4NGEzseHLfFH8wNXLUFOIRw=", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + }, + "sass": { + "version": "1.23.3", + "resolved": "https://registry.npm.taobao.org/sass/download/sass-1.23.3.tgz?cache=0&sync_timestamp=1581130265905&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass%2Fdownload%2Fsass-1.23.3.tgz", + "integrity": "sha1-8HUDuejSvPBu9p6L7qXQhVibFiA=", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "8.0.0", + "resolved": "https://registry.npm.taobao.org/sass-loader/download/sass-loader-8.0.0.tgz?cache=0&sync_timestamp=1578921665787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-8.0.0.tgz", + "integrity": "sha1-57B6PjV/ll5rA91FsBawqXRq95c=", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.4.tgz", + "integrity": "sha1-on779uTnhonZGHLuPM+lfXvdD1M=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/saucelabs/download/saucelabs-1.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsaucelabs%2Fdownload%2Fsaucelabs-1.5.0.tgz", + "integrity": "sha1-lAWnPDYNRJsjKDmRmobDltN5/Z0=", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1574946791935&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npm.taobao.org/selenium-webdriver/download/selenium-webdriver-3.6.0.tgz", + "integrity": "sha1-K6h6FmLAILiYjJga5iyyoBKY6vw=", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.7.tgz?cache=0&sync_timestamp=1569952074772&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fselfsigned%2Fdownload%2Fselfsigned-1.10.7.tgz", + "integrity": "sha1-2lgZ/QSdVXTyjoipvMbbxubzkGs=", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/semver-dsl/download/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/semver-intersect/download/semver-intersect-1.4.0.tgz", + "integrity": "sha1-vdnAa+3N0v7bjNNSw8Q+6MYTIfM=", + "dev": true, + "requires": { + "semver": "^5.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", + "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-2.1.2.tgz?cache=0&sync_timestamp=1575883256113&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-2.1.2.tgz", + "integrity": "sha1-7OxTsOAxe9yV73arcHS3OEeF+mE=", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz?cache=0&sync_timestamp=1563425484616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.0.tgz", + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", + "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/set-immediate-shim/download/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz", + "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz?cache=0&sync_timestamp=1563425484616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.1.tgz", + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz", + "integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz", + "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=", + "dev": true + } + } + }, + "skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npm.taobao.org/skmeans/download/skmeans-0.9.7.tgz", + "integrity": "sha1-cmcM67coUI9W4pwOENEeYjUpzl0=" + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/smart-buffer/download/smart-buffer-4.1.0.tgz", + "integrity": "sha1-kWBcJdkWUvRmHqacz0XxszHKIbo=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/socket.io/download/socket.io-2.1.1.tgz?cache=0&sync_timestamp=1569002852515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io%2Fdownload%2Fsocket.io-2.1.1.tgz", + "integrity": "sha1-oGnF/qvuPmshSnW0DOBlLhz7mYA=", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/socket.io-adapter/download/socket.io-adapter-1.1.2.tgz?cache=0&sync_timestamp=1574684498510&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-adapter%2Fdownload%2Fsocket.io-adapter-1.1.2.tgz", + "integrity": "sha1-qz8Nb2a4/H/KOVmrWZH4IiF4m+k=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.1.1.tgz?cache=0&sync_timestamp=1569002853390&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-2.1.1.tgz", + "integrity": "sha1-3LOBA0NqtFeN2wJmOK4vIbYjZx8=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-3.2.0.tgz", + "integrity": "sha1-58Yii2qh+BTmFIrqMltRqpSZ4Hc=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz?cache=0&sync_timestamp=1562592125418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz", + "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz", + "integrity": "sha1-yfJWjhnI/YFztJl+o0IOC7MGx9U=", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz", + "integrity": "sha1-XA6aiWjokSwoZjn96XeosgnyUI4=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/socks/download/socks-2.3.3.tgz?cache=0&sync_timestamp=1573063369351&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocks%2Fdownload%2Fsocks-2.3.3.tgz", + "integrity": "sha1-ARKfCl1TTSuJdxLtis6rfuZdeOM=", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/socks-proxy-agent/download/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha1-PImR8xRbJ5nnDhG9X7yLGWMRY4Y=", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npm.taobao.org/agent-base/download/agent-base-4.2.1.tgz", + "integrity": "sha1-2J5ZmfeXh1Z0wH2H8mD8Qeg+jKk=", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz", + "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=", + "dev": true + }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npm.taobao.org/source-map-loader/download/source-map-loader-0.2.4.tgz", + "integrity": "sha1-wYsNxuI79m9nkkN1V8VpoR4HInE=", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1577562191980&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz", + "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.13.tgz", + "integrity": "sha1-MbJKnC5zwt6FBmwP631Edn7VKTI=", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz", + "integrity": "sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz", + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=", + "dev": true + }, + "spdy": { + "version": "4.0.1", + "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.1.tgz", + "integrity": "sha1-bxLtHF236k8k67i4m6WMh8CCV/I=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-3.5.0.tgz", + "integrity": "sha1-Rl1w5tEIf2Fi0HnNC123++v9FgY=", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/speed-measure-webpack-plugin/download/speed-measure-webpack-plugin-1.3.1.tgz", + "integrity": "sha1-aYQKXNwItGOGl9rH2wN/WV1/NqA=", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssr-window": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/ssr-window/download/ssr-window-1.0.1.tgz", + "integrity": "sha1-MHUqakZm53Z/C35qpvwv29DZs2k=" + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-7.1.0.tgz?cache=0&sync_timestamp=1571961490394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-7.1.0.tgz", + "integrity": "sha1-ksJBv23oI2W1x/tL126XVSLhKU0=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz", + "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz?cache=0&sync_timestamp=1576147157429&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstream-shift%2Fdownload%2Fstream-shift-1.0.1.tgz", + "integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=", + "dev": true + }, + "streamroller": { + "version": "1.0.6", + "resolved": "https://registry.npm.taobao.org/streamroller/download/streamroller-1.0.6.tgz", + "integrity": "sha1-gWfYSW7Z8Z8F7ksVjZYRMhuMrNk=", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz?cache=0&sync_timestamp=1565170823020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring_decoder%2Fdownload%2Fstring_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/style-loader/download/style-loader-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstyle-loader%2Fdownload%2Fstyle-loader-1.0.0.tgz", + "integrity": "sha1-HVKW+RZejiyF0k7uC3yvnsjKH4I=", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.4.tgz", + "integrity": "sha1-on779uTnhonZGHLuPM+lfXvdD1M=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz", + "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylus": { + "version": "0.54.7", + "resolved": "https://registry.npm.taobao.org/stylus/download/stylus-0.54.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstylus%2Fdownload%2Fstylus-0.54.7.tgz", + "integrity": "sha1-xs5Hk5Ze5Ti86+UPMVN7/ATYjNI=", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/stylus-loader/download/stylus-loader-3.0.2.tgz", + "integrity": "sha1-J6cGQgsFo44DjnyssVNXjUUFE8Y=", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/svgo/download/svgo-1.3.2.tgz?cache=0&sync_timestamp=1572433377078&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsvgo%2Fdownload%2Fsvgo-1.3.2.tgz", + "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "swiper": { + "version": "5.3.7", + "resolved": "https://registry.npm.taobao.org/swiper/download/swiper-5.3.7.tgz?cache=0&sync_timestamp=1586538009404&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fswiper%2Fdownload%2Fswiper-5.3.7.tgz", + "integrity": "sha1-E0nAVXMOkkfkSCtyYxFmEZuD9Ak=", + "requires": { + "dom7": "^2.1.3", + "ssr-window": "^1.0.1" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz", + "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz", + "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=", + "dev": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npm.taobao.org/tar/download/tar-4.4.13.tgz?cache=0&sync_timestamp=1570286254496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-4.4.13.tgz", + "integrity": "sha1-Q7NkvFKIjVVSmGN7ENYHkCVKtSU=", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.7.tgz", + "integrity": "sha1-zP+FcIQef+QmVpPaiJNsVa7X98c=", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-2.9.0.tgz", + "integrity": "sha1-5xN2Ln0+Mv7YAxFc+T4EvKn8yaY=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyallist%2Fdownload%2Fyallist-3.1.1.tgz", + "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=", + "dev": true + } + } + }, + "terser": { + "version": "4.5.1", + "resolved": "https://registry.npm.taobao.org/terser/download/terser-4.5.1.tgz", + "integrity": "sha1-Y7Uta2zjRKpv7c0O4GppV5nrUL0=", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.3", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.3.tgz?cache=0&sync_timestamp=1580403891929&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-2.3.3.tgz", + "integrity": "sha1-uJBDFovUFBU7q4b0NirCPVN7eLA=", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.2.0.tgz", + "integrity": "sha1-5/5EwavBKZ9RYUblYxCP0QBsGHQ=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz", + "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz", + "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=", + "dev": true + }, + "jest-worker": { + "version": "25.1.0", + "resolved": "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.1.0.tgz?cache=0&sync_timestamp=1579654868650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.1.0.tgz", + "integrity": "sha1-ddA4utb99Y66DS7Bg1hWxJfjkHo=", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz", + "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.0.0.tgz", + "integrity": "sha1-G1859rknDtM/nwVMXA+EMEmJ+AE=", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz", + "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz", + "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz", + "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.6.4", + "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.6.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.6.4.tgz", + "integrity": "sha1-on779uTnhonZGHLuPM+lfXvdD1M=", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.1.0.tgz", + "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz", + "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz", + "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tinyqueue": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/tinyqueue/download/tinyqueue-1.2.3.tgz", + "integrity": "sha1-tqYd4jBgWE2in4I2LkXfHsc1Pz0=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/to-array/download/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz", + "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", + "dev": true + }, + "topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/topojson-client/download/topojson-client-3.1.0.tgz", + "integrity": "sha1-Iuix7QiiuSL+60r29Ttu8JpGe5k=", + "requires": { + "commander": "2" + } + }, + "topojson-server": { + "version": "3.0.1", + "resolved": "https://registry.npm.taobao.org/topojson-server/download/topojson-server-3.0.1.tgz", + "integrity": "sha1-0rPsCVtnMimb52pIQGERsyAaNPU=", + "requires": { + "commander": "2" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npm.taobao.org/tree-kill/download/tree-kill-1.2.2.tgz?cache=0&sync_timestamp=1576090178663&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftree-kill%2Fdownload%2Ftree-kill-1.2.2.tgz", + "integrity": "sha1-TKCakJLIi3OnzcXooBtQeweQoMw=", + "dev": true + }, + "ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npm.taobao.org/ts-node/download/ts-node-7.0.1.tgz", + "integrity": "sha1-lWLcLR5tJI0kvFX3c+P2FDN9m68=", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + } + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz", + "integrity": "sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo=" + }, + "tslint": { + "version": "5.15.0", + "resolved": "https://registry.npm.taobao.org/tslint/download/tslint-5.15.0.tgz", + "integrity": "sha1-b/sYCYbWOvoeUx/rKhNNv5YeJ9M=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.13.0", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npm.taobao.org/tsutils/download/tsutils-2.29.0.tgz", + "integrity": "sha1-MrSIUBRnrL7dS4VJhnOggSrKC5k=", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "turf-jsts": { + "version": "1.2.3", + "resolved": "https://registry.npm.taobao.org/turf-jsts/download/turf-jsts-1.2.3.tgz", + "integrity": "sha1-WXV/VCr7/5pXe79BHxg7j0jTiqQ=" + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "two-product": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/two-product/download/two-product-1.0.2.tgz", + "integrity": "sha1-Z9ldSyV6kh4stL16+VEfkIhSLqo=" + }, + "two-sum": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/two-sum/download/two-sum-1.0.0.tgz", + "integrity": "sha1-MdPzIjnk9zHsqd+RVeKyl/AIq2Q=" + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npm.taobao.org/type-fest/download/type-fest-0.8.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.8.1.tgz", + "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=", + "dev": true + }, + "type-func": { + "version": "1.0.3", + "resolved": "https://registry.npm.taobao.org/type-func/download/type-func-1.0.3.tgz", + "integrity": "sha1-qxhCNK6A2NUAV87+/zstl9CK6bA=" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", + "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.7.5", + "resolved": "https://registry.npm.taobao.org/typescript/download/typescript-3.7.5.tgz", + "integrity": "sha1-BpLiH2X9QQi5MwI4qsEd0uF3oa4=", + "dev": true + }, + "uglify-js": { + "version": "3.7.3", + "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.7.3.tgz?cache=0&sync_timestamp=1577407829710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.7.3.tgz", + "integrity": "sha1-+Rj86RgvRm1RQPJLsP81wtMtzGo=", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true, + "optional": true + } + } + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/ultron/download/ultron-1.1.1.tgz", + "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha1-W0tCbgjROoA2Xg1lesemwexGonc=", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha1-qcxsx85joKMCP8meNBuUQx1AWlc=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz", + "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz", + "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.20", + "resolved": "https://registry.npm.taobao.org/universal-analytics/download/universal-analytics-0.4.20.tgz", + "integrity": "sha1-1rZOUxK/dPfDaOMCSpIhNdvySwM=", + "dev": true, + "requires": { + "debug": "^3.0.0", + "request": "^2.88.0", + "uuid": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&sync_timestamp=1567458131109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz", + "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz", + "integrity": "sha1-qKg1NejACjFuQDpdtKwbm4U64ng=", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/useragent/download/useragent-2.3.0.tgz", + "integrity": "sha1-IX+UOtVAyyEoZYqyP8lg9qiMmXI=", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyallist%2Fdownload%2Fyallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/util-promisify/download/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.1.tgz", + "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.4.tgz?cache=0&sync_timestamp=1579624493239&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes-abstract%2Fdownload%2Fes-abstract-1.17.4.tgz", + "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + } + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npm.taobao.org/uuid/download/uuid-3.3.3.tgz", + "integrity": "sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/validate-npm-package-name/download/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz?cache=0&sync_timestamp=1579858502549&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvendors%2Fdownload%2Fvendors-1.0.4.tgz", + "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "viewerjs": { + "version": "1.6.2", + "resolved": "https://registry.npm.taobao.org/viewerjs/download/viewerjs-1.6.2.tgz", + "integrity": "sha1-CCbqqbsUOHVpCwUGcSM1ci3L6qM=" + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz", + "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/void-elements/download/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz?cache=0&sync_timestamp=1573060177479&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack%2Fdownload%2Fwatchpack-1.6.0.tgz", + "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.11.tgz?cache=0&sync_timestamp=1576323112997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.11.tgz", + "integrity": "sha1-Z79X9HWPAu3oj7KhcS/vTRU1i+M=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/webdriver-js-extender/download/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha1-V9epPADbTMjVVuTT20tdsKgMO7c=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webpack": { + "version": "4.41.2", + "resolved": "https://registry.npm.taobao.org/webpack/download/webpack-4.41.2.tgz", + "integrity": "sha1-w07Hbao6hGjJthpQM22OMwPc504=", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-6.4.0.tgz?cache=0&sync_timestamp=1574807785634&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.0.tgz", + "integrity": "sha1-tlnS/7r6JLr12xzbsslKmD7NJ4Q=", + "dev": true + }, + "cacache": { + "version": "12.0.3", + "resolved": "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz?cache=0&sync_timestamp=1580176348786&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcacache%2Fdownload%2Fcacache-12.0.3.tgz", + "integrity": "sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A=", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz", + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-wsl%2Fdownload%2Fis-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz?cache=0&sync_timestamp=1570537491040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemory-fs%2Fdownload%2Fmemory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz?cache=0&sync_timestamp=1571961490394&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.3.tgz?cache=0&sync_timestamp=1580403891929&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.3.tgz", + "integrity": "sha1-Xsry29xfuZdF/QZ5H0b8ndscmnw=", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.2.tgz?cache=0&sync_timestamp=1569684802806&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-middleware%2Fdownload%2Fwebpack-dev-middleware-3.7.2.tgz", + "integrity": "sha1-ABnD23FuP6XOy/ZPKriKdLqzMfM=", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz?cache=0&sync_timestamp=1570537491040&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemory-fs%2Fdownload%2Fmemory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz", + "integrity": "sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U=", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.9.0", + "resolved": "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.9.0.tgz", + "integrity": "sha1-J8O10Pa2Z3xDBEZayBdiPIsnuJw=", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.4", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz", + "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz", + "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.11.tgz?cache=0&sync_timestamp=1576323112997&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.11.tgz", + "integrity": "sha1-Z79X9HWPAu3oj7KhcS/vTRU1i+M=", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz?cache=0&sync_timestamp=1569735515256&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-absolute-url%2Fdownload%2Fis-absolute-url-3.0.3.tgz", + "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1569557271992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz", + "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz?cache=0&sync_timestamp=1564684394562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.2.tgz", + "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&sync_timestamp=1574264229907&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz", + "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.3.4", + "resolved": "https://registry.npm.taobao.org/webpack-subresource-integrity/download/webpack-subresource-integrity-1.3.4.tgz", + "integrity": "sha1-RVTgxiLWeH+IDroAnNtzE5wQe60=", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + } + }, + "websocket-driver": { + "version": "0.7.3", + "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz", + "integrity": "sha1-otTg1PTxFvHmKX66WLBdQwEA6fk=", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz", + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=" + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/whatwg-fetch/download/whatwg-fetch-3.0.0.tgz", + "integrity": "sha1-/IBORYzEYACbGiuWa8iBfSV4rvs=" + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npm.taobao.org/when/download/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1574116898193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz", + "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npm.taobao.org/worker-plugin/download/worker-plugin-3.2.0.tgz", + "integrity": "sha1-3a6fFht2/Lqs+PVOzQN4RFhOQ+c=", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz", + "integrity": "sha1-RC/fCkftZPWbal2P8TD0dI7VJPs=", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npm.taobao.org/xml2js/download/xml2js-0.4.23.tgz?cache=0&sync_timestamp=1576776092832&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxml2js%2Fdownload%2Fxml2js-0.4.23.tgz", + "integrity": "sha1-oMaVFnUkIesqx1juTUzPWIQ+rGY=", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npm.taobao.org/xmlbuilder/download/xmlbuilder-11.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxmlbuilder%2Fdownload%2Fxmlbuilder-11.0.1.tgz", + "integrity": "sha1-vpuuHIoEbnazESdyY0fQrXACvrM=", + "dev": true + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npm.taobao.org/xmlhttprequest/download/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npm.taobao.org/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz", + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyallist%2Fdownload%2Fyallist-4.0.0.tgz", + "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz?cache=0&sync_timestamp=1577940861093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-12.0.5.tgz", + "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz?cache=0&sync_timestamp=1572648717575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npm.taobao.org/yeast/download/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/yn/download/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.10.2", + "resolved": "https://registry.npm.taobao.org/zone.js/download/zone.js-0.10.2.tgz", + "integrity": "sha1-Z8oISzEW/DP8QENeDV6kCiB+OS4=" + }, + "zrender": { + "version": "4.2.0", + "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.2.0.tgz?cache=0&sync_timestamp=1576159866096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.2.0.tgz", + "integrity": "sha1-0AEwLhVfKN4fn8f81cJUutKEcc8=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6c9be3c --- /dev/null +++ b/package.json @@ -0,0 +1,67 @@ +{ + "name": "anxin119", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve --proxy-config proxy.config.json --open", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^9.0.0", + "@angular/cdk": "^9.0.0", + "@angular/common": "~9.0.0", + "@angular/compiler": "~9.0.0", + "@angular/core": "~9.0.0", + "@angular/fire": "^5.3.0", + "@angular/forms": "~9.0.0", + "@angular/material": "^9.0.0", + "@angular/platform-browser": "~9.0.0", + "@angular/platform-browser-dynamic": "~9.0.0", + "@angular/router": "~9.0.0", + "@types/cesium": "^1.59.5", + "@types/swiper": "^5.3.0", + "angular-calendar": "^0.28.2", + "bson-objectid": "^1.3.1", + "cesium": "^1.64.0", + "date-fns": "^2.9.0", + "e-ngx-cesium": "^6.3.2", + "echarts": "^4.6.0", + "firebase": "^7.6.2", + "ng2-file-upload": "^1.4.0", + "ngx-countdown": "^9.0.1", + "ngx-echarts": "^4.2.2", + "ngx-perfect-scrollbar": "^8.0.0", + "pixi-filters": "^3.1.1", + "pixi.js": "^5.3.2", + "rxjs": "~6.5.4", + "swiper": "^5.3.7", + "tslib": "^1.10.0", + "viewerjs": "^1.6.2", + "zone.js": "~0.10.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.900.1", + "@angular/cli": "~9.0.1", + "@angular/compiler-cli": "~9.0.0", + "@angular/language-service": "~9.0.0", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "~2.0.3", + "@types/node": "^12.11.1", + "codelyzer": "^5.1.2", + "jasmine-core": "~3.4.0", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~4.1.0", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.1", + "karma-jasmine": "~2.0.1", + "karma-jasmine-html-reporter": "^1.4.0", + "protractor": "~5.4.0", + "ts-node": "~7.0.0", + "tslint": "~5.15.0", + "typescript": "~3.7.5" + } +} diff --git a/proxy.config.json b/proxy.config.json new file mode 100644 index 0000000..b28a11f --- /dev/null +++ b/proxy.config.json @@ -0,0 +1,7 @@ +{ + "/api": { + "target": "http://121.37.20.190:8000", + "secure": false, + "changeOrigin": true + } +} \ No newline at end of file diff --git a/reset.css b/reset.css new file mode 100644 index 0000000..c67618d --- /dev/null +++ b/reset.css @@ -0,0 +1,27 @@ +@charset "utf-8"; +html,body,ul,ol,dl,li,dt,dd,p,form,input,h1,h2,h3,h4,h5,h6,section,article,aside,header,footer,nav,figure,time,mark,main,canvas{ + margin:0; + padding:0; + font-size:16px; +} +b,strong,i,em,h1,h2,h3,h4,h5,h6{ + font-weight:500; + font-style:normal; +} +img{ + border:none; +} +a{ + text-decoration: none; + color:#000; +ul,ol,li{ + list-style:none; +} +.clearfn:after{ + content:""; + clear:both; + display: block; + overflow:hidden; + height:0; + visibility: hidden; +} \ No newline at end of file diff --git a/src/app/_theming.scss b/src/app/_theming.scss new file mode 100644 index 0000000..e30383b --- /dev/null +++ b/src/app/_theming.scss @@ -0,0 +1,5098 @@ +// Import all the theming functionality. +// We can use relative imports for imports from the cdk because we bundle everything +// up into a single flat scss file for material. +// We want overlays to always appear over user content, so set a baseline +// very high z-index for the overlay container, which is where we create the new +// stacking context for all overlays. +$cdk-z-index-overlay-container: 1000 !default; +$cdk-z-index-overlay: 1000 !default; +$cdk-z-index-overlay-backdrop: 1000 !default; + +// Background color for all of the backdrops +$cdk-overlay-dark-backdrop-background: rgba(0, 0, 0, 0.32) !default; + +// Default backdrop animation is based on the Material Design swift-ease-out. +$backdrop-animation-duration: 400ms !default; +$backdrop-animation-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default; + + +@mixin cdk-overlay() { + .cdk-overlay-container, .cdk-global-overlay-wrapper { + // Disable events from being captured on the overlay container. + pointer-events: none; + + // The container should be the size of the viewport. + top: 0; + left: 0; + height: 100%; + width: 100%; + } + + // The overlay-container is an invisible element which contains all individual overlays. + .cdk-overlay-container { + position: fixed; + z-index: $cdk-z-index-overlay-container; + + &:empty { + // Hide the element when it doesn't have any child nodes. This doesn't + // include overlays that have been detached, rather than disposed. + display: none; + } + } + + // We use an extra wrapper element in order to use make the overlay itself a flex item. + // This makes centering the overlay easy without running into the subpixel rendering + // problems tied to using `transform` and without interfering with the other position + // strategies. + .cdk-global-overlay-wrapper { + display: flex; + position: absolute; + z-index: $cdk-z-index-overlay; + } + + // A single overlay pane. + .cdk-overlay-pane { + // Note: it's important for this one to start off `absolute`, + // in order for us to be able to measure it correctly. + position: absolute; + pointer-events: auto; + box-sizing: border-box; + z-index: $cdk-z-index-overlay; + + // For connected-position overlays, we set `display: flex` in + // order to force `max-width` and `max-height` to take effect. + display: flex; + max-width: 100%; + max-height: 100%; + } + + .cdk-overlay-backdrop { + // TODO(jelbourn): reuse sidenav fullscreen mixin. + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + + z-index: $cdk-z-index-overlay-backdrop; + pointer-events: auto; + -webkit-tap-highlight-color: transparent; + transition: opacity $backdrop-animation-duration $backdrop-animation-timing-function; + opacity: 0; + + &.cdk-overlay-backdrop-showing { + opacity: 1; + + // In high contrast mode the rgba background will become solid so we need to fall back + // to making it opaque using `opacity`. Note that we can't use the `cdk-high-contrast` + // mixin, because we can't normalize the import path to the _a11y.scss both for the + // source and when this file is distributed. See #10908. + @media screen and (-ms-high-contrast: active) { + opacity: 0.6; + } + } + } + + .cdk-overlay-dark-backdrop { + background: $cdk-overlay-dark-backdrop-background; + } + + .cdk-overlay-transparent-backdrop { + // Note: as of Firefox 57, having the backdrop be `background: none` will prevent it from + // capturing the user's mouse scroll events. Since we also can't use something like + // `rgba(0, 0, 0, 0)`, we work around the inconsistency by not setting the background at + // all and using `opacity` to make the element transparent. + &, &.cdk-overlay-backdrop-showing { + opacity: 0; + } + } + + // Overlay parent element used with the connected position strategy. Used to constrain the + // overlay element's size to fit within the viewport. + .cdk-overlay-connected-position-bounding-box { + position: absolute; + z-index: $cdk-z-index-overlay; + + // We use `display: flex` on this element exclusively for centering connected overlays. + // When *not* centering, a top/left/bottom/right will be set which overrides the normal + // flex layout. + display: flex; + + // We use the `column` direction here to avoid some flexbox issues in Edge + // when using the "grow after open" options. + flex-direction: column; + + // Add some dimensions so the element has an `innerText` which some people depend on in tests. + min-width: 1px; + min-height: 1px; + } + + // Used when disabling global scrolling. + .cdk-global-scrollblock { + position: fixed; + + // Necessary for the content not to lose its width. Note that we're using 100%, instead of + // 100vw, because 100vw includes the width plus the scrollbar, whereas 100% is the width + // that the element had before we made it `fixed`. + width: 100%; + + // Note: this will always add a scrollbar to whatever element it is on, which can + // potentially result in double scrollbars. It shouldn't be an issue, because we won't + // block scrolling on a page that doesn't have a scrollbar in the first place. + overflow-y: scroll; + } +} + +@mixin cdk-a11y { + .cdk-visually-hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + + // Avoid browsers rendering the focus ring in some cases. + outline: 0; + + // Avoid some cases where the browser will still render the native controls (see #9049). + -webkit-appearance: none; + -moz-appearance: none; + } +} + +// Applies styles for users in high contrast mode. Note that this only applies +// to Microsoft browsers. Chrome can be included by checking for the `html[hc]` +// attribute, however Chrome handles high contrast differently. +// +// @param target Which kind of high contrast setting to target. Defaults to `active`, can be +// `white-on-black` or `black-on-white`. +@mixin cdk-high-contrast($target: active) { + @media (-ms-high-contrast: $target) { + @content; + } +} + +// Core styles that enable monitoring autofill state of text fields. +@mixin cdk-text-field { + // Keyframes that apply no styles, but allow us to monitor when an text field becomes autofilled + // by watching for the animation events that are fired when they start. Note: the /*!*/ comment is + // needed to prevent LibSass from stripping the keyframes out. + // Based on: https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7 + @keyframes cdk-text-field-autofill-start {/*!*/} + @keyframes cdk-text-field-autofill-end {/*!*/} + + .cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start; + } + + .cdk-text-field-autofill-monitored:not(:-webkit-autofill) { + animation-name: cdk-text-field-autofill-end; + } + + // Remove the resize handle on autosizing textareas, because whatever height + // the user resized to will be overwritten once they start typing again. + textarea.cdk-textarea-autosize { + resize: none; + } + + // This class is temporarily applied to the textarea when it is being measured. It is immediately + // removed when measuring is complete. We use `!important` rules here to make sure user-specified + // rules do not interfere with the measurement. + textarea.cdk-textarea-autosize-measuring { + height: auto !important; + overflow: hidden !important; + // Having 2px top and bottom padding seems to fix a bug where Chrome gets an incorrect + // measurement. We just have to account for it later and subtract it off the final result. + padding: 2px 0 !important; + box-sizing: content-box !important; + } +} + +// Used to generate UIDs for keyframes used to change the text field autofill styles. +$cdk-text-field-autofill-color-frame-count: 0; + +// Mixin used to apply custom background and foreground colors to an autofilled text field. +// Based on: https://stackoverflow.com/questions/2781549/ +// removing-input-background-colour-for-chrome-autocomplete#answer-37432260 +@mixin cdk-text-field-autofill-color($background, $foreground:'') { + @keyframes cdk-text-field-autofill-color-#{$cdk-text-field-autofill-color-frame-count} { + to { + background: $background; + @if $foreground != '' { color: $foreground; } + } + } + + &:-webkit-autofill { + animation-name: cdk-text-field-autofill-color-#{$cdk-text-field-autofill-color-frame-count}; + animation-fill-mode: both; + } + + &.cdk-text-field-autofill-monitored:-webkit-autofill { + animation-name: cdk-text-field-autofill-start, + cdk-text-field-autofill-color-#{$cdk-text-field-autofill-color-frame-count}; + } + + $cdk-text-field-autofill-color-frame-count: + $cdk-text-field-autofill-color-frame-count + 1 !global; +} + + +// Core styles that can be used to apply material design treatments to any element. +// Media queries +// TODO(josephperrott): Change $mat-xsmall and $mat-small usages to rely on BreakpointObserver, +$mat-xsmall: 'max-width: 599px'; +$mat-small: 'max-width: 959px'; + +// TODO: Revisit all z-indices before beta +// z-index master list + +$z-index-fab: 20 !default; +$z-index-drawer: 100 !default; + +// Global constants +$pi: 3.14159265; + +// Padding between input toggles and their labels +$mat-toggle-padding: 8px !default; +// Width and height of input toggles +$mat-toggle-size: 20px !default; + +// Easing Curves +// TODO(jelbourn): all of these need to be revisited + +// The default animation curves used by material design. +$mat-linear-out-slow-in-timing-function: cubic-bezier(0, 0, 0.2, 0.1) !default; +$mat-fast-out-slow-in-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !default; +$mat-fast-out-linear-in-timing-function: cubic-bezier(0.4, 0, 1, 1) !default; + +$ease-in-out-curve-function: cubic-bezier(0.35, 0, 0.25, 1) !default; + +$swift-ease-out-duration: 400ms !default; +$swift-ease-out-timing-function: cubic-bezier(0.25, 0.8, 0.25, 1) !default; +$swift-ease-out: all $swift-ease-out-duration $swift-ease-out-timing-function !default; + +$swift-ease-in-duration: 300ms !default; +$swift-ease-in-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2) !default; +$swift-ease-in: all $swift-ease-in-duration $swift-ease-in-timing-function !default; + +$swift-ease-in-out-duration: 500ms !default; +$swift-ease-in-out-timing-function: $ease-in-out-curve-function !default; +$swift-ease-in-out: all $swift-ease-in-out-duration $swift-ease-in-out-timing-function !default; + +$swift-linear-duration: 80ms !default; +$swift-linear-timing-function: linear !default; +$swift-linear: all $swift-linear-duration $swift-linear-timing-function !default; + + + +// A collection of mixins and CSS classes that can be used to apply elevation to a material +// element. +// See: https://material.io/design/environment/elevation.html +// Examples: +// +// +// .mat-foo { +// @include $mat-elevation(2); +// +// &:active { +// @include $mat-elevation(8); +// } +// } +// +//

Some content

+// +// For an explanation of the design behind how elevation is implemented, see the design doc at +// https://goo.gl/Kq0k9Z. + +// Colors for umbra, penumbra, and ambient shadows. As described in the design doc, each elevation +// level is created using a set of 3 shadow values, one for umbra (the shadow representing the +// space completely obscured by an object relative to its light source), one for penumbra (the +// space partially obscured by an object), and one for ambient (the space which contains the object +// itself). For a further explanation of these terms and their meanings, see +// https://en.wikipedia.org/wiki/Umbra,_penumbra_and_antumbra. + +// Maps for the different shadow sets and their values within each z-space. These values were +// created by taking a few reference shadow sets created by Google's Designers and interpolating +// all of the values between them. + +@function _get-umbra-map($color, $opacity) { + $shadow-color: if(type-of($color) == color, rgba($color, $opacity * 0.2), $color); + + @return ( + 0: '0px 0px 0px 0px #{$shadow-color}', + 1: '0px 2px 1px -1px #{$shadow-color}', + 2: '0px 3px 1px -2px #{$shadow-color}', + 3: '0px 3px 3px -2px #{$shadow-color}', + 4: '0px 2px 4px -1px #{$shadow-color}', + 5: '0px 3px 5px -1px #{$shadow-color}', + 6: '0px 3px 5px -1px #{$shadow-color}', + 7: '0px 4px 5px -2px #{$shadow-color}', + 8: '0px 5px 5px -3px #{$shadow-color}', + 9: '0px 5px 6px -3px #{$shadow-color}', + 10: '0px 6px 6px -3px #{$shadow-color}', + 11: '0px 6px 7px -4px #{$shadow-color}', + 12: '0px 7px 8px -4px #{$shadow-color}', + 13: '0px 7px 8px -4px #{$shadow-color}', + 14: '0px 7px 9px -4px #{$shadow-color}', + 15: '0px 8px 9px -5px #{$shadow-color}', + 16: '0px 8px 10px -5px #{$shadow-color}', + 17: '0px 8px 11px -5px #{$shadow-color}', + 18: '0px 9px 11px -5px #{$shadow-color}', + 19: '0px 9px 12px -6px #{$shadow-color}', + 20: '0px 10px 13px -6px #{$shadow-color}', + 21: '0px 10px 13px -6px #{$shadow-color}', + 22: '0px 10px 14px -6px #{$shadow-color}', + 23: '0px 11px 14px -7px #{$shadow-color}', + 24: '0px 11px 15px -7px #{$shadow-color}' + ); +} + +@function _get-penumbra-map($color, $opacity) { + $shadow-color: if(type-of($color) == color, rgba($color, $opacity * 0.14), $color); + + @return ( + 0: '0px 0px 0px 0px #{$shadow-color}', + 1: '0px 1px 1px 0px #{$shadow-color}', + 2: '0px 2px 2px 0px #{$shadow-color}', + 3: '0px 3px 4px 0px #{$shadow-color}', + 4: '0px 4px 5px 0px #{$shadow-color}', + 5: '0px 5px 8px 0px #{$shadow-color}', + 6: '0px 6px 10px 0px #{$shadow-color}', + 7: '0px 7px 10px 1px #{$shadow-color}', + 8: '0px 8px 10px 1px #{$shadow-color}', + 9: '0px 9px 12px 1px #{$shadow-color}', + 10: '0px 10px 14px 1px #{$shadow-color}', + 11: '0px 11px 15px 1px #{$shadow-color}', + 12: '0px 12px 17px 2px #{$shadow-color}', + 13: '0px 13px 19px 2px #{$shadow-color}', + 14: '0px 14px 21px 2px #{$shadow-color}', + 15: '0px 15px 22px 2px #{$shadow-color}', + 16: '0px 16px 24px 2px #{$shadow-color}', + 17: '0px 17px 26px 2px #{$shadow-color}', + 18: '0px 18px 28px 2px #{$shadow-color}', + 19: '0px 19px 29px 2px #{$shadow-color}', + 20: '0px 20px 31px 3px #{$shadow-color}', + 21: '0px 21px 33px 3px #{$shadow-color}', + 22: '0px 22px 35px 3px #{$shadow-color}', + 23: '0px 23px 36px 3px #{$shadow-color}', + 24: '0px 24px 38px 3px #{$shadow-color}' + ); +} + +@function _get-ambient-map($color, $opacity) { + $shadow-color: if(type-of($color) == color, rgba($color, $opacity * 0.12), $color); + + @return ( + 0: '0px 0px 0px 0px #{$shadow-color}', + 1: '0px 1px 3px 0px #{$shadow-color}', + 2: '0px 1px 5px 0px #{$shadow-color}', + 3: '0px 1px 8px 0px #{$shadow-color}', + 4: '0px 1px 10px 0px #{$shadow-color}', + 5: '0px 1px 14px 0px #{$shadow-color}', + 6: '0px 1px 18px 0px #{$shadow-color}', + 7: '0px 2px 16px 1px #{$shadow-color}', + 8: '0px 3px 14px 2px #{$shadow-color}', + 9: '0px 3px 16px 2px #{$shadow-color}', + 10: '0px 4px 18px 3px #{$shadow-color}', + 11: '0px 4px 20px 3px #{$shadow-color}', + 12: '0px 5px 22px 4px #{$shadow-color}', + 13: '0px 5px 24px 4px #{$shadow-color}', + 14: '0px 5px 26px 4px #{$shadow-color}', + 15: '0px 6px 28px 5px #{$shadow-color}', + 16: '0px 6px 30px 5px #{$shadow-color}', + 17: '0px 6px 32px 5px #{$shadow-color}', + 18: '0px 7px 34px 6px #{$shadow-color}', + 19: '0px 7px 36px 6px #{$shadow-color}', + 20: '0px 8px 38px 7px #{$shadow-color}', + 21: '0px 8px 40px 7px #{$shadow-color}', + 22: '0px 8px 42px 7px #{$shadow-color}', + 23: '0px 9px 44px 8px #{$shadow-color}', + 24: '0px 9px 46px 8px #{$shadow-color}' + ); +} + +// The default duration value for elevation transitions. +$mat-elevation-transition-duration: 280ms !default; + +// The default easing value for elevation transitions. +$mat-elevation-transition-timing-function: $mat-fast-out-slow-in-timing-function; + +// The default color for elevation shadows. +$mat-elevation-color: black !default; + +// The default opacity scaling value for elevation shadows. +$mat-elevation-opacity: 1 !default; + +// Prefix for elevation-related selectors. +$_mat-elevation-prefix: 'mat-elevation-z'; + +// Applies the correct css rules to an element to give it the elevation specified by $zValue. +// The $zValue must be between 0 and 24. +@mixin mat-elevation($zValue, $color: $mat-elevation-color, $opacity: $mat-elevation-opacity) { + @if type-of($zValue) != number or not unitless($zValue) { + @error '$zValue must be a unitless number'; + } + @if $zValue < 0 or $zValue > 24 { + @error '$zValue must be between 0 and 24'; + } + + box-shadow: #{map-get(_get-umbra-map($color, $opacity), $zValue)}, + #{map-get(_get-penumbra-map($color, $opacity), $zValue)}, + #{map-get(_get-ambient-map($color, $opacity), $zValue)}; +} + +@mixin _mat-theme-elevation($zValue, $theme, $opacity: $mat-elevation-opacity) { + $foreground: map-get($theme, foreground); + $elevation-color: map-get($foreground, elevation); + $elevation-color-or-default: if($elevation-color == null, $mat-elevation-color, $elevation-color); + + @include mat-elevation($zValue, $elevation-color-or-default, $opacity); +} + +// Applies the elevation to an element in a manner that allows +// consumers to override it via the Material elevation classes. +@mixin mat-overridable-elevation( + $zValue, + $color: $mat-elevation-color, + $opacity: $mat-elevation-opacity) { + &:not([class*='#{$_mat-elevation-prefix}']) { + @include mat-elevation($zValue, $color, $opacity); + } +} + +@mixin _mat-theme-overridable-elevation($zValue, $theme, $opacity: $mat-elevation-opacity) { + $foreground: map-get($theme, foreground); + $elevation-color: map-get($foreground, elevation); + $elevation-color-or-default: if($elevation-color == null, $mat-elevation-color, $elevation-color); + + @include mat-overridable-elevation($zValue, $elevation-color-or-default, $opacity); +} + +// Returns a string that can be used as the value for a transition property for elevation. +// Calling this function directly is useful in situations where a component needs to transition +// more than one property. +// +// .foo { +// transition: mat-elevation-transition-property-value(), opacity 100ms ease; +// } +@function mat-elevation-transition-property-value( + $duration: $mat-elevation-transition-duration, + $easing: $mat-elevation-transition-timing-function) { + @return box-shadow #{$duration} #{$easing}; +} + +// Applies the correct css rules needed to have an element transition between elevations. +// This mixin should be applied to elements whose elevation values will change depending on their +// context (e.g. when active or disabled). +// +// NOTE(traviskaufman): Both this mixin and the above function use default parameters so they can +// be used in the same way by clients. +@mixin mat-elevation-transition( + $duration: $mat-elevation-transition-duration, + $easing: $mat-elevation-transition-timing-function) { + transition: mat-elevation-transition-property-value($duration, $easing); +} + +// Color palettes from the Material Design spec. +// See https://material.io/design/color/ +// +// Contrast colors are hard-coded because it is too difficult (probably impossible) to +// calculate them. These contrast colors are pulled from the public Material Design spec swatches. +// While the contrast colors in the spec are not prescriptive, we use them for convenience. + + +// @deprecated renamed to $dark-primary-text. +// @breaking-change 8.0.0 +$black-87-opacity: rgba(black, 0.87); +// @deprecated renamed to $light-primary-text. +// @breaking-change 8.0.0 +$white-87-opacity: rgba(white, 0.87); +// @deprecated use $dark-[secondary-text,disabled-text,dividers,focused] instead. +// @breaking-change 8.0.0 +$black-12-opacity: rgba(black, 0.12); +// @deprecated use $light-[secondary-text,disabled-text,dividers,focused] instead. +// @breaking-change 8.0.0 +$white-12-opacity: rgba(white, 0.12); +// @deprecated use $dark-[secondary-text,disabled-text,dividers,focused] instead. +// @breaking-change 8.0.0 +$black-6-opacity: rgba(black, 0.06); +// @deprecated use $light-[secondary-text,disabled-text,dividers,focused] instead. +// @breaking-change 8.0.0 +$white-6-opacity: rgba(white, 0.06); + +$dark-primary-text: rgba(black, 0.87); +$dark-secondary-text: rgba(black, 0.54); +$dark-disabled-text: rgba(black, 0.38); +$dark-dividers: rgba(black, 0.12); +$dark-focused: rgba(black, 0.12); +$light-primary-text: white; +$light-secondary-text: rgba(white, 0.7); +$light-disabled-text: rgba(white, 0.5); +$light-dividers: rgba(white, 0.12); +$light-focused: rgba(white, 0.12); + +$mat-red: ( + 50: #ffebee, + 100: #ffcdd2, + 200: #ef9a9a, + 300: #e57373, + 400: #ef5350, + 500: #f44336, + 600: #e53935, + 700: #d32f2f, + 800: #c62828, + 900: #b71c1c, + A100: #ff8a80, + A200: #ff5252, + A400: #ff1744, + A700: #d50000, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $light-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-pink: ( + 50: #fce4ec, + 100: #f8bbd0, + 200: #f48fb1, + 300: #f06292, + 400: #ec407a, + 500: #e91e63, + 600: #d81b60, + 700: #c2185b, + 800: #ad1457, + 900: #880e4f, + A100: #ff80ab, + A200: #ff4081, + A400: #f50057, + A700: #c51162, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $light-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-purple: ( + 50: #f3e5f5, + 100: #e1bee7, + 200: #ce93d8, + 300: #ba68c8, + 400: #ab47bc, + 500: #9c27b0, + 600: #8e24aa, + 700: #7b1fa2, + 800: #6a1b9a, + 900: #4a148c, + A100: #ea80fc, + A200: #e040fb, + A400: #d500f9, + A700: #aa00ff, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $light-primary-text, + 400: $light-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $light-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-deep-purple: ( + 50: #ede7f6, + 100: #d1c4e9, + 200: #b39ddb, + 300: #9575cd, + 400: #7e57c2, + 500: #673ab7, + 600: #5e35b1, + 700: #512da8, + 800: #4527a0, + 900: #311b92, + A100: #b388ff, + A200: #7c4dff, + A400: #651fff, + A700: #6200ea, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $light-primary-text, + 400: $light-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $light-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-indigo: ( + 50: #e8eaf6, + 100: #c5cae9, + 200: #9fa8da, + 300: #7986cb, + 400: #5c6bc0, + 500: #3f51b5, + 600: #3949ab, + 700: #303f9f, + 800: #283593, + 900: #1a237e, + A100: #8c9eff, + A200: #536dfe, + A400: #3d5afe, + A700: #304ffe, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $light-primary-text, + 400: $light-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $light-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-blue: ( + 50: #e3f2fd, + 100: #bbdefb, + 200: #90caf9, + 300: #64b5f6, + 400: #42a5f5, + 500: #2196f3, + 600: #1e88e5, + 700: #1976d2, + 800: #1565c0, + 900: #0d47a1, + A100: #82b1ff, + A200: #448aff, + A400: #2979ff, + A700: #2962ff, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $light-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-light-blue: ( + 50: #e1f5fe, + 100: #b3e5fc, + 200: #81d4fa, + 300: #4fc3f7, + 400: #29b6f6, + 500: #03a9f4, + 600: #039be5, + 700: #0288d1, + 800: #0277bd, + 900: #01579b, + A100: #80d8ff, + A200: #40c4ff, + A400: #00b0ff, + A700: #0091ea, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $light-primary-text, + ) +); + +$mat-cyan: ( + 50: #e0f7fa, + 100: #b2ebf2, + 200: #80deea, + 300: #4dd0e1, + 400: #26c6da, + 500: #00bcd4, + 600: #00acc1, + 700: #0097a7, + 800: #00838f, + 900: #006064, + A100: #84ffff, + A200: #18ffff, + A400: #00e5ff, + A700: #00b8d4, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-teal: ( + 50: #e0f2f1, + 100: #b2dfdb, + 200: #80cbc4, + 300: #4db6ac, + 400: #26a69a, + 500: #009688, + 600: #00897b, + 700: #00796b, + 800: #00695c, + 900: #004d40, + A100: #a7ffeb, + A200: #64ffda, + A400: #1de9b6, + A700: #00bfa5, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-green: ( + 50: #e8f5e9, + 100: #c8e6c9, + 200: #a5d6a7, + 300: #81c784, + 400: #66bb6a, + 500: #4caf50, + 600: #43a047, + 700: #388e3c, + 800: #2e7d32, + 900: #1b5e20, + A100: #b9f6ca, + A200: #69f0ae, + A400: #00e676, + A700: #00c853, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-light-green: ( + 50: #f1f8e9, + 100: #dcedc8, + 200: #c5e1a5, + 300: #aed581, + 400: #9ccc65, + 500: #8bc34a, + 600: #7cb342, + 700: #689f38, + 800: #558b2f, + 900: #33691e, + A100: #ccff90, + A200: #b2ff59, + A400: #76ff03, + A700: #64dd17, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $dark-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-lime: ( + 50: #f9fbe7, + 100: #f0f4c3, + 200: #e6ee9c, + 300: #dce775, + 400: #d4e157, + 500: #cddc39, + 600: #c0ca33, + 700: #afb42b, + 800: #9e9d24, + 900: #827717, + A100: #f4ff81, + A200: #eeff41, + A400: #c6ff00, + A700: #aeea00, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $dark-primary-text, + 700: $dark-primary-text, + 800: $dark-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-yellow: ( + 50: #fffde7, + 100: #fff9c4, + 200: #fff59d, + 300: #fff176, + 400: #ffee58, + 500: #ffeb3b, + 600: #fdd835, + 700: #fbc02d, + 800: #f9a825, + 900: #f57f17, + A100: #ffff8d, + A200: #ffff00, + A400: #ffea00, + A700: #ffd600, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $dark-primary-text, + 700: $dark-primary-text, + 800: $dark-primary-text, + 900: $dark-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-amber: ( + 50: #fff8e1, + 100: #ffecb3, + 200: #ffe082, + 300: #ffd54f, + 400: #ffca28, + 500: #ffc107, + 600: #ffb300, + 700: #ffa000, + 800: #ff8f00, + 900: #ff6f00, + A100: #ffe57f, + A200: #ffd740, + A400: #ffc400, + A700: #ffab00, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $dark-primary-text, + 700: $dark-primary-text, + 800: $dark-primary-text, + 900: $dark-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $dark-primary-text, + ) +); + +$mat-orange: ( + 50: #fff3e0, + 100: #ffe0b2, + 200: #ffcc80, + 300: #ffb74d, + 400: #ffa726, + 500: #ff9800, + 600: #fb8c00, + 700: #f57c00, + 800: #ef6c00, + 900: #e65100, + A100: #ffd180, + A200: #ffab40, + A400: #ff9100, + A700: #ff6d00, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $dark-primary-text, + 700: $dark-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: black, + ) +); + +$mat-deep-orange: ( + 50: #fbe9e7, + 100: #ffccbc, + 200: #ffab91, + 300: #ff8a65, + 400: #ff7043, + 500: #ff5722, + 600: #f4511e, + 700: #e64a19, + 800: #d84315, + 900: #bf360c, + A100: #ff9e80, + A200: #ff6e40, + A400: #ff3d00, + A700: #dd2c00, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-brown: ( + 50: #efebe9, + 100: #d7ccc8, + 200: #bcaaa4, + 300: #a1887f, + 400: #8d6e63, + 500: #795548, + 600: #6d4c41, + 700: #5d4037, + 800: #4e342e, + 900: #3e2723, + A100: #d7ccc8, + A200: #bcaaa4, + A400: #8d6e63, + A700: #5d4037, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $light-primary-text, + 400: $light-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +$mat-grey: ( + 50: #fafafa, + 100: #f5f5f5, + 200: #eeeeee, + 300: #e0e0e0, + 400: #bdbdbd, + 500: #9e9e9e, + 600: #757575, + 700: #616161, + 800: #424242, + 900: #212121, + A100: #ffffff, + A200: #eeeeee, + A400: #bdbdbd, + A700: #616161, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $dark-primary-text, + 500: $dark-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $dark-primary-text, + A700: $light-primary-text, + ) +); + +// Alias for alternate spelling. +$mat-gray: $mat-grey; + +$mat-blue-grey: ( + 50: #eceff1, + 100: #cfd8dc, + 200: #b0bec5, + 300: #90a4ae, + 400: #78909c, + 500: #607d8b, + 600: #546e7a, + 700: #455a64, + 800: #37474f, + 900: #263238, + A100: #cfd8dc, + A200: #b0bec5, + A400: #78909c, + A700: #455a64, + contrast: ( + 50: $dark-primary-text, + 100: $dark-primary-text, + 200: $dark-primary-text, + 300: $dark-primary-text, + 400: $light-primary-text, + 500: $light-primary-text, + 600: $light-primary-text, + 700: $light-primary-text, + 800: $light-primary-text, + 900: $light-primary-text, + A100: $dark-primary-text, + A200: $dark-primary-text, + A400: $light-primary-text, + A700: $light-primary-text, + ) +); + +// Alias for alternate spelling. +$mat-blue-gray: $mat-blue-grey; + + +// Background palette for light themes. +$mat-light-theme-background: ( + status-bar: map_get($mat-grey, 300), + app-bar: map_get($mat-grey, 100), + background: map_get($mat-grey, 50), + hover: rgba(black, 0.04), // TODO(kara): check style with Material Design UX + card: white, + dialog: white, + disabled-button: rgba(black, 0.12), + raised-button: white, + focused-button: $dark-focused, + selected-button: map_get($mat-grey, 300), + selected-disabled-button: map_get($mat-grey, 400), + disabled-button-toggle: map_get($mat-grey, 200), + unselected-chip: map_get($mat-grey, 300), + disabled-list-option: map_get($mat-grey, 200), +); + +// Background palette for dark themes. +$mat-dark-theme-background: ( + // status-bar: black, + // app-bar: map_get($mat-grey, 900), + // background: #303030, + // hover: rgba(white, 0.04), // TODO(kara): check style with Material Design UX + // card: map_get($mat-grey, 800), + // dialog: map_get($mat-grey, 800), + // disabled-button: rgba(white, 0.12), + // raised-button: map-get($mat-grey, 800), + // focused-button: $light-focused, + // selected-button: map_get($mat-grey, 900), + // selected-disabled-button: map_get($mat-grey, 800), + // disabled-button-toggle: black, + // unselected-chip: map_get($mat-grey, 700), + // disabled-list-option: black, + status-bar: map_get($mat-grey, 300), + app-bar: map_get($mat-grey, 100), + background: map_get($mat-grey, 50), + hover: rgba(black, 0.04), // TODO(kara): check style with Material Design UX + card: white, + dialog: white, + disabled-button: rgba(black, 0.12), + raised-button: white, + focused-button: $dark-focused, + selected-button: map_get($mat-grey, 300), + selected-disabled-button: map_get($mat-grey, 400), + disabled-button-toggle: map_get($mat-grey, 200), + unselected-chip: map_get($mat-grey, 300), + disabled-list-option: map_get($mat-grey, 200), +); + +// Foreground palette for light themes. +$mat-light-theme-foreground: ( + base: black, + divider: $dark-dividers, + dividers: $dark-dividers, + disabled: $dark-disabled-text, + disabled-button: rgba(black, 0.26), + disabled-text: $dark-disabled-text, + elevation: black, + hint-text: $dark-disabled-text, + secondary-text: $dark-secondary-text, + icon: rgba(black, 0.54), + icons: rgba(black, 0.54), + text: rgba(black, 0.87), + slider-min: rgba(black, 0.87), + slider-off: rgba(black, 0.26), + slider-off-active: rgba(black, 0.38), +); + +// Foreground palette for dark themes. +$mat-dark-theme-foreground: ( + // base: white, + // divider: $light-dividers, + // dividers: $light-dividers, + // disabled: $light-disabled-text, + // disabled-button: rgba(white, 0.3), + // disabled-text: $light-disabled-text, + // elevation: black, + // hint-text: $light-disabled-text, + // secondary-text: $light-secondary-text, + // icon: white, + // icons: white, + // text: black, + // slider-min: white, + // slider-off: rgba(white, 0.3), + // slider-off-active: rgba(white, 0.3), + base: black, + divider: $dark-dividers, + dividers: $dark-dividers, + disabled: $dark-disabled-text, + disabled-button: rgba(black, 0.26), + disabled-text: $dark-disabled-text, + elevation: black, + hint-text: $dark-disabled-text, + secondary-text: $dark-secondary-text, + icon: rgba(black, 0.54), + icons: rgba(black, 0.54), + text: rgba(black, 0.87), + slider-min: rgba(black, 0.87), + slider-off: rgba(black, 0.26), + slider-off-active: rgba(black, 0.38), +); + + + +// For a given hue in a palette, return the contrast color from the map of contrast palettes. +// @param $color-map +// @param $hue +@function mat-contrast($palette, $hue) { + @return map-get(map-get($palette, contrast), $hue); +} + + +// Creates a map of hues to colors for a theme. This is used to define a theme palette in terms +// of the Material Design hues. +// @param $color-map +// @param $primary +// @param $lighter +@function mat-palette($base-palette, $default: 500, $lighter: 100, $darker: 700, $text: $default) { + $result: map_merge($base-palette, ( + default: map-get($base-palette, $default), + lighter: map-get($base-palette, $lighter), + darker: map-get($base-palette, $darker), + text: map-get($base-palette, $text), + + default-contrast: mat-contrast($base-palette, $default), + lighter-contrast: mat-contrast($base-palette, $lighter), + darker-contrast: mat-contrast($base-palette, $darker) + )); + + // For each hue in the palette, add a "-contrast" color to the map. + @each $hue, $color in $base-palette { + $result: map_merge($result, ( + '#{$hue}-contrast': mat-contrast($base-palette, $hue) + )); + } + + @return $result; +} + + +// Gets a color from a theme palette (the output of mat-palette). +// The hue can be one of the standard values (500, A400, etc.), one of the three preconfigured +// hues (default, lighter, darker), or any of the aforementioned prefixed with "-contrast". +// +// @param $color-map The theme palette (output of mat-palette). +// @param $hue The hue from the palette to use. If this is a value between 0 and 1, it will +// be treated as opacity. +// @param $opacity The alpha channel value for the color. +@function mat-color($palette, $hue: default, $opacity: null) { + // If hueKey is a number between zero and one, then it actually contains an + // opacity value, so recall this function with the default hue and that given opacity. + @if type-of($hue) == number and $hue >= 0 and $hue <= 1 { + @return mat-color($palette, default, $hue); + } + + $color: map-get($palette, $hue); + + @if (type-of($color) != color) { + // If the $color resolved to something different from a color (e.g. a CSS variable), + // we can't apply the opacity anyway so we return the value as is, otherwise Sass can + // throw an error or output something invalid. + @return $color; + } + + @return rgba($color, if($opacity == null, opacity($color), $opacity)); +} + + +// Creates a container object for a light theme to be given to individual component theme mixins. +@function mat-light-theme($primary, $accent, $warn: mat-palette($mat-red)) { + @return ( + primary: $primary, + accent: $accent, + warn: $warn, + is-dark: false, + foreground: $mat-light-theme-foreground, + background: $mat-light-theme-background, + ); +} + + +// Creates a container object for a dark theme to be given to individual component theme mixins. +@function mat-dark-theme($primary, $accent, $warn: mat-palette($mat-red)) { + @return ( + primary: $primary, + accent: $accent, + warn: $warn, + is-dark: true, + foreground: $mat-dark-theme-foreground, + background: $mat-dark-theme-background, + ); +} + + + +$mat-ripple-color-opacity: 0.1; + +@mixin mat-ripple() { + + // The host element of an mat-ripple directive should always have a position of "absolute" or + // "relative" so that the ripples inside are correctly positioned relatively to the container. + .mat-ripple { + overflow: hidden; + + // By default, every ripple container should have position: relative in favor of creating an + // easy API for developers using the MatRipple directive. + position: relative; + } + + .mat-ripple.mat-ripple-unbounded { + overflow: visible; + } + + .mat-ripple-element { + position: absolute; + border-radius: 50%; + pointer-events: none; + + transition: opacity, transform 0ms cubic-bezier(0, 0, 0.2, 1); + transform: scale(0); + + // In high contrast mode the ripple is opaque, causing it to obstruct the content. + @include cdk-high-contrast { + display: none; + } + } +} + +/* Theme for the ripple elements.*/ +@mixin mat-ripple-theme($theme) { + $foreground: map_get($theme, foreground); + $foreground-base: map_get($foreground, base); + + .mat-ripple-element { + // If the ripple color is resolves to a color *type*, we can use it directly, otherwise + // (e.g. it resolves to a CSS variable) we fall back to using the color and setting an opacity. + @if (type-of($foreground-base) == color) { + background-color: rgba($foreground-base, $mat-ripple-color-opacity); + } + @else { + background-color: $foreground-base; + opacity: $mat-ripple-color-opacity; + } + } +} + + + +// Utility for fetching a nested value from a typography config. +@function _mat-get-type-value($config, $level, $name) { + @return map-get(map-get($config, $level), $name); +} + +// Gets the font size for a level inside a typography config. +@function mat-font-size($config, $level) { + @return _mat-get-type-value($config, $level, font-size); +} + +// Gets the line height for a level inside a typography config. +@function mat-line-height($config, $level) { + @return _mat-get-type-value($config, $level, line-height); +} + +// Gets the font weight for a level inside a typography config. +@function mat-font-weight($config, $level) { + @return _mat-get-type-value($config, $level, font-weight); +} + +// Gets the letter spacing for a level inside a typography config. +@function mat-letter-spacing($config, $level) { + @return _mat-get-type-value($config, $level, letter-spacing); +} + +// Gets the font-family from a typography config and removes the quotes around it. +@function mat-font-family($config, $level: null) { + $font-family: map-get($config, font-family); + + @if $level != null { + $font-family: _mat-get-type-value($config, $level, font-family); + } + + // Guard against unquoting non-string values, because it's deprecated. + @return if(type-of($font-family) == string, unquote($font-family), $font-family); +} + +// Outputs the shorthand `font` CSS property, based on a set of typography values. Falls back to +// the individual properties if a value that isn't allowed in the shorthand is passed in. +@mixin mat-typography-font-shorthand($font-size, $font-weight, $line-height, $font-family) { + // If any of the values are set to `inherit`, we can't use the shorthand + // so we fall back to passing in the individual properties. + @if ($font-size == inherit or + $font-weight == inherit or + $line-height == inherit or + $font-family == inherit or + $font-size == null or + $font-weight == null or + $line-height == null or + $font-family == null) { + + font-size: $font-size; + font-weight: $font-weight; + line-height: $line-height; + font-family: $font-family; + } + @else { + // Otherwise use the shorthand `font`, because it's the least amount of bytes. Note + // that we need to use interpolation for `font-size/line-height` in order to prevent + // Sass from dividing the two values. + font: $font-weight #{$font-size}/#{$line-height} $font-family; + } +} + +// Converts a typography level into CSS styles. +@mixin mat-typography-level-to-styles($config, $level) { + $font-size: mat-font-size($config, $level); + $font-weight: mat-font-weight($config, $level); + $line-height: mat-line-height($config, $level); + $font-family: mat-font-family($config, $level); + + @include mat-typography-font-shorthand($font-size, $font-weight, $line-height, $font-family); + letter-spacing: mat-letter-spacing($config, $level); +} + + +@mixin mat-option-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + + .mat-option { + color: mat-color($foreground, text); + + &:hover:not(.mat-option-disabled), + &:focus:not(.mat-option-disabled) { + background: mat-color($background, hover); + } + + // In multiple mode there is a checkbox to show that the option is selected. + &.mat-selected:not(.mat-option-multiple):not(.mat-option-disabled) { + background: mat-color($background, hover); + } + + &.mat-active { + background: mat-color($background, hover); + color: mat-color($foreground, text); + } + + &.mat-option-disabled { + color: mat-color($foreground, hint-text); + } + } + + .mat-primary .mat-option.mat-selected:not(.mat-option-disabled) { + color: mat-color($primary, text); + } + + .mat-accent .mat-option.mat-selected:not(.mat-option-disabled) { + color: mat-color($accent, text); + } + + .mat-warn .mat-option.mat-selected:not(.mat-option-disabled) { + color: mat-color($warn, text); + } +} + +@mixin mat-option-typography($config) { + .mat-option { + font: { + family: mat-font-family($config); + size: mat-font-size($config, subheading-2); + } + } +} + + + + + +@mixin mat-optgroup-theme($theme) { + $foreground: map-get($theme, foreground); + + .mat-optgroup-label { + color: mat-color($foreground, secondary-text); + } + + .mat-optgroup-disabled .mat-optgroup-label { + color: mat-color($foreground, hint-text); + } +} + +@mixin mat-optgroup-typography($config) { + .mat-optgroup-label { + @include mat-typography-level-to-styles($config, body-2); + } +} + + + +@mixin mat-pseudo-checkbox-theme($theme) { + $is-dark-theme: map-get($theme, is-dark); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + + // NOTE(traviskaufman): While the spec calls for translucent blacks/whites for disabled colors, + // this does not work well with elements layered on top of one another. To get around this we + // blend the colors together based on the base color and the theme background. + $white-30pct-opacity-on-dark: #686868; + $black-26pct-opacity-on-light: #b0b0b0; + $disabled-color: if($is-dark-theme, $white-30pct-opacity-on-dark, $black-26pct-opacity-on-light); + $colored-box-selector: '.mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate'; + + .mat-pseudo-checkbox { + color: mat-color(map-get($theme, foreground), secondary-text); + + &::after { + color: mat-color($background, background); + } + } + + .mat-pseudo-checkbox-disabled { + color: $disabled-color; + } + + .mat-primary .mat-pseudo-checkbox-checked, + .mat-primary .mat-pseudo-checkbox-indeterminate { + background: mat-color(map-get($theme, primary)); + } + + // Default to the accent color. Note that the pseudo checkboxes are meant to inherit the + // theme from their parent, rather than implementing their own theming, which is why we + // don't attach to the `mat-*` classes. Also note that this needs to be below `.mat-primary` + // in order to allow for the color to be overwritten if the checkbox is inside a parent that + // has `mat-accent` and is placed inside another parent that has `mat-primary`. + .mat-pseudo-checkbox-checked, + .mat-pseudo-checkbox-indeterminate, + .mat-accent .mat-pseudo-checkbox-checked, + .mat-accent .mat-pseudo-checkbox-indeterminate { + background: mat-color(map-get($theme, accent)); + } + + .mat-warn .mat-pseudo-checkbox-checked, + .mat-warn .mat-pseudo-checkbox-indeterminate { + background: mat-color(map-get($theme, warn)); + } + + .mat-pseudo-checkbox-checked, + .mat-pseudo-checkbox-indeterminate { + &.mat-pseudo-checkbox-disabled { + background: $disabled-color; + } + } +} + + + +// Represents a typography level from the Material design spec. +@function mat-typography-level( + $font-size, + $line-height: $font-size, + $font-weight: 400, + $font-family: null, + $letter-spacing: null) { + + @return ( + font-size: $font-size, + line-height: $line-height, + font-weight: $font-weight, + font-family: $font-family, + letter-spacing: $letter-spacing + ); +} + +// Represents a collection of typography levels. +// Defaults come from https://material.io/guidelines/style/typography.html +// Note: The spec doesn't mention letter spacing. The values here come from +// eyeballing it until it looked exactly like the spec examples. +@function mat-typography-config( + $font-family: 'Roboto, "Helvetica Neue", sans-serif', + $display-4: mat-typography-level(112px, 112px, 300, $letter-spacing: -0.05em), + $display-3: mat-typography-level(56px, 56px, 400, $letter-spacing: -0.02em), + $display-2: mat-typography-level(45px, 48px, 400, $letter-spacing: -0.005em), + $display-1: mat-typography-level(34px, 40px, 400), + $headline: mat-typography-level(24px, 32px, 400), + $title: mat-typography-level(20px, 32px, 500), + $subheading-2: mat-typography-level(16px, 28px, 400), + $subheading-1: mat-typography-level(15px, 24px, 400), + $body-2: mat-typography-level(14px, 24px, 500), + $body-1: mat-typography-level(14px, 20px, 400), + $caption: mat-typography-level(12px, 20px, 400), + $button: mat-typography-level(14px, 14px, 500), + // Line-height must be unit-less fraction of the font-size. + $input: mat-typography-level(inherit, 1.125, 400) +) { + + // Declare an initial map with all of the levels. + $config: ( + display-4: $display-4, + display-3: $display-3, + display-2: $display-2, + display-1: $display-1, + headline: $headline, + title: $title, + subheading-2: $subheading-2, + subheading-1: $subheading-1, + body-2: $body-2, + body-1: $body-1, + caption: $caption, + button: $button, + input: $input, + ); + + // Loop through the levels and set the `font-family` of the ones that don't have one to the base. + // Note that Sass can't modify maps in place, which means that we need to merge and re-assign. + @each $key, $level in $config { + @if map-get($level, font-family) == null { + $new-level: map-merge($level, (font-family: $font-family)); + $config: map-merge($config, ($key: $new-level)); + } + } + + // Add the base font family to the config. + @return map-merge($config, (font-family: $font-family)); +} + +// Adds the base typography styles, based on a config. +@mixin mat-base-typography($config, $selector: '.mat-typography') { + .mat-h1, .mat-headline, #{$selector} h1 { + @include mat-typography-level-to-styles($config, headline); + margin: 0 0 16px; + } + + .mat-h2, .mat-title, #{$selector} h2 { + @include mat-typography-level-to-styles($config, title); + margin: 0 0 16px; + } + + .mat-h3, .mat-subheading-2, #{$selector} h3 { + @include mat-typography-level-to-styles($config, subheading-2); + margin: 0 0 16px; + } + + .mat-h4, .mat-subheading-1, #{$selector} h4 { + @include mat-typography-level-to-styles($config, subheading-1); + margin: 0 0 16px; + } + + // Note: the spec doesn't have anything that would correspond to h5 and h6, but we add these for + // consistency. The font sizes come from the Chrome user agent styles which have h5 at 0.83em + // and h6 at 0.67em. + .mat-h5, #{$selector} h5 { + @include mat-typography-font-shorthand( + // calc is used here to support css variables + calc(#{mat-font-size($config, body-1)} * 0.83), + mat-font-weight($config, body-1), + mat-line-height($config, body-1), + mat-font-family($config, body-1) + ); + + margin: 0 0 12px; + } + + .mat-h6, #{$selector} h6 { + @include mat-typography-font-shorthand( + // calc is used here to support css variables + calc(#{mat-font-size($config, body-1)} * 0.67), + mat-font-weight($config, body-1), + mat-line-height($config, body-1), + mat-font-family($config, body-1) + ); + + margin: 0 0 12px; + } + + .mat-body-strong, .mat-body-2 { + @include mat-typography-level-to-styles($config, body-2); + } + + .mat-body, .mat-body-1, #{$selector} { + @include mat-typography-level-to-styles($config, body-1); + + p { + margin: 0 0 12px; + } + } + + .mat-small, .mat-caption { + @include mat-typography-level-to-styles($config, caption); + } + + .mat-display-4, #{$selector} .mat-display-4 { + @include mat-typography-level-to-styles($config, display-4); + margin: 0 0 56px; + } + + .mat-display-3, #{$selector} .mat-display-3 { + @include mat-typography-level-to-styles($config, display-3); + margin: 0 0 64px; + } + + .mat-display-2, #{$selector} .mat-display-2 { + @include mat-typography-level-to-styles($config, display-2); + margin: 0 0 64px; + } + + .mat-display-1, #{$selector} .mat-display-1 { + @include mat-typography-level-to-styles($config, display-1); + margin: 0 0 64px; + } +} + + + + +@mixin mat-autocomplete-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + + .mat-autocomplete-panel { + @include _mat-theme-overridable-elevation(4, $theme); + background: mat-color($background, card); + color: mat-color($foreground, text); + + // Selected options in autocompletes should not be gray, but we + // only want to override the background for selected options if + // they are *not* in hover or focus state. This change has to be + // made here because base option styles are shared between the + // autocomplete and the select. + .mat-option.mat-selected:not(.mat-active):not(:hover) { + background: mat-color($background, card); + + &:not(.mat-option-disabled) { + color: mat-color($foreground, text); + } + } + } + +} + +@mixin mat-autocomplete-typography($config) { } + +// This contains all of the styles for the badge +// rather than just the color/theme because of +// no style sheet support for directives. + + + + + +$mat-badge-font-size: 12px; +$mat-badge-font-weight: 600; +$mat-badge-default-size: 22px !default; +$mat-badge-small-size: $mat-badge-default-size - 6; +$mat-badge-large-size: $mat-badge-default-size + 6; + +// Mixin for building offset given different sizes +@mixin _mat-badge-size($size) { + .mat-badge-content { + width: $size; + height: $size; + line-height: $size; + } + + &.mat-badge-above { + .mat-badge-content { + top: -$size / 2; + } + } + + &.mat-badge-below { + .mat-badge-content { + bottom: -$size / 2; + } + } + + &.mat-badge-before { + .mat-badge-content { + left: -$size; + } + } + + [dir='rtl'] &.mat-badge-before { + .mat-badge-content { + left: auto; + right: -$size; + } + } + + &.mat-badge-after { + .mat-badge-content { + right: -$size; + } + } + + [dir='rtl'] &.mat-badge-after { + .mat-badge-content { + right: auto; + left: -$size; + } + } + + &.mat-badge-overlap { + &.mat-badge-before { + .mat-badge-content { + left: -$size / 2; + } + } + + [dir='rtl'] &.mat-badge-before { + .mat-badge-content { + left: auto; + right: -$size / 2; + } + } + + &.mat-badge-after { + .mat-badge-content { + right: -$size / 2; + } + } + + [dir='rtl'] &.mat-badge-after { + .mat-badge-content { + right: auto; + left: -$size / 2; + } + } + } +} + +@mixin mat-badge-theme($theme) { + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $primary: map-get($theme, primary); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-badge-content { + color: mat-color($primary, default-contrast); + background: mat-color($primary); + + @include cdk-high-contrast { + outline: solid 1px; + border-radius: 0; + } + } + + .mat-badge-accent { + .mat-badge-content { + background: mat-color($accent); + color: mat-color($accent, default-contrast); + } + } + + .mat-badge-warn { + .mat-badge-content { + color: mat-color($warn, default-contrast); + background: mat-color($warn); + } + } + + .mat-badge { + position: relative; + } + + .mat-badge-hidden { + .mat-badge-content { + display: none; + } + } + + .mat-badge-disabled { + .mat-badge-content { + $app-background: mat-color($background, 'background'); + $badge-color: mat-color($foreground, disabled-button); + + // The disabled color usually has some kind of opacity, but because the badge is overlayed + // on top of something else, it won't look good if it's opaque. If it is a color *type*, + // we convert it into a solid color by taking the opacity from the rgba value and using + // the value to determine the percentage of the background to put into foreground when + // mixing the colors together. + @if (type-of($badge-color) == color and type-of($app-background) == color) { + $badge-opacity: opacity($badge-color); + background: mix($app-background, rgba($badge-color, 1), (1 - $badge-opacity) * 100%); + } + @else { + background: $badge-color; + } + + color: mat-color($foreground, disabled-text); + } + } + + .mat-badge-content { + position: absolute; + text-align: center; + display: inline-block; + border-radius: 50%; + transition: transform 200ms ease-in-out; + transform: scale(0.6); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + pointer-events: none; + } + + .ng-animate-disabled .mat-badge-content, + .mat-badge-content._mat-animation-noopable { + transition: none; + } + + // The active class is added after the element is added + // so it can animate scale to default + .mat-badge-content.mat-badge-active { + // Scale to `none` instead of `1` to avoid blurry text in some browsers. + transform: none; + } + + .mat-badge-small { + @include _mat-badge-size($mat-badge-small-size); + } + .mat-badge-medium { + @include _mat-badge-size($mat-badge-default-size); + } + .mat-badge-large { + @include _mat-badge-size($mat-badge-large-size); + } +} + +@mixin mat-badge-typography($config) { + .mat-badge-content { + font-weight: $mat-badge-font-weight; + font-size: $mat-badge-font-size; + font-family: mat-font-family($config); + } + + .mat-badge-small .mat-badge-content { + // Set the font size to 75% of the original. + font-size: $mat-badge-font-size * 0.75; + } + + .mat-badge-large .mat-badge-content { + font-size: $mat-badge-font-size * 2; + } +} + + + + + +@mixin mat-bottom-sheet-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-bottom-sheet-container { + @include _mat-theme-elevation(16, $theme); + background: mat-color($background, dialog); + color: mat-color($foreground, text); + } +} + +@mixin mat-bottom-sheet-typography($config) { + .mat-bottom-sheet-container { + @include mat-typography-level-to-styles($config, body-1); + } +} + + + + + +$_mat-button-ripple-opacity: 0.1; + +// Applies a focus style to an mat-button element for each of the supported palettes. +@mixin _mat-button-focus-overlay-color($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + + &.mat-primary .mat-button-focus-overlay { + background-color: mat-color($primary); + } + + &.mat-accent .mat-button-focus-overlay { + background-color: mat-color($accent); + } + + &.mat-warn .mat-button-focus-overlay { + background-color: mat-color($warn); + } + + &[disabled] .mat-button-focus-overlay { + background-color: transparent; + } +} + +// Applies the background color for a ripple. If the value provided is not a Sass color, +// we assume that we've been given a CSS variable. Since we can't perform alpha-blending +// on a CSS variable, we instead add the opacity directly to the ripple element. +@mixin _mat-button-ripple-background($palette, $hue, $opacity) { + $background-color: mat-color($palette, $hue, $opacity); + background-color: $background-color; + @if (type-of($background-color) != color) { + opacity: $opacity; + } +} + +@mixin _mat-button-ripple-color($theme, $hue, $opacity: $_mat-button-ripple-opacity) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + + &.mat-primary .mat-ripple-element { + @include _mat-button-ripple-background($primary, $hue, $opacity); + } + + &.mat-accent .mat-ripple-element { + @include _mat-button-ripple-background($accent, $hue, $opacity); + } + + &.mat-warn .mat-ripple-element { + @include _mat-button-ripple-background($warn, $hue, $opacity); + } +} + +// Applies a property to an mat-button element for each of the supported palettes. +@mixin _mat-button-theme-property($theme, $property, $hue) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + &.mat-primary { + #{$property}: mat-color($primary, $hue); + } + &.mat-accent { + #{$property}: mat-color($accent, $hue); + } + &.mat-warn { + #{$property}: mat-color($warn, $hue); + } + + &.mat-primary, &.mat-accent, &.mat-warn, &[disabled] { + &[disabled] { + $palette: if($property == 'color', $foreground, $background); + #{$property}: mat-color($palette, disabled-button); + } + } +} + +@mixin mat-button-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-button, .mat-icon-button, .mat-stroked-button { + // Buttons without a background color should inherit the font color. This is necessary to + // ensure that the button is readable on custom background colors. It's wrong to always assume + // that those buttons are always placed inside of containers with the default background + // color of the theme (e.g. themed toolbars). + color: inherit; + background: transparent; + + @include _mat-button-theme-property($theme, 'color', text); + @include _mat-button-focus-overlay-color($theme); + + // Setup the ripple color to be based on the text color. This ensures that the ripples + // are matching with the current theme palette and are in contrast to the background color + // (e.g in themed toolbars). + .mat-ripple-element { + opacity: $_mat-button-ripple-opacity; + background-color: currentColor; + } + } + + .mat-button-focus-overlay { + background: map_get($foreground, base); + } + + // Note: this needs a bit extra specificity, because we're not guaranteed the inclusion + // order of the theme styles and the button reset may end up resetting this as well. + .mat-stroked-button:not([disabled]) { + border-color: mat-color($foreground, divider); + } + + .mat-flat-button, .mat-raised-button, .mat-fab, .mat-mini-fab { + // Default font and background color when not using any color palette. + color: mat-color($foreground, text); + background-color: mat-color($background, raised-button); + + @include _mat-button-theme-property($theme, 'color', default-contrast); + @include _mat-button-theme-property($theme, 'background-color', default); + @include _mat-button-ripple-color($theme, default-contrast); + } + + .mat-stroked-button, .mat-flat-button { + @include _mat-theme-overridable-elevation(0, $theme); + } + + .mat-raised-button { + @include _mat-theme-overridable-elevation(2, $theme); + + &:not([disabled]):active { + @include _mat-theme-overridable-elevation(8, $theme); + } + + &[disabled] { + @include _mat-theme-overridable-elevation(0, $theme); + } + } + + .mat-fab, .mat-mini-fab { + @include _mat-theme-overridable-elevation(6, $theme); + + &:not([disabled]):active { + @include _mat-theme-overridable-elevation(12, $theme); + } + + &[disabled] { + @include _mat-theme-overridable-elevation(0, $theme); + } + } +} + +@mixin mat-button-typography($config) { + .mat-button, .mat-raised-button, .mat-icon-button, .mat-stroked-button, + .mat-flat-button, .mat-fab, .mat-mini-fab { + font: { + family: mat-font-family($config, button); + size: mat-font-size($config, button); + weight: mat-font-weight($config, button); + } + } +} + + + + + + +@mixin mat-button-toggle-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + $divider-color: mat-color($foreground, divider); + + .mat-button-toggle-standalone, + .mat-button-toggle-group { + @include _mat-theme-elevation(2, $theme); + } + + .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, + .mat-button-toggle-group-appearance-standard { + box-shadow: none; + } + + .mat-button-toggle { + color: mat-color($foreground, hint-text); + + .mat-button-toggle-focus-overlay { + background-color: mat-color($background, focused-button); + } + } + + .mat-button-toggle-appearance-standard { + color: mat-color($foreground, text); + background: mat-color($background, card); + + .mat-button-toggle-focus-overlay { + background-color: mat-color($background, focused-button, 1); + } + } + + .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: solid 1px $divider-color; + } + + [dir='rtl'] .mat-button-toggle-group-appearance-standard .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: solid 1px $divider-color; + } + + .mat-button-toggle-group-appearance-standard.mat-button-toggle-vertical { + .mat-button-toggle + .mat-button-toggle { + border-left: none; + border-right: none; + border-top: solid 1px $divider-color; + } + } + + .mat-button-toggle-checked { + background-color: mat-color($background, selected-button); + color: mat-color($foreground, secondary-text); + + &.mat-button-toggle-appearance-standard { + color: mat-color($foreground, text); + } + } + + .mat-button-toggle-disabled { + color: mat-color($foreground, disabled-button); + background-color: mat-color($background, disabled-button-toggle); + + &.mat-button-toggle-appearance-standard { + background: mat-color($background, card); + } + + &.mat-button-toggle-checked { + background-color: mat-color($background, selected-disabled-button); + } + } + + .mat-button-toggle-standalone.mat-button-toggle-appearance-standard, + .mat-button-toggle-group-appearance-standard { + border: solid 1px $divider-color; + } +} + +@mixin mat-button-toggle-typography($config) { + .mat-button-toggle { + font-family: mat-font-family($config); + } +} + + + + + + + +@mixin mat-card-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-card { + @include _mat-theme-overridable-elevation(1, $theme); + background: mat-color($background, card); + color: mat-color($foreground, text); + + // Needs extra specificity to be able to override the elevation selectors. + &.mat-card-flat { + @include _mat-theme-overridable-elevation(0, $theme); + } + } + + .mat-card-subtitle { + color: mat-color($foreground, secondary-text); + } +} + +@mixin mat-card-typography($config) { + .mat-card { + font-family: mat-font-family($config); + } + + .mat-card-title { + font: { + size: mat-font-size($config, headline); + weight: mat-font-weight($config, title); + } + } + + .mat-card-header .mat-card-title { + font-size: mat-font-size($config, title); + } + + .mat-card-subtitle, + .mat-card-content { + font-size: mat-font-size($config, body-1); + } +} + + + + + + +@mixin mat-checkbox-theme($theme) { + $is-dark-theme: map-get($theme, is-dark); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + + // The color of the checkbox's checkmark / mixedmark. + $checkbox-mark-color: mat-color($background, background); + + // NOTE(traviskaufman): While the spec calls for translucent blacks/whites for disabled colors, + // this does not work well with elements layered on top of one another. To get around this we + // blend the colors together based on the base color and the theme background. + $white-30pct-opacity-on-dark: #686868; + $black-26pct-opacity-on-light: #b0b0b0; + $disabled-color: if($is-dark-theme, $white-30pct-opacity-on-dark, $black-26pct-opacity-on-light); + + .mat-checkbox-frame { + border-color: mat-color($foreground, secondary-text); + } + + .mat-checkbox-checkmark { + fill: $checkbox-mark-color; + } + + .mat-checkbox-checkmark-path { + // !important is needed here because a stroke must be set as an + // attribute on the SVG in order for line animation to work properly. + stroke: $checkbox-mark-color !important; + + @include cdk-high-contrast(black-on-white) { + // Having the one above be !important ends up overriding the browser's automatic + // color inversion so we need to re-invert it ourselves for black-on-white. + stroke: #000 !important; + } + } + + .mat-checkbox-mixedmark { + background-color: $checkbox-mark-color; + } + + .mat-checkbox-indeterminate, .mat-checkbox-checked { + &.mat-primary .mat-checkbox-background { + background-color: mat-color($primary); + } + + &.mat-accent .mat-checkbox-background { + background-color: mat-color($accent); + } + + &.mat-warn .mat-checkbox-background { + background-color: mat-color($warn); + } + } + + .mat-checkbox-disabled { + &.mat-checkbox-checked, + &.mat-checkbox-indeterminate { + .mat-checkbox-background { + background-color: $disabled-color; + } + } + + &:not(.mat-checkbox-checked) { + .mat-checkbox-frame { + border-color: $disabled-color; + } + } + + .mat-checkbox-label { + color: mat-color($foreground, secondary-text); + } + + @include cdk-high-contrast { + opacity: 0.5; + } + } + + // This one is moved down here so it can target both + // the theme colors and the disabled state. + @include cdk-high-contrast { + .mat-checkbox-background { + // Needs to be removed because it hides the checkbox outline. + background: none; + } + } + + // Switch this to a solid color since we're using `opacity` + // to control how opaque the ripple should be. + .mat-checkbox .mat-ripple-element { + background-color: map_get(map-get($theme, foreground), base); + } + + .mat-checkbox-checked:not(.mat-checkbox-disabled), + .mat-checkbox:active:not(.mat-checkbox-disabled) { + &.mat-primary .mat-ripple-element { + background: mat-color($primary); + } + + &.mat-accent .mat-ripple-element { + background: mat-color($accent); + } + + &.mat-warn .mat-ripple-element { + background: mat-color($warn); + } + } +} + +@mixin mat-checkbox-typography($config) { + .mat-checkbox { + font-family: mat-font-family($config); + } + + // TODO(kara): Remove this style when fixing vertical baseline + .mat-checkbox-layout .mat-checkbox-label { + line-height: mat-line-height($config, body-2); + } +} + + + + + + +$mat-chip-remove-font-size: 18px; + +@mixin mat-chips-color($foreground, $background) { + background-color: $background; + color: $foreground; + + .mat-chip-remove { + color: $foreground; + opacity: 0.4; + } +} + +@mixin mat-chips-theme-color($palette) { + @include mat-chips-color(mat-color($palette, default-contrast), mat-color($palette)); + + .mat-ripple-element { + background: mat-color($palette, default-contrast, 0.1); + } +} + +@mixin mat-chips-theme($theme) { + $is-dark-theme: map-get($theme, is-dark); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + $unselected-background: mat-color($background, unselected-chip); + $unselected-foreground: mat-color($foreground, text); + + .mat-chip.mat-standard-chip { + @include mat-chips-color($unselected-foreground, $unselected-background); + + &:not(.mat-chip-disabled) { + &:active { + @include _mat-theme-elevation(3, $theme); + } + + .mat-chip-remove:hover { + opacity: 0.54; + } + } + + &.mat-chip-disabled { + opacity: 0.4; + } + + &::after { + background: map_get($foreground, base); + } + } + + .mat-chip.mat-standard-chip.mat-chip-selected { + &.mat-primary { + @include mat-chips-theme-color($primary); + } + + &.mat-warn { + @include mat-chips-theme-color($warn); + } + + &.mat-accent { + @include mat-chips-theme-color($accent); + } + } +} + +@mixin mat-chips-typography($config) { + .mat-chip { + font-size: mat-font-size($config, body-2); + font-weight: mat-font-weight($config, body-2); + + .mat-chip-trailing-icon.mat-icon, + .mat-chip-remove.mat-icon { + font-size: $mat-chip-remove-font-size; + } + } +} + + + + + +@mixin mat-table-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-table { + background: mat-color($background, 'card'); + } + + .mat-table thead, .mat-table tbody, .mat-table tfoot, + mat-header-row, mat-row, mat-footer-row, + [mat-header-row], [mat-row], [mat-footer-row], + .mat-table-sticky { + background: inherit; + } + + mat-row, mat-header-row, mat-footer-row, + th.mat-header-cell, td.mat-cell, td.mat-footer-cell { + border-bottom-color: mat-color($foreground, divider); + } + + .mat-header-cell { + color: mat-color($foreground, secondary-text); + } + + .mat-cell, .mat-footer-cell { + color: mat-color($foreground, text); + } +} + +@mixin mat-table-typography($config) { + .mat-table { + font-family: mat-font-family($config); + } + + .mat-header-cell { + font-size: mat-font-size($config, caption); + font-weight: mat-font-weight($config, body-2); + } + + .mat-cell, .mat-footer-cell { + font-size: mat-font-size($config, body-1); + } +} + + + + + + + +$mat-datepicker-selected-today-box-shadow-width: 1px; +$mat-datepicker-selected-fade-amount: 0.6; +$mat-datepicker-today-fade-amount: 0.2; +$mat-calendar-body-font-size: 13px !default; +$mat-calendar-weekday-table-font-size: 11px !default; + +@mixin _mat-datepicker-color($palette) { + .mat-calendar-body-selected { + background-color: mat-color($palette); + color: mat-color($palette, default-contrast); + } + + .mat-calendar-body-disabled > .mat-calendar-body-selected { + $background: mat-color($palette); + + @if (type-of($background) == color) { + background-color: fade-out($background, $mat-datepicker-selected-fade-amount); + } + @else { + // If we couldn't resolve to background to a color (e.g. it's a CSS variable), + // fall back to fading the content out via `opacity`. + opacity: $mat-datepicker-today-fade-amount; + } + } + + .mat-calendar-body-today.mat-calendar-body-selected { + box-shadow: inset 0 0 0 $mat-datepicker-selected-today-box-shadow-width + mat-color($palette, default-contrast); + } +} + +@mixin mat-datepicker-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + + .mat-calendar-arrow { + border-top-color: mat-color($foreground, icon); + } + + // The prev/next buttons need a bit more specificity to + // avoid being overwritten by the .mat-icon-button. + .mat-datepicker-toggle, + .mat-datepicker-content .mat-calendar-next-button, + .mat-datepicker-content .mat-calendar-previous-button { + color: mat-color($foreground, icon); + } + + .mat-calendar-table-header { + color: mat-color($foreground, hint-text); + } + + .mat-calendar-table-header-divider::after { + background: mat-color($foreground, divider); + } + + .mat-calendar-body-label { + color: mat-color($foreground, secondary-text); + } + + .mat-calendar-body-cell-content { + color: mat-color($foreground, text); + border-color: transparent; + } + + .mat-calendar-body-disabled > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + color: mat-color($foreground, disabled-text); + } + + .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover, + .cdk-keyboard-focused .mat-calendar-body-active, + .cdk-program-focused .mat-calendar-body-active { + & > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected) { + background-color: mat-color($background, hover); + } + } + + .mat-calendar-body-today:not(.mat-calendar-body-selected) { + // Note: though it's not text, the border is a hint about the fact that this is today's date, + // so we use the hint color. + border-color: mat-color($foreground, hint-text); + } + + .mat-calendar-body-disabled > .mat-calendar-body-today:not(.mat-calendar-body-selected) { + $color: mat-color($foreground, hint-text); + + @if (type-of($color) == color) { + border-color: fade-out($color, $mat-datepicker-today-fade-amount); + } + @else { + // If the color didn't resolve to a color value, but something like a CSS variable, we can't + // fade it out so we fall back to reducing the element opacity. Note that we don't use the + // $mat-datepicker-today-fade-amount, because hint text usually has some opacity applied + // to it already and we don't want them to stack on top of each other. + opacity: 0.5; + } + } + + @include _mat-datepicker-color(map-get($theme, primary)); + + .mat-datepicker-content { + @include _mat-theme-elevation(4, $theme); + background-color: mat-color($background, card); + color: mat-color($foreground, text); + + &.mat-accent { + @include _mat-datepicker-color(map-get($theme, accent)); + } + + &.mat-warn { + @include _mat-datepicker-color(map-get($theme, warn)); + } + } + + .mat-datepicker-content-touch { + @include _mat-theme-elevation(0, $theme); + } + + .mat-datepicker-toggle-active { + color: mat-color(map-get($theme, primary), text); + + &.mat-accent { + color: mat-color(map-get($theme, accent), text); + } + + &.mat-warn { + color: mat-color(map-get($theme, warn), text); + } + } +} + +@mixin mat-datepicker-typography($config) { + .mat-calendar { + font-family: mat-font-family($config); + } + + .mat-calendar-body { + font-size: $mat-calendar-body-font-size; + } + + .mat-calendar-body-label, + .mat-calendar-period-button { + font: { + size: mat-font-size($config, button); + weight: mat-font-weight($config, button); + } + } + + .mat-calendar-table-header th { + font: { + size: $mat-calendar-weekday-table-font-size; + weight: mat-font-weight($config, body-1); + } + } +} + + + + + + + +@mixin mat-dialog-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-dialog-container { + @include _mat-theme-elevation(24, $theme); + background: mat-color($background, dialog); + color: mat-color($foreground, text); + } +} + +@mixin mat-dialog-typography($config) { + .mat-dialog-title { + @include mat-typography-level-to-styles($config, title); + } +} + + + + + + +@mixin mat-expansion-panel-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-expansion-panel { + @include _mat-theme-overridable-elevation(2, $theme); + background: mat-color($background, card); + color: mat-color($foreground, text); + } + + .mat-action-row { + border-top-color: mat-color($foreground, divider); + } + + .mat-expansion-panel { + & .mat-expansion-panel-header.cdk-keyboard-focused, + & .mat-expansion-panel-header.cdk-program-focused, + &:not(.mat-expanded) .mat-expansion-panel-header:hover { + &:not([aria-disabled='true']) { + background: mat-color($background, hover); + } + } + } + + // Disable the hover on touch devices since it can appear like it is stuck. We can't use + // `@media (hover)` above, because the desktop support browser support isn't great. + @media (hover: none) { + .mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true']) + .mat-expansion-panel-header:hover { + background: mat-color($background, card); + } + } + + .mat-expansion-panel-header-title { + color: mat-color($foreground, text); + } + + .mat-expansion-panel-header-description, + .mat-expansion-indicator::after { + color: mat-color($foreground, secondary-text); + } + + .mat-expansion-panel-header[aria-disabled='true'] { + color: mat-color($foreground, disabled-button); + + .mat-expansion-panel-header-title, + .mat-expansion-panel-header-description { + color: inherit; + } + } +} + +@mixin mat-expansion-panel-typography($config) { + .mat-expansion-panel-header { + font: { + family: mat-font-family($config, subheading-1); + size: mat-font-size($config, subheading-1); + weight: mat-font-weight($config, subheading-1); + } + } + + .mat-expansion-panel-content { + @include mat-typography-level-to-styles($config, body-1); + } +} + + + + +// This mixin will ensure that lines that overflow the container will hide the overflow and +// truncate neatly with an ellipsis. +@mixin mat-truncate-line() { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +// Mixin to provide all mat-line styles, changing secondary font size based on whether the list +// is in dense mode. +@mixin mat-line-base($secondary-font-size) { + .mat-line { + @include mat-truncate-line(); + display: block; + box-sizing: border-box; + + // all lines but the top line should have smaller text + &:nth-child(n+2) { + font-size: $secondary-font-size; + } + } +} + +// This mixin normalizes default element styles, e.g. font weight for heading text. +@mixin mat-normalize-text() { + & > * { + margin: 0; + padding: 0; + font-weight: normal; + font-size: inherit; + } +} + +// This mixin provides base styles for the wrapper around mat-line elements in a list. +@mixin mat-line-wrapper-base() { + @include mat-normalize-text(); + + display: flex; + flex-direction: column; + width: 100%; + box-sizing: border-box; + overflow: hidden; + + // Must remove wrapper when lines are empty or it takes up horizontal + // space and pushes other elements to the right. + &:empty { + display: none; + } +} + + + +// Include this empty mixin for consistency with the other components. +@mixin mat-grid-list-theme($theme) { } + +@mixin mat-grid-list-typography($config) { + .mat-grid-tile-header, + .mat-grid-tile-footer { + @include mat-line-base(mat-font-size($config, caption)); + font-size: mat-font-size($config, body-1); + } +} + + + + +// Include this empty mixin for consistency with the other components. +@mixin mat-icon-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-icon { + &.mat-primary { + color: mat-color($primary, text); + } + + &.mat-accent { + color: mat-color($accent, text); + } + + &.mat-warn { + color: mat-color($warn, text); + } + } +} + +@mixin mat-icon-typography($config) { } + + + + + +// Renders a gradient for showing the dashed line when the input is disabled. +// Unlike using a border, a gradient allows us to adjust the spacing of the dotted line +// to match the Material Design spec. +@mixin mat-control-disabled-underline($color) { + background-image: linear-gradient(to right, $color 0%, $color 33%, transparent 0%); + background-size: 4px 100%; + background-repeat: repeat-x; +} + +// Figures out the color of the placeholder for a form control. +// Used primarily to prevent the various form controls from +// becoming out of sync since these colors aren't in a palette. +@function _mat-control-placeholder-color($theme) { + $foreground: map-get($theme, foreground); + $is-dark-theme: map-get($theme, is-dark); + @return mat-color($foreground, secondary-text, if($is-dark-theme, 0.5, 0.42)); +} + + +/* stylelint-disable material/no-prefixes */ +@mixin user-select($value) { + -webkit-user-select: $value; + -moz-user-select: $value; + -ms-user-select: $value; + user-select: $value; +} + +@mixin input-placeholder { + &::placeholder { + @content; + } + + &::-moz-placeholder { + @content; + } + + &::-webkit-input-placeholder { + @content; + } + + &:-ms-input-placeholder { + @content; + } +} + +@mixin cursor-grab { + cursor: -webkit-grab; + cursor: grab; +} + +@mixin cursor-grabbing { + cursor: -webkit-grabbing; + cursor: grabbing; +} + +@mixin backface-visibility($value) { + -webkit-backface-visibility: $value; + backface-visibility: $value; +} +/* stylelint-enable */ + + + +@mixin mat-input-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $foreground: map-get($theme, foreground); + + .mat-form-field-type-mat-native-select .mat-form-field-infix::after { + color: mat-color($foreground, secondary-text); + } + + .mat-input-element:disabled, + .mat-form-field-type-mat-native-select.mat-form-field-disabled .mat-form-field-infix::after { + color: mat-color($foreground, disabled-text); + } + + .mat-input-element { + caret-color: mat-color($primary, text); + + @include input-placeholder { + color: _mat-control-placeholder-color($theme); + } + + // On dark themes we set the native `select` color to some shade of white, + // however the color propagates to all of the `option` elements, which are + // always on a white background inside the dropdown, causing them to blend in. + // Since we can't change background of the dropdown, we need to explicitly + // reset the color of the options to something dark. + @if (map-get($theme, is-dark)) { + option { + color: $dark-primary-text; + } + + option:disabled { + color: $dark-disabled-text; + } + } + } + + .mat-accent .mat-input-element { + caret-color: mat-color($accent, text); + } + + .mat-warn .mat-input-element, + .mat-form-field-invalid .mat-input-element { + caret-color: mat-color($warn, text); + } + + .mat-form-field-type-mat-native-select.mat-form-field-invalid .mat-form-field-infix::after { + color: mat-color($warn, text); + } +} + +@mixin mat-input-typography($config) { + // The unit-less line-height from the font config. + $line-height: mat-line-height($config, input); + + // The amount of space between the top of the line and the top of the actual text + // (as a fraction of the font-size). + $line-spacing: ($line-height - 1) / 2; + + // elements seem to have their height set slightly too large on Safari causing the text to + // be misaligned w.r.t. the placeholder. Adding this margin corrects it. + input.mat-input-element { + margin-top: -$line-spacing * 1em; + } +} + + + + + + + +@mixin mat-list-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-list-base { + .mat-list-item { + color: mat-color($foreground, text); + } + + .mat-list-option { + color: mat-color($foreground, text); + } + + .mat-subheader { + color: mat-color($foreground, secondary-text); + } + } + + .mat-list-item-disabled { + background-color: mat-color($background, disabled-list-option); + } + + .mat-list-option, + .mat-nav-list .mat-list-item, + .mat-action-list .mat-list-item { + &:hover, &:focus { + background: mat-color($background, 'hover'); + } + } +} + +@mixin mat-list-typography($config) { + $font-family: mat-font-family($config); + + .mat-list-item { + font-family: $font-family; + } + + .mat-list-option { + font-family: $font-family; + } + + // Default list + .mat-list-base { + .mat-list-item { + font-size: mat-font-size($config, subheading-2); + @include mat-line-base(mat-font-size($config, body-1)); + } + + .mat-list-option { + font-size: mat-font-size($config, subheading-2); + @include mat-line-base(mat-font-size($config, body-1)); + } + + .mat-subheader { + font-family: mat-font-family($config, body-2); + font-size: mat-font-size($config, body-2); + font-weight: mat-font-weight($config, body-2); + } + } + + // Dense list + .mat-list-base[dense] { + .mat-list-item { + font-size: mat-font-size($config, caption); + @include mat-line-base(mat-font-size($config, caption)); + } + + .mat-list-option { + font-size: mat-font-size($config, caption); + @include mat-line-base(mat-font-size($config, caption)); + } + + .mat-subheader { + font-family: $font-family; + font-size: mat-font-size($config, caption); + font-weight: mat-font-weight($config, body-2); + } + } +} + + + + + + + +@mixin mat-menu-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-menu-panel { + @include _mat-theme-overridable-elevation(4, $theme); + background: mat-color($background, 'card'); + } + + .mat-menu-item { + background: transparent; + color: mat-color($foreground, 'text'); + + &[disabled] { + &, &::after { + color: mat-color($foreground, 'disabled'); + } + } + } + + .mat-menu-item .mat-icon-no-color, + .mat-menu-item-submenu-trigger::after { + color: mat-color($foreground, 'icon'); + } + + .mat-menu-item:hover, + .mat-menu-item.cdk-program-focused, + .mat-menu-item.cdk-keyboard-focused, + .mat-menu-item-highlighted { + &:not([disabled]) { + background: mat-color($background, 'hover'); + } + } +} + +@mixin mat-menu-typography($config) { + .mat-menu-item { + font: { + family: mat-font-family($config, body-1); + size: mat-font-size($config, body-1); + weight: mat-font-weight($config, body-1); + } + } +} + + + + + + +@mixin mat-paginator-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + + .mat-paginator { + background: mat-color($background, 'card'); + } + + .mat-paginator, + .mat-paginator-page-size .mat-select-trigger { + color: mat-color($foreground, secondary-text); + } + + .mat-paginator-decrement, + .mat-paginator-increment { + border-top: 2px solid mat-color($foreground, 'icon'); + border-right: 2px solid mat-color($foreground, 'icon'); + } + + .mat-paginator-first, + .mat-paginator-last { + border-top: 2px solid mat-color($foreground, 'icon'); + } + + .mat-icon-button[disabled] { + .mat-paginator-decrement, + .mat-paginator-increment, + .mat-paginator-first, + .mat-paginator-last { + border-color: mat-color($foreground, 'disabled'); + } + } +} + +@mixin mat-paginator-typography($config) { + .mat-paginator, + .mat-paginator-page-size .mat-select-trigger { + font: { + family: mat-font-family($config, caption); + size: mat-font-size($config, caption); + } + } +} + + + + + +@mixin mat-progress-bar-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + + .mat-progress-bar-background { + fill: mat-color($primary, lighter); + } + + .mat-progress-bar-buffer { + background-color: mat-color($primary, lighter); + } + + .mat-progress-bar-fill::after { + background-color: mat-color($primary); + } + + .mat-progress-bar.mat-accent { + .mat-progress-bar-background { + fill: mat-color($accent, lighter); + } + + .mat-progress-bar-buffer { + background-color: mat-color($accent, lighter); + } + + .mat-progress-bar-fill::after { + background-color: mat-color($accent); + } + } + + .mat-progress-bar.mat-warn { + .mat-progress-bar-background { + fill: mat-color($warn, lighter); + } + + .mat-progress-bar-buffer { + background-color: mat-color($warn, lighter); + } + + .mat-progress-bar-fill::after { + background-color: mat-color($warn); + } + } +} + +@mixin mat-progress-bar-typography($config) { } + + + + + + +@mixin mat-progress-spinner-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + + .mat-progress-spinner, .mat-spinner { + circle { + stroke: mat-color($primary); + } + + &.mat-accent circle { + stroke: mat-color($accent); + } + + &.mat-warn circle { + stroke: mat-color($warn); + } + } +} + +@mixin mat-progress-spinner-typography($config) { } + + + + + +@mixin _mat-radio-color($palette) { + &.mat-radio-checked .mat-radio-outer-circle { + border-color: mat-color($palette); + } + + .mat-radio-inner-circle, + .mat-radio-ripple .mat-ripple-element:not(.mat-radio-persistent-ripple), + &.mat-radio-checked .mat-radio-persistent-ripple, + &:active .mat-radio-persistent-ripple { + background-color: mat-color($palette); + } +} + +@mixin mat-radio-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-radio-outer-circle { + border-color: mat-color($foreground, secondary-text); + } + + .mat-radio-button { + &.mat-primary { + @include _mat-radio-color($primary); + } + + &.mat-accent { + @include _mat-radio-color($accent); + } + + &.mat-warn { + @include _mat-radio-color($warn); + } + + // This needs extra specificity, because the classes above are combined + // (e.g. `.mat-radio-button.mat-accent`) which increases their specificity a lot. + // TODO: consider making the selectors into descendants (`.mat-primary .mat-radio-button`). + &.mat-radio-disabled { + &.mat-radio-checked .mat-radio-outer-circle, + .mat-radio-outer-circle { + border-color: mat-color($foreground, disabled); + } + + .mat-radio-ripple .mat-ripple-element, + .mat-radio-inner-circle { + background-color: mat-color($foreground, disabled); + } + + .mat-radio-label-content { + color: mat-color($foreground, disabled); + } + } + + // Switch this to a solid color since we're using `opacity` + // to control how opaque the ripple should be. + .mat-ripple-element { + background-color: map_get($foreground, base); + } + } +} + +@mixin mat-radio-typography($config) { + .mat-radio-button { + font-family: mat-font-family($config); + } +} + + + + + + + + +@mixin mat-select-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + + .mat-select-value { + color: mat-color($foreground, text); + } + + .mat-select-placeholder { + color: _mat-control-placeholder-color($theme); + } + + .mat-select-disabled .mat-select-value { + color: mat-color($foreground, disabled-text); + } + + .mat-select-arrow { + color: mat-color($foreground, secondary-text); + } + + .mat-select-panel { + background: mat-color($background, card); + @include _mat-theme-overridable-elevation(4, $theme); + + .mat-option.mat-selected:not(.mat-option-multiple) { + background: mat-color($background, hover, 0.12); + } + } + + .mat-form-field { + &.mat-focused { + &.mat-primary .mat-select-arrow { + color: mat-color($primary, text); + } + + &.mat-accent .mat-select-arrow { + color: mat-color($accent, text); + } + + &.mat-warn .mat-select-arrow { + color: mat-color($warn, text); + } + } + + .mat-select.mat-select-invalid .mat-select-arrow { + color: mat-color($warn, text); + } + + .mat-select.mat-select-disabled .mat-select-arrow { + color: mat-color($foreground, disabled-text); + } + } +} + +@mixin mat-select-typography($config) { + // The unit-less line-height from the font config. + $line-height: mat-line-height($config, input); + + .mat-select { + font-family: mat-font-family($config); + } + + .mat-select-trigger { + height: $line-height * 1em; + } +} + + + + + + +@mixin mat-sidenav-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + $drawer-background-color: mat-color($background, dialog); + $drawer-container-background-color: mat-color($background, background); + $drawer-push-background-color: mat-color($background, dialog); + $drawer-side-border: solid 1px mat-color($foreground, divider); + + .mat-drawer-container { + background-color: $drawer-container-background-color; + color: mat-color($foreground, text); + } + + .mat-drawer { + background-color: $drawer-background-color; + color: mat-color($foreground, text); + + &.mat-drawer-push { + background-color: $drawer-push-background-color; + } + + &:not(.mat-drawer-side) { + // The elevation of z-16 is noted in the design specifications. + // See https://material.io/design/components/navigation-drawer.html + @include _mat-theme-elevation(16, $theme); + } + } + + .mat-drawer-side { + border-right: $drawer-side-border; + + &.mat-drawer-end { + border-left: $drawer-side-border; + border-right: none; + } + } + + [dir='rtl'] .mat-drawer-side { + border-left: $drawer-side-border; + border-right: none; + + &.mat-drawer-end { + border-left: none; + border-right: $drawer-side-border; + } + } + + .mat-drawer-backdrop.mat-drawer-shown { + $opacity: 0.6; + $backdrop-color: mat-color($background, card, $opacity); + + @if (type-of($backdrop-color) == color) { + // We use invert() here to have the darken the background color expected to be used. If the + // background is light, we use a dark backdrop. If the background is dark, + // we use a light backdrop. + background-color: invert($backdrop-color); + } + @else { + // If we couldn't resolve the backdrop color to a color value, fall back to using + // `opacity` to make it opaque since its end value could be a solid color. + background-color: $backdrop-color; + opacity: $opacity; + } + } +} + +@mixin mat-sidenav-typography($config) { } + + + + + + +@mixin _mat-slide-toggle-checked($palette, $thumb-checked-hue) { + &.mat-checked { + .mat-slide-toggle-thumb { + background-color: mat-color($palette, $thumb-checked-hue); + } + + .mat-slide-toggle-bar { + // Opacity is determined from the specs for the selection controls. + // See: https://material.io/design/components/selection-controls.html#specs + background-color: mat-color($palette, $thumb-checked-hue, 0.54); + } + + .mat-ripple-element { + // Set no opacity for the ripples because the ripple opacity will be adjusted dynamically + // based on the type of interaction with the slide-toggle (e.g. for hover, focus) + background-color: mat-color($palette, $thumb-checked-hue); + } + } +} + +@mixin mat-slide-toggle-theme($theme) { + $is-dark: map_get($theme, is-dark); + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + // Color hues are based on the specs which briefly show the hues that are applied to a switch. + // The 2018 specs no longer describe how dark switches should look like. Due to the lack of + // information for dark themed switches, we partially keep the old behavior that is based on + // the previous specifications. For the checked color we always use the `default` hue because + // that follows MDC and also makes it easier for people to create a custom theme without needing + // to specify each hue individually. + $thumb-unchecked-hue: if($is-dark, 400, 50); + $thumb-checked-hue: default; + + $bar-unchecked-color: mat-color($foreground, disabled); + $ripple-unchecked-color: mat-color($foreground, base); + + .mat-slide-toggle { + @include _mat-slide-toggle-checked($accent, $thumb-checked-hue); + + &.mat-primary { + @include _mat-slide-toggle-checked($primary, $thumb-checked-hue); + } + + &.mat-warn { + @include _mat-slide-toggle-checked($warn, $thumb-checked-hue); + } + + &:not(.mat-checked) .mat-ripple-element { + // Set no opacity for the ripples because the ripple opacity will be adjusted dynamically + // based on the type of interaction with the slide-toggle (e.g. for hover, focus) + background-color: $ripple-unchecked-color; + } + } + + .mat-slide-toggle-thumb { + @include _mat-theme-elevation(1, $theme); + background-color: mat-color($mat-grey, $thumb-unchecked-hue); + } + + .mat-slide-toggle-bar { + background-color: $bar-unchecked-color; + } +} + +@mixin mat-slide-toggle-typography($config) { + .mat-slide-toggle-content { + font-family: mat-font-family($config); + } +} + + + + + +@mixin _mat-slider-inner-content-theme($palette) { + .mat-slider-track-fill, + .mat-slider-thumb, + .mat-slider-thumb-label { + background-color: mat-color($palette); + } + + .mat-slider-thumb-label-text { + color: mat-color($palette, default-contrast); + } +} + +@mixin mat-slider-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + $mat-slider-off-color: mat-color($foreground, slider-off); + $mat-slider-off-focused-color: mat-color($foreground, slider-off-active); + $mat-slider-disabled-color: mat-color($foreground, slider-off); + $mat-slider-labeled-min-value-thumb-color: mat-color($foreground, slider-min); + $mat-slider-labeled-min-value-thumb-label-color: mat-color($foreground, slider-off); + $mat-slider-focus-ring-color: mat-color($accent, default, 0.2); + $mat-slider-focus-ring-min-value-color: mat-color($foreground, base, 0.12); + $mat-slider-tick-color: mat-color($foreground, base, 0.7); + $mat-slider-tick-size: 2px; + + .mat-slider-track-background { + background-color: $mat-slider-off-color; + } + + .mat-primary { + @include _mat-slider-inner-content-theme($primary); + } + + .mat-accent { + @include _mat-slider-inner-content-theme($accent); + } + + .mat-warn { + @include _mat-slider-inner-content-theme($warn); + } + + .mat-slider-focus-ring { + background-color: $mat-slider-focus-ring-color; + } + + .mat-slider:hover, + .cdk-focused { + .mat-slider-track-background { + background-color: $mat-slider-off-focused-color; + } + } + + .mat-slider-disabled { + .mat-slider-track-background, + .mat-slider-track-fill, + .mat-slider-thumb { + background-color: $mat-slider-disabled-color; + } + + &:hover { + .mat-slider-track-background { + background-color: $mat-slider-disabled-color; + } + } + } + + .mat-slider-min-value { + .mat-slider-focus-ring { + background-color: $mat-slider-focus-ring-min-value-color; + } + + &.mat-slider-thumb-label-showing { + .mat-slider-thumb, + .mat-slider-thumb-label { + background-color: $mat-slider-labeled-min-value-thumb-color; + } + + &.cdk-focused { + .mat-slider-thumb, + .mat-slider-thumb-label { + background-color: $mat-slider-labeled-min-value-thumb-label-color; + } + } + } + + &:not(.mat-slider-thumb-label-showing) { + .mat-slider-thumb { + border-color: $mat-slider-off-color; + background-color: transparent; + } + + &:hover, + &.cdk-focused { + .mat-slider-thumb { + border-color: $mat-slider-off-focused-color; + } + + &.mat-slider-disabled .mat-slider-thumb { + border-color: $mat-slider-disabled-color; + } + } + } + } + + .mat-slider-has-ticks .mat-slider-wrapper::after { + border-color: $mat-slider-tick-color; + } + + .mat-slider-horizontal .mat-slider-ticks { + background-image: repeating-linear-gradient(to right, $mat-slider-tick-color, + $mat-slider-tick-color $mat-slider-tick-size, transparent 0, transparent); + // Firefox doesn't draw the gradient correctly with 'to right' + // (see https://bugzilla.mozilla.org/show_bug.cgi?id=1314319). + background-image: -moz-repeating-linear-gradient(0.0001deg, $mat-slider-tick-color, + $mat-slider-tick-color $mat-slider-tick-size, transparent 0, transparent); + } + + .mat-slider-vertical .mat-slider-ticks { + background-image: repeating-linear-gradient(to bottom, $mat-slider-tick-color, + $mat-slider-tick-color $mat-slider-tick-size, transparent 0, transparent); + } +} + +@mixin mat-slider-typography($config) { + .mat-slider-thumb-label-text { + font: { + family: mat-font-family($config); + size: mat-font-size($config, caption); + weight: mat-font-weight($config, body-2); + } + } +} + + + + + +@mixin mat-stepper-theme($theme) { + $foreground: map-get($theme, foreground); + $background: map-get($theme, background); + $primary: map-get($theme, primary); + $warn: map-get($theme, warn); + + .mat-step-header { + &.cdk-keyboard-focused, + &.cdk-program-focused, + &:hover { + background-color: mat-color($background, hover); + } + + // On touch devices the :hover state will linger on the element after a tap. + // Reset it via `@media` after the declaration, because the media query isn't + // supported by all browsers yet. + @media (hover: none) { + &:hover { + background: none; + } + } + + .mat-step-label, + .mat-step-optional { + // TODO(josephperrott): Update to using a corrected disabled-text contrast + // instead of secondary-text. + color: mat-color($foreground, secondary-text); + } + + .mat-step-icon { + // TODO(josephperrott): Update to using a corrected disabled-text contrast + // instead of secondary-text. + background-color: mat-color($foreground, secondary-text); + color: mat-color($primary, default-contrast); + } + + .mat-step-icon-selected, + .mat-step-icon-state-done, + .mat-step-icon-state-edit { + background-color: mat-color($primary); + color: mat-color($primary, default-contrast); + } + + .mat-step-icon-state-error { + background-color: transparent; + color: mat-color($warn, text); + } + + .mat-step-label.mat-step-label-active { + color: mat-color($foreground, text); + } + + .mat-step-label.mat-step-label-error { + color: mat-color($warn, text); + } + } + + .mat-stepper-horizontal, .mat-stepper-vertical { + background-color: mat-color($background, card); + } + + .mat-stepper-vertical-line::before { + border-left-color: mat-color($foreground, divider); + } + + .mat-horizontal-stepper-header::before, + .mat-horizontal-stepper-header::after, + .mat-stepper-horizontal-line { + border-top-color: mat-color($foreground, divider); + } +} + +@mixin mat-stepper-typography($config) { + .mat-stepper-vertical, .mat-stepper-horizontal { + font-family: mat-font-family($config); + } + + .mat-step-label { + font: { + size: mat-font-size($config, body-1); + weight: mat-font-weight($config, body-1); + }; + } + + .mat-step-sub-label-error { + font-weight: normal; + } + + .mat-step-label-error { + font-size: mat-font-size($config, body-2); + } + + .mat-step-label-selected { + font: { + size: mat-font-size($config, body-2); + weight: mat-font-weight($config, body-2); + }; + } +} + +@mixin mat-sort-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-sort-header-arrow { + $table-background: mat-color($background, 'card'); + $text-color: mat-color($foreground, secondary-text); + + // Because the arrow is made up of multiple elements that are stacked on top of each other, + // we can't use the semi-trasparent color from the theme directly. If the value is a color + // *type*, we convert it into a solid color by taking the opacity from the rgba value and + // using the value to determine the percentage of the background to put into foreground + // when mixing the colors together. Otherwise, if it resolves to something different + // (e.g. it resolves to a CSS variable), we use the color directly. + @if (type-of($table-background) == color and type-of($text-color) == color) { + $text-opacity: opacity($text-color); + color: mix($table-background, rgba($text-color, 1), (1 - $text-opacity) * 100%); + } + @else { + color: $text-color; + } + } +} + +@mixin mat-sort-typography($config) { } + + + + + +@mixin mat-tabs-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + $header-border: 1px solid mat-color($foreground, divider); + + .mat-tab-nav-bar, + .mat-tab-header { + border-bottom: $header-border; + } + + .mat-tab-group-inverted-header { + .mat-tab-nav-bar, + .mat-tab-header { + border-top: $header-border; + border-bottom: none; + } + } + + .mat-tab-label, .mat-tab-link { + color: mat-color($foreground, text); + + &.mat-tab-disabled { + color: mat-color($foreground, disabled-text); + } + } + + .mat-tab-header-pagination-chevron { + border-color: mat-color($foreground, text); + } + + .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: mat-color($foreground, disabled-text); + } + + // Remove header border when there is a background color + .mat-tab-group[class*='mat-background-'] .mat-tab-header, + .mat-tab-nav-bar[class*='mat-background-'] { + border-bottom: none; + border-top: none; + } + + .mat-tab-group, .mat-tab-nav-bar { + $theme-colors: ( + primary: $primary, + accent: $accent, + warn: $warn + ); + + @each $name, $color in $theme-colors { + // Set the foreground color of the tabs + &.mat-#{$name} { + @include _mat-tab-label-focus($color); + @include _mat-ink-bar($color); + + // Override ink bar when background color is the same + &.mat-background-#{$name} { + @include _mat-ink-bar($color, default-contrast); + } + } + } + + @each $name, $color in $theme-colors { + // Set background color of the tabs and override focus color + &.mat-background-#{$name} { + @include _mat-tab-label-focus($color); + @include _mat-tabs-background($color); + } + } + } +} + +@mixin _mat-ink-bar($color, $hue: default) { + .mat-ink-bar { + background-color: mat-color($color, $hue); + } +} + +@mixin _mat-tab-label-focus($tab-focus-color) { + .mat-tab-label, + .mat-tab-link { + &.cdk-keyboard-focused, + &.cdk-program-focused { + &:not(.mat-tab-disabled) { + background-color: mat-color($tab-focus-color, lighter, 0.3); + } + } + } +} + +@mixin _mat-tabs-background($background-color) { + // Set background color for the tab group + .mat-tab-header, .mat-tab-links, .mat-tab-header-pagination { + background-color: mat-color($background-color); + } + + // Set labels to contrast against background + .mat-tab-label, .mat-tab-link { + color: mat-color($background-color, default-contrast); + + &.mat-tab-disabled { + color: mat-color($background-color, default-contrast, 0.4); + } + } + + // Set pagination chevrons to contrast background + .mat-tab-header-pagination-chevron { + border-color: mat-color($background-color, default-contrast); + } + + .mat-tab-header-pagination-disabled .mat-tab-header-pagination-chevron { + border-color: mat-color($background-color, default-contrast, 0.4); + } + + // Set ripples color to be the contrast color of the new background. Otherwise the ripple + // color will be based on the app background color. + .mat-ripple-element { + background-color: mat-color($background-color, default-contrast, 0.12); + } +} + +@mixin mat-tabs-typography($config) { + .mat-tab-group { + font-family: mat-font-family($config); + } + + .mat-tab-label, .mat-tab-link { + font: { + family: mat-font-family($config, button); + size: mat-font-size($config, button); + weight: mat-font-weight($config, button); + } + } +} + + + + + + +@mixin _mat-toolbar-color($palette) { + background: mat-color($palette); + color: mat-color($palette, default-contrast); +} + +@mixin _mat-toolbar-form-field-overrides { + .mat-form-field-underline, + .mat-form-field-ripple, + .mat-focused .mat-form-field-ripple { + background-color: currentColor; + } + + .mat-form-field-label, + .mat-focused .mat-form-field-label, + .mat-select-value, + .mat-select-arrow, + .mat-form-field.mat-focused .mat-select-arrow { + color: inherit; + } + + .mat-input-element { + caret-color: currentColor; + } +} + +@mixin mat-toolbar-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-toolbar { + background: mat-color($background, app-bar); + color: mat-color($foreground, text); + + &.mat-primary { + @include _mat-toolbar-color($primary); + } + + &.mat-accent { + @include _mat-toolbar-color($accent); + } + + &.mat-warn { + @include _mat-toolbar-color($warn); + } + + @include _mat-toolbar-form-field-overrides; + } +} + +@mixin mat-toolbar-typography($config) { + .mat-toolbar, + .mat-toolbar h1, + .mat-toolbar h2, + .mat-toolbar h3, + .mat-toolbar h4, + .mat-toolbar h5, + .mat-toolbar h6 { + @include mat-typography-level-to-styles($config, title); + margin: 0; + } +} + + + + + +$mat-tooltip-target-height: 22px; +$mat-tooltip-font-size: 10px; +$mat-tooltip-vertical-padding: ($mat-tooltip-target-height - $mat-tooltip-font-size) / 2; + +$mat-tooltip-handset-target-height: 30px; +$mat-tooltip-handset-font-size: 14px; +$mat-tooltip-handset-vertical-padding: + ($mat-tooltip-handset-target-height - $mat-tooltip-handset-font-size) / 2; + +@mixin mat-tooltip-theme($theme) { + .mat-tooltip { + background: mat-color($mat-grey, 700, 0.9); + } +} + +@mixin mat-tooltip-typography($config) { + .mat-tooltip { + font-family: mat-font-family($config); + font-size: $mat-tooltip-font-size; + padding-top: $mat-tooltip-vertical-padding; + padding-bottom: $mat-tooltip-vertical-padding; + } + + .mat-tooltip-handset { + font-size: $mat-tooltip-handset-font-size; + padding-top: $mat-tooltip-handset-vertical-padding; + padding-bottom: $mat-tooltip-handset-vertical-padding; + } +} + + + + + +@mixin mat-snack-bar-theme($theme) { + $is-dark-theme: map-get($theme, is-dark); + $accent: map-get($theme, accent); + + .mat-snack-bar-container { + // Use the primary text on the dark theme, even though the lighter one uses + // a secondary, because the contrast on the light primary text is poor. + color: if($is-dark-theme, $dark-primary-text, $light-secondary-text); + background: if($is-dark-theme, map-get($mat-grey, 50), #323232); + + @include _mat-theme-elevation(6, $theme); + } + + .mat-simple-snackbar-action { + color: if($is-dark-theme, inherit, mat-color($accent, text)); + } +} + +@mixin mat-snack-bar-typography($config) { + .mat-simple-snackbar { + font: { + family: mat-font-family($config, body-1); + size: mat-font-size($config, body-1); + } + } + + .mat-simple-snackbar-action { + line-height: 1; + font: { + family: inherit; + size: inherit; + weight: mat-font-weight($config, button); + } + } +} + + + + + + + + + + + + + + +// Theme styles that only apply to the fill appearance of the form-field. + +@mixin mat-form-field-fill-theme($theme) { + $foreground: map-get($theme, foreground); + $is-dark-theme: map-get($theme, is-dark); + + $fill-background: mat-color($foreground, base, if($is-dark-theme, 0.1, 0.04)); + $fill-disabled-background: mat-color($foreground, base, if($is-dark-theme, 0.05, 0.02)); + $underline-color: mat-color($foreground, divider, if($is-dark-theme, 0.5, 0.42)); + $label-disabled-color: mat-color($foreground, disabled-text); + + .mat-form-field-appearance-fill { + .mat-form-field-flex { + background-color: $fill-background; + } + + &.mat-form-field-disabled .mat-form-field-flex { + background-color: $fill-disabled-background; + } + + .mat-form-field-underline::before { + background-color: $underline-color; + } + + &.mat-form-field-disabled { + .mat-form-field-label { + color: $label-disabled-color; + } + + .mat-form-field-underline::before { + background-color: transparent; + } + } + } +} + +// Used to make instances of the _mat-form-field-label-floating mixin negligibly different, +// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some +// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters +// an unknown pseudo-class it will discard the entire rule set. +$mat-form-field-fill-dedupe: 0; + +// Applies a floating label above the form field control itself. +@mixin _mat-form-field-fill-label-floating($font-scale, $infix-padding, $infix-margin-top) { + transform: translateY(-$infix-margin-top - $infix-padding + $mat-form-field-fill-dedupe) + scale($font-scale); + width: 100% / $font-scale + $mat-form-field-fill-dedupe; + + $mat-form-field-fill-dedupe: $mat-form-field-fill-dedupe + 0.00001 !global; +} + +@mixin mat-form-field-fill-typography($config) { + // The unit-less line-height from the font config. + $line-height: mat-line-height($config, input); + // The amount to scale the font for the floating label and subscript. + $subscript-font-scale: 0.75; + // The padding on top of the infix. + $infix-padding-top: 0.25em; + // The padding below the infix. + $infix-padding-bottom: 0.75em; + // The margin applied to the form-field-infix to reserve space for the floating label. + $infix-margin-top: 1em * $line-height * $subscript-font-scale; + // The amount we offset the label from the input text in the fill appearance. + $fill-appearance-label-offset: -0.5em; + + .mat-form-field-appearance-fill { + .mat-form-field-infix { + padding: $infix-padding-top 0 $infix-padding-bottom 0; + } + + .mat-form-field-label { + top: $infix-margin-top + $infix-padding-top; + margin-top: $fill-appearance-label-offset; + } + + &.mat-form-field-can-float { + &.mat-form-field-should-float .mat-form-field-label, + .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + @include _mat-form-field-fill-label-floating( + $subscript-font-scale, $infix-padding-top + $fill-appearance-label-offset, + $infix-margin-top); + } + + // Server-side rendered matInput with a label attribute but label not shown + // (used as a pure CSS stand-in for mat-form-field-should-float). + .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-fill-label-floating( + $subscript-font-scale, $infix-padding-top + $fill-appearance-label-offset, + $infix-margin-top); + } + } + } +} + + + + + + + +// Theme styles that only apply to the legacy appearance of the form-field. + +@mixin mat-form-field-legacy-theme($theme) { + $foreground: map-get($theme, foreground); + $is-dark-theme: map-get($theme, is-dark); + + $label-color: mat-color($foreground, secondary-text); + $underline-color: mat-color($foreground, divider, if($is-dark-theme, 0.7, 0.42)); + + .mat-form-field-appearance-legacy { + .mat-form-field-label { + color: $label-color; + } + + .mat-hint { + color: $label-color; + } + + .mat-form-field-underline { + background-color: $underline-color; + } + + &.mat-form-field-disabled .mat-form-field-underline { + @include mat-control-disabled-underline($underline-color); + } + } +} + +// Used to make instances of the _mat-form-field-label-floating mixin negligibly different, +// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some +// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters +// an unknown pseudo-class it will discard the entire rule set. +$mat-form-field-legacy-dedupe: 0; + +// Applies a floating label above the form field control itself. +@mixin _mat-form-field-legacy-label-floating($font-scale, $infix-padding, $infix-margin-top) { + // We use perspective to fix the text blurriness as described here: + // http://www.useragentman.com/blog/2014/05/04/fixing-typography-inside-of-2-d-css-transforms/ + // This results in a small jitter after the label floats on Firefox, which the + // translateZ fixes. + transform: translateY(-$infix-margin-top - $infix-padding) scale($font-scale) perspective(100px) + translateZ(0.001px + $mat-form-field-legacy-dedupe); + // The tricks above used to smooth out the animation on chrome and firefox actually make things + // worse on IE, so we don't include them in the IE version. + -ms-transform: translateY(-$infix-margin-top - $infix-padding + $mat-form-field-legacy-dedupe) + scale($font-scale); + + width: 100% / $font-scale + $mat-form-field-legacy-dedupe; + + $mat-form-field-legacy-dedupe: $mat-form-field-legacy-dedupe + 0.00001 !global; +} + +// Same as mixin above, but omits the translateZ for printing purposes. +@mixin _mat-form-field-legacy-label-floating-print($font-scale, $infix-padding, $infix-margin-top) { + // This results in a small jitter after the label floats on Firefox, which the + // translateZ fixes. + transform: translateY(-$infix-margin-top - $infix-padding + $mat-form-field-legacy-dedupe) + scale($font-scale); + // The tricks above used to smooth out the animation on chrome and firefox actually make things + // worse on IE, so we don't include them in the IE version. + $mat-form-field-legacy-dedupe: $mat-form-field-legacy-dedupe + 0.00001 !global; +} + +@mixin mat-form-field-legacy-typography($config) { + // The unit-less line-height from the font config. + $line-height: mat-line-height($config, input); + // The amount to scale the font for the floating label and subscript. + $subscript-font-scale: 0.75; + // The amount of space between the top of the line and the top of the actual text + // (as a fraction of the font-size). + $line-spacing: ($line-height - 1) / 2; + // The padding on the infix. Mocks show half of the text size, but seem to measure from the edge + // of the text itself, not the edge of the line; therefore we subtract off the line spacing. + $infix-padding: 0.5em - $line-spacing; + // The margin applied to the form-field-infix to reserve space for the floating label. + $infix-margin-top: 1em * $line-height * $subscript-font-scale; + // The space between the bottom of the .mat-form-field-flex area and the subscript wrapper. + // Mocks show half of the text size, but this margin is applied to an element with the subscript + // text font size, so we need to divide by the scale factor to make it half of the original text + // size. We again need to subtract off the line spacing since the mocks measure to the edge of the + // text, not the edge of the line. + $subscript-margin-top: 0.5em / $subscript-font-scale - ($line-spacing * 2); + // The padding applied to the form-field-wrapper to reserve space for the subscript, since it's + // absolutely positioned. This is a combination of the subscript's margin and line-height, but we + // need to multiply by the subscript font scale factor since the wrapper has a larger font size. + $wrapper-padding-bottom: ($subscript-margin-top + $line-height) * $subscript-font-scale; + + .mat-form-field-appearance-legacy { + .mat-form-field-wrapper { + padding-bottom: $wrapper-padding-bottom; + } + + .mat-form-field-infix { + padding: $infix-padding 0; + } + + &.mat-form-field-can-float { + &.mat-form-field-should-float .mat-form-field-label, + .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + @include _mat-form-field-legacy-label-floating( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + + // @breaking-change 8.0.0 will rely on AutofillMonitor instead. + .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-legacy-label-floating( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + + // Server-side rendered matInput with a label attribute but label not shown + // (used as a pure CSS stand-in for mat-form-field-should-float). + .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-legacy-label-floating( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + } + + .mat-form-field-label { + top: $infix-margin-top + $infix-padding; + } + + .mat-form-field-underline { + // We want the underline to start at the end of the content box, not the padding box, + // so we move it up by the padding amount. + bottom: $wrapper-padding-bottom; + } + + .mat-form-field-subscript-wrapper { + margin-top: $subscript-margin-top; + + // We want the subscript to start at the end of the content box, not the padding box, + // so we move it up by the padding amount (adjusted for the smaller font size); + top: calc(100% - #{$wrapper-padding-bottom / $subscript-font-scale}); + } + } + + // translateZ causes the label to not appear while printing, so we override it to not + // apply translateZ while printing + @media print { + .mat-form-field-appearance-legacy { + &.mat-form-field-can-float { + &.mat-form-field-should-float .mat-form-field-label, + .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + @include _mat-form-field-legacy-label-floating-print( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + + // @breaking-change 8.0.0 will rely on AutofillMonitor instead. + .mat-form-field-autofill-control:-webkit-autofill + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-legacy-label-floating-print( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + + // Server-side rendered matInput with a label attribute but label not shown + // (used as a pure CSS stand-in for mat-form-field-should-float). + .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-legacy-label-floating-print( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + } + } + } +} + + + + + + + +// Theme styles that only apply to the outline appearance of the form-field. + +@mixin mat-form-field-outline-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $foreground: map-get($theme, foreground); + $is-dark-theme: map-get($theme, is-dark); + + $label-disabled-color: mat-color($foreground, disabled-text); + $outline-color: mat-color($foreground, divider, if($is-dark-theme, 0.3, 0.12)); + $outline-color-hover: mat-color($foreground, divider, if($is-dark-theme, 1, 0.87)); + $outline-color-primary: mat-color($primary); + $outline-color-accent: mat-color($accent); + $outline-color-warn: mat-color($warn); + $outline-color-disabled: mat-color($foreground, divider, if($is-dark-theme, 0.15, 0.06)); + + .mat-form-field-appearance-outline { + .mat-form-field-outline { + color: $outline-color; + } + + .mat-form-field-outline-thick { + color: $outline-color-hover; + } + + &.mat-focused { + .mat-form-field-outline-thick { + color: $outline-color-primary; + } + + &.mat-accent .mat-form-field-outline-thick { + color: $outline-color-accent; + } + + &.mat-warn .mat-form-field-outline-thick { + color: $outline-color-warn; + } + } + + // Class repeated so that rule is specific enough to override focused accent color case. + &.mat-form-field-invalid.mat-form-field-invalid { + .mat-form-field-outline-thick { + color: $outline-color-warn; + } + } + + &.mat-form-field-disabled { + .mat-form-field-label { + color: $label-disabled-color; + } + + .mat-form-field-outline { + color: $outline-color-disabled; + } + } + } +} + +// Used to make instances of the _mat-form-field-label-floating mixin negligibly different, +// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some +// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters +// an unknown pseudo-class it will discard the entire rule set. +$mat-form-field-outline-dedupe: 0; + +// Applies a floating label above the form field control itself. +@mixin _mat-form-field-outline-label-floating($font-scale, $infix-padding, $infix-margin-top) { + transform: translateY(-$infix-margin-top - $infix-padding + $mat-form-field-outline-dedupe) + scale($font-scale); + width: 100% / $font-scale + $mat-form-field-outline-dedupe; + + $mat-form-field-outline-dedupe: $mat-form-field-outline-dedupe + 0.00001 !global; +} + +@mixin mat-form-field-outline-typography($config) { + // The unit-less line-height from the font config. + $line-height: mat-line-height($config, input); + // The amount to scale the font for the floating label and subscript. + $subscript-font-scale: 0.75; + // The padding above and below the infix. + $infix-padding: 1em; + // The margin applied to the form-field-infix to reserve space for the floating label. + $infix-margin-top: 1em * $line-height * $subscript-font-scale; + // The space between the bottom of the .mat-form-field-flex area and the subscript wrapper. + // Mocks show half of the text size, but this margin is applied to an element with the subscript + // text font size, so we need to divide by the scale factor to make it half of the original text + // size. + $subscript-margin-top: 0.5em / $subscript-font-scale; + // The padding applied to the form-field-wrapper to reserve space for the subscript, since it's + // absolutely positioned. This is a combination of the subscript's margin and line-height, but we + // need to multiply by the subscript font scale factor since the wrapper has a larger font size. + $wrapper-padding-bottom: ($subscript-margin-top + $line-height) * $subscript-font-scale; + // The amount we offset the label from the input text in the outline appearance. + $outline-appearance-label-offset: -0.25em; + + .mat-form-field-appearance-outline { + .mat-form-field-infix { + padding: $infix-padding 0 $infix-padding 0; + } + + .mat-form-field-label { + top: $infix-margin-top + $infix-padding; + margin-top: $outline-appearance-label-offset; + } + + &.mat-form-field-can-float { + &.mat-form-field-should-float .mat-form-field-label, + .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + @include _mat-form-field-outline-label-floating( + $subscript-font-scale, $infix-padding + $outline-appearance-label-offset, + $infix-margin-top); + } + + // Server-side rendered matInput with a label attribute but label not shown + // (used as a pure CSS stand-in for mat-form-field-should-float). + .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-outline-label-floating( + $subscript-font-scale, $infix-padding + $outline-appearance-label-offset, + $infix-margin-top); + } + } + } +} + + + + + + + +// Theme styles that only apply to the standard appearance of the form-field. + +@mixin mat-form-field-standard-theme($theme) { + $foreground: map-get($theme, foreground); + $is-dark-theme: map-get($theme, is-dark); + + $underline-color: mat-color($foreground, divider, if($is-dark-theme, 0.7, 0.42)); + + .mat-form-field-appearance-standard { + .mat-form-field-underline { + background-color: $underline-color; + } + + &.mat-form-field-disabled .mat-form-field-underline { + @include mat-control-disabled-underline($underline-color); + } + } +} + +@mixin mat-form-field-standard-typography($config) {} + + +// Theme styles that apply to all appearances of the form-field. +@mixin mat-form-field-theme($theme) { + $primary: map-get($theme, primary); + $accent: map-get($theme, accent); + $warn: map-get($theme, warn); + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + $is-dark-theme: map-get($theme, is-dark); + + // Label colors. Required is used for the `*` star shown in the label. + $label-color: mat-color($foreground, secondary-text, if($is-dark-theme, 0.7, 0.6)); + $focused-label-color: mat-color($primary, text); + $required-label-color: mat-color($accent, text); + + // Underline colors. + $underline-color-base: mat-color($foreground, divider, if($is-dark-theme, 1, 0.87)); + $underline-color-accent: mat-color($accent, text); + $underline-color-warn: mat-color($warn, text); + $underline-focused-color: mat-color($primary, text); + + .mat-form-field-label { + color: $label-color; + } + + .mat-hint { + color: $label-color; + } + + .mat-form-field.mat-focused .mat-form-field-label { + color: $focused-label-color; + + &.mat-accent { + color: $underline-color-accent; + } + + &.mat-warn { + color: $underline-color-warn; + } + } + + .mat-focused .mat-form-field-required-marker { + color: $required-label-color; + } + + .mat-form-field-ripple { + background-color: $underline-color-base; + } + + .mat-form-field.mat-focused { + .mat-form-field-ripple { + background-color: $underline-focused-color; + + &.mat-accent { + background-color: $underline-color-accent; + } + + &.mat-warn { + background-color: $underline-color-warn; + } + } + } + + .mat-form-field-type-mat-native-select.mat-focused:not(.mat-form-field-invalid) { + .mat-form-field-infix::after { + color: $underline-focused-color; + } + + &.mat-accent .mat-form-field-infix::after { + color: $underline-color-accent; + } + + &.mat-warn .mat-form-field-infix::after { + color: $underline-color-warn; + } + } + + // Styling for the error state of the form field. Note that while the same can be + // achieved with the ng-* classes, we use this approach in order to ensure that the same + // logic is used to style the error state and to show the error messages. + .mat-form-field.mat-form-field-invalid { + .mat-form-field-label { + color: $underline-color-warn; + + &.mat-accent, + .mat-form-field-required-marker { + color: $underline-color-warn; + } + } + + .mat-form-field-ripple, + .mat-form-field-ripple.mat-accent { + background-color: $underline-color-warn; + } + } + + .mat-error { + color: $underline-color-warn; + } + + @include mat-form-field-legacy-theme($theme); + @include mat-form-field-standard-theme($theme); + @include mat-form-field-fill-theme($theme); + @include mat-form-field-outline-theme($theme); +} + +// Used to make instances of the _mat-form-field-label-floating mixin negligibly different, +// and prevent Google's CSS Optimizer from collapsing the declarations. This is needed because some +// of the selectors contain pseudo-classes not recognized in all browsers. If a browser encounters +// an unknown pseudo-class it will discard the entire rule set. +$mat-form-field-dedupe: 0; + +// Applies a floating label above the form field control itself. +@mixin _mat-form-field-label-floating($font-scale, $infix-padding, $infix-margin-top) { + transform: translateY(-$infix-margin-top - $infix-padding + $mat-form-field-dedupe) + scale($font-scale); + width: 100% / $font-scale + $mat-form-field-dedupe; + + $mat-form-field-dedupe: $mat-form-field-dedupe + 0.00001 !global; +} + +@mixin mat-form-field-typography($config) { + // The unit-less line-height from the font config. + $line-height: mat-line-height($config, input); + + // The amount to scale the font for the floating label and subscript. + $subscript-font-scale: 0.75; + // The amount to scale the font for the prefix and suffix icons. + $prefix-suffix-icon-font-scale: 1.5; + + // The padding on the infix. Mocks show half of the text size. + $infix-padding: 0.5em; + // The margin applied to the form-field-infix to reserve space for the floating label. + $infix-margin-top: 1em * $line-height * $subscript-font-scale; + // Font size to use for the label and subscript text. + $subscript-font-size: $subscript-font-scale * 100%; + // Font size to use for the for the prefix and suffix icons. + $prefix-suffix-icon-font-size: $prefix-suffix-icon-font-scale * 100%; + // The space between the bottom of the .mat-form-field-flex area and the subscript wrapper. + // Mocks show half of the text size, but this margin is applied to an element with the subscript + // text font size, so we need to divide by the scale factor to make it half of the original text + // size. + $subscript-margin-top: 0.5em / $subscript-font-scale; + // The padding applied to the form-field-wrapper to reserve space for the subscript, since it's + // absolutely positioned. This is a combination of the subscript's margin and line-height, but we + // need to multiply by the subscript font scale factor since the wrapper has a larger font size. + $wrapper-padding-bottom: ($subscript-margin-top + $line-height) * $subscript-font-scale; + + .mat-form-field { + @include mat-typography-level-to-styles($config, input); + } + + .mat-form-field-wrapper { + padding-bottom: $wrapper-padding-bottom; + } + + .mat-form-field-prefix, + .mat-form-field-suffix { + // Allow icons in a prefix or suffix to adapt to the correct size. + .mat-icon { + font-size: $prefix-suffix-icon-font-size; + line-height: $line-height; + } + + // Allow icon buttons in a prefix or suffix to adapt to the correct size. + .mat-icon-button { + height: $prefix-suffix-icon-font-scale * 1em; + width: $prefix-suffix-icon-font-scale * 1em; + + .mat-icon { + height: $line-height * 1em; + line-height: $line-height; + } + } + } + + .mat-form-field-infix { + padding: $infix-padding 0; + // Throws off the baseline if we do it as a real margin, so we do it as a border instead. + border-top: $infix-margin-top solid transparent; + } + + .mat-form-field-can-float { + &.mat-form-field-should-float .mat-form-field-label, + .mat-input-server:focus + .mat-form-field-label-wrapper .mat-form-field-label { + @include _mat-form-field-label-floating( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + + // Server-side rendered matInput with a label attribute but label not shown + // (used as a pure CSS stand-in for mat-form-field-should-float). + .mat-input-server[label]:not(:label-shown) + .mat-form-field-label-wrapper + .mat-form-field-label { + @include _mat-form-field-label-floating( + $subscript-font-scale, $infix-padding, $infix-margin-top); + } + } + + .mat-form-field-label-wrapper { + top: -$infix-margin-top; + padding-top: $infix-margin-top; + } + + .mat-form-field-label { + top: $infix-margin-top + $infix-padding; + } + + .mat-form-field-underline { + // We want the underline to start at the end of the content box, not the padding box, + // so we move it up by the padding amount. + bottom: $wrapper-padding-bottom; + } + + .mat-form-field-subscript-wrapper { + font-size: $subscript-font-size; + margin-top: $subscript-margin-top; + + // We want the subscript to start at the end of the content box, not the padding box, + // so we move it up by the padding amount (adjusted for the smaller font size); + top: calc(100% - #{$wrapper-padding-bottom / $subscript-font-scale}); + } + + @include mat-form-field-legacy-typography($config); + @include mat-form-field-standard-typography($config); + @include mat-form-field-fill-typography($config); + @include mat-form-field-outline-typography($config); +} + + + + + +@mixin mat-tree-theme($theme) { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + .mat-tree { + background: mat-color($background, 'card'); + } + + .mat-tree-node, + .mat-nested-tree-node { + color: mat-color($foreground, text); + } +} + +@mixin mat-tree-typography($config) { + .mat-tree { + font-family: mat-font-family($config); + } + + .mat-tree-node, + .mat-nested-tree-node { + font-weight: mat-font-weight($config, body-1); + font-size: mat-font-size($config, body-1); + } +} + + + +// Includes all of the typographic styles. +@mixin angular-material-typography($config: null) { + @if $config == null { + $config: mat-typography-config(); + } + + @include mat-badge-typography($config); + @include mat-base-typography($config); + @include mat-autocomplete-typography($config); + @include mat-bottom-sheet-typography($config); + @include mat-button-typography($config); + @include mat-button-toggle-typography($config); + @include mat-card-typography($config); + @include mat-checkbox-typography($config); + @include mat-chips-typography($config); + @include mat-table-typography($config); + @include mat-datepicker-typography($config); + @include mat-dialog-typography($config); + @include mat-expansion-panel-typography($config); + @include mat-form-field-typography($config); + @include mat-grid-list-typography($config); + @include mat-icon-typography($config); + @include mat-input-typography($config); + @include mat-menu-typography($config); + @include mat-paginator-typography($config); + @include mat-progress-bar-typography($config); + @include mat-progress-spinner-typography($config); + @include mat-radio-typography($config); + @include mat-select-typography($config); + @include mat-sidenav-typography($config); + @include mat-slide-toggle-typography($config); + @include mat-slider-typography($config); + @include mat-stepper-typography($config); + @include mat-sort-typography($config); + @include mat-tabs-typography($config); + @include mat-toolbar-typography($config); + @include mat-tooltip-typography($config); + @include mat-list-typography($config); + @include mat-option-typography($config); + @include mat-optgroup-typography($config); + @include mat-snack-bar-typography($config); + @include mat-tree-typography($config); +} + + +// Mixin that renders all of the core styles that are not theme-dependent. +@mixin mat-core($typography-config: null) { + @include angular-material-typography($typography-config); + @include mat-ripple(); + @include cdk-a11y(); + @include cdk-overlay(); + @include cdk-text-field(); +} + +// Mixin that renders all of the core styles that depend on the theme. +@mixin mat-core-theme($theme) { + @include mat-ripple-theme($theme); + @include mat-option-theme($theme); + @include mat-optgroup-theme($theme); + @include mat-pseudo-checkbox-theme($theme); + + // Provides external CSS classes for each elevation value. Each CSS class is formatted as + // `mat-elevation-z$zValue` where `$zValue` corresponds to the z-space to which the element is + // elevated. + @for $zValue from 0 through 24 { + .#{$_mat-elevation-prefix}#{$zValue} { + @include _mat-theme-elevation($zValue, $theme); + } + } + + // Wrapper element that provides the theme background when the user's content isn't + // inside of a `mat-sidenav-container`. Note that we need to exclude the ampersand + // selector in case the mixin is included at the top level. + .mat-app-background#{if(&, ', &.mat-app-background', '')} { + $background: map-get($theme, background); + $foreground: map-get($theme, foreground); + + background-color: mat-color($background, background); + color: mat-color($foreground, text); + } + + // Marker that is used to determine whether the user has added a theme to their page. + @at-root { + .mat-theme-loaded-marker { + display: none; + } + } +} + + + + + + + + + + + + + + + + +@mixin mat-divider-theme($theme) { + $foreground: map-get($theme, foreground); + + .mat-divider { + border-top-color: mat-color($foreground, divider); + } + + .mat-divider-vertical { + border-right-color: mat-color($foreground, divider); + } +} + + + + + + + + + + + + + + + + + + + + + + + + + +// Create a theme. +@mixin angular-material-theme($theme) { + @include mat-core-theme($theme); + @include mat-autocomplete-theme($theme); + @include mat-badge-theme($theme); + @include mat-bottom-sheet-theme($theme); + @include mat-button-theme($theme); + @include mat-button-toggle-theme($theme); + @include mat-card-theme($theme); + @include mat-checkbox-theme($theme); + @include mat-chips-theme($theme); + @include mat-table-theme($theme); + @include mat-datepicker-theme($theme); + @include mat-dialog-theme($theme); + @include mat-divider-theme($theme); + @include mat-expansion-panel-theme($theme); + @include mat-form-field-theme($theme); + @include mat-grid-list-theme($theme); + @include mat-icon-theme($theme); + @include mat-input-theme($theme); + @include mat-list-theme($theme); + @include mat-menu-theme($theme); + @include mat-paginator-theme($theme); + @include mat-progress-bar-theme($theme); + @include mat-progress-spinner-theme($theme); + @include mat-radio-theme($theme); + @include mat-select-theme($theme); + @include mat-sidenav-theme($theme); + @include mat-slide-toggle-theme($theme); + @include mat-slider-theme($theme); + @include mat-stepper-theme($theme); + @include mat-sort-theme($theme); + @include mat-tabs-theme($theme); + @include mat-toolbar-theme($theme); + @include mat-tooltip-theme($theme); + @include mat-tree-theme($theme); + @include mat-snack-bar-theme($theme); +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..184840a --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,44 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { LoginComponent } from './pages/login/login.component'; +import { NavigationComponent } from './navigation/navigation.component'; +import { LockscreenComponent } from './pages/lockscreen/lockscreen.component'; +import {HomeComponent} from './home/home.component' + +//路由守卫 +import {AuthGuard} from './auth.guard' +import {MTokenK1Component} from './m-token-k1/m-token-k1.component' //K1秘钥 +import { LuckDrawComponent } from './ui/luck-draw/luck-draw.component'; + + + +const routes: Routes = [ + //{path:'',redirectTo:'ui/plan',pathMatch:'full',}, + /* { + path:'', + component:NavigationComponent, + // canActivate: [AuthGuard],//守卫验证 + children:[ + {path:'ui',loadChildren:() => import('./ui/ui.module').then(m => m.UiModule)}, + // {path:'home',loadChildren:() => import('./pages/pages.module').then(m => m.PagesModule)}, + // {path:'visualization',component: HomeComponent}, + // {path:'gis',loadChildren:() => import('./gis-management/gis-management.module').then(m => m.GISManagementModule)} + ] + }, */ + {path:'',component:LuckDrawComponent}, + // {path:'login', + // component:LoginComponent}, + + // {path:'getNoMToken', + // component:MTokenK1Component, canActivate: [AuthGuard],}, //K1秘钥验证失败是跳转页面 + + // {path:'lockscreen', + // component:LockscreenComponent, + // canActivate: [AuthGuard]}//守卫验证 +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000..6ee0c27 --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'anxin119'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('anxin119'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain('anxin119 app is running!'); + }); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..13a5c02 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,37 @@ +import { Component } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { Data } from './interface' +import { Router,ActivatedRoute } from '@angular/router' +import {CacheTokenService} from './http-interceptors/cache-token.service'//引入服务 + + + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + + constructor(private http:HttpClient,private router:Router,public token:CacheTokenService) { } + + ngOnInit(): void { + var token = sessionStorage.getItem("token"); + var refreshToken = sessionStorage.getItem("refreshToken"); + if(token && refreshToken) { + this.http.post('/api/Account/RefreshToken', { + token: token, + refreshToken: refreshToken + }).subscribe((data: Data) => { + sessionStorage.setItem("level",data.level); + sessionStorage.setItem("token",data.token); + sessionStorage.setItem("refreshToken",data.refreshToken); + this.token.startUp() + }) + } + + } + + + +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..3b99be1 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,48 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatIconModule } from '@angular/material/icon'; +import { MatSidenavModule } from '@angular/material/sidenav'; +import { NavigationModule } from './navigation/navigation.module'; +import { HomeComponent } from './home/home.component'; +import { TabbarComponent } from './tabbar/tabbar.component'; +import { PagesModule } from './pages/pages.module'; +import { FormsModule } from '@angular/forms'; +import { UiModule } from './ui/ui.module'; +import { HttpClientModule } from '@angular/common/http'; +import { httpInterceptorProviders } from './http-interceptors/index' +import {CacheTokenService} from './http-interceptors/cache-token.service' +import { TreeService } from'./http-interceptors/tree.service'; +import { MTokenK1Component } from './m-token-k1/m-token-k1.component' //K1秘钥 +import { CountdownModule } from 'ngx-countdown'; //倒计时插件 +import { GISManagementModule } from './gis-management/gis-management.module'; + +@NgModule({ + declarations: [ + AppComponent, + HomeComponent, + MTokenK1Component + ], + imports: [ + BrowserModule, + AppRoutingModule, + BrowserAnimationsModule, + MatButtonModule, + MatCheckboxModule, + MatSidenavModule, + NavigationModule, + MatIconModule, + PagesModule, + FormsModule, + HttpClientModule, + CountdownModule, + GISManagementModule + ], + providers: [httpInterceptorProviders, CacheTokenService,TreeService], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/src/app/auth.guard.ts b/src/app/auth.guard.ts new file mode 100644 index 0000000..b01fc58 --- /dev/null +++ b/src/app/auth.guard.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGuard implements CanActivate { + + constructor(private router: Router) { + + } + + // 路由守卫 + canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + + return this.checkLogin(); + } + + checkLogin(): boolean { + + // 判断本地有没有token + const token = sessionStorage.getItem('token'); + + // 如果有token,允许访问 + if (token) { return true; } + + //如果没有token,跳转登录页 + this.router.navigate(['/login']); + return false; + } +} diff --git a/src/app/canvas-share-data.service.ts b/src/app/canvas-share-data.service.ts new file mode 100644 index 0000000..fe84094 --- /dev/null +++ b/src/app/canvas-share-data.service.ts @@ -0,0 +1,744 @@ +import { Injectable } from '@angular/core'; +import {ReplaySubject} from 'rxjs'; +import { Observable } from 'rxjs'; +@Injectable({ + providedIn: 'root' +}) +export class CanvasShareDataService { + constructor() { } + private _sendMessage: ReplaySubject = new ReplaySubject(1); + GameMode: any; + + isChange = false; // 数据 是否改动 + + selectTemplateData: any; // 选择当前 模板数据 + + // 总平面图/建筑 楼层 + selectStorey: any = {area: '', details: ''}; // 选择当前 楼层 数据 + originalcompanyBuildingData: any; // 单位/建筑 数据 + originaleveryStoreyData: any; // 总平面图/楼层/区域 楼层数据 + // 总平面图/建筑 楼层 + + // 处置 节点 + allDisposalNode: any = []; // 所有 处置节点 + allNodeMarkers: any; // 灾情 标签信息 + selectPanelPoint: any = {disposalNodeId: ''}; // 选择当前 数据节点 + selectPanelPointBaseData: any = {description: '', notes: '', weather: '', airTemperature: '', windDirection: '', windScale: ''}; // 当前 数据节点 所对应的 天气,详情 数据节点 + // 处置 节点 + + // 预案赋能 选择 车辆 + selectCar: any = {Id: '', WaterYield: '', Foam: '', PeopleNum: '', Tonnage: '', Assignment: '', LinkCar: [], WaterOccupy: []}; + // 预案赋能 选择 车辆 + + /** + * 游戏模式 + */ + gameMode: GameMode = GameMode.BasicInformation; + + facilityAssetsName = new Map([ + [ '消防水池', '消防水池'], + [ '疏散楼梯', '疏散楼梯'], + [ '消防电梯', '消防电梯'], + [ '避难区域', '避难区域'], + [ '安全出口', '安全出口'], + [ '地上消火栓', '室外消火栓' ], + [ '地下消火栓', '室外消火栓' ], + [ '室内消火栓', '室内消火栓' ], + [ '供水管网', '供水管网'], + [ '湿式自动喷淋系统', '湿式自动喷淋系统'], + [ '水幕系统', '水幕系统' ], + [ '消防泵房', '消防泵房'], + [ '水泵接合器(地上)', '水泵接合器'], + [ '水泵接合器(地下)', '水泵接合器'], + [ '水泵接合器(墙壁)', '水泵接合器'], + [ '消防水泵房', '消防水泵房'], + [ '箱式消火栓', '箱式消火栓'], + [ '固定水炮', '消防水炮' ], + [ '消防水罐', '储水罐'], + [ '消防水罐2', '储水罐'], + [ '卧式水罐', '储水罐'], + [ '消防泵', '水泵' ], + [ '泡沫泵', '水泵' ], + [ '泡沫泵房', '泡沫站'], + [ '泡沫栓', '泡沫栓' ], + [ '泡沫枪', '泡沫枪'], + [ '泡沫发生器', '泡沫发生器' ], + [ '消防管网', '消防管网'], + [ 'DCS控制室', 'DCS控制室'] + ]); + + + public getLinkCarName(car: any): any[] { + const linkCar = []; + car.assetData.Pipelines.forEach(pipeline => { + const icon = pipeline.assetData.LinkedObjects.find(i => i !== car); + if (icon.assetData.Type === 1) { + linkCar.push(icon.assetData.Name); + } + }); + return linkCar; + } + + public getWaterOccupyName(car: any): any[] { + const waterOccupy = []; + car.assetData.Pipelines.forEach(pipeline => { + const icon = pipeline.assetData.LinkedObjects.find(i => i !== car); + if (icon.assetData.Type === 0) { + waterOccupy.push(icon.assetData.Name); + } + }); + return waterOccupy; + } + /** + * 向其他组件发送信息 * + * @param message 需要发送的信息 + * @returns {Observavle} + */ + public sendMessage(message: any) { + this._sendMessage.next(message); + } + public getMessage(): Observable { + return this._sendMessage.asObservable(); + } + + // 处置节点 筛选出 匹配数据 匹配不到 return undefined + findDisposalNode(parentId: string= null, name: string= null) { + if (parentId && name) { // 匹配 父id, name + const returnData = this.allDisposalNode.find(item => item.parentId === parentId && item.name === name); + return returnData; + } else { // 匹配 id + const returnData = this.allDisposalNode.find(item => item.id === parentId); + return returnData; + } + } + /** + * 获取单位毗邻信息 + */ + public getCompanyAdjoinInfo(): CompanyAdjoinInfo[] { + const list: CompanyAdjoinInfo[] = []; + Object.keys(this.originalcompanyBuildingData.data).forEach((key) => { + const item = this.originalcompanyBuildingData.data[key]; + if (item.Name === '毗邻') { + const adjoin = new CompanyAdjoinInfo(); + adjoin.AssetId = item.Id; + adjoin.Id = ''; + adjoin.ImageUrls = []; + adjoin.CompanyId = sessionStorage.getItem('companyId'); + item.PropertyInfos.forEach(element => { + if (element.PropertyName === '方向') { + adjoin.Direction = Number(element.PropertyValue); + } else if (element.PropertyName === '名称/编号') { + adjoin.Name = element.PropertyValue; + } else if (element.PropertyType === PropertyType.Image) { + adjoin.ImageUrls.push(element.PropertyValue); + } + }); + list.push(adjoin); + } + }); + return list; + } + /** + * 获取建筑毗邻信息 + */ + public getBuildingAdjoinInfo(): BuildingAdjoinInfo[] { + const list: BuildingAdjoinInfo[] = []; + Object.keys(this.originalcompanyBuildingData.data).forEach((key) => { + const item = this.originalcompanyBuildingData.data[key]; + if (item.Name === '毗邻') { + const adjoin = new BuildingAdjoinInfo(); + adjoin.AssetId = item.Id; + adjoin.Id = ''; + adjoin.BuildingId = this.selectStorey.buildingId; + adjoin.ImageUrls = []; + item.PropertyInfos.forEach(element => { + if (element.PropertyName === '方向') { + adjoin.Direction = Number(element.PropertyValue); + } else if (element.PropertyName === '名称/编号') { + adjoin.Name = element.PropertyValue; + } else if (element.PropertyType === PropertyType.Image) { + adjoin.ImageUrls.push(element.PropertyValue); + } + }); + list.push(adjoin); + } + }); + return list; + } + /** + * 获取单位重点部位 + */ + public getCompanyImportantLocations(): CompanyImportantLocationInfo[] { + const list: CompanyImportantLocationInfo[] = []; + Object.keys(this.originalcompanyBuildingData.data).forEach((key) => { + const item = this.originalcompanyBuildingData.data[key]; + if (item.Name === '重点部位') { + const important = new CompanyImportantLocationInfo(); + important.AssetId = item.Id; + important.Id = ''; + important.ImageUrls = []; + important.CompanyId = sessionStorage.getItem('companyId'); + item.PropertyInfos.forEach(element => { + if (element.PropertyName === '名称/编号') { + important.Name = element.PropertyValue; + } else if (element.PropertyType === PropertyType.Image) { + important.ImageUrls.push(element.PropertyValue); + } else if (element.PropertyName === '主要危险性') { + important.Hazards = element.PropertyValue; + } else if (element.PropertyName === '使用性质') { + important.Nature = element.PropertyValue; + } else if (element.PropertyName === '所在位置') { + important.Position = element.PropertyValue; + } else if (element.PropertyName === '建筑结构') { + important.Structure = element.PropertyValue; + } + }); + list.push(important); + } + }); + return list; + } + /** + * 获取建筑重点部位 + */ + public getBuildingImportantLocations(): BuildingImportantLocationInfo[] { + const list: BuildingImportantLocationInfo[] = []; + Object.keys(this.originalcompanyBuildingData.data).forEach((key) => { + const item = this.originalcompanyBuildingData.data[key]; + if (item.Name === '重点部位') { + const important = new BuildingImportantLocationInfo(); + important.AssetId = item.Id; + important.Id = ''; + important.ImageUrls = []; + important.BuildingId = this.selectStorey.buildingId; + item.PropertyInfos.forEach(element => { + if (element.PropertyName === '名称/编号') { + important.Name = element.PropertyValue; + } else if (element.PropertyType === PropertyType.Image) { + important.ImageUrls.push(element.PropertyValue); + } else if (element.PropertyName === '主要危险性') { + important.Hazards = element.PropertyValue; + } else if (element.PropertyName === '使用性质') { + important.Nature = element.PropertyValue; + } else if (element.PropertyName === '所在位置') { + important.Position = element.PropertyValue; + } else if (element.PropertyName === '建筑结构') { + important.Structure = element.PropertyValue; + } + }); + list.push(important); + } + }); + return list; + } + /** + * 获取单位消防设施 + */ + public getAllCompanyFacilityAssetInfo(): CompanyFacilityAssetInfo[] { + const list: CompanyFacilityAssetInfo[] = []; + Object.keys(this.originalcompanyBuildingData.data).forEach((key) => { + const item = this.originalcompanyBuildingData.data[key]; + if (this.facilityAssetsName.has(item.Name)) { + const facility = new CompanyFacilityAssetInfo(); + facility.CompanyId = sessionStorage.getItem('companyId'); + facility.AssetId = item.Id; + facility.Id = ''; + facility.Name = this.facilityAssetsName.get(item.Name); + facility.AssetName = item.Name; + facility.PropertyInfos = item.PropertyInfos; + facility.SitePlanId = item.FloorId; + list.push(facility); + } + }); + return list; + } + /** + * 获取建筑消防设施 + */ + public getAllBuildingFacilityAssetInfo(): BuildingFacilityAssetInfo[] { + const list: BuildingFacilityAssetInfo[] = []; + Object.keys(this.originalcompanyBuildingData.data).forEach((key) => { + const item = this.originalcompanyBuildingData.data[key]; + if (this.facilityAssetsName.has(item.Name)) { + const facility = new BuildingFacilityAssetInfo(); + facility.BuildingId = this.selectStorey.buildingId; + facility.AssetId = item.Id; + facility.Id = ''; + facility.Name = this.facilityAssetsName.get(item.Name); + facility.AssetName = item.Name; + facility.PropertyInfos = item.PropertyInfos; + facility.BuildingAreaId = item.FloorId; + list.push(facility); + } + }); + return list; + } +} + +/** + * 单位毗邻 + */ +export class CompanyAdjoinInfo { + public CompanyId: string; + public Id: string; + public Name: string; + public Direction: number; + public ImageUrls: string[] = []; + public AssetId: string; +} +/** + * 建筑毗邻 + */ +export class BuildingAdjoinInfo { + public BuildingId: string; + public Id: string; + public Name: string; + public Direction: number; + public ImageUrls: string[]; + public AssetId: string; +} +/** + * 建筑重点部位 + */ +export class BuildingImportantLocationInfo { + public BuildingId: string; + public Id: string; + public Name: string; + public Position: string; + public Structure: string; + public Nature: string; + public Hazards: string; + public ImageUrls: string[]; + public AssetId: string; +} +/** + * 单位重点部位 + */ +export class CompanyImportantLocationInfo { + public CompanyId: string; + public Id: string; + public Name: string; + public Position: string; + public Structure: string; + public Nature: string; + public Hazards: string; + public ImageUrls: string[]; + public AssetId: string; +} +/** + * 单位消防素材信息 + */ +export class CompanyFacilityAssetInfo { + public Id: string; + public Name: string; + public AssetName: string; + public PropertyInfos: string; + public AssetId: string; + public CompanyId: string; + public SitePlanId: string; +} +/** + * 建筑消防素材信息 + */ +export class BuildingFacilityAssetInfo { + public Id: string; + public Name: string; + public AssetName: string; + public PropertyInfos: string; + public AssetId: string; + public BuildingId: string; + public BuildingAreaId: string; +} +/** + * 属性 + */ +export class PropertyInfo { + // 标记位 + public Tag: string; + // 属性书序 + public Order: number; + // 是否启用 + public Enabled: boolean; + // 是否可见 + public Visible: boolean; + // 必填 + public Required: boolean; + // 验证规则名称 + public RuleName: string; + // 验证规则值 + public RuleValue: string; + // 物理单位 + public PhysicalUnit: string; + // 属性名称 + public PropertyName: string; + // 属性类型 + public PropertyType: PropertyType; + // 属性值 + public PropertyValue: string; +} +/** + * 属性类型。 + */ +export enum PropertyType { + // 单行文本。 + SingleText, + // 多行文本。 + MultipleText, + // 数值。 + Numeric, + // 图片。 + Image, + // 图片数值,专用于描述图片数量。 + ImageNumeric, + // 方向 + Direction, + // 布尔类型。 + Boolean, + // 供给区域 + SupplyArea, + // 供给类型 + SupplyType +} +/** + * 处置节点 + */ +export class DisposalNode { + /** + * 编号 + */ + public Id: string; + /** + * 名称 + */ + public Name: string; + /** + * 等级 + */ + public Level: number; + /** + * 排序 + */ + public Order: number; + /** + * 详情 + */ + public Description: string; + /** + * 注意事项 + */ + public Notes: string; + /** + * 天气 + */ + public Weather: string; + /** + * 气温 + */ + public AirTemperature?: number; + /** + * 风向 + */ + public WindDirection: Direction; + /** + * 风力等级 + */ + public WindScale: WindScale; + /** + * 图片名称 + */ + public ImageNames: string[]; + /** + * 图片地址 + */ + public ImageUrls: string[]; + /** + * 父节点编号 + */ + public ParentId: string; + /** + * 灾情编号 + */ + public DisasterId: string; + /** + * 预案组件编号 + */ + public PlanComponentId: string; + /** + * 单位编号 + */ + public CompanyId: string; + /** + * 总平面图编号 + */ + public SitePlanId: string; + /** + * 建筑编号 + */ + public BuildingId: string; + /** + * 建筑区域编号 + */ + public BuildingAreaId: string; +} +/** + * 方向。 + */ +export enum Direction { + /** + * 东 + */ + East, + /** + * 西 + */ + West, + /** + * 南 + */ + South, + /** + * 北 + */ + North, + /** + * 东南 + */ + Southeast, + /** + * 西南 + */ + Southwest, + /** + * 东北 + */ + Northeast, + /** + * 西北 + */ + Northwest +} +/** + * 风力等级 + */ +export enum WindScale { + WS0, + WS1, + WS2, + WS3, + WS4, + WS5, + WS6, + WS7, + WS8, + WS9, + WS10, + WS11, + WS12, + WS13, + WS14, + WS15, + WS16, + WS17, + WS18 +} +/** + * 处置节点数据 + */ +export class DisposalNodeData { + /** + * 编号 + */ + public Id: string; + /** + * 数据 + */ + public Data: FloorNodeData; + /** + * 版本号 + */ + public Version: string; + /** + * 处置节点编号 + */ + public DisposalNodeId: string; + /** + * 预案组件编号 + */ + public PlanComponentId: string; +} +/** + * 楼层节点数据 + */ +export class FloorNodeData { + /** + * 存量 + */ + public Stock: Map = new Map(); + /** + * 增量 + */ + public Increment: Map = new Map(); + /** + * 用户定义的增量。 + */ + public DefinedIncrement: Map = new Map(); +} +/** + * 素材数据 + */ +export class AssetData { + /// + /// 模板编号 + /// + public TemplateId: string; + /// + /// 编号 + /// + public Id: string; + /// + /// 名称 + /// + public Name: string; + /// + /// 角度 + /// + public Angle: number; + /// + /// 颜色 + /// + public Color: string; + /// + /// 坐标 + /// + public Point: PIXI.Point; + /// + /// 宽度 + /// + public Width: number; + /// + /// 高度 + /// + public Height: number; + /// + /// 是否启用 + /// + public Enabled: boolean; + /// + /// 填充方式 + /// + public FillMode: FillMode; + /// + /// 图片地址 + /// + public ImageUrl: string; + /// + /// 是否固定大小 + /// + public FixedSize: boolean; + /// + /// 点路径 + /// + public MultiPoint: PIXI.Point[]; + /// + /// 建筑ID + /// + public BuildingId: string; + /// + /// 单位ID + /// + public CompanyId: string; + /// + /// 楼层编号 + /// + public FloorId: string; + /// + /// 楼层名称 + /// + public FloorName: string; + /// + /// 消防要素编号 + /// + public FireElementId: string; + /// + /// 属性列表 + /// + public PropertyInfos: PropertyInfo[]; + /// + /// 交互方式 + /// + public InteractiveMode: InteractiveMode; + /// + /// 是否来自建筑 + /// + public IsFromBuilding: boolean; + /// + /// 渲染方式。 + /// + public DrawMode: ImageType; + /// + /// 9宫格边框数值。 + /// + public Border: Border; + /// + /// 厚度。 + /// + public Thickness: number; + /// + /// 素材类型 + /// + public GameMode: GameMode; +} +/** + * 游戏状态 + */ +export enum GameMode { + BasicInformation, + Assignment, + Demo +} +/** + * 填充模式 + */ +export enum FillMode { + Color, + Image +} +/** + * 交互方式 + */ +export enum InteractiveMode { + /** + * 单点。 + */ + Single, + /** + * 多点不闭合。 + */ + Multiple, + /** + * 多点闭合。 + */ + MultipleClosed +} +/** + * 图片显示类型 + */ +export enum ImageType { + Simple = 0, + Sliced = 1, + Tiled = 2, + Filled = 3 +} +/** + * 边框 + */ +export class Border { + + public x: number; + + public y: number; + + public z: number; + + public w: number; +} diff --git a/src/app/gis-management/gis-labeling/gis-labeling.component.html b/src/app/gis-management/gis-labeling/gis-labeling.component.html new file mode 100644 index 0000000..14ea061 --- /dev/null +++ b/src/app/gis-management/gis-labeling/gis-labeling.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/app/gis-management/gis-labeling/gis-labeling.component.scss b/src/app/gis-management/gis-labeling/gis-labeling.component.scss new file mode 100644 index 0000000..feb03fd --- /dev/null +++ b/src/app/gis-management/gis-labeling/gis-labeling.component.scss @@ -0,0 +1,84 @@ +.mapbox{ + width: 100%; + height: 100%; +} + + + + + + + + + + +// .content-window-card { +// position: relative; +// box-shadow: none; +// bottom: 0; +// left: 0; +// width: auto; +// padding: 0; +// } + +// .content-window-card p { +// height: 20px; +// } + +// .custom-info { +// border: solid 1px silver; +// } +// div.info-top { +// position: relative; +// background: none repeat scroll 0 0 #F9F9F9; +// border-bottom: 1px solid #CCC; +// border-radius: 5px 5px 0 0; +// } + +// div.info-top div { +// display: inline-block; +// color: #333333; +// font-size: 14px; +// font-weight: bold; +// line-height: 31px; +// padding: 0 10px; +// } + +// div.info-top img { +// position: absolute; +// top: 10px; +// right: 10px; +// transition-duration: 0.25s; +// } + +// div.info-top img:hover { +// box-shadow: 0px 0px 5px #000; +// } + +// div.info-middle { +// font-size: 12px; +// padding: 10px 6px; +// line-height: 20px; +// } + +// div.info-bottom { +// height: 0px; +// width: 100%; +// clear: both; +// text-align: center; +// } + +// div.info-bottom img { +// position: relative; +// z-index: 104; +// } + +// span { +// margin-left: 5px; +// font-size: 11px; +// } + +// .info-middle img { +// float: left; +// margin-right: 6px; +// } diff --git a/src/app/gis-management/gis-labeling/gis-labeling.component.spec.ts b/src/app/gis-management/gis-labeling/gis-labeling.component.spec.ts new file mode 100644 index 0000000..666c51f --- /dev/null +++ b/src/app/gis-management/gis-labeling/gis-labeling.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GisLabelingComponent } from './gis-labeling.component'; + +describe('GisLabelingComponent', () => { + let component: GisLabelingComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GisLabelingComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GisLabelingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/gis-management/gis-labeling/gis-labeling.component.ts b/src/app/gis-management/gis-labeling/gis-labeling.component.ts new file mode 100644 index 0000000..e6420cc --- /dev/null +++ b/src/app/gis-management/gis-labeling/gis-labeling.component.ts @@ -0,0 +1,74 @@ +import { Component, OnInit ,Renderer2,ElementRef } from '@angular/core'; +declare var AMap: any; +@Component({ + selector: 'app-gis-labeling', + templateUrl: './gis-labeling.component.html', + styleUrls: ['./gis-labeling.component.scss'] +}) +export class GisLabelingComponent implements OnInit { + + constructor(private elementRef: ElementRef,public renderer2: Renderer2) { } + map:any //地图 + ngOnInit(): void { + + setTimeout(() => { + this.map = new AMap.Map('map'); + //给地图增加点击事件 + this.map.on('click', (ev)=>{ + // 触发事件的对象 + var target = ev.target; + + // 触发事件的地理坐标,AMap.LngLat 类型 + var lnglat = ev.lnglat; + + // 触发事件的像素坐标,AMap.Pixel 类型 + var pixel = ev.pixel; + + // 触发事件类型 + var type = ev.type; + + let marker = new AMap.Marker({ + position:[lnglat.lng, lnglat.lat]//位置 + }) + // marker.content = '我是第' + (i + 1) + '个Marker'; + marker.setMap(this.map) + + AMap.event.addListener(marker, 'click', () => { + infoWindow.open(this.map, marker.getPosition()); + console.log(222,marker) + setTimeout(() => { + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#lnglat2container'),'click',(event)=>{ + console.log(111) + }) + }, 0); + + }); + + }); + + var infoWindowContent = + '
' + + '' + + '
' + + '
' + + '经纬度' + + '
' + + '' + + '
' + + '' + + '
'; + var infoWindow = new AMap.InfoWindow({ + content: infoWindowContent, + offset: new AMap.Pixel(0, -45) + }); + + // var xxx  =  this.el.nativeElement.querySelector('#lnglat2container') + let yyy = document.getElementById('lnglat2container'); + + }, 0); + } + + getLngLat(){ + console.log(123) + } +} diff --git a/src/app/gis-management/gis-management-routing.module.ts b/src/app/gis-management/gis-management-routing.module.ts new file mode 100644 index 0000000..6031db6 --- /dev/null +++ b/src/app/gis-management/gis-management-routing.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = [ +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class GisRoutingModule { } diff --git a/src/app/gis-management/gis-management.module.ts b/src/app/gis-management/gis-management.module.ts new file mode 100644 index 0000000..11bbefe --- /dev/null +++ b/src/app/gis-management/gis-management.module.ts @@ -0,0 +1,100 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { GisLabelingComponent } from './gis-labeling/gis-labeling.component'; + +import {A11yModule} from '@angular/cdk/a11y'; +import {DragDropModule} from '@angular/cdk/drag-drop'; +import {PortalModule} from '@angular/cdk/portal'; +import {ScrollingModule} from '@angular/cdk/scrolling'; +import {CdkStepperModule} from '@angular/cdk/stepper'; +import {CdkTableModule} from '@angular/cdk/table'; +import {CdkTreeModule} from '@angular/cdk/tree'; +import {MatAutocompleteModule} from '@angular/material/autocomplete'; +import {MatBadgeModule} from '@angular/material/badge'; +import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; +import {MatButtonModule} from '@angular/material/button'; +import {MatButtonToggleModule} from '@angular/material/button-toggle'; +import {MatCardModule} from '@angular/material/card'; +import {MatCheckboxModule} from '@angular/material/checkbox'; +import {MatChipsModule} from '@angular/material/chips'; +import {MatStepperModule} from '@angular/material/stepper'; +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatDividerModule} from '@angular/material/divider'; +import {MatExpansionModule} from '@angular/material/expansion'; +import {MatGridListModule} from '@angular/material/grid-list'; +import {MatIconModule} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import {MatListModule} from '@angular/material/list'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatNativeDateModule, MatRippleModule, MatOption} from '@angular/material/core'; +import {MatPaginatorModule} from '@angular/material/paginator'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatRadioModule} from '@angular/material/radio'; +import {MatSelectModule} from '@angular/material/select'; +import {MatSidenavModule} from '@angular/material/sidenav'; +import {MatSliderModule} from '@angular/material/slider'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatSortModule} from '@angular/material/sort'; +import {MatTableModule} from '@angular/material/table'; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatTreeModule} from '@angular/material/tree'; +import { FormsModule } from '@angular/forms'; +import { GisRoutingModule } from './gis-management-routing.module'; + +@NgModule({ + declarations: [GisLabelingComponent], + imports: [ + CommonModule, + CommonModule, + GisRoutingModule, + A11yModule, + CdkStepperModule, + CdkTableModule, + CdkTreeModule, + DragDropModule, + MatAutocompleteModule, + MatBadgeModule, + MatBottomSheetModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatChipsModule, + MatStepperModule, + MatDatepickerModule, + MatDialogModule, + MatDividerModule, + MatExpansionModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, + MatTreeModule, + PortalModule, + ScrollingModule, + FormsModule + ] +}) +export class GISManagementModule { } diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html new file mode 100644 index 0000000..203c4f3 --- /dev/null +++ b/src/app/home/home.component.html @@ -0,0 +1,114 @@ +
+
+ +
+
+
+ +
+
+
+
+
+
+
+
计划完成情况
+
+
+
+
+
本年时间进度
+
+
47%
+
+
+
+
+
+
+
年计划完成率
+
+
17%
+
+
+
+
+
+
+
日历进度差
+
+
63%
+
+
+
+
+
+
+
+
+
+ +
+ +
+
+
预案编制总量
+
    +
  • {{item}}
  • +
+
+
+
采集单位总量
+
{{keyUnitQuantity}}
+
+
+
重点关注单位总量
+
{{dataQuantity}}
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
三维预案总数
+
{{threeDimensional}}
+
+
+
二维预案总数
+
{{twoDimensional}}
+
+
+
卡片预案总数
+
{{cardDimensional}}
+
+
+
其他预案总数
+
{{otherDimensional}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/home/home.component.scss b/src/app/home/home.component.scss new file mode 100644 index 0000000..3149b4e --- /dev/null +++ b/src/app/home/home.component.scss @@ -0,0 +1 @@ +@import "../../assets/css/newStyle.css"; \ No newline at end of file diff --git a/src/app/home/home.component.spec.ts b/src/app/home/home.component.spec.ts new file mode 100644 index 0000000..490e81b --- /dev/null +++ b/src/app/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts new file mode 100644 index 0000000..d94f6df --- /dev/null +++ b/src/app/home/home.component.ts @@ -0,0 +1,483 @@ +import { Component, OnInit, Renderer2, ElementRef } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +declare var echarts: any; +declare var AMap: any; +declare var AMapUI: any; + + + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent implements OnInit { + + constructor(private http:HttpClient, private render2: Renderer2,public element: ElementRef) { } + + visualizationData:any; //统计分析数据 + + planQuantity:any = ['0','0']; //预案编制总量 + keyUnitQuantity:any; //单位总量 + dataQuantity:any; //重点关注单位预案数量 + + threeDimensional:any; //三维预案总量 + twoDimensional:any; //三维预案总量 + cardDimensional:any; //卡片预案总量 + otherDimensional:any; //其他预案总量 + + ngOnInit() { + this.getVisualizationData() + } + + ngAfterViewInit(): void { + + } + + //获取统计分析数据 + getVisualizationData () { + this.http.get('/api/StatisticsAnalysis').subscribe((data:any)=>{ + this.visualizationData = data + + let numbers = (data.planStatistics.totalCount).toString(); + for (var i = 0; i < numbers.length; i++) { + this.planQuantity.push(numbers[i]); + } + this.keyUnitQuantity = data.companyStatistics.totalCount + this.dataQuantity = data.planStatistics.followedCount + + this.threeDimensional = data.planStatistics.planTypeStatistics.plan3DCount + this.twoDimensional = data.planStatistics.planTypeStatistics.plan2DCount + this.cardDimensional = data.planStatistics.planTypeStatistics.planCardCount + this.otherDimensional = data.planStatistics.planTypeStatistics.planOtherCount + + this.unitType() + this.unitData() + this.teamData() + this.keyUnit() + + }) + } + + //单位类型统计 + unitType () { + let data = [] + let color = ['#BE1B94', '#E29217', '#2AFF71', '#BE1B4D', '#D1E217', '#65F5F3','#BE1B94', '#E29217', '#2AFF71', '#BE1B4D', '#D1E217', '#65F5F3']; + //处理数据 + this.visualizationData.companyStatistics.buildingTypeStatistics.buildingTypes.forEach((element,index) => { + let msg = { + name: element.buildingTypeName, + value: element.count, + itemStyle: { + color: color[index], + } + } + data.push(msg) + }); + //处理数据 + var chartHynyxf = echarts.init(document.getElementById('chartHynyxf'), 'skinUpp'); + + var categoryData = []; + for (var i = 0; i < data.length; i++) { + categoryData.push(data[i].name); + } + var option = { + // 标题 + title: { + text: '采集单位类型统计', + top: 0 + }, + //图例 + legend: { + data: ['单位类型统计'], + show: false + }, + grid: { + left: 90, + top:40, + // right:8, + width: '70%' , + height: '70%' , + }, + //提示框 + tooltip: { + trigger: 'item', + }, + // x轴 + xAxis: { + type: 'value' + }, + // y轴 + yAxis: { + type: 'category', + data: categoryData, + axisLabel: { margin: 3,fontSize:11}, + }, + // 数据 + series: [ + { + name: '单位类型统计', + type: 'bar', + label: { + show: true, + position: 'right', + color:'#fff' + }, + data: data, + }, + ], + }; + chartHynyxf.setOption(option); + } + + //单位数据统计 + unitData () { + let data = [] + let unitData = [] + let planData = [] + //处理数据 + this.visualizationData.companyStatistics.organizationStatistics.organizations.forEach(element => { + data.push(element.organizationName) + unitData.push(element.count) + }); + this.visualizationData.planStatistics.organizationStatistics.organizations.forEach(element => { + planData.push(element.count) + }); + //处理数据 + var chartDwsjcj = echarts.init(document.getElementById('chartDwsjcj'), 'skinUpp'); + var option = { + color: ['#FB33C2', '#00CFF0', '#2C3DE0'], + // 标题 + title: { + text: '单位数据采集数量与单位预案数量统计', + left: 0, + top: 0, + }, + grid: { + left: 30, + right: 0, + }, + //图例 + legend: { + top: 0, + data: ['单位数据采集数量', '单位预案编制数量', ], + icon: 'circle', + itemGap: 20, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: data, + axisLabel: { + interval: 0, + + formatter:function(value){ + var ret = "";//拼接加\n返回的类目项 + var maxLength = 5;//每项显示文字个数 + var valLength = value.length;//X轴类目项的文字个数 + var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 + if (rowN > 1) { //如果类目项的文字大于1, + 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; } + } //function + + } + }, + // y轴 + yAxis: { + type: 'value', + splitLine: { + show: true, + lineStyle: { + color: 'rgba(255,255,255,.4)' + } + }, + }, + // 数据 + series: [ + { + name: '单位数据采集数量', + type: 'bar', + data: unitData, + label: { + show: true, + position: "top", + formatter: '{c}', + color: "#fff", + }, + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(254,51,194,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(254,51,194,.5)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + } + }, { + name: '单位预案编制数量', + type: 'bar', + data: planData, + label: { + show: true, + position: "top", + formatter: '{c}', + color: "#fff", + }, + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(0,220,254,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,104,191,1)' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + } + } + ], + }; + chartDwsjcj.setOption(option); + } + + //全队数据采集和预案编制数量统计 + teamData () { + let unitData = [] + let planData = [] + //处理数据 + this.visualizationData.companyStatistics.trendStatistics.added.forEach(element => { + unitData.push(element.count) + }); + this.visualizationData.planStatistics.trendStatistics.added.forEach(element => { + planData.push(element.count) + }); + //处理数据 + var chartQusj = echarts.init(document.getElementById('chartQusj'), 'skinUpp'); + var option = { + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '全队数据采集和预案编制数量统计', + top: -4, + left: 0 + }, + //图例 + legend: { + top: 0, + data: ['单位预案编制数量', '单位数据采集数量'], + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + name: '个' + }, + // 数据 + series: [{ + name: '单位预案编制数量', + type: 'line', + data: planData, + // showSymbol: true, + // symbolSize:6, + // smooth: false, + // label: { + // show: true, + // }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(60,103,195,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(0,194,255,.2)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + } + }, + { + name: '单位数据采集数量', + type: 'line', + + data: unitData, + }, + ], + }; + chartQusj.setOption(option); + } + + //重点关注企业预案完成情况 + keyUnit () { + let data = [] + var realEnd = []; + var shouldEnd = [500,300,300,300,300,300,300,150]; + //处理数据 + this.visualizationData.planStatistics.buildingTypeStatistics.buildingTypes.forEach(element => { + data.push(element.buildingTypeName) + realEnd.push(element.count) + }); + //处理数据 + var chartZdgzqy = echarts.init(document.getElementById('chartZdgzqy'), 'skinUpp'); + var option = { + color: ['#FB33C2', '#00CFF0', '#2C3DE0'], + // 标题 + title: { + text: '重点关注企业预案完成情况', + left: 0, + top: 0, + }, + grid: { + left: 30, + bottom: 45 + }, + //图例 + legend: { + top: 0, + data: ['单位类型统计'], + icon: 'circle', + itemGap: 20, + show: false + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + axisLine: false, + data: data, + axisLabel: { + interval: 0, + + formatter:function(value){ + var ret = "";//拼接加\n返回的类目项 + var maxLength = 3;//每项显示文字个数 + var valLength = value.length;//X轴类目项的文字个数 + var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数 + if (rowN > 1) { //如果类目项的文字大于1, + 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; } + } //function + + } + + }, + // y轴 + yAxis: [ + { + type: 'value', + axisLine: false, + }, { + type: 'value', + axisLine: false, + } + ], + // 数据 + series: [ + // { + // name: '单位类型统计', + // type: 'line', + // data: data, + // itemStyle: { + // color: '#fff' + // }, + // label: { + // show: false, + // position: "top", + // formatter: '{c}', + // color: "#fff", + // }, + // }, + { + name: '目标完成预案数量', + type: 'bar', + barWidth: '16px', + barGap: '-100%', + itemStyle: { + color: '#025D7C' + }, + label: { + show: false, + }, + data: shouldEnd, + }, + { + name: '完成预案数量', + type: 'bar', + barWidth: '16px', + yAxisIndex: 1, + itemStyle: { + color: '#79CBE8' + }, + label: { + show: false, + position: "insideTop", + formatter: '{c}', + color: "#fff", + }, + data: realEnd, + } + ], + }; + chartZdgzqy.setOption(option); + } + + + +} diff --git a/src/app/http-interceptors/base-interceptor.ts b/src/app/http-interceptors/base-interceptor.ts new file mode 100644 index 0000000..76b39b8 --- /dev/null +++ b/src/app/http-interceptors/base-interceptor.ts @@ -0,0 +1,83 @@ +import { Injectable } from '@angular/core'; +import { + HttpClient, HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, + HttpErrorResponse +} from '@angular/common/http'; +import { throwError } from 'rxjs' +import { catchError, retry } from 'rxjs/operators'; +import { Router,ActivatedRoute } from '@angular/router' +import {CacheTokenService} from './cache-token.service' +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; + +//baseurl +// const baseurl = 'http://39.106.78.171:8008'; + +@Injectable() +export class BaseInterceptor implements HttpInterceptor { + + constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,public token:CacheTokenService,public snackBar: MatSnackBar) {} + + intercept(req, next: HttpHandler) { + + let newReq = req.clone({ + url: req.hadBaseurl ? `${req.url}` : `${req.url}`, + }); + if(!req.cancelToken) { + /*获取token*/ + let token = sessionStorage.getItem("token") || '' + /*此处设置额外请求头,token令牌*/ + newReq.headers = + newReq.headers.set('Authorization', `Bearer ${token}`) + } + + // 携带请求头发送下一次请求 + return next.handle(newReq) + .pipe( + //箭头函数,注意this指向 + catchError((err) => this.handleError(err)) + ) + } + + // 捕获错误 + //401 token过期 403没权限!!! 400参数错误 404未找到 614刷新令牌过期!!! + + private handleError(error: HttpErrorResponse) { + // 用户认证失败返回登录页 + if (error.status === 401||error.status === 614) { + this.token.delete() + sessionStorage.clear() + window.localStorage.clear() + this.router.navigate(['ui/plan']) + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('用户认证信息过期,请重新登录','确定',config); + } + if (error.status === 403) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('对不起,您无此权限','确定',config); + } + if (error.status === 400) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('请核对您的输入格式是否正确','确定',config); + } + + if (error.error instanceof ErrorEvent) { + // 发生客户端或网络错误。相应处理。 + console.error('An error occurred:', error.error.message); + } else { + // 服务端返回http状态码 + // 服务端返回错误信息 + console.error( + `Backend returned code ${error.status}, ` + + `body was: ${error.error}`); + } + // 返回带有面向用户的错误信息 + return throwError( + error.error); + }; +} diff --git a/src/app/http-interceptors/cache-token.service.ts b/src/app/http-interceptors/cache-token.service.ts new file mode 100644 index 0000000..0192004 --- /dev/null +++ b/src/app/http-interceptors/cache-token.service.ts @@ -0,0 +1,70 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; + +@Injectable({ + providedIn: 'root' +}) + +export class CacheTokenService { + + constructor(private http:HttpClient,public snackBar: MatSnackBar) { } + + //登录 + loginData = {name: 'superadmin', password: 'anxin119'} //登录账号信息 + + login () { + return new Promise ((resolve,reject)=>{ + sessionStorage.setItem("buildingTypeId",'5e7c9078a3050b1a840ed4ba'); //建筑类型 + sessionStorage.setItem("planId",'5f6957a29e91f4410005f5d7'); //预案ID + sessionStorage.setItem("companyId",'5f67042b9e91f4410005f55c'); //单位ID + this.http.post('/api/Account/SignIn',this.loginData).subscribe((data:any)=>{ + sessionStorage.setItem("level",data.level); + sessionStorage.setItem("token",data.token); + sessionStorage.setItem("refreshToken",data.refreshToken); + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('自动登录成功','确定',config); + this.startUp() + resolve('success') + },(err) => { //捕获错误 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open(err,'确定',config); + }) + }) + } + //登录 + + public timer; + + //刷新token令牌定时器 + startUp = ():void=>{ + window.clearInterval(this.timer) //清一遍定时器 + this.timer = window.setInterval(()=>{ + var token = sessionStorage.getItem("token"); + var refreshToken = sessionStorage.getItem("refreshToken"); + this.http.post('/api/Account/RefreshToken', { + token: token, + refreshToken: refreshToken + }).subscribe((data:any) => { + sessionStorage.setItem("level",data.level); + sessionStorage.setItem("token",data.token); + sessionStorage.setItem("refreshToken",data.refreshToken); + }) + },18*60*1000) + + } + + + + //删除定时器 + delete = ():void=> { + window.clearInterval(this.timer) + } + + + +} diff --git a/src/app/http-interceptors/index.ts b/src/app/http-interceptors/index.ts new file mode 100644 index 0000000..3e35136 --- /dev/null +++ b/src/app/http-interceptors/index.ts @@ -0,0 +1,9 @@ +import { HTTP_INTERCEPTORS } from '@angular/common/http'; + +import { BaseInterceptor } from './base-interceptor'; + +/** Http interceptor providers in outside-in order */ +export const httpInterceptorProviders = [ + { provide: HTTP_INTERCEPTORS, useClass: BaseInterceptor, multi: true }, + +]; \ No newline at end of file diff --git a/src/app/http-interceptors/tree.service.ts b/src/app/http-interceptors/tree.service.ts new file mode 100644 index 0000000..f6c9713 --- /dev/null +++ b/src/app/http-interceptors/tree.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class TreeService { + + + toTree(olddata){ + let newdata = [] + function getparentNode(parentId){ + return olddata.find((item)=>{ + return item.id == parentId + }) + } + olddata.forEach(item => { + var parentNode = getparentNode(item.parentId); + if(parentNode){ + if(!parentNode.children){ + parentNode.children = [] + } + + if (parentNode.children.length == 0) { + item.isTop = true; + } else { + item.isTop = false; + parentNode.children[parentNode.children.length -1].isBottom = false; + } + item.isBottom = true; + + parentNode.children.push(item) + }else{ + if(!item.parentId){//如果parentId为null + newdata.push(item) + } + } + }); + return newdata; + } +} \ No newline at end of file diff --git a/src/app/interface.ts b/src/app/interface.ts new file mode 100644 index 0000000..df5d7b2 --- /dev/null +++ b/src/app/interface.ts @@ -0,0 +1,51 @@ +export interface Data { + token:string, + refreshToken:string, + expires: number, + realName:string, + level:any +} + +export interface windows { + token:string +} +export enum isno { + "是", + "否" +} + +export enum PlanTypeEnum { + "zero", + "二维预案", + "三维预案", + "three", + "其他预案", + "five", + "six", + "seven", + "卡片预案" +} + +export enum AuditStatusEnum { + "zero", + "审核中", + "审核通过", + "", + "审核退回", + "five", + "six", + "seven", + "未提交审核" +} + +export enum PlanLevelEnum { + "编制级别0", + "总队", + "支队", + "编制级别3", + "大队", + "编制级别5", + "编制级别6", + "编制级别7", + "中队" +} \ No newline at end of file diff --git a/src/app/m-token-k1/m-token-k1.component.html b/src/app/m-token-k1/m-token-k1.component.html new file mode 100644 index 0000000..bcc50be --- /dev/null +++ b/src/app/m-token-k1/m-token-k1.component.html @@ -0,0 +1,6 @@ + + + +
+ +
\ No newline at end of file diff --git a/src/app/m-token-k1/m-token-k1.component.scss b/src/app/m-token-k1/m-token-k1.component.scss new file mode 100644 index 0000000..e98ef28 --- /dev/null +++ b/src/app/m-token-k1/m-token-k1.component.scss @@ -0,0 +1,3 @@ +.count-down { + font-size: 50px; +} \ No newline at end of file diff --git a/src/app/m-token-k1/m-token-k1.component.spec.ts b/src/app/m-token-k1/m-token-k1.component.spec.ts new file mode 100644 index 0000000..5731f4e --- /dev/null +++ b/src/app/m-token-k1/m-token-k1.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MTokenK1Component } from './m-token-k1.component'; + +describe('MTokenK1Component', () => { + let component: MTokenK1Component; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MTokenK1Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MTokenK1Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/m-token-k1/m-token-k1.component.ts b/src/app/m-token-k1/m-token-k1.component.ts new file mode 100644 index 0000000..fc88d16 --- /dev/null +++ b/src/app/m-token-k1/m-token-k1.component.ts @@ -0,0 +1,96 @@ +import { Component, OnInit, Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import {MTokenK1Service} from './m-token-k1.service' //引入服务 +declare var mToken : any; + + + +@Injectable({ + providedIn: 'root' +}) +@Component({ + selector: 'app-m-token-k1', + templateUrl: './m-token-k1.component.html', + styleUrls: ['./m-token-k1.component.scss'] +}) +export class MTokenK1Component implements OnInit { + + constructor(private router: Router,public snackBar: MatSnackBar,public mTokenK1: MTokenK1Service) { } + + ngOnInit(): void { + + } + + // 路由守卫 + canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + return this.checkKey(); + } + + K1mToken = new mToken("mTokenPlugin") + keyBase64 = '5YyX5Lqs5a6J5L+h4oCU5LqM57u06aKE5qGI57yW5Yi25bel5YW3d2Vi'; //秘钥验证base64字符 + password='12345678'; //秘钥验证用户密码 + + + + checkKey(): boolean { + this.K1mToken.LoadLibrary() + + try { //try 捕获错误 + let keyIndex = this.K1mToken.K1_mTokenFindDevice() //查找秘钥是否插入 + + if (keyIndex > 0) { //秘钥已插入 + let keyUID = this.K1mToken.K1_mTokenGetUID(keyIndex) //读取秘钥UID + let isLogin = this.K1mToken.K1_mTokenOpen(keyUID,this.password) + + if (isLogin == 0 ) { //密码验证成功 + let keyMSG = window.atob( this.K1mToken.K1_mTokenReadUserStorage(keyUID,0,56) ) + + if (keyMSG==this.keyBase64) { //base64转码 验证 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('密钥验证成功','确定',config); + this.mTokenK1.startUp() //开始定时验证秘钥是否拔出 + return true + } else { //base64验证失败 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 5000 + this.snackBar.open('密钥错误,不为本公司发放密钥','确定',config); + return false + } + } else { //密码验证失败 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 5000 + this.snackBar.open('密钥密码错误,请使用初始密码','确定',config); + return false + } + + } else { //秘钥未插入 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 5000 + this.snackBar.open('密钥未插入','确定',config); + return false + } + + } catch (error) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 5000 + this.snackBar.open('请检查您密钥是否插入或者驱动是否已启动','确定',config); + return false + } + + } //路由守卫 + + //倒计时插件关闭页面 + handleEvent (e) { + if (e.left===0) {window.close()} + } + + + +} diff --git a/src/app/m-token-k1/m-token-k1.service.spec.ts b/src/app/m-token-k1/m-token-k1.service.spec.ts new file mode 100644 index 0000000..e57ee06 --- /dev/null +++ b/src/app/m-token-k1/m-token-k1.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { MTokenK1Service } from './m-token-k1.service'; + +describe('MTokenK1Service', () => { + let service: MTokenK1Service; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(MTokenK1Service); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/m-token-k1/m-token-k1.service.ts b/src/app/m-token-k1/m-token-k1.service.ts new file mode 100644 index 0000000..6106ae9 --- /dev/null +++ b/src/app/m-token-k1/m-token-k1.service.ts @@ -0,0 +1,67 @@ +import { Injectable } from '@angular/core'; +import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +declare var mToken : any; + + + +@Injectable({ + providedIn: 'root' +}) +export class MTokenK1Service { + + constructor(private router: Router,public snackBar: MatSnackBar,) { } + + public mTokenK1Timer; //定时器查询 + public verificationURL = '/keyUnit/editunitinfo' //验证url地址是否为验证页面 + K1mToken = new mToken("mTokenPlugin") + keyBase64 = '5YyX5Lqs5a6J5L+h4oCU5LqM57u06aKE5qGI57yW5Yi25bel5YW3d2Vi'; //秘钥验证base64字符 + password='12345678'; //秘钥验证用户密码 + + + + //验证秘钥定时器 + startUp = ():void=>{ + window.clearInterval(this.mTokenK1Timer) + this.mTokenK1Timer = window.setInterval( ()=>{ + let url = this.router.url + if ( url.includes(this.verificationURL) ) { //当前url地址为 秘钥验证页面时 + this.K1mToken.LoadLibrary() + let keyIndex = this.K1mToken.K1_mTokenFindDevice() //查找秘钥是否插入 + + if (keyIndex < 1) { //秘钥被拔出 + this.goToEdit() + } else if (keyIndex > 0) { //秘钥存在 + let keyUID = this.K1mToken.K1_mTokenGetUID(keyIndex) //读取秘钥UID + let isLogin = this.K1mToken.K1_mTokenOpen(keyUID,this.password) + if (isLogin==0) { //密码验证成功 + let keyMSG = window.atob( this.K1mToken.K1_mTokenReadUserStorage(keyUID,0,56) ) + if (keyMSG!=this.keyBase64) { //base64转码 验证失败 + this.goToEdit() } + } else { //密码验证失败 + this.goToEdit() } + } + + } else { //不为当前页面时 + window.clearInterval(this.mTokenK1Timer) + } + + },10000) + } + + isShow:boolean = false; //是否显示倒计时插件 + //秘钥拔出,删除验证定时器,跳转页面 + goToEdit () { + this.isShow = true + window.clearInterval(this.mTokenK1Timer) //删除定时器 + window.setTimeout(()=>{ + this.isShow = false + let url = this.router.url + if ( url.includes(this.verificationURL) ) { //页面还为验证页面时跳转 + window.close(); } + },10000) + } + + + +} diff --git a/src/app/navigation/navigation.component.html b/src/app/navigation/navigation.component.html new file mode 100644 index 0000000..2518959 --- /dev/null +++ b/src/app/navigation/navigation.component.html @@ -0,0 +1,15 @@ +
+ +
+
着火单位: 贵港油库
+
+
{{item.name}}
+
+
+ +
+ +
+ +
+ diff --git a/src/app/navigation/navigation.component.scss b/src/app/navigation/navigation.component.scss new file mode 100644 index 0000000..8b66e7e --- /dev/null +++ b/src/app/navigation/navigation.component.scss @@ -0,0 +1,60 @@ +#content { + width: 100%; + height: 100%; + background: url('../../assets/images/home.png'); + -moz-background-size:100% 100%; + background-size:100% 100%; + box-sizing: border-box; + padding: 10px 38px 28px; + overflow: hidden; + display: flex; + flex-direction: column; +} + +//头部 +header { + width: 100%; + height: 80px; + border-bottom: 1px solid #30bbec; + overflow: hidden; + .title { + width: 100%; + height: 25px; + text-align: center; + font-size: 20px; + font-weight: 550; + color: red; + } + .router{ + width: 100%; + height: 55px; + } +} +//路由DIV +.routerText { + display: inline-block; + margin: 7px 15px; + width: 150px; + height: 37px; + line-height: 37px; + font-size: 20px; + text-align: center; + border-top-left-radius: 15px; + border-bottom-right-radius: 15px; + cursor:pointer; + outline: none; + border: 2px solid #fff; + color: #fff; +} + +//路由选中样式 +.routerLinkActive { + border: 2px solid rgb(248, 161, 62); + background-color: rgba(240,136,14,0.65); +} + +//中间区域 +.center { + flex: 1; + overflow: hidden; +} \ No newline at end of file diff --git a/src/app/navigation/navigation.component.spec.ts b/src/app/navigation/navigation.component.spec.ts new file mode 100644 index 0000000..3857718 --- /dev/null +++ b/src/app/navigation/navigation.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NavigationComponent } from './navigation.component'; + +describe('NavigationComponent', () => { + let component: NavigationComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ NavigationComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NavigationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/navigation/navigation.component.ts b/src/app/navigation/navigation.component.ts new file mode 100644 index 0000000..c0ac672 --- /dev/null +++ b/src/app/navigation/navigation.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit,Inject } from '@angular/core'; +import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; +import {FormControl} from '@angular/forms'; +import { HttpClient } from '@angular/common/http'; +import { TreeService } from '../http-interceptors/tree.service' +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import {CacheTokenService} from '../http-interceptors/cache-token.service'//引入服务 +import { Router,ActivatedRoute } from '@angular/router' + + + +@Component({ + selector: 'app-navigation', + templateUrl: './navigation.component.html', + styleUrls: ['./navigation.component.scss'] +}) +export class NavigationComponent implements OnInit { + + constructor(public navmenus:CacheTokenService,private http: HttpClient,public dialog: MatDialog,private tree:TreeService,public snackBar: MatSnackBar, + private router:Router,private route:ActivatedRoute) { } + + //路由配置 + routers:any = [ + {name:'平面图', url: '/ui/plan'}, + {name:'处置要点', url: '/ui/disposalNode'}, + {name:'危化品', url: '/ui/dangerous'}, + {name:'类似预案', url: '/ui/similarPlans'}, + {name:'真实战例', url: '/ui/realCases'}, + {name:'预案赋能', url: '/ui/planAssistance'} + ] + + ngOnInit () { + + } + + ngOnDestroy () { + + } + + + +} diff --git a/src/app/navigation/navigation.module.ts b/src/app/navigation/navigation.module.ts new file mode 100644 index 0000000..5574afd --- /dev/null +++ b/src/app/navigation/navigation.module.ts @@ -0,0 +1,114 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NavigationComponent } from './navigation.component'; +import { MatIconModule } from '@angular/material/icon'; +import { MatSidenavModule } from '@angular/material/sidenav'; +import { RouterModule } from '@angular/router'; +import { FormsModule } from '@angular/forms'; +import { TabbarComponent } from '../tabbar/tabbar.component'; +import { UiModule } from '../ui/ui.module'; + +import {A11yModule} from '@angular/cdk/a11y'; +import {DragDropModule} from '@angular/cdk/drag-drop'; +import {PortalModule} from '@angular/cdk/portal'; +import {ScrollingModule} from '@angular/cdk/scrolling'; +import {CdkStepperModule} from '@angular/cdk/stepper'; +import {CdkTableModule} from '@angular/cdk/table'; +import {CdkTreeModule} from '@angular/cdk/tree'; +import {MatAutocompleteModule} from '@angular/material/autocomplete'; +import {MatBadgeModule} from '@angular/material/badge'; +import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; +import {MatButtonModule} from '@angular/material/button'; +import {MatButtonToggleModule} from '@angular/material/button-toggle'; +import {MatCardModule} from '@angular/material/card'; +import {MatCheckboxModule} from '@angular/material/checkbox'; +import {MatChipsModule} from '@angular/material/chips'; +import {MatStepperModule} from '@angular/material/stepper'; +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatDividerModule} from '@angular/material/divider'; +import {MatExpansionModule} from '@angular/material/expansion'; +import {MatGridListModule} from '@angular/material/grid-list'; + +import {MatInputModule} from '@angular/material/input'; +import {MatListModule} from '@angular/material/list'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatNativeDateModule, MatRippleModule} from '@angular/material/core'; +import {MatPaginatorModule} from '@angular/material/paginator'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatRadioModule} from '@angular/material/radio'; +import {MatSelectModule} from '@angular/material/select'; + +import {MatSliderModule} from '@angular/material/slider'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatSortModule} from '@angular/material/sort'; +import {MatTableModule} from '@angular/material/table'; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatTreeModule} from '@angular/material/tree'; + + +@NgModule({ + declarations: [ + NavigationComponent, + TabbarComponent + ], + imports: [ + CommonModule, + MatSidenavModule, + RouterModule, + MatIconModule, + FormsModule, + UiModule, + + A11yModule, + CdkStepperModule, + CdkTableModule, + CdkTreeModule, + DragDropModule, + MatAutocompleteModule, + MatBadgeModule, + MatBottomSheetModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatChipsModule, + MatStepperModule, + MatDatepickerModule, + MatDialogModule, + MatDividerModule, + MatExpansionModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, + MatTreeModule, + PortalModule, + ScrollingModule, + ], + exports: [ + NavigationComponent + ] +}) +export class NavigationModule { } diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html new file mode 100644 index 0000000..115f15b --- /dev/null +++ b/src/app/pages/home/home.component.html @@ -0,0 +1,50 @@ +
+ + + +
+
+
重点单位总量
+
{{keyUnitNum}}
+
+
+
采集单位总量
+
{{dataNum}}
+
+
+
预案编制单位总量
+
{{planNum}}
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/src/app/pages/home/home.component.scss b/src/app/pages/home/home.component.scss new file mode 100644 index 0000000..38a9837 --- /dev/null +++ b/src/app/pages/home/home.component.scss @@ -0,0 +1,5 @@ +@import "../../../assets/css/style.css"; +#chartMap{ + border-radius: 10px; + // opacity: .6; +} \ No newline at end of file diff --git a/src/app/pages/home/home.component.spec.ts b/src/app/pages/home/home.component.spec.ts new file mode 100644 index 0000000..490e81b --- /dev/null +++ b/src/app/pages/home/home.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/home/home.component.ts b/src/app/pages/home/home.component.ts new file mode 100644 index 0000000..6aff5b7 --- /dev/null +++ b/src/app/pages/home/home.component.ts @@ -0,0 +1,1131 @@ +import { Component, OnInit ,ViewChild, AfterViewInit,ElementRef,Renderer2 } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { Router,ActivatedRoute } from '@angular/router' +declare var echarts: any; +declare var AMap: any; + +declare var AMapUI: any; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent implements OnInit { + + constructor(private http:HttpClient, private render2: Renderer2,public element: ElementRef,private router:Router,private route:ActivatedRoute) { } + keyUnitNum:any = 1500 + dataNum:any + planNum:any + + //全队数据采集和预案编制数量统计 + chartQusj:any + chartQusjData:any + chartQusjOption:any = { + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '全队数据采集和预案编制数量统计', + top: -4, + left:-2 + }, + //图例 + legend: { + top: 0, + right:-2, + // left:3, + data: ['单位预案编制数量', '单位数据采集数量'], + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + name:'个' + }, + // 数据 + series: [ + { + name: '单位预案编制数量', + type: 'line', + data: [], + // showSymbol: true, + // symbolSize:6, + // smooth: false, + // label: { + // show: true, + // }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(60,103,195,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(0,194,255,.2)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + } + }, + { + name: '单位数据采集数量', + type: 'line', + data: [], + }, + ], + }; + chartQusjOption2 = { + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '全队数据采集和预案编制数量统计', + top: -4, + left:-2 + }, + //图例 + legend: { + top: 0, + right:-2, + // left:3, + data: ['单位预案编制数量', '单位数据采集数量'], + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + name:'个' + }, + // 数据 + series: [ + { + name: '单位预案编制数量', + type: 'line', + data: [66, 25, 55, 56, 78, 15, 66, 69, 44, 78, 25, 66], + // showSymbol: true, + // symbolSize:6, + // smooth: false, + // label: { + // show: true, + // }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(60,103,195,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(0,194,255,.2)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + } + }, + { + name: '单位数据采集数量', + type: 'line', + data: [36, 48, 45, 36, 78, 16, 24, 56, 22, 25, 24, 77 ], + }, + ], + }; + + + + //预案单位类型统计 + chartYadwlx:any + unitTypeStatistics:any //存储各类型建筑预案数量初始数据 + data02:any = []; + chartYadwlxOption:any = { + // 标题 + title: { + text: '预案单位类型统计', + left: '15%', + top:0 + }, + //图例 + legend: { + orient: 'vertical', + top: 'center', + right: '0%', + show: false, + formatter: function (name) { + var target; + for (var i = 0, l = this.data02.length; i < l; i++) { + if (this.data02[i].name == name) { + target = this.data02[i].value; + } + } + return name + ' ' + target; + } + }, + //提示框 + tooltip: { + trigger: 'item', + formatter: '{b}:{c}份
占比:{d}%' + }, + // 数据 + series: [{ + type: 'pie', + center: ['55%', '55%'], + radius: ['25%', '60%'], + roseType:true, + // labelLine: { + // show: true, + // length: 20, + // length2: 0, + // lineStyle: { + // color: '#999', + // width: 1 + // } + // }, + labelLine:{ + lineStyle:{ + color: '#93FCFF' + } + }, + label: { + //formatter: '{hr|}\n{a|{b}}\n{b|{c}}万吨\n{c|{d}%}', + // formatter: '{a|{b}}\n{b|{c}}{c|份}\n{d|{d}%}', + formatter: '{a|{b}} {b|{c}}{c|份}', + rich: { + // hr: { + // borderColor: '#999', + // width: '100%', + // borderWidth: 1, + // marginLeft: '-15px', + // marginRight: '-15px', + // height:0 + // }, + a: { + color: '#1F6F9B', + fontSize: 12, + height: 18, + borderColor: '#999', + //marginTop: '65px', + }, + b: { + color: '#fff', + fontSize: 12, + height: 36, + }, + c: { + color: '#fff', + fontSize: 12, + }, + d: { + color: '#fff', + fontSize: 12, + height: 16, + marginLeft: '5px', + }, + }, + }, + data: [ + + ], + }], + }; + data03:any = [ + { + value: 56, + name: '高层建筑' + }, + { + value: 88, + name: '地下建筑' + }, + { + value: 38, + name: '大型城市综合体' + }, + { + value: 45, + name: '人员密集场所' + }, + { + value: 66, + name: '石油化工类' + }, + { + value: 56, + name: '地铁类' + }, + { + value: 88, + name: '仓库、堆垛、厂房' + }, + { + value: 64, + name: '隧道' + }, + { + value: 38, + name: '其他' + } + ]; + chartYadwlxOption2:any = { + // 标题 + title: { + text: '预案单位类型统计', + left: '15%', + top:0 + }, + //图例 + legend: { + orient: 'vertical', + top: 'center', + right: '0%', + show: false, + formatter: function (name) { + var target; + for (var i = 0, l = this.data03.length; i < l; i++) { + if (this.data03[i].name == name) { + target = this.data03[i].value; + } + } + return name + ' ' + target; + } + }, + //提示框 + tooltip: { + trigger: 'item', + }, + // 数据 + series: [{ + type: 'pie', + center: ['55%', '55%'], + radius: ['25%', '60%'], + roseType:true, + // labelLine: { + // show: true, + // length: 20, + // length2: 0, + // lineStyle: { + // color: '#999', + // width: 1 + // } + // }, + labelLine:{ + lineStyle:{ + color: '#93FCFF' + } + }, + label: { + //formatter: '{hr|}\n{a|{b}}\n{b|{c}}万吨\n{c|{d}%}', + // formatter: '{a|{b}}\n{b|{c}}{c|份}\n{d|{d}%}', + formatter: '{a|{b}} {b|{c}}{c|份}', + rich: { + // hr: { + // borderColor: '#999', + // width: '100%', + // borderWidth: 1, + // marginLeft: '-15px', + // marginRight: '-15px', + // height:0 + // }, + a: { + color: '#1F6F9B', + fontSize: 12, + height: 18, + borderColor: '#999', + //marginTop: '65px', + }, + b: { + color: '#fff', + fontSize: 12, + height: 36, + }, + c: { + color: '#fff', + fontSize: 12, + }, + d: { + color: '#fff', + fontSize: 12, + height: 16, + marginLeft: '5px', + }, + }, + }, + data: [{ + value: 56, + name: '高层建筑' + }, + { + value: 38, + name: '大型城市综合体' + }, + { + value: 88, + name: '地下建筑' + }, + + { + value: 45, + name: '人员密集场所' + }, + { + value: 66, + name: '石油化工类' + }, + { + value: 56, + name: '地铁类' + }, + { + value: 88, + name: '仓库、堆垛、厂房' + }, + { + value: 64, + name: '隧道' + }, + { + value: 38, + name: '其他' + } + ], + }], + }; + + + + + + // 预案评优排行 + chartYapyph:any + chartYapyphOption:any = { + // 标题 + title: { + text: '预案评优排行', + left:0 + }, + grid: { + left: 80, + right: 10, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // y轴 + yAxis: { + type: 'category', + data: ['防城港支队', '北海支队','梧州支队','桂林支队', '柳州支队','南宁支队'] + }, + // x轴 + xAxis: { + type: 'value', + splitLine: { + show: true, + lineStyle: { + color: '#fff' + } + }, + }, + // 数据 + series: [{ + name: '预案评优', + type: 'bar', + data: [20, 26, 30, 32, 34, 38], + label: { + show: false, + position: "top", + formatter: '{c}', + color: "#fff", + }, + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(0,220,254,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,104,191,1)' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + } + } + ], + }; + chartYapyphOption2:any = { + // 标题 + title: { + text: '预案评优排行', + left:0 + }, + grid: { + left: 80, + right: 10, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // y轴 + yAxis: { + type: 'category', + data: [] + }, + // x轴 + xAxis: { + type: 'value', + splitLine: { + show: true, + lineStyle: { + color: '#fff' + } + }, + }, + // 数据 + series: [{ + name: '预案评优', + type: 'bar', + data: [], + label: { + show: false, + position: "top", + formatter: '{c}', + color: "#fff", + }, + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(0,220,254,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,104,191,1)' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + } + } + ], + }; + + //预案类型统计 + chartYalxtj:any + chartYalxtjOption:any = { + color: ['#FB33C2', '#00CFF0', '#2C3DE0','#b9302d'], + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '预案类型统计', + top: -4, + left: 0 + }, + //图例 + legend: { + top: 0, + data: ['二维预案', '三维预案', '卡片预案', '其他预案'], + icon:'circle', + itemGap: 20, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + }, + // 数据 + series: [ + { + name: '二维预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(254,51,194,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(254,51,194,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(254,51,194,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + }, + data: [238, 242, 146, 240, 135, 130, 138, 142, 246, 140, 235, 130 ], + }, + { + name: '三维预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(14,222,252,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(0,221,255,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,255,253,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [282, 122, 126, 220, 125, 120, 228, 216, 230, 255, 250, 138 ], + }, + { + name: '卡片预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(48,63,240,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(48,63,240,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(48,63,240,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [228, 212, 166, 150, 125, 240, 148, 128, 212, 166, 150, 225 ], + }, + { + name: '其他预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(185,48,45,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(185,48,45,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(185,48,45,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [145, 252, 130, 266, 299, 289, 156, 123, 212, 252, 188, 198 ], + }, + ], + }; + chartYalxtjOption2:any = { + color: ['#FB33C2', '#00CFF0', '#2C3DE0','#b9302d'], + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '预案类型统计', + top: -4, + left: 0 + }, + //图例 + legend: { + top: 0, + data: ['二维预案', '三维预案', '卡片预案', '其他预案'], + icon:'circle', + itemGap: 20, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + }, + // 数据 + series: [ + { + name: '二维预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(254,51,194,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(254,51,194,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(254,51,194,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + }, + data: [66, 25, 85, 41, 68, 78, 65, 35, 25, 56, 68, 99 ], + }, + { + name: '三维预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(14,222,252,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(0,221,255,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,255,253,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [45, 52, 130, 66, 99, 89, 56, 123, 112, 152, 88, 98 ], + }, + { + name: '卡片预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(48,63,240,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(48,63,240,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(48,63,240,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [26, 72, 66, 50, 25, 40, 48, 66, 50, 25, 40, 48 ], + }, + { + name: '其他预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(185,48,45,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(185,48,45,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(185,48,45,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [56, 52, 55, 66, 99, 89, 102, 36, 56, 102, 66, 68 ], + }, + ], + }; + map:any; //地图 + newallorganizations:any //带有children的组织机构 + ngOnInit(): void { + //获取所有组织机构 + this.http.get('/api/Organizations').subscribe(data=>{ + this.newallorganizations = data + this.newallorganizations.forEach(item => { + item.children = [] + this.newallorganizations.forEach(element => { + if(element.parentId == item.id){ + item.children.push(element) + } + }); + }); + }) + setTimeout(() => { + this.getEcharts() + this.mapInit() //初始化地图 + this.chartsSetOption('','province') + }, 0); + } + + //初始化图表 + getEcharts(){ + this.chartQusj = echarts.init(this.element.nativeElement.querySelector('#chartQusj'),'skinUpp'); + this.chartYadwlx = echarts.init(this.element.nativeElement.querySelector('#chartYadwlx'),'skinUpp'); + this.chartYapyph = echarts.init(this.element.nativeElement.querySelector('#chartYapyph'),'skinUpp'); + this.chartYalxtj = echarts.init(this.element.nativeElement.querySelector('#chartYalxtj'),'skinUpp'); + } + + + + //初始化地图 + adcode:any = 450000 //行政编码 + mapInit () { + //创建地图 + this.map = new AMap.Map('chartMap', { + cursor: 'default', + zooms:[6,18], + mapStyle:"amap://styles/grey", + // bubble: true + }); + + let colors = [ + "#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", + "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", + "#651067", "#329262", "#5574a6", "#3b3eac" + ]; + + AMapUI.loadUI(['geo/DistrictExplorer'], (DistrictExplorer)=> { + + //创建一个实例 + let districtExplorer = new DistrictExplorer({ + map: this.map, + eventSupport: true, //打开事件支持 + }); + + let adcode = this.adcode; //行政编码 + districtExplorer.loadAreaNode(adcode, (error, areaNode)=> { + //更新地图视野 + // this.map.setBounds(areaNode.getBounds(), null, null, true); + + //设置定位节点,支持鼠标位置识别 + //注意节点的顺序,前面的高优先级 + districtExplorer.setAreaNodesForLocating(areaNode); + + //清除已有的绘制内容 + districtExplorer.clearFeaturePolygons(); + + //绘制子区域 + districtExplorer.renderSubFeatures(areaNode, (feature, i) =>{ + + let fillColor = colors[i % colors.length]; + let strokeColor = colors[colors.length - 1 - i % colors.length]; + + return { + cursor: 'default', + bubble: true, + strokeColor: strokeColor, //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: fillColor, //填充色 + fillOpacity: 0.7, //填充透明度 + }; + }); + + //绘制父区域 + districtExplorer.renderParentFeature(areaNode, { + cursor: 'default', + bubble: true, + strokeColor: 'black', //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: null, //填充色 + fillOpacity: 0.5, //填充透明度 + }); + + // 更新地图视野以适合区划面 + this.map.setFitView(districtExplorer.getAllFeaturePolygons()); + }); + + districtExplorer.on('featureClick', (e, feature) =>{ + + let props = feature.properties; + adcode = props.adcode + // (123,feature) + let fillColor2 + if(props.level == 'city'){ + fillColor2 = null + let adcode = feature.properties.adcode + this.newallorganizations.forEach(item => { + if(item.division.indexOf(adcode) != -1){ + // console.log(item) + let orArr = [] + for(let i = 0; i < 6; i++){ + orArr.unshift(item.children[i].name) + } + this.chartYapyphOption2.yAxis.data = orArr + this.chartYapyphOption2.series[0].data = [12, 14, 18, 24, 26, 30] + this.chartsSetOption(item.id,"city") + + } + }); + }else{ + fillColor2 = '#d0daee' + } + districtExplorer.loadAreaNode(adcode, (error, areaNode)=> { + //更新地图视野 + // this.map.setBounds(areaNode.getBounds(), null, null, true); + + //设置定位节点,支持鼠标位置识别 + //注意节点的顺序,前面的高优先级 + districtExplorer.setAreaNodesForLocating(areaNode); + + //清除已有的绘制内容 + districtExplorer.clearFeaturePolygons(); + + //绘制子区域 + districtExplorer.renderSubFeatures(areaNode, (feature, i) =>{ + let fillColor = colors[i % colors.length]; + // console.log(111,fillColor) + let strokeColor = colors[colors.length - 1 - i % colors.length]; + + return { + cursor: 'default', + bubble: true, + strokeColor: strokeColor, //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: fillColor, //填充色 + fillOpacity: 0.7, //填充透明度 + }; + }); + + //绘制父区域 + districtExplorer.renderParentFeature(areaNode, { + cursor: 'default', + bubble: true, + strokeColor: 'black', //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: fillColor2, //填充色 + fillOpacity: 0.5, //填充透明度 + }); + + // 更新地图视野以适合区划面 + this.map.setFitView(districtExplorer.getAllFeaturePolygons()); + }); + }); + + districtExplorer.on('outsideClick', (e) => { + // console.log('区域外点击'); + this.chartsSetOption('','province') + adcode = 450000 + districtExplorer.loadAreaNode(adcode, (error, areaNode)=> { + //更新地图视野 + // this.map.setBounds(areaNode.getBounds(), null, null, true); + + //设置定位节点,支持鼠标位置识别 + //注意节点的顺序,前面的高优先级 + districtExplorer.setAreaNodesForLocating(areaNode); + + //清除已有的绘制内容 + districtExplorer.clearFeaturePolygons(); + + //绘制子区域 + districtExplorer.renderSubFeatures(areaNode, (feature, i) =>{ + let fillColor = colors[i % colors.length]; + // console.log(111,fillColor) + let strokeColor = colors[colors.length - 1 - i % colors.length]; + + return { + cursor: 'default', + bubble: true, + strokeColor: strokeColor, //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: fillColor, //填充色 + fillOpacity: 0.7, //填充透明度 + }; + }); + + //绘制父区域 + districtExplorer.renderParentFeature(areaNode, { + cursor: 'default', + bubble: true, + strokeColor: 'black', //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: null, //填充色 + fillOpacity: 0.5, //填充透明度 + }); + + // 更新地图视野以适合区划面 + this.map.setFitView(districtExplorer.getAllFeaturePolygons()); + }); + // this.chartQusj.setOption(this.chartQusjOption); + // this.chartYadwlx.setOption(this.chartYadwlxOption); + // this.chartYapyph.setOption(this.chartYapyphOption); + // this.chartYalxtj.setOption(this.chartYalxtjOption); + // this.keyUnitNum = '13,036' + // this.dataNum = '7,999' + // this.planNum = '33,678' + }) + + }); + + + } + + //设置真实数据 + chartsSetOption(id,isCity){ + this.http.get("/api/StatisticsAnalysis",{params:{OrganizationId:id}}).subscribe((data:any)=>{ + // console.log(888,data) + this.dataNum = data.companyStatistics.totalCount //重点单位数量 + this.planNum = data.planStatistics.totalCount //预案数量 + + //预案单位类型统计 + this.unitTypeStatistics = data.planStatistics.buildingTypeStatistics.buildingTypes + this.unitTypeStatistics.forEach(item => { + item.name = item.buildingTypeName + item.value = item.count + }); + this.data02 = this.unitTypeStatistics + this.chartYadwlxOption.series[0].data = this.unitTypeStatistics + this.chartYadwlx.setOption(this.chartYadwlxOption,true); + + //全队数据采集和预案编制数量统计 + this.chartQusjData = data.planStatistics.buildingTypeStatistics.buildingTypes + let data1 = [] + data.companyStatistics.trendStatistics.added.forEach(item => { + data1.push(item.count) + }); + let data2 = [] + data.planStatistics.trendStatistics.added.forEach(item => { + data2.push(item.count) + }); + this.chartQusjOption.series[0].data = data2 + this.chartQusjOption.series[1].data = data1 + this.chartQusj.setOption(this.chartQusjOption,true); + }) + if(isCity == "city"){//如果是城市级别 + this.keyUnitNum = 100 + this.chartYapyph.setOption(this.chartYapyphOption2); + this.chartYalxtj.setOption(this.chartYalxtjOption2); + + }else{ + this.keyUnitNum = 1500 + this.chartYapyph.setOption(this.chartYapyphOption); + this.chartYalxtj.setOption(this.chartYalxtjOption); + } + } +} diff --git a/src/app/pages/home2/home2.component.html b/src/app/pages/home2/home2.component.html new file mode 100644 index 0000000..16e1bb4 --- /dev/null +++ b/src/app/pages/home2/home2.component.html @@ -0,0 +1,63 @@ +
+
+

数字化预案编制和管理平台

+
{{time}}
+
+
+
+
+

单位类型

+
+ +
+
+

预案状态

+
+ +
+
+

预案类型

+
+ +
+
+
+
+
+
    +
  • 123
  • +
  • 456
  • +
+
+
+
    +
  • 预案数量
  • +
  • 单位数量
  • +
+
+
+
+
+
+
+
+
+
+
+

趋势图

+
+ +
+
+

玫瑰图

+
+ +
+
+

柱状图

+
+ +
+
+
+
diff --git a/src/app/pages/home2/home2.component.scss b/src/app/pages/home2/home2.component.scss new file mode 100644 index 0000000..8bae936 --- /dev/null +++ b/src/app/pages/home2/home2.component.scss @@ -0,0 +1,247 @@ +@font-face { + font-family: electronicFont; + src: url(../../../assets/font/DS-DIGIT.TTF); +} +.contentBox{ + width: 100%; + height: 100%; + background: url(../../../assets/images/bg.jpg) no-repeat top center; + line-height: 1.15; + header{ + position: relative; + height:8%; + min-height: 64px; + background: url(../../../assets/images/head_bg.png) no-repeat; + background-size: 100% 100%; + h1{ + font-size: 28px; + color: #fff; + text-align: center; + line-height: 64px; + + } + .showTime{ + position: absolute; + right: 20px; + line-height: 60px; + color: rgba(255,255,255, $alpha: 0.7); + font-size: 16px; + top: 0; + } + } + .mainbox{ + width: 100%; + height: 92%; + // background-color: pink; + padding: 2px 0 2px 0; + display: flex; + .column{ + flex: 3; + } + .column:nth-child(2){ + flex: 6; + margin: 0 8px 8px 8px; + } + .panel{ + height: 29.8%; + position: relative; + // background-color: red; + border: 1px solid rgba(25,186,139,0.17); + background: url(../../../assets/images/line.png) rgba(255,255,255, $alpha: 0.03); + margin-bottom: 8px; + &::before{ + position: absolute; + top: 0; + left: 0; + content: ""; + width:14px; + height:14px; + border-left: 2px solid #02a6b5; + border-top: 2px solid #02a6b5; + } + &::after{ + position: absolute; + top: 0; + right: 0; + content: ""; + width:14px; + height:14px; + border-right: 2px solid #02a6b5; + border-top: 2px solid #02a6b5; + } + .panel-footer{ + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 14px; + &::before{ + position: absolute; + top: 0; + left: 0; + content: ""; + width:14px; + height:14px; + border-left: 2px solid #02a6b5; + border-bottom: 2px solid #02a6b5; + } + &::after{ + position: absolute; + top: 0; + right: 0; + content: ""; + width:14px; + height:14px; + border-right: 2px solid #02a6b5; + border-bottom: 2px solid #02a6b5; + } + } + h2{ + height: 18px; + color: #fff; + line-height: 18px; + text-align: center; + font-size: 14px; + font-weight: 400; + } + .chart{ + height: 91%; + // background-color: pink; + } + } + .no{ + background: rgba(101,132,226,0.1); + padding: 4px 16px; + height: 10%; + min-height: 100px; + .no-hd{ + position: relative; + border: 1px solid rgba(25,186,139,0.17); + &::before{ + position: absolute; + top: 0; + left: 0; + content: ""; + width:30px; + height:14px; + border-left: 2px solid #02a6b5; + border-top: 2px solid #02a6b5; + } + &::after{ + position: absolute; + bottom: 0; + right: 0; + content: ""; + width:30px; + height:14px; + border-right: 2px solid #02a6b5; + border-bottom: 2px solid #02a6b5; + } + ul{ + display: flex; + li{ + + flex: 1; + line-height: 55px; + font-size: 48px; + color: #ffeb7b; + text-align: center; + font-family: 'electronicFont'; + } + li:nth-child(1){ + position: relative; + &::after{ + position: absolute; + top: 25%; + height: 50%; + right: 0; + content: ""; + width:1px; + background: rgba(255,255,255, $alpha: 0.2); + } + } + } + + } + .no-bd{ + ul{ + display: flex; + padding: 4px 0; + li{ + flex: 1; + text-align: center; + color: rgba(255,255,255, $alpha: 0.7); + font-size: 14px; + line-height: 30px; + } + } + } + } + .map { + position: relative; + margin-top: 12px; + height: 78%; + .map1 { + width: 480px; + height: 480px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: url(../../../assets/images/map.png); + background-size: 100% 100%; + opacity: 0.3; + } + .map2 { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 600px; + height: 600px; + background: url(../../../assets/images/lbx.png); + + animation: rotate1 15s linear infinite; + opacity: 0.6; + background-size: 100% 100%; + } + + .map3 { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + // width: 7.075rem; + // height: 7.075rem; + // background: url(../images/jt.png); + // animation: rotate2 10s linear infinite; + // opacity: 0.6; + background-size: 100% 100%; + } + // .chart { + // position: absolute; + // top: 0; + // left: 0; + // // background-color: pink; + // width: 100%; + // height: 10.125rem; + // } + @keyframes rotate1 { + 0% { + transform: translate(-50%, -50%) rotate(0deg); + }; + 100% { + transform: translate(-50%, -50%) rotate(360deg); + } + } + // @keyframes rotate2 { + // form { + // transform: translate(-50%, -50%) rotate(0deg); + // } + // to { + // transform: translate(-50%, -50%) rotate(-360deg); + // } + // } + } + } +} diff --git a/src/app/pages/home2/home2.component.spec.ts b/src/app/pages/home2/home2.component.spec.ts new file mode 100644 index 0000000..b7d612f --- /dev/null +++ b/src/app/pages/home2/home2.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Home2Component } from './home2.component'; + +describe('Home2Component', () => { + let component: Home2Component; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ Home2Component ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(Home2Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/home2/home2.component.ts b/src/app/pages/home2/home2.component.ts new file mode 100644 index 0000000..a7e4b6d --- /dev/null +++ b/src/app/pages/home2/home2.component.ts @@ -0,0 +1,348 @@ +import { Component, OnInit ,ElementRef} from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { HighlightSpanKind } from 'typescript'; + +declare var echarts: any; +declare var westeros: any; +declare var AMap: any; +declare var Loca: any; +@Component({ + selector: 'app-home2', + templateUrl: './home2.component.html', + styleUrls: ['./home2.component.scss'] +}) +export class Home2Component implements OnInit { + + constructor(private http:HttpClient,public element: ElementRef) { } + + unitTypeStatistics:any //单位类型统计 + myUnitTypeChart:any //单位类型统计图表 + unitTypeOption:any = { + title: { + // text: '单位类型统计', + // left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '占比:
{b} : {c} ({d}%)' + }, + legend: { + // orient: 'vertical', + // top: 'middle', + bottom: 0, + left: 'center', + data: [] + }, + series: [ + { + type: 'pie', + radius: '65%', + center: ['50%', '50%'], + selectedMode: 'single', + data: [ + ], + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + }; //单位类型数据 + + planStateStatistics //预案状态统计 + myPlanStateChart:any //预案状态统计图表 + planStateOption:any = { + title: { + // text: '预案编制情况统计', + // left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '占比:
{b} : {c} ({d}%)' + }, + legend: { + // orient: 'vertical', + // top: 'middle', + bottom: 0, + left: 'center', + data: ['审核通过','已提交','已公开'] + }, + series: [ + { + type: 'pie',//类型为饼图 + radius: '65%', + center: ['50%', '50%'], + selectedMode: 'single', + data: [ + ], + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + }; //预案状态数据 + + planTypeStatistics //各类型预案统计 + myPlanTypeChart:any //各类型预案图表 + planTypeOption:any = { + title: { + // text: '各类型预案情况统计', + // left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '占比:
{b} : {c} ({d}%)' + }, + legend: { + // orient: 'vertical', + // top: 'middle', + bottom: 0, + left: 'center', + data: ['卡片预案','二维预案','三维预案','其他预案'] + }, + series: [ + { + type: 'pie', + radius: '65%', + center: ['50%', '50%'], + selectedMode: 'single', + data: [ + ], + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + } + } + ] + }; //预案状态数据 + + trendStatistics //趋势统计 + trendChart:any //趋势图表 + trendOption:any = { + title: { + // text: '预案趋势统计' + }, + tooltip: { + trigger: 'axis' + }, + legend: { + data: ['新增预案', '修改预案'] + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + toolbox: { + feature: { + saveAsImage: {} + } + }, + xAxis: { + type: 'category', + boundaryGap: false, + data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月','十二月'] + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: '新增预案', + type: 'line', + stack: '总量', + data: [] + }, + { + name: '修改预案', + type: 'line', + stack: '总量', + data: [] + } + ] + }; //预案状态数据 + + xxxChart:any + xxxOption:any = { + title: { + // text: '南丁格尔玫瑰图', + // subtext: '纯属虚构', + // left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
{b} : {c} ({d}%)' + }, + legend: { + left: 'center', + top: 'bottom', + data: ['1', '2', '3', '4'] + }, + toolbox: { + show: true, + feature: { + mark: {show: true}, + dataView: {show: true, readOnly: false}, + magicType: { + show: true, + type: ['pie', 'funnel'] + }, + restore: {show: true}, + saveAsImage: {show: true} + } + }, + series: [ + { + name: '面积模式', + type: 'pie', + radius: [30, 110], + // center: ['75%', '50%'], + roseType: 'area', + data: [ + {value: 10, name: '1'}, + {value: 5, name: '2'}, + {value: 15, name: '3'}, + {value: 25, name: '4'} + ] + } + ] + } + + yyyChart:any + yyyOption:any = { + color: ['#3398DB'], + tooltip: { + trigger: 'axis', + axisPointer: { // 坐标轴指示器,坐标轴触发有效 + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '3%', + containLabel: true + }, + xAxis: [ + { + type: 'category', + data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], + axisTick: { + alignWithLabel: true + } + } + ], + yAxis: [ + { + type: 'value' + } + ], + series: [ + { + name: '直接访问', + type: 'bar', + barWidth: '60%', + data: [10, 52, 200, 334, 390, 330, 220] + } + ] + }; + + t:any + time:any + theme:any //主题风格 + ngOnInit(): void { + // const map = new AMap.Map(this.element.nativeElement.querySelector('#map'), { + // mapStyle: 'amap://styles/1de318cbb8d12c02303a22c550b9ccc9', + // // pitch: 0, + // features: ['bg', 'road'],//地图显示要素 + // zoom: 6, + // center: [116.408075, 39.950187], + // // viewMode: '3D' + // }); + // const layer = new Loca.DistrictLayer({ + // map: map + // }); + // layer.setMap(map); + + + + this.getTime() + setTimeout(() => { + + this.myUnitTypeChart = echarts.init(this.element.nativeElement.querySelector('#unitType'),'westeros'); + this.myPlanStateChart = echarts.init(this.element.nativeElement.querySelector('#planStates') ,'westeros'); + this.myPlanTypeChart = echarts.init(this.element.nativeElement.querySelector('#planType'),'westeros'); + this.trendChart = echarts.init(this.element.nativeElement.querySelector('#trend'),'westeros'); + this.xxxChart = echarts.init(this.element.nativeElement.querySelector('#xxx'),'westeros'); + this.xxxChart.setOption(this.xxxOption); + this.yyyChart = echarts.init(this.element.nativeElement.querySelector('#yyy'),'westeros'); + this.yyyChart.setOption(this.yyyOption); + }, 0); + + + this.chartsSetOption(); + } + getTime():any{ + this.t = setInterval(()=>{ + var dt = new Date(); + var y = dt.getFullYear(); + var mt = dt.getMonth() + 1; + var day = dt.getDate(); + var h = dt.getHours(); //获取时 + var m = dt.getMinutes(); //获取分 + var s = dt.getSeconds(); //获取秒 + this.time = "当前时间:" + y + "年" + mt + "月" + day + "-" + h + "时" + m + "分" + s + "秒"; + }, 1000); //開始运行 + } + chartsSetOption(){ + this.http.get("/api/StatisticsAnalysis").subscribe((data:any)=>{ + //单位类型统计 + this.unitTypeStatistics = data.companyStatistics.buildingTypeStatistics.buildingTypes + this.unitTypeStatistics.forEach(item => { + item.name = item.buildingTypeName + item.value = item.count + // this.unitTypeOption.legend.data.push(item.buildingTypeName) + }); + this.unitTypeOption.series[0].data = this.unitTypeStatistics + this.myUnitTypeChart.setOption(this.unitTypeOption,true); + //预案状态统计 + this.planStateStatistics = data.planStatistics.planningStatistics + this.planStateOption.series[0].data.push({name:'审核通过',value:data.planStatistics.planningStatistics.approvedCount}) + this.planStateOption.series[0].data.push({name:'已提交',value:data.planStatistics.planningStatistics.committedCount}) + this.planStateOption.series[0].data.push({name:'已公开',value:data.planStatistics.planningStatistics.publicCount}) + this.myPlanStateChart.setOption(this.planStateOption,true); + //各类型预案统计 + this.planTypeStatistics = data.planStatistics.planTypeStatistics + this.planTypeOption.series[0].data.push({name:'卡片预案',value:data.planStatistics.planTypeStatistics.planCardCount}) + this.planTypeOption.series[0].data.push({name:'二维预案',value:data.planStatistics.planTypeStatistics.plan2DCount}) + this.planTypeOption.series[0].data.push({name:'三维预案',value:data.planStatistics.planTypeStatistics.plan3DCount}) + this.planTypeOption.series[0].data.push({name:'其他预案',value:data.planStatistics.planTypeStatistics.planOtherCount}) + this.myPlanTypeChart.setOption(this.planTypeOption,true); + //预案趋势图统计 + this.trendStatistics = data.planStatistics.trendStatistics + // this.trendOption.series = [] + this.trendStatistics.added.forEach(item=>{ + this.trendOption.series[0].data.push(item.count) + }) + this.trendStatistics.modified.forEach(item=>{ + this.trendOption.series[1].data.push(item.count) + }) + this.trendChart.setOption(this.trendOption,true); + + }) + } + ngOnDestroy(){ + window.clearInterval(this.t) //清一遍定时器 + } +} diff --git a/src/app/pages/homedetail/homedetail.component.html b/src/app/pages/homedetail/homedetail.component.html new file mode 100644 index 0000000..e379f6d --- /dev/null +++ b/src/app/pages/homedetail/homedetail.component.html @@ -0,0 +1,70 @@ +
+ + + +
+
+
+
重点单位总量
+
8,666
+
+
+
数据采集总量
+
999,999
+
+
+
预案编制总量
+
345,678
+
+
+
+ + + +
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/src/app/pages/homedetail/homedetail.component.scss b/src/app/pages/homedetail/homedetail.component.scss new file mode 100644 index 0000000..a5c924a --- /dev/null +++ b/src/app/pages/homedetail/homedetail.component.scss @@ -0,0 +1 @@ +@import "../../../assets/css/style.css"; \ No newline at end of file diff --git a/src/app/pages/homedetail/homedetail.component.spec.ts b/src/app/pages/homedetail/homedetail.component.spec.ts new file mode 100644 index 0000000..4639de2 --- /dev/null +++ b/src/app/pages/homedetail/homedetail.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomedetailComponent } from './homedetail.component'; + +describe('HomedetailComponent', () => { + let component: HomedetailComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomedetailComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomedetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/homedetail/homedetail.component.ts b/src/app/pages/homedetail/homedetail.component.ts new file mode 100644 index 0000000..c46e4a3 --- /dev/null +++ b/src/app/pages/homedetail/homedetail.component.ts @@ -0,0 +1,563 @@ +import { Component, OnInit ,ViewChild, AfterViewInit,ElementRef,Renderer2 } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { Router,ActivatedRoute } from '@angular/router' +declare var echarts: any; +declare var AMap: any; + +declare var AMapUI: any; + + +@Component({ + selector: 'app-homedetail', + templateUrl: './homedetail.component.html', + styleUrls: ['./homedetail.component.scss'] +}) +export class HomedetailComponent implements OnInit { + + constructor(private http:HttpClient, private render2: Renderer2,public element: ElementRef,private router:Router,private route:ActivatedRoute) { } + + //全队数据采集和预案编制数量统计 + chartQusj:any + chartQusjOption:any = { + + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '全队数据采集和预案编制数量统计', + top: -4, + left:-2 + }, + //图例 + legend: { + top: 0, + right:-2, + // left:3, + data: ['单位预案编制数量', '单位数据采集数量'], + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + name:'个' + }, + // 数据 + series: [ + { + name: '单位预案编制数量', + type: 'line', + data: [38, 42, 46, 40, 35, 30, 38, 38, 42, 46, 40, 35], + // showSymbol: true, + // symbolSize:6, + // smooth: false, + // label: { + // show: true, + // }, + areaStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(60,103,195,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(0,194,255,.2)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + } + }, + { + name: '单位数据采集数量', + type: 'line', + data: [28, 12, 66, 50, 25, 40, 48, 12, 66, 50, 25, 40 ], + }, + ], + }; + //预案单位类型统计 + chartYadwlx:any + data02:any = [{ + value: 335, + name: '类型名称1' + }, + { + value: 110, + name: '类型名称2' + }, + { + value: 274, + name: '类型名称3' + }, + { + value: 235, + name: '视频广告' + }, + { + value: 400, + name: '类型名称4' + } + ]; + chartYadwlxOption:any = { + // 标题 + title: { + text: '预案单位类型统计', + left: '15%', + top:0 + }, + //图例 + legend: { + orient: 'vertical', + top: 'center', + right: '0%', + show: false, + formatter: function (name) { + var target; + for (var i = 0, l = this.data02.length; i < l; i++) { + if (this.data02[i].name == name) { + target = this.data02[i].value; + } + } + return name + ' ' + target; + } + }, + //提示框 + tooltip: { + trigger: 'item', + }, + // 数据 + series: [{ + type: 'pie', + center: ['55%', '55%'], + radius: ['25%', '60%'], + roseType:true, + // labelLine: { + // show: true, + // length: 20, + // length2: 0, + // lineStyle: { + // color: '#999', + // width: 1 + // } + // }, + labelLine:{ + lineStyle:{ + color: '#93FCFF' + } + }, + label: { + //formatter: '{hr|}\n{a|{b}}\n{b|{c}}万吨\n{c|{d}%}', + formatter: '{a|{b}}\n{b|{c}}{c|万吨}\n{d|{d}%}', + rich: { + // hr: { + // borderColor: '#999', + // width: '100%', + // borderWidth: 1, + // marginLeft: '-15px', + // marginRight: '-15px', + // height:0 + // }, + a: { + color: '#1F6F9B', + fontSize: 12, + height: 18, + borderColor: '#999', + //marginTop: '65px', + }, + b: { + color: '#fff', + fontSize: 24, + height: 36, + }, + c: { + color: '#fff', + fontSize: 12, + }, + d: { + color: '#fff', + fontSize: 12, + height: 16, + marginLeft: '5px', + }, + }, + }, + data: [{ + value: 335, + name: '类型名称1' + }, + { + value: 110, + name: '类型名称2' + }, + { + value: 274, + name: '类型名称3' + }, + { + value: 235, + name: '类型名称4' + } + ], + }], + }; + // 预案评优排行 + chartYapyph:any + chartYapyphOption:any = { + // 标题 + title: { + text: '预案评优排行', + left:0 + }, + grid: { + left: 30, + right: 0, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['机构1', '机构2', '机构3', '机构4', '机构5', '机构6', '机构7'] + }, + // y轴 + yAxis: { + type: 'value', + splitLine: { + show: true, + lineStyle: { + color: '#fff' + } + }, + }, + // 数据 + series: [{ + name: '预案评优', + type: 'bar', + data: [320, 302, 301, 234, 390, 330, 320], + label: { + show: false, + position: "top", + formatter: '{c}', + color: "#fff", + }, + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, + color: 'rgba(0,220,254,1)' // 0% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,104,191,1)' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + } + } + ], + }; + //预案类型统计 + chartYalxtj:any + chartYalxtjOption:any = { + color: ['#FB33C2', '#00CFF0', '#2C3DE0'], + grid: { + top: 50, + left: 30, + right: 20, + bottom: 20, + }, + // 标题 + title: { + text: '预案类型统计', + top: -4, + left: 0 + }, + //图例 + legend: { + top: 0, + data: ['二维预案', '三维预案', '卡片预案'], + icon:'circle', + itemGap: 20, + }, + //提示框 + tooltip: { + trigger: 'axis', + }, + // x轴 + xAxis: { + type: 'category', + data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], + boundaryGap: false, + }, + // y轴 + yAxis: { + type: 'value', + }, + // 数据 + series: [{ + name: '二维预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(254,51,194,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(254,51,194,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(254,51,194,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + } + }, + data: [38, 42, 46, 40, 35, 30, 38, 42, 46, 40, 35, 30 ], + }, + { + name: '三维预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(14,222,252,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(0,221,255,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(1,255,253,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [28, 72, 66, 50, 25, 40, 48, 66, 50, 25, 40, 48 ], + }, + { + name: '卡片预案', + type: 'line', + symbolSize: 0, + smooth:true, + lineStyle:{ + width: 4, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 1, + y2: 0, + colorStops: [{ + offset: 0, + color: 'rgba(48,63,240,0)' // 0% 处的颜色 + }, { + offset: 0.5, + color: 'rgba(48,63,240,1)' // 100% 处的颜色 + }, { + offset: 1, + color: 'rgba(48,63,240,0)' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + }, + data: [28, 112, 166, 150, 125, 140, 48, 28, 112, 166, 150, 125 ], + }, + ], + }; + //地图 + + chartMap:any + chartMapOption:any = { + tooltip: { + show: true, + formatter: function (params) { + return params.name + ':' + params.data['value']; + }, + }, + geo: [{ + show: true, + map: 'chongqing', + zoom: 1, + itemStyle: { + areaColor: '#090C15', + borderColor: '#0584DD', + borderWidth: 2, + shadowColor: 'rgba(5, 132, 221, 1)', + shadowBlur: 1, + shadowOffsetX: 2, + shadowOffsetY: 10, + }, + emphasis: { + label: { + color: '#fff', + }, + itemStyle: { + areaColor: '#0584DD', + } + } + }, + { + show: true, + map: 'chongqing', + label: { + show: true, + color: '#fff', + fontSize: 12, + }, + zoom: 1, + itemStyle: { + areaColor: '#090C15', + borderColor: '#0584DD', + }, + emphasis: { + label: { + color: '#fff', + }, + itemStyle: { + areaColor: '#0584DD', + } + } + } + ] + } + + ngOnInit(): void { + setTimeout(() => { + this.chartQusj = echarts.init(this.element.nativeElement.querySelector('#chartQusj'),'skinUpp'); + this.chartQusj.setOption(this.chartQusjOption); + this.chartYadwlx = echarts.init(this.element.nativeElement.querySelector('#chartYadwlx'),'skinUpp'); + this.chartYadwlx.setOption(this.chartYadwlxOption); + this.chartYapyph = echarts.init(this.element.nativeElement.querySelector('#chartYapyph'),'skinUpp'); + this.chartYapyph.setOption(this.chartYapyphOption); + this.chartYalxtj = echarts.init(this.element.nativeElement.querySelector('#chartYalxtj'),'skinUpp'); + this.chartYalxtj.setOption(this.chartYalxtjOption); + this.chartMap = echarts.init(this.element.nativeElement.querySelector('#chartMap')); + console.log(this.chartMapOption) + this.chartMap.setOption(this.chartMapOption); + this.mapInit() //初始化地图 + }, 0); + console.log(echarts) + } + mapInit () { + + //创建地图 + var map = new AMap.Map('chartMap', { + cursor: 'default', + zooms:[7,10], + mapStyle:"amap://styles/grey", + + }); + + var colors = [ + "#3366cc", "#dc3912", "#ff9900", "#109618", "#990099", "#0099c6", "#dd4477", "#66aa00", + "#b82e2e", "#316395", "#994499", "#22aa99", "#aaaa11", "#6633cc", "#e67300", "#8b0707", + "#651067", "#329262", "#5574a6", "#3b3eac" + ]; + + AMapUI.loadUI(['geo/DistrictExplorer'], (DistrictExplorer)=> { + + //创建一个实例 + var districtExplorer = new DistrictExplorer({ + map: map, + eventSupport: true, //打开事件支持 + }); + + var adcode = this.route.snapshot.queryParams.code; + + districtExplorer.loadAreaNode(adcode, (error, areaNode)=>{ + + //更新地图视野 + map.setBounds(areaNode.getBounds(), null, null, true); + + //清除已有的绘制内容 + districtExplorer.clearFeaturePolygons(); + + //绘制子区域 + districtExplorer.renderSubFeatures(areaNode, (feature, i) => { + // console.log(123,feature,i) + var fillColor = colors[i % colors.length]; + var strokeColor = colors[colors.length - 1 - i % colors.length]; + + return { + cursor: 'default', + bubble: true, + strokeColor: strokeColor, //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: fillColor, //填充色 + fillOpacity: 0.5, //填充透明度 + }; + }); + + let fillColor2 + if(this.route.snapshot.queryParams.level == 'city'){ + fillColor2 = null + }else{ + fillColor2 = '#329262' + } + // console.log(789,fillColor2) + //绘制父区域 + districtExplorer.renderParentFeature(areaNode, { + cursor: 'default', + bubble: true, + strokeColor: 'black', //线颜色 + strokeOpacity: 1, //线透明度 + strokeWeight: 1, //线宽 + fillColor: fillColor2, //填充色 + fillOpacity: 0.5, //填充透明度 + }); + + }); + districtExplorer.on('featureClick', function(e, feature) { + var props = feature.properties; + // //如果存在子节点 + // // if (props.childrenNum > 0) { + // //切换聚焦区域 + // switch2AreaNode(props.adcode); + // // } + console.log(props) + }); + + + }); + + } +} diff --git a/src/app/pages/lockscreen/lockscreen.component.html b/src/app/pages/lockscreen/lockscreen.component.html new file mode 100644 index 0000000..77892b0 --- /dev/null +++ b/src/app/pages/lockscreen/lockscreen.component.html @@ -0,0 +1,22 @@ +
+
+
+

锁屏

+
+ + 输入密码 + + lock + +
+

+ 输入密码以进入 +

+ + +
+
+
diff --git a/src/app/pages/lockscreen/lockscreen.component.scss b/src/app/pages/lockscreen/lockscreen.component.scss new file mode 100644 index 0000000..041d3ab --- /dev/null +++ b/src/app/pages/lockscreen/lockscreen.component.scss @@ -0,0 +1,111 @@ +.pages-lockscreen { + .page-content { + display: inline-block; + width: 400px; + max-width: 100%; + padding: 30px; + } + .avatar { + width: 50px; + height: 50px; + margin: 0 auto; + + img { + border-radius: 50%; + } + + } +} +.layout-full { + position: absolute; + z-index: 0; + width: 100%; + height: 100%; + color: #fff; + font-family: Roboto, sans-serif; + background: url('../../../assets/images/background.jpg'); + &::before { + position: fixed; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + content: ""; + background-position: center top; + background-size: cover; + } + + &::after { + position: fixed; + top: 0; + left: 0; + z-index: -1; + width: 100%; + height: 100%; + content: ""; + background-color: rgba(33, 33, 33, .6); + } + + .page { + position: relative; + height: 100%; + padding: 0; + margin: 0; + background: transparent; + } + +} + + +.auth-box { + + .copyright { + margin-top: 60px; + font-size: 12px; + font-weight: 500; + letter-spacing: 1px; + + p { + margin: 0 0 14px; + } + } + + .social { + mat-icon { + color: #fff; + } + } +} + +.vertical-align { + &::before { + display: inline-block; + height: 100%; + vertical-align: middle; + content: ""; + } + + .vertical-align-middle { + display: inline-block; + vertical-align: middle; + } + +} + +.pages-login { + .page-content { + display: inline-block; + width: 400px; + max-width: 100%; + padding: 30px; + } + +} +.page-content{ + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%,-50%); + text-align: center; +} \ No newline at end of file diff --git a/src/app/pages/lockscreen/lockscreen.component.spec.ts b/src/app/pages/lockscreen/lockscreen.component.spec.ts new file mode 100644 index 0000000..7f11516 --- /dev/null +++ b/src/app/pages/lockscreen/lockscreen.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LockscreenComponent } from './lockscreen.component'; + +describe('LockscreenComponent', () => { + let component: LockscreenComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LockscreenComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LockscreenComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/lockscreen/lockscreen.component.ts b/src/app/pages/lockscreen/lockscreen.component.ts new file mode 100644 index 0000000..93a7eea --- /dev/null +++ b/src/app/pages/lockscreen/lockscreen.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { Router,ActivatedRoute } from '@angular/router' +import {CacheTokenService} from '../../http-interceptors/cache-token.service'//引入服务 +@Component({ + selector: 'app-lockscreen', + templateUrl: './lockscreen.component.html', + styleUrls: ['./lockscreen.component.scss'] +}) +export class LockscreenComponent implements OnInit { + + constructor(private router:Router,private route:ActivatedRoute,private getMenus:CacheTokenService) { } + password = '' + ngOnInit() { + } + + open(){ + } + + + +} diff --git a/src/app/pages/login/login.component.html b/src/app/pages/login/login.component.html new file mode 100644 index 0000000..0ed8f33 --- /dev/null +++ b/src/app/pages/login/login.component.html @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/src/app/pages/login/login.component.scss b/src/app/pages/login/login.component.scss new file mode 100644 index 0000000..5e378b0 --- /dev/null +++ b/src/app/pages/login/login.component.scss @@ -0,0 +1,87 @@ + +.login { + width: 100%; + height: 100%; + display: flex; + .intro { + flex: 85%; + height: 100%; + background: url('../../../assets/images/background.jpg'); + background-repeat:no-repeat; + background-size:100% 100%; + -moz-background-size:100% 100%; + .text { + padding-top: 3%; + margin-left: 8%; + width: 53%; + } + } + .card{ + flex: 15%; + height: 100%; + background-color: #fff; + } +} + +.example-container { + display: flex; + flex-direction: column; + width: 100%; +} +.loginbtn { + margin-top: 25px; + height: 35px; + background-color:#039be5; + border-radius: 15px; + color: #fff;; +} +.website { + font-size: 14px; + text-align: center; + margin-top: 60px; +} +.alert-danger { + font-size: 14px; + color: red; +} +.cardheader{ + font-size: 26px; + font-weight: 500; + margin-top: 20px; +} +.mat-card { + box-shadow: 0px 0px 0px; + margin-top: 10px; + padding-left: 20px; +} +.mat-form-field { + padding-left: 20px;; +} +.loginImg { + margin-top: 90px; + text-align: center; +} +.mat-input-element { + position: relative; +} +.mat-card .example-container .icon { + width: 24px; + color: #666; + font-size: 24px; + position: absolute; + top:36px; + left: 15px; +} +.mat-card .example-container .icon2 { + width: 24px; + color: #666; + font-size: 24px; + position: absolute; + top:100px; + left: 15px; +} +a { + font-size: 14px; + color: #0066FF; + margin-left: 250px; +} \ No newline at end of file diff --git a/src/app/pages/login/login.component.spec.ts b/src/app/pages/login/login.component.spec.ts new file mode 100644 index 0000000..d6d85a8 --- /dev/null +++ b/src/app/pages/login/login.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/login/login.component.ts b/src/app/pages/login/login.component.ts new file mode 100644 index 0000000..db2b573 --- /dev/null +++ b/src/app/pages/login/login.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { Data } from '../../interface' +import { Router,ActivatedRoute } from '@angular/router' +import {CacheTokenService} from '../../http-interceptors/cache-token.service'//引入服务 +import { MatSnackBar } from '@angular/material/snack-bar'; +import { ConstantPositionProperty } from 'cesium'; + + + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'], +}) +export class LoginComponent implements OnInit { + + constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,public token:CacheTokenService,public snackBar: MatSnackBar) { } + + ngOnInit() { + this.automaticLogin() + } + + errmsg :string = '' + + onSubmit(e){ + + } + + //7天免登录自动登录 + automaticLogin () { + let isNoLogin = localStorage.getItem("isnologin") + if (isNoLogin) { //7天免登录时 + let token = localStorage.getItem("token"); + let refreshToken = localStorage.getItem("refreshToken"); + this.http.post('/api/Account/RefreshToken', { + token: token, + refreshToken: refreshToken}).subscribe((data:any)=>{ + sessionStorage.setItem("level",data.level); + sessionStorage.setItem("token",data.token); + sessionStorage.setItem("refreshToken",data.refreshToken); + this.token.startUp() + this.snackBar.open('已自动登录', '确定', {duration: 3000}); + }) + } //if + + } + + //打开弹窗 + open () { + this.snackBar.open('请联系管理员', '确定', { + duration: 3000 + }); + } + + + +} diff --git a/src/app/pages/pages-routing.module.ts b/src/app/pages/pages-routing.module.ts new file mode 100644 index 0000000..25b1d60 --- /dev/null +++ b/src/app/pages/pages-routing.module.ts @@ -0,0 +1,12 @@ +import { Routes, RouterModule } from '@angular/router'; +import { NgModule } from '@angular/core'; + +const routes: Routes = [ + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class PagesRoutingModule {} diff --git a/src/app/pages/pages.component.html b/src/app/pages/pages.component.html new file mode 100644 index 0000000..c56369e --- /dev/null +++ b/src/app/pages/pages.component.html @@ -0,0 +1 @@ +

pages works!

diff --git a/src/app/pages/pages.component.scss b/src/app/pages/pages.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/pages.component.spec.ts b/src/app/pages/pages.component.spec.ts new file mode 100644 index 0000000..7a864ac --- /dev/null +++ b/src/app/pages/pages.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PagesComponent } from './pages.component'; + +describe('PagesComponent', () => { + let component: PagesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PagesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PagesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/pages.component.ts b/src/app/pages/pages.component.ts new file mode 100644 index 0000000..d8ad6cb --- /dev/null +++ b/src/app/pages/pages.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-pages', + templateUrl: './pages.component.html', + styleUrls: ['./pages.component.scss'] +}) +export class PagesComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts new file mode 100644 index 0000000..abf0f80 --- /dev/null +++ b/src/app/pages/pages.module.ts @@ -0,0 +1,117 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { PagesComponent } from './pages.component'; +import { LoginComponent } from './login/login.component'; +import { RegisterComponent } from './register/register.component'; +import { PagesRoutingModule } from './pages-routing.module' + + +import {A11yModule} from '@angular/cdk/a11y'; +import {DragDropModule} from '@angular/cdk/drag-drop'; +import {PortalModule} from '@angular/cdk/portal'; +import {ScrollingModule} from '@angular/cdk/scrolling'; +import {CdkStepperModule} from '@angular/cdk/stepper'; +import {CdkTableModule} from '@angular/cdk/table'; +import {CdkTreeModule} from '@angular/cdk/tree'; +import {MatAutocompleteModule} from '@angular/material/autocomplete'; +import {MatBadgeModule} from '@angular/material/badge'; +import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; +import {MatButtonModule} from '@angular/material/button'; +import {MatButtonToggleModule} from '@angular/material/button-toggle'; +import {MatCardModule, MatCardTitle} from '@angular/material/card'; +import {MatCheckboxModule} from '@angular/material/checkbox'; +import {MatChipsModule} from '@angular/material/chips'; +import {MatStepperModule} from '@angular/material/stepper'; +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatDividerModule} from '@angular/material/divider'; +import {MatExpansionModule} from '@angular/material/expansion'; +import {MatGridListModule} from '@angular/material/grid-list'; +import {MatIconModule} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import {MatListModule} from '@angular/material/list'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatNativeDateModule, MatRippleModule} from '@angular/material/core'; +import {MatPaginatorModule} from '@angular/material/paginator'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatRadioModule} from '@angular/material/radio'; +import {MatSelectModule} from '@angular/material/select'; +import {MatSidenavModule} from '@angular/material/sidenav'; +import {MatSliderModule} from '@angular/material/slider'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatSortModule} from '@angular/material/sort'; +import {MatTableModule} from '@angular/material/table'; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatTreeModule} from '@angular/material/tree'; +import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { PersonaldataComponent } from './personaldata/personaldata.component'; +import { RouterModule } from '@angular/router'; +import { LockscreenComponent } from './lockscreen/lockscreen.component'; +import { HomeComponent } from './home/home.component'; +import { Home2Component } from './home2/home2.component'; +import { HomedetailComponent } from './homedetail/homedetail.component'; +// import { PagesRoutingModule } from './pages-routing.module'; + + +@NgModule({ + declarations: [PagesComponent, LoginComponent, RegisterComponent, LockscreenComponent, HomeComponent, Home2Component, HomedetailComponent], + imports: [ + + PagesRoutingModule, + CommonModule, + + A11yModule, + CdkStepperModule, + CdkTableModule, + CdkTreeModule, + DragDropModule, + MatAutocompleteModule, + MatBadgeModule, + MatBottomSheetModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + + MatCheckboxModule, + MatChipsModule, + MatStepperModule, + MatDatepickerModule, + MatDialogModule, + MatDividerModule, + MatExpansionModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, + MatTreeModule, + PortalModule, + ScrollingModule, + + FormsModule, + ReactiveFormsModule, + RouterModule + // PagesRoutingModule, + ] +}) +export class PagesModule { } diff --git a/src/app/pages/personaldata/personaldata.component.html b/src/app/pages/personaldata/personaldata.component.html new file mode 100644 index 0000000..4e0fb3e --- /dev/null +++ b/src/app/pages/personaldata/personaldata.component.html @@ -0,0 +1,280 @@ +
+
+ + + + 安信科创 + 嘻嘻嘻嘻 +

+ 不要做程序员,要做问题解决者 +

+
+ + + + +
+ +
+ +
+ 260 + 粉丝 +
+
+ 180 + 关注 +
+
+ 2000 + 博客 +
+
+
+ + + + + + +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ + + + +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ + 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+
+
+ +
+
+ + + +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ + 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ + + +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ + + + +
+
+
+
+ + + +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ + 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ + + + +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+ +
+ +
+
我是假数据 + 我是假数据 +
+ 我是假数据 +
+
+
+ 我是假数据 +
+
+
+
+
+
+
+
diff --git a/src/app/pages/personaldata/personaldata.component.scss b/src/app/pages/personaldata/personaldata.component.scss new file mode 100644 index 0000000..674904d --- /dev/null +++ b/src/app/pages/personaldata/personaldata.component.scss @@ -0,0 +1,110 @@ + +#xxx{ + display: flex; + justify-content: space-around; +} +.pages-profile { + padding: 30px; + + .profile-card { + padding: 9px; + text-align: center; + font-family: Roboto, sans-serif; + width: 500px; + height: 600px; + mat-card-content { + padding: 40px 15px; + margin: 0; + } + + .mat-card-avatar { + width: 130px; + height: 130px; + margin-bottom: 10px; + } + + .profile-user { + margin: 10px 0; + font-weight: normal; + } + + .profile-job { + margin-bottom: 20px; + color: #9e9e9e; + font-weight: 500; + } + + .profile-introduction { + margin: 0 0 1rem; + color: #757575; + } + + .profile-social { + margin: 25px 0; + + mat-icon { + margin: 0 10px; + color: rgba(66, 66, 66, .4); + } + } + + mat-card-actions { + padding: 10px; + background: #f6f9fd; + } + + .profile-card-footer { + display: flex; + justify-content: space-around; + .profile-stat-count { + display: block; + margin-bottom: 3px; + font-size: 20px; + font-weight: bold; + color: #616161; + + +span { + color: #9e9e9e; + } + } + } + + } + + .profile-board { + padding: 30px; + width: 500px; + mat-list { + padding-bottom: 20px; + } + + mat-list-item { + height: auto; + padding: 25px 0; + margin-left: -16px; + border-bottom: 1px solid #dfe0df; + + .profile-item-content { + padding: 20px 0 0 56px; + line-height: 1.571429; + color: #757575; + white-space: normal; + display: flex; + flex-wrap: wrap; + + img { + width: 100%; + max-width: 220px; + max-height: 150px; + padding: 0 20px 20px 0; + } + } + } + } + + .show-more-btn { + width: 100%; + background-color: #eee; + color: #3949ab; + } +} \ No newline at end of file diff --git a/src/app/pages/personaldata/personaldata.component.spec.ts b/src/app/pages/personaldata/personaldata.component.spec.ts new file mode 100644 index 0000000..cf44bea --- /dev/null +++ b/src/app/pages/personaldata/personaldata.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PersonaldataComponent } from './personaldata.component'; + +describe('PersonaldataComponent', () => { + let component: PersonaldataComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PersonaldataComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PersonaldataComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/personaldata/personaldata.component.ts b/src/app/pages/personaldata/personaldata.component.ts new file mode 100644 index 0000000..28d9b93 --- /dev/null +++ b/src/app/pages/personaldata/personaldata.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-personaldata', + templateUrl: './personaldata.component.html', + styleUrls: ['./personaldata.component.scss'] +}) +export class PersonaldataComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/pages/register/register.component.html b/src/app/pages/register/register.component.html new file mode 100644 index 0000000..4439983 --- /dev/null +++ b/src/app/pages/register/register.component.html @@ -0,0 +1,81 @@ + \ No newline at end of file diff --git a/src/app/pages/register/register.component.scss b/src/app/pages/register/register.component.scss new file mode 100644 index 0000000..aed8113 --- /dev/null +++ b/src/app/pages/register/register.component.scss @@ -0,0 +1,88 @@ +.login { + width: 100%; + height: 100%; + background: url('../../../assets/images/background.jpg'); + + .loginbox { + width: 100%; + height: 100%; + background-color: #000; + background: rgba(0,0,0,0.5);/*盒子背景透明*/ + // opacity: 0.5; + position: relative; + } + + .intro { + width: 650px; + // height: 350px; + position: fixed; + top:35%; + left: 15%; + p { + font-size: 36px; + color:white; + margin-bottom: 35px; + } + span { + font-size: 16px; + color:white; + opacity: 0.5; + } + } + + .card{ + width: 460px; + height: 100%; + padding-left: 20px; + background-color: #fff; + position: absolute; + right: 0; + p { + width: 100%; + margin: 18px 0; + } + .cardheader{ + font-size: 26px; + font-weight: 500; + } + + } + +} + +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} +.loginbtn { + margin-top: 18px; + height: 35px; + background-color:#039be5; + border-radius: 15px; + color: #fff;; +} +.mat-card { + box-shadow: 0 0 0; + margin-top: 70px; +} + +.applyfor { + font-size: 16px; + a { + color: #039be5; + } +} + +.website { + font-size: 14px; + text-align: center; + margin-top: 50px; +} +.alert-danger { + font-size: 14px; + color: red; +} \ No newline at end of file diff --git a/src/app/pages/register/register.component.spec.ts b/src/app/pages/register/register.component.spec.ts new file mode 100644 index 0000000..6c19551 --- /dev/null +++ b/src/app/pages/register/register.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RegisterComponent } from './register.component'; + +describe('RegisterComponent', () => { + let component: RegisterComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RegisterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RegisterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/register/register.component.ts b/src/app/pages/register/register.component.ts new file mode 100644 index 0000000..5da5ecf --- /dev/null +++ b/src/app/pages/register/register.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-register', + templateUrl: './register.component.html', + styleUrls: ['./register.component.scss'] +}) +export class RegisterComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + + onSubmit(e){ + } + +} diff --git a/src/app/pipes/boolean.pipe.ts b/src/app/pipes/boolean.pipe.ts new file mode 100644 index 0000000..8604d14 --- /dev/null +++ b/src/app/pipes/boolean.pipe.ts @@ -0,0 +1,43 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import { isno , PlanTypeEnum , AuditStatusEnum , PlanLevelEnum} from '../interface' +import {DomSanitizer} from '@angular/platform-browser' +@Pipe({name: 'isno'}) +export class IsnoPipe implements PipeTransform { + transform(value: boolean): string { + if(value){ + var x = 0 + }else{ + x=1 + } + return isno[x] + } +} +@Pipe({name: 'plantype'}) +export class PlanType implements PipeTransform { + transform(value: number): string { + return PlanTypeEnum[value] + } +} + +@Pipe({name: 'auditsatus'}) +export class AuditSatus implements PipeTransform { + transform(value: number): string { + return AuditStatusEnum[value] + } +} +@Pipe({name: 'planlevel'}) +export class PlanLevel implements PipeTransform { + transform(value: number): string { + return PlanLevelEnum[value] + } +} + +@Pipe({name: 'safeHtml'}) +export class SafeHtmlPipe implements PipeTransform { + constructor(private sanitizer: DomSanitizer) { + } + + transform(html) { + return this.sanitizer.bypassSecurityTrustHtml(html) + } +} \ No newline at end of file diff --git a/src/app/pipes/time.pipe.ts b/src/app/pipes/time.pipe.ts new file mode 100644 index 0000000..23882b6 --- /dev/null +++ b/src/app/pipes/time.pipe.ts @@ -0,0 +1,9 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({name: 'time'}) +export class TimePipe implements PipeTransform { + transform(value: string): string { + var newtime = value.substr(0,4) + '-' + value.substr(5,2) + '-' + value.substr(8,2) + return newtime + } +} \ No newline at end of file diff --git a/src/app/tabbar/tabbar.component.html b/src/app/tabbar/tabbar.component.html new file mode 100644 index 0000000..034f357 --- /dev/null +++ b/src/app/tabbar/tabbar.component.html @@ -0,0 +1,178 @@ + + +

{{title}} : {{planName}}

+ + + + + +
+
+ 分类名称 + 已得分 + 总分 +
+
+
    +
  • +
    单位信息
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    建筑信息
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    平面图
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    四周毗邻
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    消防设施
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    重点部位
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    功能分区
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    实景图
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
  • +
    CAD上传
    +
    +
    +
    +
    + 8分 +
    +
    10分
    +
  • +
+
+
+ 仅供参考 +
+
+

欢迎您, {{realName}}

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
\ No newline at end of file diff --git a/src/app/tabbar/tabbar.component.scss b/src/app/tabbar/tabbar.component.scss new file mode 100644 index 0000000..f2e4a54 --- /dev/null +++ b/src/app/tabbar/tabbar.component.scss @@ -0,0 +1,181 @@ + +//@import "/src/app/style.css"; +mat-toolbar{ + position: relative; + padding-left: 65px; + .grade{ + width: 120px; + height: 45px; + //border:1px solid #F00; + position: absolute; + text-align: center; + margin-left: 250px; + margin-top: 0px; + -webkit-transform: rotate(-10deg); + -moz-transform: rotate(-10deg); + transform:text; + a{ + box-sizing: border-box; + + display: inline-block; + color: #fff; + //padding: 12px 5px; + text-decoration: none; + cursor: pointer; + } + span{ + text-align: center; + font-size: 36px; + line-height: 45px; + font-family: "STXinwei"; + color:#FFA500; + cursor: default; + text-decoration:underline; + padding-bottom:5px; + + } + a.active>span ,a:hover>span { + //padding-bottom: 8px; + border-bottom: 3px solid #FFA500; + + } + } +} +.logo{ + height: 64px; + widows: 64px; +} + +h1{ + line-height: 64px; + color: white; +} +mat-icon{ + color: white; +} +.login{ + position: absolute; + right:30px; +} +.fullscreen{ + position: absolute; + right:60px; +} +.setting{ + position: absolute; + right:120px; +} +.lockscreen{ + position: absolute; + right:160px; +} +.darktheme{ + position: absolute; + right:140px; + display: none; +} + +.boxed{ + width: 1200px; +} + +//鼠标移入详情页面显示 +.integrityDetails{ + position: absolute; + z-index: 999; + color: black; + display: none; + width: 350px; + height:290px; + left: 440px; + top: 30px; + border: 1px solid rgba(0, 0, 0, 0.22); + background-color: white; + .integrityDetailsTop{ + width: 100%; + height: 23px; + line-height:23px; + border-bottom: 1px solid rgba(0, 0, 0, 0.22); + margin-bottom: 1px; + font-size: 14px; + span{ + display: inline-block; + text-align: center; + font-weight: 800; + } + .span1{ + width: 25%; + } + .span2{ + width: 60%; + } + .span3{ + width: 15%; + } + } + .integrityDetailsBody{ + ul{ + li{ + width: 100%; + height: 23px; + line-height: 23px; + margin: 3px 15px; + div{ + float: left; + font-size: 13px; + } + .name{ + width: 25%; + height: 100%; + } + .colorDiv{ + width: 60%; + height: 100%; + position: relative; + .colorDivBac{ + width: 90%; + height: 100%; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); + background-color: #dfe5ec; + border-radius: 5px; + .colorDivCon{ + border-radius: 5px; + height: 100%; + background-color: #2398f1; + } + } + span{ + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); + // color: white; + font-weight: 600; + } + } + .number{ + width: 15%; + height: 100%; + } + } + } + + } +} +.uploadFile{ + height: 64px; + line-height: 64px; + a{ + color: rgb(26, 15, 179); + font-size: 22px; + position: absolute; + right: 370px; + } + a:hover{ + text-decoration: underline; + color: red; + } +} \ No newline at end of file diff --git a/src/app/tabbar/tabbar.component.spec.ts b/src/app/tabbar/tabbar.component.spec.ts new file mode 100644 index 0000000..6bcc230 --- /dev/null +++ b/src/app/tabbar/tabbar.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TabbarComponent } from './tabbar.component'; + +describe('TabbarComponent', () => { + let component: TabbarComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ TabbarComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TabbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/tabbar/tabbar.component.ts b/src/app/tabbar/tabbar.component.ts new file mode 100644 index 0000000..f599c0f --- /dev/null +++ b/src/app/tabbar/tabbar.component.ts @@ -0,0 +1,135 @@ +import { Component, OnInit,Output,EventEmitter } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { Router,ActivatedRoute,NavigationEnd } from '@angular/router' +import {CacheTokenService} from '../http-interceptors/cache-token.service'//引入服务 +import { MatDialog } from '@angular/material/dialog'; +import {ChangepasswordComponent} from '../ui/changepassword/changepassword.component' +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import { filter } from 'rxjs/operators'; + + +@Component({ + selector: 'app-tabbar', + templateUrl: './tabbar.component.html', + styleUrls: ['./tabbar.component.scss'] +}) +export class TabbarComponent implements OnInit { + theme: boolean = true; + @Output() + toggle = new EventEmitter(); + @Output() + toggleDarkTheme = new EventEmitter(); + @Output() + defaulttheme = new EventEmitter(); + @Output() + redtheme = new EventEmitter(); + + onChange(eventValue: boolean){ + this.toggleDarkTheme.emit(eventValue); + } + + constructor(private http:HttpClient,private router:Router,private route:ActivatedRoute,public token:CacheTokenService,public dialog: MatDialog, + public snackBar: MatSnackBar) { } + + grade = null //单位完整度得分 + title:any = "数字化预案编制管理平台" + planName:any = null + routerEventsListener //监测路由变化 + ngOnInit() { + + } + + ngOnDestroy(){ + } + + + integrityDetails(width,zong){ + let style:any = {} + style.width = (width/zong)*100 +'%'; + return style + } + + boxed(css){ + const Element = document.body; + Element.style.width = '1200px' + } + + standard(){ + const Element = document.body; + Element.style.width = '100%' + } + + isfullscreen:boolean = false; + fullscreenToggle(){ + const docElmWithBrowsersFullScreenFunctions = document.documentElement as HTMLElement & { + mozRequestFullScreen(): Promise; + webkitRequestFullscreen(): Promise; + msRequestFullscreen(): Promise; + }; + + if (docElmWithBrowsersFullScreenFunctions.requestFullscreen) { + docElmWithBrowsersFullScreenFunctions.requestFullscreen(); + } else if (docElmWithBrowsersFullScreenFunctions.mozRequestFullScreen) { /* Firefox */ + docElmWithBrowsersFullScreenFunctions.mozRequestFullScreen(); + } else if (docElmWithBrowsersFullScreenFunctions.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ + docElmWithBrowsersFullScreenFunctions.webkitRequestFullscreen(); + } else if (docElmWithBrowsersFullScreenFunctions.msRequestFullscreen) { /* IE/Edge */ + docElmWithBrowsersFullScreenFunctions.msRequestFullscreen(); + } + + this.isfullscreen = true; + + } + closefullscreen(){ + const docWithBrowsersExitFunctions = document as Document & { + mozCancelFullScreen(): Promise; + webkitExitFullscreen(): Promise; + msExitFullscreen(): Promise; + }; + if (docWithBrowsersExitFunctions.exitFullscreen) { + docWithBrowsersExitFunctions.exitFullscreen(); + } else if (docWithBrowsersExitFunctions.mozCancelFullScreen) { /* Firefox */ + docWithBrowsersExitFunctions.mozCancelFullScreen(); + } else if (docWithBrowsersExitFunctions.webkitExitFullscreen) { /* Chrome, Safari and Opera */ + docWithBrowsersExitFunctions.webkitExitFullscreen(); + } else if (docWithBrowsersExitFunctions.msExitFullscreen) { /* IE/Edge */ + docWithBrowsersExitFunctions.msExitFullscreen(); + } + this.isfullscreen = false; + } + + realName:any; //登录用户信息 + //获取用户信息 + getUserInfo () { + this.http.get("/api/Account/Profiles").subscribe((data:any)=>{ + this.realName = data.realName + }) + } + + //退出系统 + signOut = () => { + let out = confirm("您确定要退出吗") + if(out) { + this.http.post('/api/Account/SignOut',{}).subscribe( + data=> { + this.token.delete() + sessionStorage.clear() + window.localStorage.clear() + const config = new MatSnackBarConfig(); + config.verticalPosition = 'bottom'; + config.duration = 3000 + this.snackBar.open('成功退出','确定',config); + } + ) + } + } + + //修改密码 + changpsw() { + let dialogRef = this.dialog.open(ChangepasswordComponent, + {width:'348px'}); + + dialogRef.afterClosed().subscribe(); + } + +} diff --git a/src/app/theme.scss b/src/app/theme.scss new file mode 100644 index 0000000..f220098 --- /dev/null +++ b/src/app/theme.scss @@ -0,0 +1,18 @@ +@import "./theming"; +@include mat-core(); + +$my-app-primary:mat-palette($mat-blue,500); +$my-app-accent :mat-palette($mat-pink,A200,A100,A400); +$my-app-warn :mat-palette($mat-red); +$my-app-theme :mat-light-theme($my-app-primary,$my-app-accent,$my-app-warn); +@include angular-material-theme($my-app-theme); + + +$my-dark-primary:mat-palette($mat-red,A700); +$my-dark-accent :mat-palette($mat-amber,A200,A100,A400); +$my-dark-warn :mat-palette($mat-deep-orange); +$my-dark-theme :mat-dark-theme($my-dark-primary,$my-dark-accent,$my-dark-warn); + +.myapp-dark-theme{ +@include angular-material-theme($my-dark-theme); +} diff --git a/src/app/ui/changepassword/changepassword.component.html b/src/app/ui/changepassword/changepassword.component.html new file mode 100644 index 0000000..a2ebef3 --- /dev/null +++ b/src/app/ui/changepassword/changepassword.component.html @@ -0,0 +1,48 @@ +
+ 修改密码 +
+
+ +
+ + 原密码 + + + + + 新密码 + + + +
+
密码格式8-20位,字母+数字
+
+ + 确认新密码 + + + +
+
密码输入不一致!
+
+
+ {{errmsg}} +
+ +
+ + +
+ +
+
\ No newline at end of file diff --git a/src/app/ui/changepassword/changepassword.component.scss b/src/app/ui/changepassword/changepassword.component.scss new file mode 100644 index 0000000..1cc8052 --- /dev/null +++ b/src/app/ui/changepassword/changepassword.component.scss @@ -0,0 +1,15 @@ +.passwordCard { + width: 300px; + height: 100%; +} +.mat-form-field { + display: block; + width: 300px; +} +.group-error-content { + font-size: 12px; + color: red; +} +.mat-dialog-content { + overflow: visible +} diff --git a/src/app/ui/changepassword/changepassword.component.ts b/src/app/ui/changepassword/changepassword.component.ts new file mode 100644 index 0000000..928d2e8 --- /dev/null +++ b/src/app/ui/changepassword/changepassword.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { MatDialogRef } from '@angular/material/dialog'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; + + + +@Component({ + selector: 'app-changepassword', + templateUrl: './changepassword.component.html', + styleUrls: ['./changepassword.component.scss'] +}) + +export class ChangepasswordComponent implements OnInit { + + constructor(private http:HttpClient,public snackBar: MatSnackBar, + public dialogRef: MatDialogRef) { } + + ngOnInit() { + } + errmsg :string = '' + + onSubmit(e){ + this.http.put( + '/api/Account/Password', + { + newPassword: e.newPassword, + password: e.password + } + ).subscribe(data=> { + this.dialogRef.close(data); + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('密码修改成功','确定',config); + },(err) => + {this.errmsg = err} + ) + } + + + +} + diff --git a/src/app/ui/changepassword/equal-validator.directive.ts b/src/app/ui/changepassword/equal-validator.directive.ts new file mode 100644 index 0000000..44d50bf --- /dev/null +++ b/src/app/ui/changepassword/equal-validator.directive.ts @@ -0,0 +1,30 @@ +import { Directive, Input } from '@angular/core'; +import { NG_VALIDATORS, Validator, AbstractControl, ValidatorFn} from '@angular/forms'; + +@Directive({ + selector: '[appConfirmpsw]', + providers: [{ + provide : NG_VALIDATORS, + useExisting : ConfirmpswDirective, + multi: true + }] +}) +export class ConfirmpswDirective implements Validator { + + @Input('appConfirmpsw') confirmpsw: string; + constructor() { + + } + validate(control: AbstractControl): {[key: string]: any} { + return this.confirmpsw ? comfirmPswValidator(this.confirmpsw)(control) : null; + } +} + +export function comfirmPswValidator(_confirmpsw: string): ValidatorFn { + return (control: AbstractControl): {[key: string]: any} => { + if ( !control.value ) { + return { 'required' : true }; + } + return control.value !== _confirmpsw ? {'confirmpsw' : {value: true}} : null; + }; +} \ No newline at end of file diff --git a/src/app/ui/collection-tools/addDisposalNode.html b/src/app/ui/collection-tools/addDisposalNode.html new file mode 100644 index 0000000..27654e8 --- /dev/null +++ b/src/app/ui/collection-tools/addDisposalNode.html @@ -0,0 +1,24 @@ +
+
+ + +
+ +
+ +
+ + + +
+ +
+ + +
+ +
+ +
\ No newline at end of file diff --git a/src/app/ui/collection-tools/addPlaneFigure.html b/src/app/ui/collection-tools/addPlaneFigure.html new file mode 100644 index 0000000..930bf81 --- /dev/null +++ b/src/app/ui/collection-tools/addPlaneFigure.html @@ -0,0 +1,38 @@ +
+
+ + +
+ +
+ +
+ + + +
+ +
+ 是否为避难层 +
+ +
+ + + +
+ +
+ +
+ +
+ + +
+ +
+ +
\ No newline at end of file diff --git a/src/app/ui/collection-tools/collection-tools.component.html b/src/app/ui/collection-tools/collection-tools.component.html new file mode 100644 index 0000000..8069051 --- /dev/null +++ b/src/app/ui/collection-tools/collection-tools.component.html @@ -0,0 +1,530 @@ +
+ + + + + + +
+
+ 总平面图 +
+
+ {{item.name}} +
+ +
+ +
+
+ + + +
+ + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + + + + + + + + +
+
+ + +
+ + +
+ + +
+
+ + +
+
+
+
+
+ + + + + +
keyboard_arrow_up
+
+
+
+ 节点详情 +
+
+ 注意事项 +
+
expand_more
+
+
+
{{canvasData.selectPanelPointBaseData.description}}
+
{{canvasData.selectPanelPointBaseData.notes}}
+
+
+
+ + +
+ +
+ + 属性 + + + 消防要素 + +
+
+ +
+ +
+

面积(平方米)

+
{{canvasData.selectStorey.area}}
+

详情

+
+ {{canvasData.selectStorey.details}} +
+
+ +
+

{{assetName}}

+ +
+

宽度(像素)

+
{{assetWidth}}
+

高度(像素)

+
{{assetHeight}}
+

角度

+
+ +
{{sliderValue}}
+
+
+ +
+

厚度

+
+ +
{{sliderValueThickness}}
+
+
+ + +
+
+ 颜色 +
+ +
+
+ +

透明度

+ + +
{{colorDivSliderValue}}%
+
+
+ +
+

{{item.PropertyName}}({{item.PhysicalUnit}})

+ +
{{item.PropertyValue}}
+
+ +
+

{{item.PropertyName}}({{item.PhysicalUnit}})

+ +
{{item.PropertyValue}}
+
+ +
+

{{item.PropertyName}}({{item.PhysicalUnit}})

+
{{item.PropertyValue}}
+
+ +
+
+ +

{{item.PropertyName}}

+ {{imagesArr.length ? imagesArr.length : 0}} / {{item.PropertyValue}} + +
+
+
+
+ +
+
+
+
+
+ +
+

{{item.PropertyName}}

+
+
西
+
+
+
东南
+
西南
+
东北
+
西北
+ +
+ +
+

{{item.PropertyName}}

+
+
+ + +
+ +
+

{{item.PropertyName}}

+
全部
+
高区
+
中区
+
低区
+
高中区
+
高低区
+
中底区
+
+ +
+

{{item.PropertyName}}

+
消火栓
+
喷淋
+
水幕
+
泡沫
+
消防
+
+
+
+ +
+ +
+ +
+ + + + + + + {{node.name}} + + ({{node.children.length}}) + visibility + + + + + + + {{node.name}} + + ({{node.children.length}}) + visibility + + + +
+
+
+
+ + +
+
+ +
\ No newline at end of file diff --git a/src/app/ui/collection-tools/collection-tools.component.scss b/src/app/ui/collection-tools/collection-tools.component.scss new file mode 100644 index 0000000..5015a0c --- /dev/null +++ b/src/app/ui/collection-tools/collection-tools.component.scss @@ -0,0 +1,677 @@ +@import './panel.scss'; +.icongray{ + color: #D9D0DC; +} +.content { + width: 100%; + height: 100%; + overflow: hidden; + box-sizing: border-box; + padding: 1px; + display: flex; + flex-direction: column; + + .buildingbtnchecked{ + color: white; + background-image: url("../../../assets/images/标签选中.png")!important; + } +} + +//header头部 +.header { + position: relative; + flex: 5%; + display: flex; + align-items:center; + min-height: 40px; + background-color: #fff; + .nameShow{ + cursor: pointer; + user-select: none; + } + .copytobutn{ + width: 33px; + min-width: 33px; + display: flex; + justify-content: center; + } + font-size: 18px; + mat-icon{ + font-size: 26px; + vertical-align: text-top; + } + span{ + height: 24px; + line-height: 24px; + } + .patternSwitch{ + position: absolute; + right: 140px; + span{ + font-size: 18px; + cursor: pointer; + margin: 0 3px; + display: inline-block; + border: 1px solid gray; + border-radius: 3px; + padding: 0 5px; + } + .selectedPattern{ + background-color: #2196f3; + color: white; + } + } +} + +// //头部操作栏 +// .headerOperate { +// img { +// width: 24px; +// height: 24px; +// vertical-align: middle; +// margin-left: 1px; +// } +// span{ +// font-size: 18px; +// } +// flex: 5%; +// display: flex; +// align-items:center; +// min-height: 40px; +// box-sizing: border-box; +// margin: 3px 0; +// background-color: white; +// button{ +// border: 0.5px solid rgb(208, 211, 214); +// margin: 0 2px; +// } +// .editdeletebtn{ +// display: none; +// } +// .bigeditdeletebtn:hover{ +// .editdeletebtn{ +// display: inline-block; +// } +// } +// } +.headerOperate { + position: relative; + span{ + font-size: 18px; + } + flex: 2%; + display: flex; + align-items:center; + min-height: 40px; + box-sizing: border-box; + margin: 3px 0; + + .bigeditdeletebtn{ + margin-right: 12px; + height: 80%; + display: flex; + flex-direction: column; + // align-items:center;/*由于flex-direction: column,因此align-items代表的是水平方向*/ + justify-content: center; + user-select: none; + background-image: url("../../../assets/images/标签正常.png") ; + background-size:100% 100%; + color: white; + span{ + padding: 0 13px; + padding-right: 18px; + } + } + .bigeditdeletebtn:hover{ + cursor: pointer; + background-image: url("../../../assets/images/标签经过.png") ; + } + .bigTalkBox{ + user-select: none; + .titleIcon{ + font-size: 33px; + vertical-align: sub; + color: white; + } + .talkBox{ + width: 309px; + height: 326px; + border: 1px solid #30bbec; + background-color: #013a64; + opacity: .9 ; + position: absolute; + top: 32px; + right:4px; + z-index: 2000; + .btndiv{ + div{ + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + + } + div:nth-child(1){ + background-color: #fe9400; + margin: 10px; + } + div:nth-child(2){ + background-color: #f95e5a; + } + } + .bottomDiv{ + position: absolute; + bottom:6px; + width: 100%; + height: 32px; + line-height: 32px; + display: flex; + color: white; + text-align: center; + div:nth-child(1){ + flex: 1; + } + div:nth-child(2){ + flex: 6; + color: #409eff; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + } + div:nth-child(3){ + flex: 1; + + } + } + } + } +} +//功能区 +// icon统一样式 +.mat-icon { + cursor:pointer; + vertical-align: middle; +} +//左右两侧功能栏 统一样式 +.publicCss { + overflow: hidden; + border-radius: 5px; + top: 0; +} +.functionalDomain { + flex: 98%; + overflow: hidden; + .functionalDomainContent { + display: flex; + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + } + .functionalDomainLeft { + flex: 1; + display: flex; + flex-direction: column; + margin-left: 0px; + transition: margin-left 0.5s; + border: 1px solid #30bbec; + left: 0; + z-index: 111; + .leftDragDiv{ + position: absolute; + right: 0; + height: 100%; + width: 3px; + z-index: 1000; + cursor: e-resize; + } + } + .canvas{ + flex: 5; + .closebottombtn{ + width: 30px; + vertical-align: sub; + } + .openbottombtn{ + width: 30px; + color: white; + text-align: center; + height: 30px; + line-height: 30px; + vertical-align: sub; + position: absolute; + left: 5px; + bottom: 5px; + background-color:rgba(2, 44, 73, 0.9); + } + //打开时 + .openBottom{ + margin-bottom: 0; + transition: margin-bottom 1s; + } + //关闭 + .closeBottom{ + margin-bottom: -300px!important; + transition: margin-bottom 1s; + } + //右侧 楼层UI + .rightStorey { + width: 100px; + height: 250px; + position: absolute; + left: 0; + top: 50%; + margin-top: -200px; + z-index: 9999; + display: flex; + flex-direction: column; + background-color:rgba(2, 44, 73, 0.9); + color: #fff; + font-weight: 300; + >div {text-align: center; line-height: 25px;} + } + .showRightStorey { + position: absolute; + right: 0; + top: 50%; + margin-top: -13px; + z-index: 9999; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + background-color:rgba(2, 44, 73, 0.9); + color: #fff; + } + //打开关闭右侧 楼层 + .openRight { + margin-right: 0px; + transition: margin-right 0.5s; + } + .closeRight { + margin-right: -300px; + transition: margin-right 0.5s; + } + .canvasbottomCss{ + margin-bottom: 0; + transition: margin-bottom 0.5s; + position: absolute; + bottom: 0; + width: 100%; + height: 200px; + display: flex; + flex-direction: column; + .title{ + border-bottom: 1px solid #30bbec; + flex: 1; + div{ + cursor: pointer; + background-color: rgba(2, 44, 73, 0.9); + width: 120px; + height: 30px; + line-height: 35px; + text-align: center; + margin-right: 10px; + color: white; + font-style: italic; + font-size:18px; + + } + .closebottombtn{ + width: 30px; + vertical-align: sub; + } + .detailsAndattentBtn{ + background-color: #ed863b; + } + } + .body{ + flex: 10; + background-color:rgba(2, 44, 73, 0.9); + div{ + color: #d0e0f4; + font-size: 16px; + letter-spacing:5px; + margin: 5px 0 0 8px; + } + } + + } + } + .functionalDomainRight { + color: white; + // background-color: #113e5e; + z-index: 1001; + margin-right: 0px; + transition: margin-right 0.5s; + border: 1px solid #30bbec; + width: 235px; + right: 0; + flex: 1; + } + //右边导航栏显示隐藏 + .togglePanel2 { + margin-right: -2000px; + transition: margin-right 1s; + } + //左侧导航栏显示隐藏 + .togglePanel { + margin-left: -2000px; + transition: margin-left 1s; + } + +} + +//右边操作栏 +.title{ + width: 100%; + height: 40px; + line-height: 40px; + border-bottom:2px solid #accbf2; + display: flex; + align-content: center; + span{ + display: inline-block; + flex: 1; + text-align: center; + } + span:hover{ + cursor: pointer; + } +} +.selectedTitle{ + background: #0c2d44; +} + +//右侧属性 +.property{ + display: flex; + flex-flow: column; + .siteproperty{ + height: 100%; + overflow-y: auto; + p{ + color: #d0e0f4; + padding-left: 7px; + letter-spacing:3px; + margin: 5px 0; + } + .siteproperty_size{ + border-bottom:1px solid #d0e0f4; + width: 93%; + margin: 0 auto; + min-height: 21px; + color: #2399f1; + padding-bottom: 5px; + font-size: 16px; + letter-spacing:2px; + } + .rightAttribute{ + width: 12%; + height: 99.5%; + position: absolute; + top: 0; + right: 0; + bottom: 0; + border: 2px solid #464646; + } + } + .assetsproperty{ + overflow-y: auto; + height: 100%; + p{ + + color: #d0e0f4; + padding-left: 7px; + letter-spacing:3px; + margin: 5px 0; + } + .siteproperty_size{ + border-bottom:1px solid #d0e0f4; + width: 93%; + margin: 0 auto; + min-height: 21px; + color: #2399f1; + padding-bottom: 5px; + font-size: 16px; + letter-spacing:2px; + } + span{ + font-size: 15px; + } + input{ + height: 18px; + } + .biginput{ + display: block; + width: 88%; + margin: 0 auto; + } + .smallinput{ + display: block; + width: 19%; + margin-left: 8px; + } + .textarea{ + display: block; + width: 88%; + height: 50px; + margin: 0 auto; + } + .swiper-button-next{ + right: 6px; + } + .swiper-button-prev{ + left: 6px; + } + .swiper-container{ + // --swiper-theme-color: #ff6600;/* 设置Swiper风格 */ + // --swiper-navigation-color: #00ff33;/* 单独设置按钮颜色 */ + --swiper-navigation-size:20px;/* 设置按钮大小 */ + } + .hoverred:hover{ + color: rgb(187, 28, 28); + } + .selectDiv{ + height: 21px; + position: relative; + margin-bottom: 5px; + select{ + width: 98px; + height: 22px; + vertical-align: middle; + position: absolute; + right: 10px; + top: 1px; + border: 1px solid rgb(208, 211, 214); + border-radius: 2px; + } + } + .colorBigDiv{ + width: 88%; + margin-left: 8px; + + + .colorDiv{ + .colorLi{ + width: 24px; + height: 24px; + list-style: none; + float: left; + border: 2px solid white; + } + .coloractive{ + border: 2px solid black; + } + } + } + .colorBigTemplateDiv{ + span{ + color: #9c9fa5; + font-size: 14px; + height: 26px; + line-height: 26px; + } + .colorTemplateDiv{ + width: 65%; + height: 22px; + display: inline-block; + vertical-align: middle; + margin-left: 26px; + } + } + } +} +//右侧消防要素 +.firecategories{ + position: relative; + // display: flex; + // flex-flow: column; + .firecategoriesTree{ + overflow-y: auto; + height: 100%; + mat-tree-node{ + position: relative; + } + .isLookCss{ + position: absolute; + right: 6px; + z-index: 1000; + } + } + .mat-tree{ + background-color:transparent; + .mat-tree-node{ + color: white!important; + } + } +} + +// 解决轮播图蓝框问题 +div:focus { + outline: none; +} + +//没有图片时显示无图片背景图 +.noImgCss{ + background: url(../../../assets/images/noImg.png) ; + background-size: 100% 100%;/*按比例缩放*/ +} +.input{ + width: 18px; + height: 18px; + vertical-align: middle; + margin-left: 9px; + margin-right: 3px; +} + + +// tree +.mat-tree-node{ + min-height: 0; + height: 32px; + line-height: 32px; + font-size: 13px; + cursor: pointer; +} +.treeNode:hover{ + background-color: #ccebf8; +} +.isLookPattern{ + display: none; +} +.treeText{ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + display: inline-block; + width: 65px; +} + +.bigBox{ + width: 700px; + height: 40px; + position: absolute; + overflow: hidden; + right: 0; +} +.weatherBox{ + height: 40px; + width: 700px; + line-height: 40px; + position: absolute; + right: 0; + transition: right linear .5s; + .openbtn{ + font-size: 45px; + height: 45px; + width: 40px; + } + .name{ + font-size: 16px; + vertical-align: middle; + margin-left: 3px; + } + input{ + width: 140px; + height: 22px; + margin-left: 3px; + } + select{ + width: 96px; + height: 25px; + margin-left: 3px; + vertical-align: middle; + } +} +.open{ + right: 0px; +} +.close{ + right:-622px; +} +.bottomCss{ + position: absolute; + left: 232px; + right: 0px; + bottom: 0; + height: 158px; + width: auto; + z-index: 100; + background-color: white; + border: 1px solid #464646; + .dragDiv{ + width: 100%; + height: 3px; + position: absolute; + top: 0; + z-index: 1000; + cursor: n-resize; + } + .title{ + height: 35px; + background-color: #464646; + div{ + background-color: #464646; + float: left; + width: 80px; + color: white; + font-size: 13px; + padding-left: 5px; + cursor: pointer; + } + .detailsAndattentBtn{ + background-color: #595959; + } + } + .body{ + textarea{ + width: 100%; + border-radius: 0px; + } + } +} \ No newline at end of file diff --git a/src/app/ui/collection-tools/collection-tools.component.spec.ts b/src/app/ui/collection-tools/collection-tools.component.spec.ts new file mode 100644 index 0000000..acc7d5e --- /dev/null +++ b/src/app/ui/collection-tools/collection-tools.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CollectionToolsComponent } from './collection-tools.component'; + +describe('CollectionToolsComponent', () => { + let component: CollectionToolsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ CollectionToolsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CollectionToolsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/collection-tools/collection-tools.component.ts b/src/app/ui/collection-tools/collection-tools.component.ts new file mode 100644 index 0000000..6821e07 --- /dev/null +++ b/src/app/ui/collection-tools/collection-tools.component.ts @@ -0,0 +1,2153 @@ +import { Component, OnInit, Inject, ViewChild,ElementRef,Renderer2, ViewContainerRef } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import {leftFunctionalDomainComponent,editPlaneFigureComponent,editDisposalNodeComponent,addDisposalNodeComponent} from './leftFunctionalDomain' +import Swiper from 'swiper'; +import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {WorkingAreaComponent} from '../../working-area/working-area.component' +import {CanvasShareDataService,GameMode} from '../../canvas-share-data.service' //引入服务 +import {CacheTokenService} from '../../http-interceptors/cache-token.service' +import Viewer from 'viewerjs'; +import { saveOneDialog } from './save'; +@Component({ + selector: 'app-collection-tools', + templateUrl: './collection-tools.component.html', + styleUrls: ['./collection-tools.component.scss'] +}) +export class CollectionToolsComponent implements OnInit { + + @ViewChild('canvas',{static: true}) canvas:WorkingAreaComponent; //父组件中获得子组件的引用 + + constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,private element: ElementRef,public canvasData: CanvasShareDataService,public token: CacheTokenService) { } + // tree配置 + private _transformer = (node, level: number) => {//要给渲染节点传那些属性参数 + return { + expandable: !!node.children && node.children.length > 0, + name: node.name || node.Name, + level: level, + id: node.id || node.Id, + children:node.children, + isTemplate:node.isTemplate, + isNewElement:node.isNewElement, + isLook:node.isLook, + isLookPattern:node.isLookPattern || null + }; + } + treeControl = new FlatTreeControl(node => node.level, node => node.expandable); + + treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children); + dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); + hasChild = (_: number, node: any) => node.expandable; + + colors = ['#076eec','#4dd0e1','#00ee76','#ffff00','#eeb422', + '#FF6A6A','#ff0000','#ff6eb4','#00bfff','#54ff9f', + '#009688','#836fff','#ff8c00','#ee00ee','#ffa07a', + '#00C500','#00ffff','#6495ed','#ffdAb9','#AA00FF'] + selected = "1" //图标大小选择框 + + allBuildings //该单位所有建筑 + beforeOneCheckedBuilding:any = {name:"总平面图"}; //当前点击选择的建筑 + checkedBuildingIndex:number = -1 //当前点击选择的建筑index + isEditPat:boolean = true //当前是否是编辑模式 + + assetName:String//素材名称 + assetWidth:number//素材宽度 + assetHeight:number//素材高度 + sliderValue:number = 0//角度滑竿的值 + sliderValueThickness:number = 0//厚度滑竿的值 + isHighLight:boolean = false//是否高亮选择框 + PropertyInfos = [] //去除图片链接真正用于循环的内容 + imagesArrNum //素材属性图片数量上限 + imagesArr = [] //属性中的图片链接集合 + clickedIndex //点击图片时的索引值 + + //传入素材对象,设置右侧属性栏内容 + canvasAssetObj //传入的素材属性对象 + isImgNumCss = false //控制上传文件input显隐 + mySwiper:any //轮播图实例 + + gallery//viewerJs实例 + + rightIsShow = true; // 右侧楼层是否展示 + // 打开 右侧楼层 + openRight() { + this.rightIsShow = true; + } + + // 关闭 右侧楼层 + closeRight() { + console.log(123) + this.rightIsShow = false; + } + //设置属性框 + setAssetsProperty(obj){ + //初始化viewerJs实例 + setTimeout(() => { + obj.PropertyInfos.forEach(item => { + if(item.PropertyType == 4){ + this.gallery = new Viewer(document.getElementById('viewerjs'),{ + url: 'data-original' + }); + } + }) + }, 0); + + //从颜色中取出透明度 + let color = obj.Color + let strh = color.substring(color.length -2,color.length) + let opacity = Math.round(parseInt(strh,16)/255 * 100) + this.colorDivSliderValue = opacity + + this.isShowProperty = true + this.isShowAttribute = false + let _this = this + this.imagesArr = [] + this.imagesArrNum = "" + + this.canvasAssetObj = obj //将选中素材对象存到本地变量 + + this.assetName = obj.Name + this.assetWidth = obj.Width + this.assetHeight = obj.Height + this.sliderValue = obj.Angle + this.selectedcolor = obj.Color + this.PropertyInfos = obj.PropertyInfos + this.sliderValueThickness = obj.Thickness + this.PropertyInfos.forEach(item => { + if(item.PropertyType == 3){ //如果是图片链接类型 + this.imagesArr.push(item) + } + if(item.PropertyType == 4){//图片数值上线 + this.imagesArrNum = item.PropertyValue + } + }) + + //如果存在图片则加载轮播图 + if(this.imagesArr.length){ + setTimeout(() => { + this.mySwiper = new Swiper('.swiper-container',{ + loop: false, + // grabCursor: true, + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + on:{ + click: function(){ + _this.clickedIndex = this.clickedIndex + }, + } + }); + }, 0); + } + //判断此时图片数量是否达到上限 + if(this.imagesArr.length < this.imagesArrNum){//如果不超出 + this.isImgNumCss = true + }else{ + this.isImgNumCss = false + } + } + pattern:boolean = true//默认为基本信息编辑 + + //基本信息编辑模式 + baseInfo(){ + if (!this.pattern) { + this.pattern = true + this.mateDeleteCustomize() + this.getAllLibrary() + } + this.canvasData.gameMode = GameMode.BasicInformation + } + + //想定作业编辑模式 + wantWork(){ + if (this.pattern) { + this.pattern = false + this.getAllLibrary('plan') + this.getDisposalNode() + } + this.canvasData.gameMode = GameMode.Assignment + } + + //天气栏目 + weatherBtn = true + weatherBtnShow(){ + this.weatherBtn = !this.weatherBtn + } + weatherBtnHidden(){ + this.weatherBtn = !this.weatherBtn + } + + //底部切换按钮div + detailsAndattentBtn = true + //节点详情 + details(){ + this.detailsAndattentBtn = true + console.log(this.canvasData.selectPanelPointBaseData) + + } + //注意事项 + attent(){ + this.detailsAndattentBtn = false + console.log(this.canvasData.selectPanelPointBaseData) + } + bottomIsShow = true//底部隐藏按钮 + //关闭底部 + closedbottom(){ + this.bottomIsShow = false + } + //打开底部 + openedbottom(){ + this.bottomIsShow = true + } + //消防要素div边框高度调节 + firecategoriesDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyHeight = document.body.clientHeight //网页宽度 + let maxHeight = this.element.nativeElement.querySelector('#rightDiv').clientHeight - 35 //最大宽度 + if(bodyHeight - ev.clientY >= maxHeight){ + this.element.nativeElement.querySelector('#firecategories').style.height = maxHeight+ 'px' + this.element.nativeElement.querySelector('#property').style.height = 35+ 'px' + }else{ + this.element.nativeElement.querySelector('#firecategories').style.height = (bodyHeight - ev.clientY) + 'px' ; + this.element.nativeElement.querySelector('#property').style.height = (this.element.nativeElement.querySelector('#rightDiv').clientHeight - this.element.nativeElement.querySelector('#firecategories').clientHeight) + 'px' + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + //左侧div边框宽度调节 + leftDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyWidth = document.body.clientWidth //网页宽度 + let maxWidth = bodyWidth - 260 - this.element.nativeElement.querySelector('#rightDiv').clientWidth //最大宽度 + if(ev.clientX - 240 >= maxWidth){ + this.element.nativeElement.querySelector('#leftDiv').style.width = maxWidth + 'px' + }else{ + this.element.nativeElement.querySelector('#leftDiv').style.width = ev.clientX - 260 + 'px'; + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + //底部div高度调节 + bottomDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyHeight = document.body.clientHeight //网页高度 + let maxHeight = this.element.nativeElement.querySelector('#rightDiv').clientHeight //最大高度 + if(bodyHeight - ev.clientY >= maxHeight){ + this.element.nativeElement.querySelector('#bottomDiv').style.height = maxHeight + 'px' + }else{ + this.element.nativeElement.querySelector('#bottomDiv').style.height = (bodyHeight - ev.clientY) + 'px' ; + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + //右侧div边框宽度调节 + rightDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyWidth = document.body.clientWidth //网页宽度 + let maxWidth = bodyWidth - 240 - this.element.nativeElement.querySelector('#leftDiv').clientWidth //最大宽度 + if(bodyWidth - ev.clientX >= maxWidth){ + this.element.nativeElement.querySelector('#rightDiv').style.width = maxWidth + 'px' + }else{ + this.element.nativeElement.querySelector('#rightDiv').style.width = bodyWidth - ev.clientX + 'px'; + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + //放大图标 + iconScale(){ + let number = Number(this.selected) + this.canvas.setIconScale(number) + } + + //素材宽度输入框改变 + assetWidthIunput(){ + this.canvasAssetObj.Width = this.assetWidth + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材高度输入框改变 + assetHeightIunput(){ + this.canvasAssetObj.Height = this.assetHeight + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材角度输入框改变 + assetAngleIunput(){ + this.canvasAssetObj.Angle = this.sliderValue + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材厚度输入框改变 + assetThicknessIunput(){ + this.canvasAssetObj.Thickness = this.sliderValueThickness + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材是否高亮改变----->本地操作行为 + assetHighLightIunput(){ + + } + + //动态属性素材input框值改变 + assetInputChange(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //动态属性素材布尔值框改变radio + assetRadioChange(i,boolean){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = boolean + this.canvasData.isChange = true + } + + colorIndex//默认素材颜色 + selectedcolor//点击选择的颜色 + //选择素材颜色 + selectcolor(item,key){ + //在当前透明度基础上改变颜色 + this.selectedcolor = item + this.selectedcolor.substring(this.selectedcolor.length-2) + this.canvasAssetObj.Color = this.selectedcolor + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + //颜色选择滑竿的值 + colorDivSliderValue + colorDivSliderChange(){ + let colorOpacity = Math.round(255 * this.colorDivSliderValue * 0.01) + //根据滑竿值改变16进制颜色后两位 + function replacepos(text,start,stop,replacetext){ + let mystr = text.substring(0,stop-1)+replacetext+text.substring(stop+1); + return mystr; + } + this.selectedcolor = replacepos(this.selectedcolor,7,8,colorOpacity.toString(16)) + this.canvasAssetObj.Color = this.selectedcolor + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //查看图片详情 + lookImg(){ + const dialogRef = this.dialog.open(ViewDetails, {//调用open方法打开对话框并且携带参数过去 + data: {imagesArr:this.imagesArr,index:this.clickedIndex} + }); + dialogRef.afterClosed().subscribe(data=>{ }); + } + + //上传素材图片 + selectFile(e){ + let imgFile = e.target.files[0] || null //上传的文件 + this.startUploading(imgFile) + } + objectName:any //上传对象名 + startUploading (imgFile) { + let _this = this + let file = imgFile || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let shardSize = 5 * 1024 * 1024 //5MB一个分片 + let companyId = sessionStorage.getItem("companyId") + if (file && fileSize <= shardSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file",file) + this.http.post(`api/Objects/WebPlan2D/${companyId}`,formData).subscribe((data:any)=>{ + this.objectName = data.objectName + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传成功','确定',config) + + //在原始素材对象和需要循环图片的对象中分别push最新上传的图片 + let imgObj = { + "Tag": null, + "Order": 0, + "Enabled": false, + "Visible": false, + "Required": false, + "RuleName": null, + "RuleValue": null, + "PhysicalUnit": null, + "PropertyName": "图片", + "PropertyType": 3, + "PropertyValue": "/api/Objects/WebPlan2D/" + this.objectName + } + + this.imagesArr.push(imgObj) + this.canvasAssetObj.PropertyInfos.push(imgObj) + + setTimeout(() => { + this.mySwiper = new Swiper('.swiper-container',{ + loop: false, + // grabCursor: true, + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + on:{ + click: function(){ + _this.clickedIndex = this.clickedIndex + }, + } + }); + + this.mySwiper.slideTo(this.imagesArr.length - 1) + this.gallery.update() + }, 0); + + //判断上传素材属性图片是否超出数量 超出数量则隐藏input框 + if(this.imagesArr.length < this.imagesArrNum){//不超出input才会显示 + this.isImgNumCss = true + }else{ + this.isImgNumCss = false + } + + this.canvasData.isChange = true + }) + } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传图片文件不允许大于5mb','确定',config); + } + + } + + //不能上传图片提示 + imgNumBeyond(){ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('图片数量已达上限','确定',config); + } + + //删除素材属性图片 + deleteImg(){ + if(this.imagesArr.length == 0){ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('没有可删除的图片,请先上传','确定',config) + }else{ + // 在素材原始对象中将删除的图片去掉 + this.canvasAssetObj.PropertyInfos = [...this.canvasAssetObj.PropertyInfos.filter((item)=>{ + return item.PropertyValue != this.imagesArr[this.mySwiper.activeIndex].PropertyValue + })] + //在图片循环数组中将图片去掉 + this.imagesArr.splice(this.mySwiper.activeIndex, 1); + //更新swiper视图 + setTimeout(() => { + this.mySwiper.update(); + this.gallery.update() + }, 0); + + this.canvasData.isChange = true + } + } + + //动态属性方向select选择框 + direction(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + } + + //动态属性供给区域select选择框 + supplyArea(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + } + + //动态属性供给类型select选择框 + supplyType(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + } + + ngOnInit(): void { + + let that = this + window.setTimeout(()=>{ + document.getElementById("functionalDomainContent").oncontextmenu = function (event) { + that.canvas.cancelPaint() + that.selectImageIndex = -1 + event.preventDefault(); + }; + }) + + this.canvasData.getMessage().subscribe((message: any)=>{ + console.log(message);//send a message + }) + + } + + //右侧属性和消防要素切换 + isProperty = true + rightSwitch(type){ + if(type == 1){ + this.isProperty = true + }else{ + this.isProperty = false + } + } + //打开说话框 + isOpenTalk = false + openTalkDiv(){ + this.isOpenTalk = !this.isOpenTalk + } + + ngAfterViewInit(): void { + // 监听canvas组件选中素材事件 + this.canvas.on("select",obj=>{ + //选中素材属性注入函数 + this.setAssetsProperty(obj.assetData) + }) + // 监听canvas组件取消选中素材事件 + this.canvas.on("deselect",obj=>{ + this.isShowProperty = false + }) + // 监听canvas组件新增素材事件 + this.canvas.on("createIcon",obj=>{ + this.renovateTreeData(false) + }) + // 监听canvas组件删除素材事件 + this.canvas.on("deleteIcon",obj=>{ + this.renovateTreeData(false) + }) + } + + copyAssetData:any //存储用于复制的素材 + //复制素材 + copyAsset(){ + this.canvas.copy() + } + //粘贴素材 + pasteAsset(){ + let companyId = sessionStorage.getItem("companyId") + let buildingId = this.beforeOneCheckedBuilding.id + let floorId = this.selectingSitePlan.id + this.canvas.paste(companyId,buildingId,floorId) + } + + basicInfo:boolean = true //基本信息名称显隐 + wantToWork:boolean = false //想定作业名称显隐 + //点击基本信息名称 + basicInfoClick(){ + this.basicInfo = !this.basicInfo + this.canvas.setNameVisible(this.basicInfo,0) + } + + //点击想定作业名称 + wantToWorkClick(){ + this.wantToWork = !this.wantToWork + this.canvas.setNameVisible(this.basicInfo,1) + } + + isEditPattern:boolean = true //是否为编辑模式 + //进入编辑模式 + editpat(){ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('进入编辑模式','确定',config); + this.isEditPattern = true + } + + //进入查看模式 + lookpat(){ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('进入查看模式','确定',config); + this.isEditPattern = false + } + + //保存平面图 + saveNum :any = [] + saveSite(){ + console.log(this.beforeOneCheckedBuilding) + this.saveNum = [] + let SitePlanData = JSON.parse(JSON.stringify(this.canvasData.originaleveryStoreyData)); + SitePlanData.data = JSON.stringify(SitePlanData.data) + let CompanyData = JSON.parse(JSON.stringify(this.canvasData.originalcompanyBuildingData)); + CompanyData.data = JSON.stringify(CompanyData.data) + + let object = this.canvasData.originalcompanyBuildingData.data + let adjoinArr = [] //毗邻数组 + + if(this.pattern){//如果是基本信息编辑模式 + for (const key in object) { + if (object[key].Name == "毗邻") {//如果是相同楼层,则筛选出毗邻 + + object[key].PropertyInfos.forEach(element => { + if(element.PropertyName == "方向"){ + adjoinArr.push(element.PropertyValue) + } + }); + } + } + + if((new Set(adjoinArr)).size != adjoinArr.length){ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存失败,毗邻存在相同方向','确定',config); + return false + }else{ + //如果是单位 总平面图 + if(this.checkedBuildingIndex==-1){ + //保存平面图数据 + this.http.post("/api/SitePlanData",SitePlanData,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('平面图数据保存失败','确定',config); + }) + + //保存建筑数据 + this.http.post("/api/CompanyData",CompanyData,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('单位数据保存失败','确定',config); + }) + + //批量保存单位毗邻 + let CompanyAdjoins = this.canvasData.getCompanyAdjoinInfo() + this.http.post("/api/CompanyAdjoins/Batch",CompanyAdjoins,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('单位毗邻保存失败','确定',config); + }) + + //批量保存单位重点部位 + let CompanyImportantLocations = this.canvasData.getCompanyImportantLocations() + this.http.post("/api/CompanyImportantLocations/Batch",CompanyImportantLocations,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('单位重点部位保存失败','确定',config); + }) + + //批量保存单位消防设施素材 + let CompanyFacilityAssets = this.canvasData.getAllCompanyFacilityAssetInfo() + this.http.post("/api/CompanyFacilityAssets/Batch",CompanyFacilityAssets,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('单位消防设施素材保存失败','确定',config); + }) + + }else{ //如果是建筑 + + //建筑平面图数据 + this.http.post("/api/BuildingAreaData",SitePlanData,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('平面图数据保存失败','确定',config); + }) + + //建筑数据 + this.http.post("/api/BuildingData",CompanyData,{ + params:{ + companyId:this.params.companyId + } + }).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('单位数据保存失败','确定',config); + }) + + //批量保存建筑毗邻 + let buildingAdjoins = this.canvasData.getBuildingAdjoinInfo() + this.http.post(`/api/BuildingAdjoins/Batch?companyId=${this.params.companyId}&buildingId=${this.canvasData.selectStorey.buildingId}`,buildingAdjoins).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('建筑毗邻保存失败','确定',config); + }) + + //批量保存建筑重点部位 + let buildingImportantLocations = this.canvasData.getBuildingImportantLocations() + this.http.post(`/api/BuildingImportantLocations/Batch?companyId=${this.params.companyId}&buildingId=${this.canvasData.selectStorey.buildingId}`,buildingImportantLocations).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('建筑重点部位保存失败','确定',config); + }) + + //批量保存建筑消防设施素材 + let buildingFacilityAssets = this.canvasData.getAllBuildingFacilityAssetInfo() + this.http.post(`/api/BuildingFacilityAssets/Batch?companyId=${this.params.companyId}&buildingId=${this.canvasData.selectStorey.buildingId}`,buildingFacilityAssets).subscribe(data => { + this.saveNum.push("1") + if(this.saveNum.length == 5){ + this.canvasData.isChange = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + } + },err=>{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.canvasData.isChange = true + this.snackBar.open('建筑消防设施素材保存失败','确定',config); + }) + + } + } + }else{//如果是想定作业编辑模式 + const dialogRef = this.dialog.open(saveOneDialog, { + data: {allDisposalNode: this.canvasData.allDisposalNode, + selectedBuildingData:this.beforeOneCheckedBuilding, + selectedSiteData:this.selectingSitePlan, + siteOrbuilding:this.checkedBuildingIndex, + disasterId: this.allFirePlan[0].id || '' + } + }); + + dialogRef.afterClosed().subscribe(result => { + console.log('The dialog was closed'); + }); + } + } + + //获得所有的建筑物 + getAllBuildings(){ + this.http.get("/api/Buildings",{ + params:{ + companyId : this.params.companyId + } + }).subscribe(data=>{ + this.allBuildings = data + }) + } + + //拖拽tree + drop(e){ + console.log(1111,e) + } + drop2(e){ + console.log(222,e) + } + + //创建建筑 + createBuilding(){ + let data = { + allBuildings:this.allBuildings, + companyId :this.params.companyId + } + let dialogRef = this.dialog.open(CreateBuilding,{data}); + dialogRef.afterClosed().subscribe(data=>{ + if (data == "创建成功") { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('创建成功','确定',config); + this.getAllBuildings() + }else if (data == "创建失败") { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('创建失败','确定',config); + } + }); + } + + //选择建筑 + checkedBuilding(item,index){ + if (this.checkedBuildingIndex!=index) { + this.beforeOneCheckedBuilding = item + this.checkedBuildingIndex = index + if (index==-1) { //总平面图数据 + this.getSitePlan() + } else { //建筑楼层/区域数据 + this.getBuildingSitePlan(item) + } + } + } + + //编辑建筑 + editBuilding(e,item){ + e.stopPropagation(); + let dialogRef = this.dialog.open(EditBuilding,{data: {item:item}}); + dialogRef.afterClosed().subscribe(data=>{ + if (data == "修改成功") { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('修改成功','确定',config); + this.getAllBuildings() + }else if (data == "修改失败") { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('修改失败','确定',config); + } + }); + } + + //删除建筑 + deleteBuilding(e,item){ + e.stopPropagation(); + if(confirm("是否删除该建筑") == true){ + this.http.delete(`/api/Buildings/${item.id}`).subscribe(data=>{ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('删除成功','确定',config); + this.http.get("/api/Buildings",{ + params:{ + companyId :this.params.companyId + } + }).subscribe(data=>{ + this.allBuildings = data + this.beforeOneCheckedBuilding = {name:"总平面图"} + this.checkedBuildingIndex = -1 + this.getSitePlan() + }) + },err=>{ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('删除失败','确定',config); + this.getAllBuildings() + }) + } + } + + storeyData //将建筑素材和当前楼层素材合二为一 + + //处理 tree 数据结构 + handleTreeData (storeyData) { + this.canvas.setNameVisible(this.basicInfo,0) + + this.storeyData = storeyData + let data = this.allFireElements //所有消防要素模板 + let treeData = [] //tree型 处理完成后的数据 + data.forEach(element => { + element.isTemplate = true //添加模板标识 + element.isLook = true //添加是否可见标识 + element.name!='其他'? element.children = [] : null + + if(storeyData){ + for(let key in storeyData.data){ + storeyData.data[key].isLookPattern = true + if(element.id == storeyData.data[key].FireElementId){ + storeyData.data[key].isTemplate = false + storeyData.data[key].isLook = true + + element.isNewElement = true //该节点children是否存在新添加的真实素材 标识 + + //定义查看模式下能看到的元素 + element.isLookPattern = true + if(element.parentId){ + data.forEach(i => { + if(i.id == element.parentId){ + i.isLookPattern = true + } + }) + } + // + + element.children.push(storeyData.data[key]) + } + } + } + data.forEach(item => { if (item.parentId == element.id) {element.children.push(item)} }); + }); + data.forEach(element => { + if (!element.parentId) { treeData.push(element) } + }); + this.dataSource.data = treeData + this.treeControl.expandAll() + } + + //点击树节点 + clickTreeNode(node){ + if(this.canvasData.originalcompanyBuildingData.data[node.id]){ + this.setAssetsProperty(this.canvasData.originalcompanyBuildingData.data[node.id]) + }else if(this.canvasData.originaleveryStoreyData.data[node.id]){ + this.setAssetsProperty(this.canvasData.originaleveryStoreyData.data[node.id]) + } + + //canvas上的素材高亮 + let iconHighLightArr:any = [] + if(node.isTemplate){//如果是模板,则开始向下找 + node.children.forEach(item => { + if(item.isTemplate){//如果子节点依旧是模板,则继续开始向下找 + item.children.forEach(i => { + iconHighLightArr.push(i.Id) + }) + }else{ + iconHighLightArr.push(item.Id) + } + }) + }else{ + iconHighLightArr.push(node.id) + } + this.canvas.setHighlight(iconHighLightArr) + } + + //点击数节点的显示隐藏icon + clickLookItem(node){ + + //修改真实素材islook属性 + for(let key in this.storeyData.data){ + if(key == node.id){ + this.storeyData.data[key].isLook = !this.storeyData.data[key].isLook + } + } + + //所有消防要素模板变化islook值 + if(node.isTemplate){ + this.allFireElements.forEach(item=>{ + if(item.id == node.id || item.name == "其他"){ + item.isLook = !item.isLook + } + }) + } + + + //子节点跟随父节点的islook变化 +   if(node.children && node.children.length != 0){ +      node.children.forEach(item=>{ +        item.isLook = !node.isLook  +        if(item.children && item.children.length != 0){ +          item.children.forEach(i=>{ +            i.isLook =  !node.isLook  +          }) +        } +      }) +     } + + + const nodes = this.treeControl.dataNodes; + const expandNodes = []; + nodes.forEach((item) => { + if(item.expandable && this.treeControl.isExpanded(item)){ + expandNodes.push(item.id); + } + }); + + + this.dataSource.data = [...this.dataSource.data] + let newNodes = this.treeControl.dataNodes; + newNodes = newNodes.filter(n => { + return expandNodes.indexOf(n.id) >= 0; + }); + newNodes.forEach(item => { + this.treeControl.expand(item); + }); + + //canvas上的素材显隐 + let iconVisibleArr:any = [] + if(node.isTemplate){//如果是模板,则开始向下找 + node.children.forEach(item => { + if(item.isTemplate){//如果子节点依旧是模板,则继续开始向下找 + item.children.forEach(i => { + iconVisibleArr.push(i.Id) + }) + }else{ + iconVisibleArr.push(item.Id) + } + }) + }else{ + iconVisibleArr.push(node.id) + } + this.canvas.setIconVisible(iconVisibleArr,!node.isLook) + } + + //计算 可视区域内宽度, 是否缩放背景图 + backGroundScale () { + let that = this + let dadWidth = document.querySelector('.canvas').clientWidth + let dadHeight = document.querySelector('.canvas').clientHeight + let img = new Image() + img.src = this.selectingSitePlan.imageUrl; + img.onload = function(){ + if (img.height > dadHeight && img.width > dadWidth) { + let width = dadWidth/img.width + let height = dadHeight/img.height + that.canvas.setBackgroundScale((width>height? height : width)-0.005) + return + } else if (img.height > dadHeight) { + that.canvas.setBackgroundScale((dadHeight/img.height)-0.005) + return + } else if (img.width > dadWidth) { + that.canvas.setBackgroundScale((dadWidth/img.width)-0.005) + return + } + }; + } + + //封装 刷新 tree 数据 + renovateTreeData (isRefresh:boolean = true) { + this.allFireElements[this.allFireElements.length-1].children = [] + isRefresh? this.canvas.refresh() : null + isRefresh? this.canvasData.isChange = false : null //服务中 数据是否改动 改为false + isRefresh? this.isShowProperty = true : null + isRefresh? this.isShowAttribute = true : null + isRefresh && this.selectingSitePlan.imageUrl? this.backGroundScale() : null + !this.pattern? this.mateFireForce() : null + + let beforeOneId = this.selectingSitePlan.id || '' //当前 选中 平面图 楼层/区域 id + let companyBuildingData = JSON.parse(JSON.stringify( this.canvasData.originalcompanyBuildingData || {} )) // 当前 单位/建筑 数据 + let storeyData = JSON.parse(JSON.stringify( this.canvasData.originaleveryStoreyData || {} )) //当前 楼层 数据 + + for(let key in companyBuildingData.data){ + if (companyBuildingData.data[key].FloorId === beforeOneId) { //处理 单位/建筑 数据是否归于当前楼层下 + storeyData.data[key] = companyBuildingData.data[key] + } + } + for(let key in storeyData.data){ //筛选数据 没有匹配全部放入到 其他 数组 + let noMatch = this.allFireElements.find( every=> every.id===storeyData.data[key].FireElementId ) + if (!noMatch) { + this.allFireElements[this.allFireElements.length-1].children.push(storeyData.data[key]) + } + } + this.handleTreeData(storeyData) //处理tree数据结构 + } + + + + //陈鹏飞↓↓↓ + //陈鹏飞↓↓↓ + //陈鹏飞↓↓↓ + params = {companyId: sessionStorage.getItem('companyId')} + allFireElements:any = []; //当前 单位/建筑 下的消防要素 + + isShowAttribute:boolean = true; //属性栏 是否显示 默认数据 + isShowProperty:boolean = false //属性栏 是否有东西 + + toggleExpandPanel:boolean = false; //左侧可展开面板展开或关闭 + toggleExpandPanelRight:boolean = false; //右侧可展开面板展开或关闭 + togglePlane:boolean = true; //可展开面板平面图 显隐 + toggleMaterialBank:boolean = false; //可展开面板素材库 显隐 + toggleHandlePlans:boolean = true; //可展开面板处置预案 显隐 + //可展开面板展开或关闭 + toggle () { + this.toggleExpandPanel = !this.toggleExpandPanel + } + //可展开面板展开或关闭 + toggle2 () { + this.toggleExpandPanelRight = !this.toggleExpandPanelRight + } + //可展开面板 平面图 展开或关闭 + togglePlanarGraph () { + this.togglePlane = !this.togglePlane + } + //可展开面板 素材库 展开或关闭 + toggleMaterial () { + this.toggleMaterialBank = !this.toggleMaterialBank + } + //可展开面板 处置预案 展开或关闭 + toggleHandlePlan () { + this.toggleHandlePlans = !this.toggleHandlePlans + } + + sitePlanData:any = []; //总平面图 楼层/区域 数据 + selectingSitePlan:any; //选中的 平面图 楼层/区域 + selectSitePlanIndex:number; //选中的 平面图 楼层/区域 index + + //获取总平面图 + getSitePlan () { + let fireData = this.getFireElements(sessionStorage.getItem('buildingTypeId')) //获取单位下 消防要素 + let planData = this.getSitePlanCompanyData() //获取 单位 数据 + this.http.get('/api/SitePlans',{params:this.params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[0] || {} + this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据 + this.selectSitePlanIndex = 0 + + Promise.all([fireData,planData]).then((res)=>{ + this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据 + }) + + }) + } + + //获取建筑 楼层/区域 + getBuildingSitePlan (item) { + let params = { + buildingId: item.id + } + let fireData = this.getFireElements(item.buildingTypes[0].id || '') //获取建筑下 消防要素 + let planData = this.getBuildingData(params) //获取 建筑 数据 + this.http.get('/api/BuildingAreas',{params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[0] || {} + this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据 + this.selectSitePlanIndex = 0 + + Promise.all([fireData,planData]).then((res)=>{ + this.getBuildingStorey(this.selectingSitePlan) //获取 建筑 楼层数据 + }) + + }) + } + + //根据单位类型获得所有的消防要素 + getFireElements (e) { + let params = {ids:e} + return new Promise ((resolve,reject)=>{ + this.http.get('/api/Companies/FireElements',{params}).subscribe((data:any)=>{ + this.allFireElements = data //所有消防要素 + let other = { + children: [], + computed: true, + id: '', + name: '其他', + order: 999, + parentId: null, + tag: "INPUT", + isLookPattern : true + } + this.allFireElements.push(other) + resolve('success') + }) + }) + } + + //获取 单位 数据 + getSitePlanCompanyData () { + return new Promise ((resolve,reject)=>{ + this.http.get('/api/CompanyData',{params:this.params}).subscribe((data:any)=>{ + this.canvasData.originalcompanyBuildingData = data || {} // 单位原数据 + this.canvasData.originalcompanyBuildingData.data? this.canvasData.originalcompanyBuildingData.data = JSON.parse(this.canvasData.originalcompanyBuildingData.data) : this.canvasData.originalcompanyBuildingData.data = {} + this.canvasData.originalcompanyBuildingData.version? null : this.canvasData.originalcompanyBuildingData.version = "2.0" + this.canvasData.originalcompanyBuildingData.companyId? null : this.canvasData.originalcompanyBuildingData.companyId = sessionStorage.getItem('companyId') + resolve('success') + }) + }) + } + + //获取 平面图 楼层数据 + getSitePlanStorey (e) { + let params = {sitePlanId: e.id} + this.http.get(`/api/SitePlanData`,{params}).subscribe((data:any)=>{ + this.canvasData.originaleveryStoreyData = data || {} // 楼层原数据 + this.canvasData.originaleveryStoreyData.data? this.canvasData.originaleveryStoreyData.data = JSON.parse(this.canvasData.originaleveryStoreyData.data) : this.canvasData.originaleveryStoreyData.data = {} + this.canvasData.originaleveryStoreyData.version? null : this.canvasData.originaleveryStoreyData.version = "2.0" + this.canvasData.originaleveryStoreyData.sitePlanId? null : this.canvasData.originaleveryStoreyData.sitePlanId = e.id || null + this.renovateTreeData() + }) + } + + //获取 建筑 数据 + getBuildingData (e) { + return new Promise ((resolve,reject)=>{ + this.http.get(`/api/BuildingData`,{params:e}).subscribe((data:any)=>{ + this.canvasData.originalcompanyBuildingData = data || {} // 建筑原数据 + this.canvasData.originalcompanyBuildingData.data? this.canvasData.originalcompanyBuildingData.data = JSON.parse(this.canvasData.originalcompanyBuildingData.data) : this.canvasData.originalcompanyBuildingData.data = {} + this.canvasData.originalcompanyBuildingData.version? null : this.canvasData.originalcompanyBuildingData.version = "2.0" + this.canvasData.originalcompanyBuildingData.buildingId? null : this.canvasData.originalcompanyBuildingData.buildingId = e.buildingId + resolve('success') + }) + }) + } + + //获取 建筑 楼层数据 + getBuildingStorey (e) { + let params = {buildingAreaId: e.id} + this.http.get(`/api/BuildingAreaData`,{params}).subscribe((data:any)=>{ + this.canvasData.originaleveryStoreyData = data || {} // 楼层原数据 + this.canvasData.originaleveryStoreyData.data? this.canvasData.originaleveryStoreyData.data = JSON.parse(this.canvasData.originaleveryStoreyData.data) : this.canvasData.originaleveryStoreyData.data = {} + this.canvasData.originaleveryStoreyData.version? null : this.canvasData.originaleveryStoreyData.version = "2.0" + this.canvasData.originaleveryStoreyData.buildingAreaId? null : this.canvasData.originaleveryStoreyData.buildingAreaId = e.id || null + this.renovateTreeData() + }) + } + + //点击选中 平面图 楼层/区域 时 + selectSitePlan (item,index) { + if (this.selectSitePlanIndex != index) { + + if (this.canvasData.isChange) { //true 数据被改动 + let isTrue = confirm('是否保存当前编辑数据') + if (isTrue) { //先保存数据 在切换 + let isSuccess = this.saveSite()//true的时候 先保存数据 + if (isSuccess != false) { + this.selectingSitePlan = item + this.selectSitePlanIndex = index + this.canvasData.selectStorey = item //服务中 存一份数据 + if (this.checkedBuildingIndex==-1) { //总平面图时 + this.getSitePlanStorey(item) //获取 平面图 楼层数据 + } else { //楼层/区域时 + this.getBuildingStorey(item) //获取 建筑 楼层数据 + } + } + } else { //不保存数据 直接切换 + this.selectingSitePlan = item + this.selectSitePlanIndex = index + this.canvasData.selectStorey = item //服务中 存一份数据 + if (this.checkedBuildingIndex==-1) { //总平面图时 + this.getSitePlanStorey(item) //获取 平面图 楼层数据 + } else { //楼层/区域时 + this.getBuildingStorey(item) //获取 建筑 楼层数据 + } + } + + } else { //false 数据没被改动 + this.selectingSitePlan = item + this.selectSitePlanIndex = index + this.canvasData.selectStorey = item //服务中 存一份数据 + if (this.checkedBuildingIndex==-1) { //总平面图时 + this.getSitePlanStorey(item) //获取 平面图 楼层数据 + } else { //楼层/区域时 + this.getBuildingStorey(item) //获取 建筑 楼层数据 + } + } //if + + } + } + + //新增平面图 楼层/区域 + foundPanel (e) { + e.stopPropagation() + let data = { + isBuilding: this.checkedBuildingIndex==-1? false:true, + Panel: this.beforeOneCheckedBuilding, + order: this.sitePlanData.length? this.sitePlanData[this.sitePlanData.length-1].order+1:0, + } + let dialogRef = this.dialog.open(leftFunctionalDomainComponent,{data}); + dialogRef.afterClosed().subscribe(data=>{ + if (data =='总平面图') { + this.renovateSitePlan() + } else if (data =='建筑') { + this.renovateBuilding() + } + }) + } + + //编辑平面图 楼层/区域 + editPlaneData (e) { + let data = { + isBuilding: this.checkedBuildingIndex==-1? false:true, + Panel: this.beforeOneCheckedBuilding, + buildingData: e, + } + let dialogRef = this.dialog.open(editPlaneFigureComponent,{data}); + dialogRef.afterClosed().subscribe(data=>{ + if (data =='总平面图') { + this.renovateSitePlan() + } else if (data =='建筑') { + this.renovateBuilding() + } + }) + } + + //平面图 楼层/区域 上移 + moveUp (item,index) { + if (index != 0) { + let replaceIndex = this.sitePlanData[index].order + this.sitePlanData[index].order = this.sitePlanData[index-1].order + this.sitePlanData[index-1].order = replaceIndex + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.put(`/api/SitePlans/${this.sitePlanData[index-1].id}`,this.sitePlanData[index-1]).subscribe(data=>{ + this.http.put(`/api/SitePlans/${this.sitePlanData[index].id}`,this.sitePlanData[index]).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex-1 + this.renovateSitePlan() + }) + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index-1].id}`,this.sitePlanData[index-1],{params:this.params}).subscribe(data=>{ + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index].id}`,this.sitePlanData[index],{params:this.params}).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex-1 + this.renovateBuilding() + }) + }) + } + + } //if index + } + + //平面图 楼层/区域 下移 + moveDown (item,index) { + if (index != this.sitePlanData.length-1) { + let replaceIndex = this.sitePlanData[index].order + this.sitePlanData[index].order = this.sitePlanData[index+1].order + this.sitePlanData[index+1].order = replaceIndex + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.put(`/api/SitePlans/${this.sitePlanData[index+1].id}`,this.sitePlanData[index+1]).subscribe(data=>{ + this.http.put(`/api/SitePlans/${this.sitePlanData[index].id}`,this.sitePlanData[index]).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex+1 + this.renovateSitePlan() + }) + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index+1].id}`,this.sitePlanData[index+1],{params:this.params}).subscribe(data=>{ + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index].id}`,this.sitePlanData[index],{params:this.params}).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex+1 + this.renovateBuilding() + }) + }) + } + + } //if index + } + + //旋转底图 + revolveImg (item) { + item.imageAngle==270? item.imageAngle = 0 : item.imageAngle = item.imageAngle+90 + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.put(`/api/SitePlans/${item.id}`,item).subscribe(data=>{ + let isSuccess = this.renovateSitePlan() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + }) + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${item.id}`,item,{params:this.params}).subscribe(data=>{ + let isSuccess = this.renovateBuilding() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + }) + }) + } + + } + + //删除 平面图 楼层/区域 + deletePlaneData (item) { + let isDelete = confirm('您确定要删除吗') + if (isDelete) { + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.delete(`/api/SitePlans/${item.id}`).subscribe(data=>{ + this.deleteShareData(item,-1) + }) + } else { //楼层/区域 + this.http.delete(`/api/BuildingAreas/${item.id}`).subscribe(data=>{ + this.deleteShareData(item,1) + }) + } + } + } + + //删除当前 单位/建筑的 共享数据中 已删除data + deleteShareData (e,isCompany) { + this.sitePlanData.forEach((element,index) => { + if (element.id===e.id) { + this.sitePlanData.splice(index,1) + return + } + }); + let data = this.canvasData.originalcompanyBuildingData; + for(let key in data.data){ + if (data.data[key].FloorId === e.id) { //处理 单位/建筑 数据是否归于当前楼层下 + delete data.data[key] + } + } + let newData = JSON.parse(JSON.stringify(this.canvasData.originalcompanyBuildingData)); + newData.data = JSON.stringify(newData.data) // 转换JSON 数据格式 + this.selectingSitePlan = this.sitePlanData[0] || {} + this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据 + this.selectSitePlanIndex = 0 + if (isCompany===-1) { + this.http.post("/api/CompanyData",newData).subscribe(data => {}) + this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据 + } else { + this.http.post("/api/BuildingData",newData,{params:this.params}).subscribe(data => {}) + this.getBuildingStorey(this.selectingSitePlan) //获取 建筑 楼层数据 + } + } + + //复制图层 平面图 楼层/区域 + duplicateLayer (item) { + if (this.checkedBuildingIndex==-1) { //总平面图 + item.id = "" + item.modifiedTime = new Date() + item.name = item.name + '(副本)' + item.order = this.sitePlanData[this.sitePlanData.length-1].order+1 + this.http.post('/api/SitePlans',item).subscribe((data:any)=>{ + let newData = { + version: this.canvasData.originaleveryStoreyData.version || "2.0", + id: "", + data: JSON.stringify( JSON.parse(JSON.stringify(this.canvasData.originaleveryStoreyData.data)) ) || null, + sitePlanId: data.id + } + this.http.post('/api/SitePlanData',newData,{params:this.params}).subscribe(data=>{ + this.renovateSitePlan() + }) + + }) + } else { //楼层/区域 + item.id = "" + item.modifiedTime = new Date() + item.name = item.name + '(副本)' + item.order = this.sitePlanData[this.sitePlanData.length-1].order+1 + this.http.post('/api/BuildingAreas',item,{params:this.params}).subscribe((data:any)=>{ + let newData = { + version: this.canvasData.originaleveryStoreyData.version || "2.0", + id: "", + data: JSON.stringify( JSON.parse(JSON.stringify(this.canvasData.originaleveryStoreyData.data)) ) || null, + buildingAreaId: data.id + } + this.http.post('/api/BuildingAreaData',newData,{params:this.params}).subscribe(data=>{ + this.renovateBuilding() + }) + + }) + } + } + + //平面图 楼层/区域 替换底图 + replaceBaseMap (e,item) { + e.stopPropagation(); + let file = e.target.files[0] || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let maxSize = 5 * 1024 * 1024 //5MB一个分片 + + if (file && fileSize<=maxSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file",file) + this.http.post(`/api/Objects/WebPlan2D/${sessionStorage.getItem('companyId')}`,formData).subscribe((data:any)=>{ + this.renovateBaseMap(data.objectName,item) + }) + } else { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传底图需小于5MB','确定',config); + } + } + + //封装 替换底图 function + renovateBaseMap (e,item) { + item.imageUrl = '/api/Objects/WebPlan2D/' + e + if (this.checkedBuildingIndex ==-1) { //总平面图 + this.http.put(`/api/SitePlans/${item.id}`,item).subscribe(data=>{ + let isSuccess = this.renovateSitePlan() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + this.backGroundScale() + }) + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传底图成功','确定',config); + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${item.id}`,item,{params:this.params}).subscribe(data=>{ + let isSuccess = this.renovateBuilding() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + this.backGroundScale() + }) + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传底图成功','确定',config); + }) + } + } + + //封装 刷新总平面图 数据 + renovateSitePlan () { + return new Promise ((resolve,reject)=>{ + this.http.get('/api/SitePlans',{params:this.params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[this.selectSitePlanIndex] + this.canvasData.selectStorey = this.sitePlanData[this.selectSitePlanIndex] //服务中 存一份数据 + this.canvasData.originaleveryStoreyData.sitePlanId? null : this.canvasData.originaleveryStoreyData.sitePlanId = this.selectingSitePlan.id || null + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('数据更新成功','确定',config); + resolve('success') + }) + }) + } + + //封装 刷新 楼层/区域 数据 + renovateBuilding () { + let params = { + buildingId: this.beforeOneCheckedBuilding.id + } + return new Promise ((resolve,reject)=>{ + this.http.get('/api/BuildingAreas',{params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[this.selectSitePlanIndex] + this.canvasData.selectStorey = this.sitePlanData[this.selectSitePlanIndex] //服务中 存一份数据 + this.canvasData.originaleveryStoreyData.buildingAreaId? null : this.canvasData.originaleveryStoreyData.buildingAreaId = this.selectingSitePlan.id || null + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('数据更新成功','确定',config); + resolve('success') + }) + }) + } + + allLibrary:any = []; //所有素材库 + 素材 + selectLibrary:any; //选中的素材库 + selectImage:any; //选中的素材库图片 + selectImageIndex:number; //选中的素材库图片index + + //获取素材库 + getAllLibrary (type:string='input') { + this.http.get(`/api/AssetLibraries?tag=${type}`).subscribe((data:any)=>{ + data.forEach(element => { + element.images = [] + }); + this.allLibrary = data + this.selectImageIndex = -1 + this.canvas.cancelPaint() + }) + } + + //素材库展开面板展开时 + opened (e) { + if (!e.images.length) { //当前素材库没加载素材时 + this.http.get(`/api/Assets?libraryId=${e.id}`).subscribe((data:any)=>{ + e.images = data + }) + } + } + + //点击选中素材库图片时 + selectImg (item,items,index) { + this.selectLibrary = item.name + this.selectImage = items + this.selectImageIndex = index + this.canvasData.selectTemplateData = items + this.canvas.beginPaint() + } + + + + //处置预案 + // tree配置 + private transformer = (node, level: number) => {//要给渲染节点传那些属性参数 + return { + expandable: !!node.children && node.children.length > 0, + name: node.name || node.Name, + level: level, + id: node.id || node.Id, + children: node.children, + airTemperature: node.airTemperature, + buildingAreaId: node.buildingAreaId, + buildingId: node.buildingId, + companyId: node.companyId, + description: node.description, + disasterId: node.disasterId, + imageNames: node.imageNames, + imageUrls: node.imageUrls, + notes: node.notes, + order: node.order, + parentId: node.parentId, + planComponentId: node.planComponentId, + sitePlanId: node.sitePlanId, + weather: node.weather, + windDirection: node.windDirection, + windScale: node.windScale, + }; + } + fireTreeControl = new FlatTreeControl(node => node.level, node => node.expandable); + fireTreeFlattener = new MatTreeFlattener(this.transformer, node => node.level, node => node.expandable, node => node.children); + fireTreeData = new MatTreeFlatDataSource(this.fireTreeControl, this.fireTreeFlattener); + + allFirePlan:any = []; //所有灾情 + selectDisposalNode:string = ''; //当前 点击的 节点 + + //获取所有灾情 + getAllFirePlan () { + let params = {componentId: sessionStorage.getItem('planId')} + this.http.get('/api/Disasters',{params:params}).subscribe((data:any)=>{ + this.allFirePlan = data + this.getDisposalNode() + if (!data.length) { + let msg = { + name: '灾情', + modifiedTime: new Date(), + planComponentId: sessionStorage.getItem('planId') + } + this.http.post('/api/Disasters',msg).subscribe(data=>{ this.allFirePlan.push(data) }) + } //if + }) + } + + //获取所有处置节点 + getDisposalNode () { + this.selectDisposalNode = '' + let params = {disasterId: this.allFirePlan[0].id || ''} + this.http.get('/api/DisasterData/Markers',{params:params}).subscribe(data=>{ //灾情标签信息 + this.canvasData.allNodeMarkers = data + this.mateFireForce() + }) + this.http.get('/api/DisposalNodes',{params:params}).subscribe(data=>{ //处置节点 + this.canvasData.allDisposalNode = data + this.handleHybridTree() + }) + } + + //处理 节点 Tree数据 + handleHybridTree () { + let treeData = [] + let data = JSON.parse(JSON.stringify( this.canvasData.allDisposalNode || [] )) + data.forEach(element => { + element.children = [] + data.forEach(item=>{ + item.parentId === element.id? element.children.push(item) : null + }) + }); + data.forEach(element=>{ + !element.parentId? treeData.push(element) : null + }) + this.fireTreeData.data = treeData + this.fireTreeControl.expandAll() + } + + //刷新 treeData 保存已展开节点 + refurbishTreeData () { + let params = {disasterId: this.allFirePlan[0].id || ''} + this.http.get('/api/DisposalNodes',{params:params}).subscribe(nodeData=>{ //处置节点 + this.canvasData.allDisposalNode = nodeData + let nodes = this.fireTreeControl.dataNodes; + let treeData = [] + let expandNodes = []; + let data = JSON.parse(JSON.stringify( this.canvasData.allDisposalNode || [] )) + data.forEach(element => { + element.children = [] + data.forEach(item=>{ + item.parentId === element.id? element.children.push(item) : null + }) + }); + data.forEach(element=>{ + !element.parentId? treeData.push(element) : null + }) + + //保存 已展开节点数据 + nodes.forEach((item) => { + if(item.expandable && this.fireTreeControl.isExpanded(item)){ + expandNodes.push(item.id); + } + }); + this.fireTreeData.data = treeData; + let newNodes = this.fireTreeControl.dataNodes; + newNodes = newNodes.filter(n => { + return expandNodes.indexOf(n.id) >= 0; + }); + newNodes.forEach(item => { + this.fireTreeControl.expand(item); + }); + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('数据更新成功','确定',config); + }) + } + + sitePlanIcon = {fire:0,force:0} // 总平面图 火源/力量 图标 是否展示 + sitePlanBuildingID:string = ''; //选择 数据节点的 建筑id + storeyID:string = ''; //选择 数据节点的 楼层id + + //刷新 建筑楼层 匹配 火源/力量 图标 + mateFireForce () { + let data = this.canvasData.allNodeMarkers.markers + for(let key in data){ //遍历 火/力量 图标 + this.sitePlanData.forEach(element => { //楼层 + if (element.id==key) { // 相匹配时 + data[key].fireCount != 0? element.fire=1 : element.fire=0 + data[key].forceCount != 0? element.force=1 : element.force=0 + } + }); + this.allBuildings.forEach(element => { //建筑 + if (element.id==key) { // 相匹配时 + data[key].fireCount != 0? element.fire=1 : element.fire=0 + data[key].forceCount != 0? element.force=1 : element.force=0 + } + }); + if (this.params.companyId==key) { //总平面图时 + data[key].fireCount != 0? this.sitePlanIcon.fire=1 : this.sitePlanIcon.fire=0 + data[key].forceCount != 0? this.sitePlanIcon.force=1 : this.sitePlanIcon.force=0 + } + } + } + + // 切换 基本信息时 刷新 删除 建筑楼层 自定义属性 + mateDeleteCustomize () { + this.sitePlanBuildingID = '' + this.storeyID = '' + this.sitePlanIcon = {fire:0,force:0} + this.sitePlanData.forEach(element => { //楼层 + delete element.fire + delete element.force + }); + this.allBuildings.forEach(element => { //建筑 + delete element.fire + delete element.force + }); + } + + //计算差异 + countValue (e) { + e.stopPropagation() + let params = {disasterId: this.allFirePlan[0].id || ''} + this.http.get('/api/DisasterData/Diffs',{params:params}).subscribe(data=>{ + this.canvasData.allNodeMarkers = data + this.sitePlanBuildingID = '' + this.storeyID = '' + this.mateFireForce() + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('计算差异完成','确定',config); + }) + } + + //新建 处置预案 节点 + addPanelPoint (e,item,treeData) { + e.stopPropagation() + let order + if (item) { + item.children.length? order = item.children[item.children.length-1].order+1 : order = 0 + } else { + treeData && treeData._data._value.length? order = treeData._data._value[treeData._data._value.length-1].order+1 : order = 0 + } + let data = { + name: '', + level: item? 1 : 0, + order: order, + description: '', + disasterId: this.allFirePlan[0].id || '', + parentId: item? item.id : null, + planComponentId: sessionStorage.getItem('planId') || '', + } + let dialogRef = this.dialog.open(addDisposalNodeComponent,{data}); + dialogRef.afterClosed().subscribe(data=>{ + if (data) { this.refurbishTreeData() } + }) + } + + //编辑 处置预案 节点 + editPanelPoint (e,item) { + e.stopPropagation() + let data = item + let dialogRef = this.dialog.open(editDisposalNodeComponent,{data}); + dialogRef.afterClosed().subscribe(data=>{ + if (data) { + this.canvasData.allDisposalNode.forEach(element => { element.id === item.id? element.name=item.name : null }); + } + }) + } + + //复制 处置预案 节点 + copyPanelPoint (e,item,treeData) { + e.stopPropagation() + if (confirm(`确定要复制 ${item.name} ?`)) { + let params = {id: item.id} + let order + if (item.level==0) { + treeData._data._value.length? order = treeData._data._value[treeData._data._value.length-1].order+1 : order = 0 + } else { + let index = treeData._data._value.findIndex(items=>{return items.id===item.parentId}) + treeData._data._value[index] && treeData._data._value[index].children.length? order = treeData._data._value[index].children[treeData._data._value[index].children.length-1].order+1 : order = 0 + } + let data = { + name: item.name + '(副本)', + level: item.level, + order: order, + description: '', + disasterId: item.disasterId || '', + parentId: item.parentId || null, + planComponentId: item.planComponentId || '', + } + this.http.post('/api/DisposalNodes/Clone',data,{params:params}).subscribe(data=>{ + this.refurbishTreeData() + }) + } //isTrue + } + + //删除 处置预案 节点 + deletePanelPoint (e,item) { + e.stopPropagation() + if (confirm(`确定要删除 ${item.name} ?`)) { + this.http.delete(`/api/DisposalNodes/${item.id}`).subscribe(data=>{ + this.refurbishTreeData() + }) + } + } + + //点击 处置Tree节点 + selectanelPoint (e) { + if (!e.buildingAreaId && !e.sitePlanId) { //当前节点 不是 数据节点 时 + let msg = this.canvasData.findDisposalNode(e.id) + this.canvasData.selectPanelPointBaseData = msg + this.selectDisposalNode == msg.id? this.selectDisposalNode = '' : this.selectDisposalNode = msg.id //选中 节点 + + } else if (e.buildingAreaId || e.sitePlanId) { //当前节点 是 数据节点 时 + let msg = this.canvasData.findDisposalNode(e.parentId) + this.canvasData.selectPanelPointBaseData = msg + + e.sitePlanId? this.sitePlanBuildingID = this.params.companyId : this.sitePlanBuildingID = e.buildingId //火源/力量图标高亮 + e.sitePlanId? this.storeyID = e.sitePlanId : this.storeyID = e.buildingAreaId //火源/力量图标高亮 + this.selectDisposalNode = e.parentId //选中 节点 + if (this.canvasData.selectPanelPoint.disposalNodeId != e.id) { //选择节点 不是当前节点时 + let params = {nodeId: e.id} + let parameter = { //查询 节点 对应 建筑/楼层 index,id + buildingIndex: e.sitePlanId? -1 : this.allBuildings.findIndex(item=>{ return item.id===e.buildingId }), //总平面图/建筑 index + storeyId: e.sitePlanId? e.sitePlanId : e.buildingAreaId, //楼层id + } + this.http.get('/api/DisposalNodeData',{params:params}).subscribe(data=>{ + this.canvasData.selectPanelPoint = data //选择 当前 节点 + this.canvasData.selectPanelPoint.data = JSON.parse(this.canvasData.selectPanelPoint.data || {}) + this.seekPanelPoint(parameter) + }) + } //if + + } //else if + } + + //查找 数据节点 对应 建筑/楼层 + seekPanelPoint (paramsData) { + this.checkedBuildingIndex = paramsData.buildingIndex + if (paramsData.buildingIndex ==-1) { //总平面图时 + this.beforeOneCheckedBuilding={name:"总平面图"} + let fireData = this.getFireElements(sessionStorage.getItem('buildingTypeId')) //获取单位下 消防要素 + let planData = this.getSitePlanCompanyData() //获取 单位 数据 + this.http.get('/api/SitePlans',{params:this.params}).subscribe(data=>{ + this.sitePlanData = data + let index = this.sitePlanData.findIndex(item=>{ return item.id===paramsData.storeyId }) + this.selectingSitePlan = this.sitePlanData[index] || {} + this.canvasData.selectStorey = this.sitePlanData[index] || {} //服务中 存一份数据 + this.selectSitePlanIndex = index + + Promise.all([fireData,planData]).then((res)=>{ + this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据 + }) + }) //get + } else { //建筑时 + this.beforeOneCheckedBuilding=this.allBuildings[paramsData.buildingIndex] + let params = { buildingId: this.beforeOneCheckedBuilding.id } + let fireData = this.getFireElements(this.beforeOneCheckedBuilding.buildingTypes[0].id || '') //获取建筑下 消防要素 + let planData = this.getBuildingData(params) //获取 建筑 数据 + this.http.get('/api/BuildingAreas',{params}).subscribe(data=>{ + this.sitePlanData = data + let index = this.sitePlanData.findIndex(item=>{ return item.id===paramsData.storeyId }) + this.selectingSitePlan = this.sitePlanData[index] || {} + this.canvasData.selectStorey = this.sitePlanData[index] || {} //服务中 存一份数据 + this.selectSitePlanIndex = index + + Promise.all([fireData,planData]).then((res)=>{ + this.getBuildingStorey(this.selectingSitePlan) //获取 建筑 楼层数据 + }) + }) //get + } + } + + + +} + + + +//创建建筑 +@Component({ + selector: 'app-createBuilding', + templateUrl: './createBuilding.html', + styleUrls: ['./collection-tools.component.scss'] +}) +export class CreateBuilding { + + constructor(private http:HttpClient,public dialog: MatDialog,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) { } + + allBuildingType:any//所有的建筑类型 + selected:any; //选中的建筑 + ngOnInit(): void { + this.getAllBuildingType() + } + + //获得所有单位类型 + getAllBuildingType(){ + this.http.get("/api/BuildingTypes/Simple").subscribe(data=>{ + this.allBuildingType = data + }) + } + + //创建建筑功能分区 + onSubmit (e) { + let companyId = sessionStorage.getItem("companyId") + let lastBuildingOrder = this.data.allBuildings.length != 0 ? this.data.allBuildings[this.data.allBuildings.length - 1].order + 1 : 0 + let data = + { + id: "", + name: e.propertyName, + order: lastBuildingOrder , + enabled: true, + companyId: companyId, + buildingTypes: [ + { + id: e.buildingId, + name: "" + } + ] + } + this.http.post("/api/Buildings",data,{ + params:{ + companyId : this.data.companyId + } + }).subscribe(data=>{ + this.dialogRef.close("创建成功"); + },err=>{ + this.dialogRef.close("创建失败"); + }) + } +} + +//编辑建筑 +@Component({ + selector: 'app-editBuilding', + templateUrl: './editBuilding.html', + styleUrls: ['./collection-tools.component.scss'] +}) +export class EditBuilding { + + constructor(private http:HttpClient,public dialog: MatDialog,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) { } + + defaultName:String = this.data.item.name//默认建筑名称 + defaultBuildingType:String = this.data.item.buildingTypes[0].id//默认建筑类型 + allBuildingType:any//所有的建筑类型 + + ngOnInit(): void { + this.getAllBuildingType() + } + + getAllBuildingType(){ + this.http.get("/api/BuildingTypes/Simple").subscribe(data=>{ + this.allBuildingType = data + }) + } + + //编辑建筑信息 + onSubmit (e) { + let companyId = sessionStorage.getItem("companyId") + let data = + { + id: this.data.item.id, + name: e.propertyName, + order: this.data.item.order, + enabled: true, + companyId: companyId, + buildingTypes: [ + { + id: e.buildingId, + name: "" + } + ] + } + this.http.put(`/api/Buildings/${this.data.item.id}`,data,{ + params:{ + id:this.data.item.id, + companyId:companyId + } + }).subscribe(data=>{ + this.dialogRef.close("修改成功"); + },err=>{ + this.dialogRef.close("修改失败"); + }) + } +} + +//查看图片大图 +@Component({ + selector: 'viewdetails', + templateUrl: './viewdetails.html', + styleUrls: ['./collection-tools.component.scss'] +}) +export class ViewDetails { + // myControl = new FormControl(); + //注入MatDialogRef,可以用来关闭对话框 + //要访问对话框组件中的数据,必须使用MAT_DIALOG_DATA注入令牌 + constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,private element: ElementRef) {} + imagesArr = this.data.imagesArr + onNoClick(): void { + this.dialogRef.close(); + } + ngOnInit(): void { + setTimeout(() => { + var mySwiper = new Swiper('.swiper-container',{ + loop: false, + initialSlide :this.data.index,//默认索引 + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + } + //其他设置 + }); + }, 0); + } + closeDialog(){ + this.dialogRef.close(); + } + count = 10 + zoomimg(e) { + if(this.count != 1 || e.wheelDelta >= 120){ + if(e.wheelDelta >= 120){ + this.count++ + }else{ + this.count-- + } + } + e.srcElement.style.zoom = this.count + '0%' + e.srcElement.style.maxWidth = null + e.srcElement.style.maxHeight = null + } + +} diff --git a/src/app/ui/collection-tools/createBuilding.html b/src/app/ui/collection-tools/createBuilding.html new file mode 100644 index 0000000..16fdd7b --- /dev/null +++ b/src/app/ui/collection-tools/createBuilding.html @@ -0,0 +1,28 @@ +
新增建筑
+
+
+ +
+ + + +
+
+ + + + {{item.name}} + + + +
+
+ + +
+
+
\ No newline at end of file diff --git a/src/app/ui/collection-tools/editBuilding.html b/src/app/ui/collection-tools/editBuilding.html new file mode 100644 index 0000000..433316d --- /dev/null +++ b/src/app/ui/collection-tools/editBuilding.html @@ -0,0 +1,23 @@ +
编辑建筑
+
+
+
+ + + +
+
+ + + + {{item.name}} + + + +
+
+ + +
+
+
\ No newline at end of file diff --git a/src/app/ui/collection-tools/editDisposalNode.html b/src/app/ui/collection-tools/editDisposalNode.html new file mode 100644 index 0000000..40b2270 --- /dev/null +++ b/src/app/ui/collection-tools/editDisposalNode.html @@ -0,0 +1,23 @@ +
+
+ +
+ +
+ +
+ + + +
+ +
+ + +
+ +
+ +
\ No newline at end of file diff --git a/src/app/ui/collection-tools/editPlaneFigure.html b/src/app/ui/collection-tools/editPlaneFigure.html new file mode 100644 index 0000000..a0f8016 --- /dev/null +++ b/src/app/ui/collection-tools/editPlaneFigure.html @@ -0,0 +1,39 @@ +
+ +
+ + +
+ +
+ +
+ + + +
+ +
+ 是否为避难层 +
+ +
+ + + +
+ +
+ +
+ +
+ + +
+ +
+ +
\ No newline at end of file diff --git a/src/app/ui/collection-tools/leftFunctionalDomain.ts b/src/app/ui/collection-tools/leftFunctionalDomain.ts new file mode 100644 index 0000000..3838dd5 --- /dev/null +++ b/src/app/ui/collection-tools/leftFunctionalDomain.ts @@ -0,0 +1,180 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; + +@Component({ + selector: 'app-leftFunctionalDomain', + templateUrl: './addPlaneFigure.html', + styleUrls: ['./panel.scss'] +}) +export class leftFunctionalDomainComponent implements OnInit { + + constructor( + private http:HttpClient, + public dialog: MatDialog, + public snackBar: MatSnackBar, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data) { } + + ngOnInit(): void { + + } + + params = {companyId: sessionStorage.getItem('companyId')} + checked:boolean = false;//是否为避难层 + + //提交表单创建平面图 + onSubmit (e) { + if (!this.data.isBuilding) { //总平面图 创建平面图 + let data = { + companyId: sessionStorage.getItem('companyId'), + name: e.name, + order: this.data.order, + area:e.area, + details:e.details, + enabled: true, + modifiedTime: new Date(), + } + this.http.post('/api/SitePlans',data).subscribe(data=>{ + this.dialogRef.close('总平面图'); + }) + } else { //建筑 创建楼层/区域 + let data = { + isRefugeStorey: e.isRefugeStorey, + buildingId: this.data.Panel.id, + name: e.name, + order: this.data.order, + area:e.area, + details:e.details, + enabled: true, + modifiedTime: new Date(), + } + this.http.post('/api/BuildingAreas',data,{params:this.params}).subscribe(data=>{ + this.dialogRef.close('建筑'); + }) + } + } + + + +} + +//编辑平面图 楼层/区域 +@Component({ + selector: 'app-editPlaneFigure', + templateUrl: './editPlaneFigure.html', + styleUrls: ['./panel.scss'] +}) +export class editPlaneFigureComponent implements OnInit { + + constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) { } + + ngOnInit(): void { + this.name = this.data.buildingData.name || '' + this.checked = this.data.buildingData.isRefugeStorey || false + this.area = this.data.buildingData.area || 0 + this.details = this.data.buildingData.details || '' + } + + params = {companyId: sessionStorage.getItem('companyId')} + name:any; //name + checked:boolean = false;//是否为避难层 + area:number; //面积 + details:string; //详情 + + //提交表单修改平面图 + onSubmit (e) { + if (!this.data.isBuilding) { //总平面图 修改平面图 + let data = { + companyId: sessionStorage.getItem('companyId'), + id: this.data.buildingData.id, + name: e.name, + cadUrl: this.data.buildingData.cadUrl, + imageUrl: this.data.buildingData.imageUrl, + imageAngle: this.data.buildingData.imageAngle, + order: this.data.buildingData.order, + area:e.area, + details:e.details, + enabled: this.data.buildingData.enabled, + modifiedTime: new Date(), + } + this.http.put(`/api/SitePlans/${this.data.buildingData.id}`,data).subscribe(data=>{ + this.dialogRef.close('总平面图'); + }) + } else { //建筑 修改楼层/区域 + let data = { + isRefugeStorey: e.isRefugeStorey, + buildingId: this.data.Panel.id, + id: this.data.buildingData.id, + name: e.name, + cadUrl: this.data.buildingData.cadUrl, + imageUrl: this.data.buildingData.imageUrl, + imageAngle: this.data.buildingData.imageAngle, + order: this.data.buildingData.order, + area:e.area, + details:e.details, + enabled: this.data.buildingData.enabled, + modifiedTime: new Date(), + } + this.http.put(`/api/BuildingAreas/${this.data.buildingData.id}`,data,{params:this.params}).subscribe(data=>{ + this.dialogRef.close('建筑'); + }) + } + } + + + +} + + + +//创建 处置预案 节点 +@Component({ + selector: 'app-addDisposalNode', + templateUrl: './addDisposalNode.html', + styleUrls: ['./panel.scss'] +}) +export class addDisposalNodeComponent implements OnInit { + + constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) { } + + ngOnInit(): void { + } + + //提交表单 + onSubmit (e) { + this.data.name = e.name + this.http.post('/api/DisposalNodes',this.data).subscribe(data=>{ + this.dialogRef.close('success'); + }) + } + +} + + + +//编辑 处置预案 节点 +@Component({ + selector: 'app-editDisposalNode', + templateUrl: './editDisposalNode.html', + styleUrls: ['./panel.scss'] +}) +export class editDisposalNodeComponent implements OnInit { + + constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) { } + + ngOnInit(): void { + this.nodeName = JSON.parse(JSON.stringify( this.data.name || '' )) + } + nodeName:string; + + //提交表单 + onSubmit (e) { + this.data.name = e.name + this.http.put(`/api/DisposalNodes/${this.data.id}`,this.data).subscribe(data=>{ + this.dialogRef.close('success'); + }) + } + +} \ No newline at end of file diff --git a/src/app/ui/collection-tools/panel.scss b/src/app/ui/collection-tools/panel.scss new file mode 100644 index 0000000..bcfc82f --- /dev/null +++ b/src/app/ui/collection-tools/panel.scss @@ -0,0 +1,297 @@ +.matIcons { + color: #8E909F; +} + + + +//平面图 素材库 公共样式 头部 +.planarGraphHeader{ + width: 100%; + text-align: center; + height: 40px; + line-height: 40px; + min-height: 40px; + cursor: pointer; + text-align: center; + font-style: italic; + font-size: 20px; + color: white; + border-bottom:2px solid #accbf2; +} +//平面图头部字体图标样式 +.hover { + width: 18px; + height: 18px; + margin-left: 90px; + border: 1px solid #999; + border-radius: 3px; + .mat-icon {font-size: 18px; color: #999;} +} +.hover:hover { + background-color: #4DA5FA; + .mat-icon {color: #fff;} +} + +//平面图 +.sitePlanContent { + position: relative; + width: 100%; + height: 35px; + line-height: 35px; + box-sizing: border-box; + padding: 0 10px 0 25px; + .mat-icon { + font-size: 20px; + } +} + +//火源/力量 图标 +.fireForce { + display: block; + float: right; + margin: 8px 5px 0 0; + width: 40px; + height: 20px; + line-height: 20px; + text-align: center; + position: relative; + overflow: hidden; + img{ + width: 20px; + height: 20px; + } +} +//替换底图 inputfile +.a-upload { + display: block; + float: right; + margin: 8px 18px 0 0; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + position: relative; + overflow: hidden; + input { + position: absolute; + width: 20px; + height: 20px; + left: 0; + top: 0; + opacity: 0; + } +} +.a-upload:hover { + .mat-icon { + color: #fff; + } +} +//上传底图 inputfile +#a-uploadImg { + display: block; + width: 300px; + height: 170px; + position: fixed; + top: 40%; + left: 48%; + overflow: hidden; + border-radius: 5px; + border: 1px solid #999; + z-index: 999; + input { + position: absolute; + width: 300px; + height: 170px; + left: 0; + top: 0; + opacity: 0; + } + img { + width: 100%; + height: auto; + } +} +#a-uploadImg:hover { + border: 5px solid skyblue; +} + +//hover时显示右边操作栏 +.sitePlanContent:hover { + #rightOperate { + display: block; + } +} +//右边操作栏 +#rightOperate{ + width: 50px; + height: 100px; + position: absolute; + top: -32px; + right: -48px; + z-index: 99999; + border-radius: 0 100px 100px 0; + background-color: #F0F4F7; + // #F0F4F7 cdced1 + display: none; + .functionButton { + height: 25%; + line-height: 25px; + } + .bigFunctionIcon { + font-size: 24px; + } + .functionIcon { + color: #999; + } + .functionIcon:hover { + color: #4DA5FA; + } +} + +//处置预案 素材库 公用div +.publiclBankPlan { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; + padding-bottom: 10px; + // border-top: 1px dashed #999; +} + + + +// 基本信息/想定作业 切换 +.scenarioAssignment { + overflow-y: auto; +} +.selectEditMode { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; +} +.materialBankDIV{ + flex: 1; + overflow-x: hidden; + overflow-y: auto; +} +// 基本信息/想定作业 切换 +//处置预案 +#terrNodePublic { + height: 35px; + line-height: 35px; + .textNode {flex: 1;} +} +//字体图标 +.planIconDiv { + display: inline-block; + .mat-icon{ + font-size: 20px; + width: 20px; + height: 20px; + color: white; + margin-right: 3px; + } +} + + + +.mat-expansion-panel-header { + height: 40px !important; +} +//素材库溢出隐藏 +#materialBank { + margin: 1px 0; +} +//素材库图片flex +#panelLibrary .text{ + box-sizing: border-box; + margin-left: 10px; +} +.panelLibraryFlex { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; /* 水平居中 */ + .imgBox { + width: 70px; + height: 100px; + display: inline-block; + text-align: center; + border-radius: 3px; + margin: 5px 0; + img { + width: 70px; + height: auto; + max-height: 70px; + cursor:pointer; + } + p { + font-size: 12px; + cursor:pointer; + } + } +} + +//文本溢出 +.overflowText { + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +// 楼层/区域 是避难层时 +.isRefugeStorey { + color: #fff; + background-color: rgb(238, 186, 186); +} +//选中平面图时 +.selectSitePlan { + color: #fff; + background-color: #6BC2FF; +} +//选中素材库图片时 +.selectImg { + color: #fff; + background-color: #4DA5FA; +} +//选中 处置节点时 +.selectanelPoint { + background-color: #0c2d44; +} + + + +//左侧功能区弹出框样式 +.keyMargin { + width: 100%; + margin: 5px 0; + .mat-form-field { + width: 100%; + } +} +.submitBottom { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; /* 水平居中 */ +} +.functionalDomainContent { + // width: 300px; + height: 100%; + textarea { + border-radius: 5px; + border: 1px solid #999; + width: 100%; + height: 120px; + resize:none; + } +} +.mat-tree{ + background-color:transparent; + .mat-tree-node{ + color: white; + } + .mat-tree-node:hover{ + background-color: #0c2d44; + } +} \ No newline at end of file diff --git a/src/app/ui/collection-tools/save.ts b/src/app/ui/collection-tools/save.ts new file mode 100644 index 0000000..ac9345c --- /dev/null +++ b/src/app/ui/collection-tools/save.ts @@ -0,0 +1,250 @@ +import { Component, OnInit, Inject } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import {CanvasShareDataService} from '../../canvas-share-data.service' //引入服务 +// 保存想定作业第一个弹窗 +@Component({ + selector: 'dialog-overview-example-dialog', + templateUrl: 'saveOne.html', + styleUrls: ['./collection-tools.component.scss'] +}) +export class saveOneDialog { + + constructor( + private http:HttpClient, + public dialog: MatDialog, + public snackBar: MatSnackBar, + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data) {} + + onNoClick(): void { + this.dialogRef.close() + } + allDisposalNode = this.data.allDisposalNode + + saveType(type){ + this.dialogRef.close() + const dialogRef = this.dialog.open(saveTwoDialog, { + data: {type: type, + allDisposalNode: this.data.allDisposalNode, + selectedBuildingData:this.data.selectedBuildingData, + selectedSiteData:this.data.selectedSiteData, + siteOrbuilding:this.data.siteOrbuilding, + disasterId:this.data.disasterId} + }); + dialogRef.afterClosed().subscribe(result => { + }); + } + +} + + // 保存想定作业第二个弹窗 +@Component({ + selector: 'dialog-overview-example-dialog', + templateUrl: 'saveTwo.html', + styleUrls: ['./collection-tools.component.scss'] +}) + export class saveTwoDialog { + + constructor( + private http:HttpClient, + public dialogRef: MatDialogRef, + public canvasData: CanvasShareDataService, + @Inject(MAT_DIALOG_DATA) public data) {} + + type = this.data.type + allDisposalNode = this.data.allDisposalNode + allPlanDisposalNode = [] + allRootDisposalNode = [{name:"根节点",id:null}] + allDisposalNodeChild = [] + ngOnInit(): void { + //所有非数据节点 + this.allDisposalNode.forEach(item => { + if(!item.sitePlanId && !item.buildingAreaId){ + this.allPlanDisposalNode.push(item) + } + }) + + //所有一级节点 + this.allDisposalNode.forEach(item => { + if(!item.parentId){ + this.allRootDisposalNode.push(item) + } + }) + this.allDisposalNodeChild = JSON.parse(JSON.stringify(this.allDisposalNode)) + this.allDisposalNodeChild.forEach(item => { + item.children = [] + this.allDisposalNodeChild.forEach(i => { + if(i.parentId == item.id){ + item.children.push(i) + } + }) + }) + // console.log(this.nodeItem.id) + } + onNoClick(): void { + this.dialogRef.close(); + } + nodeItem + itemChildNum = 0 //点击处置节点子数据节点的数量 + clickNode(item){ + console.log(item) + this.nodeItem = item + this.allDisposalNodeChild.forEach(item => { + if(item.id == this.nodeItem.id){ + this.itemChildNum = item.children.length + } + }) + } + + selectedBuildingData = this.data.selectedBuildingData + selectedSiteData = this.data.selectedSiteData + onSubmit(value,type){ + console.log(type) + let name = this.selectedBuildingData.name + '-' + this.selectedSiteData.name + //如果保存到已有节点 + var postdata = { + id: "", + name: name, + level: 0, + order: this.itemChildNum, + description: "", + notes: "", + weather: null, + airTemperature: null, + windDirection: null, + windScale: null, + imageNames: null, + imageUrls: null, + parentId: this.nodeItem ? this.nodeItem.id : null, + disasterId: this.data.disasterId, + planComponentId: sessionStorage.getItem('planId') || '', + companyId: this.data.siteOrbuilding == -1 ? sessionStorage.getItem('companyId') : null, + sitePlanId: this.data.siteOrbuilding==-1 ? this.selectedSiteData.id : null, + buildingId: this.selectedBuildingData.id || null, + buildingAreaId: this.data.siteOrbuilding!=-1 ? this.selectedSiteData.id : null + } + if(type == 'old'){ + let istrue = this.canvasData.findDisposalNode(this.nodeItem.id,name) + let putdata = this.nodeItem + putdata.weather = this.canvasData.selectPanelPointBaseData.weather + putdata.airTemperature = Number(this.canvasData.selectPanelPointBaseData.airTemperature) + putdata.windScale = Number(this.canvasData.selectPanelPointBaseData.windScale) + putdata.windDirection = Number(this.canvasData.selectPanelPointBaseData.windDirection) + putdata.description = this.canvasData.selectPanelPointBaseData.description + putdata.notes = this.canvasData.selectPanelPointBaseData.notes + + + if(istrue){//如果该处置节点下已有同名数据节点 则只修改 2个接口 + new Promise((resolve,reject)=>{ + this.http.put(`/api/DisposalNodes/${value.nodeId}`,putdata).subscribe(data => { + resolve("更新处置节点成功,将天气 节点详情等信息保存到点击的节点") + }) + }).then((values)=>{ + console.log(9999,values) + this.canvasData.sendMessage('send a message');//发布一条消息 + // 保存平面图数据到当前节点 + // let postdata = {} + // this.http.post(`/api/DisposalNodeData`,postdata).subscribe(data => { + // console.log("提交数据成功") + // }) + }) + + }else{//需要3个接口 + new Promise((resolve,reject)=>{ + this.http.put(`/api/DisposalNodes/${value.nodeId}`,putdata).subscribe(data => { + resolve("更新处置节点成功,将天气 节点详情等信息保存到点击的节点") + }) + }).then((values)=>{ + console.log(values) + postdata.level = putdata.level + 1 + new Promise((resolve,reject) => { + this.http.post(`/api/DisposalNodes`,postdata).subscribe(data => { + resolve("创建数据节点成功") + }) + }).then((values)=>{ + console.log(values) + // 保存平面图数据到当前节点 + // let postdata = {} + // this.http.post(`/api/DisposalNodeData`,postdata).subscribe(data => { + // console.log("提交数据成功") + // }) + this.canvasData.sendMessage('send a message');//发布一条消息 + }) + }) + } + + }else{//如果保存到新建节点 + let dispositionNodeData //处置节点data + let order + let oneLevelNum = [] + //将order赋值为所有一级节点最后一个+1 + this.allDisposalNode.forEach(item => { + if(!item.parentId){ + oneLevelNum.push(item) + } + }) + order = oneLevelNum[oneLevelNum.length - 1].order + 1 + if(this.nodeItem){//如果点击了下拉选择框 + if(this.nodeItem.id != null){ + this.allDisposalNodeChild.forEach(item => { + if(item.id == this.nodeItem.id){ + order = item.children.length + } + }) + } + } + dispositionNodeData = { + id: "", + name: value.name, + level: this.nodeItem && this.nodeItem.id != null ? this.nodeItem.level + 1 : 0, + order: order, + description: "", + notes: "", + weather: null, + airTemperature: 0, + windDirection: 0, + windScale: 0, + imageNames: null, + imageUrls: null, + parentId: this.nodeItem ? this.nodeItem.id : null, + disasterId: this.data.disasterId, + planComponentId: sessionStorage.getItem('planId') || '', + companyId: null, + sitePlanId: null, + buildingId: null, + buildingAreaId: null + } + + dispositionNodeData.weather = this.canvasData.selectPanelPointBaseData.weather + dispositionNodeData.airTemperature = Number(this.canvasData.selectPanelPointBaseData.airTemperature) + dispositionNodeData.windScale = Number(this.canvasData.selectPanelPointBaseData.windScale) + dispositionNodeData.windDirection = Number(this.canvasData.selectPanelPointBaseData.windDirection) + dispositionNodeData.description = this.canvasData.selectPanelPointBaseData.description + dispositionNodeData.notes = this.canvasData.selectPanelPointBaseData.notes + //1.先创建一个处置节点 然后 .then 2.创建数据节点到刚创建的处置节点 3.然后拿着创建好的数据节点的id 将平面图data保存 + new Promise((resolve,reject) => { + this.http.post("/api/DisposalNodes",dispositionNodeData).subscribe((data:any) => { + resolve(data.id) + }) + }).then((id) => { + let dataNodeData + console.log("qnm",id) + new Promise((resolve,reject) => { + postdata.parentId = id + postdata.level = dispositionNodeData.level + 1 + this.http.post("/api/DisposalNodes",postdata).subscribe((data:any) => { + resolve(data.id) + }) + }).then((id) => { + // 保存平面图数据到当前节点 + // let postdata = {} + // this.http.post(`/api/DisposalNodeData`,postdata).subscribe(data => { + // console.log("提交数据成功") + // }) + }) + }) + } + } +} \ No newline at end of file diff --git a/src/app/ui/collection-tools/saveOne.html b/src/app/ui/collection-tools/saveOne.html new file mode 100644 index 0000000..a6b0b32 --- /dev/null +++ b/src/app/ui/collection-tools/saveOne.html @@ -0,0 +1,5 @@ +
处置节点保存
+
+ + +
\ No newline at end of file diff --git a/src/app/ui/collection-tools/saveTwo.html b/src/app/ui/collection-tools/saveTwo.html new file mode 100644 index 0000000..fec97ff --- /dev/null +++ b/src/app/ui/collection-tools/saveTwo.html @@ -0,0 +1,53 @@ +
+
新增节点
+
+
+ +
+ + + +
+
+ + + + {{item.name}} + + + +
+
+ + +
+
+
+
+
+
保存到已有节点
+
+
+
+ + + + {{item.name}} + + + +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/ui/collection-tools/viewdetails.html b/src/app/ui/collection-tools/viewdetails.html new file mode 100644 index 0000000..76638c2 --- /dev/null +++ b/src/app/ui/collection-tools/viewdetails.html @@ -0,0 +1,24 @@ +
+
+ clear +
+ +
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/ui/dangerous/dangerous.component.html b/src/app/ui/dangerous/dangerous.component.html new file mode 100644 index 0000000..829b567 --- /dev/null +++ b/src/app/ui/dangerous/dangerous.component.html @@ -0,0 +1,76 @@ +
+
+
危化品类型
+
危化品分布
+
+ volume_up +
+
+
泵房
+
控制室
+ +
+
+
+ settings_voice +
+
+ 按住说话 +
+
+ search +
+
+
+
+
+
+ +
+
+
{{item.name}}
+
+
+ + + + + + + + + + + + + + + + +
品名英文名分子式分类查看详情
{{item.name}}{{item.englishname}}{{item.molecularformula}}{{item.type}}查看详情
+
+
+ + + +
+
+

{{detailNode.name}}

+ +
x
+
+
+
+
品名
+
理化属性
+
危害特性
+
灭火剂
+
储运注意事项
+
+
+ +
+
+
+
+
diff --git a/src/app/ui/dangerous/dangerous.component.scss b/src/app/ui/dangerous/dangerous.component.scss new file mode 100644 index 0000000..35e823d --- /dev/null +++ b/src/app/ui/dangerous/dangerous.component.scss @@ -0,0 +1,261 @@ +.box{ + width: 100%; + height: 100%; + // border: 1px solid red; + display: flex; + flex-direction: column; + .title{ + flex: 2%; + width: 100%; + padding-top: 10px; + font-size: 20px; + .divtype{ + display: inline-block; + width: 126px; + height: 35px; + line-height: 35px; + text-align: center; + border:1px solid #26b5fb; + color: white; + cursor: pointer; + } + .selectedBtn{ + background-color: #e88108; + } + .bigTalkBox{ + user-select: none; + .titleIcon{ + font-size: 33px; + vertical-align: sub; + color: white; + cursor: pointer; + } + .talkBox{ + width: 309px; + height: 326px; + border: 1px solid #30bbec; + background-color: #013a64; + opacity: .9 ; + position: absolute; + top: 32px; + right:4px; + z-index: 2000; + .btndiv{ + div{ + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + + } + div:nth-child(1){ + background-color: #fe9400; + margin: 10px; + } + div:nth-child(2){ + background-color: #f95e5a; + } + } + .bottomDiv{ + position: absolute; + bottom:6px; + width: 100%; + height: 32px; + line-height: 32px; + display: flex; + color: white; + text-align: center; + mat-icon{ + vertical-align: sub; + } + div:nth-child(1){ + flex: 1; + } + div:nth-child(2){ + flex: 6; + color: #409eff; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + } + div:nth-child(3){ + flex: 1; + + } + } + } + } + } + .body{ + width: 99.9%; + height: 100%; + border:1px solid #26b5fb; + .type{ + width: 100%; + height: 100%; + display: flex; + .leftbox{ + height: 100%; + // flex: 20%; + width: 16%; + border-right: 1px solid #26b5fb; + div{ + white-space: nowrap;/*一行显示*/ + overflow: hidden;/*超出部分隐藏*/ + text-overflow: ellipsis;/*用...代替超出部分*/ + width: 100%; + height:46px; + line-height:46px; + letter-spacing: 3px; + font-size: 20px; + color: white; + // padding-left: 5px; + cursor: pointer; + span{ + margin-left: 6px; + } + } + div:hover{ + background-color: #e6963c; + } + .divselected{ + background-color: #e88108; + } + } + .rightbox{ + width: 100%; + height: 100%; + table{ + width: 100%; + height: 100%; + tr{ + width: 100%; + display: flex; + height: 38px; + line-height: 38px; + th{ + text-align: center; + flex: 1; + color: #f7ba2a; + font-size: 20px; + height: 30px; + line-height: 30px; + } + td{ + text-align: center; + flex: 1; + color: white; + } + td:last-child{ + cursor: pointer; + color: #f0c398; + } + td:last-child:hover{ + color: #f7ba2a; + } + } + tr:first-child{ + margin-top:6px; + border-bottom: 1px solid #26b5fb; + width: 100%; + } + tr:nth-child(2){ + margin-top: 8px; + } + } + + } + } + + .openDiv{ + z-index: 3000; + width:600px; + height: 500px; + position: fixed; + left: 0; + top:0; + right: 0; + bottom: 0; + margin:auto; + background: #063659; + opacity: 0.9; + border: 1px solid #26b5fb; + div{ + float: left; + } + .top{ + width: 100%; + height: 32px; + line-height: 32px; + text-align: center; + border-bottom: 1px solid #ff4949; + font-size: 18px; + position: relative; + h4{ + color: red; + } + .btn{ + width: 30px; + height: 30px; + position: absolute; + top: 0; + right: 0; + color: #919191; + cursor: pointer; + font-size: 18px; + } + } + .details{ + width: 100%; + height: 468px; + display: flex; + .left{ + height: 100%; + flex: 2; + border-right:1px solid #26b5fb; + div{ + width: 100%; + height: 33px; + line-height: 33px; + text-align: center; + color: #8aadce; + border-bottom:1px solid #999b9d ; + cursor: pointer; + } + div:hover{ + background: #041f33; + } + } + .right{ + flex: 8; + height: 468px; + color: white; + letter-spacing: 2px; + padding: 5px 8px; + } + } + } + } +} + +.size{ + width: 100%; + height: 100%; + position: relative; + z-index: 100; +} +#selectedBox{ + width: 120px; + height: 20px; + position: absolute; + z-index: 101; + left: 6px; + top: 0; + +} + + diff --git a/src/app/ui/dangerous/dangerous.component.spec.ts b/src/app/ui/dangerous/dangerous.component.spec.ts new file mode 100644 index 0000000..60c7332 --- /dev/null +++ b/src/app/ui/dangerous/dangerous.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DangerousComponent } from './dangerous.component'; + +describe('DangerousComponent', () => { + let component: DangerousComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DangerousComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DangerousComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/dangerous/dangerous.component.ts b/src/app/ui/dangerous/dangerous.component.ts new file mode 100644 index 0000000..3cf7dbc --- /dev/null +++ b/src/app/ui/dangerous/dangerous.component.ts @@ -0,0 +1,267 @@ +import { Component, OnInit } from '@angular/core'; +declare var AMap: any; +@Component({ + selector: 'app-dangerous', + templateUrl: './dangerous.component.html', + styleUrls: ['./dangerous.component.scss'] +}) +export class DangerousComponent implements OnInit { + + constructor() { } + map:any //地图 + ngOnInit(): void { + + } + //打开说话框 + isOpenTalk = false + openTalkDiv(){ + this.isOpenTalk = !this.isOpenTalk + } + selectedIndex = 0 + typedata = [ + {name:"爆炸品",details:[ + {name:"点火绳",englishname:"Det donating Cords",molecularformula:"无",type:"点火绳"}, + {name:"乙二硝胺",englishname:"Ethylene Dinitramine",molecularformula:"(CH2NHNO2)2",type:"炸药及爆炸性药品"}, + {name:"导爆锁",englishname:"Detonating Cords",molecularformula:"无",type:"起爆器材"} + ]}, + {name:"气体",details:[ + {name:"乙炔",englishname:"Acetylene",molecularformula:"C2H2",type:"易燃气体"}, + {name:"二氟氯甲烷",englishname:"Chlorodifluoromethane",molecularformula:"CHCF2",type:"非易燃无毒气体"}, + {name:"二氧化硫",englishname:"Sulfur die oxIde",molecularformula:"SO2",type:"毒性气体"} + ]}, + {name:"易燃液体",details:[ + {name:"2-乙基-1-丁烯",englishname:"2-Ethyl-1-butene",molecularformula:"CH3CH2(C2Hb)CCH2",type:"低闪点液体",content:[ + {data:"2-乙基-1-丁烯"}, + {data:"无色液体,不溶于水,能溶于乙醇丙酮和乙醚。相对密度:0.69(20℃) ,沸点:62℃ ,闪点:<-20℃, 自燃点:315℃"}, + {data:`易燃,遇热、明火、强氧化剂,均有引起燃烧爆炸的危险。
其蒸气能与空气形成爆炸性混合物,遇火星易爆炸。`}, + {data:"泡沫、二氧化碳、干粉、1211。"}, + {data:"储存于阴凉通风仓间内,仓温不超过30℃,远离火种、热源,防止阳光直射。应与硝酸等氧化剂分仓间储存。不宜久储,以防聚合变质。搬运时应轻装轻卸,防止包装破损。"}, + ]}, + {name:"2-乙基丁醛",englishname:"Diethyl Acetaldehyde",molecularformula:"C212 CHCHO",type:"中闪点液体",content:[ + {data:"2-乙基丁醛"}, + {data:`无色液体,不溶于水。能与乙醇、乙燃醚混溶。 + 相对密度:0.8164(20℃) + 凝固点:-89℃ + 沸点:116.8℃ + 闪点:21.1℃(开杯 + 爆炸极限:1.2%~7.7% + 蒸气压:1.827kPa(20℃)`}, + {data:`遇明火、高温、氧化剂,有引起燃烧爆 + 炸的危险。`}, + {data:`泡沫、干粉、二氧化碳、砂土。`}, + {data:`包装要密封。储存于阴凉通风 + 的仓间内,防止阳光直射,仓温不超过30℃,远离火 + 种、热源。应与酸类、氧化剂分仓间存放,切勿混储混 + 运。搬运时轻装轻卸,防止包装破损。不宜久储。若 + 触及皮肤,应及时用水冲洗。`}, + ]}, + {name:"乙二醇一乙醚",englishname:"Ethylene Glycol Monoethyl Ether",molecularformula:"CH2OHCH2OC2H5",type:"高闪点液体",content:[ + {data:`乙二醇一乙醚`}, + {data:`无色液体,几无气味。能与水和醇等 + 大多数有机溶剂混溶。稍有毒,空气中的最高容许浓 + 度为2.0×10-4。 + 相对密度:0.9360(15℃) + 凝固点:-70 + 沸点:135.1℃ + 闪点:43℃ + 自燃点:235℃ + 爆炸极限:1.8%~14% + 蒸气压:506.6Pa(20℃)`}, + {data:`遇明火、高温或氧化剂,有发生燃烧 + 的危险。`}, + {data:`泡沫、二氧化碳、砂土、干粉。`}, + {data:`储存于阴凉通风仓间内,远离火 + 种、热源。应与氧化剂分开堆放。包装要密封,防止损 + 耗和变质。搬运时轻装轻卸,保持包装完整`}, + ]} + ]}, + {name:"易燃固体",details:[ + {name:"N,N-二亚硝基五亚甲基四胺",englishname:"N,N- Dinitrosopentamethylene",molecularformula:"(CH2)(NO)2N",type:"一级易燃固体",content:[ + {data:`N,N-二亚硝基五亚甲基四胺`}, + {data:`淡黄色粉末或砂粒状固体。易燃,有毒。易溶于丙酮,略溶于醇,微溶于氯仿,不溶于乙醚及水。温度≥199℃时分解,与酸或酸雾接触,将迅速起火燃烧。 + 相对密度:1.4~1.4 + 熔点:200℃(分解)`}, + {data:`遇高温、明火或与酸(无机酸、有机酸)接触,容易引起剧烈燃烧。与氧化剂混和,能成为爆炸性混合物`}, + {data:"水、砂土。"}, + {data:"储存于阴凉通风干燥的库房内。远离火种及热源。严禁与无机酸、有机酸、碱性物质、氧化剂混储混运。要经常检查同库混放物质观其性能是否抵触。储存期最长不超过6个月(自出厂日起)。搬运时应轻装轻卸,防止摩擦、撞击引起燃烧"}, + ]}, + {name:"2,4-二亚硝基间苯二酚",englishname:"2,4- Dinitrosores",molecularformula:"C6H2(OH)2(NO)2",type:"二级易燃固体",content:[ + {data:`2,4-二亚硝基间苯二酚`}, + {data:`从50%乙醇中析出者,呈黄褐色叶片 + 状结晶。易溶于乙醚和苯,难溶于冷水和乙醇。遇铜铁和钴盐溶液,分别显褐色、黄绿色和黄褐色。受热剧烈分解。自甲醇及水中析出者,具有1个分子结晶水, + 不溶于水,其熔点为162~163℃ + 熔点:168℃ + 自燃点:115℃`}, + {data:`受热或与氧化剂接触,有燃烧爆炸的 + 危险。`}, + {data:`砂土、二氧化碳、雾状水。`}, + {data:`储存于阴凉通风仓间内。最高仓温不宜超过30℃。远离火种及热源。应与氧化剂分仓间存放,与金属粉末及酸类隔离堆放。搬运时应轻装轻卸,防止猛撞引起爆炸。`}, + ]}, + {name:"乙基膦",englishname:"Ethylphosphine",molecularformula:"C2H5PH2",type:"一级易于自燃物质",content:[ + {data:`乙基膦`}, + {data:`无色液体。遇水分解。 + 相对密度:<1 + 沸点:25℃`}, + {data:`在空气中能自燃,接触溴、氯和发烟 + 硝酸会发生爆炸。遇浓硫酸会燃烧`}, + {data:`干砂、干粉。禁止用水、泡沫`}, + {data:`储存于阴凉干燥仓间内。最高仓温不超过20℃。包装必须完整、密封,防止与空气接触。堆放时应与卤素、酸类、潮解性物质、氧化剂分开。远离火种、热源。搬运时轻装轻卸,保持包装完整。`}, + ]} + ]}, + {name:"氧化物和有机过氧化物",details:[ + {name:"三氟化溴",englishname:"Bromine Trifluoride",molecularformula:"BrF3",type:"一级氧化性物质"}, + {name:"三氧化铬(无水)",englishname:"Chromic Anhydride",molecularformula:"CrO3",type:"二级氧化性物质"}, + {name:"2,5-二甲基-2,5-双",englishname:"2,5- Dimethyl-2",molecularformula:"C16H30O4",type:"有机过氧化物"} + ]}, + {name:"毒性物质",details:[ + {name:"二氧化硒",englishname:"Selenium dioxide",molecularformula:"SeO2",type:"一级无机毒性物质"}, + {name:"一氯乙醛",englishname:"Chloroacetaldehyde",molecularformula:"C2H3OCl",type:"一级有机毒性物质"}, + {name:"一氧化铅",englishname:"Lead Oxide",molecularformula:"PbO",type:"二级无机毒性物质"} + ]}, + {name:"化学毒剂",details:[ + {name:"二氧二甲胺基氰磷酸乙酯化硒",englishname:"Tabun",molecularformula:"(CH3)2 NPOCNO2H5O",type:"化学毒剂"} + ]}, + {name:"生物战剂",details:[ + {name:"炭疽杆菌",englishname:"Bacillus Anthracis",molecularformula:"无",type:"生物战剂"} + ]}, + {name:"杂项危险物质",details:[ + {name:"乙二醇",englishname:"Ethylene Glycol",molecularformula:"HOCH2CH2OH",type:"杂项危险物质"} + ]}, + ] + + + num = 0 + clickNode(num){ + this.num = num + } + + + + + detaildata = this.typedata[0].details + selectedDiv(index,item){ + this.selectedIndex = index + this.detaildata = item.details + } + //类型选择 + istype = true//默认选择危化品类型 + typeSelect(type){ + if(type == 1){ + this.istype = true + }else{ + this.istype = false + } + + } + //查看详情框打开 + isOpen = false + closeDiv(){ + this.isOpen = false + } + + detailNode = null + openDetails(item){ + this.detailNode = item + if(item.content){ + this.isOpen = true + } + + this.num = 0 + } + + +} + + +@Component({ + selector: 'app-gis', + templateUrl: './gis.html', + styleUrls: ['./dangerous.component.scss'] +}) +export class GisComponent implements OnInit { + + constructor() { } + map:any //地图 + ngOnInit(): void { + setTimeout(() => { + this.creatMap() + }, 0); + } + + markerIcon = new AMap.Icon({ + image:"//a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png", + size: new AMap.Size(52, 52), //图标大小 + imageSize: new AMap.Size(26,36) + }) + //地图范围圆圈 + circle = new AMap.Circle({ + center: [109.660144, 23.100172], + radius: 500, //半径 + strokeOpacity: 1, + fillOpacity: 0.4, + strokeStyle: 'dashed', + strokeDasharray: [10, 10], + // 线样式还支持 'dashed' + fillColor: '#1791fc', + zIndex: 50, + }) + + creatMap(){ + var satellite = new AMap.TileLayer.Satellite(); + var roadNet = new AMap.TileLayer.RoadNet(); + + // 创建一个 icon + var startIcon = new AMap.Icon({ + // 图标尺寸 + // size: new AMap.Size(150, 60), + // 图标的取图地址 + image: '../../../assets/images/fire.png', + // // 图标所用图片大小 + imageSize: new AMap.Size(60, 60), + // // 图标取图偏移量 + // imageOffset: new AMap.Pixel(-9, -3) + }); + var viaMarker = new AMap.Marker({ + position: new AMap.LngLat(109.660144, 23.100172), + icon: startIcon, + offset: new AMap.Pixel(-20, -30) + }); + let marker1 = new AMap.Marker({ + icon: this.markerIcon, + position: [109.644436,23.101842], + offset: new AMap.Pixel(-7, -34) + }); + let marker2 = new AMap.Marker({ + icon: this.markerIcon, + position: [109.666768,23.104276], + offset: new AMap.Pixel(0, -20) + }); + let marker3 = new AMap.Marker({ + icon: this.markerIcon, + position: [109.660118,23.095472], + offset: new AMap.Pixel(-13, -8) + }); + + this.map = new AMap.Map('size',{ + center: [109.661536,23.098726],//中心点坐标 + zoom: 15.8, + layers:[ + satellite, + roadNet + ] + }); + this.circle.setMap(this.map);//增加范围圆圈 + this.map.add([viaMarker]);//火源标点 + marker1.setMap(this.map); + marker2.setMap(this.map); + marker3.setMap(this.map); + } + + //范围选择 + rangevalue = 500 + + rangeSelect(e){ + this.circle.setRadius(Number(this.rangevalue)) + this.circle.setMap(this.map);//增加范围圆圈 + } +} \ No newline at end of file diff --git a/src/app/ui/dangerous/gis.html b/src/app/ui/dangerous/gis.html new file mode 100644 index 0000000..c4a8e15 --- /dev/null +++ b/src/app/ui/dangerous/gis.html @@ -0,0 +1,11 @@ +
+
+ +
+
+ +
+
diff --git a/src/app/ui/disposal-node/disposal-node.component.html b/src/app/ui/disposal-node/disposal-node.component.html new file mode 100644 index 0000000..3b3975f --- /dev/null +++ b/src/app/ui/disposal-node/disposal-node.component.html @@ -0,0 +1,46 @@ + +
+
+ 火灾特点 +
+
+ 注意事项 +
+
+ 处置要点 +
+
+ 组织指挥要点 +
+
+ volume_up +
+
+
泵房
+
控制室
+ +
+
+
+ settings_voice +
+
+ 按住说话 +
+
+ search +
+
+
+
+ +
+ + + +
+
+
+
+ +
\ No newline at end of file diff --git a/src/app/ui/disposal-node/disposal-node.component.scss b/src/app/ui/disposal-node/disposal-node.component.scss new file mode 100644 index 0000000..a7a769f --- /dev/null +++ b/src/app/ui/disposal-node/disposal-node.component.scss @@ -0,0 +1,151 @@ + +.icongray{ + color: #D9D0DC; +} +//头部操作栏 +.headerOperate { + position: relative; + span{ + font-size: 18px; + } + flex: 2%; + display: flex; + align-items:center; + min-height: 40px; + box-sizing: border-box; + margin: 0 0; + + .bigeditdeletebtn{ + + margin-right: 0px; + height: 100%; + display: flex; + flex-direction: column; + // align-items:center;/*由于flex-direction: column,因此align-items代表的是水平方向*/ + justify-content: center; + user-select: none; + //background-image: url("../../../assets/images/标签正常.png") ; + background-size:100% 100%; + color: white; + span{ + padding: 13px 13px; + //padding-right: 18px; + font-size: 24px; + } + } + .bigeditdeletebtn:hover{ + cursor: pointer; + //background-image: url("../../../assets/images/标签经过.png") ; + } + .bigTalkBox{ + user-select: none; + .titleIcon{ + font-size: 33px; + vertical-align: sub; + color: white; + } + .talkBox{ + width: 309px; + height: 326px; + border: 1px solid #30bbec; + background-color: #013a64; + opacity: .9 ; + position: absolute; + top: 32px; + right:4px; + z-index: 2000; + .btndiv{ + div{ + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + + } + div:nth-child(1){ + background-color: #fe9400; + margin: 10px; + } + div:nth-child(2){ + background-color: #f95e5a; + } + } + .bottomDiv{ + position: absolute; + bottom:6px; + width: 100%; + height: 32px; + line-height: 32px; + display: flex; + color: white; + text-align: center; + div:nth-child(1){ + flex: 1; + } + div:nth-child(2){ + flex: 6; + color: #409eff; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + } + div:nth-child(3){ + flex: 1; + + } + } + } + } + + } + //中间文字区域 + .wenzi{ + border-top:1px solid #30bbec; + overflow:auto; + height: 85%; + width: 100%; + line-height: 35px; + .h3{ + color: #CC5D13; + } + + font-size: 20px; + + .scrollbar{ + width: 30px; + height: 300px; + margin: 0 auto; + + } + .wenzi::-webkit-scrollbar {/*滚动条整体样式*/ + width: 10px; /*高宽分别对应横竖滚动条的尺寸*/ + height: 1px; + } + .wenzi::-webkit-scrollbar-thumb {/*滚动条里面小方块*/ + border-radius: 10px; + //-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2); + background: #CC5D13; + } + .wenzi::-webkit-scrollbar-track {/*滚动条里面轨道*/ + //-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2); + border-radius: 10px; + background: #EDEDED; + } + } + .button { + border-radius: 2px; + background-color: #4CAF50; + border: none; + color: white; + padding: 15px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + cursor: pointer; +} \ No newline at end of file diff --git a/src/app/ui/disposal-node/disposal-node.component.spec.ts b/src/app/ui/disposal-node/disposal-node.component.spec.ts new file mode 100644 index 0000000..513f7a7 --- /dev/null +++ b/src/app/ui/disposal-node/disposal-node.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DisposalNodeComponent } from './disposal-node.component'; + +describe('DisposalNodeComponent', () => { + let component: DisposalNodeComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DisposalNodeComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DisposalNodeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/disposal-node/disposal-node.component.ts b/src/app/ui/disposal-node/disposal-node.component.ts new file mode 100644 index 0000000..7effea5 --- /dev/null +++ b/src/app/ui/disposal-node/disposal-node.component.ts @@ -0,0 +1,129 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-disposal-node', + templateUrl: './disposal-node.component.html', + styleUrls: ['./disposal-node.component.scss'] +}) +export class DisposalNodeComponent implements OnInit { + + constructor() { } + setTimeoutObj//延时器需要清除 + + ngOnInit(): void { + console.log(this.chooseBiaoti) + this.setTimeoutObj = window.setTimeout(()=>{ + this.xianshi(1) + },0) + } + ngAfterContentInit (){ + //this.xianshi() + } + checkedBuildingIndex:number = -1 + chooseBiaoti=1 + //打开说话框 + isOpenTalk = false + openTalkDiv(){ + this.isOpenTalk = !this.isOpenTalk + } + //鼠标移入边框变颜色 + yiru(yirunum){ + var tedian=document.getElementById(yirunum) + tedian.style.border="1px solid #C8CE4D" + + } + yichu(yichunum){ + var tedian=document.getElementById(yichunum) + tedian.style.border="1px solid #0E79A9" + } + //点击切换中间显示的文字 + xianshi(biaotinum){ + var mianban=document.getElementById('aaa') + var tedian=document.getElementById('tedian') + var zhuyi=document.getElementById('zhuyi') + var chuzhi=document.getElementById('chuzhi') + var zuzhi= document.getElementById('zuzhi') + var chuzhiYuanze=''; + if(biaotinum==4){ + zuzhi.style.border="1px solid #30BBEC" + tedian.style.border="1px solid #0E79A9" + zhuyi.style.border="1px solid #0E79A9" + chuzhi.style.border="1px solid #0E79A9" + chuzhiYuanze+=`

一、处置原则

`; + chuzhiYuanze+='(一)灾情处置应坚持“' + chuzhiYuanze+='救人第一、科学施救' + chuzhiYuanze+='”的原则,严禁在不熟悉情况时擅自行动,严禁冒险蛮干。
' + chuzhiYuanze+='(二)现场情况基本清楚,无爆炸等次生灾害风险,灾情易于辨识研判,在技术人员指导下,果断下达指令开展灭火救援行动。
' + chuzhiYuanze+='(三)燃烧物不清,现场情况不明,难于辨识研判,参战力量要与现场保持足够的安全距离;如有人员被困,且有希望抢救受困人员生命时,指挥员应视情采取救人措施。
' + chuzhiYuanze+='(四)燃烧物不清,现场情况不明,无人员受困,难以研判决策,现场指挥员应及时采取外部控灾措施,并与现场保持适当安全距离。
' + chuzhiYuanze+='(五)燃烧物已知,无人员受困,有爆炸伤亡风险,指挥员应采取依托掩体外围抑爆控灾措施,必要时建议指挥部扩大警戒、疏散范围。
' + chuzhiYuanze+='

二、受理报警

' + chuzhiYuanze+='(一)危险化学品场所发生火灾爆炸,火警等级不应小于四级;危险化学品发生泄漏事故,容易导致火灾爆炸或中毒事故发生,对人员、财产威胁严重或可能出现二次污染等情况特殊、灾情严重的灾害事故,应急救援等级不应小于三级。
' + chuzhiYuanze+='(二)事故发生后,指挥中心应迅速准确受理报警,应当询问掌握报警人信息、事故单位基本情况、主要联系方式,
' + chuzhiYuanze+='问清危险化学品的种类、数量、危害特性和储存方式,以及有无人员被困,周边受威胁危险化学品的有关情况,
' + chuzhiYuanze+='及时告知救援人员相关情况和注意事项,同时报告指挥长和全勤指挥部成员。
' + chuzhiYuanze+='(三)指挥中心要不间断与辖区消防救援站、报警群众和单位负责人联系,根据现场情况及时调派增援力量,向参战力量推送危险化学品理化性质、处置措施和注意事项,并将灾情按要求上报上级指挥中心。' + chuzhiYuanze+='

三、力量调集

' + chuzhiYuanze+='(一)指挥中心应及时调集辖区中队、周边化工灭火救援编队到场处置,全勤指挥部和战勤保障力量遂行出动
' + } + else if(biaotinum==1){ + zuzhi.style.border="1px solid #0E79A9" + tedian.style.border="1px solid #30BBEC" + zhuyi.style.border="1px solid #0E79A9" + chuzhi.style.border="1px solid #0E79A9" + chuzhiYuanze+='
(1) 爆炸引起燃烧。油罐发生爆炸后,随即易形成稳定燃烧。爆炸后,从罐顶或裂口处流出的油品或因罐体移位流出的油品,易造成地面流淌性燃烧。
' + chuzhiYuanze+='(2) 燃烧引起爆炸。在形成稳定燃烧的油罐的邻近油罐,在热辐射的作用下易发生爆炸,扩大火势。
' + chuzhiYuanze+='(3) 火焰高,辐射热强。爆炸后在油罐破裂位置形成的稳定燃烧,其火焰高达几十米,并对其四周产生强烈的热辐射。
' + chuzhiYuanze+='(4) 易形成沸溢与喷溅。由于重质油品具有“热波特性”,对含有一定水分或有水垫层的重质油品储罐发生火灾后,如果不能及时进行冷却控制,在其“热波特性”的作用下就会使油品内的乳化水或油层下的水垫层产生过热蒸汽,而导致发生油品的沸溢或喷溅现象。
' + chuzhiYuanze+='(5) 易造成大面积燃烧。重质油品储罐发生的沸溢、喷溅现象,在其压力的作用会将大量的油品喷洒在事故区域内,瞬间即可造成大面积燃烧,同时,对在火场内的消防战斗人员、车辆及其他装置、设备造成极大的威胁。
' + } + else if(biaotinum==2){ + zuzhi.style.border="1px solid #0E79A9" + tedian.style.border="1px solid #0E79A9" + zhuyi.style.border="1px solid #30BBEC" + chuzhi.style.border="1px solid #0E79A9" + chuzhiYuanze+='
1、油罐火灾的辐射热强,参战人员应配有防高温、防辐射、防毒的防护装备。
' + chuzhiYuanze+='2、正确选择停车位置。消防车尽量停在上风或侧上风向,与燃烧油罐保持一定的安全距离。扑救重质油罐火灾时,消防车头应背向油罐,以备紧急撤离。作战行动中的部分车辆动画加上文字配音说明
' + chuzhiYuanze+='3、注意观察火场情况变化,及时发现沸溢、喷溅征兆。
' + chuzhiYuanze+='4、充分冷却,防止复燃。燃烧罐的火势被扑灭后,要继续对其实施冷却,直至使罐内油品温度降到燃点以下为止。设有保温层的原油罐可不予以冷却。轻质油品罐不会形成高温层,冷却的重点是液面以上的罐壁。救活的图片加上文字配音说明。
' + chuzhiYuanze+='5、浮顶油罐在初期火灾时,燃烧仅限于密封围堰部位,应立即启动固定泡沫灭火装置或组织泡沫管枪从固定铁梯进行强攻,消灭围堰内的火灾。作战行动中的动画加文字配音说明。
' + chuzhiYuanze+='6、注意观察和选择有利地形,尽量选取上风向处,前沿阵地的战斗人员(水枪手等)要注意利用地形地物掩护自己,并穿着铝箔隔热服。防止坍塌及爆炸对人的危害。作战行动中的动画加文字配音说明。
' + chuzhiYuanze+='7、要与工程技术人员联系,充分工艺手段灭火。
' + chuzhiYuanze+='8、火情侦察要详细、认真、全面,尤其注意关联设备和邻近装置,注意流淌火的观察和控制,防止沿沟渠蔓延。
' + chuzhiYuanze+='9、充分利用固定消防设施。
' + chuzhiYuanze+='10、灭火剂要供应充足,兵力部署要符合灭火战斗要求,集中优势兵力,一举扑灭火灾,切忌供应出现中断和零打碎敲。
' + chuzhiYuanze+='11、注意第一力量调集,调集兵力的数量要满足灭火需要,但不能过多,以免造成现场拥挤和混乱。7-11用厂区的作战行动动画做背景加上文字配音说明
' + } + else if(biaotinum==3){ + zuzhi.style.border="1px solid #0E79A9" + tedian.style.border="1px solid #0E79A9" + zhuyi.style.border="1px solid #0E79A9" + chuzhi.style.border="1px solid #30BBEC" + chuzhiYuanze+='

1、安全防护

' + chuzhiYuanze+='①应综合考虑风力风向、工艺流程、地形地势、封闭管井等因素,' + chuzhiYuanze+='科学选择车辆站位和阵地设置;' + chuzhiYuanze+='②科学设置内、外观察哨,通过单位DCS系统设内观察哨,重点监测着火罐及周边邻近罐的介质、压力、温度、液位以及预警等级;通过在外部设观察哨,实时观察燃烧烟雾、火焰以及罐体外形变化、颤动声响等,确保整个作战行动安全可控;
' + chuzhiYuanze+='③实施登罐灭火作业,在
' + chuzhiYuanze+='完成泡沫覆盖完成后,现场人员应迅速佩戴空气呼吸器,第一时间撤离,防止硫化氢中毒。' + chuzhiYuanze+='

2、泡沫灭火

' + chuzhiYuanze+='①登罐灭火最佳时间;着火时间冬季在' + chuzhiYuanze+='60 分钟' + chuzhiYuanze+='之内,夏季在 ' + chuzhiYuanze+='40 分钟' + chuzhiYuanze+='之内;
②登罐灭火作业,必须根据现场风向和液位合理布设进攻阵地,推进灭火过程还需注意风向变化,适时调整左右推进速度;
' + chuzhiYuanze+='③严禁将移动炮、车载炮、高喷臂架炮的泡沫和冷却水直接打入罐体浮盘中央,' + chuzhiYuanze+='防止出现卡盘、沉盘。对着火罐的冷却要均匀,不能留有空白点,防止温差大导致罐体变形、塌陷;
④泡沫灭火时,
' + chuzhiYuanze+='应选用同一种类、比例、倍数的泡沫,' + chuzhiYuanze+='必须保证喷射的泡沫打在一侧的罐壁上,流向液面形成覆盖层,严禁不同方向同时喷射泡沫。
⑤固定系统操作失误,到场水罐无可利用水源,应再采取冷油循环的基础上,控制灾情。再采取紧急调集远程供水。
' + chuzhiYuanze+='

3、沸溢喷溅

' + chuzhiYuanze+='①由于处置方法、处置程序错误或排水不及时,重质油品通常在起火' + chuzhiYuanze+='3-6小时' + chuzhiYuanze+='后罐内出现水垫层,随着油温传导水垫层气化出现油品沸溢,喷射时间一般晚于沸溢时间,常常先发生沸溢,间隔一段时间,再发生喷溅。现场指挥员要科学把握进攻时机,运用好浮盘中央排水和罐内紧急排水两种方法,加强储罐定时积水排放;
' + chuzhiYuanze+='②一旦发生沸溢、喷溅征兆时,如罐体颤动、发出嘶撕声、浓黑的烟变白变淡、火焰变高耀眼、油面蠕动涌涨现象明显等,应立即发生撤离信号,指挥部应事先统一撤离信号、撤离的路径方式和集结区。
' + } + + mianban.innerHTML=chuzhiYuanze + } + + +} diff --git a/src/app/ui/luck-draw/luck-draw.component.html b/src/app/ui/luck-draw/luck-draw.component.html new file mode 100644 index 0000000..15e52b5 --- /dev/null +++ b/src/app/ui/luck-draw/luck-draw.component.html @@ -0,0 +1,55 @@ + + + + + +
+
+
+
+
未中奖
+
+
+
+
+
未中奖
+
+
+
+
+ +
+

二等奖

+

罗技鼠标

+
+
+
+
+
+
未中奖
+
+
+
+
+ +
+

三等奖

+

一包糖果

+
+
+
+
+
+
未中奖
+
+
+
+
抽 奖
+
+
+ + + + + + diff --git a/src/app/ui/luck-draw/luck-draw.component.scss b/src/app/ui/luck-draw/luck-draw.component.scss new file mode 100644 index 0000000..a9073a2 --- /dev/null +++ b/src/app/ui/luck-draw/luck-draw.component.scss @@ -0,0 +1,126 @@ +* { + margin: 0; + padding: 0; +} +body { + font-family: "Microsoft YaHei",微软雅黑; +} +.box { + width: 600px; + height: 600px; + background-color: #DEA681; + border-radius: 50%; + margin: 30px auto; + padding: 20px; + position: relative; + overflow: hidden; +} +.lottery { + width: 600px; + height: 600px; + margin: 0 auto; + border-radius: 50%; + overflow: hidden; + position: relative; + background-color: #330000; + box-shadow: 0 0 15px #000; +} +.block { + box-shadow: 0 0 1px #000 inset; + position: absolute; + width: 300px; + height: 300px; + transform-origin: right bottom 0; + -webkit-transform-origin: right bottom 0; +} +.block:nth-child(odd) { + background-color: #F1AAA6; +} +.block:nth-child(even) { + background-color: #FD5B78; +} +.block:nth-child(1) { + transform: rotate(0deg) skewY(45deg); +} +.block:nth-child(2) { + transform: rotate(45deg) skewY(45deg); +} +.block:nth-child(3) { + transform: rotate(90deg) skewY(45deg); +} +.block:nth-child(4) { + transform: rotate(135deg) skewY(45deg); +} +.block:nth-child(5) { + transform: rotate(180deg) skewY(45deg); +} +.block:nth-child(6) { + transform: rotate(225deg) skewY(45deg); +} +.block:nth-child(7) { + transform: rotate(270deg) skewY(45deg); +} +.block:nth-child(8) { + transform: rotate(315deg) skewY(45deg); +} +.content { + width: 200px; + height: 230px; + transform-origin: center center 0; + transform: skewY(-45deg) rotate(-22.5deg) translate(10px, 70px); + -webkit-transform: skewY(-45deg) rotate(-22.5deg) translate(10px, 70px); + position: absolute; + right: 0; + bottom: 0; + text-align: center; +} +.content .img { + width: 100px; + height: 100px; + margin: 0 auto; +} +.content .text { + width: 100px; + height: 50px; + font-size: 20px; + line-height: 32px; + margin: 0 auto; +} +.content .none { + width: 34px; + height: 200px; + margin: 0 auto; + text-align: center; + font-size: 34px; + line-height: 200%; + font-weight: bold; +} +.content img { + width: 80px; + height: 100px; +} +.btn { + width: 100px; + height: 100px; + border-radius: 50%; + text-align: center; + line-height: 100px; + background-color: #9966CC; + position: absolute; + font-size: 28px; + top: 270px; + left: 270px; + cursor: pointer; + box-shadow: 0 0 14px #000 inset; + color: #FFF; +} +.str { + height: 0px; + width: 0px; + position: absolute; + top: 10px; + left: 300px; + border-top: 60px solid #9966CC; + border-left: 20px solid transparent; + border-right: 20px solid transparent; +} diff --git a/src/app/ui/luck-draw/luck-draw.component.spec.ts b/src/app/ui/luck-draw/luck-draw.component.spec.ts new file mode 100644 index 0000000..8f41696 --- /dev/null +++ b/src/app/ui/luck-draw/luck-draw.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LuckDrawComponent } from './luck-draw.component'; + +describe('LuckDrawComponent', () => { + let component: LuckDrawComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LuckDrawComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LuckDrawComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/luck-draw/luck-draw.component.ts b/src/app/ui/luck-draw/luck-draw.component.ts new file mode 100644 index 0000000..6c7bd8f --- /dev/null +++ b/src/app/ui/luck-draw/luck-draw.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +declare var KinerLottery:any +@Component({ + selector: 'app-luck-draw', + templateUrl: './luck-draw.component.html', + styleUrls: ['./luck-draw.component.scss'] +}) +export class LuckDrawComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + + + + } + + + + +} diff --git a/src/app/ui/plan-assistance/plan-assistance.component.html b/src/app/ui/plan-assistance/plan-assistance.component.html new file mode 100644 index 0000000..d7a3c2e --- /dev/null +++ b/src/app/ui/plan-assistance/plan-assistance.component.html @@ -0,0 +1,98 @@ +
+ +
+
到场力量
+
+
+
+
+

{{item.Name}}

+

{{item.FireTeamName}}

+
+
已到场
+
+ +
+
+
+
+
+ + +
+
+
总平面图
+
+ + +
+
+ volume_up +
+
+
冷却
+
登罐
+
注入泡沫
+
+
+ settings_voice + + search +
+
+
+
+
+ +
+
+ +
+
+
+
+

载水量

+

载泡沫

+

载人数

+

吨位

+

执行任务

+

连接车辆

+

水源占用

+
+
+

{{canvasData.selectCar.WaterYield}}

+

{{canvasData.selectCar.Foam}}

+

{{canvasData.selectCar.PeopleNum}}

+

{{canvasData.selectCar.Tonnage}}

+

+ +

+

{{canvasData.selectCar.LinkCar}}

+

{{canvasData.selectCar.WaterOccupy}}

+
+
+
+ +
+
+
+ + +
keyboard_arrow_left
+
+
+ +
+
+
+
+
+ + +
+ +
+ +
diff --git a/src/app/ui/plan-assistance/plan-assistance.component.scss b/src/app/ui/plan-assistance/plan-assistance.component.scss new file mode 100644 index 0000000..5558547 --- /dev/null +++ b/src/app/ui/plan-assistance/plan-assistance.component.scss @@ -0,0 +1,269 @@ +.content { + width: 100%; + height: 100%; + box-sizing: border-box; + padding: 1px; + overflow: hidden; + display: flex; +} + +//左右侧 header +.header { + width: 100%; + height: 40px; + min-height: 40px; +} +.leftHeader { + line-height: 40px; + text-align: center; + font-size: 20px; + font-weight: 550; + color: #F7bA2A; + cursor: pointer; +} +.title { + display: inline-block; + margin: 1px 0; + width: 120px; + height: 38px; + line-height: 38px; + background: url('../../../assets/images/标签正常.png'); + -moz-background-size:100% 100%; + background-size:100% 100%; + font-size: 20px; + color: #fff; + padding-left: 25px; + cursor: pointer; +} + +//左侧菜单 +.left { + width: 300px; + height: 100%; + min-width: 200px; + box-sizing: border-box; + padding: 1px; + display: flex; + flex-direction: column; + .list { + flex: 1; + overflow: hidden; + .tableDiv { + height: 100%; + overflow-y: auto; + border-left: 1px solid #30bbec; + border-top: 1px solid #30bbec; + } + } + //每一行 + .tableRows { + height: 50px; + overflow: hidden; + display: flex; + margin: 13px 0; + .contentText { + font-size: 12px; + color: #fff; + cursor: pointer; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + } + .countdown{ + flex: 40%; + line-height: 50px; + font-weight: 550; + text-align: center; + } + } +} +//打开关闭左侧 车辆 +.openLeft { + width: 300px; + transition: width 0.5s; +} +.closeLeft { + width: 0px; + min-width: 0px; + transition: width 0.5s; +} + +//选中状态 +.selectIcon { + background-color: rgba(13, 139, 241, 0.7); +} +//小于五分钟 css +.smallFive { + color: rgb(245, 166, 19); +} +//大于十分钟 css +.bigTen { + color: #fff; +} + +//右侧工作区 +.center { + flex: 1; + min-width: 810px; + box-sizing: border-box; + display: flex; + flex-direction: column; + .canvas { + flex: 1; + position: relative; + } +} + +.mat-icon { vertical-align: middle; cursor: pointer; } +//下方 车辆信息 UI +.bottomWork { + width: 800px; + height: 100px; + position: absolute; + bottom: 5px; + left: 50%; + margin-left: -400px; + z-index: 10; + display: flex; + flex-direction: column; + >div{ background-color:rgba(2, 44, 73, 0.9); } + button { width: 50px; height: 40px; background-color: #67c23a; color: #fff; } + //table表格 + .publicRow { + height: 50%; + display: flex; + align-items: center; + justify-content: center; + p { + flex: 1; + text-align: center; + line-height: 35px; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + cursor: pointer; + } + } + .taskInput { + width: 100px; + height: 24px; + padding-left: 5px; + outline: none; + border: none; + background-color:rgba(255,255,255,0); + background: url('../../../assets/images/输入框.png') no-repeat; + background-size: 100% 100%; + color: #fff; + } +} + +//右侧 楼层UI +.rightStorey { + width: 100px; + height: 250px; + position: absolute; + right: 2px; + top: 50%; + margin-top: -125px; + z-index: 10; + display: flex; + flex-direction: column; + background-color:rgba(2, 44, 73, 0.9); + color: #fff; + font-weight: 300; + >div {text-align: center; line-height: 25px;} +} +.showRightStorey { + position: absolute; + right: 0; + top: 50%; + margin-top: -13px; + z-index: 10; + width: 26px; + height: 26px; + line-height: 26px; + text-align: center; + background-color:rgba(2, 44, 73, 0.9); + color: #fff; +} +//打开关闭右侧 楼层 +.openRight { + margin-right: 0px; + transition: margin-right 0.5s; +} +.closeRight { + margin-right: -300px; + transition: margin-right 0.5s; +} + +//右侧语音 UI +.rightSpeak { + position: absolute; + top: 40px; + left: -275px; + width: 310px; + height: 320px; + z-index: 11; + box-sizing: border-box; + padding: 3px; + border: 1px solid #30bbec; + background-color:rgba(2, 44, 73, 0.9); + color: #fff; + display: flex; + flex-direction: column; + .mat-icon { + font-size: 28px; + width: 28px; + height: 28px; + margin: 3px 10px; + } + .sayBgc { + flex: 1; + box-sizing: border-box; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + color: #30bbec; + } + .iconButton { + margin: 10px; + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + } +} + +//右侧 绘制工具 +.draw { + display: inline-block; + position: absolute; + width: 80px; + height: 38px; + top: 1px; + left: 50%; + margin-left: -40px; + padding-top: 6px; + label { + display: inline-block; + width: 24px; + height: 24px; + margin: 0 5px; + border-radius: 50%; + cursor: pointer; + } + :first-child { + background: url('../../../assets/images/route.png') no-repeat center center; + background-size: 16px 16px; + background-color: #fff; + } + :last-child { + background: url('../../../assets/images/direction.png') no-repeat center center; + background-size: 16px 16px; + background-color: #fff; + } +} \ No newline at end of file diff --git a/src/app/ui/plan-assistance/plan-assistance.component.spec.ts b/src/app/ui/plan-assistance/plan-assistance.component.spec.ts new file mode 100644 index 0000000..f0a2929 --- /dev/null +++ b/src/app/ui/plan-assistance/plan-assistance.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PlanAssistanceComponent } from './plan-assistance.component'; + +describe('PlanAssistanceComponent', () => { + let component: PlanAssistanceComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PlanAssistanceComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PlanAssistanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/plan-assistance/plan-assistance.component.ts b/src/app/ui/plan-assistance/plan-assistance.component.ts new file mode 100644 index 0000000..fdae6ff --- /dev/null +++ b/src/app/ui/plan-assistance/plan-assistance.component.ts @@ -0,0 +1,7464 @@ +import { Component, OnInit, AfterViewInit, ViewChild, } from '@angular/core'; +import { WorkingAreaComponent } from 'src/app/working-area/working-area.component'; +import {CanvasShareDataService} from '../../canvas-share-data.service'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import * as ObjectID from 'bson-objectid'; + +@Component({ + selector: 'app-plan-assistance', + templateUrl: './plan-assistance.component.html', + styleUrls: ['./plan-assistance.component.scss'] +}) +export class PlanAssistanceComponent implements OnInit, AfterViewInit { + constructor(public canvasData: CanvasShareDataService, public snackBar: MatSnackBar, ) { } + + @ViewChild('workingArea') + workingArea: WorkingAreaComponent; + + demoData = [ + { + Id: '5f670ceae03abe3856d87d3e', + Name: '消防泵房', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '80', + Point: { + x: 538.0725371265185, + y: 790.8249488152024 + }, + Width: 45, + Border: null, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7c0ff1bb3cf106508afaed.png', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + MultiPoint: null, + TemplateId: '5e7c0ff961550e2754d461b9', + FireElementId: '5e7967a80814180f1c1ecaa4', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '位置', + PropertyType: 0, + PropertyValue: '' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f670d5c8db9a325049fa971.jpg' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f670d638db9a325049fa972.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f670dd3e03abe3856d87d3f', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -854.3835678799273, + y: 688.1144590593601 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '1' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6711f5e03abe3856d87d43', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -539.9645631808662, + y: 271.248256281619 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '1' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67128ae03abe3856d87d44', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -563.1123674185176, + y: 272.12837517909185 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671330e03abe3856d87d45', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -51.57937113008251, + y: 271.9224183841443 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '3' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671341e03abe3856d87d47', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 299.11560093170795, + y: 5.1063714995351575 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '4' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671357e03abe3856d87d49', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 500.9012712134421, + y: 432.9232113342218 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '5' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67136fe03abe3856d87d4a', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 88.60901628649833, + y: -362.81780743424156 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '6' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671382e03abe3856d87d4b', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1089.647824545333, + y: -680.096209373906 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '7' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671396e03abe3856d87d4c', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 916.5868780327887, + y: -357.72777959563734 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '8' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6713afe03abe3856d87d4d', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1267.7987988964815, + y: -374.6945390576514 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '9' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6713c0e03abe3856d87d4e', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1507.3371984219418, + y: -451.51880641310424 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '10' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671412e03abe3856d87d4f', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2114.4400960509874, + y: -142.24993442805783 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '11' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671425e03abe3856d87d50', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1936.2891216998387, + y: 278.525700229893 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671434e03abe3856d87d51', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1656.3375905766052, + y: 275.1323483374903 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '13' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671441e03abe3856d87d52', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1155.818186447188, + y: -8.212534678145914 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '14' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67144de03abe3856d87d53', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2915.2711426580545, + y: -347.5477239184288 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '15' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67145be03abe3856d87d54', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2913.5744667118533, + y: 185.20852318881538 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '16' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67146ee03abe3856d87d55', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2096.1298123494207, + y: 649.4948028638328 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '17' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671481e03abe3856d87d56', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1901.6453605180648, + y: 1239.3597336930006 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '18' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67148be03abe3856d87d57', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1354.5242652562279, + y: 1235.0853501362674 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '19' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6714ade03abe3856d87d58', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1160.7655915494565, + y: 783.9050578476852 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '20' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6714bde03abe3856d87d59', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 993.7723947424533, + y: 1345.901393255869 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '21' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6714c5e03abe3856d87d5a', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 577.8951065403974, + y: 1345.9013932558687 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '22' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6714d4e03abe3856d87d5b', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 126.55162198821722, + y: 1029.7104791062238 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '23' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6714ebe03abe3856d87d5c', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -179.95583881318612, + y: 1030.9615299666377 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '24' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6714ffe03abe3856d87d5d', + Name: '地上消火栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -435.1702143376199, + y: 1028.45942824581 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7aaebaefc8471c94ff19eb.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7aaef87ba7ea2e4ce5a550', + FireElementId: '5e7967810814180f1c1ecaa2', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '25' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '牙口', + PropertyType: 0, + PropertyValue: '65*2/100' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管径', + PropertyType: 0, + PropertyValue: 'DN200' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: 'MPa', + PropertyName: '压力', + PropertyType: 2, + PropertyValue: '0.12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '开关类型', + PropertyType: 0, + PropertyValue: '扳手' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '管网形式', + PropertyType: 0, + PropertyValue: '环状' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6711aa8db9a325049fa973.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67158fe03abe3856d87d5e', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -5.796097596718141, + y: 273.14583520021273 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67165ce03abe3856d87d5f', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 462.9058952959447, + y: 432.54246436208996 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '3' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671670e03abe3856d87d60', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1155.2026113881834, + y: 36.88757093210626 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '4' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67167ee03abe3856d87d61', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1218.8312292956107, + y: -356.45297613199 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '5' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671690e03abe3856d87d62', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1561.5581030242533, + y: -469.2491624224295 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '6' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67169de03abe3856d87d63', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1046.7447399550688, + y: -664.473331002036 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '7' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6716bce03abe3856d87d64', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2115.4162998093598, + y: -15.172207355788942 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '8' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6716c9e03abe3856d87d65', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2915.112338509526, + y: -292.8243582245628 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '9' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6716e0e03abe3856d87d66', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1988.5158013887126, + y: 278.0216677369151 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '11' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6716f6e03abe3856d87d67', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2975.3868020413206, + y: 191.2124158152834 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '10' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671701e03abe3856d87d68', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1703.0254066222362, + y: 272.97200813738664 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671717e03abe3856d87d69', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2092.983870088383, + y: 819.7323282038833 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '13' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671730e03abe3856d87d6a', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1951.9378727440935, + y: 1239.7359647402122 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '14' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67173be03abe3856d87d6b', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1408.1271940944434, + y: 1236.6016092436726 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '15' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671744e03abe3856d87d6c', + Name: '泡沫栓', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1160.4571509862274, + y: 942.5243236030998 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b3a628121c2286c0cb294.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b3a6a0137e12020bd7f7f', + FireElementId: '5e796b4a0814180f1c1ecabb', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '16' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '型号', + PropertyType: 0, + PropertyValue: 'PS100-65*2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '出口', + PropertyType: 0, + PropertyValue: '法兰' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6715768db9a325049fa974.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671767e03abe3856d87d6d', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -592.1952057948927, + y: 271.2807226550343 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '1' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671842e03abe3856d87d6e', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -97.79605019753274, + y: 272.1435484065131 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '2' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671853e03abe3856d87d6f', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1150.6880828651256, + y: -69.45260716773461 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '3' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671863e03abe3856d87d70', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1152.4040527919356, + y: -333.2077578697689 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '4' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6718dbe03abe3856d87d71', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1456.632463331941, + y: -431.236912377104 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '5' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6718ece03abe3856d87d72', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2115.794019501953, + y: -194.61481529043306 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '6' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6718fce03abe3856d87d73', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2918.6189917603, + y: -79.68408241976437 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '7' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67190ce03abe3856d87d74', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1887.6227115969486, + y: 278.62937888290867 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '8' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671916e03abe3856d87d75', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1609.5189625658177, + y: 276.4352097691058 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '9' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671945e03abe3856d87d76', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 2095.5215915504127, + y: 596.2041604311792 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '10' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671954e03abe3856d87d77', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1851.9430767861622, + y: 1238.0508628431387 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '11' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67195de03abe3856d87d78', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1286.183169018807, + y: 1239.7943307666721 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '12' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f671978e03abe3856d87d79', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: 1159.3027504423208, + y: 738.1954273316667 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '13' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f67198ce03abe3856d87d7a', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -32.3318372843471, + y: 1029.7104791062238 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '14' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '固定水炮', + Angle: 0, + Pipelines: [], + Type: 0, + Color: '#066eed80', + Point: { + x: -276.2867550650558, + y: 1028.4594282458097 + }, + Width: 45, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 45, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: null, + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [ + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '15' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '', + PropertyName: '压力', + PropertyType: 0, + PropertyValue: '0.1Mpa' + }, + { + Tag: '', + Order: 0, + Enabled: true, + Visible: true, + Required: false, + RuleName: '', + RuleValue: '', + PhysicalUnit: '张', + PropertyName: '图片', + PropertyType: 4, + PropertyValue: '5' + }, + { + Tag: null, + Order: 0, + Enabled: false, + Visible: false, + Required: false, + RuleName: null, + RuleValue: null, + PhysicalUnit: null, + PropertyName: '图片', + PropertyType: 3, + PropertyValue: '/api/Objects/WebPlan2D/5f67042b9e91f4410005f55c/5f6717b48db9a325049fa975.jpg' + } + ], + IsFromBuilding: true, + InteractiveMode: 0 + } + ]; + // 所有车辆信息 + allCarsData = [ + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 3, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/水罐消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '水罐消防车', + FireTeamName: '港北区解放路消防救援站', // 所属消防队 + ReachTime: 0, // 到场剩余时间 + WaterYield: '8t', // 载水量 + Foam: '0t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '10t', // 吨位 + Assignment: '供液', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '港北区解放路消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '港北区解放路消防救援站', // 所属消防队 + ReachTime: 0, // 到场剩余时间 + WaterYield: '10t', // 载水量 + Foam: '2t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '12t', // 吨位 + Assignment: '灭火', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '港北区解放路消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '港北区解放路消防救援站', // 所属消防队 + ReachTime: 0, // 到场剩余时间 + WaterYield: '4t', // 载水量 + Foam: '1t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '6t', // 吨位 + Assignment: '灭火', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '港北区解放路消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 1, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/举高喷射消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '举高喷射消防车', + FireTeamName: '港北区解放路消防救援站', // 所属消防队 + ReachTime: 0, // 到场剩余时间 + WaterYield: '18t', // 载水量 + Foam: '2t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '20t', // 吨位 + Assignment: '灭火', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '港北区解放路消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 3, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/水罐消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '水罐消防车', + FireTeamName: '八塘消防救援站', // 所属消防队 + ReachTime: 237, // 到场剩余时间 + WaterYield: '12t', // 载水量 + Foam: '0t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '14t', // 吨位 + Assignment: '冷却', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '八塘消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '八塘消防救援站', // 所属消防队 + ReachTime: 249, // 到场剩余时间 + WaterYield: '6t', // 载水量 + Foam: '2t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '8t', // 吨位 + Assignment: '冷却', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '八塘消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '八塘消防救援站', // 所属消防队 + ReachTime: 277, // 到场剩余时间 + WaterYield: '3t', // 载水量 + Foam: '1t', // 载泡沫 + PeopleNum: 8, // 载人数 + Tonnage: '5t', // 吨位 + Assignment: '堵截', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '八塘消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 1, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/举高喷射消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '举高喷射消防车', + FireTeamName: '八塘消防救援站', // 所属消防队 + ReachTime: 310, // 到场剩余时间 + WaterYield: '16t', // 载水量 + Foam: '2t', // 载泡沫 + PeopleNum: 4, // 载人数 + Tonnage: '18t', // 吨位 + Assignment: '灭火', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '八塘消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '龚州消防救援站', // 所属消防队 + ReachTime: 666, // 到场剩余时间 + WaterYield: '6t', // 载水量 + Foam: '2t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '8t', // 吨位 + Assignment: '供液', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '龚州消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '龚州消防救援站', // 所属消防队 + ReachTime: 721, // 到场剩余时间 + WaterYield: '5t', // 载水量 + Foam: '1t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '7t', // 吨位 + Assignment: '供液', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '龚州消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 2, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/泡沫消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '泡沫消防车', + FireTeamName: '龚州消防救援站', // 所属消防队 + ReachTime: 978, // 到场剩余时间 + WaterYield: '3t', // 载水量 + Foam: '1t', // 载泡沫 + PeopleNum: 6, // 载人数 + Tonnage: '5t', // 吨位 + Assignment: '供液', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '龚州消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + }, + { + TemplateId: null, + FloorId: null, + Angle: 0, + Pipelines: [], + Type: 1, + Color: 0, + Enabled: true, + FillMode: 0, + FireElementId: 0, + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Height: 45, + Width: 45, + Id: ObjectID.default.generate(), + ImageUrl: './assets/images/举高喷射消防车.png', + InteractiveMode: 0, + MultiPoint: null, + Point: { + x: 1295, + y: 1237 + }, + Name: '举高喷射消防车', + FireTeamName: '龚州消防救援站', // 所属消防队 + ReachTime: 999, // 到场剩余时间 + WaterYield: '18t', // 载水量 + Foam: '2t', // 载泡沫 + PeopleNum: 4, // 载人数 + Tonnage: '20t', // 吨位 + Assignment: '灭火', // 执行任务 + LinkCar: [], // 连接车辆 + WaterOccupy: [], // 水源占用 + PropertyInfos: [ + { + Enabled: true, + Order: 0, + PhysicalUnit: '', + PropertyName: '名称/编号', + PropertyType: 0, + PropertyValue: '龚州消防救援站', + Required: false, + RuleName: '', + RuleValue: '', + Tag: '', + Visible: true + } + ], + Border: null, + DrawMode: null, + Thickness: 0, + IsFromBuilding: false, + GameMode: 2 + } + ]; + + bottomIsShow = false; // 底部车辆信息是否展示 + rightIsShow = true; // 右侧楼层是否展示 + rightSayIsShow = false; // 右侧语音是否展示 + selectCarID = ''; // 选中车辆ID 选中效果css + + ngOnInit(): void { + const that = this; + window.setTimeout(() => { + document.getElementById('center').oncontextmenu = function(event) { + that.workingArea.cancelPaint(); + event.preventDefault(); + }; + }); + } + + ngAfterViewInit(): void { + this.workingArea.loadDemoScene(this.demoData, 0.149); + + this.dataInit(); + // 监听canvas组件选中素材事件 + this.workingArea.on('select', obj => { + // 选中素材属性注入函数 + if (obj && obj.assetData && obj.assetData.ReachTime != undefined) { + this.selectCarID = JSON.parse(JSON.stringify( obj.assetData.Id || '' )); // 选中样式 赋值ID + const linkCar = this.canvasData.getLinkCarName(obj); // 连接车辆 + const waterOccupy = this.canvasData.getWaterOccupyName(obj); // 水源占用 + obj.assetData.LinkCar = linkCar; // 连接车辆 + obj.assetData.WaterOccupy = waterOccupy; // 水源占用 + this.canvasData.selectCar = obj.assetData; + this.bottomIsShow = true; + } + }); + // 监听canvas组件取消选中素材事件 + this.workingArea.on('deselect', obj => { + this.bottomIsShow = false; + this.selectCarID = ''; + }); + } + + // 开始绘制 + plot(e) { + e == 0 ? this.workingArea.beginPaintingArrows() : this.workingArea.beginPaintPipeline(); + } + + // 到场车辆初始化 + dataInit() { + this.allCarsData.forEach(item => { + item.ReachTime == 0 ? this.workingArea.ShowCarIcon(item) : null; + }); + } + + // 倒计时结束 + handleEvent(e, item) { + if (e.left == 0) { + item.ReachTime = 0; + this.workingArea.ShowCarIcon(item); + } else { + item.ReachTime = e.left / 1000; + } + } + + // 选择 车辆 + selectCar(e, isSelect: boolean = true) { + if (e.ReachTime == 0) { + const list = []; + list.push(e.Id); + isSelect ? this.workingArea.setHighlight(list) : null; + } else if (e.ReachTime && e.ReachTime != 0) { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000; + this.snackBar.open('车辆目前未到场', '确定', config); + } + } + + // 关闭 底部车辆信息 + closeBottom() { + this.bottomIsShow = false; + } + + // 打开 右侧楼层 + openRight() { + this.rightIsShow = true; + } + + // 关闭 右侧楼层 + closeRight() { + this.rightIsShow = false; + } + + // 打开 关闭 右侧语音 + toggleSay() { + this.rightSayIsShow = !this.rightSayIsShow; + } + + + +} diff --git a/src/app/ui/plan/collection-tools.component.html b/src/app/ui/plan/collection-tools.component.html new file mode 100644 index 0000000..83a7929 --- /dev/null +++ b/src/app/ui/plan/collection-tools.component.html @@ -0,0 +1,264 @@ +
+ + +
+
+ 总平面图 +
+
+ {{item.name}} +
+ +
+ volume_up +
+
+
泵房
+
控制室
+ +
+
+
+ settings_voice +
+
+ 按住说话 +
+
+ search +
+
+
+
+ +
+ + +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+ +
+ + + +
+ +
+ + 属性 + + + 消防要素 + +
+
+ +
+ +
+

面积(平方米)

+
{{canvasData.selectStorey.area}}
+

详情

+
+ {{canvasData.selectStorey.details}} +
+
+ +
+

{{assetName}}

+ +
+

宽度(像素)

+
{{assetWidth}}
+

高度(像素)

+
{{assetHeight}}
+

角度

+
+ +
{{sliderValue}}
+
+
+ +
+

厚度

+
+ +
{{sliderValueThickness}}
+
+
+ + +
+
+ 颜色 +
+ +
+
+ +

透明度

+ + +
{{colorDivSliderValue}}%
+
+
+ +
+

{{item.PropertyName}}({{item.PhysicalUnit}})

+ +
{{item.PropertyValue}}
+
+ +
+

{{item.PropertyName}}({{item.PhysicalUnit}})

+ +
{{item.PropertyValue}}
+
+ +
+

{{item.PropertyName}}({{item.PhysicalUnit}})

+
{{item.PropertyValue}}
+
+ +
+
+ +

{{item.PropertyName}}

+ {{imagesArr.length ? imagesArr.length : 0}} / {{item.PropertyValue}} + +
+
+
+
+ +
+
+
+
+
+ +
+

{{item.PropertyName}}

+
+
西
+
+
+
东南
+
西南
+
东北
+
西北
+ +
+ +
+

{{item.PropertyName}}

+
+
+ + +
+ +
+

{{item.PropertyName}}

+
全部
+
高区
+
中区
+
低区
+
高中区
+
高低区
+
中底区
+
+ +
+

{{item.PropertyName}}

+
消火栓
+
喷淋
+
水幕
+
泡沫
+
消防
+
+
+
+ +
+ +
+ +
+ + + + + + + {{node.name}} + + ({{node.children.length}}) + visibility + + + + + + + {{node.name}} + + ({{node.children.length}}) + visibility + + + +
+
+
+
+ +
+
+ +
\ No newline at end of file diff --git a/src/app/ui/plan/collection-tools.component.scss b/src/app/ui/plan/collection-tools.component.scss new file mode 100644 index 0000000..7ab6623 --- /dev/null +++ b/src/app/ui/plan/collection-tools.component.scss @@ -0,0 +1,495 @@ +@import './panel.scss'; +.icongray{ + color: #D9D0DC; +} +.content111 { + width: 100%; + height: 100%; + overflow: hidden; + box-sizing: border-box; + padding: 1px; + display: flex; + flex-direction: column; + .buildingbtnchecked{ + color: white; + background-image: url("../../../assets/images/标签选中.png")!important; + } +} + +//头部操作栏 +.headerOperate { + position: relative; + span{ + font-size: 18px; + } + flex: 2%; + display: flex; + align-items:center; + min-height: 40px; + box-sizing: border-box; + margin: 3px 0; + + .bigeditdeletebtn{ + margin-right: 12px; + height: 80%; + display: flex; + flex-direction: column; + // align-items:center;/*由于flex-direction: column,因此align-items代表的是水平方向*/ + justify-content: center; + user-select: none; + background-image: url("../../../assets/images/标签正常.png") ; + background-size:100% 100%; + color: white; + span{ + padding: 0 13px; + padding-right: 18px; + } + } + .bigeditdeletebtn:hover{ + cursor: pointer; + background-image: url("../../../assets/images/标签经过.png") ; + } + .bigTalkBox{ + user-select: none; + .titleIcon{ + font-size: 33px; + vertical-align: sub; + color: white; + } + .talkBox{ + width: 309px; + height: 326px; + border: 1px solid #30bbec; + background-color: #013a64; + opacity: .9 ; + position: absolute; + top: 32px; + right:4px; + z-index: 2000; + .btndiv{ + div{ + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + + } + div:nth-child(1){ + background-color: #fe9400; + margin: 10px; + } + div:nth-child(2){ + background-color: #f95e5a; + } + } + .bottomDiv{ + position: absolute; + bottom:6px; + width: 100%; + height: 32px; + line-height: 32px; + display: flex; + color: white; + text-align: center; + div:nth-child(1){ + flex: 1; + } + div:nth-child(2){ + flex: 6; + color: #409eff; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + } + div:nth-child(3){ + flex: 1; + + } + } + } + } +} + +//功能区 +// icon统一样式 +.mat-icon { + cursor:pointer; + vertical-align: middle; +} +//左右两侧功能栏 统一样式 +.publicCss { + overflow: hidden; + border-radius: 5px; + top: 0; +} +.functionalDomain { + flex: 98%; + overflow: hidden; + .functionalDomainContent { + // position: relative; + width: 100%; + height: 100%; + display: flex; + overflow: hidden; + } + .canvas{ + flex: 5; + } + .functionalDomainLeft { + // background: url("../../../assets/images/列表背景.png"); + background-size: 100% 100%; + display: flex; + flex-direction: column; + margin-left: 0px; + transition: margin-left 0.5s; + // min-width: 235px; + border: 1px solid #30bbec; + width: 235px; + left: 0; + z-index: 111; + .leftDragDiv{ + position: absolute; + right: 0; + height: 100%; + width: 3px; + z-index: 1000; + cursor: e-resize; + } + flex: 1; + } + .functionalDomainRight { + color: white; + z-index: 1001; + margin-right: 0px; + transition: margin-right 0.5s; + border: 1px solid #30bbec; + width: 235px; + right: 0; + flex: 1; + } + //右边导航栏显示隐藏 + .togglePanel2 { + margin-right: -2000px; + transition: margin-right 1s; + } + //左侧导航栏显示隐藏 + .togglePanel { + margin-left: -2000px; + transition: margin-left 1s; + } + +} + +//右边操作栏 +.title{ + width: 100%; + height: 40px; + line-height: 40px; + border-bottom:2px solid #accbf2; + display: flex; + align-content: center; + span{ + display: inline-block; + flex: 1; + text-align: center; + } + span:hover{ + cursor: pointer; + } +} +.selectedTitle{ + background: #0c2d44; +} + +//右侧属性 +.property{ + display: flex; + flex-flow: column; + .siteproperty{ + height: 100%; + overflow-y: auto; + p{ + color: #d0e0f4; + padding-left: 7px; + letter-spacing:3px; + margin: 5px 0; + } + .siteproperty_size{ + border-bottom:1px solid #d0e0f4; + width: 93%; + margin: 0 auto; + min-height: 21px; + color: #2399f1; + padding-bottom: 5px; + font-size: 16px; + letter-spacing:2px; + } + .rightAttribute{ + width: 12%; + height: 99.5%; + position: absolute; + top: 0; + right: 0; + bottom: 0; + border: 2px solid #464646; + } + } + .assetsproperty{ + overflow-y: auto; + height: 100%; + p{ + + color: #d0e0f4; + padding-left: 7px; + letter-spacing:3px; + margin: 5px 0; + } + .siteproperty_size{ + border-bottom:1px solid #d0e0f4; + width: 93%; + margin: 0 auto; + min-height: 21px; + color: #2399f1; + padding-bottom: 5px; + font-size: 16px; + letter-spacing:2px; + } + span{ + font-size: 15px; + } + input{ + height: 18px; + } + .biginput{ + display: block; + width: 88%; + margin: 0 auto; + } + .smallinput{ + display: block; + width: 19%; + margin-left: 8px; + } + .textarea{ + display: block; + width: 88%; + height: 50px; + margin: 0 auto; + } + .swiper-button-next{ + right: 6px; + } + .swiper-button-prev{ + left: 6px; + } + .swiper-container{ + // --swiper-theme-color: #ff6600;/* 设置Swiper风格 */ + // --swiper-navigation-color: #00ff33;/* 单独设置按钮颜色 */ + --swiper-navigation-size:20px;/* 设置按钮大小 */ + } + .hoverred:hover{ + color: rgb(187, 28, 28); + } + .selectDiv{ + height: 21px; + position: relative; + margin-bottom: 5px; + select{ + width: 98px; + height: 22px; + vertical-align: middle; + position: absolute; + right: 10px; + top: 1px; + border: 1px solid rgb(208, 211, 214); + border-radius: 2px; + } + } + .colorBigDiv{ + width: 88%; + margin-left: 8px; + + + .colorDiv{ + .colorLi{ + width: 24px; + height: 24px; + list-style: none; + float: left; + border: 2px solid white; + } + .coloractive{ + border: 2px solid black; + } + } + } + .colorBigTemplateDiv{ + span{ + color: #9c9fa5; + font-size: 14px; + height: 26px; + line-height: 26px; + } + .colorTemplateDiv{ + width: 65%; + height: 22px; + display: inline-block; + vertical-align: middle; + margin-left: 26px; + } + } + } +} +//右侧消防要素 +.firecategories{ + position: relative; + // display: flex; + // flex-flow: column; + .firecategoriesTree{ + overflow-y: auto; + height: 100%; + mat-tree-node{ + position: relative; + } + .isLookCss{ + position: absolute; + right: 6px; + z-index: 1000; + } + } + .mat-tree{ + background-color:transparent; + .mat-tree-node{ + color: white!important; + } + } +} + +// 解决轮播图蓝框问题 +div:focus { + outline: none; +} + +//没有图片时显示无图片背景图 +.noImgCss{ + background: url(../../../assets/images/noImg.png) repeat center center; + background-size: 88% 100%;/*按比例缩放*/ +} +.input{ + width: 18px; + height: 18px; + vertical-align: middle; + margin-left: 9px; + margin-right: 3px; +} + + +// tree +.mat-tree-node{ + min-height: 0; + height: 32px; + line-height: 32px; + font-size: 13px; + cursor: pointer; +} +.treeNode:hover{ + background-color: #105a8f +} +.isLookPattern{ + display: none; +} +.treeText{ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + display: inline-block; + width: 65px; +} + +.bigBox{ + width: 700px; + height: 40px; + position: absolute; + overflow: hidden; + right: 0; +} +.weatherBox{ + height: 40px; + width: 700px; + line-height: 40px; + position: absolute; + right: 0; + transition: right linear .5s; + .openbtn{ + font-size: 45px; + height: 45px; + width: 40px; + } + .name{ + font-size: 16px; + vertical-align: middle; + margin-left: 3px; + } + input{ + width: 140px; + height: 22px; + margin-left: 3px; + } + select{ + width: 96px; + height: 25px; + margin-left: 3px; + vertical-align: middle; + } +} +.open{ + right: 0px; +} +.close{ + right:-622px; +} +.bottomCss{ + position: absolute; + left: 232px; + right: 0px; + bottom: 0; + height: 158px; + width: auto; + z-index: 100; + background-color: white; + border: 1px solid #464646; + .dragDiv{ + width: 100%; + height: 3px; + position: absolute; + top: 0; + z-index: 1000; + cursor: n-resize; + } + .title{ + height: 35px; + background-color: #464646; + div{ + background-color: #464646; + float: left; + width: 80px; + color: white; + font-size: 13px; + padding-left: 5px; + cursor: pointer; + } + .detailsAndattentBtn{ + background-color: #595959; + } + } + .body{ + textarea{ + width: 100%; + border-radius: 0px; + } + } +} \ No newline at end of file diff --git a/src/app/ui/plan/collection-tools.component.ts b/src/app/ui/plan/collection-tools.component.ts new file mode 100644 index 0000000..63062ad --- /dev/null +++ b/src/app/ui/plan/collection-tools.component.ts @@ -0,0 +1,1469 @@ +import { Component, OnInit, Inject, ViewChild,ElementRef,Renderer2, ViewContainerRef } from '@angular/core'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import Swiper from 'swiper'; +import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; +import {FlatTreeControl} from '@angular/cdk/tree'; +import {WorkingAreaComponent} from '../../working-area/working-area.component' +import {CanvasShareDataService,GameMode} from '../../canvas-share-data.service' //引入服务 +import Viewer from 'viewerjs'; +@Component({ + selector: 'plan', + templateUrl: './collection-tools.component.html', + styleUrls: ['./collection-tools.component.scss'] +}) +export class planComponent implements OnInit { + + @ViewChild('canvas',{static: true}) canvas:WorkingAreaComponent; //父组件中获得子组件的引用 + + constructor(private http:HttpClient,public dialog: MatDialog,public snackBar: MatSnackBar,private element: ElementRef,public canvasData: CanvasShareDataService) { } + // tree配置 + private _transformer = (node, level: number) => {//要给渲染节点传那些属性参数 + return { + expandable: !!node.children && node.children.length > 0, + name: node.name || node.Name, + level: level, + id: node.id || node.Id, + children:node.children, + isTemplate:node.isTemplate, + isNewElement:node.isNewElement, + isLook:node.isLook, + isLookPattern:node.isLookPattern || null + }; + } + treeControl = new FlatTreeControl(node => node.level, node => node.expandable); + + treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children); + dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); + hasChild = (_: number, node: any) => node.expandable; + + colors = ['#076eec','#4dd0e1','#00ee76','#ffff00','#eeb422', + '#FF6A6A','#ff0000','#ff6eb4','#00bfff','#54ff9f', + '#009688','#836fff','#ff8c00','#ee00ee','#ffa07a', + '#00C500','#00ffff','#6495ed','#ffdAb9','#AA00FF'] + selected = "1" //图标大小选择框 + + allBuildings //该单位所有建筑 + beforeOneCheckedBuilding:any = {name:"总平面图"}; //当前点击选择的建筑 + checkedBuildingIndex:number = -1 //当前点击选择的建筑index + isEditPat:boolean = true //当前是否是编辑模式 + + assetName:String//素材名称 + assetWidth:number//素材宽度 + assetHeight:number//素材高度 + sliderValue:number = 0//角度滑竿的值 + sliderValueThickness:number = 0//厚度滑竿的值 + isHighLight:boolean = false//是否高亮选择框 + PropertyInfos = [] //去除图片链接真正用于循环的内容 + imagesArrNum //素材属性图片数量上限 + imagesArr = [] //属性中的图片链接集合 + clickedIndex //点击图片时的索引值 + + //传入素材对象,设置右侧属性栏内容 + canvasAssetObj //传入的素材属性对象 + isImgNumCss = false //控制上传文件input显隐 + mySwiper:any //轮播图实例 + + gallery//viewerJs实例 + //设置属性框 + setAssetsProperty(obj){ + //初始化viewerJs实例 + setTimeout(() => { + obj.PropertyInfos.forEach(item => { + if(item.PropertyType == 4){ + this.gallery = new Viewer(document.getElementById('viewerjs'),{ + url: 'data-original' + }); + } + }) + }, 0); + + //从颜色中取出透明度 + let color = obj.Color + let strh = color.substring(color.length -2,color.length) + let opacity = Math.round(parseInt(strh,16)/255 * 100) + this.colorDivSliderValue = opacity + + this.isShowProperty = true + this.isShowAttribute = false + let _this = this + this.imagesArr = [] + this.imagesArrNum = "" + + this.canvasAssetObj = obj //将选中素材对象存到本地变量 + + this.assetName = obj.Name + this.assetWidth = obj.Width + this.assetHeight = obj.Height + this.sliderValue = obj.Angle + this.selectedcolor = obj.Color + this.PropertyInfos = obj.PropertyInfos + this.sliderValueThickness = obj.Thickness + this.PropertyInfos.forEach(item => { + if(item.PropertyType == 3){ //如果是图片链接类型 + this.imagesArr.push(item) + } + if(item.PropertyType == 4){//图片数值上线 + this.imagesArrNum = item.PropertyValue + } + }) + + //如果存在图片则加载轮播图 + if(this.imagesArr.length){ + setTimeout(() => { + this.mySwiper = new Swiper('.swiper-container',{ + loop: false, + // grabCursor: true, + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + on:{ + click: function(){ + _this.clickedIndex = this.clickedIndex + }, + } + }); + }, 0); + } + //判断此时图片数量是否达到上限 + if(this.imagesArr.length < this.imagesArrNum){//如果不超出 + this.isImgNumCss = true + }else{ + this.isImgNumCss = false + } + } + + //右侧属性和消防要素切换 + isProperty = true + rightSwitch(type){ + if(type == 1){ + this.isProperty = true + }else{ + this.isProperty = false + } + } + //打开说话框 + isOpenTalk = false + openTalkDiv(){ + this.isOpenTalk = !this.isOpenTalk + } + + + //消防要素div边框高度调节 + firecategoriesDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyHeight = document.body.clientHeight //网页宽度 + let maxHeight = this.element.nativeElement.querySelector('#rightDiv').clientHeight - 35 //最大宽度 + if(bodyHeight - ev.clientY >= maxHeight){ + this.element.nativeElement.querySelector('#firecategories').style.height = maxHeight+ 'px' + this.element.nativeElement.querySelector('#property').style.height = 35+ 'px' + }else{ + this.element.nativeElement.querySelector('#firecategories').style.height = (bodyHeight - ev.clientY) + 'px' ; + this.element.nativeElement.querySelector('#property').style.height = (this.element.nativeElement.querySelector('#rightDiv').clientHeight - this.element.nativeElement.querySelector('#firecategories').clientHeight) + 'px' + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + //左侧div边框宽度调节 + leftDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyWidth = document.body.clientWidth //网页宽度 + let maxWidth = bodyWidth - 260 - this.element.nativeElement.querySelector('#rightDiv').clientWidth //最大宽度 + if(ev.clientX - 240 >= maxWidth){ + this.element.nativeElement.querySelector('#leftDiv').style.width = maxWidth + 'px' + }else{ + this.element.nativeElement.querySelector('#leftDiv').style.width = ev.clientX - 260 + 'px'; + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + + + //右侧div边框宽度调节 + rightDivMouseDown(e){ + document.onmousemove = (ev) => { + let bodyWidth = document.body.clientWidth //网页宽度 + let maxWidth = bodyWidth - 240 - this.element.nativeElement.querySelector('#leftDiv').clientWidth //最大宽度 + if(bodyWidth - ev.clientX >= maxWidth){ + this.element.nativeElement.querySelector('#rightDiv').style.width = maxWidth + 'px' + }else{ + this.element.nativeElement.querySelector('#rightDiv').style.width = bodyWidth - ev.clientX + 'px'; + } + } + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + } + } + + + //素材宽度输入框改变 + assetWidthIunput(){ + this.canvasAssetObj.Width = this.assetWidth + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材高度输入框改变 + assetHeightIunput(){ + this.canvasAssetObj.Height = this.assetHeight + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材角度输入框改变 + assetAngleIunput(){ + this.canvasAssetObj.Angle = this.sliderValue + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材厚度输入框改变 + assetThicknessIunput(){ + this.canvasAssetObj.Thickness = this.sliderValueThickness + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //素材是否高亮改变----->本地操作行为 + assetHighLightIunput(){ + + } + + //动态属性素材input框值改变 + assetInputChange(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + //动态属性素材布尔值框改变radio + assetRadioChange(i,boolean){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = boolean + this.canvasData.isChange = true + } + + colorIndex//默认素材颜色 + selectedcolor//点击选择的颜色 + //选择素材颜色 + selectcolor(item,key){ + //在当前透明度基础上改变颜色 + this.selectedcolor = item + this.selectedcolor.substring(this.selectedcolor.length-2) + this.canvasAssetObj.Color = this.selectedcolor + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + //颜色选择滑竿的值 + colorDivSliderValue + colorDivSliderChange(){ + let colorOpacity = Math.round(255 * this.colorDivSliderValue * 0.01) + //根据滑竿值改变16进制颜色后两位 + function replacepos(text,start,stop,replacetext){ + let mystr = text.substring(0,stop-1)+replacetext+text.substring(stop+1); + return mystr; + } + this.selectedcolor = replacepos(this.selectedcolor,7,8,colorOpacity.toString(16)) + this.canvasAssetObj.Color = this.selectedcolor + this.canvasData.isChange = true + this.canvas.refreshIcon(this.canvasAssetObj.Id) + } + + + //上传素材图片 + selectFile(e){ + let imgFile = e.target.files[0] || null //上传的文件 + this.startUploading(imgFile) + } + objectName:any //上传对象名 + startUploading (imgFile) { + let _this = this + let file = imgFile || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let shardSize = 5 * 1024 * 1024 //5MB一个分片 + let companyId = sessionStorage.getItem("companyId") + if (file && fileSize <= shardSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file",file) + this.http.post(`api/Objects/WebPlan2D/${companyId}`,formData).subscribe((data:any)=>{ + this.objectName = data.objectName + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传成功','确定',config) + + //在原始素材对象和需要循环图片的对象中分别push最新上传的图片 + let imgObj = { + "Tag": null, + "Order": 0, + "Enabled": false, + "Visible": false, + "Required": false, + "RuleName": null, + "RuleValue": null, + "PhysicalUnit": null, + "PropertyName": "图片", + "PropertyType": 3, + "PropertyValue": "/api/Objects/WebPlan2D/" + this.objectName + } + + this.imagesArr.push(imgObj) + this.canvasAssetObj.PropertyInfos.push(imgObj) + + setTimeout(() => { + this.mySwiper = new Swiper('.swiper-container',{ + loop: false, + // grabCursor: true, + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + on:{ + click: function(){ + _this.clickedIndex = this.clickedIndex + }, + } + }); + + this.mySwiper.slideTo(this.imagesArr.length - 1) + this.gallery.update() + }, 0); + + //判断上传素材属性图片是否超出数量 超出数量则隐藏input框 + if(this.imagesArr.length < this.imagesArrNum){//不超出input才会显示 + this.isImgNumCss = true + }else{ + this.isImgNumCss = false + } + + this.canvasData.isChange = true + }) + } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传图片文件不允许大于5mb','确定',config); + } + + } + + //不能上传图片提示 + imgNumBeyond(){ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('图片数量已达上限','确定',config); + } + + //删除素材属性图片 + deleteImg(){ + if(this.imagesArr.length == 0){ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('没有可删除的图片,请先上传','确定',config) + }else{ + // 在素材原始对象中将删除的图片去掉 + this.canvasAssetObj.PropertyInfos = [...this.canvasAssetObj.PropertyInfos.filter((item)=>{ + return item.PropertyValue != this.imagesArr[this.mySwiper.activeIndex].PropertyValue + })] + //在图片循环数组中将图片去掉 + this.imagesArr.splice(this.mySwiper.activeIndex, 1); + //更新swiper视图 + setTimeout(() => { + this.mySwiper.update(); + this.gallery.update() + }, 0); + + this.canvasData.isChange = true + } + } + + //动态属性方向select选择框 + direction(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + } + + //动态属性供给区域select选择框 + supplyArea(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + } + + //动态属性供给类型select选择框 + supplyType(i,e){ + let index = this.canvasAssetObj.PropertyInfos.findIndex((item)=>{ + return i.PropertyName == item.PropertyName + }) + this.canvasAssetObj.PropertyInfos[index].PropertyValue = e.target.value + this.canvasData.isChange = true + } + + ngOnInit(): void { + + let that = this + window.setTimeout(()=>{ + document.getElementById("functionalDomainContent").oncontextmenu = function (event) { + that.canvas.cancelPaint() + that.selectImageIndex = -1 + event.preventDefault(); + }; + }) + + this.canvasData.getMessage().subscribe((message: any)=>{ + console.log(message);//send a message + }) + } + + + + ngAfterViewInit(): void { + // 监听canvas组件选中素材事件 + this.canvas.on("select",obj=>{ + //选中素材属性注入函数 + this.setAssetsProperty(obj.assetData) + }) + // 监听canvas组件取消选中素材事件 + this.canvas.on("deselect",obj=>{ + this.isShowProperty = false + }) + // 监听canvas组件新增素材事件 + this.canvas.on("createIcon",obj=>{ + this.renovateTreeData(false) + }) + // 监听canvas组件删除素材事件 + this.canvas.on("deleteIcon",obj=>{ + this.renovateTreeData(false) + }) + } + + copyAssetData:any //存储用于复制的素材 + //复制素材 + copyAsset(){ + this.canvas.copy() + } + //粘贴素材 + pasteAsset(){ + let companyId = sessionStorage.getItem("companyId") + let buildingId = this.beforeOneCheckedBuilding.id + let floorId = this.selectingSitePlan.id + this.canvas.paste(companyId,buildingId,floorId) + } + + + //获得所有的建筑物 + getAllBuildings(){ + this.http.get("/api/Buildings",{ + params:{ + companyId : this.params.companyId + } + }).subscribe(data=>{ + this.allBuildings = data + }) + } + + //拖拽tree + drop(e){ + console.log(1111,e) + } + drop2(e){ + console.log(222,e) + } + + + + //选择建筑 + checkedBuilding(item,index){ + if (this.checkedBuildingIndex!=index) { + this.beforeOneCheckedBuilding = item + this.checkedBuildingIndex = index + if (index==-1) { //总平面图数据 + this.getSitePlan() + } else { //建筑楼层/区域数据 + this.getBuildingSitePlan(item) + } + } + } + + + storeyData //将建筑素材和当前楼层素材合二为一 + + //处理 tree 数据结构 + handleTreeData (storeyData) { + + this.storeyData = storeyData + let data = this.allFireElements //所有消防要素模板 + let treeData = [] //tree型 处理完成后的数据 + data.forEach(element => { + element.isTemplate = true //添加模板标识 + element.isLook = true //添加是否可见标识 + element.name!='其他'? element.children = [] : null + + if(storeyData){ + for(let key in storeyData.data){ + storeyData.data[key].isLookPattern = true + if(element.id == storeyData.data[key].FireElementId){ + storeyData.data[key].isTemplate = false + storeyData.data[key].isLook = true + + element.isNewElement = true //该节点children是否存在新添加的真实素材 标识 + + //定义查看模式下能看到的元素 + element.isLookPattern = true + if(element.parentId){ + data.forEach(i => { + if(i.id == element.parentId){ + i.isLookPattern = true + } + }) + } + // + + element.children.push(storeyData.data[key]) + } + } + } + data.forEach(item => { if (item.parentId == element.id) {element.children.push(item)} }); + }); + data.forEach(element => { + if (!element.parentId) { treeData.push(element) } + }); + this.dataSource.data = treeData + this.treeControl.expandAll() + } + + //点击树节点 + clickTreeNode(node,e){ + if(this.canvasData.originalcompanyBuildingData.data[node.id]){ + this.setAssetsProperty(this.canvasData.originalcompanyBuildingData.data[node.id]) + }else if(this.canvasData.originaleveryStoreyData.data[node.id]){ + this.setAssetsProperty(this.canvasData.originaleveryStoreyData.data[node.id]) + } + + //canvas上的素材高亮 + let iconHighLightArr:any = [] + if(node.isTemplate){//如果是模板,则开始向下找 + node.children.forEach(item => { + if(item.isTemplate){//如果子节点依旧是模板,则继续开始向下找 + item.children.forEach(i => { + iconHighLightArr.push(i.Id) + }) + }else{ + iconHighLightArr.push(item.Id) + } + }) + }else{ + iconHighLightArr.push(node.id) + } + this.canvas.setHighlight(iconHighLightArr) + } + + //点击数节点的显示隐藏icon + clickLookItem(node,e){ + // e.stopPropation() + //修改真实素材islook属性 + for(let key in this.storeyData.data){ + if(key == node.id){ + this.storeyData.data[key].isLook = !this.storeyData.data[key].isLook + } + } + + //所有消防要素模板变化islook值 + if(node.isTemplate){ + this.allFireElements.forEach(item=>{ + if(item.id == node.id || item.name == "其他"){ + item.isLook = !item.isLook + } + }) + } + + + //子节点跟随父节点的islook变化 +   if(node.children && node.children.length != 0){ +      node.children.forEach(item=>{ +        item.isLook = !node.isLook  +        if(item.children && item.children.length != 0){ +          item.children.forEach(i=>{ +            i.isLook =  !node.isLook  +          }) +        } +      }) +     } + + + + + const nodes = this.treeControl.dataNodes; + const expandNodes = []; + nodes.forEach((item) => { + if(item.expandable && this.treeControl.isExpanded(item)){ + expandNodes.push(item.id); + } + }); + + + this.dataSource.data = [...this.dataSource.data] + let newNodes = this.treeControl.dataNodes; + newNodes = newNodes.filter(n => { + return expandNodes.indexOf(n.id) >= 0; + }); + newNodes.forEach(item => { + this.treeControl.expand(item); + }); + + //canvas上的素材显隐 + let iconVisibleArr:any = [] + if(node.isTemplate){//如果是模板,则开始向下找 + node.children.forEach(item => { + if(item.isTemplate){//如果子节点依旧是模板,则继续开始向下找 + item.children.forEach(i => { + iconVisibleArr.push(i.Id) + }) + }else{ + iconVisibleArr.push(item.Id) + } + }) + }else{ + iconVisibleArr.push(node.id) + } + this.canvas.setIconVisible(iconVisibleArr,!node.isLook) + } + + //计算 可视区域内宽度, 是否缩放背景图 + backGroundScale () { + let that = this + let dadWidth = document.querySelector('.canvas').clientWidth + let dadHeight = document.querySelector('.canvas').clientHeight + let img = new Image() + img.src = this.selectingSitePlan.imageUrl; + img.onload = function(){ + if (img.height > dadHeight && img.width > dadWidth) { + let width = dadWidth/img.width + let height = dadHeight/img.height + that.canvas.setBackgroundScale((width>height? height : width)-0.005) + return + } else if (img.height > dadHeight) { + that.canvas.setBackgroundScale((dadHeight/img.height)-0.005) + return + } else if (img.width > dadWidth) { + that.canvas.setBackgroundScale((dadWidth/img.width)-0.005) + return + } + }; + } + + //封装 刷新 tree 数据 + renovateTreeData (isRefresh:boolean = true) { + this.allFireElements[this.allFireElements.length-1].children = [] + isRefresh? this.canvas.refresh() : null + isRefresh? this.canvasData.isChange = false : null //服务中 数据是否改动 改为false + isRefresh? this.isShowProperty = true : null + isRefresh? this.isShowAttribute = true : null + isRefresh && this.selectingSitePlan.imageUrl? this.backGroundScale() : null + // !this.pattern? this.mateFireForce() : null + + let beforeOneId = this.selectingSitePlan.id || '' //当前 选中 平面图 楼层/区域 id + let companyBuildingData = JSON.parse(JSON.stringify( this.canvasData.originalcompanyBuildingData || {} )) // 当前 单位/建筑 数据 + let storeyData = JSON.parse(JSON.stringify( this.canvasData.originaleveryStoreyData || {} )) //当前 楼层 数据 + + for(let key in companyBuildingData.data){ + if (companyBuildingData.data[key].FloorId === beforeOneId) { //处理 单位/建筑 数据是否归于当前楼层下 + storeyData.data[key] = companyBuildingData.data[key] + } + } + for(let key in storeyData.data){ //筛选数据 没有匹配全部放入到 其他 数组 + let noMatch = this.allFireElements.find( every=> every.id===storeyData.data[key].FireElementId ) + if (!noMatch) { + this.allFireElements[this.allFireElements.length-1].children.push(storeyData.data[key]) + } + } + this.handleTreeData(storeyData) //处理tree数据结构 + } + + + + //陈鹏飞↓↓↓ + //陈鹏飞↓↓↓ + //陈鹏飞↓↓↓ + params = {companyId: sessionStorage.getItem('companyId')} + allFireElements:any = []; //当前 单位/建筑 下的消防要素 + + isShowAttribute:boolean = true; //属性栏 是否显示 默认数据 + isShowProperty:boolean = false //属性栏 是否有东西 + + toggleExpandPanel:boolean = false; //左侧可展开面板展开或关闭 + toggleExpandPanelRight:boolean = false; //右侧可展开面板展开或关闭 + togglePlane:boolean = true; //可展开面板平面图 显隐 + toggleMaterialBank:boolean = false; //可展开面板素材库 显隐 + toggleHandlePlans:boolean = true; //可展开面板处置预案 显隐 + //可展开面板展开或关闭 + toggle () { + this.toggleExpandPanel = !this.toggleExpandPanel + } + //可展开面板展开或关闭 + toggle2 () { + this.toggleExpandPanelRight = !this.toggleExpandPanelRight + } + //可展开面板 平面图 展开或关闭 + togglePlanarGraph () { + this.togglePlane = !this.togglePlane + } + //可展开面板 素材库 展开或关闭 + toggleMaterial () { + this.toggleMaterialBank = !this.toggleMaterialBank + } + //可展开面板 处置预案 展开或关闭 + toggleHandlePlan () { + this.toggleHandlePlans = !this.toggleHandlePlans + } + + sitePlanData:any = []; //总平面图 楼层/区域 数据 + selectingSitePlan:any; //选中的 平面图 楼层/区域 + selectSitePlanIndex:number; //选中的 平面图 楼层/区域 index + + //获取总平面图 + getSitePlan () { + let fireData = this.getFireElements(sessionStorage.getItem('buildingTypeId')) //获取单位下 消防要素 + let planData = this.getSitePlanCompanyData() //获取 单位 数据 + this.http.get('/api/SitePlans',{params:this.params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[0] || {} + this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据 + this.selectSitePlanIndex = 0 + + Promise.all([fireData,planData]).then((res)=>{ + this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据 + }) + + }) + } + + //获取建筑 楼层/区域 + getBuildingSitePlan (item) { + let params = { + buildingId: item.id + } + let fireData = this.getFireElements(item.buildingTypes[0].id || '') //获取建筑下 消防要素 + let planData = this.getBuildingData(params) //获取 建筑 数据 + this.http.get('/api/BuildingAreas',{params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[0] || {} + this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据 + this.selectSitePlanIndex = 0 + + Promise.all([fireData,planData]).then((res)=>{ + this.getBuildingStorey(this.selectingSitePlan) //获取 建筑 楼层数据 + }) + + }) + } + + //根据单位类型获得所有的消防要素 + getFireElements (e) { + let params = {ids:e} + return new Promise ((resolve,reject)=>{ + this.http.get('/api/Companies/FireElements',{params}).subscribe((data:any)=>{ + this.allFireElements = data //所有消防要素 + let other = { + children: [], + computed: true, + id: '', + name: '其他', + order: 999, + parentId: null, + tag: "INPUT", + isLookPattern : true + } + this.allFireElements.push(other) + resolve('success') + }) + }) + } + + //获取 单位 数据 + getSitePlanCompanyData () { + return new Promise ((resolve,reject)=>{ + this.http.get('/api/CompanyData',{params:this.params}).subscribe((data:any)=>{ + this.canvasData.originalcompanyBuildingData = data || {} // 单位原数据 + this.canvasData.originalcompanyBuildingData.data? this.canvasData.originalcompanyBuildingData.data = JSON.parse(this.canvasData.originalcompanyBuildingData.data) : this.canvasData.originalcompanyBuildingData.data = {} + this.canvasData.originalcompanyBuildingData.version? null : this.canvasData.originalcompanyBuildingData.version = "2.0" + this.canvasData.originalcompanyBuildingData.companyId? null : this.canvasData.originalcompanyBuildingData.companyId = sessionStorage.getItem('companyId') + resolve('success') + }) + }) + } + + //获取 平面图 楼层数据 + getSitePlanStorey (e) { + let params = {sitePlanId: e.id} + this.http.get(`/api/SitePlanData`,{params}).subscribe((data:any)=>{ + this.canvasData.originaleveryStoreyData = data || {} // 楼层原数据 + this.canvasData.originaleveryStoreyData.data? this.canvasData.originaleveryStoreyData.data = JSON.parse(this.canvasData.originaleveryStoreyData.data) : this.canvasData.originaleveryStoreyData.data = {} + this.canvasData.originaleveryStoreyData.version? null : this.canvasData.originaleveryStoreyData.version = "2.0" + this.canvasData.originaleveryStoreyData.sitePlanId? null : this.canvasData.originaleveryStoreyData.sitePlanId = e.id || null + this.renovateTreeData() + }) + } + + //获取 建筑 数据 + getBuildingData (e) { + return new Promise ((resolve,reject)=>{ + this.http.get(`/api/BuildingData`,{params:e}).subscribe((data:any)=>{ + this.canvasData.originalcompanyBuildingData = data || {} // 建筑原数据 + this.canvasData.originalcompanyBuildingData.data? this.canvasData.originalcompanyBuildingData.data = JSON.parse(this.canvasData.originalcompanyBuildingData.data) : this.canvasData.originalcompanyBuildingData.data = {} + this.canvasData.originalcompanyBuildingData.version? null : this.canvasData.originalcompanyBuildingData.version = "2.0" + this.canvasData.originalcompanyBuildingData.buildingId? null : this.canvasData.originalcompanyBuildingData.buildingId = e.buildingId + resolve('success') + }) + }) + } + + //获取 建筑 楼层数据 + getBuildingStorey (e) { + let params = {buildingAreaId: e.id} + this.http.get(`/api/BuildingAreaData`,{params}).subscribe((data:any)=>{ + this.canvasData.originaleveryStoreyData = data || {} // 楼层原数据 + this.canvasData.originaleveryStoreyData.data? this.canvasData.originaleveryStoreyData.data = JSON.parse(this.canvasData.originaleveryStoreyData.data) : this.canvasData.originaleveryStoreyData.data = {} + this.canvasData.originaleveryStoreyData.version? null : this.canvasData.originaleveryStoreyData.version = "2.0" + this.canvasData.originaleveryStoreyData.buildingAreaId? null : this.canvasData.originaleveryStoreyData.buildingAreaId = e.id || null + this.renovateTreeData() + }) + } + + //点击选中 平面图 楼层/区域 时 + selectSitePlan (item,index) { + if (this.selectSitePlanIndex != index) { + + if (this.canvasData.isChange) { //true 数据被改动 + let isTrue = confirm('是否保存当前编辑数据') + if (isTrue) { //先保存数据 在切换 + // let isSuccess = this.saveSite()//true的时候 先保存数据 + // if (isSuccess != false) { + // this.selectingSitePlan = item + // this.selectSitePlanIndex = index + // this.canvasData.selectStorey = item //服务中 存一份数据 + // if (this.checkedBuildingIndex==-1) { //总平面图时 + // this.getSitePlanStorey(item) //获取 平面图 楼层数据 + // } else { //楼层/区域时 + // this.getBuildingStorey(item) //获取 建筑 楼层数据 + // } + // } + } else { //不保存数据 直接切换 + this.selectingSitePlan = item + this.selectSitePlanIndex = index + this.canvasData.selectStorey = item //服务中 存一份数据 + if (this.checkedBuildingIndex==-1) { //总平面图时 + this.getSitePlanStorey(item) //获取 平面图 楼层数据 + } else { //楼层/区域时 + this.getBuildingStorey(item) //获取 建筑 楼层数据 + } + } + + } else { //false 数据没被改动 + this.selectingSitePlan = item + this.selectSitePlanIndex = index + this.canvasData.selectStorey = item //服务中 存一份数据 + if (this.checkedBuildingIndex==-1) { //总平面图时 + this.getSitePlanStorey(item) //获取 平面图 楼层数据 + } else { //楼层/区域时 + this.getBuildingStorey(item) //获取 建筑 楼层数据 + } + } //if + + } + } + + + + //平面图 楼层/区域 上移 + moveUp (item,index) { + if (index != 0) { + let replaceIndex = this.sitePlanData[index].order + this.sitePlanData[index].order = this.sitePlanData[index-1].order + this.sitePlanData[index-1].order = replaceIndex + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.put(`/api/SitePlans/${this.sitePlanData[index-1].id}`,this.sitePlanData[index-1]).subscribe(data=>{ + this.http.put(`/api/SitePlans/${this.sitePlanData[index].id}`,this.sitePlanData[index]).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex-1 + this.renovateSitePlan() + }) + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index-1].id}`,this.sitePlanData[index-1],{params:this.params}).subscribe(data=>{ + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index].id}`,this.sitePlanData[index],{params:this.params}).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex-1 + this.renovateBuilding() + }) + }) + } + + } //if index + } + + //平面图 楼层/区域 下移 + moveDown (item,index) { + if (index != this.sitePlanData.length-1) { + let replaceIndex = this.sitePlanData[index].order + this.sitePlanData[index].order = this.sitePlanData[index+1].order + this.sitePlanData[index+1].order = replaceIndex + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.put(`/api/SitePlans/${this.sitePlanData[index+1].id}`,this.sitePlanData[index+1]).subscribe(data=>{ + this.http.put(`/api/SitePlans/${this.sitePlanData[index].id}`,this.sitePlanData[index]).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex+1 + this.renovateSitePlan() + }) + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index+1].id}`,this.sitePlanData[index+1],{params:this.params}).subscribe(data=>{ + this.http.put(`/api/BuildingAreas/${this.sitePlanData[index].id}`,this.sitePlanData[index],{params:this.params}).subscribe(data=>{ + this.selectSitePlanIndex = this.selectSitePlanIndex+1 + this.renovateBuilding() + }) + }) + } + + } //if index + } + + //旋转底图 + revolveImg (item) { + item.imageAngle==270? item.imageAngle = 0 : item.imageAngle = item.imageAngle+90 + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.put(`/api/SitePlans/${item.id}`,item).subscribe(data=>{ + let isSuccess = this.renovateSitePlan() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + }) + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${item.id}`,item,{params:this.params}).subscribe(data=>{ + let isSuccess = this.renovateBuilding() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + }) + }) + } + + } + + //删除 平面图 楼层/区域 + deletePlaneData (item) { + let isDelete = confirm('您确定要删除吗') + if (isDelete) { + if (this.checkedBuildingIndex==-1) { //总平面图 + this.http.delete(`/api/SitePlans/${item.id}`).subscribe(data=>{ + this.deleteShareData(item,-1) + }) + } else { //楼层/区域 + this.http.delete(`/api/BuildingAreas/${item.id}`).subscribe(data=>{ + this.deleteShareData(item,1) + }) + } + } + } + + //删除当前 单位/建筑的 共享数据中 已删除data + deleteShareData (e,isCompany) { + this.sitePlanData.forEach((element,index) => { + if (element.id===e.id) { + this.sitePlanData.splice(index,1) + return + } + }); + let data = this.canvasData.originalcompanyBuildingData; + for(let key in data.data){ + if (data.data[key].FloorId === e.id) { //处理 单位/建筑 数据是否归于当前楼层下 + delete data.data[key] + } + } + let newData = JSON.parse(JSON.stringify(this.canvasData.originalcompanyBuildingData)); + newData.data = JSON.stringify(newData.data) // 转换JSON 数据格式 + this.selectingSitePlan = this.sitePlanData[0] || {} + this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据 + this.selectSitePlanIndex = 0 + if (isCompany===-1) { + this.http.post("/api/CompanyData",newData).subscribe(data => {}) + this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据 + } else { + this.http.post("/api/BuildingData",newData,{params:this.params}).subscribe(data => {}) + this.getBuildingStorey(this.selectingSitePlan) //获取 建筑 楼层数据 + } + } + + //复制图层 平面图 楼层/区域 + duplicateLayer (item) { + if (this.checkedBuildingIndex==-1) { //总平面图 + item.id = "" + item.modifiedTime = new Date() + item.name = item.name + '(副本)' + item.order = this.sitePlanData[this.sitePlanData.length-1].order+1 + this.http.post('/api/SitePlans',item).subscribe((data:any)=>{ + let newData = { + version: this.canvasData.originaleveryStoreyData.version || "2.0", + id: "", + data: JSON.stringify( JSON.parse(JSON.stringify(this.canvasData.originaleveryStoreyData.data)) ) || null, + sitePlanId: data.id + } + this.http.post('/api/SitePlanData',newData,{params:this.params}).subscribe(data=>{ + this.renovateSitePlan() + }) + + }) + } else { //楼层/区域 + item.id = "" + item.modifiedTime = new Date() + item.name = item.name + '(副本)' + item.order = this.sitePlanData[this.sitePlanData.length-1].order+1 + this.http.post('/api/BuildingAreas',item,{params:this.params}).subscribe((data:any)=>{ + let newData = { + version: this.canvasData.originaleveryStoreyData.version || "2.0", + id: "", + data: JSON.stringify( JSON.parse(JSON.stringify(this.canvasData.originaleveryStoreyData.data)) ) || null, + buildingAreaId: data.id + } + this.http.post('/api/BuildingAreaData',newData,{params:this.params}).subscribe(data=>{ + this.renovateBuilding() + }) + + }) + } + } + + //平面图 楼层/区域 替换底图 + replaceBaseMap (e,item) { + e.stopPropagation(); + let file = e.target.files[0] || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let maxSize = 5 * 1024 * 1024 //5MB一个分片 + + if (file && fileSize<=maxSize) { //上传文件<=5MB时 + let formData = new FormData() + formData.append("file",file) + this.http.post(`/api/Objects/WebPlan2D/${sessionStorage.getItem('companyId')}`,formData).subscribe((data:any)=>{ + this.renovateBaseMap(data.objectName,item) + }) + } else { + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传底图需小于5MB','确定',config); + } + } + + //封装 替换底图 function + renovateBaseMap (e,item) { + item.imageUrl = '/api/Objects/WebPlan2D/' + e + if (this.checkedBuildingIndex ==-1) { //总平面图 + this.http.put(`/api/SitePlans/${item.id}`,item).subscribe(data=>{ + let isSuccess = this.renovateSitePlan() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + this.backGroundScale() + }) + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传底图成功','确定',config); + }) + } else { //楼层/区域 + this.http.put(`/api/BuildingAreas/${item.id}`,item,{params:this.params}).subscribe(data=>{ + let isSuccess = this.renovateBuilding() + isSuccess.then(res=>{ + this.canvas.refreshBackgroundImage() + this.backGroundScale() + }) + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传底图成功','确定',config); + }) + } + } + + //封装 刷新总平面图 数据 + renovateSitePlan () { + return new Promise ((resolve,reject)=>{ + this.http.get('/api/SitePlans',{params:this.params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[this.selectSitePlanIndex] + this.canvasData.selectStorey = this.sitePlanData[this.selectSitePlanIndex] //服务中 存一份数据 + this.canvasData.originaleveryStoreyData.sitePlanId? null : this.canvasData.originaleveryStoreyData.sitePlanId = this.selectingSitePlan.id || null + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('数据更新成功','确定',config); + resolve('success') + }) + }) + } + + //封装 刷新 楼层/区域 数据 + renovateBuilding () { + let params = { + buildingId: this.beforeOneCheckedBuilding.id + } + return new Promise ((resolve,reject)=>{ + this.http.get('/api/BuildingAreas',{params}).subscribe(data=>{ + this.sitePlanData = data + this.selectingSitePlan = this.sitePlanData[this.selectSitePlanIndex] + this.canvasData.selectStorey = this.sitePlanData[this.selectSitePlanIndex] //服务中 存一份数据 + this.canvasData.originaleveryStoreyData.buildingAreaId? null : this.canvasData.originaleveryStoreyData.buildingAreaId = this.selectingSitePlan.id || null + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('数据更新成功','确定',config); + resolve('success') + }) + }) + } + + allLibrary:any = []; //所有素材库 + 素材 + selectLibrary:any; //选中的素材库 + selectImage:any; //选中的素材库图片 + selectImageIndex:number; //选中的素材库图片index + + //获取素材库 + getAllLibrary (type:string='input') { + this.http.get(`/api/AssetLibraries?tag=${type}`).subscribe((data:any)=>{ + data.forEach(element => { + element.images = [] + }); + this.allLibrary = data + this.selectImageIndex = -1 + this.canvas.cancelPaint() + }) + } + + //素材库展开面板展开时 + opened (e) { + if (!e.images.length) { //当前素材库没加载素材时 + this.http.get(`/api/Assets?libraryId=${e.id}`).subscribe((data:any)=>{ + e.images = data + }) + } + } + + //点击选中素材库图片时 + selectImg (item,items,index) { + this.selectLibrary = item.name + this.selectImage = items + this.selectImageIndex = index + this.canvasData.selectTemplateData = items + this.canvas.beginPaint() + } + + + + //处置预案 + // tree配置 + private transformer = (node, level: number) => {//要给渲染节点传那些属性参数 + return { + expandable: !!node.children && node.children.length > 0, + name: node.name || node.Name, + level: level, + id: node.id || node.Id, + children: node.children, + airTemperature: node.airTemperature, + buildingAreaId: node.buildingAreaId, + buildingId: node.buildingId, + companyId: node.companyId, + description: node.description, + disasterId: node.disasterId, + imageNames: node.imageNames, + imageUrls: node.imageUrls, + notes: node.notes, + order: node.order, + parentId: node.parentId, + planComponentId: node.planComponentId, + sitePlanId: node.sitePlanId, + weather: node.weather, + windDirection: node.windDirection, + windScale: node.windScale, + }; + } + fireTreeControl = new FlatTreeControl(node => node.level, node => node.expandable); + fireTreeFlattener = new MatTreeFlattener(this.transformer, node => node.level, node => node.expandable, node => node.children); + fireTreeData = new MatTreeFlatDataSource(this.fireTreeControl, this.fireTreeFlattener); + + allFirePlan:any = []; //所有灾情 + selectDisposalNode:string = ''; //当前 点击的 节点 + + //获取所有灾情 + getAllFirePlan () { + // let params = {componentId: sessionStorage.getItem('planId')} + // this.http.get('/api/Disasters',{params:params}).subscribe((data:any)=>{ + // this.allFirePlan = data + // if (!data.length) { + // let msg = { + // name: '灾情', + // modifiedTime: new Date(), + // planComponentId: sessionStorage.getItem('planId') + // } + // this.http.post('/api/Disasters',msg).subscribe(data=>{ this.allFirePlan.push(data) }) + // } //if + // }) + } + + //获取所有处置节点 + getDisposalNode () { + this.selectDisposalNode = '' + let params = {disasterId: this.allFirePlan[0].id || ''} + this.http.get('/api/DisasterData/Markers',{params:params}).subscribe(data=>{ //灾情标签信息 + this.canvasData.allNodeMarkers = data + this.mateFireForce() + }) + this.http.get('/api/DisposalNodes',{params:params}).subscribe(data=>{ //处置节点 + this.canvasData.allDisposalNode = data + this.handleHybridTree() + }) + } + + //处理 节点 Tree数据 + handleHybridTree () { + let treeData = [] + let data = JSON.parse(JSON.stringify( this.canvasData.allDisposalNode || [] )) + data.forEach(element => { + element.children = [] + data.forEach(item=>{ + item.parentId === element.id? element.children.push(item) : null + }) + }); + data.forEach(element=>{ + !element.parentId? treeData.push(element) : null + }) + this.fireTreeData.data = treeData + this.fireTreeControl.expandAll() + } + + //刷新 treeData 保存已展开节点 + refurbishTreeData () { + let params = {disasterId: this.allFirePlan[0].id || ''} + this.http.get('/api/DisposalNodes',{params:params}).subscribe(nodeData=>{ //处置节点 + this.canvasData.allDisposalNode = nodeData + let nodes = this.fireTreeControl.dataNodes; + let treeData = [] + let expandNodes = []; + let data = JSON.parse(JSON.stringify( this.canvasData.allDisposalNode || [] )) + data.forEach(element => { + element.children = [] + data.forEach(item=>{ + item.parentId === element.id? element.children.push(item) : null + }) + }); + data.forEach(element=>{ + !element.parentId? treeData.push(element) : null + }) + + //保存 已展开节点数据 + nodes.forEach((item) => { + if(item.expandable && this.fireTreeControl.isExpanded(item)){ + expandNodes.push(item.id); + } + }); + this.fireTreeData.data = treeData; + let newNodes = this.fireTreeControl.dataNodes; + newNodes = newNodes.filter(n => { + return expandNodes.indexOf(n.id) >= 0; + }); + newNodes.forEach(item => { + this.fireTreeControl.expand(item); + }); + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('数据更新成功','确定',config); + }) + } + + sitePlanIcon = {fire:0,force:0} // 总平面图 火源/力量 图标 是否展示 + sitePlanBuildingID:string = ''; //选择 数据节点的 建筑id + storeyID:string = ''; //选择 数据节点的 楼层id + + //刷新 建筑楼层 匹配 火源/力量 图标 + mateFireForce () { + let data = this.canvasData.allNodeMarkers.markers + for(let key in data){ //遍历 火/力量 图标 + this.sitePlanData.forEach(element => { //楼层 + if (element.id==key) { // 相匹配时 + data[key].fireCount != 0? element.fire=1 : element.fire=0 + data[key].forceCount != 0? element.force=1 : element.force=0 + } + }); + this.allBuildings.forEach(element => { //建筑 + if (element.id==key) { // 相匹配时 + data[key].fireCount != 0? element.fire=1 : element.fire=0 + data[key].forceCount != 0? element.force=1 : element.force=0 + } + }); + if (this.params.companyId==key) { //总平面图时 + data[key].fireCount != 0? this.sitePlanIcon.fire=1 : this.sitePlanIcon.fire=0 + data[key].forceCount != 0? this.sitePlanIcon.force=1 : this.sitePlanIcon.force=0 + } + } + } + + // 切换 基本信息时 刷新 删除 建筑楼层 自定义属性 + mateDeleteCustomize () { + this.sitePlanBuildingID = '' + this.storeyID = '' + this.sitePlanIcon = {fire:0,force:0} + this.sitePlanData.forEach(element => { //楼层 + delete element.fire + delete element.force + }); + this.allBuildings.forEach(element => { //建筑 + delete element.fire + delete element.force + }); + } + + //计算差异 + countValue (e) { + e.stopPropagation() + let params = {disasterId: this.allFirePlan[0].id || ''} + this.http.get('/api/DisasterData/Diffs',{params:params}).subscribe(data=>{ + this.canvasData.allNodeMarkers = data + this.sitePlanBuildingID = '' + this.storeyID = '' + this.mateFireForce() + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('计算差异完成','确定',config); + }) + } + + + + //复制 处置预案 节点 + copyPanelPoint (e,item,treeData) { + e.stopPropagation() + if (confirm(`确定要复制 ${item.name} ?`)) { + let params = {id: item.id} + let order + if (item.level==0) { + treeData._data._value.length? order = treeData._data._value[treeData._data._value.length-1].order+1 : order = 0 + } else { + let index = treeData._data._value.findIndex(items=>{return items.id===item.parentId}) + treeData._data._value[index] && treeData._data._value[index].children.length? order = treeData._data._value[index].children[treeData._data._value[index].children.length-1].order+1 : order = 0 + } + let data = { + name: item.name + '(副本)', + level: item.level, + order: order, + description: '', + disasterId: item.disasterId || '', + parentId: item.parentId || null, + planComponentId: item.planComponentId || '', + } + this.http.post('/api/DisposalNodes/Clone',data,{params:params}).subscribe(data=>{ + this.refurbishTreeData() + }) + } //isTrue + } + + //删除 处置预案 节点 + deletePanelPoint (e,item) { + e.stopPropagation() + if (confirm(`确定要删除 ${item.name} ?`)) { + this.http.delete(`/api/DisposalNodes/${item.id}`).subscribe(data=>{ + this.refurbishTreeData() + }) + } + } + + //点击 处置Tree节点 + selectanelPoint (e) { + if (!e.buildingAreaId && !e.sitePlanId) { //当前节点 不是 数据节点 时 + let msg = this.canvasData.findDisposalNode(e.id) + this.canvasData.selectPanelPointBaseData = msg + this.selectDisposalNode == msg.id? this.selectDisposalNode = '' : this.selectDisposalNode = msg.id //选中 节点 + + } else if (e.buildingAreaId || e.sitePlanId) { //当前节点 是 数据节点 时 + let msg = this.canvasData.findDisposalNode(e.parentId) + this.canvasData.selectPanelPointBaseData = msg + + e.sitePlanId? this.sitePlanBuildingID = this.params.companyId : this.sitePlanBuildingID = e.buildingId //火源/力量图标高亮 + e.sitePlanId? this.storeyID = e.sitePlanId : this.storeyID = e.buildingAreaId //火源/力量图标高亮 + this.selectDisposalNode = e.parentId //选中 节点 + if (this.canvasData.selectPanelPoint.disposalNodeId != e.id) { //选择节点 不是当前节点时 + let params = {nodeId: e.id} + let parameter = { //查询 节点 对应 建筑/楼层 index,id + buildingIndex: e.sitePlanId? -1 : this.allBuildings.findIndex(item=>{ return item.id===e.buildingId }), //总平面图/建筑 index + storeyId: e.sitePlanId? e.sitePlanId : e.buildingAreaId, //楼层id + } + this.http.get('/api/DisposalNodeData',{params:params}).subscribe(data=>{ + this.canvasData.selectPanelPoint = data //选择 当前 节点 + this.canvasData.selectPanelPoint.data = JSON.parse(this.canvasData.selectPanelPoint.data || {}) + this.seekPanelPoint(parameter) + }) + } //if + + } //else if + } + + //查找 数据节点 对应 建筑/楼层 + seekPanelPoint (paramsData) { + this.checkedBuildingIndex = paramsData.buildingIndex + if (paramsData.buildingIndex ==-1) { //总平面图时 + this.beforeOneCheckedBuilding={name:"总平面图"} + let fireData = this.getFireElements(sessionStorage.getItem('buildingTypeId')) //获取单位下 消防要素 + let planData = this.getSitePlanCompanyData() //获取 单位 数据 + this.http.get('/api/SitePlans',{params:this.params}).subscribe(data=>{ + this.sitePlanData = data + let index = this.sitePlanData.findIndex(item=>{ return item.id===paramsData.storeyId }) + this.selectingSitePlan = this.sitePlanData[index] || {} + this.canvasData.selectStorey = this.sitePlanData[index] || {} //服务中 存一份数据 + this.selectSitePlanIndex = index + + Promise.all([fireData,planData]).then((res)=>{ + this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据 + }) + }) //get + } else { //建筑时 + this.beforeOneCheckedBuilding=this.allBuildings[paramsData.buildingIndex] + let params = { buildingId: this.beforeOneCheckedBuilding.id } + let fireData = this.getFireElements(this.beforeOneCheckedBuilding.buildingTypes[0].id || '') //获取建筑下 消防要素 + let planData = this.getBuildingData(params) //获取 建筑 数据 + this.http.get('/api/BuildingAreas',{params}).subscribe(data=>{ + this.sitePlanData = data + let index = this.sitePlanData.findIndex(item=>{ return item.id===paramsData.storeyId }) + this.selectingSitePlan = this.sitePlanData[index] || {} + this.canvasData.selectStorey = this.sitePlanData[index] || {} //服务中 存一份数据 + this.selectSitePlanIndex = index + + Promise.all([fireData,planData]).then((res)=>{ + this.getBuildingStorey(this.selectingSitePlan) //获取 建筑 楼层数据 + }) + }) //get + } + } + + + +} + diff --git a/src/app/ui/plan/panel.scss b/src/app/ui/plan/panel.scss new file mode 100644 index 0000000..b9359c6 --- /dev/null +++ b/src/app/ui/plan/panel.scss @@ -0,0 +1,286 @@ +.matIcons { + color: #8E909F; +} + + + +//平面图 素材库 公共样式 头部 +.planarGraphHeader{ + width: 100%; + text-align: center; + height: 40px; + line-height: 40px; + min-height: 40px; + cursor: pointer; + text-align: center; + font-style: italic; + font-size: 20px; + color: white; + border-bottom:2px solid #accbf2; +} +//平面图头部字体图标样式 +.hover { + width: 18px; + height: 18px; + margin-left: 90px; + border: 1px solid #999; + border-radius: 3px; + .mat-icon {font-size: 18px; color: #999;} +} +.hover:hover { + background-color: #4DA5FA; + .mat-icon {color: #fff;} +} + +//平面图 +.sitePlanContent { + position: relative; + width: 100%; + height: 37px; + line-height: 37px; + box-sizing: border-box; + text-align: center; + color: white; +} + +//火源/力量 图标 +.fireForce { + display: block; + float: right; + margin: 8px 5px 0 0; + width: 40px; + height: 20px; + line-height: 20px; + text-align: center; + position: relative; + overflow: hidden; + img{ + width: 20px; + height: 20px; + } +} +//替换底图 inputfile +.a-upload { + display: block; + float: right; + margin: 8px 18px 0 0; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + position: relative; + overflow: hidden; + input { + position: absolute; + width: 20px; + height: 20px; + left: 0; + top: 0; + opacity: 0; + } +} +.a-upload:hover { + .mat-icon { + color: #fff; + } +} +//上传底图 inputfile +#a-uploadImg { + display: block; + width: 300px; + height: 170px; + position: fixed; + top: 40%; + left: 48%; + overflow: hidden; + border-radius: 5px; + border: 1px solid #999; + z-index: 999; + input { + position: absolute; + width: 300px; + height: 170px; + left: 0; + top: 0; + opacity: 0; + } + img { + width: 100%; + height: auto; + } +} +#a-uploadImg:hover { + border: 5px solid skyblue; +} + +//hover时显示右边操作栏 +.sitePlanContent:hover { + cursor: pointer; + #rightOperate { + display: block; + } +} +//右边操作栏 +#rightOperate{ + width: 50px; + height: 100px; + position: absolute; + top: -32px; + right: -48px; + z-index: 99999; + border-radius: 0 100px 100px 0; + background-color: #F0F4F7; + // #F0F4F7 cdced1 + display: none; + .functionButton { + height: 25%; + line-height: 25px; + } + .bigFunctionIcon { + font-size: 24px; + } + .functionIcon { + color: #999; + } + .functionIcon:hover { + color: #4DA5FA; + } +} + +//处置预案 素材库 公用div +.publiclBankPlan { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; + padding-bottom: 10px; + // border-top: 1px dashed #999; +} + + + +// 基本信息/想定作业 切换 +.scenarioAssignment { + overflow-y: auto; +} +.selectEditMode { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; +} +.materialBankDIV{ + flex: 1; + overflow-x: hidden; + overflow-y: auto; +} +// 基本信息/想定作业 切换 +//处置预案 +#terrNodePublic { + height: 35px; + line-height: 35px; + .textNode {flex: 1;} +} +//字体图标 +.planIconDiv { + display: inline-block; + .mat-icon{ + font-size: 20px; + width: 20px; + height: 20px; + color: #666; + margin-right: 3px; + } +} + + + +.mat-expansion-panel-header { + height: 40px !important; +} +//素材库溢出隐藏 +#materialBank { + margin: 1px 0; +} +//素材库图片flex +#panelLibrary .text{ + box-sizing: border-box; + margin-left: 10px; +} +.panelLibraryFlex { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; /* 水平居中 */ + .imgBox { + width: 70px; + height: 100px; + display: inline-block; + text-align: center; + border-radius: 3px; + margin: 5px 0; + img { + width: 70px; + height: auto; + max-height: 70px; + cursor:pointer; + } + p { + font-size: 12px; + cursor:pointer; + } + } +} + +//文本溢出 +.overflowText { + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; +} +// 楼层/区域 是避难层时 +.isRefugeStorey { + color: #fff; + background-color: rgb(238, 186, 186); +} +//选中平面图时 +.selectSitePlan { + background-color: #105a8f; +} +//选中素材库图片时 +.selectImg { + color: #fff; + background-color: #4DA5FA; +} +//选中 处置节点时 +.selectanelPoint { + background-color: #F4C235; +} + + + +//左侧功能区弹出框样式 +.keyMargin { + width: 100%; + margin: 5px 0; + .mat-form-field { + width: 100%; + } +} +.submitBottom { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; /* 水平居中 */ +} +.functionalDomainContent { + width: 300px; + height: 100%; + textarea { + border-radius: 5px; + border: 1px solid #999; + width: 100%; + height: 120px; + resize:none; + } +} diff --git a/src/app/ui/plan/saveOne.html b/src/app/ui/plan/saveOne.html new file mode 100644 index 0000000..a6b0b32 --- /dev/null +++ b/src/app/ui/plan/saveOne.html @@ -0,0 +1,5 @@ +
处置节点保存
+
+ + +
\ No newline at end of file diff --git a/src/app/ui/plan/saveTwo.html b/src/app/ui/plan/saveTwo.html new file mode 100644 index 0000000..fec97ff --- /dev/null +++ b/src/app/ui/plan/saveTwo.html @@ -0,0 +1,53 @@ +
+
新增节点
+
+
+ +
+ + + +
+
+ + + + {{item.name}} + + + +
+
+ + +
+
+
+
+
+
保存到已有节点
+
+
+
+ + + + {{item.name}} + + + +
+
+ + +
+
+
+
\ No newline at end of file diff --git a/src/app/ui/plan/viewdetails.html b/src/app/ui/plan/viewdetails.html new file mode 100644 index 0000000..76638c2 --- /dev/null +++ b/src/app/ui/plan/viewdetails.html @@ -0,0 +1,24 @@ +
+
+ clear +
+ +
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/src/app/ui/real-cases/real-cases.component.html b/src/app/ui/real-cases/real-cases.component.html new file mode 100644 index 0000000..f851039 --- /dev/null +++ b/src/app/ui/real-cases/real-cases.component.html @@ -0,0 +1,91 @@ +
+
+ volume_up +
+
+
泵房
+
控制室
+ +
+
+
+ settings_voice +
+
+ 按住说话 +
+
+ search +
+
+
+
+
+ + + +
+ + + + + + + + + + + + + + + + + + + +
单位名称始建于着火物点火位置相近度详情
{{leisi.danweiName}}{{leisi.year}}{{leisi.zhoahuo}}{{leisi.weizhi}}{{leisi.xiangjin}}%查看详情
+
+ +
+ +
+
+ 基本信息 +
+
+ 事故特点 +
+
+ 处置经过 +
+
+ 几点体会 +
+
+ 存在不足 +
+
+ + + clear +
+ +
+ +
+ +
+
+ {{item.name}} +
+
+ +
+ {{zjxinxi}} +
+
+ +
+
+
diff --git a/src/app/ui/real-cases/real-cases.component.scss b/src/app/ui/real-cases/real-cases.component.scss new file mode 100644 index 0000000..f291888 --- /dev/null +++ b/src/app/ui/real-cases/real-cases.component.scss @@ -0,0 +1,260 @@ +.headerOperate { + position: relative; + flex: 2%; + display: flex; + align-items:center; + box-sizing: border-box; + margin: 0 0; + .bigTalkBox{ + user-select: none; + .titleIcon{ + font-size: 33px; + vertical-align: sub; + color: white; + } + .talkBox{ + width: 309px; + height: 326px; + border: 1px solid #30bbec; + background-color: #013a64; + opacity: .9 ; + position: absolute; + top: 32px; + right:4px; + z-index: 2000; + .btndiv{ + div{ + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + + } + div:nth-child(1){ + background-color: #fe9400; + margin: 10px; + } + div:nth-child(2){ + background-color: #f95e5a; + } + } + .bottomDiv{ + position: absolute; + bottom:6px; + width: 100%; + height: 32px; + line-height: 32px; + display: flex; + color: white; + text-align: center; + div:nth-child(1){ + flex: 1; + } + div:nth-child(2){ + flex: 6; + color: #409eff; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + } + div:nth-child(3){ + flex: 1; + + } + } + } + } +} + +.leisiTable{ + border:1px solid #0E79A9; + height: 95%; + width: 100%; + background-color: #05385E; + //margin-top: 50px; + table{ + width: 100%; + height: 50%; + border-collapse:collapse; + thead{ + td{ + color:#F7BA2A; + height: 50px; + text-align:center; + border-bottom: 1px solid #0E79A9; + } + } + tbody{ + td{ + text-align:center; + //height: 10%; + } + } + } +} +.tdyanse56{ + color:#3BA9F2 +} +.tdyanse78{ + color:#28BC69 +} +.tdyanse{ + color: #FFFFFF; +} +//弹窗 +.tanchuang{ + width: 50%; + height: 70%; + border:1px solid #0E79A9; + background-color: #05385E; + z-index: 99; + position: absolute; + top: 15%; + left: 20%; +} +.headerOperate { + position: relative; + span{ + font-size: 18px; + } + flex: 2%; + display: flex; + align-items:center; + min-height: 40px; + box-sizing: border-box; + margin: 0 0; + + .bigeditdeletebtn{ + margin-top: 5px; + border: 1px solid #30bbec; + margin-right: 0px; + height: 100%; + display: flex; + flex-direction: column; + justify-content: center; + user-select: none; + background-size:100% 100%; + color: white; + span{ + padding: 13px 13px; + //padding-right: 18px; + font-size: 24px; + } + } + .bigeditdeletebtn:hover{ + cursor: pointer; + //background-image: url("../../../assets/images/标签经过.png") ; + } + .close { + top: 20px; + right: 20px; + position: absolute; + color: #778087; + /* make a round button */ + border-radius: 12px; + /* center text */ + line-height: 20px; + text-align: center; + height: 20px; + width: 20px; + font-size: 18px; + padding: 1px; + font-size: 40px; + } + .xiao{ + top: 20px; + right: 50px; + position: absolute; + color: #778087; + /* make a round button */ + border-radius: 12px; + /* center text */ + line-height: 20px; + text-align: center; + height: 20px; + width: 20px; + font-size: 38px; + padding: 1px; + font-size: 40px; + } + + } + .tanCenter{ + width: 100%; + height: 90%; + .centerLeft{ + float: left; + height: 100%; + width: 30%; + position: relative; + flex-direction: column; + span{ + font-size: 18px; + } + flex: 2%; + display: flex; + align-items:center; + box-sizing: border-box; + margin: 0 0; + .tanCenterbtn{ + //margin-top: 5px; + width: 100%; + height: 100%; + border: 1px solid #30bbec; + //margin-right: 0px; + display: flex; + flex-direction: column; + // align-items:center;/*由于flex-direction: column,因此align-items代表的是水平方向*/ + //justify-content: center; + user-select: none; + //background-image: url("../../../assets/images/标签正常.png") ; + background-size:100% 100%; + color: white; + span{ + cursor:pointer; + border-bottom:1px solid #30bbec; + padding: 8px ; + text-align: center; + //padding-right: 18px; + font-size: 24px; + } + } + } + .centerRight{ + overflow: auto; + padding-top: 10px; + height: 90%; + width: 65%; + float:right ; + span{ + margin: 15px 15px; + color: #FFFFFF; + font-size: 18px; + line-height: 38px; + } + } + } + .button { + border-radius: 2px; + background-color: #4CAF50; + border: none; + color: white; + padding: 15px 32px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + margin: 4px 2px; + cursor: pointer; +} + +//点击后边框变色 +.biankuang{ + //border:1px solid red; + background-color: #F7BA2A; +} + diff --git a/src/app/ui/real-cases/real-cases.component.spec.ts b/src/app/ui/real-cases/real-cases.component.spec.ts new file mode 100644 index 0000000..49c4468 --- /dev/null +++ b/src/app/ui/real-cases/real-cases.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RealCasesComponent } from './real-cases.component'; + +describe('RealCasesComponent', () => { + let component: RealCasesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ RealCasesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(RealCasesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/real-cases/real-cases.component.ts b/src/app/ui/real-cases/real-cases.component.ts new file mode 100644 index 0000000..f084d0f --- /dev/null +++ b/src/app/ui/real-cases/real-cases.component.ts @@ -0,0 +1,220 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-real-cases', + templateUrl: './real-cases.component.html', + styleUrls: ['./real-cases.component.scss'] +}) +export class RealCasesComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + + leisiYuan=[ + {danweiName:"江苏南京扬子石化",year:"2017年",zhoahuo:"液态丙烯",weizhi:"烴泵区",xiangjin:parseFloat("50%")}, + {danweiName:"河北张家口中国化工集团盛华化工公司",year:"2018年",zhoahuo:"氯乙烯",weizhi:"氯乙烯一号气柜",xiangjin:parseFloat("40%")}, + {danweiName:"山东临沂金誉石化",year:"2017年",zhoahuo:"液化气",weizhi:"装卸区东北侧11号卸车位",xiangjin:parseFloat("30%")}, + {danweiName:"江苏省靖江市德桥化工仓储有限公司",year:"2016年",zhoahuo:"汽油",weizhi:"2号交换站",xiangjin:parseFloat("20%")}, + {danweiName:"海南东方市八所港危化品码头",year:"2016年",zhoahuo:"石脑油",weizhi:"丰盛油8油轮发动机舱",xiangjin:parseFloat("10%")} + + ] + //弹窗数据 + tandata=[ + {key:0,zongdata:[ + {name:"基本信息",xinxidata:[ + {name:"单位基本情况",xinxi:"江苏德桥化工仓储有限公司位于江苏省靖江市新港园区,是由新加坡恒阳石化物流有限公司投资组建的液体石化产品储运公司," + +"占地面积31.5万m2,现有员工130人,罐区13个、储罐139个,储存能力约58.3万m3。事故发生时储存有汽油、石脑油、甲醇、二氯乙烷、三氯乙烯、四氯乙烯、" + +"液化烃、芳烃、醋酸乙酯、醋酸丁酯、冰醋酸等25种危化品,共计21.12万吨,其中:油品约14万吨、液态化学品近7万吨、主要组分为C3、C4的液化烃约1420吨。" + +"事故单位北侧400m为村庄,东侧120m为储存能力52万m3、22个易燃易爆危化品储罐的联合安能石化有限公司,南侧300m为长江主航道,西侧50m为长江丹华港。"}, + {name:"主要工艺流程",xinxi:"德桥化工仓储有限公司是典型的危化品储运企业,主要从事液态散化、油品及液化气体的仓储中转、分拨、灌装业务。厂区设有2个软管交换站," + +"作为物料集中配输中心,通过输送管线分别连接长江码头、罐区储罐和厂区装卸台,实现危化品物料从码头—罐区—装卸台间的进出双向输转。其中,1号交换站:设有发船泵5台、" + +"发车泵30台,对应11、12、21、22罐区60个储罐的物料分输;2号交换站:设有发船泵6台、发车泵36台,对应13、14、15、23、24、25罐区58个储罐的物料分输。" + +"事故所在的2号交换站,位于厂区中间,24罐区北侧,为半敞开式框架结构,建筑面积1482m2,交换站下层管廊设有码头管线12根,连接长江码头,长度741-1102m、" + +"管径200-300mm;上层管廊设有发车管线36根,连接厂区装卸台,长度477-601m、管径100mm;底部分布有储罐内管线58根,分别连向各罐区储罐的罐根,因各罐区位置不同," + +"管线长度也不一样,总长约为1.1km。事故发生时,长江码头上的码头海油318(船名)、赣华强化016(船名),正在通过2号交换站,分别利用码头206号管线(管径250mm)、" + +"305号管线(管径200mm)进行卸汽油至2411储罐、卸醋酸乙酯至2307储罐的作业。其他10条管线内有残留物料。"}, + {name:"重点危险罐区",xinxi:"厂区危险等级最高的物料:燃烧或爆炸能产生剧毒光气的2406号二氯乙烷罐(存量4274吨)、1108号三氯乙烯罐(存量1988吨)和1105、1109、" + +"2210、2213、2214号四氯乙烯罐(存量9315吨)以及燃烧爆炸后威力巨大、主要组分为C3、C4 的901-926号液化烃罐(存量1536吨)。二氯乙烷:无色或浅黄色透明液体,有类似氯仿的气味," + +"微溶于水,可混溶于醇、醚、氯仿等,主要用于作蜡、脂肪、橡胶等的溶剂及谷物杀虫剂;属高毒类,对眼睛及呼吸道有刺激作用,吸入可引起肺水肿,抑制中枢神经系统、刺激胃肠道和引起肝、肾及肾上腺损害;" + +"其蒸气与空气形成爆炸性混合物,遇明火、高热能引起燃烧爆炸,与氧化剂能发生强烈反应,受高热分解产生有毒的腐蚀性气体。熔点-35.7℃、闪点13℃、沸点83.5℃、饱和蒸气压13.33Kpa/29.4℃,爆炸极限6.2%-16%。" + +"有害燃烧产物:一氧化碳、二氧化碳、氯化氢、光气。三氯乙烯:无色透明液体,有似氯仿的气味,不溶于水,可混溶于乙醇、乙醚等多数有机溶剂,主要用于脱脂、冷冻、农药、香料、橡胶工业、洗涤织物等;吸入后出现头痛、" + +"头晕、酩酊感、嗜睡等,重者发生谵妄、抽搐,甚至昏迷、呼吸麻痹或循环衰竭;其蒸气与空气形成爆炸性混合物,遇明火、高热能引起燃烧爆炸,与强氧化剂可发生反应,受高热分解产生有毒的腐蚀性气体。熔点-87.1℃、闪点32.2℃、" + +"沸点87.1℃、饱和蒸气压13.33Kpa/32℃,爆炸极限12.5%-90%。有害燃烧产物:一氧化碳、二氧化碳、氯化氢、光气。" + +"四氯乙烯:无色液体,有氯仿样气味,不溶于水,可混溶于乙醇、乙醚等多数有机溶剂,主要用作溶剂;吸入急性中毒者有上呼吸道刺激症状、流泪、流涎,随之出现头晕、头痛、恶心、运动失调及酒醉样症状;一般不会燃烧," + +"但长时间暴露在明火及高温下仍能燃烧;若遇高热可发生剧烈分解,引起容器破裂或爆炸事故;受高热分解产生有毒的腐蚀性气体。熔点-22.2℃、沸点121.2℃、饱和蒸气压2.11Kpa/20℃。有害燃烧产物:氯化氢、光气。"}, + {name:"着火区域情况",xinxi:"1、起火区域。起火位置为2号交换站。事故发生时,2号交换站进出料管线内存有汽油、石脑油、甲醇、芳烃、醋酸乙酯、醋酸丁酯、冰醋酸等物料,与其相连的罐区共存储12种、约15.8万吨的危化品。" + +"后期起火的2401罐所在罐区,位于厂区中部,共有12个储罐,呈东、西两排分布,罐区防火堤长170m、宽70m、高1.1m,罐组隔堤高1m,最小罐间距10m。其中,2401-2408号为内浮顶罐、2409-2412号为拱顶罐,2401、2402罐罐容2500m3," + +"其余均为3750m3。事故发生时,2401、2402、2403、2404、2407、2409、2410、2411罐储存汽油共计13482吨,2408、2412罐储存甲醇共计1895吨,2405罐储存汽油添加剂MTBE(又称甲基叔丁基醚)1675吨,2406罐储存二氯乙烷4274吨。" + +"2、毗邻情况。距离着火区域南侧7-8m为2401-2412罐区,储存裂解汽油、石脑油、甲醇、二氯乙烷等约1.8万吨;北侧66m为1301-1308罐区,储存甲醇约2.3万吨;东侧36m为2301-2316罐区,储存醋酸乙酯、醋酸丁酯、冰醋酸等约1.6万吨;" + +"西侧36m为2501-2504罐区,储存混合芳烃约1.5万吨;西侧100m为液化烃罐区,储存主要组分为C3、C4的液化烃约1536吨。"}, + {name:"单位消防设施及水源情况",xinxi:"事故单位设有消防水池1个,容积4864m3;消防水泵房位于厂区东侧,设有消防水泵3台,每台功率480kW、流量250L∕s、扬程130m;消防给水管网为环状、管径500mm,采用稳高压系统,平时压力0.7Mpa;" + +"厂区共有消火栓132只、固定水炮54门。泡沫站位于2号交换站北侧,设有泡沫储罐2座,储存3%型抗溶性水成膜泡沫18吨,泡沫混合液主管道管径200-250mm。各罐区均设有水喷淋冷却系统,除液化烃罐区外,其他罐区还设有泡沫灭火系统;" + +"1、2号交换站未设置自动消防设施。厂区四面有人工河流(护仓河)环绕,南临长江航道,西连丹华港,均可作为消防取水码头。"}, + {name:"单位及周边消防力量情况",xinxi:"德桥化工仓储有限公司只建有微型消防站,没有企业专职消防队。周边20km范围有1个现役消防队、1个政府专职消防队,共有消防车11辆、队员53人,总载水量59吨、泡沫量12.4吨,距离最近的新港城专职队约5公里。"}, + {name:"当日气象情况",xinxi:"气象资料显示:22日-23日,白天多云,夜里多云转阴有小雨,东南风3-4级,最低气温15-16℃,最高气温26-27℃。"} + ]}, + {name:"事故特点",xinxidata:[ + {name:"化学品种类多,危险性大",xinxi:"事故厂区储存有汽油、石脑油、甲醇、二氯乙烷、三氯乙烯、四氯乙烯、液化烃、芳烃、醋酸乙酯、" + +"醋酸丁酯等各类危化品共计25种、21万余吨,且分储在13个罐区内。库区、罐区、罐组、罐与罐的安全间距小,同一罐区、罐组内存有多种易燃易爆、" + +"有毒有害物料,成分复杂,风险极高。特别是厂区储存4274吨二氯乙烷、1988吨三氯乙烯、9315吨四氯乙烯,一旦遇到高热或发生爆炸、燃烧,会快速释放大量的剧毒光气。"}, + {name:"储罐类型复杂,处置难度高",xinxi:"罐区内有拱顶、内浮顶、全压力球型、半冷冻球型等多种储罐类型,储存物料有油、烷烃、醇、酯等," + +"处置方法和灭火药剂类型不同,特别是厂区南侧的二氯乙烷、东北侧的三氯乙烯和四氯乙烯罐以及主要组分为C3、C4的液化烃罐区,危险性大、处置难度高。"}, + {name:"地势落差大,流淌火蔓延快",xinxi:"厂区地势“中间高、南北低”,地面绝对标高相差约1.55m,道路坡度近1%。发生爆炸后,位于厂区中部的2号交换站上方管线被拉断," + +"大量易燃易爆物料外泄并沿地势急速流淌燃烧,将邻近罐区两侧的冷却管线和泡沫灭火管线烧毁。扑救过程中,大面积流淌火先后5次突破灭火防线,烧毁部分器材装备,严重威胁参战官兵生命安全。"}, + {name:"周边环境复杂,指挥决策难度大",xinxi:"事故单位距离长江主航道仅300m,有相邻的危险品码头2个,事发时正在作业的危险品运输船只2艘,其他危险品船只若干;" + +"周边5公里范围有19个村镇6万余名群众。加之事故单位有139个危化品储罐,与其一路之隔的联合安能化工有限公司还有22个、总储量达52万m3的易燃易爆物料储罐,火势一旦失控,极易引起连锁反应,给周边数十平方公里区域和长江水域带来不可估量的灾难。"} + ]}, + {name:"处置过程",xinxidata:[ + {name:"辖区力量到场",xinxi:"4月22日7时许,江苏德桥仓储有限公司组织承包商(华东建设安装有限公司)3名工人进入厂区2号交换站进行检修作业;" + +"8时10分,在未实施有效监护的情况下动火作业;9时13分,因作业产生的明火引起2号交换站排污沟内残留油体燃烧,烧裂正在进料作业的206、305号管线" + +"与储罐间的连接软管,造成管线内的裂解汽油和醋酸乙酯大量外泄燃烧;现场人员关闭了206、305号管线的紧急切断阀,并进行自救;9时16分,DCS系统发出指令," + +"关闭与2号交换站相连的物料输送管道的电动阀;9时18分,现场人员撤离前对2401罐未完全关闭的电动阀实施手动关阀(旋转了4圈);9时18分55秒、9时19分38秒," + +"大火烧裂交换站部分管线,物料外泄加剧,先后发生2次较大规模爆炸;9时26分,事故单位向119报警。9时34分至49分,辖区中队新港城专职队和靖江中队相继到场。" + +"此时,2号交换站一片火海,燃烧面积约2000㎡,火焰高达几十米,上层管廊出现局部坍塌。经询问单位技术人员,厂区所有生产系统已紧急停车,着火区域及邻近罐区的消防泵、" + +"喷淋系统和固定炮已开启,燃烧物质为醇、脂、油类等易燃液体(主要为206、305号管线内的裂解汽油和醋酸乙酯)。到场力量迅速进行战斗部署:新港城专职队一号车泡沫水罐车" + +"停靠1号交换站附近,从着火区域东侧架设1门移动炮阻截火势、1门移动炮冷却2402罐;二号车水罐车占据氮气站附近消火栓,向一号车供水;三号车抢险救援车停靠厂区东门外," + +"负责外围警戒和增援车辆引导。靖江中队一号车压缩空气泡沫车停靠南侧2411罐附近,从着火区域西南侧架设1门移动炮冷却2401罐(后期改为2支泡沫枪灭火);二号车泡沫水罐车占据" + +"南侧人工河,向一号车供水;三号车高喷车停靠西侧2501罐附近,从着火区域西北侧压制火势;四号车泡沫水罐车占据西侧926罐附近消火栓,向三号车供水;五号车泡沫水罐车占据北侧人工河," + +"从着火区域北侧架设1门移动炮阻截火势;六号车抢险救援车停靠厂区东门外,负责外围警戒和增援车辆引导。10时40分,2号交换站发生第三次爆炸,站内承重结构严重受损,管廊呈V型坍塌," + +"与装卸台相连的36条管线以及与码头相连的12条管线被拉断,大量带压物料加速外泄,顺地势沿罐区东、西两侧道路急速流淌,瞬间形成“全路面”流淌火。现场指挥员立即下达紧急撤退命令," + +"参战官兵按照既定路线,迅速撤离至邻近的2502罐南侧未使用的罐区防火堤内。在西南侧承担主攻任务的靖江中队泡沫车驾驶员朱军军,为保证火场供水不间断、掩护战友及时撤退、抢救车辆装备,被流淌火围困,瞬间被大火吞噬,壮烈牺牲。"}, + {name:"支队增援力量到场",xinxi:"10时50分,支队全勤指挥部和特勤、泰兴、通扬路中队到场。此时,交换站及其东、南、西侧道路的流淌火近5000m2,火焰高度约40-50m,严重威胁位于" + +"厂区南侧的液化烃输送管道及24、25罐区的16个储罐安全。指挥部立即组织力量从东、南、西侧部署1门暴雪泡沫炮、2支泡沫枪梯次掩护、强攻推进压制地面流淌火,并重新部署2门移动炮在西侧" + +"道路设置阻截阵地。同时,组织相继到场的姜堰、兴化、滨江、春晖路中队,分别从着火区域西南、东北、东南方向共增设6门移动炮,阻截火势,强行对邻近的2401、2402、2403、2404、2502罐实施冷却、抑制爆炸。"}, + {name:"总队增援力量到场",xinxi:"总队全勤指挥部出动途中,周详总队长通过指挥中心和移动视频终端实时跟踪灾情发展态势、了解战斗部署情况,并及时向前方指挥员下达指示要求:一是迅速查明燃烧物料的种类、性质和储量;" + +"二是力量到场后不得盲目靠近事故核心区,应边行进边侦检,在相对安全区域设置移动炮、车载炮等阵地,确保官兵自身安全;三是组织单位技术人员采取关阀断料、紧急停车、氮封保护、启动固定消防设施等工艺措施,有效控制灾情发展;" + +"四是根据火场态势和力量到场情况,集中全力加强对着火区域邻近罐体的冷却,防止火势扩大蔓延;五是及时关闭罐区雨排系统,安排力量提前筑堤设防,防止流淌火蔓延;六是派出安全哨,实时观察灾情发展态势,不间断监测罐体结构变化和" + +"罐壁温度,明确紧急撤离路线。11时50分至12时,总队全勤指挥部和周详总队长相继到达现场,第一时间在距离2号交换站120m的配电房附近设立火场总指挥部,由周详总队长担任总指挥、高宁宇参谋长担任前沿指挥,朱晖副参谋长负责火情侦察" + +"和通信保障、王士军副参谋长负责统筹协调和药剂保障,责令事故单位指派熟悉厂区情况和工艺安全的技术人员到指挥部全程值守,同时架设无人机高空侦察。指挥部第一时间调取厂区平面图和DCS系统实时监测数据,并围绕着火区域进行火情侦察," + +"确认着火区域南侧为混存裂解汽油、石脑油和燃烧爆炸产生剧毒光气的二氯乙烷罐区;北侧为甲醇罐区;东侧为冰醋酸、醋酸乙酯罐区;西侧为混合芳烃及主要组分为C3、C4的液化烃罐区。无人机航拍发现,2号交换站燃烧猛烈,直接烘烤南侧2401、" + +"2402罐和西侧2502、2504罐;东、西两侧道路形成大面积流淌火迅速向南蔓延;2401-2404罐组防火隔堤内充满流淌火。根据DCS系统监测和无人机侦察结果,考虑到现场力量与灾情态势不对等的现状,指挥部确定了“控制燃烧、冷却抑爆、筑堤设防、" + +"全程监测”的战术原则,并研究制定七项处置措施:一是明确将2406罐和液化烃罐区作为保护重点,集中力量冷却南侧的2401、2402、2403、2404罐和西侧2502、2504罐,阻止火势蔓延;二是组织力量在着火区域东南、西南、西北方向道路上筑堤设防," + +"防止地面流淌火蔓延,威胁战斗阵地和官兵生命安全;三是核查着火罐区关阀断料情况;四是密切监视邻近储罐的结构变化,时刻监测罐体温度以及厂区可燃、有毒气体浓度;五是组织力量接应灭火药剂、装备器材厂家,做好向战斗阵地的输送投放;六是通知" + +"交通部门对长江航道采取禁航措施,撤离事故码头上下游船舶;七是通知环保部门做好防范水域污染的应对措施。12时05分至13时10分,无锡、南通、扬州支队增援力量相继到场。指挥部命令:泰州支队占据着火区域西北侧阵地,继续阻截流淌火向西侧芳烃罐区" + +"蔓延,重点冷却2502、2504罐,防止火势威胁液化烃罐区;无锡支队在着火区域东、西侧道路及南侧设置阵地,扑灭地面流淌火,加强冷却2401、2402、2403、2404罐进行,死保2406罐;扬州支队占据着火区域北侧阵地,阻截流淌火蔓延,加强冷却1307、1406罐;" + +"南通支队2套远程供水泵组分别利用东南侧消防水池和北侧人工河,向无锡和泰州支队阵地供水。12时15分许,着火区域接连传出十几声“嘭嘭”的爆炸声。侦察发现,由于长时间火焰烧烤,与2号交换站相连的部分进出料管线及盲板炸裂,管线内残存的汽油、甲醇、芳烃、" + +"醋酸乙酯、冰醋酸等物料大量外泄(约260吨)。随着火势猛烈燃烧,流淌火再次向东、西两侧排水明渠和道路翻腾外溢,并流淌至厂区南侧人工河流,同时越过西侧道路向芳烃罐区蔓延,2502、2504罐被浓烈的烟火笼罩,2502罐保温层局部脱落。根据火情,指挥部调整" + +"力量部署:在2502罐南侧未使用的罐区防火堤内设置4支泡沫枪阻截扑灭堤外流淌火;在2405—2408罐组防火堤内架设4门移动炮,加强对2403、2404罐冷却控制,继续死保2406罐;在西北侧架设2门移动炮,加强冷却2502、2504罐;在厂区南侧河面上,利用15m拉梯搭建" + +"紧急撤离通道;依托罐区道路和防火堤,从东南、西南、西北三个方向利用沙袋构筑防护堤。同时,考虑2406罐存在爆炸危险,为在紧急情况下掩护官兵撤退,指挥部调集2台涡喷消防车增援现场。随即,指挥部前移至距离着火点30m左右的地点。" + +"12时30分,省委常委、政法委书记、公安厅厅长王立科,省公安厅副厅长程建东到达现场,实地勘察灾情。王立科书记就事故处置工作提出六点要求:一是始终将参战官兵安全放在第一位,加强个人防护;二是发挥厂方技术人员作用,科学制定处置方案;" + +"三是全力控制灾情扩大,做好长时间作战准备;四是如实发布信息,客观规范舆论导向;五是加强外围警戒,严禁无关人员进入现场;六是尽快组织专家评估灾情发展态势。" + +"13时30分至17时45分,常州、苏州、镇江、南京、盐城支队和总队培训基地、公安消防部队士官学校的增援力量陆续到场。指挥部随即将整个火场划分为前、后方两个战区。" + +"前方以事故区域为中心,划分东、西、南、北四个战斗段,要求着火区域必须使用“全泡沫”灭火与冷却。西侧阵地:泰州、苏州、南通、镇江支队和总队培训基地部署4门移动炮、" + +"1门车载炮、1门高喷炮,阻截火势,加强对2401、2403、2502罐冷却,重点保护液化烃罐区。南侧阵地:无锡、常州支队部署8门移动炮,阻截火势,加强对2401、2402、2403、" + +"2404、2405、2406罐冷却,持续死保2406号二氯乙烷罐。东侧阵地:南京、常州、盐城、泰州支队部署8门移动炮,阻截火势,加强对2401、2402、2404、2301、2303罐冷却。" + +"北侧阵地:南京、扬州、泰州、南通、苏州支队部署10门移动炮、2门高喷炮、2门暴雪泡沫炮,阻截火势,加强对1307、1308罐冷却。" + +"后方调集全省10套远程供水泵组、4辆泡沫原液供给车、40台泡沫输转泵、1200吨抗溶性泡沫,依托厂区人工河和长江航道设立取水点,设置2个泡沫补给点,全力保障火场不间断供水、" + +"供液。远程供水:常州、无锡支队2套泵组利用厂区东南侧消防水池,向南侧、东侧阵地供水;苏州支队1套泵组利用北侧人工河,向北侧阵地供水;南通支队3套泵组分别利用厂区东南侧消防" + +"水池、北侧人工河和南面长江干道,向南侧、北侧阵地供水;扬州支队1套泵组利用北侧人工河,向北侧阵地供水;泰州支队2套泵组分别利用南侧人工河和长江主干道,向消防水池和东侧阵地供水;" + +"培训基地1套泵组利用北侧人工河,向西侧阵地供水。泡沫供给:分别在东、西门附近设置2个泡沫补给点,采取泡沫原液供给车输转、泡沫输转泵输转、人工搬运等多种方法,向各战斗阵地不间断补给泡沫药剂。" + +"14时50分,指挥部决定:组织公安消防部队士官学校132名官兵,分别在东、西、北侧进攻路线上布设第二道防护堤,组织力量死看死守,牢牢将火势控制在交换站周边区域内。" + +"16时11分,2号交换站火势突然急剧增大,巨大的火球腾空而起,近百米高的浓烟烈火笼罩厂区上空,东、西两侧部分道路和2401-2404罐防火隔堤内瞬间布满流淌火。加之厂区邻近" + +"长江、风向多次突变,固定泡沫站被大火完全吞噬,强大的热辐射对邻近2号交换站北侧的甲醇和西北侧的芳烃等罐区安全构成了极大的威胁,人员难以靠近。指挥部根据物料泄漏量、" + +"流淌速度及燃烧时间推断,2401-2404罐组存在储罐阀门未完全关闭,提出了“加强筑堤保护、全力阻截流淌火、持续强化冷却、伺机抵近关阀”的针对性措施。鉴于1307、1308罐体外壁温度均已超过300℃," + +"命令北侧阵地的扬州、泰州、苏州支队尽全力冷却1307、1308甲醇罐。" + +"16时45分,紧急调集的2万米水带、30门移动炮、100套隔热服、30台泡沫输转泵、300套防毒面具全部到场,做好了打持久战的准备。" + +"18时,指挥部根据兵力部署、火场态势和泡沫药剂、水源准备情况,发动第一次总攻,共部署30门移动炮、3门高喷炮、1门车载炮、2门暴雪泡沫炮、21支泡沫管枪强攻灭火。" + +"18时30分,交换站东、西两侧地面流淌火被陆续扑灭,前期丢失的部分阵地重新占领,灭火力量与灾情态势相对均衡,火场进入拉锯相持阶段。" + +"18时40分,指挥部明确四项措施:一是各阵地灭火冷却强度保持均衡;二是确保泡沫药剂、油料、供水不间断;三是加紧筑堤,巩固阵地;四是战斗预备队做好轮换准备。" + +"19时许,淮安、宿迁、连云港、徐州4个支队,中石化华东片区的扬子石化、金陵石化、仪征化纤、南化公司、管道分公司、高桥石化6个企业专职消防队,共51辆重型泡沫车、342名队员," + +"以及总队2套单车400L/s的超重型化工编队,到达现场。按照指挥部要求,立即组成战斗预备队,做好随时轮换投入战斗的准备。" + +"19时45分,伴随着几声巨响,数个火球接连腾起,管道再次爆裂,交换站东、西两侧道路再次出现大面积流淌火,2401罐顶鼓起,呼吸阀和泡沫产生器罐壁连接处起火," + +"呈火炬型燃烧。指挥部要求前沿指挥长密切监控火情,必要时有权决定撤退,确保安全。囿于高喷车难以抵近作战、移动炮和车载炮射程不足,指挥部要求加大供给强度,加强2401罐冷却,责成企业调集氮气车沿2401罐的东南侧道路停靠,强制向2401罐实施充氮保护。"}, + {name:"部局领导到场",xinxi:"20时10分,罗永强副局长一行到达现场。在听取情况汇报、查看无人机视频后,罗永强副局长率领部局专家组深入现场,抵近着火点侦察,与化工专家研判商讨后," + +"作出战斗部署:一是即将到场的上海增援力量配合无锡支队在重点防御的西南侧阵地展开战斗;二是再次确认所有储罐阀门关闭情况;三是调用高喷车对受火势威胁较大的1307、1308罐进一步强化冷却。" + +"20时30分,上海总队汪永明副总队长率领增援力量到场。根据罗永强副局长指示,组织力量从着火区域西南侧架设6门移动炮,协助无锡支队阻截交换站火势,并对2401、2403罐实施冷却。" + +"21时50分,部消防局于建华局长带领工作组到达现场,详细听取现场情况汇报,深入前沿阵地勘察火情,准确研判火灾发展态势,迅速召集各战斗段指挥员和事故单位工程技术人员,提出五项处置措施:" + +"一是保持足够力量对着火邻近储罐进行大强度冷却,确保不发生问题;二是从临近地区调集氮气,架设临时管线,对受火势威胁的储罐进行充氮保护;三是外接临时电源,启动西侧半冷冻球罐冰机;" + +"四是备足力量和药剂,择机对交换站及罐区实施强攻灭火;五是树立底线意识,组织疏散半径5公里范围内的群众。" + +"根据于建华局长指示,4个战斗区段分别增设1门移动炮加强对邻近罐冷却;组织对2401-2404罐组防火堤进行凿孔导流,降低液面、防止漫堤;" + +"加强对2401-2404罐补充氮气保护;协调当地政府疏散周边5公里范围内的群众;各战斗阵地迅速补足泡沫和油料,组织预备力量轮换,做好总攻准备。" + +"23日0时左右,2号交换站内火势仍呈喷射状燃烧。根据现场情况,于建华局长召集专家分析认定,罐区内仍有管线阀门未关闭,随即要求0时至1时再次发动总攻,为关阀断料创造条件。" + +"0时30分,各阵地共部署42门移动炮、1门高喷炮、2门车载炮、2门暴雪泡沫炮、21支泡沫管枪,对着火区域及邻近罐区发起第二次总攻,2401-2404罐组内的流淌火、" + +"2401罐顶呼吸阀和泡沫产生器罐壁连接处的明火被全部扑灭,2号交换站火势有所减弱。前沿侦察小组冒着强辐射热,抵近火场最前沿,反复观察火情,认为现场已具备关阀条件," + +"当即向于建华局长报告。于建华局长当机立断、果断决策,命令实施关阀断料。随后,罗永强副局长亲自排查罐区管线,制定关阀方案,指挥南京支队关阀攻坚小组," + +"在雾状水掩护下深入罐区防火堤内实施关阀断料。0时40分,2403、2404罐的进出料阀门被彻底关闭。" + +"1时10分,2401罐的进出料阀门被彻底关闭。随后,火势明显减弱。指挥部命令,在保证冷却力量的前提下,各战斗段抢抓战机,梯次掩护推进,全力围剿火势。3时10分,大火被彻底扑灭。"}, + {name:"冷却监护、移交现场",xinxi:"大火扑灭后,现场指挥部命令参战力量继续向着火区域液面喷射泡沫,增加泡沫覆盖厚度,防止复燃。同时继续冷却相邻罐体、持续降温," + +"安排专人对罐体温度和水样、空气进行不间断检测。4时25分,2401、2403、2404罐壁温度降至40℃以下,其它罐降至20℃左右,空气、水体检测结果基本正常。" + +"9时30分,指挥部召集参战队伍指挥员进行战斗小结,明确苏州、无锡、南通、镇江、扬州5个支队,25辆消防车、150名官兵留守现场,配合泰州支队实施监护,其余力量陆续返回。" + +"25日12时,现场所有储罐温度均降至常温,增援支队全部撤回,泰州支队17辆消防车、102名官兵继续监护。"} + ]}, + {name:"几点体会",xinxidata:[ + {name:"领导高度重视、正确指挥是先决条件",xinxi:"事故发生后,按照习近平总书记、李克强总理作出的批示指示,郭声琨部长,黄明、李伟副部长坐镇公安部指挥中心," + +"通过音视频系统指导现场处置工作,尤其是李伟副部长全程、实时跟踪指导一线战斗行动,明确了5条富有实效的战斗措施,为整个灭火救援战斗提供了科学遵循。江苏省委书记罗志军、" + +"省长石泰峰,省委常委、政法委书记、公安厅厅长王立科,公安部消防局局长于建华、副局长罗永强深入火场前沿阵地,指导事故处置工作,鼓舞士气、凝聚警心,为全体参战官兵注入了强大的精神动力。" + +"特别是于建华局长、罗永强副局长率先垂范、靠前指挥,准确研判、抢抓战机、果断决策,采取了一系列行之有效的灭火措施,从根本上遏制了火灾态势,为最终圆满打赢了这场险象环生的战斗起到了决定性作用。"}, + {name:"力量调集充分、响应迅速是有力支撑",xinxi:"针对石油化工火灾的特殊复杂性和灾情预判情况,总队第一时间提请省政府启动重特大灾害事故应急处置预案,按火灾最高等级调集全省13个支队和总队培训基地28个化工编队、" + +"4个战勤保障编队、10套远程供水泵组、124辆大功率泡沫水罐车、161门移动炮、1200吨抗溶性泡沫以及通信、侦检、洗消等装备器材,部消防局紧急调派公安消防部队士官学校和上海总队40辆车、332名官兵到场增援,为打好初战控制、有效遏制灾情扩大提供了有力保障。"}, + {name:"发挥专家作用、科学施救是关键所在",xinxi:"事故发生后,部消防局和总队紧急调派化工灭火专家遂行出动、辅助决策。专家组根据侦察结果,实时评估灾情发展态势和罐体设备安全,及时提出了筑堤设防、全力冷却、" + +"注氮排险等处置建议。尤其是公安部灭火救援专家组郝伟同志,在事故单位2次关阀未果的情况下,多次抵近罐区侦察,与罗永强副局长一起全程指导攻坚组关阀,对成功扑灭大火起到了十分关键的作用。"}, + {name:"应急联动高效、保障有力是重要基础",xinxi:"事故发生后,省、市两级市政府迅速启动应急预案和联动机制,公安、安监、交通、气象、卫生、供水、供电、环保等部门第一时间响应,调集了客运车、环境检测车、" + +"120救护车、叉车、运沙车等各种车辆40余辆和砂土、水泥等应急物资,协同开展了外围警戒、人员疏散、物资保障、环境监测、医疗急救等工作。总、支队两级战勤保障和应急通信力量遂行作战,调集战勤保障车辆22辆、" + +"器材装备600余件套、水带2万多米、泡沫灭火剂约1200吨、油料约52吨,综合利用4G球机、3G单兵、卫星通信指挥车、无人机等设备,实时采集全景视频、火点分布、罐体温度等数据,不间断上传重点部位图像,为现场指挥决策提供了科学参考。"}, + {name:"官兵英勇顽强、舍生忘死是根本保证",xinxi:"面对高温、浓烟、毒害气体和随时可能发生的爆炸,参战官兵从将军到士兵无一人退缩,始终战斗在灭火最前沿,面对生与死的考验,表现出应有的血性和担当。在多次进攻受阻的情况下,全体参战官兵顶着巨大压力,敢打敢拼、死守“红线”,与大火展开拉锯战、攻坚战,彰显了消防铁军英勇善战、敢打必胜的战斗精神。"} + ]} + ]}, + {key:1,zongdata:[ + {name:"基本信息",xinxidata:[ + {name:"码头基本情况",xinxi:"八所港危化品码头位于东方市滨海南路,东侧为中海石油建滔化工有限公司化工厂区(甲醇项目)、中海油东方石化有限责任公司化工厂区" + +"(DCC项目),西侧、北侧、南侧为大海。码头设置3个泊位,1号泊位为10000吨级,2号泊位为5000吨级,3号泊位为50000吨级。该码头目前运营工业园区六家公司的产品," + +"共有甲醇、原油、汽油、柴油、LPG、丙烯、MTBE等16种作业介质,年吞吐量约为520万吨。"},{name:"事故油轮基本情况",xinxi:"“丰盛油8 号”船体总长99.87m,型宽14.2m,吃水深度7.1m," + +"满载为4800 吨。船体前端和中段共有10 个储油舱,分布在船体左右两侧,每个储油舱480 吨。船尾甲板以上共3 层,分别为驾驶室、船员舱和生活舱。船尾负二层为船员舱,负一层底舱为机" + +"舱,机舱和货舱之间为泵舱。事故发生时油轮已装油完毕正准备离港。"},{name:"石脑油理化性质",xinxi:"石脑油化学俗名为溶剂油、粗汽油,是一种无色或浅黄色易燃液体,有特殊气味。其蒸汽与空气混合,能形成爆炸性混合物。" + +"相对密度为0.78~0.97,闪点小于-18℃,燃点为260℃,爆炸极限%(V/V)为1.2~6.8。不溶于水,溶于多数有机溶剂,主要成分为烷烃的-C4~C6-成分。蒸汽比空气重,沿地面扩散并易积存于低洼处,遇火源会着火回燃。" + +"能够通过呼吸道吸入、皮肤接触、食入等方式进入体内,石脑油蒸气可引起眼及上呼吸道刺激症状。如浓度过高,几分钟即可引起呼吸困难、紫绀等缺氧症状。"}, + {name:"消防水源及消防设施情况",xinxi:"该码头设施的消防用水采用两路供水,一路由后方甲醇项目厂区2 座各为容量4000m3 的消防水池提供,另外一路由后方精细化工项目厂区内2 座各为容量10000m3的消防水池提供,由2 条管" + +"径DN400mm 的消防供水干管接至码头,消防管网供水能力为600L/S,压力0.7~1.2MPa。码头设置46 套消防栓箱、1 套水幕系统、2 套ZPF3000 干粉灭火系统、8 座消防炮塔(每座炮塔上有" + +"电动遥控消防泡沫炮和水炮各一门,消防水炮和消防泡沫炮流量均为80L/s),备有抗溶性水成膜泡沫25 吨,存储在泡沫泵房内,通过比例混合器直接进入泡沫管线,向泡沫栓供给。码头周边" + +"1000m 范围内有可用市政消火栓10 个(园区三路2 个,疏港北路2 个,疏港三中路6 个),压力为0.2~0.3MPa,另距离码头约300m处有华能电厂码头可作为海水取水点。"} + ]} + ]} + ] + zongdata + centerdata + + //打开说话框 + isOpenTalk = false + openTalkDiv(){ + this.isOpenTalk = !this.isOpenTalk + } + //详情页 + isshow=false//控制显隐 + ShowHide (key){ + console.log(this.tandata) + this.zongdata=this.tandata[key].zongdata + this.centerdata=this.zongdata[0].xinxidata + console.log(this.zongdata) + this.isshow=true + } + ShoeFalse(){ + this.isshow=false + /* this.zongdata=null + this.centerdata=null */ + this.zjxinxi="" + this.chooseleft=-1 + this.chooseid=0 + } + //点击弹窗头部 + chooseid=0 + clickHead(num){ + this.zjxinxi="" + this.chooseid=num + this.centerdata=this.zongdata[num].xinxidata + this.chooseleft=-1 + console.log(this.centerdata) + } + + //点击弹窗左侧菜单栏 + zjxinxi + chooseleft + clickLift(key){ + this.chooseleft=key + console.log(key) + this.zjxinxi=this.centerdata[key].xinxi + } + + +} diff --git a/src/app/ui/similar-plans/similar-plans.component.html b/src/app/ui/similar-plans/similar-plans.component.html new file mode 100644 index 0000000..5483b3c --- /dev/null +++ b/src/app/ui/similar-plans/similar-plans.component.html @@ -0,0 +1,52 @@ +
+
+ 返回 +
+
+ volume_up +
+
+
泵房
+
控制室
+ +
+
+
+ settings_voice +
+
+ 按住说话 +
+
+ search +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + +
单位名称始建于着火物点火位置相近度详情
{{leisi.danweiName}}{{leisi.weizhi}}{{leisi.xiangjin}}%查看详情
+
+
+ +
+
diff --git a/src/app/ui/similar-plans/similar-plans.component.scss b/src/app/ui/similar-plans/similar-plans.component.scss new file mode 100644 index 0000000..1586d5b --- /dev/null +++ b/src/app/ui/similar-plans/similar-plans.component.scss @@ -0,0 +1,122 @@ +.leisiTable{ + border:1px solid #0E79A9; + height: 95%; + width: 100%; + background-color: #05385E; + margin-top: 50px; + table{ + width: 100%; + height: 100%; + border-collapse:collapse; + thead{ + td{ + color:#F7BA2A; + height: 50px; + text-align:center; + border-bottom: 1px solid #0E79A9; + } + } + tbody{ + td{ + text-align:center; + + } + } + } +} +.tdyanse56{ + color:#3BA9F2 +} +.tdyanse78{ + color:#28BC69 +} +.tdyanse{ + color: #FFFFFF; +} +.backBtn{ + position: absolute; + right: 60px; + top: 8px; + width: 80px; + height: 30px; + line-height: 30px; + text-align: center; + color: white; + cursor: pointer; + border: 1px solid #0E79A9; + border-radius: 5px; + z-index: 8999; +} +.backBtn:hover{ + background-color: #0c4c69; +} +.bigTalkBox{ + user-select: none; + .titleIcon{ + font-size: 33px; + vertical-align: sub; + color: white; + cursor: pointer; + } + .talkBox{ + width: 309px; + height: 326px; + border: 1px solid #30bbec; + background-color: #013a64; + opacity: .9 ; + position: absolute; + top: 32px; + right:4px; + z-index: 2000; + .btndiv{ + div{ + border-radius: 18px; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + display: inline-block; + font-size: 13px; + color: white; + cursor: pointer; + + } + div:nth-child(1){ + background-color: #fe9400; + margin: 10px; + } + div:nth-child(2){ + background-color: #f95e5a; + } + } + .bottomDiv{ + position: absolute; + bottom:6px; + width: 100%; + height: 32px; + line-height: 32px; + display: flex; + color: white; + text-align: center; + mat-icon{ + vertical-align: sub; + } + div:nth-child(1){ + flex: 1; + } + div:nth-child(2){ + flex: 6; + color: #409eff; + background: url('../../../assets/images/输入框.png'); + background-size: 100% 100%; + } + div:nth-child(3){ + flex: 1; + + } + } + } + } + .cssClass{ + top: -42px!important; + } \ No newline at end of file diff --git a/src/app/ui/similar-plans/similar-plans.component.spec.ts b/src/app/ui/similar-plans/similar-plans.component.spec.ts new file mode 100644 index 0000000..4ef6afe --- /dev/null +++ b/src/app/ui/similar-plans/similar-plans.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SimilarPlansComponent } from './similar-plans.component'; + +describe('SimilarPlansComponent', () => { + let component: SimilarPlansComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ SimilarPlansComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SimilarPlansComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/similar-plans/similar-plans.component.ts b/src/app/ui/similar-plans/similar-plans.component.ts new file mode 100644 index 0000000..328c7aa --- /dev/null +++ b/src/app/ui/similar-plans/similar-plans.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from '@angular/core'; +import { Color } from 'cesium'; + +@Component({ + selector: 'app-similar-plans', + templateUrl: './similar-plans.component.html', + styleUrls: ['./similar-plans.component.scss'] +}) +export class SimilarPlansComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + + } + //打开说话框 + isOpenTalk = false + openTalkDiv(){ + this.isOpenTalk = !this.isOpenTalk + } + + leisiYuan=[ + {danweiName:"广西钦州志诚化工有限公司",year:"XXXX年",zhoahuo:"XXX",weizhi:"2#储罐",xiangjin:parseFloat("80%")}, + {danweiName:"南宁交能石化有限责任公司",year:"",zhoahuo:"XXX",weizhi:"3#储罐",xiangjin:parseFloat("75%")}, + {danweiName:"广西藤县通轩立信化学有限公司",year:"",zhoahuo:"XXX",weizhi:"1#储罐",xiangjin:parseFloat("70%")}, + {danweiName:"广西田东锦盛化工科技有限公司",year:"",zhoahuo:"XXXXXX",weizhi:"12#储罐",xiangjin:parseFloat("60%")}, + {danweiName:"梧州市联溢化工有限公司",year:"",zhoahuo:"XXX",weizhi:"5#储罐",xiangjin:parseFloat("50%")}, + {danweiName:"田东石油化工钦州港油品储运库",year:"",zhoahuo:"XXX",weizhi:"4-1#储罐",xiangjin:parseFloat("40%")}, + {danweiName:"中国石油进德油库",year:"",zhoahuo:"XXX",weizhi:"3#储罐",xiangjin:parseFloat("45%")}, + {danweiName:"广西华鑫化工有限公司",year:"",zhoahuo:"XXX",weizhi:"11#储罐",xiangjin:parseFloat("42%")}, + {danweiName:"广西中油能源有限公司",year:"",zhoahuo:"XXX",weizhi:"6#储罐",xiangjin:parseFloat("39%")}, + {danweiName:"广西钦州澄星化工科技有限公司",year:"",zhoahuo:"XXX",weizhi:"5-2#储罐",xiangjin:parseFloat("35%")}, + {danweiName:"中油广西田东石油化工总厂有限公司",year:"",zhoahuo:"XXX",weizhi:"3-1#储罐",xiangjin:parseFloat("30%")} + ] + + isResponsePlans = false //默认是否是处置预案 + + openDeatails(){ + this.isResponsePlans = true + } + back(){ + this.isResponsePlans = false + } +} diff --git a/src/app/ui/ui-routing.module.ts b/src/app/ui/ui-routing.module.ts new file mode 100644 index 0000000..4edafec --- /dev/null +++ b/src/app/ui/ui-routing.module.ts @@ -0,0 +1,28 @@ +import { Routes, RouterModule } from '@angular/router'; +import { NgModule } from '@angular/core'; +import { CollectionToolsComponent } from './collection-tools/collection-tools.component'; +import { planComponent } from './plan/collection-tools.component'; +import { DisposalNodeComponent } from './disposal-node/disposal-node.component'; +import { DangerousComponent } from './dangerous/dangerous.component'; +import { PlanAssistanceComponent } from './plan-assistance/plan-assistance.component'; +import { RealCasesComponent } from './real-cases/real-cases.component'; +import { SimilarPlansComponent } from './similar-plans/similar-plans.component'; + + + +const routes: Routes = [ + { path: 'collectionTools', component:CollectionToolsComponent }, + { path: 'plan', component:planComponent }, + { path: 'collectionTools', component:CollectionToolsComponent}, + { path: 'dangerous', component:DangerousComponent}, + { path: 'disposalNode', component:DisposalNodeComponent}, + { path: 'planAssistance', component:PlanAssistanceComponent}, + { path: 'realCases', component:RealCasesComponent}, + { path: 'similarPlans', component:SimilarPlansComponent}, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class UiRoutingModule {} diff --git a/src/app/ui/ui.component.html b/src/app/ui/ui.component.html new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/app/ui/ui.component.html @@ -0,0 +1 @@ + diff --git a/src/app/ui/ui.component.scss b/src/app/ui/ui.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/ui/ui.component.spec.ts b/src/app/ui/ui.component.spec.ts new file mode 100644 index 0000000..6364771 --- /dev/null +++ b/src/app/ui/ui.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UiComponent } from './ui.component'; + +describe('UiComponent', () => { + let component: UiComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UiComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UiComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/ui/ui.component.ts b/src/app/ui/ui.component.ts new file mode 100644 index 0000000..aa89818 --- /dev/null +++ b/src/app/ui/ui.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-ui', + templateUrl: './ui.component.html', + styleUrls: ['./ui.component.scss'] +}) +export class UiComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/ui/ui.module.ts b/src/app/ui/ui.module.ts new file mode 100644 index 0000000..908eb79 --- /dev/null +++ b/src/app/ui/ui.module.ts @@ -0,0 +1,127 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { UiComponent } from './ui.component'; +import { UiRoutingModule } from './ui-routing.module'; +import {A11yModule} from '@angular/cdk/a11y'; +import {DragDropModule} from '@angular/cdk/drag-drop'; +import {PortalModule} from '@angular/cdk/portal'; +import {ScrollingModule} from '@angular/cdk/scrolling'; +import {CdkStepperModule} from '@angular/cdk/stepper'; +import {CdkTableModule} from '@angular/cdk/table'; +import {CdkTreeModule} from '@angular/cdk/tree'; +import {MatAutocompleteModule} from '@angular/material/autocomplete'; +import {MatBadgeModule} from '@angular/material/badge'; +import {MatBottomSheetModule} from '@angular/material/bottom-sheet'; +import {MatButtonModule} from '@angular/material/button'; +import {MatButtonToggleModule} from '@angular/material/button-toggle'; +import {MatCardModule} from '@angular/material/card'; +import {MatCheckboxModule} from '@angular/material/checkbox'; +import {MatChipsModule} from '@angular/material/chips'; +import {MatStepperModule} from '@angular/material/stepper'; +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatDialogModule} from '@angular/material/dialog'; +import {MatDividerModule} from '@angular/material/divider'; +import {MatExpansionModule} from '@angular/material/expansion'; +import {MatGridListModule} from '@angular/material/grid-list'; +import {MatIconModule} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import {MatListModule} from '@angular/material/list'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatNativeDateModule, MatRippleModule, MatOption} from '@angular/material/core'; +import {MatPaginatorModule} from '@angular/material/paginator'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatRadioModule} from '@angular/material/radio'; +import {MatSelectModule} from '@angular/material/select'; +import {MatSidenavModule} from '@angular/material/sidenav'; +import {MatSliderModule} from '@angular/material/slider'; +import {MatSlideToggleModule} from '@angular/material/slide-toggle'; +import {MatSnackBarModule} from '@angular/material/snack-bar'; +import {MatSortModule} from '@angular/material/sort'; +import {MatTableModule} from '@angular/material/table'; +import {MatTabsModule} from '@angular/material/tabs'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatTreeModule} from '@angular/material/tree'; +import { ReactiveFormsModule, FormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatPaginatorIntl } from '@angular/material/paginator'; +import { PersonaldataComponent } from '../pages/personaldata/personaldata.component'; +import { ChangepasswordComponent } from './changepassword/changepassword.component'; +import { IsnoPipe, SafeHtmlPipe } from '../pipes/boolean.pipe'; +import {ConfirmpswDirective} from './changepassword/equal-validator.directive' +import { TimePipe } from '../pipes/time.pipe'; +import { FileUploadModule } from 'ng2-file-upload' +import { CollectionToolsComponent, CreateBuilding, EditBuilding, ViewDetails } from './collection-tools/collection-tools.component'; +import { WorkingAreaComponent } from '../working-area/working-area.component'; +import {leftFunctionalDomainComponent,editPlaneFigureComponent,addDisposalNodeComponent,editDisposalNodeComponent} from './collection-tools/leftFunctionalDomain' +import { saveOneDialog, saveTwoDialog } from './collection-tools/save'; +import { planComponent } from './plan/collection-tools.component'; +import { DisposalNodeComponent } from './disposal-node/disposal-node.component'; +import { DangerousComponent, GisComponent } from './dangerous/dangerous.component'; +import { SimilarPlansComponent } from './similar-plans/similar-plans.component'; +import { RealCasesComponent } from './real-cases/real-cases.component'; +import { PlanAssistanceComponent } from './plan-assistance/plan-assistance.component'; +import { CountdownModule } from 'ngx-countdown'; +import { LuckDrawComponent } from './luck-draw/luck-draw.component'; + +@NgModule({ + declarations: [SafeHtmlPipe,GisComponent,UiComponent,PersonaldataComponent, ChangepasswordComponent,IsnoPipe,ConfirmpswDirective,TimePipe, CollectionToolsComponent,WorkingAreaComponent,CreateBuilding,EditBuilding,leftFunctionalDomainComponent,editPlaneFigureComponent,ViewDetails,saveOneDialog,saveTwoDialog,addDisposalNodeComponent,editDisposalNodeComponent, DisposalNodeComponent, DangerousComponent, SimilarPlansComponent, RealCasesComponent, PlanAssistanceComponent,planComponent, LuckDrawComponent], + + imports: [ + CommonModule, + UiRoutingModule, + A11yModule, + CdkStepperModule, + CdkTableModule, + CdkTreeModule, + DragDropModule, + MatAutocompleteModule, + MatBadgeModule, + MatBottomSheetModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatChipsModule, + MatStepperModule, + MatDatepickerModule, + MatDialogModule, + MatDividerModule, + MatExpansionModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, + MatTreeModule, + PortalModule, + ScrollingModule, + CountdownModule, + ReactiveFormsModule, + FormsModule, + FileUploadModule + ], + + + exports:[ + CollectionToolsComponent + ] +}) +export class UiModule { } diff --git a/src/app/working-area/charm.js b/src/app/working-area/charm.js new file mode 100644 index 0000000..a87804d --- /dev/null +++ b/src/app/working-area/charm.js @@ -0,0 +1,836 @@ +export class Charm { + constructor(renderingEngine = PIXI) { + + if (renderingEngine === undefined) throw new Error("Please assign a rendering engine in the constructor before using charm.js"); + + //Find out which rendering engine is being used (the default is Pixi) + this.renderer = ""; + + //If the `renderingEngine` is Pixi, set up Pixi object aliases + if (renderingEngine.ParticleContainer && renderingEngine.Sprite) { + this.renderer = "pixi"; + } + + + //An array to store the global tweens + this.globalTweens = []; + + //An object that stores all the easing formulas + this.easingFormulas = { + + //Linear + linear(x) { + return x; + }, + + //Smoothstep + smoothstep(x) { + return x * x * (3 - 2 * x); + }, + smoothstepSquared(x) { + return Math.pow((x * x * (3 - 2 * x)), 2); + }, + smoothstepCubed(x) { + return Math.pow((x * x * (3 - 2 * x)), 3); + }, + + //Acceleration + acceleration(x) { + return x * x; + }, + accelerationCubed(x) { + return Math.pow(x * x, 3); + }, + + //Deceleration + deceleration(x) { + return 1 - Math.pow(1 - x, 2); + }, + decelerationCubed(x) { + return 1 - Math.pow(1 - x, 3); + }, + + //Sine + sine(x) { + return Math.sin(x * Math.PI / 2); + }, + sineSquared(x) { + return Math.pow(Math.sin(x * Math.PI / 2), 2); + }, + sineCubed(x) { + return Math.pow(Math.sin(x * Math.PI / 2), 2); + }, + inverseSine(x) { + return 1 - Math.sin((1 - x) * Math.PI / 2); + }, + inverseSineSquared(x) { + return 1 - Math.pow(Math.sin((1 - x) * Math.PI / 2), 2); + }, + inverseSineCubed(x) { + return 1 - Math.pow(Math.sin((1 - x) * Math.PI / 2), 3); + }, + + //Spline + spline(t, p0, p1, p2, p3) { + return 0.5 * ( + (2 * p1) + + (-p0 + p2) * t + + (2 * p0 - 5 * p1 + 4 * p2 - p3) * t * t + + (-p0 + 3 * p1 - 3 * p2 + p3) * t * t * t + ); + }, + + //Bezier curve + cubicBezier(t, a, b, c, d) { + let t2 = t * t; + let t3 = t2 * t; + return a + (-a * 3 + t * (3 * a - a * t)) * t + (3 * b + t * (-6 * b + b * 3 * t)) * t + (c * 3 - c * 3 * t) * t2 + d * t3; + } + }; + + //Add `scaleX` and `scaleY` properties to Pixi sprites + this._addScaleProperties = (sprite) => { + if (this.renderer === "pixi") { + if (!("scaleX" in sprite) && ("scale" in sprite) && ("x" in sprite.scale)) { + Object.defineProperty( + sprite, + "scaleX", { + get() { + return sprite.scale.x + }, + set(value) { + sprite.scale.x = value + } + } + ); + } + if (!("scaleY" in sprite) && ("scale" in sprite) && ("y" in sprite.scale)) { + Object.defineProperty( + sprite, + "scaleY", { + get() { + return sprite.scale.y + }, + set(value) { + sprite.scale.y = value + } + } + ); + } + } + }; + } + + //The low level `tweenProperty` function is used as the foundation + //for the the higher level tween methods. + tweenProperty( + sprite, //Sprite object + property, //String property + startValue, //Tween start value + endValue, //Tween end value + totalFrames, //Duration in frames + type = "smoothstep", //The easing type + yoyo = false, //Yoyo? + delayBeforeRepeat = 0 //Delay in frames before repeating + ) { + + //Create the tween object + let o = {}; + + //If the tween is a bounce type (a spline), set the + //start and end magnitude values + let typeArray = type.split(" "); + if (typeArray[0] === "bounce") { + o.startMagnitude = parseInt(typeArray[1]); + o.endMagnitude = parseInt(typeArray[2]); + } + + //Use `o.start` to make a new tween using the current + //end point values + o.start = (startValue, endValue) => { + + //Clone the start and end values so that any possible references to sprite + //properties are converted to ordinary numbers + o.startValue = JSON.parse(JSON.stringify(startValue)); + o.endValue = JSON.parse(JSON.stringify(endValue)); + o.playing = true; + o.totalFrames = totalFrames; + o.frameCounter = 0; + + //Add the tween to the global `tweens` array. The `tweens` array is + //updated on each frame + this.globalTweens.push(o); + }; + + //Call `o.start` to start the tween + o.start(startValue, endValue); + + //The `update` method will be called on each frame by the game loop. + //This is what makes the tween move + o.update = () => { + + let time, curvedTime; + + if (o.playing) { + + //If the elapsed frames are less than the total frames, + //use the tweening formulas to move the sprite + if (o.frameCounter < o.totalFrames) { + + //Find the normalized value + let normalizedTime = o.frameCounter / o.totalFrames; + + //Select the correct easing function from the + //`ease` object’s library of easing functions + + + //If it's not a spline, use one of the ordinary easing functions + if (typeArray[0] !== "bounce") { + curvedTime = this.easingFormulas[type](normalizedTime); + } + + //If it's a spline, use the `spline` function and apply the + //2 additional `type` array values as the spline's start and + //end points + else { + curvedTime = this.easingFormulas.spline(normalizedTime, o.startMagnitude, 0, 1, o.endMagnitude); + } + + //Interpolate the sprite's property based on the curve + sprite[property] = (o.endValue * curvedTime) + (o.startValue * (1 - curvedTime)); + + o.frameCounter += 1; + } + + //When the tween has finished playing, run the end tasks + else { + sprite[property] = o.endValue; + o.end(); + } + } + }; + + //The `end` method will be called when the tween is finished + o.end = () => { + + //Set `playing` to `false` + o.playing = false; + + //Call the tween's `onComplete` method, if it's been assigned + if (o.onComplete) o.onComplete(); + + //Remove the tween from the `tweens` array + this.globalTweens.splice(this.globalTweens.indexOf(o), 1); + + //If the tween's `yoyo` property is `true`, create a new tween + //using the same values, but use the current tween's `startValue` + //as the next tween's `endValue` + if (yoyo) { + this.wait(delayBeforeRepeat).then(() => { + o.start(o.endValue, o.startValue); + }); + } + }; + + //Pause and play methods + o.play = () => o.playing = true; + o.pause = () => o.playing = false; + + //Return the tween object + return o; + } + + //`makeTween` is a general low-level method for making complex tweens + //out of multiple `tweenProperty` functions. Its one argument, + //`tweensToAdd` is an array containing multiple `tweenProperty` calls + + makeTween(tweensToAdd) { + + //Create an object to manage the tweens + let o = {}; + + //Create a `tweens` array to store the new tweens + o.tweens = []; + + //Make a new tween for each array + tweensToAdd.forEach(tweenPropertyArguments => { + + //Use the tween property arguments to make a new tween + let newTween = this.tweenProperty(...tweenPropertyArguments); + + //Push the new tween into this object's internal `tweens` array + o.tweens.push(newTween); + }); + + //Add a counter to keep track of the + //number of tweens that have completed their actions + let completionCounter = 0; + + //`o.completed` will be called each time one of the tweens + //finishes + o.completed = () => { + + //Add 1 to the `completionCounter` + completionCounter += 1; + + //If all tweens have finished, call the user-defined `onComplete` + //method, if it's been assigned. Reset the `completionCounter` + if (completionCounter === o.tweens.length) { + if (o.onComplete) o.onComplete(); + completionCounter = 0; + } + }; + + //Add `onComplete` methods to all tweens + o.tweens.forEach(tween => { + tween.onComplete = () => o.completed(); + }); + + //Add pause and play methods to control all the tweens + o.pause = () => { + o.tweens.forEach(tween => { + tween.playing = false; + }); + }; + o.play = () => { + o.tweens.forEach(tween => { + tween.playing = true; + }); + }; + + //Return the tween object + return o; + } + + /* High level tween methods */ + + //1. Simple tweens + + //`fadeOut` + fadeOut(sprite, frames = 60) { + return this.tweenProperty( + sprite, "alpha", sprite.alpha, 0, frames, "sine" + ); + } + + //`fadeIn` + fadeIn(sprite, frames = 60) { + return this.tweenProperty( + sprite, "alpha", sprite.alpha, 1, frames, "sine" + ); + } + + //`pulse` + //Fades the sprite in and out at a steady rate. + //Set the `minAlpha` to something greater than 0 if you + //don't want the sprite to fade away completely + pulse(sprite, frames = 60, minAlpha = 0) { + return this.tweenProperty( + sprite, "alpha", sprite.alpha, minAlpha, frames, "smoothstep", true + ); + } + + //2. Complex tweens + + slide( + sprite, endX, endY, + frames = 60, type = "smoothstep", yoyo = false, delayBeforeRepeat = 0 + ) { + return this.makeTween([ + + //Create the x axis tween + [sprite, "x", sprite.x, endX, frames, type, yoyo, delayBeforeRepeat], + + //Create the y axis tween + [sprite, "y", sprite.y, endY, frames, type, yoyo, delayBeforeRepeat] + + ]); + } + + breathe( + sprite, endScaleX = 0.8, endScaleY = 0.8, + frames = 60, yoyo = true, delayBeforeRepeat = 0 + ) { + + //Add `scaleX` and `scaleY` properties to Pixi sprites + this._addScaleProperties(sprite); + + return this.makeTween([ + + //Create the scaleX tween + [ + sprite, "scaleX", sprite.scaleX, endScaleX, + frames, "smoothstepSquared", yoyo, delayBeforeRepeat + ], + + //Create the scaleY tween + [ + sprite, "scaleY", sprite.scaleY, endScaleY, + frames, "smoothstepSquared", yoyo, delayBeforeRepeat + ] + ]); + } + + scale(sprite, endScaleX = 0.5, endScaleY = 0.5, frames = 60) { + + //Add `scaleX` and `scaleY` properties to Pixi sprites + this._addScaleProperties(sprite); + + return this.makeTween([ + + //Create the scaleX tween + [ + sprite, "scaleX", sprite.scaleX, endScaleX, + frames, "smoothstep", false + ], + + //Create the scaleY tween + [ + sprite, "scaleY", sprite.scaleY, endScaleY, + frames, "smoothstep", false + ] + ]); + } + + strobe( + sprite, scaleFactor = 1.3, startMagnitude = 10, endMagnitude = 20, + frames = 10, yoyo = true, delayBeforeRepeat = 0 + ) { + + let bounce = "bounce " + startMagnitude + " " + endMagnitude; + + //Add `scaleX` and `scaleY` properties to Pixi sprites + this._addScaleProperties(sprite); + + return this.makeTween([ + + //Create the scaleX tween + [ + sprite, "scaleX", sprite.scaleX, scaleFactor, frames, + bounce, yoyo, delayBeforeRepeat + ], + + //Create the scaleY tween + [ + sprite, "scaleY", sprite.scaleY, scaleFactor, frames, + bounce, yoyo, delayBeforeRepeat + ] + ]); + } + + wobble( + sprite, + scaleFactorX = 1.2, + scaleFactorY = 1.2, + frames = 10, + xStartMagnitude = 10, + xEndMagnitude = 10, + yStartMagnitude = -10, + yEndMagnitude = -10, + friction = 0.98, + yoyo = true, + delayBeforeRepeat = 0 + ) { + + let bounceX = "bounce " + xStartMagnitude + " " + xEndMagnitude; + let bounceY = "bounce " + yStartMagnitude + " " + yEndMagnitude; + + //Add `scaleX` and `scaleY` properties to Pixi sprites + this._addScaleProperties(sprite); + + let o = this.makeTween([ + + //Create the scaleX tween + [ + sprite, "scaleX", sprite.scaleX, scaleFactorX, frames, + bounceX, yoyo, delayBeforeRepeat + ], + + //Create the scaleY tween + [ + sprite, "scaleY", sprite.scaleY, scaleFactorY, frames, + bounceY, yoyo, delayBeforeRepeat + ] + ]); + + //Add some friction to the `endValue` at the end of each tween + o.tweens.forEach(tween => { + tween.onComplete = () => { + + //Add friction if the `endValue` is greater than 1 + if (tween.endValue > 1) { + tween.endValue *= friction; + + //Set the `endValue` to 1 when the effect is finished and + //remove the tween from the global `tweens` array + if (tween.endValue <= 1) { + tween.endValue = 1; + this.removeTween(tween); + } + } + }; + }); + + return o; + } + + //3. Motion path tweens + + followCurve( + sprite, + pointsArray, + totalFrames, + type = "smoothstep", + yoyo = false, + delayBeforeRepeat = 0 + ) { + + //Create the tween object + let o = {}; + + //If the tween is a bounce type (a spline), set the + //start and end magnitude values + let typeArray = type.split(" "); + if (typeArray[0] === "bounce") { + o.startMagnitude = parseInt(typeArray[1]); + o.endMagnitude = parseInt(typeArray[2]); + } + + //Use `tween.start` to make a new tween using the current + //end point values + o.start = (pointsArray) => { + o.playing = true; + o.totalFrames = totalFrames; + o.frameCounter = 0; + + //Clone the points array + o.pointsArray = JSON.parse(JSON.stringify(pointsArray)); + + //Add the tween to the `globalTweens` array. The `globalTweens` array is + //updated on each frame + this.globalTweens.push(o); + }; + + //Call `tween.start` to start the first tween + o.start(pointsArray); + + //The `update` method will be called on each frame by the game loop. + //This is what makes the tween move + o.update = () => { + + let normalizedTime, curvedTime, + p = o.pointsArray; + + if (o.playing) { + + //If the elapsed frames are less than the total frames, + //use the tweening formulas to move the sprite + if (o.frameCounter < o.totalFrames) { + + //Find the normalized value + normalizedTime = o.frameCounter / o.totalFrames; + + //Select the correct easing function + + //If it's not a spline, use one of the ordinary tween + //functions + if (typeArray[0] !== "bounce") { + curvedTime = this.easingFormulas[type](normalizedTime); + } + + //If it's a spline, use the `spline` function and apply the + //2 additional `type` array values as the spline's start and + //end points + else { + //curve = tweenFunction.spline(n, type[1], 0, 1, type[2]); + curvedTime = this.easingFormulas.spline(normalizedTime, o.startMagnitude, 0, 1, o.endMagnitude); + } + + //Apply the Bezier curve to the sprite's position + sprite.x = this.easingFormulas.cubicBezier(curvedTime, p[0][0], p[1][0], p[2][0], p[3][0]); + sprite.y = this.easingFormulas.cubicBezier(curvedTime, p[0][1], p[1][1], p[2][1], p[3][1]); + + //Add one to the `elapsedFrames` + o.frameCounter += 1; + } + + //When the tween has finished playing, run the end tasks + else { + //sprite[property] = o.endValue; + o.end(); + } + } + }; + + //The `end` method will be called when the tween is finished + o.end = () => { + + //Set `playing` to `false` + o.playing = false; + + //Call the tween's `onComplete` method, if it's been + //assigned + if (o.onComplete) o.onComplete(); + + //Remove the tween from the global `tweens` array + this.globalTweens.splice(this.globalTweens.indexOf(o), 1); + + //If the tween's `yoyo` property is `true`, reverse the array and + //use it to create a new tween + if (yoyo) { + this.wait(delayBeforeRepeat).then(() => { + o.pointsArray = o.pointsArray.reverse(); + o.start(o.pointsArray); + }); + } + }; + + //Pause and play methods + o.pause = () => { + o.playing = false; + }; + o.play = () => { + o.playing = true; + }; + + //Return the tween object + return o; + } + + walkPath( + sprite, //The sprite + originalPathArray, //A 2D array of waypoints + totalFrames = 300, //The duration, in frames + type = "smoothstep", //The easing type + loop = false, //Should the animation loop? + yoyo = false, //Shoud the direction reverse? + delayBetweenSections = 0 //Delay, in milliseconds, between sections + ) { + + //Clone the path array so that any possible references to sprite + //properties are converted into ordinary numbers + let pathArray = JSON.parse(JSON.stringify(originalPathArray)); + + //Figure out the duration, in frames, of each path section by + //dividing the `totalFrames` by the length of the `pathArray` + let frames = totalFrames / pathArray.length; + + //Set the current point to 0, which will be the first waypoint + let currentPoint = 0; + + //The `makePath` function creates a single tween between two points and + //then schedules the next path to be made after it + let makePath = (currentPoint) => { + + //Use the `makeTween` function to tween the sprite's + //x and y position + let tween = this.makeTween([ + + //Create the x axis tween between the first x value in the + //current point and the x value in the following point + [ + sprite, + "x", + pathArray[currentPoint][0], + pathArray[currentPoint + 1][0], + frames, + type + ], + + //Create the y axis tween in the same way + [ + sprite, + "y", + pathArray[currentPoint][1], + pathArray[currentPoint + 1][1], + frames, + type + ] + ]); + + //When the tween is complete, advance the `currentPoint` by one. + //Add an optional delay between path segments, and then make the + //next connecting path + tween.onComplete = () => { + + //Advance to the next point + currentPoint += 1; + + //If the sprite hasn't reached the end of the + //path, tween the sprite to the next point + if (currentPoint < pathArray.length - 1) { + this.wait(delayBetweenSections).then(() => { + tween = makePath(currentPoint); + }); + } + + //If we've reached the end of the path, optionally + //loop and yoyo it + else { + + //Reverse the path if `loop` is `true` + if (loop) { + + //Reverse the array if `yoyo` is `true` + if (yoyo) pathArray.reverse(); + + //Optionally wait before restarting + this.wait(delayBetweenSections).then(() => { + + //Reset the `currentPoint` to 0 so that we can + //restart at the first point + currentPoint = 0; + + //Set the sprite to the first point + sprite.x = pathArray[0][0]; + sprite.y = pathArray[0][1]; + + //Make the first new path + tween = makePath(currentPoint); + + //... and so it continues! + }); + } + } + }; + + //Return the path tween to the main function + return tween; + }; + + //Make the first path using the internal `makePath` function (below) + let tween = makePath(currentPoint); + + //Pass the tween back to the main program + return tween; + } + + walkCurve( + sprite, //The sprite + pathArray, //2D array of Bezier curves + totalFrames = 300, //The duration, in frames + type = "smoothstep", //The easing type + loop = false, //Should the animation loop? + yoyo = false, //Should the direction reverse? + delayBeforeContinue = 0 //Delay, in milliseconds, between sections + ) { + + //Divide the `totalFrames` into sections for each part of the path + let frames = totalFrames / pathArray.length; + + //Set the current curve to 0, which will be the first one + let currentCurve = 0; + + //The `makePath` function + let makePath = (currentCurve) => { + + //Use the custom `followCurve` function to make + //a sprite follow a curve + let tween = this.followCurve( + sprite, + pathArray[currentCurve], + frames, + type + ); + + //When the tween is complete, advance the `currentCurve` by one. + //Add an optional delay between path segments, and then make the + //next path + tween.onComplete = () => { + currentCurve += 1; + if (currentCurve < pathArray.length) { + this.wait(delayBeforeContinue).then(() => { + tween = makePath(currentCurve); + }); + } + + //If we've reached the end of the path, optionally + //loop and reverse it + else { + if (loop) { + if (yoyo) { + + //Reverse order of the curves in the `pathArray` + pathArray.reverse(); + + //Reverse the order of the points in each curve + pathArray.forEach(curveArray => curveArray.reverse()); + } + + //After an optional delay, reset the sprite to the + //beginning of the path and make the next new path + this.wait(delayBeforeContinue).then(() => { + currentCurve = 0; + sprite.x = pathArray[0][0]; + sprite.y = pathArray[0][1]; + tween = makePath(currentCurve); + }); + } + } + }; + + //Return the path tween to the main function + return tween; + }; + + //Make the first path + let tween = makePath(currentCurve); + + //Pass the tween back to the main program + return tween; + } + + //4. Utilities + + /* + The `wait` method lets you set up a timed sequence of events + + wait(1000) + .then(() => console.log("One")) + .then(() => wait(1000)) + .then(() => console.log("Two")) + .then(() => wait(1000)) + .then(() => console.log("Three")) + + */ + + wait(duration = 0) { + return new Promise((resolve, reject) => { + setTimeout(resolve, duration); + }); + } + + //A utility to remove tweens from the game + removeTween(tweenObject) { + + //Remove the tween if `tweenObject` doesn't have any nested + //tween objects + if (!tweenObject.tweens) { + tweenObject.pause(); + + //array.splice(-1,1) will always remove last elemnt of array, so this + //extra check prevents that (Thank you, MCumic10! https://github.com/kittykatattack/charm/issues/5) + if (this.globalTweens.indexOf(tweenObject) != -1) { + this.globalTweens.splice(this.globalTweens.indexOf(tweenObject), 1); + } + + //Otherwise, remove the nested tween objects + } else { + tweenObject.pause(); + tweenObject.tweens.forEach(element => { + this.globalTweens.splice(this.globalTweens.indexOf(element), 1); + }); + } + } + + update() { + + //Update all the tween objects in the `globalTweens` array + if (this.globalTweens.length > 0) { + for (let i = this.globalTweens.length - 1; i >= 0; i--) { + let tween = this.globalTweens[i]; + if (tween) tween.update(); + } + } + } +} \ No newline at end of file diff --git a/src/app/working-area/working-area.component.html b/src/app/working-area/working-area.component.html new file mode 100644 index 0000000..ee66290 --- /dev/null +++ b/src/app/working-area/working-area.component.html @@ -0,0 +1,2 @@ +
\ No newline at end of file diff --git a/src/app/working-area/working-area.component.scss b/src/app/working-area/working-area.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/working-area/working-area.component.spec.ts b/src/app/working-area/working-area.component.spec.ts new file mode 100644 index 0000000..bd23376 --- /dev/null +++ b/src/app/working-area/working-area.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { WorkingAreaComponent } from './working-area.component'; + +describe('WorkingAreaComponent', () => { + let component: WorkingAreaComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ WorkingAreaComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(WorkingAreaComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/working-area/working-area.component.ts b/src/app/working-area/working-area.component.ts new file mode 100644 index 0000000..9b21638 --- /dev/null +++ b/src/app/working-area/working-area.component.ts @@ -0,0 +1,3138 @@ +import { Component, OnInit, ElementRef, ViewChild, AfterViewInit, Input } from '@angular/core'; +import * as PIXI from 'pixi.js'; +import { EventEmitter } from 'events'; +import { EventManager } from '@angular/platform-browser'; +import { OutlineFilter, OldFilmFilter } from 'pixi-filters'; +import { CanvasShareDataService, GameMode } from '../canvas-share-data.service'; +import {CacheTokenService} from '../http-interceptors/cache-token.service'; // 引入自动登录 获取token服务 +import * as ObjectID from 'bson-objectid'; +import { Router } from '@angular/router'; +import { isThisSecond } from 'date-fns'; +import { Charm } from './charm'; + + +@Component({ + selector: 'app-working-area', + templateUrl: './working-area.component.html', + styleUrls: ['./working-area.component.scss'] +}) + +export class WorkingAreaComponent extends EventEmitter implements OnInit, AfterViewInit { + + constructor(private eventManager: EventManager, public canvasData: CanvasShareDataService, public token: CacheTokenService, private router: Router, ) { + super(); + } + + @ViewChild('content') + content: ElementRef; + /** + * 父组件 + */ + @Input() init: any; + /** + * pixijs 程序 + */ + public app: PIXI.Application; + /** + * 资源加载器 + */ + public loader = PIXI.Loader.shared; + /** + * 背景图 + */ + public backgroundImage: PIXI.Sprite; + /** + * 预览单点图标 + */ + public previewSinglePointIcon = new PIXI.Sprite(); + /** + * 预览线段 + */ + public previewLineSegment = new PIXI.Graphics(); + /** + * 预览原点 + */ + public circleShadow = new PIXI.Graphics(); + /** + * 鼠标位置 + */ + public mousePosition: PIXI.Point = new PIXI.Point(0, 0); + /** + * 绘画模式 + */ + private paintMode: PaintMode; + /** + * 选择器 + */ + public selection: Selection = new Selection(this); + /** + * 当前鼠标的点 + */ + public currentClickPoint: PIXI.Graphics = new PIXI.Graphics(); + /** + * 绘制点集合 + */ + public paintPoints: PIXI.Point[] = []; + /** + * 绘制中的管线 + */ + public paintingPipeline: Pipeline = null; + /** + * 绘制中的箭头 + */ + public paintingArrows: Arrows = null; + /** + * 绘制中的多点图标 + */ + public paintingIcon: MultipointIcon; + /** + * 绘制中的连线 + */ + public paintingLine: PIXI.Graphics = new PIXI.Graphics(); + /** + * 绿色描边 + */ + public outlineFilterGreen = new OutlineFilter(2, 0x00ff00); + /** + * 拷贝素材数据 + */ + public copyData: any[] = []; + /** + * 确认绘制按钮 + */ + private enterPaintEndButton = PIXI.Sprite.from('assets/images/enterPaintButton.png'); + /** + * 框选工具图形 + */ + private rectToolGraphics = new PIXI.Graphics(); + /** + * 初始鼠标位置 + */ + private initialScreenMousePos: PIXI.Point = new PIXI.Point(); + /** + * 最终鼠标位置 + */ + private finalScreenMousePos: PIXI.Point = new PIXI.Point(); + /** + * 允许编辑 + */ + public allowEdit = false; + + public c; + public animation; + public animationIcon; + public animationTime; + // 车辆作业面 + public carAreas: PolygonIcon[]; + // 车辆数据 + public carData: Map = new Map(); + // 当前选择的车辆id + public selectCar: any = null; + // 根据ID 找到数据 + + // 是否登录 + public verificationURL = '/ui/plan'; // 验证url地址是否为验证页面 + public verificationURLTwo = '/ui/similarPlans'; // 验证url地址是否为验证页面 + count = 0; + isLogin() { + const token = sessionStorage.getItem('token'); // 判断 是否登录状态 + if (token) { + // this.init.getAllLibrary() //获取素材库 + this.init.getAllBuildings(); // 获取所有建筑 + this.init.getAllFirePlan(); // 获取所有灾情 + this.init.getSitePlan(); // 调用父组件 初始化方法 + } else { + this.token.login().then(res => { + this.init.params.companyId = sessionStorage.getItem('companyId'); + // this.init.getAllLibrary() //获取素材库 + this.init.getAllBuildings(); // 获取所有建筑 + this.init.getAllFirePlan(); // 获取所有灾情 + this.init.getSitePlan(); // 调用父组件 初始化方法 + }); + } + } + // 是否登录 + + ngOnInit(): void { + this.eventManager.addGlobalEventListener('window', 'keydown', (event: any) => { + if (event.keyCode === 17) { + this.selection.isMultiselection = true; + } + }); + this.eventManager.addGlobalEventListener('window', 'keyup', (event: any) => { + if (event.keyCode === 17) { + this.selection.isMultiselection = false; + this.rectToolGraphics.visible = false; + this.rectToolGraphics.clear(); + } + if (event.keyCode === 46) { + this.selection.objects.forEach(item => { + // 删除 选中的数据 + if (item.assetData?.IsFromBuilding) { + // console.log(this.canvasData.originaleveryStoreyData.data[item.assetData.Id]); + delete this.canvasData.originalcompanyBuildingData?.data[item.assetData.Id]; + // console.log(this.canvasData.originalcompanyBuildingData.data[item.assetData.Id]); + } else { + // console.log(this.canvasData.originaleveryStoreyData.data[item.assetData.Id]); + delete this.canvasData.originaleveryStoreyData?.data[item.assetData.Id]; + // console.log(this.canvasData.originaleveryStoreyData.data[item.assetData.Id]); + } + // console.log(this.backgroundImage.getChildByName(item.assetData.Id)); + // 删除选中的图标 + this.backgroundImage.removeChild(this.backgroundImage.getChildByName(item.assetData.Id)); + // 标记 + this.canvasData.isChange = true; + }); + this.emit('deleteIcon'); + } + }); + // 测试代码 + this.eventManager.addGlobalEventListener('window', 'keypress', (event: any) => { + + }); + // setTimeout(() => { + // this.createCanvas(); + // }, 0); + } + + ngAfterViewInit(): void { + this.createCanvas(); + window.onresize = () => { + this.resizeCanvas(); + }; + } + /** + * + * @param event 鼠标滑动事件 + */ + public mouseWheelHandel(event) { + const delX = this.mousePosition.x - this.backgroundImage.position.x; + const delY = this.mousePosition.y - this.backgroundImage.position.y; + const pivot = this.backgroundImage.toLocal(this.mousePosition); + const delta = Math.max(-1, Math.min(1, (event.wheelDelta || -event.detail))); + if (delta > 0) { + if (this.backgroundImage.scale.x >= 32) { + this.backgroundImage.scale.x = 32; + this.backgroundImage.scale.y = 32; + this.emit('backgroundScale', this.backgroundImage.scale.x); + return; + } + this.backgroundImage.pivot.set(pivot.x, pivot.y); + + this.backgroundImage.scale.x += this.backgroundImage.scale.x * 0.1; + this.backgroundImage.scale.y += this.backgroundImage.scale.y * 0.1; + + this.backgroundImage.position.x += delX; + this.backgroundImage.position.y += delY; + } else if (delta < 0) { + if (this.backgroundImage.scale.x <= 0.1) { + this.backgroundImage.scale.x = 0.1; + this.backgroundImage.scale.y = 0.1; + this.emit('backgroundScale', this.backgroundImage.scale.x); + return; + } + this.backgroundImage.pivot.set(pivot.x, pivot.y); + + this.backgroundImage.scale.x -= this.backgroundImage.scale.x * 0.1; + this.backgroundImage.scale.y -= this.backgroundImage.scale.y * 0.1; + + this.backgroundImage.position.x += delX; + this.backgroundImage.position.y += delY; + } + this.emit('backgroundScale', this.backgroundImage.scale.x); + } + /** + * + * @param icon 移动到选中车辆到屏幕中心点 + */ + public moveIconToScreenCenter(icon) { + if (icon.parent === this.backgroundImage && ( + icon.assetData.Type === 1 || + icon.assetData.Type === 2 || + icon.assetData.Type === 3 || + icon.assetData.Type === 4 + )) { + console.log(this.backgroundImage.position); + this.backgroundImage.pivot.set(icon.x, icon.y); + this.backgroundImage.position.set(771, 404); + clearTimeout(this.animationTime); + this.animation?.pause(); + this.animationIcon?.scale.set(1); + this.animation = this.c.breathe(icon, 10, 10, 30, true, 0); + this.animationIcon = icon; + this.animationTime = setTimeout(() => { + this.animation?.pause(); + this.animationIcon?.scale.set(1); + }, 5000); + } + } + /** + * 创建画布 + */ + private createCanvas(): void { + this.app = new PIXI.Application({ + width: this.content.nativeElement.clientWidth, + height: this.content.nativeElement.clientHeight, + antialias: true, + transparent: false, + resolution: 1, + backgroundColor: 0xE9FAFF + }); + this.content.nativeElement.appendChild(this.app.view); + const url = this.router.url; + // tslint:disable-next-line: no-unused-expression + url === this.verificationURL || url === this.verificationURLTwo ? this.isLogin() : null; + this.c = new Charm(PIXI); + this.createBackgroundImage(); + // this.createPreviewSinglePointIcon(); + // this.createPreviewLineSegment(); + // this.createCircleShadow(); + // this.createEnterPaintEndButton(); + // this.backgroundImage.addChild(this.paintingLine); + this.on('select', obj => { + console.log(obj); + this.moveIconToScreenCenter(obj); + if (this.allowEdit) { + if (obj instanceof MultipointIcon) { + obj.setPointVisiable(true); + } else if (obj instanceof PolygonIcon) { + obj.setPointVisiable(true); + } else { + obj.filters = [this.outlineFilterGreen]; + } + } else { + obj.filters = [this.outlineFilterGreen]; + } + }); + this.on('deselect', obj => { + if (this.allowEdit) { + if (obj instanceof MultipointIcon) { + obj.setPointVisiable(false); + } else if (obj instanceof PolygonIcon) { + obj.setPointVisiable(false); + } else { + obj.filters = []; + } + } else { + obj.filters = []; + } + }); + this.on('backgroundScale', scale => { + this.previewSinglePointIcon.scale.set(1 / this.backgroundImage.scale.x); + this.backgroundImage.children.forEach(item => { + if (item instanceof SinglePointIcon) { + if (item.assetData.FixedSize) { + const data = 1 / scale; + item.scale.set(data); + } else { + const data = 1 / scale; + item.text.scale.set(data); + } + } else if (item instanceof MultipointIcon) { + const data = 1 / scale; + item.text.scale.set(data); + } else if (item instanceof PolygonIcon) { + const data = 1 / scale; + item.text.scale.set(data); + } + }); + }); + + this.app.ticker.add((delta) => { + this.c.update(); + + this.mousePosition = this.app.renderer.plugins.interaction.mouse.global; + + this.previewSinglePointIcon.position = this.backgroundImage.toLocal(this.mousePosition); + this.circleShadow.position = this.backgroundImage.toLocal(this.mousePosition); + + this.refreshPreviewLineSegment(this.currentClickPoint.position, this.circleShadow.position); + + if (this.rectToolGraphics.visible === true) { + + const init = this.initialScreenMousePos; + const final = this.finalScreenMousePos; + + this.rectToolGraphics.clear(); + this.rectToolGraphics.lineStyle(2, 0x00ff00, 1); + this.rectToolGraphics.beginFill(0xccccf2, 0.25); + this.rectToolGraphics.drawRect(init.x, init.y, final.x - init.x, final.y - init.y); + this.rectToolGraphics.endFill(); + this.rectToolGraphics.closePath(); + } + if (this.paintingArrows !== null) { + this.paintingArrows.assetData.pointB = new PIXI.Point(this.circleShadow.position.x, this.circleShadow.position.y); + this.paintingArrows.refresh(); + } + }); + } + public resizeCanvas() { + this.app.renderer.resize(this.content.nativeElement.clientWidth, this.content.nativeElement.clientHeight); + } + /** + * 设置名称显示 + * @param value true 显示 false 隐藏 + * @param mode BasicInformation = 0 基本信息 Assignment想定作业 = 1 想定作业 + */ + public setNameVisible(value: boolean, mode: GameMode): void { + this.backgroundImage.children.forEach(item => { + if (item instanceof SinglePointIcon) { + item.setNameVisible(value, mode); + } else if (item instanceof MultipointIcon) { + item.setNameVisible(value, mode); + } else if (item instanceof PolygonIcon) { + item.setNameVisible(value, mode); + } + }); + } + /** + * 根据id刷新图标 + * @param id 图标数据id + */ + public refreshIcon(id: string): void { + const icon = this.backgroundImage.children.find(item => item.name === id); + if (icon instanceof SinglePointIcon) { + icon.refresh(); + } else if (icon instanceof MultipointIcon) { + icon.refresh(); + } else if (icon instanceof PolygonIcon) { + icon.refresh(); + } + } + /** + * + * @param value 缩放倍数 + */ + public setIconScale(value: number): void { + this.backgroundImage.children.forEach(item => { + if (item instanceof SinglePointIcon) { + item.scale.set(value); + } else if (item instanceof MultipointIcon) { + + } else if (item instanceof PolygonIcon) { + + } + }); + } + /** + * 设置高亮 + */ + public setHighlight(ids: string[]): void { + this.selection.deselectAll(); + ids.forEach(item => { + let obj = this.backgroundImage.getChildByName(item); + if (obj === null) { + obj = this.app.stage.getChildByName(item); + } + this.selection.select(obj); + }); + } + /** + * 刷新 + */ + public refresh(): void { + this.destroyBackgroundImage(); + this.createBackgroundImage(); + this.refreshBackgroundImage(); + this.versionChecking(); + + + const floorData = this.canvasData.originaleveryStoreyData.data; + const buildingData = this.canvasData.originalcompanyBuildingData.data; + const floor = this.canvasData.selectStorey; + // console.log(JSON.stringify(buildingData)); + // // key=>属性名 data[key]=>属性值 + Object.keys(floorData).forEach((key) => { + switch (floorData[key].InteractiveMode) { + case 0: + const singleIcon = new SinglePointIcon(floorData[key], this); + break; + case 1: + const icon = new MultipointIcon(floorData[key], this); + break; + case 2: + const polygonIcon = new PolygonIcon(floorData[key], this); + break; + } + }); + Object.keys(buildingData).forEach((key) => { + if (buildingData[key].FloorId === floor.id) { + switch (buildingData[key].InteractiveMode) { + case 0: + const singleIcon = new SinglePointIcon(buildingData[key], this); + break; + case 1: + const icon = new MultipointIcon(buildingData[key], this); + break; + case 2: + const polygonIcon = new PolygonIcon(buildingData[key], this); + break; + } + } + }); + + const nodeData = this.canvasData.selectPanelPoint?.data; + if (nodeData !== undefined) { + Object.keys(nodeData).forEach((key) => { + // console.log(nodeData[key]); + Object.keys(nodeData[key]).forEach((tempKey) => { + console.log(nodeData[key][tempKey]); + switch (nodeData[key][tempKey].InteractiveMode) { + case 0: + const singleIcon = new SinglePointIcon(nodeData[key][tempKey], this); + break; + case 1: + const icon = new MultipointIcon(nodeData[key][tempKey], this); + break; + case 2: + const polygonIcon = new PolygonIcon(nodeData[key][tempKey], this); + break; + } + }); + }); + console.log(this.canvasData.selectPanelPoint); + } + } + /** + * 加载测试界面 + */ + public loadDemoScene(list: any[], backgroundScale: number) { + this.backgroundImage.texture = PIXI.Texture.from('./assets/images/demo.jpg'); + this.setBackgroundScale(backgroundScale); + list.forEach(element => { + const single = new SinglePointIcon(element, this); + }); + + const putCarAreaData = [ + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面1', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 90, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 2139, + y: 399 + }, + { + x: 2194, + y: 399 + }, + { + x: 2194, + y: 1217 + }, + { + x: 2139, + y: 1217 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面2', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 180, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 5148 - 4000, + y: 3133 - 2830 + }, + { + x: 6093 - 4000, + y: 3133 - 2830 + }, + { + x: 6093 - 4000, + y: 3188 - 2830 + }, + { + x: 5148 - 4000, + y: 3188 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面3', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 270, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 5061 - 4000, + y: 3263 - 2830 + }, + { + x: 5116 - 4000, + y: 3263 - 2830 + }, + { + x: 5116 - 4000, + y: 4047 - 2830 + }, + { + x: 5061 - 4000, + y: 4047 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面4', + Angle: 0, + Type: [2, 3, 4], + Direction: 180, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 5149 - 4000, + y: 4097 - 2830 + }, + { + x: 6094 - 4000, + y: 4097 - 2830 + }, + { + x: 6094 - 4000, + y: 4152 - 2830 + }, + { + x: 5149 - 4000, + y: 4152 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面5', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 180, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 6191 - 4000, + y: 3133 - 2830 + }, + { + x: 6942 - 4000, + y: 3133 - 2830 + }, + { + x: 6942 - 4000, + y: 3188 - 2830 + }, + { + x: 6191 - 4000, + y: 3188 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面6', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 90, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 6139 - 4000, + y: 2378 - 2830 + }, + { + x: 6194 - 4000, + y: 2378 - 2830 + }, + { + x: 6194 - 4000, + y: 3095 - 2830 + }, + { + x: 6139 - 4000, + y: 3095 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面7', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 90, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 7060 - 4000, + y: 2340 - 2830 + }, + { + x: 7115 - 4000, + y: 2340 - 2830 + }, + { + x: 7115 - 4000, + y: 3057 - 2830 + }, + { + x: 7060 - 4000, + y: 3057 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面8', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 0, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 6189 - 4000, + y: 2291 - 2830 + }, + { + x: 7219 - 4000, + y: 2291 - 2830 + }, + { + x: 7219 - 4000, + y: 2346 - 2830 + }, + { + x: 6189 - 4000, + y: 2346 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面9', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 270, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 5061 - 4000, + y: 2488 - 2830 + }, + { + x: 5116 - 4000, + y: 2488 - 2830 + }, + { + x: 5116 - 4000, + y: 3083 - 2830 + }, + { + x: 5061 - 4000, + y: 3083 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面10', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 0, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 3259 - 4000, + y: 3097 - 2830 + }, + { + x: 5006 - 4000, + y: 3097 - 2830 + }, + { + x: 5006 - 4000, + y: 3210 - 2830 + }, + { + x: 3259 - 4000, + y: 3210 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面11', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 180, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 4354 - 4000, + y: 4097 - 2830 + }, + { + x: 5020 - 4000, + y: 4097 - 2830 + }, + { + x: 5020 - 4000, + y: 4152 - 2830 + }, + { + x: 4354 - 4000, + y: 4152 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面12', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 90, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 4273 - 4000, + y: 3936 - 2830 + }, + { + x: 4323 - 4000, + y: 3936 - 2830 + }, + { + x: 4323 - 4000, + y: 4296 - 2830 + }, + { + x: 4273 - 4000, + y: 4296 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面13', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 180, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 3193 - 4000, + y: 4241 - 2830 + }, + { + x: 4273 - 4000, + y: 4241 - 2830 + }, + { + x: 4273 - 4000, + y: 4296 - 2830 + }, + { + x: 3193 - 4000, + y: 4296 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面14', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 0, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 3193 - 4000, + y: 3936 - 2830 + }, + { + x: 4273 - 4000, + y: 3936 - 2830 + }, + { + x: 4273 - 4000, + y: 3991 - 2830 + }, + { + x: 3193 - 4000, + y: 3991 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面15', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 270, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 3109 - 4000, + y: 3936 - 2830 + }, + { + x: 3164 - 4000, + y: 3936 - 2830 + }, + { + x: 3164 - 4000, + y: 4897 - 2830 + }, + { + x: 3109 - 4000, + y: 4897 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '作业面16', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 0, + Color: '#00ff0080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 5063 - 4000, + y: 2364 - 2830 + }, + { + x: 5611 - 4000, + y: 2291 - 2830 + }, + { + x: 6114 - 4000, + y: 2291 - 2830 + }, + { + x: 6114 - 4000, + y: 2346 - 2830 + }, + { + x: 5622 - 4000, + y: 2346 - 2830 + }, + { + x: 5137 - 4000, + y: 2475 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, + ]; + const tempCarAreaData = [ + { + Id: '5f6719a4e03abe3856d87d7b', + Name: '禁停区17', + Angle: 0, + Type: [1, 2, 3, 4], + Direction: 0, + Color: '#ff000080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 6195 - 4000, + y: 3196 - 2830 + }, + { + x: 6910 - 4000, + y: 3196 - 2830 + }, + { + x: 6910 - 4000, + y: 4047 - 2830 + }, + { + x: 6195 - 4000, + y: 4047 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + }, { + Id: '5f6719a4e03abe3856d87d7b', + Name: '禁停区18', + Angle: 0, + Type: [1], + Direction: 0, + Color: '#ff000080', + Point: { + x: 0, + y: 0 + }, + Width: 32, + Border: { + w: 0, + x: 0, + y: 0, + z: 0 + }, + Height: 32, + Enabled: true, + FloorId: '5f670bb79e91f4410005f564', + DrawMode: 0, + FillMode: 1, + GameMode: 0, + ImageUrl: '/api/Objects/PlanPlatform/5e7b384e8121c2286c0cb290.png', + CompanyId: '5f67042b9e91f4410005f55c', + FixedSize: false, + CanConnection: true, + ConnectionObjs: [], + Thickness: 0, + BuildingId: '5f6704859e91f4410005f55f', + MultiPoint: [ + { + x: 5149 - 4000, + y: 4097 - 2830 + }, + { + x: 6094 - 4000, + y: 4097 - 2830 + }, + { + x: 6094 - 4000, + y: 4152 - 2830 + }, + { + x: 5149 - 4000, + y: 4152 - 2830 + }, + ], + TemplateId: '5e7b38610137e12020bd7f7b', + FireElementId: '5e7967f30814180f1c1ecaab', + PropertyInfos: [], + IsFromBuilding: true, + InteractiveMode: 0 + } + ]; + + putCarAreaData.forEach(element => { + const poly = new PutCarArea(element, this); + poly.visible = false; + }); + + tempCarAreaData.forEach(element => { + const poly = new PutCarArea(element, this); + poly.visible = false; + poly.polygonGraphics.interactive = false; + }); + + + + + this.setNameVisible(false, GameMode.BasicInformation); + } + /** + * 显示车辆图标 + * @param data + */ + public ShowCarIcon(data: any) { + + this.carData.set(data.Id, data); + + const carButton = PIXI.Sprite.from(data.ImageUrl); + carButton.name = data.Id; + carButton.buttonMode = true; + carButton.interactive = true; + carButton + .on('pointerdown', (event) => { + if (this.paintMode !== PaintMode.Car) { + this.setPaintMode(PaintMode.Car); + this.selectCar = this.carData.get(event.currentTarget.name); + event.currentTarget.name = ''; + event.currentTarget.visible = false; + this.previewSinglePointIcon.texture = PIXI.Texture.from(data.ImageUrl); + this.previewSinglePointIcon.visible = true; + this.previewSinglePointIcon.scale.set(1 / this.backgroundImage.scale.x); + this.backgroundImage.children.forEach(item => { + if (item instanceof PutCarArea) { + if (item.assetData.Type.indexOf(this.selectCar.Type) !== -1) { + item.visible = true; + } else { + item.visible = false; + } + } + }); + } + }) + .on('pointerup', (event) => { + + }) + .on('pointerupoutside', (event) => { + + }) + .on('pointerover', (event) => { + + }) + .on('pointerout', (event) => { + + }); + + + carButton.setParent(this.app.stage); + carButton.position.set(25, this.count * 65); + this.count++; + } + /** + * + * @param id 图标ID + * @param b 显示/隐藏 + */ + public setIconVisible(ids: string[], b: boolean) { + ids.forEach(item => { + this.backgroundImage.getChildByName(item).visible = b; + }); + } + /** + * 版本检查 + */ + public versionChecking(): void { + const floorData = this.canvasData.originaleveryStoreyData; + const buildingData = this.canvasData.originalcompanyBuildingData; + if (floorData.version && floorData.version === '1.0') { + floorData.version = '2.0'; + Object.keys(floorData.data).forEach(item => { + floorData.data[item].Point.y *= -1; + floorData.data[item].MultiPoint?.forEach(element => { + element.y *= -1; + }); + }); + } + if (buildingData.version && buildingData.version === '1.0') { + buildingData.version = '2.0'; + Object.keys(buildingData.data).forEach(item => { + buildingData.data[item].Point.y *= -1; + buildingData.data[item].MultiPoint?.forEach(element => { + element.y *= -1; + }); + }); + } + } + /** + * 创建确认绘制结束按钮 + */ + private createEnterPaintEndButton() { + this.enterPaintEndButton.width = 60; + this.enterPaintEndButton.height = 60; + this.enterPaintEndButton.anchor.set(0.5); + this.enterPaintEndButton.position = new PIXI.Point(0, 0); + this.enterPaintEndButton.interactive = true; + this.enterPaintEndButton.buttonMode = true; + this.enterPaintEndButton + .on('mousedown', event => { + event.stopPropagation(); + this.emit('createIcon'); + this.enterPaintEndButton.visible = false; + this.enterPaint(); + }); + this.backgroundImage.addChild(this.enterPaintEndButton); + this.enterPaintEndButton.zIndex = this.backgroundImage.children.length; + this.enterPaintEndButton.visible = false; + } + // /** + // * 刷新确认按钮 + // */ + // private refreshEnterPaintEndButton() { + // this.enterPaintEndButton.position = this.circleShadow.position; + // this.enterPaintEndButton.visible = true; + // } + /** + * 创建背景图 + */ + private createBackgroundImage(): void { + this.backgroundImage = PIXI.Sprite.from('assets/images/noImg.png'); + this.backgroundImage.anchor.set(0.5); + this.backgroundImage.x = this.app.view.width / 2; + this.backgroundImage.y = this.app.view.height / 2; + this.backgroundImage.interactive = true; + this.backgroundImage.name = 'background'; + this.backgroundImage.sortableChildren = true; + this.backgroundImage + .on('mousedown', event => { + if (!event.currentTarget.dragging && this.selection.isMultiselection === false) { + event.currentTarget.data = event.data; + event.currentTarget.dragging = true; + event.currentTarget.dragPoint = event.data.getLocalPosition(event.currentTarget.parent); + event.currentTarget.dragPoint.x -= event.currentTarget.x; + event.currentTarget.dragPoint.y -= event.currentTarget.y; + switch (this.paintMode) { + case PaintMode.endPaint: + console.log(this.backgroundImage.toLocal(this.mousePosition)); + break; + case PaintMode.singlePointIcon: + const json = JSON.parse(JSON.stringify(this.canvasData.selectTemplateData.propertyInfos)); + const list = []; + json.forEach(element => { + const property = new PropertyInfo(element); + list.push(property); + }); + const assetData = { + TemplateId: this.canvasData.selectTemplateData.id, + FloorId: this.canvasData.selectStorey.id, + Angle: this.canvasData.selectTemplateData.angle, + Color: this.canvasData.selectTemplateData.color, + Enabled: this.canvasData.selectTemplateData.enabled, + FillMode: this.canvasData.selectTemplateData.fillMode, + FireElementId: this.canvasData.selectTemplateData.fireElementId, + FixedSize: this.canvasData.selectTemplateData.fixedSize, + Height : 32, + Width : 32, + Id: ObjectID.default.generate(), + ImageUrl: this.canvasData.selectTemplateData.imageUrl, + InteractiveMode: this.canvasData.selectTemplateData.interactiveMode, + MultiPoint : null, + Point: new PIXI.Point(this.previewSinglePointIcon.x, this.previewSinglePointIcon.y), + Name : this.canvasData.selectTemplateData.name, + PropertyInfos: list, + Border : this.canvasData.selectTemplateData.border, + DrawMode : this.canvasData.selectTemplateData.drawMode, + Thickness : this.canvasData.selectTemplateData.thickness, + IsFromBuilding : this.canvasData.selectTemplateData.isFromBuilding, + GameMode : this.canvasData.gameMode + }; + const singleIcon = new SinglePointIcon(assetData, this); + if (singleIcon.assetData.IsFromBuilding) { + this.canvasData.originalcompanyBuildingData.data[singleIcon.assetData.Id] = singleIcon.assetData; + } else { + this.canvasData.originaleveryStoreyData.data[singleIcon.assetData.Id] = singleIcon.assetData; + } + this.emit('createIcon'); + this.emit('backgroundScale', this.backgroundImage.scale.x); + this.canvasData.isChange = true; + break; + case PaintMode.lineIcon: + this.previewLineSegment.visible = true; + this.currentClickPoint.position = new PIXI.Point(this.circleShadow.x, this.circleShadow.y); + this.paintPoints.push(new PIXI.Point(this.circleShadow.x, this.circleShadow.y)); + + if (this.paintPoints.length >= 2) { + this.enterPaintEndButton.position = this.circleShadow.position; + this.enterPaintEndButton.visible = true; + } + + if (this.paintingIcon !== null) { + this.backgroundImage.removeChild(this.paintingIcon); + } + const jsonObject = JSON.parse(JSON.stringify(this.canvasData.selectTemplateData.propertyInfos)); + const propertyList = []; + jsonObject.forEach(element => { + const property = new PropertyInfo(element); + propertyList.push(property); + }); + const assetData1 = { + TemplateId: this.canvasData.selectTemplateData.id, + FloorId: this.canvasData.selectStorey.id, + Angle: this.canvasData.selectTemplateData.angle, + Color: this.canvasData.selectTemplateData.color, + Enabled: this.canvasData.selectTemplateData.enabled, + FillMode: this.canvasData.selectTemplateData.fillMode, + FireElementId: this.canvasData.selectTemplateData.fireElementId, + FixedSize: this.canvasData.selectTemplateData.fixedSize, + Height: 32, + Width: 32, + Id: ObjectID.default.generate(), + ImageUrl: this.canvasData.selectTemplateData.imageUrl, + InteractiveMode: this.canvasData.selectTemplateData.interactiveMode, + MultiPoint: JSON.parse(JSON.stringify(this.paintPoints)), + Point: new PIXI.Point(0, 0), + Name: this.canvasData.selectTemplateData.name, + PropertyInfos: propertyList, + Border: this.canvasData.selectTemplateData.border, + DrawMode: this.canvasData.selectTemplateData.drawMode, + Thickness: this.canvasData.selectTemplateData.thickness, + IsFromBuilding: this.canvasData.selectTemplateData.isFromBuilding, + GameMode: this.canvasData.gameMode + }; + // const assetData1 = { + // ImageUrl: this.canvasData.selectTemplateData.imageUrl, + // Point: new PIXI.Point(0, 0), + // Width: 32, + // Height: 32, + // MultiPoint: this.paintPoints, + // Name: this.canvasData.selectTemplateData.name + // }; + this.paintingIcon = new MultipointIcon(assetData1, this); + // this.paintingIcon = new MultipointIcon(this.previewSinglePointIcon.texture, new PIXI.Point(0, 0), this.paintPoints, this, + // this.canvasData.selectTemplateData.name); + this.emit('backgroundScale', this.backgroundImage.scale.x); + break; + case PaintMode.polygonIcon: + this.previewLineSegment.visible = true; + this.currentClickPoint.position = new PIXI.Point(this.circleShadow.x, this.circleShadow.y); + this.paintPoints.push(new PIXI.Point(this.circleShadow.x, this.circleShadow.y)); + if (this.paintPoints.length === 1) { + this.enterPaintEndButton.position = this.circleShadow.position; + } else if (this.paintPoints.length >= 3) { + this.enterPaintEndButton.visible = true; + } + this.paintPoints.forEach((value, index, array) => { + if (index === 0) { + this.paintingLine.clear(); + this.paintingLine.lineStyle(1, 0xffd900, 1); + this.paintingLine.moveTo(value.x, value.y); + } else { + this.paintingLine.lineTo(value.x, value.y); + } + }); + + // if (this.paintingIcon !== null) { + // this.backgroundImage.removeChild(this.paintingIcon); + // } + // this.paintingIcon = new PolygonIcon(this.paintPoints, this); + break; + case PaintMode.Pipeline: + if (this.paintingPipeline !== null) { + this.currentClickPoint.position = new PIXI.Point(this.circleShadow.x, this.circleShadow.y); + this.paintPoints.push(new PIXI.Point(this.circleShadow.x, this.circleShadow.y)); + this.paintingPipeline.assetData.MultiPoint = JSON.parse(JSON.stringify(this.paintPoints)); + this.paintingPipeline.refresh(); + } + // this.emit('backgroundScale', this.backgroundImage.scale.x); + break; + case PaintMode.Arrows: + if (this.paintingArrows === null) { + const data = { + Id: ObjectID.default.generate(), + name: 'string', + point: new PIXI.Point(this.circleShadow.x, this.circleShadow.y), + pointA: new PIXI.Point(this.circleShadow.x, this.circleShadow.y), + pointB: new PIXI.Point(this.circleShadow.x, this.circleShadow.y), + source: 'assets/images/进攻方向.png', + }; + this.paintingArrows = new Arrows(data, this); + } else { + this.paintingArrows.ready = true; + this.paintingArrows = null; + this.paintMode = PaintMode.endPaint; + } + break; + case PaintMode.Car: + // console.log('创建车辆'); + break; + } + } else if (!event.currentTarget.dragging && this.selection.isMultiselection === true) { + this.rectToolGraphics.visible = true; + event.currentTarget.dragging = true; + this.initialScreenMousePos = this.backgroundImage.toLocal(this.mousePosition); + this.finalScreenMousePos = this.backgroundImage.toLocal(this.mousePosition); + } + }) + .on('mouseup', event => { + if (event.currentTarget.dragging) { + event.currentTarget.dragging = false; + event.currentTarget.data = null; + } + if (this.rectToolGraphics.visible === true) { + this.backgroundImage.children.forEach(item => { + if (item instanceof SinglePointIcon + || item instanceof MultipointIcon + || item instanceof PolygonIcon) { + if (this.rectToolGraphics.getLocalBounds().contains(item.x, item.y)) { + this.selection.select(item); + } + } + }); + this.rectToolGraphics.clear(); + this.rectToolGraphics.visible = false; + } + }) + .on('mouseupoutside', event => { + if (event.currentTarget.dragging) { + event.currentTarget.dragging = false; + event.currentTarget.data = null; + } + }) + .on('mousemove', event => { + if (event.currentTarget.dragging && this.selection.isMultiselection === false) { + const newPosition = event.currentTarget.data.getLocalPosition(event.currentTarget.parent); + event.currentTarget.x = newPosition.x - event.currentTarget.dragPoint.x; + event.currentTarget.y = newPosition.y - event.currentTarget.dragPoint.y; + } else if (event.currentTarget.dragging && this.selection.isMultiselection === true) { + if (this.rectToolGraphics.visible === true) { + this.finalScreenMousePos = this.backgroundImage.toLocal(this.mousePosition); + } + } + }).on('rightclick', event => { + event.stopPropagation(); + this.cancelPaint(); + this.selection.deselectAll(); + }) + .on('pointerover', (event) => { + this.previewSinglePointIcon.filters = [new OldFilmFilter()]; + }) + .on('pointerout', (event) => { + this.previewSinglePointIcon.filters = null; + }); + this.app.stage.addChild(this.backgroundImage); + + this.createPreviewSinglePointIcon(); + this.createPreviewLineSegment(); + this.createCircleShadow(); + this.createEnterPaintEndButton(); + this.backgroundImage.addChild(this.paintingLine); + } + + /** + * 刷新背景图 + */ + public refreshBackgroundImage(): void { + if (!this.canvasData.selectStorey.imageUrl) { + this.backgroundImage.visible = false; + } else { + this.backgroundImage.texture = PIXI.Texture.from(this.canvasData.selectStorey.imageUrl); + this.backgroundImage.angle = this.canvasData.selectStorey.imageAngle; + this.backgroundImage.visible = true; + } + } + /** + * 清空画布 + */ + public destroyBackgroundImage(): void { + this.app.stage.removeChild(this.backgroundImage); + // this.removeAllListeners('backgroundScale'); + } + /** + * 设置背景图缩放 + * @param scale 缩放系数 + */ + public setBackgroundScale(scale: number): void { + this.backgroundImage.scale.set(scale); + this.emit('backgroundScale', this.backgroundImage.scale.x); + } + /** + * 设置背景图角度 + * @param imageAngle 角度值 + */ + public setBackgroundAngle(imageAngle: number) { + this.backgroundImage.angle = imageAngle; + } + /** + * 创建预览单点图标 + */ + private createPreviewSinglePointIcon(): void { + this.previewSinglePointIcon = PIXI.Sprite.from('assets/images/noImg.png'); + this.previewSinglePointIcon.width = 32; + this.previewSinglePointIcon.height = 32; + this.previewSinglePointIcon.alpha = 1; + this.previewSinglePointIcon.anchor.set(0.5); + this.previewSinglePointIcon.visible = false; + this.backgroundImage.addChild(this.previewSinglePointIcon); + } + /** + * 改变预览单点图标 + * @param uri 图片地址 + */ + private changePreviewSinglePointIcon(uri: string): void { + this.previewSinglePointIcon.texture = PIXI.Texture.from(uri); + this.previewSinglePointIcon.visible = true; + } + /** + * 创建预览线段 + */ + private createPreviewLineSegment() { + this.previewLineSegment.visible = false; + this.backgroundImage.addChild(this.currentClickPoint); + this.backgroundImage.addChild(this.previewLineSegment); + + this.backgroundImage.addChild(this.rectToolGraphics); + this.rectToolGraphics.visible = false; + } + /** + * 刷新预览线段 + * @param pointA 点A + * @param pointB 点B + */ + private refreshPreviewLineSegment(pointA: PIXI.Point, pointB: PIXI.Point) { + this.previewLineSegment.clear(); + this.previewLineSegment.lineStyle(1, 0xffd900, 1); + this.previewLineSegment.moveTo(pointA.x, pointA.y); + this.previewLineSegment.lineTo(pointB.x, pointB.y ); + } + /** + * 创建半径图标影子 + * @param x 半径 + */ + private createCircleShadow(): void { + this.circleShadow.beginFill(0xFFCC5A); + this.circleShadow.drawCircle(0, 0, 10); + this.circleShadow.endFill(); + this.circleShadow.visible = false; + this.backgroundImage.addChild(this.circleShadow); + } + /** + * 开始绘制 + */ + public beginPaint() { + switch (this.canvasData.selectTemplateData.interactiveMode) { + case 0: + this.beginPaintSinglePointIcon(); + break; + case 1: + this.beginPaintLineIcon(); + break; + case 2: + this.beginPaintPolygonIcon(); + break; + } + } + /** + * 开始绘画单点图标 + */ + private beginPaintSinglePointIcon(): void { + this.cancelPaint(); + this.paintMode = PaintMode.singlePointIcon; + this.changePreviewSinglePointIcon(this.canvasData.selectTemplateData.imageUrl); + } + /** + * 开始绘画多边形 + */ + private beginPaintPolygonIcon(): void { + this.cancelPaint(); + this.paintMode = PaintMode.polygonIcon; + this.circleShadow.visible = true; + } + /** + * 开始绘制多点图标 + */ + private beginPaintLineIcon(): void { + this.cancelPaint(); + this.paintMode = PaintMode.lineIcon; + this.previewSinglePointIcon.texture = PIXI.Texture.from(this.canvasData.selectTemplateData.imageUrl); + this.circleShadow.visible = true; + } + /** + * 开始绘制管线 + */ + public beginPaintPipeline(): void { + this.paintMode = PaintMode.Pipeline; + } + public paintingPipelineFinish(): void { + if (this.paintMode === PaintMode.Pipeline) { + this.paintMode = PaintMode.endPaint; + this.paintPoints.splice(0, this.paintPoints.length); + this.paintingPipeline = null; + } + } + public beginPaintingArrows(): void { + this.paintMode = PaintMode.Arrows; + } + + + /** + * 取消绘画 + */ + public cancelPaint(): void { + switch (this.paintMode) { + case PaintMode.singlePointIcon: + this.previewSinglePointIcon.visible = false; + this.paintMode = PaintMode.endPaint; + break; + case PaintMode.lineIcon: + this.circleShadow.visible = false; + this.previewLineSegment.visible = false; + this.paintPoints.splice(0, this.paintPoints.length); + if (this.paintingIcon !== null) { + this.backgroundImage.removeChild(this.paintingIcon); + } + this.paintMode = PaintMode.endPaint; + break; + case PaintMode.polygonIcon: + this.circleShadow.visible = false; + this.previewLineSegment.visible = false; + this.paintingIcon = null; + this.paintPoints.splice(0, this.paintPoints.length); + this.paintingLine.clear(); + this.paintMode = PaintMode.endPaint; + break; + } + } + /** + * 设置绘制状态 + * @param mode 状态 + */ + public setPaintMode(mode: PaintMode) { + this.reset(); + this.paintMode = mode; + switch (mode) { + case PaintMode.endPaint: + this.selectCar = null; + this.backgroundImage.children.forEach(item => { + if (item instanceof PutCarArea) { + if (item.assetData.Type.indexOf(this.selectCar?.Type) !== -1) { + item.visible = true; + } else { + item.visible = false; + } + } + }); + break; + } + } + /** + * 获取绘制状态 + */ + public getPaintMode(): PaintMode { + return this.paintMode; + } + /** + * 重置 + */ + public reset() { + this.previewSinglePointIcon.filters = null; + this.previewSinglePointIcon.visible = false; + this.previewSinglePointIcon.angle = 0; + } + /** + * 确认绘制 + */ + private enterPaint(): void { + this.previewLineSegment.visible = false; + switch (this.paintMode) { + case PaintMode.lineIcon: + if (this.paintPoints.length >= 2) { + + if (this.paintingIcon.assetData.IsFromBuilding) { + this.canvasData.originalcompanyBuildingData.data[this.paintingIcon.assetData.Id] = this.paintingIcon.assetData; + } else { + this.canvasData.originaleveryStoreyData.data[this.paintingIcon.assetData.Id] = this.paintingIcon.assetData; + } + this.canvasData.isChange = true; + this.paintingIcon = null; + } + break; + case PaintMode.polygonIcon: + this.paintingLine.clear(); + if (this.paintPoints.length >= 3) { + const jsonList = JSON.parse(JSON.stringify(this.canvasData.selectTemplateData.propertyInfos)); + const propertyList = []; + jsonList.forEach(element => { + const property = new PropertyInfo(element); + propertyList.push(property); + }); + const assetData = { + TemplateId: this.canvasData.selectTemplateData.id, + FloorId: this.canvasData.selectStorey.id, + Angle: this.canvasData.selectTemplateData.angle, + Color: this.canvasData.selectTemplateData.color, + Enabled: this.canvasData.selectTemplateData.enabled, + FillMode: this.canvasData.selectTemplateData.fillMode, + FireElementId: this.canvasData.selectTemplateData.fireElementId, + FixedSize: this.canvasData.selectTemplateData.fixedSize, + Height: 32, + Width: 32, + Id: ObjectID.default.generate(), + ImageUrl: this.canvasData.selectTemplateData.imageUrl, + InteractiveMode: this.canvasData.selectTemplateData.interactiveMode, + MultiPoint: JSON.parse(JSON.stringify(this.paintPoints)), + Point: new PIXI.Point(0, 0), + Name: this.canvasData.selectTemplateData.name, + PropertyInfos: propertyList, + Border: this.canvasData.selectTemplateData.border, + DrawMode: this.canvasData.selectTemplateData.drawMode, + Thickness: this.canvasData.selectTemplateData.thickness, + IsFromBuilding: this.canvasData.selectTemplateData.isFromBuilding, + GameMode: this.canvasData.gameMode + }; + const polygonIcon = new PolygonIcon(assetData, this); + if (polygonIcon.assetData.IsFromBuilding) { + this.canvasData.originalcompanyBuildingData.data[polygonIcon.assetData.Id] = polygonIcon.assetData; + } else { + this.canvasData.originaleveryStoreyData.data[polygonIcon.assetData.Id] = polygonIcon.assetData; + } + this.canvasData.isChange = true; + } + break; + } + this.paintPoints.splice(0, this.paintPoints.length); + this.emit('backgroundScale', this.backgroundImage.scale.x); + } + /** + * 复制 + */ + public copy(): void { + this.copyData = []; + this.selection.objects.forEach(item => { + const newData = JSON.parse(JSON.stringify(item.assetData)); + this.copyData.push(newData); + }); + } + /** + * 粘贴 + */ + public paste(companyId: string, buildingId: string, floorId: string): void { + this.copyData.forEach(item => { + item.Point = new PIXI.Point(item.Point.x + 5, item.Point.y + 5); + const newData = JSON.parse(JSON.stringify(item)); + newData.Id = ObjectID.default.generate(), + newData.CompanyId = companyId; + newData.BuildingId = buildingId; + newData.FloorId = floorId; + newData.Point = new PIXI.Point(item.Point.x + 5, item.Point.y + 5); + if (newData.IsFromBuilding) { + this.canvasData.originalcompanyBuildingData.data[newData.Id] = newData; + } else { + this.canvasData.originaleveryStoreyData.data[newData.Id] = newData; + } + switch (item.InteractiveMode) { + case PaintMode.singlePointIcon: + const singleIcon = new SinglePointIcon(newData, this); + break; + case PaintMode.lineIcon: + const lineIcon = new MultipointIcon(newData, this); + break; + case PaintMode.polygonIcon: + const polygonIcon = new PolygonIcon(newData, this); + break; + } + this.selection.select(this.backgroundImage.getChildByName(newData.Id)); + }); + } + +} +/** + * 绘制模式 + */ +enum PaintMode { + singlePointIcon, + lineIcon, + polygonIcon, + endPaint, + Pipeline, + Arrows, + Car +} +/** + * 单点图标 + */ +export class SinglePointIcon extends PIXI.Container { + style = new PIXI.TextStyle({ + fontFamily: 'Arial', + fontSize: 18, + fontStyle: 'normal', + fontWeight: 'bold', + fill: ['#000000'], + stroke: '#ffffff', + strokeThickness: 3, + dropShadow: true, + dropShadowColor: '#000000', + dropShadowBlur: 3, + dropShadowAngle: Math.PI / 6, + dropShadowDistance: 1, + wordWrap: false, + wordWrapWidth: 100, + }); + + public text = new PIXI.Text(this.assetData.Name + + '\r\n' + + this.assetData.PropertyInfos?.find(item => item.PropertyName === '名称/编号')?.PropertyValue, this.style); + private image = PIXI.Sprite.from(this.assetData.ImageUrl); + + constructor(public assetData: any, private workingArea: WorkingAreaComponent) { + super(); + this.workingArea.backgroundImage.addChild(this); + this.x = this.assetData.Point.x; + this.y = this.assetData.Point.y; + this.name = this.assetData.Id; + + this.image.angle = this.assetData.Angle; + + this.image.x = 0; + this.image.y = 0; + this.image.width = this.assetData.Width; + this.image.height = this.assetData.Height; + + this.image.alpha = 1; + this.image.anchor.set(0.5); + this.image.interactive = true; + this.image + .on('mousedown', event => { + console.log(this.assetData.Pipelines); + event.stopPropagation(); + this.workingArea.selection.selectOne(this); + if (this.assetData.CanConnection && this.parent === this.workingArea.backgroundImage) { + if (this.workingArea.getPaintMode() === PaintMode.Pipeline) { + if (this.workingArea.paintingPipeline === null) { + this.workingArea.previewLineSegment.visible = true; + this.workingArea.currentClickPoint.position = + new PIXI.Point(this.workingArea.circleShadow.x, this.workingArea.circleShadow.y); + this.workingArea.paintPoints.push(new PIXI.Point(this.position.x, this.position.y)); + const tempData = { + Id: ObjectID.default.generate(), + MultiPoint: JSON.parse(JSON.stringify(this.workingArea.paintPoints)), + Point: new PIXI.Point(0, 0), + Name: '管线', + LinkedObjects: [], + }; + this.workingArea.paintingPipeline = new Pipeline(tempData, this.workingArea); + this.workingArea.paintingPipeline.assetData.LinkedObjects.push(this); + this.assetData.Pipelines.push(this.workingArea.paintingPipeline); + } else { + this.workingArea.previewLineSegment.visible = false; + this.workingArea.currentClickPoint.position = + new PIXI.Point(this.workingArea.circleShadow.x, this.workingArea.circleShadow.y); + this.workingArea.paintPoints.push(new PIXI.Point(this.position.x, this.position.y)); + this.workingArea.paintingPipeline.assetData.MultiPoint = JSON.parse(JSON.stringify(this.workingArea.paintPoints)); + this.workingArea.paintingPipeline.assetData.LinkedObjects.push(this); + this.assetData.Pipelines.push(this.workingArea.paintingPipeline); + this.workingArea.paintingPipeline.refresh(); + this.workingArea.paintingPipelineFinish(); + } + } + } + // 如果链接对象不为空,禁止移动 + if ((this.workingArea.allowEdit || this.parent !== this.workingArea.backgroundImage) ) { + event.currentTarget.parent.data = event.data; + event.currentTarget.parent.alpha = 0.5; + event.currentTarget.parent.dragging = true; + } + }) + .on('mouseup', event => { + if (event.currentTarget.parent.dragging) { + event.currentTarget.parent.alpha = 1; + event.currentTarget.parent.dragging = false; + event.currentTarget.parent.data = null; + } + }) + .on('mouseupoutside', event => { + if (event.currentTarget.parent.dragging) { + event.currentTarget.parent.alpha = 1; + event.currentTarget.parent.dragging = false; + event.currentTarget.parent.data = null; + } + }) + .on('mousemove', event => { + if (event.currentTarget.parent.dragging) { + // 如果拖动过程中发现父对象不是背景图 + if (this.parent !== this.workingArea.backgroundImage) { + this.setParent(this.workingArea.backgroundImage); + if (this.assetData.FixedSize) { + const scale = 1 / this.workingArea.backgroundImage.scale.x; + this.scale.set(scale); + } + } + const newPosition = event.currentTarget.parent.data.getLocalPosition(event.currentTarget.parent.parent); + event.currentTarget.parent.x = newPosition.x; + event.currentTarget.parent.y = newPosition.y; + this.assetData.Point = new PIXI.Point(this.x, this.y); + this.workingArea.canvasData.isChange = true; + } + }) + .on('rightclick', event => { + + }) + .on('mouseover', event => { + + }); + + // this.workingArea.on('backgroundScale', data => { + // if (this.assetData.FixedSize) { + // const scale = 1 / data; + // this.scale.set(scale); + // } + // }); + + this.text.x = this.image.x; + this.text.y = this.image.y - this.image.height / 2; + this.text.anchor.set(0.5, 1); + + if (this.assetData.GameMode === 2) { + this.text.visible = false; + } + + this.addChild(this.text); + this.addChild(this.image); + } + // 设置名称 + public setNameVisible(value: boolean, mode: GameMode) { + if (this.assetData.GameMode === mode) { + this.text.visible = value; + } + } + // 刷新 + public refresh() { + this.image.width = this.assetData.Width; + this.image.height = this.assetData.Height; + this.image.angle = this.assetData.Angle; + this.text.text = this.assetData.Name + + '\r\n' + + this.assetData.PropertyInfos?.find(item => item.PropertyName === '名称/编号')?.PropertyValue; + this.text.x = this.image.x; + this.text.y = this.image.y - this.image.height / 2; + } +} +/** + * 多点连线 + */ +export class MultipointIcon extends PIXI.Container { + public pointsData: PIXI.Point[]; + public pointsGraphics: PIXI.Graphics[] = []; + public iconsTilingSprite: PIXI.TilingSprite[] = []; + style = new PIXI.TextStyle({ + fontFamily: 'Arial', + fontSize: 18, + fontStyle: 'normal', + fontWeight: 'bold', + fill: ['#000000'], + stroke: '#ffffff', + strokeThickness: 3, + dropShadow: true, + dropShadowColor: '#000000', + dropShadowBlur: 3, + dropShadowAngle: Math.PI / 6, + dropShadowDistance: 1, + wordWrap: false, + wordWrapWidth: 100, + }); + + public text = new PIXI.Text(this.assetData.Name + + '\r\n' + + this.assetData.PropertyInfos?.find(item => item.PropertyName === '名称/编号')?.PropertyValue, this.style); + /** + * + * @param texture 图片素材 + * @param points 点集合 + */ + constructor(public assetData: any, private workingArea: WorkingAreaComponent) { + super(); + this.name = this.assetData.Id; + this.pointsData = this.assetData.MultiPoint; + this.x = this.assetData.Point.x; + this.y = this.assetData.Point.y; + this.workingArea.backgroundImage.addChild(this); + // 画线图标 + for (let i = 0, count = this.pointsData.length - 1; i < count; i++) { + const pointA = this.pointsData[i]; + const pointB = this.pointsData[i + 1]; + + const angle = Math.atan2((pointB.y - pointA.y), (pointB.x - pointA.x)) * (180 / Math.PI); + const a = pointB.x - pointA.x; + const b = pointB.y - pointA.y; + const distance = Math.sqrt(a * a + b * b); + + const icon = new PIXI.TilingSprite(PIXI.Texture.from(this.assetData.ImageUrl), distance, 64); + icon.anchor.set(0, 0.5); + icon.x = pointA.x; + icon.y = pointA.y; + icon.angle = angle; + this.iconsTilingSprite.push(icon); + this.addChild(icon); + if (i === 0) { + this.text.anchor.set(0.5); + this.text.position = icon.position; + this.text.y -= this.assetData.Height; + this.addChild(this.text); + } + } + // 画点 + this.pointsData.forEach((item, index, array) => { + const iconPoint = new PIXI.Graphics(); + iconPoint.lineStyle(1, 0xFFBD01, 1); + iconPoint.beginFill(0xFFFFFF, 1); + iconPoint.drawCircle(0, 0, 15); + iconPoint.x = item.x; + iconPoint.y = item.y; + iconPoint.endFill(); + iconPoint.visible = false; + this.pointsGraphics.push(iconPoint); + this.addChild(iconPoint); + }); + // 添加圆点事件 + this.pointsGraphics.forEach((item, index, array) => { + item.interactive = true; + item.on('mousedown', event => { + event.stopPropagation(); + if (this.workingArea.allowEdit) { + event.currentTarget.data = event.data; + event.currentTarget.alpha = 0.5; + event.currentTarget.dragging = true; + } + }) + .on('mouseup', event => { + if (event.currentTarget.dragging) { + event.currentTarget.alpha = 1; + event.currentTarget.dragging = false; + event.currentTarget.data = null; + } + }) + .on('mouseupoutside', event => { + if (event.currentTarget.dragging) { + event.currentTarget.alpha = 1; + event.currentTarget.dragging = false; + event.currentTarget.data = null; + } + }) + .on('mousemove', event => { + if (event.currentTarget.dragging) { + const newPosition = event.currentTarget.data.getLocalPosition(event.currentTarget.parent); + event.currentTarget.x = newPosition.x; + event.currentTarget.y = newPosition.y; + + this.assetData.MultiPoint[index].x = newPosition.x; + this.assetData.MultiPoint[index].y = newPosition.y; + this.workingArea.canvasData.isChange = true; + + if (index === 0) {// 第一个点 + this.iconsTilingSprite[index].x = newPosition.x; + this.iconsTilingSprite[index].y = newPosition.y; + + const pointA = array[index]; + const pointB = array[index + 1]; + + const angle = Math.atan2((pointB.y - pointA.y), (pointB.x - pointA.x)) * (180 / Math.PI); + const a = pointB.x - pointA.x; + const b = pointB.y - pointA.y; + const distance = Math.sqrt(a * a + b * b); + this.iconsTilingSprite[index].angle = angle; + this.iconsTilingSprite[index].width = distance; + + this.text.position = this.iconsTilingSprite[index].position; + this.text.y -= this.assetData.Height; + } else if (index < array.length - 1) {// 不是第一个点,也不是最后一个点 + this.iconsTilingSprite[index].x = newPosition.x; + this.iconsTilingSprite[index].y = newPosition.y; + + const pointA = array[index]; // 当前点 + const pointB = array[index + 1]; // 后一个点 + const pointC = array[index - 1]; // 前一个点 + + const angle = Math.atan2((pointB.y - pointA.y), (pointB.x - pointA.x)) * (180 / Math.PI); + const a = pointB.x - pointA.x; + const b = pointB.y - pointA.y; + const distance = Math.sqrt(a * a + b * b); + this.iconsTilingSprite[index].angle = angle; + this.iconsTilingSprite[index].width = distance; + + const angleC = Math.atan2((pointA.y - pointC.y), (pointA.x - pointC.x)) * (180 / Math.PI); + const aC = pointA.x - pointC.x; + const bC = pointA.y - pointC.y; + const distanceC = Math.sqrt(aC * aC + bC * bC); + this.iconsTilingSprite[index - 1].angle = angleC; + this.iconsTilingSprite[index - 1].width = distanceC; + } else if (index === array.length - 1) { // 最后一个点 + const pointA = array[index]; // 当前点 + const pointC = array[index - 1]; // 前一个点 + + const angleC = Math.atan2((pointA.y - pointC.y), (pointA.x - pointC.x)) * (180 / Math.PI); + const aC = pointA.x - pointC.x; + const bC = pointA.y - pointC.y; + const distanceC = Math.sqrt(aC * aC + bC * bC); + this.iconsTilingSprite[index - 1].angle = angleC; + this.iconsTilingSprite[index - 1].width = distanceC; + } + } + }) + .on('rightclick', event => { + }) + .on('mouseover', event => { + + }); + }); + // // 缩放 + // this.workingArea.on('backgroundScale', data => { + // const scale = 1 / data; + // this.text.scale.set(scale); + // }); + // 添加选中事件 + this.iconsTilingSprite.forEach((item, index, array) => { + item.interactive = true; + item.on('mousedown', event => { + event.stopPropagation(); + this.workingArea.selection.selectOne(this); + if (this.workingArea.allowEdit) { + event.currentTarget.parent.data = event.data; + event.currentTarget.parent.alpha = 0.5; + event.currentTarget.parent.dragging = true; + + event.currentTarget.parent.dragPoint = event.data.getLocalPosition(event.currentTarget.parent.parent); + event.currentTarget.parent.dragPoint.x -= event.currentTarget.parent.x; + event.currentTarget.parent.dragPoint.y -= event.currentTarget.parent.y; + } + }) + .on('mouseup', event => { + if (event.currentTarget.parent.dragging) { + event.currentTarget.parent.alpha = 1; + event.currentTarget.parent.dragging = false; + event.currentTarget.parent.data = null; + } + }) + .on('mouseupoutside', event => { + if (event.currentTarget.parent.dragging) { + event.currentTarget.parent.alpha = 1; + event.currentTarget.parent.dragging = false; + event.currentTarget.parent.data = null; + } + }) + .on('mousemove', event => { + if (event.currentTarget.parent.dragging) { + const newPosition = event.currentTarget.parent.data.getLocalPosition(event.currentTarget.parent.parent); + event.currentTarget.parent.x = newPosition.x - event.currentTarget.parent.dragPoint.x; + event.currentTarget.parent.y = newPosition.y - event.currentTarget.parent.dragPoint.y; + + this.assetData.Point = new PIXI.Point(this.x, this.y); + this.workingArea.canvasData.isChange = true; + } + }) + .on('rightclick', event => { + + }); + }); + } + /** + * 设置点显示状态 + * @param value 显示状态 + */ + public setPointVisiable(value: boolean) { + this.pointsGraphics.forEach((item) => { + item.visible = value; + }); + } + // 设置名称 + public setNameVisible(value: boolean, mode: GameMode) { + if (this.assetData.GameMode === mode) { + this.text.visible = value; + } + } + // + public refresh() { + this.text.text = this.assetData.Name + + '\r\n' + + this.assetData.PropertyInfos.find(item => item.PropertyName === '名称/编号')?.PropertyValue; + } +} +/** + * 多边形 + */ +export class PolygonIcon extends PIXI.Container { + public pointsData: PIXI.Point[]; + public pointsGraphics: PIXI.Graphics[] = []; + public polygonGraphics: PIXI.Graphics = new PIXI.Graphics(); + public polygonLineGraphics: PIXI.Graphics = new PIXI.Graphics(); + style = new PIXI.TextStyle({ + fontFamily: 'Arial', + fontSize: 18, + fontStyle: 'normal', + fontWeight: 'bold', + fill: ['#000000'], + stroke: '#ffffff', + strokeThickness: 3, + dropShadow: true, + dropShadowColor: '#000000', + dropShadowBlur: 3, + dropShadowAngle: Math.PI / 6, + dropShadowDistance: 1, + wordWrap: false, + wordWrapWidth: 100, + }); + + public text = new PIXI.Text(this.assetData.Name + + '\r\n' + + this.assetData.PropertyInfos.find(item => item.PropertyName === '名称/编号')?.PropertyValue, this.style); + /** + * + * @param points 点集合 + */ + constructor(public assetData: any, private workingArea: WorkingAreaComponent) { + super(); + this.name = this.assetData.Id; + this.x = this.assetData.Point.x; + this.y = this.assetData.Point.y; + this.pointsData = this.assetData.MultiPoint; + this.workingArea.backgroundImage.addChild(this); + this.sortableChildren = true; + // 画点 + this.pointsData.forEach((item, index, array) => { + const iconPoint = new PIXI.Graphics(); + iconPoint.lineStyle(1, 0xFFBD01, 1); + iconPoint.beginFill(0xFFFFFF, 1); + iconPoint.drawCircle(0, 0, 15); + iconPoint.x = item.x; + iconPoint.y = item.y; + iconPoint.endFill(); + iconPoint.visible = false; + this.pointsGraphics.push(iconPoint); + this.addChild(iconPoint); + }); + // 填充多边形 + + const color: number = this.assetData.Color.substring(0, 7).replace('#', '0x'); + const angle: number = parseInt(this.assetData.Color.substring(7), 16) / 255; + this.polygonGraphics.beginFill(color, angle); + this.polygonGraphics.drawPolygon(this.getPoints()); + this.polygonGraphics.endFill(); + this.addChild(this.polygonGraphics); + // 画多边形 + this.polygonLineGraphics.lineStyle(5, 0xFFBD01, 1); + this.polygonLineGraphics.drawPolygon(this.getPoints()); + this.polygonLineGraphics.closePath(); + this.addChild(this.polygonLineGraphics); + + this.text.anchor.set(0.5); + this.text.position = this.calculatePolygonGravityCenter(this.pointsData); + // console.log(this.calculatePolygonGravityCenter(this.pointsData)); + this.polygonGraphics.addChild(this.text); + // 添加圆点事件 + this.pointsGraphics.forEach((item, index, array) => { + item.interactive = true; + item.zIndex = 1; + item.on('mousedown', event => { + event.stopPropagation(); + if (this.workingArea.allowEdit) { + event.currentTarget.data = event.data; + event.currentTarget.alpha = 0.5; + event.currentTarget.dragging = true; + } + }) + .on('mouseup', event => { + if (event.currentTarget.dragging) { + event.currentTarget.alpha = 1; + event.currentTarget.dragging = false; + event.currentTarget.data = null; + } + }) + .on('mouseupoutside', event => { + if (event.currentTarget.dragging) { + event.currentTarget.alpha = 1; + event.currentTarget.dragging = false; + event.currentTarget.data = null; + } + }) + .on('mousemove', event => { + if (event.currentTarget.dragging) { + const newPosition = event.currentTarget.data.getLocalPosition(event.currentTarget.parent); + event.currentTarget.x = newPosition.x; + event.currentTarget.y = newPosition.y; + + this.assetData.MultiPoint[index].x = newPosition.x; + this.assetData.MultiPoint[index].y = newPosition.y; + this.workingArea.canvasData.isChange = true; + // 填充多边形 + this.polygonGraphics.clear(); + this.polygonGraphics.beginFill(color, angle); + this.polygonGraphics.drawPolygon(this.getPoints()); + this.polygonGraphics.endFill(); + // 画多边形 + this.polygonLineGraphics.clear(); + this.polygonLineGraphics.lineStyle(5, 0xFFBD01, 1); + this.polygonLineGraphics.drawPolygon(this.getPoints()); + this.polygonLineGraphics.closePath(); + + this.text.position = this.calculatePolygonGravityCenter(this.pointsData); + } + }) + .on('rightclick', event => { + }); + }); + // 添加选中事件 + this.polygonGraphics.interactive = true; + this.polygonGraphics + .on('mousedown', event => { + event.stopPropagation(); + this.workingArea.selection.selectOne(this); + if (this.workingArea.allowEdit) { + event.currentTarget.parent.data = event.data; + event.currentTarget.parent.alpha = 0.5; + event.currentTarget.parent.dragging = true; + + event.currentTarget.parent.dragPoint = event.data.getLocalPosition(event.currentTarget.parent.parent); + event.currentTarget.parent.dragPoint.x -= event.currentTarget.parent.x; + event.currentTarget.parent.dragPoint.y -= event.currentTarget.parent.y; + } + }) + .on('mouseup', event => { + if (event.currentTarget.parent.dragging) { + event.currentTarget.parent.alpha = 1; + event.currentTarget.parent.dragging = false; + event.currentTarget.parent.data = null; + } + }) + .on('mouseupoutside', event => { + if (event.currentTarget.parent.dragging) { + event.currentTarget.parent.alpha = 1; + event.currentTarget.parent.dragging = false; + event.currentTarget.parent.data = null; + } + }) + .on('mousemove', event => { + if (event.currentTarget.parent.dragging) { + const newPosition = event.currentTarget.parent.data.getLocalPosition(event.currentTarget.parent.parent); + event.currentTarget.parent.x = newPosition.x - event.currentTarget.parent.dragPoint.x; + event.currentTarget.parent.y = newPosition.y - event.currentTarget.parent.dragPoint.y; + + this.assetData.Point = new PIXI.Point(this.x, this.y); + this.workingArea.canvasData.isChange = true; + } + }) + .on('rightclick', event => { + // this.workingArea.selection.deselectAll(); + }); + // // 缩放 + // this.workingArea.on('backgroundScale', data => { + // const scale = 1 / data; + // this.text.scale.set(scale); + // }); + } + /** + * 设置点显示状态 + * @param value 显示状态 + */ + public setPointVisiable(value: boolean) { + this.pointsGraphics.forEach((item) => { + item.visible = value; + }); + } + + public calculatePolygonGravityCenter(points: PIXI.Point[]) { + let area = 0.0; // 多边形面积 + let gravityLat = 0.0; // 重心点 latitude + let gravityLng = 0.0; // 重心点 longitude + points.forEach((item, index) => { + // 1 + const lat = item.x; + const lng = item.y; + const nextLat = points[(index + 1) % points.length].x; + const nextLng = points[(index + 1) % points.length].y; + // 2 + const tempArea = (nextLat * lng - nextLng * lat) / 2.0; + // 3 + area += tempArea; + // 4 + gravityLat += tempArea * (lat + nextLat) / 3; + gravityLng += tempArea * (lng + nextLng) / 3; + }); + // 5 + gravityLat = gravityLat / area; + gravityLng = gravityLng / area; + + return new PIXI.Point(gravityLat, gravityLng); +} + /** + * 获取点集合 + */ + public getPoints(): PIXI.Point[] { + const points: PIXI.Point[] = []; + this.pointsGraphics.forEach(item => { + points.push(item.position); + }); + return points; + } + /** + * 设置名称显示 + * @param value true/false 显示/隐藏 + * @param mode BasicInformation = 0 基本信息 + * Assignment想定作业 = 1 想定作业 + */ + public setNameVisible(value: boolean, mode: GameMode) { + if (this.assetData.GameMode === mode) { + this.text.visible = value; + } + } + public refresh() { + this.text.text = this.assetData.Name + + '\r\n' + + this.assetData.PropertyInfos.find(item => item.PropertyName === '名称/编号')?.PropertyValue; + // 填充多边形 + const color: number = this.assetData.Color.substring(0, 7).replace('#', '0x'); + const angle: number = parseInt(this.assetData.Color.substring(7), 16) / 255; + this.polygonGraphics.clear(); + this.polygonGraphics.beginFill(color, angle); + this.polygonGraphics.drawPolygon(this.getPoints()); + this.polygonGraphics.endFill(); + } +} +/** + * 汽车放置区域 + */ +export class PutCarArea extends PIXI.Container { + public polygonGraphics: PIXI.Graphics = new PIXI.Graphics(); + constructor(public assetData: any, private workingArea: WorkingAreaComponent) { + super(); + this.name = this.assetData.Id; + this.x = this.assetData.Point.x; + this.y = this.assetData.Point.y; + this.workingArea.backgroundImage.addChild(this); + this.sortableChildren = true; + + // 填充多边形 + + const color: number = this.assetData.Color.substring(0, 7).replace('#', '0x'); + const angle: number = parseInt(this.assetData.Color.substring(7), 16) / 255; + this.polygonGraphics.beginFill(color, angle); + this.polygonGraphics.drawPolygon(this.assetData.MultiPoint); + this.polygonGraphics.endFill(); + this.addChild(this.polygonGraphics); + // 添加选中事件 + this.polygonGraphics.interactive = true; + this.polygonGraphics + .on('pointerdown', (event) => { + if (this.workingArea.getPaintMode() === PaintMode.Car) { + this.workingArea.selectCar.Point = + new PIXI.Point(this.workingArea.previewSinglePointIcon.x, this.workingArea.previewSinglePointIcon.y); + this.workingArea.selectCar.Angle = this.assetData.Direction; + const car = new SinglePointIcon(this.workingArea.selectCar, this.workingArea); + this.workingArea.setPaintMode(PaintMode.endPaint); + } + }) + .on('pointerup', (event) => { + + }) + .on('pointerupoutside', (event) => { + + }) + .on('pointerover', (event) => { + this.workingArea.previewSinglePointIcon.filters = null; + this.workingArea.previewSinglePointIcon.zIndex = this.zIndex + 1; + // 设置车辆方向 + this.workingArea.previewSinglePointIcon.angle = this.assetData.Direction; + console.log(this.assetData.Name); + }) + .on('pointerout', (event) => { + this.workingArea.previewSinglePointIcon.filters = [ + new OldFilmFilter() + ]; + }); + } +} +/** + * 管线 + */ +export class Pipeline extends PIXI.Container { + public line: PIXI.Graphics = new PIXI.Graphics(); + constructor(public assetData: any, private workingArea: WorkingAreaComponent) { + super(); + this.name = this.assetData.Id; + this.x = this.assetData.Point.x; + this.y = this.assetData.Point.y; + this.workingArea.backgroundImage.addChild(this); + this.addChild(this.line); + // 画线图标 + this.refresh(); + this.interactive = true; + this.on('mousedown', event => { + console.log(this.assetData); + event.stopPropagation(); + this.workingArea.selection.selectOne(this); + }); + } + /** + * 刷新 + */ + public refresh() { + this.line.clear(); + this.line.lineStyle(5, 0x0000ff, 1); + for (let i = 0, count = this.assetData.MultiPoint.length; i < count; i++) { + const pointA = this.assetData.MultiPoint[i]; + if (i === 0) { + this.line.moveTo(pointA.x, pointA.y); + } else { + this.line.lineTo(pointA.x, pointA.y); + if (i === count - 1) { + const pointB = this.assetData.MultiPoint[i - 1]; + const angle = Math.atan2((pointA.y - pointB.y), (pointA.x - pointB.x)) * (180 / Math.PI) + 90; + this.line.beginFill(0x0000ff); + this.line.drawStar(pointA.x, pointA.y, 3, 5, 0, (Math.PI / 180 * angle)); + } else { + this.line.drawCircle(pointA.x, pointA.y, 5); + } + } + } + this.line.endFill(); + // if (this.assetData.MultiPoint.length >= 2) { + // const pointA = this.assetData.MultiPoint[this.assetData.MultiPoint.length - 2]; + // const pointB = this.assetData.MultiPoint[this.assetData.MultiPoint.length - 1]; + // const angle = Math.atan2((pointB.y - pointA.y), (pointB.x - pointA.x)) * (180 / Math.PI) + 90; + // this.beginFill(0x0000ff); + // this.drawStar(pointB.x, pointB.y, 3, 5, 0, (Math.PI / 180 * angle)); + // this.endFill(); + // } + } +} +/** + * 箭头 + * 创建一个只有2个点组成的箭头 + */ +export class Arrows extends PIXI.Container { + public line: PIXI.Graphics = new PIXI.Graphics(); + public ready = false; + constructor(public assetData: any, private workingArea: WorkingAreaComponent) { + super(); + this.workingArea.backgroundImage.addChild(this); + this.name = this.assetData.Id; + this.addChild(this.line); + this.refresh(); + this.interactive = true; + this.on('mousedown', event => { + if (!this.ready) { return; } + event.stopPropagation(); + this.workingArea.selection.selectOne(this); + }); + } + /** + * 刷新 + */ + public refresh() { + this.line.clear(); + this.line.lineStyle(5, 0xff0000, 1); + this.line.moveTo(this.assetData.pointA.x, this.assetData.pointA.y); + this.line.lineTo(this.assetData.pointB.x, this.assetData.pointB.y); + + const angle = Math.atan2((this.assetData.pointB.y - this.assetData.pointA.y), (this.assetData.pointB.x - this.assetData.pointA.x)) + * (180 / Math.PI) + 90; + + this.line.beginFill(0xff0000); + console.log(Math.PI / 180 / 1.6); + this.line.drawStar(this.assetData.pointB.x, this.assetData.pointB.y, 3, 10, 0, (Math.PI / 180 * angle)); + this.line.endFill(); + } +} + + + +/** + * 选择器 + */ +export class Selection { + constructor(private workingArea: WorkingAreaComponent) {} + public objects: any[] = []; + public isMultiselection = false; + /** + * 返回选择器中是否包含对象 + * @param obj 对象 + */ + public contains(obj: any): boolean { + return this.objects.includes(obj); + } + /** + * 选定对象 + * @param obj 对象 + */ + public select(obj: any) { + if (!this.contains(obj)) { + this.workingArea.emit('select', obj); + this.objects.push(obj); + } + } + /** + * 取消选定对象 + * @param obj 对象 + */ + public deselect(obj: any) { + if (this.contains(obj)) { + this.workingArea.emit('deselect', obj); + const idx = this.objects.findIndex(x => x === obj); + this.objects.splice(idx, 1); + } + } + /** + * 选定或取消选定对象 + * @param obj 对象 + */ + public selectOrDeselect(obj: any) { + if (this.contains(obj)) { + this.deselect(obj); + } else { + this.select(obj); + } + } + /** + * 取消选定所有已选定对象 + */ + public deselectAll() { + this.objects.forEach(item => { + this.workingArea.emit('deselect', item); + }); + this.objects.splice(0, this.objects.length); + } + /** + * 取消选定所有对象后选定一个对象 + * @param obj 对象 + */ + public selectOne(obj: any) { + if (this.isMultiselection) { + this.selectOrDeselect(obj); + } else { + this.deselectAll(); + this.select(obj); + } + } + /** + * 选定对象集合中所有对象 + * @param objects 对象集合 + */ + public selectAll(objects: any[]) { + this.objects.forEach(item => { + this.select(item); + }); + } +} + +/** + * 属性 + */ +export class PropertyInfo { + constructor(instanceData: any) { + this.Tag = instanceData.tag; + this.Order = instanceData.order; + this.Enabled = instanceData.enabled; + this.Visible = instanceData.visible; + this.Required = instanceData.required; + this.RuleName = instanceData.ruleName; + this.RuleValue = instanceData.ruleValue; + this.PhysicalUnit = instanceData.physicalUnit; + this.PropertyName = instanceData.propertyName; + this.PropertyType = instanceData.propertyType; + this.PropertyValue = instanceData.propertyValue; + } + /** + * 标记位,用于扩展 + */ + public Tag: string; + /** + * 属性排序 + */ + public Order: number; + /** + * 是否启用 + */ + public Enabled: boolean; + /** + * 是否可见 + */ + public Visible: boolean; + /** + * 必填 + */ + public Required: boolean; + /** + * 验证规则名称 + */ + public RuleName: string; + /** + * 验证规则值 + */ + public RuleValue: string; + /** + * 物理单位 + */ + public PhysicalUnit: string; + /** + * 属性名称 + */ + public PropertyName: string; + /** + * 属性类型 + */ + public PropertyType: number; + /** + * 属性值 + */ + public PropertyValue: string; +} +/** + * 车辆类型 + */ +export enum Type { + 水源 = 0, + 举高喷射消防车 = 1, + 泡沫消防车 = 2, + 水罐消防车 = 3, + 压缩空气泡沫消防车 = 4 +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/chartstheme/chongqing.js b/src/assets/chartstheme/chongqing.js new file mode 100644 index 0000000..971a9d9 --- /dev/null +++ b/src/assets/chartstheme/chongqing.js @@ -0,0 +1,31 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['exports', 'echarts'], factory); + } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { + // CommonJS + factory(exports, require('echarts')); + } else { + // Browser globals + factory({}, root.echarts); + } +}(this, function (exports, echarts) { + var log = function (msg) { + if (typeof console !== 'undefined') { + console && console.error && console.error(msg); + } + } + if (!echarts) { + log('ECharts is not Loaded'); + return; + } + if (!echarts.registerMap) { + log('ECharts Map is not loaded') + return; + } + + echarts.registerMap('chongqing', + {"features":[{"type":"Feature","properties":{"adcode":500101,"name":"万州区","center":[108.380246,30.807807],"centroid":[108.406819,30.704054],"childrenNum":0,"level":"district","subFeatureIndex":0,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.034778,30.574187],[108.028051,30.587432],[108.033697,30.592424],[108.025252,30.60289],[108.016954,30.629571],[108.023091,30.63617],[108.025645,30.648844],[108.042585,30.662481],[108.0554,30.660027],[108.079558,30.664532],[108.082259,30.677926],[108.074844,30.696304],[108.086678,30.713714],[108.074894,30.723121],[108.047544,30.723684],[108.03517,30.715362],[108.011405,30.709814],[107.959112,30.719262],[107.918653,30.75829],[107.908243,30.762911],[107.905592,30.77601],[107.88492,30.806138],[107.876131,30.813287],[107.896508,30.834932],[107.929504,30.859342],[107.954202,30.872428],[107.95597,30.882983],[107.986953,30.901924],[107.994711,30.908665],[108.000849,30.911915],[108.009392,30.907662],[108.029426,30.884508],[108.0363,30.8701],[108.041112,30.876522],[108.069149,30.888281],[108.071751,30.892695],[108.081817,30.885712],[108.101654,30.878007],[108.090115,30.871545],[108.096646,30.84782],[108.105287,30.841356],[108.109608,30.82931],[108.122866,30.833487],[108.126057,30.840875],[108.131704,30.832001],[108.152179,30.831278],[108.157482,30.834771],[108.167106,30.827182],[108.18218,30.824211],[108.197254,30.833647],[108.200102,30.839188],[108.218417,30.852839],[108.229956,30.856171],[108.225488,30.860908],[108.231184,30.87612],[108.228237,30.881298],[108.244294,30.89113],[108.243803,30.882261],[108.260055,30.872789],[108.268402,30.881659],[108.29202,30.892976],[108.300269,30.901041],[108.346277,30.921222],[108.360861,30.932976],[108.349027,30.939153],[108.339649,30.963135],[108.355214,30.960408],[108.372792,30.969791],[108.395674,30.991641],[108.41497,30.998897],[108.426509,30.998216],[108.440356,31.002545],[108.455626,30.994728],[108.45327,30.988755],[108.454743,30.970232],[108.460537,30.967426],[108.486413,30.977008],[108.496626,30.972839],[108.50409,30.977289],[108.501094,30.98651],[108.506643,30.992604],[108.51666,30.990559],[108.533894,30.996251],[108.531243,30.978051],[108.523632,30.973159],[108.537577,30.958123],[108.552602,30.915405],[108.566448,30.912396],[108.593307,30.920259],[108.608578,30.93807],[108.61884,30.934741],[108.619233,30.926999],[108.628169,30.918253],[108.623013,30.912837],[108.621589,30.888561],[108.625419,30.875358],[108.634798,30.885271],[108.653014,30.89105],[108.665977,30.867972],[108.671968,30.852116],[108.685078,30.845773],[108.685127,30.835976],[108.698482,30.822885],[108.699955,30.811841],[108.715177,30.815094],[108.733393,30.81405],[108.738549,30.808026],[108.740808,30.787259],[108.74724,30.782116],[108.740169,30.775527],[108.749842,30.74555],[108.754998,30.740044],[108.76639,30.74141],[108.762609,30.728106],[108.766586,30.720548],[108.763444,30.713031],[108.789762,30.714277],[108.79261,30.706558],[108.781022,30.697028],[108.779254,30.685125],[108.785883,30.683516],[108.818094,30.693771],[108.823347,30.69168],[108.828699,30.679414],[108.836016,30.678449],[108.872007,30.690112],[108.883546,30.695661],[108.884331,30.687337],[108.896312,30.684039],[108.899946,30.676438],[108.901713,30.646792],[108.871565,30.618103],[108.869896,30.610979],[108.90952,30.581273],[108.894643,30.56702],[108.893121,30.557799],[108.871663,30.532749],[108.854429,30.521913],[108.853005,30.514984],[108.839011,30.50318],[108.806948,30.491414],[108.799239,30.50592],[108.788534,30.51293],[108.77292,30.503502],[108.761529,30.505315],[108.744196,30.494799],[108.723966,30.507572],[108.726176,30.515548],[108.711887,30.523203],[108.715815,30.530373],[108.711592,30.537864],[108.699415,30.544389],[108.700004,30.561786],[108.690479,30.586708],[108.666223,30.5886],[108.654487,30.585017],[108.639904,30.574751],[108.64344,30.562027],[108.649725,30.554215],[108.649332,30.537824],[108.628611,30.525176],[108.620116,30.52288],[108.621737,30.515468],[108.604551,30.510795],[108.611376,30.502173],[108.598561,30.493872],[108.590606,30.494718],[108.591245,30.487787],[108.581719,30.485893],[108.569935,30.470418],[108.564926,30.468564],[108.55707,30.486014],[108.542929,30.491978],[108.528297,30.487505],[108.513124,30.501407],[108.491765,30.501488],[108.479146,30.488956],[108.455086,30.489319],[108.45268,30.495968],[108.440994,30.491011],[108.424054,30.488956],[108.42101,30.497176],[108.427786,30.512567],[108.412368,30.503059],[108.409962,30.517563],[108.399553,30.520504],[108.402253,30.529688],[108.409717,30.532749],[108.410404,30.543261],[108.404315,30.548295],[108.394593,30.536737],[108.378734,30.534884],[108.344657,30.476987],[108.338814,30.470337],[108.33248,30.449336],[108.317062,30.433129],[108.315835,30.425387],[108.298944,30.407562],[108.296538,30.401109],[108.275031,30.405546],[108.261479,30.388605],[108.254261,30.403529],[108.236732,30.409216],[108.223622,30.421274],[108.241937,30.443773],[108.232755,30.45502],[108.230496,30.476705],[108.207811,30.49766],[108.195045,30.514501],[108.184537,30.518167],[108.175552,30.510633],[108.165633,30.524411],[108.171378,30.539314],[108.163374,30.540805],[108.152523,30.535931],[108.153063,30.545879],[108.143587,30.566215],[108.12645,30.564],[108.120067,30.576965],[108.126647,30.577972],[108.127187,30.586104],[108.111621,30.59343],[108.105631,30.591458],[108.103863,30.573382],[108.088593,30.572617],[108.083339,30.579582],[108.072537,30.582159],[108.062667,30.574429],[108.052847,30.572094],[108.034778,30.574187]]]]}},{"type":"Feature","properties":{"adcode":500102,"name":"涪陵区","center":[107.394905,29.703652],"centroid":[107.334026,29.658582],"childrenNum":0,"level":"district","subFeatureIndex":1,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.701575,29.615443],[107.69804,29.605889],[107.687532,29.600481],[107.666958,29.573804],[107.654634,29.562457],[107.651197,29.553304],[107.629003,29.539147],[107.608135,29.532474],[107.607546,29.514652],[107.615009,29.512373],[107.620558,29.483638],[107.613143,29.479526],[107.595958,29.480951],[107.577446,29.462427],[107.574206,29.452533],[107.56139,29.453062],[107.552798,29.447809],[107.546562,29.431845],[107.532666,29.423047],[107.513664,29.461165],[107.478507,29.497151],[107.475905,29.50635],[107.4625,29.502117],[107.463826,29.498617],[107.450519,29.490028],[107.441386,29.491575],[107.431762,29.483475],[107.427491,29.505658],[107.391548,29.530969],[107.380599,29.523197],[107.365868,29.522383],[107.358601,29.51575],[107.348683,29.515547],[107.328993,29.509321],[107.323248,29.497558],[107.313526,29.487912],[107.30567,29.465318],[107.277338,29.440357],[107.262264,29.436162],[107.260938,29.429035],[107.245422,29.424391],[107.240512,29.426795],[107.227598,29.418159],[107.226666,29.406835],[107.237713,29.394817],[107.241691,29.379415],[107.239285,29.364744],[107.225487,29.367801],[107.20732,29.366293],[107.207221,29.385934],[107.214439,29.39775],[107.199561,29.399135],[107.203244,29.411316],[107.185911,29.412945],[107.173096,29.408342],[107.167056,29.420603],[107.16082,29.424432],[107.155272,29.417304],[107.148741,29.419259],[107.134846,29.411438],[107.142947,29.408179],[107.146827,29.396365],[107.134158,29.394613],[107.125124,29.387564],[107.110442,29.391598],[107.109166,29.383856],[107.114812,29.366741],[107.10018,29.361606],[107.083387,29.359813],[107.07229,29.362829],[107.043321,29.378437],[107.052552,29.388705],[107.051619,29.394205],[107.035121,29.391231],[107.026381,29.402802],[107.034581,29.406713],[107.029228,29.410827],[107.025055,29.441782],[107.034482,29.453103],[107.034581,29.467435],[107.015873,29.473338],[107.019997,29.487057],[107.012927,29.487708],[107.00453,29.471058],[106.993925,29.482579],[106.98052,29.488767],[106.964415,29.488685],[106.945952,29.497029],[106.947278,29.510826],[106.953612,29.535811],[106.953268,29.551311],[106.958768,29.582508],[106.966624,29.599546],[106.975315,29.634142],[106.993581,29.679331],[107.002223,29.714468],[107.009195,29.712762],[107.027166,29.717189],[107.041406,29.734407],[107.070032,29.751217],[107.070277,29.758524],[107.086726,29.761813],[107.102635,29.754546],[107.111572,29.76299],[107.153111,29.784827],[107.186992,29.79473],[107.198039,29.809622],[107.212279,29.816276],[107.206583,29.824958],[107.210806,29.840292],[107.229317,29.84374],[107.240512,29.841347],[107.265161,29.847472],[107.270857,29.851447],[107.272379,29.837291],[107.29801,29.839603],[107.299827,29.847472],[107.313084,29.845809],[107.323445,29.852947],[107.337193,29.873062],[107.335818,29.884415],[107.342005,29.892929],[107.360762,29.897227],[107.369354,29.906794],[107.379666,29.899132],[107.377505,29.910523],[107.387129,29.921993],[107.383545,29.926614],[107.415755,29.970577],[107.421156,29.967944],[107.448064,29.999092],[107.453171,30.001441],[107.466968,29.998606],[107.471338,29.989453],[107.487443,29.972076],[107.498197,29.972481],[107.500554,29.960611],[107.515186,29.959436],[107.523779,29.978678],[107.53355,29.968551],[107.546905,29.965675],[107.546807,29.958585],[107.56193,29.946146],[107.571898,29.951049],[107.57946,29.943877],[107.573126,29.933827],[107.579361,29.923939],[107.59473,29.917657],[107.602979,29.897389],[107.598707,29.888632],[107.613094,29.876955],[107.626892,29.874522],[107.616973,29.865884],[107.613585,29.856111],[107.604256,29.852014],[107.595369,29.835222],[107.605238,29.832423],[107.605336,29.808161],[107.622669,29.802562],[107.638627,29.813274],[107.638529,29.772976],[107.64226,29.76303],[107.625075,29.753896],[107.640345,29.740701],[107.632784,29.719016],[107.630427,29.701714],[107.64447,29.687821],[107.6565,29.686156],[107.670101,29.675064],[107.674176,29.663362],[107.684733,29.666532],[107.696616,29.660315],[107.718073,29.65682],[107.713752,29.642555],[107.698482,29.618614],[107.701575,29.615443]]]]}},{"type":"Feature","properties":{"adcode":500103,"name":"渝中区","center":[106.56288,29.556742],"centroid":[106.540387,29.549305],"childrenNum":0,"level":"district","subFeatureIndex":2,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.588199,29.571242],[106.589623,29.556518],[106.583731,29.547812],[106.556185,29.5411],[106.539441,29.540489],[106.532272,29.52869],[106.500995,29.529789],[106.495594,29.546958],[106.482778,29.548097],[106.494022,29.554809],[106.502321,29.557494],[106.530407,29.552369],[106.545382,29.566483],[106.560849,29.567175],[106.572487,29.562619],[106.588199,29.571242]]]]}},{"type":"Feature","properties":{"adcode":500104,"name":"大渡口区","center":[106.48613,29.481002],"centroid":[106.458637,29.417574],"childrenNum":0,"level":"district","subFeatureIndex":3,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.424298,29.426306],[106.430436,29.415512],[106.439372,29.417834],[106.451402,29.414127],[106.457884,29.41983],[106.454545,29.430623],[106.458767,29.448379],[106.451942,29.456401],[106.458915,29.472443],[106.47065,29.475048],[106.462696,29.485266],[106.454888,29.483556],[106.468097,29.498128],[106.480569,29.490273],[106.50291,29.494994],[106.523729,29.485673],[106.521765,29.479974],[106.509538,29.481765],[106.502075,29.47745],[106.498343,29.446913],[106.526528,29.411275],[106.534924,29.392005],[106.528197,29.388338],[106.509735,29.397506],[106.49196,29.39775],[106.469619,29.389153],[106.455036,29.380596],[106.441926,29.358916],[106.435542,29.352965],[106.411876,29.342245],[106.400877,29.340777],[106.39631,29.357286],[106.409568,29.368086],[106.405738,29.380963],[106.398225,29.386016],[106.392726,29.408831],[106.398471,29.413638],[106.393708,29.429361],[106.398422,29.440438],[106.406965,29.439054],[106.410108,29.439176],[106.416786,29.430175],[106.417522,29.420563],[106.423071,29.426591],[106.424298,29.426306]]]]}},{"type":"Feature","properties":{"adcode":500105,"name":"江北区","center":[106.532844,29.575352],"centroid":[106.707032,29.613285],"childrenNum":0,"level":"district","subFeatureIndex":4,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.46191,29.608247],[106.478506,29.609751],[106.482434,29.613329],[106.492009,29.599424],[106.484251,29.589868],[106.497754,29.573113],[106.506543,29.573032],[106.527215,29.587062],[106.549851,29.581531],[106.562175,29.589543],[106.563305,29.606173],[106.579213,29.619061],[106.582798,29.633695],[106.595613,29.638572],[106.602929,29.634386],[106.61162,29.639873],[106.621834,29.635199],[106.648054,29.63719],[106.687237,29.623654],[106.70948,29.631337],[106.712671,29.646945],[106.723915,29.640604],[106.729906,29.646294],[106.73462,29.667263],[106.741297,29.662184],[106.744735,29.670433],[106.749988,29.663606],[106.747926,29.655154],[106.754162,29.651578],[106.782543,29.662428],[106.78323,29.669986],[106.793001,29.678599],[106.806701,29.671123],[106.809401,29.674699],[106.822118,29.67153],[106.819811,29.663647],[106.825703,29.659502],[106.833706,29.6632],[106.850548,29.659908],[106.866359,29.646985],[106.87775,29.659339],[106.893659,29.657064],[106.873086,29.615809],[106.861547,29.602067],[106.85045,29.575431],[106.843527,29.57657],[106.821087,29.591576],[106.801152,29.589055],[106.792461,29.604059],[106.766977,29.610401],[106.748614,29.607718],[106.740512,29.589665],[106.730937,29.583402],[106.709627,29.577627],[106.692343,29.564287],[106.683652,29.562131],[106.672654,29.566321],[106.65645,29.591861],[106.641916,29.586818],[106.633274,29.592023],[106.623307,29.614995],[106.602242,29.615565],[106.589672,29.609344],[106.580392,29.590275],[106.581177,29.578766],[106.588199,29.571242],[106.572487,29.562619],[106.560849,29.567175],[106.545382,29.566483],[106.530407,29.552369],[106.502321,29.557494],[106.494022,29.554809],[106.487688,29.555135],[106.463432,29.581165],[106.451942,29.586452],[106.46191,29.608247]]]]}},{"type":"Feature","properties":{"adcode":500106,"name":"沙坪坝区","center":[106.4542,29.541224],"centroid":[106.368212,29.624503],"childrenNum":0,"level":"district","subFeatureIndex":5,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.305669,29.736641],[106.317797,29.738752],[106.327126,29.728519],[106.32968,29.732702],[106.365327,29.735504],[106.366604,29.746994],[106.380647,29.744233],[106.382758,29.747847],[106.39361,29.740457],[106.40947,29.738833],[106.417768,29.750202],[106.431418,29.749146],[106.442908,29.743624],[106.442073,29.730387],[106.433431,29.711706],[106.426508,29.680021],[106.429061,29.662956],[106.424396,29.65747],[106.448702,29.652187],[106.448603,29.661453],[106.457589,29.668889],[106.469766,29.657714],[106.468293,29.645969],[106.45209,29.632109],[106.453121,29.620321],[106.462843,29.616296],[106.46191,29.608247],[106.451942,29.586452],[106.463432,29.581165],[106.487688,29.555135],[106.494022,29.554809],[106.482778,29.548097],[106.483466,29.539025],[106.460093,29.532108],[106.461615,29.52808],[106.448063,29.509524],[106.44281,29.494139],[106.426999,29.498006],[106.424544,29.493325],[106.407506,29.492918],[106.411237,29.505536],[106.41384,29.540815],[106.403528,29.538903],[106.395083,29.547934],[106.390762,29.54053],[106.379272,29.536584],[106.379763,29.546958],[106.37392,29.546633],[106.356145,29.559772],[106.343526,29.554891],[106.33405,29.544029],[106.312789,29.544883],[106.293639,29.531254],[106.285488,29.532881],[106.264031,29.525354],[106.253425,29.532841],[106.251707,29.559406],[106.260005,29.592633],[106.265602,29.605889],[106.274882,29.612231],[106.282493,29.626744],[106.273017,29.631215],[106.279105,29.637841],[106.287649,29.635849],[106.2794,29.652553],[106.287698,29.663484],[106.284506,29.675268],[106.278712,29.67669],[106.280431,29.703298],[106.285636,29.697896],[106.297076,29.706467],[106.305669,29.736641]]]]}},{"type":"Feature","properties":{"adcode":500107,"name":"九龙坡区","center":[106.480989,29.523492],"centroid":[106.364435,29.428551],"childrenNum":0,"level":"district","subFeatureIndex":6,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.253425,29.532841],[106.264031,29.525354],[106.285488,29.532881],[106.293639,29.531254],[106.312789,29.544883],[106.33405,29.544029],[106.343526,29.554891],[106.356145,29.559772],[106.37392,29.546633],[106.379763,29.546958],[106.379272,29.536584],[106.390762,29.54053],[106.395083,29.547934],[106.403528,29.538903],[106.41384,29.540815],[106.411237,29.505536],[106.407506,29.492918],[106.424544,29.493325],[106.426999,29.498006],[106.44281,29.494139],[106.448063,29.509524],[106.461615,29.52808],[106.460093,29.532108],[106.483466,29.539025],[106.482778,29.548097],[106.495594,29.546958],[106.500995,29.529789],[106.532272,29.52869],[106.534187,29.505454],[106.549851,29.495523],[106.552011,29.48726],[106.542044,29.472972],[106.521765,29.479974],[106.523729,29.485673],[106.50291,29.494994],[106.480569,29.490273],[106.468097,29.498128],[106.454888,29.483556],[106.462696,29.485266],[106.47065,29.475048],[106.458915,29.472443],[106.451942,29.456401],[106.458767,29.448379],[106.454545,29.430623],[106.457884,29.41983],[106.451402,29.414127],[106.439372,29.417834],[106.430436,29.415512],[106.424298,29.426306],[106.424249,29.426795],[106.423955,29.427731],[106.423709,29.427691],[106.423316,29.427202],[106.423071,29.426591],[106.417522,29.420563],[106.416786,29.430175],[106.410108,29.439176],[106.410599,29.440397],[106.408537,29.441375],[106.406965,29.439054],[106.398422,29.440438],[106.393708,29.429361],[106.398471,29.413638],[106.392726,29.408831],[106.398225,29.386016],[106.405738,29.380963],[106.409568,29.368086],[106.39631,29.357286],[106.400877,29.340777],[106.395525,29.339351],[106.385999,29.312401],[106.393217,29.294948],[106.384035,29.283039],[106.3559,29.27688],[106.339844,29.26456],[106.311905,29.254769],[106.298697,29.256483],[106.27994,29.286913],[106.289171,29.320679],[106.276945,29.322269],[106.274539,29.32871],[106.261232,29.335519],[106.267468,29.350234],[106.277829,29.352924],[106.275668,29.363236],[106.282248,29.368167],[106.284359,29.38516],[106.294425,29.384549],[106.295554,29.378763],[106.30891,29.379985],[106.314409,29.388827],[106.322314,29.38732],[106.331005,29.39555],[106.329041,29.413679],[106.317257,29.415227],[106.323002,29.420481],[106.320596,29.427976],[106.307339,29.426835],[106.30724,29.434248],[106.298549,29.440764],[106.285636,29.441986],[106.278565,29.449031],[106.262705,29.451596],[106.26025,29.466051],[106.267026,29.494994],[106.260594,29.494262],[106.261969,29.516524],[106.253278,29.519698],[106.253425,29.532841]]],[[[106.423955,29.427731],[106.424249,29.426795],[106.424298,29.426306],[106.423071,29.426591],[106.423316,29.427202],[106.423709,29.427691],[106.423955,29.427731]]],[[[106.410599,29.440397],[106.410108,29.439176],[106.406965,29.439054],[106.408537,29.441375],[106.410599,29.440397]]]]}},{"type":"Feature","properties":{"adcode":500108,"name":"南岸区","center":[106.560813,29.523992],"centroid":[106.660614,29.535521],"childrenNum":0,"level":"district","subFeatureIndex":7,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.801152,29.589055],[106.787993,29.576326],[106.7712,29.549155],[106.764179,29.530928],[106.738548,29.486731],[106.732115,29.483923],[106.705257,29.482254],[106.703686,29.487993],[106.693276,29.48897],[106.69308,29.483353],[106.683358,29.476473],[106.688808,29.468453],[106.673341,29.458437],[106.65866,29.46772],[106.655321,29.462346],[106.642849,29.469959],[106.627971,29.465847],[106.606808,29.474315],[106.59581,29.463974],[106.586677,29.473094],[106.578772,29.469878],[106.56954,29.485144],[106.552011,29.48726],[106.549851,29.495523],[106.534187,29.505454],[106.532272,29.52869],[106.539441,29.540489],[106.556185,29.5411],[106.583731,29.547812],[106.589623,29.556518],[106.588199,29.571242],[106.581177,29.578766],[106.580392,29.590275],[106.589672,29.609344],[106.602242,29.615565],[106.623307,29.614995],[106.633274,29.592023],[106.641916,29.586818],[106.65645,29.591861],[106.672654,29.566321],[106.683652,29.562131],[106.692343,29.564287],[106.709627,29.577627],[106.730937,29.583402],[106.740512,29.589665],[106.748614,29.607718],[106.766977,29.610401],[106.792461,29.604059],[106.801152,29.589055]]]]}},{"type":"Feature","properties":{"adcode":500109,"name":"北碚区","center":[106.437868,29.82543],"centroid":[106.513996,29.861006],"childrenNum":0,"level":"district","subFeatureIndex":8,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.648447,30.085559],[106.677024,30.063989],[106.678153,30.058121],[106.670739,30.034805],[106.678889,30.026141],[106.676385,30.015087],[106.677465,29.98601],[106.679724,29.97961],[106.674225,29.961948],[106.674274,29.932206],[106.687384,29.935489],[106.678497,29.92864],[106.679822,29.923615],[106.669118,29.912712],[106.678889,29.908212],[106.67506,29.897713],[106.668775,29.900348],[106.658512,29.869534],[106.64987,29.863857],[106.646581,29.849378],[106.634109,29.839481],[106.620262,29.840252],[106.622865,29.831327],[106.612848,29.832626],[106.598461,29.825607],[106.598805,29.816763],[106.587217,29.812665],[106.584909,29.799599],[106.5936,29.79964],[106.593011,29.808932],[106.601653,29.799843],[106.609018,29.799437],[106.592864,29.784705],[106.604746,29.769322],[106.588543,29.76161],[106.589181,29.754992],[106.57175,29.763355],[106.556529,29.754789],[106.5417,29.754871],[106.532076,29.749471],[106.530799,29.758687],[106.54116,29.763112],[106.532469,29.767333],[106.530996,29.775979],[106.515676,29.769688],[106.520144,29.764614],[106.524956,29.742609],[106.536741,29.730306],[106.536741,29.723321],[106.518377,29.71199],[106.512337,29.703461],[106.514743,29.694281],[106.506887,29.685425],[106.496134,29.68969],[106.487197,29.699399],[106.469373,29.697165],[106.457147,29.687415],[106.457589,29.668889],[106.448603,29.661453],[106.448702,29.652187],[106.424396,29.65747],[106.429061,29.662956],[106.426508,29.680021],[106.433431,29.711706],[106.442073,29.730387],[106.442908,29.743624],[106.431418,29.749146],[106.417768,29.750202],[106.40947,29.738833],[106.39361,29.740457],[106.382758,29.747847],[106.380647,29.744233],[106.366604,29.746994],[106.365327,29.735504],[106.32968,29.732702],[106.327126,29.728519],[106.317797,29.738752],[106.305669,29.736641],[106.31598,29.764898],[106.324279,29.774843],[106.334197,29.771311],[106.344214,29.779307],[106.372889,29.814207],[106.351284,29.812422],[106.34225,29.816804],[106.345883,29.836114],[106.337585,29.834532],[106.342446,29.842523],[106.330956,29.848323],[106.336407,29.860247],[106.329385,29.859639],[106.325653,29.872737],[106.314409,29.884861],[106.339598,29.901767],[106.383053,29.92787],[106.390909,29.921304],[106.390958,29.906672],[106.396507,29.898118],[106.409077,29.889443],[106.423611,29.884334],[106.429601,29.892362],[106.423414,29.904564],[106.433235,29.901889],[106.443841,29.906834],[106.455281,29.926776],[106.46191,29.92402],[106.44281,29.883564],[106.452777,29.878212],[106.458522,29.887456],[106.462892,29.88478],[106.452581,29.869128],[106.465347,29.870832],[106.466967,29.882996],[106.477131,29.891875],[106.479046,29.908172],[106.488916,29.908415],[106.501338,29.922115],[106.505659,29.931234],[106.519506,29.927546],[106.526773,29.945822],[106.544941,29.935246],[106.55697,29.961259],[106.568706,29.991154],[106.572192,30.012698],[106.582209,30.022214],[106.596546,30.030432],[106.598265,30.039582],[106.591587,30.047071],[106.629101,30.079448],[106.648447,30.085559]]]]}},{"type":"Feature","properties":{"adcode":500110,"name":"綦江区","center":[106.651417,29.028091],"centroid":[106.722706,28.87864],"childrenNum":0,"level":"district","subFeatureIndex":9,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.057462,28.894785],[107.052552,28.8911],[107.045579,28.874926],[107.058689,28.868947],[107.04062,28.863869],[107.036594,28.88115],[107.016118,28.882501],[107.019114,28.860675],[107.005169,28.859159],[106.997853,28.853507],[106.983368,28.851173],[106.98926,28.829585],[106.980814,28.812951],[106.981355,28.804347],[106.988671,28.790331],[106.987885,28.774675],[106.967803,28.774101],[106.951746,28.766969],[106.950224,28.777626],[106.94227,28.782135],[106.938391,28.792381],[106.923071,28.810042],[106.905345,28.79611],[106.897882,28.80115],[106.886392,28.794716],[106.874215,28.779716],[106.864591,28.77447],[106.862333,28.780577],[106.845393,28.781028],[106.838469,28.765985],[106.833363,28.768772],[106.824033,28.756146],[106.828354,28.737696],[106.852905,28.724452],[106.862529,28.707555],[106.853936,28.706324],[106.854722,28.697095],[106.862136,28.690983],[106.883201,28.69246],[106.871515,28.658817],[106.866359,28.624507],[106.856146,28.622496],[106.829287,28.622742],[106.833264,28.613219],[106.827078,28.598562],[106.807732,28.589447],[106.800514,28.602134],[106.793443,28.606486],[106.792559,28.616256],[106.780333,28.625],[106.773901,28.611946],[106.759023,28.611084],[106.758581,28.588133],[106.766634,28.580166],[106.780922,28.574869],[106.779891,28.56378],[106.765161,28.558153],[106.754358,28.558318],[106.73732,28.553307],[106.728187,28.54201],[106.723965,28.529891],[106.726027,28.518551],[106.744833,28.489867],[106.746649,28.466643],[106.732901,28.46356],[106.725241,28.454433],[106.716207,28.456365],[106.708547,28.450486],[106.693276,28.45653],[106.696713,28.4784],[106.688268,28.484647],[106.678349,28.481359],[106.661066,28.491881],[106.649772,28.47955],[106.631114,28.490237],[106.632734,28.503553],[106.610147,28.497922],[106.593404,28.510169],[106.584958,28.50684],[106.591489,28.499073],[106.589181,28.488387],[106.568018,28.484031],[106.562814,28.497388],[106.56792,28.505278],[106.560309,28.513374],[106.568657,28.523646],[106.584615,28.523276],[106.600622,28.541353],[106.615254,28.549651],[106.616825,28.562795],[106.607054,28.594292],[106.614665,28.609442],[106.629641,28.604762],[106.636466,28.613219],[106.636809,28.623235],[106.62861,28.63444],[106.618887,28.637272],[106.620213,28.645727],[106.641179,28.644167],[106.651393,28.64942],[106.643684,28.664316],[106.635238,28.658448],[106.626891,28.659269],[106.61766,28.667311],[106.614272,28.680276],[106.619182,28.689178],[106.606072,28.685035],[106.598068,28.691886],[106.587315,28.691517],[106.582356,28.702223],[106.576857,28.702387],[106.56026,28.72072],[106.559229,28.731546],[106.563894,28.746184],[106.561831,28.756064],[106.547985,28.769838],[106.53404,28.770904],[106.533795,28.778733],[106.523041,28.78111],[106.521126,28.794266],[106.508753,28.795864],[106.490585,28.806518],[106.476199,28.826759],[106.47448,28.833027],[106.461861,28.831019],[106.455723,28.836427],[106.446443,28.863337],[106.43623,28.870217],[106.415264,28.876236],[106.411826,28.891182],[106.410992,28.922294],[106.402792,28.940956],[106.408733,28.95401],[106.399846,28.962521],[106.405738,28.979622],[106.397587,28.993693],[106.391842,29.022443],[106.385803,29.029476],[106.398765,29.027023],[106.404314,29.035364],[106.419732,29.047834],[106.427834,29.047588],[106.442515,29.039739],[106.44281,29.050573],[106.463874,29.042069],[106.444135,29.038103],[106.454447,29.0177],[106.475413,29.012179],[106.478113,29.024774],[106.489849,29.042969],[106.484497,29.065738],[106.49034,29.083476],[106.501044,29.0771],[106.498,29.071624],[106.504825,29.063285],[106.514547,29.059852],[106.524956,29.044195],[106.526331,29.036141],[106.544646,29.036386],[106.551815,29.024692],[106.549703,29.00535],[106.557118,29.006004],[106.562666,29.016555],[106.57833,29.022443],[106.585204,29.008294],[106.592471,29.005963],[106.608773,29.014756],[106.59414,29.019131],[106.589525,29.030008],[106.585695,29.053148],[106.589672,29.056663],[106.583436,29.071256],[106.584418,29.079634],[106.578084,29.09312],[106.581177,29.110076],[106.574205,29.116777],[106.574451,29.128215],[106.585007,29.131442],[106.588395,29.12654],[106.604599,29.126908],[106.623896,29.160154],[106.642603,29.173874],[106.656205,29.175385],[106.65316,29.16142],[106.665092,29.158439],[106.668234,29.168158],[106.676631,29.176855],[106.680313,29.173548],[106.686746,29.188042],[106.699561,29.177181],[106.712377,29.179182],[106.729464,29.162604],[106.748908,29.176691],[106.757894,29.170159],[106.767665,29.169587],[106.768843,29.161298],[106.776405,29.163666],[106.788386,29.177181],[106.793689,29.169709],[106.800121,29.179958],[106.809941,29.178161],[106.812936,29.165014],[106.821235,29.149577],[106.849468,29.1575],[106.858012,29.149046],[106.868028,29.151456],[106.885263,29.141817],[106.891695,29.131769],[106.905542,29.11596],[106.911483,29.114775],[106.921844,29.100475],[106.910256,29.068844],[106.906131,29.051758],[106.915362,29.054538],[106.920567,29.045749],[106.926361,29.047793],[106.938685,29.041906],[106.950421,29.071787],[106.954545,29.059239],[106.96358,29.058217],[106.975266,29.050532],[106.977034,29.056009],[106.988671,29.043459],[106.981158,29.039861],[106.979832,29.031766],[106.990045,29.021094],[107.003892,29.016023],[107.01715,28.998724],[107.024564,28.995983],[107.02967,28.985717],[107.022256,28.974058],[107.013614,28.969599],[107.015971,28.952087],[107.02913,28.941284],[107.043124,28.945785],[107.051275,28.942143],[107.057315,28.932771],[107.053288,28.919183],[107.04337,28.919879],[107.057462,28.894785]]]]}},{"type":"Feature","properties":{"adcode":500111,"name":"大足区","center":[105.715319,29.700498],"centroid":[105.742721,29.65],"childrenNum":0,"level":"district","subFeatureIndex":10,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.482777,29.679127],[105.481353,29.692737],[105.474234,29.697124],[105.473448,29.707523],[105.482188,29.718082],[105.49029,29.720275],[105.49903,29.709553],[105.520095,29.703583],[105.527951,29.692412],[105.538851,29.69489],[105.52962,29.707604],[105.550341,29.722022],[105.542829,29.726529],[105.549212,29.737615],[105.557952,29.726651],[105.56571,29.724012],[105.564335,29.737818],[105.574941,29.744477],[105.576218,29.757388],[105.572289,29.768713],[105.587511,29.784868],[105.580293,29.790753],[105.588444,29.823133],[105.604107,29.816844],[105.605875,29.827879],[105.617659,29.845728],[105.641473,29.836844],[105.656204,29.844389],[105.661801,29.84082],[105.677759,29.854286],[105.690428,29.852298],[105.695436,29.843497],[105.708939,29.840576],[105.720625,29.849662],[105.719397,29.856557],[105.733146,29.860693],[105.738105,29.856516],[105.738252,29.845646],[105.725339,29.832747],[105.735846,29.819319],[105.72308,29.809825],[105.714684,29.79684],[105.713898,29.789129],[105.721411,29.78779],[105.746354,29.801466],[105.763883,29.793512],[105.77719,29.801831],[105.778368,29.811367],[105.789269,29.794121],[105.808418,29.783569],[105.806945,29.771636],[105.820939,29.773381],[105.822461,29.762827],[105.83076,29.757997],[105.868911,29.756982],[105.878584,29.769525],[105.888012,29.77468],[105.893904,29.785882],[105.888208,29.790347],[105.893806,29.802967],[105.906523,29.795582],[105.904706,29.785598],[105.922334,29.788236],[105.944233,29.775979],[105.957638,29.781662],[105.970601,29.779876],[105.976542,29.784746],[105.991223,29.781174],[105.998588,29.768916],[105.997508,29.756819],[106.001289,29.748375],[106.010913,29.747279],[106.014448,29.752841],[106.028344,29.749552],[106.025987,29.734854],[106.036838,29.726692],[106.031732,29.722184],[106.005659,29.682581],[105.997361,29.6645],[105.982532,29.671936],[105.969815,29.646294],[105.953513,29.630199],[105.946099,29.626988],[105.938243,29.613166],[105.924347,29.595805],[105.890467,29.570429],[105.873969,29.552572],[105.876817,29.541791],[105.868617,29.537316],[105.855016,29.540042],[105.834933,29.527917],[105.825899,29.51396],[105.817895,29.490395],[105.802674,29.437139],[105.770561,29.408302],[105.773507,29.394857],[105.767762,29.379578],[105.747582,29.372487],[105.735159,29.38459],[105.728678,29.384875],[105.741002,29.397628],[105.722835,29.397872],[105.73403,29.417386],[105.727646,29.422844],[105.737663,29.435592],[105.735061,29.445162],[105.724013,29.449967],[105.725486,29.454121],[105.714929,29.464259],[105.687236,29.446506],[105.662194,29.460025],[105.657431,29.468168],[105.658119,29.481317],[105.65311,29.485022],[105.662636,29.499431],[105.648397,29.494139],[105.641179,29.505861],[105.639509,29.489052],[105.646236,29.486121],[105.637152,29.473623],[105.629738,29.478386],[105.631506,29.485917],[105.620556,29.494017],[105.619967,29.504803],[105.607642,29.508262],[105.595711,29.504152],[105.593059,29.517744],[105.583239,29.515588],[105.590015,29.524011],[105.59522,29.539432],[105.592175,29.549928],[105.599983,29.553019],[105.602241,29.569941],[105.594483,29.575553],[105.590899,29.590397],[105.580047,29.591617],[105.561045,29.588892],[105.549703,29.572096],[105.542534,29.57413],[105.542681,29.586412],[105.536642,29.59121],[105.517738,29.586493],[105.50561,29.609344],[105.509243,29.637962],[105.496673,29.648652],[105.487688,29.663159],[105.490683,29.675186],[105.482777,29.679127]]]]}},{"type":"Feature","properties":{"adcode":500112,"name":"渝北区","center":[106.512851,29.601451],"centroid":[106.746924,29.810209],"childrenNum":0,"level":"district","subFeatureIndex":11,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.893659,29.657064],[106.87775,29.659339],[106.866359,29.646985],[106.850548,29.659908],[106.833706,29.6632],[106.825703,29.659502],[106.819811,29.663647],[106.822118,29.67153],[106.809401,29.674699],[106.806701,29.671123],[106.793001,29.678599],[106.78323,29.669986],[106.782543,29.662428],[106.754162,29.651578],[106.747926,29.655154],[106.749988,29.663606],[106.744735,29.670433],[106.741297,29.662184],[106.73462,29.667263],[106.729906,29.646294],[106.723915,29.640604],[106.712671,29.646945],[106.70948,29.631337],[106.687237,29.623654],[106.648054,29.63719],[106.621834,29.635199],[106.61162,29.639873],[106.602929,29.634386],[106.595613,29.638572],[106.582798,29.633695],[106.579213,29.619061],[106.563305,29.606173],[106.562175,29.589543],[106.549851,29.581531],[106.527215,29.587062],[106.506543,29.573032],[106.497754,29.573113],[106.484251,29.589868],[106.492009,29.599424],[106.482434,29.613329],[106.478506,29.609751],[106.46191,29.608247],[106.462843,29.616296],[106.453121,29.620321],[106.45209,29.632109],[106.468293,29.645969],[106.469766,29.657714],[106.457589,29.668889],[106.457147,29.687415],[106.469373,29.697165],[106.487197,29.699399],[106.496134,29.68969],[106.506887,29.685425],[106.514743,29.694281],[106.512337,29.703461],[106.518377,29.71199],[106.536741,29.723321],[106.536741,29.730306],[106.524956,29.742609],[106.520144,29.764614],[106.515676,29.769688],[106.530996,29.775979],[106.532469,29.767333],[106.54116,29.763112],[106.530799,29.758687],[106.532076,29.749471],[106.5417,29.754871],[106.556529,29.754789],[106.57175,29.763355],[106.589181,29.754992],[106.588543,29.76161],[106.604746,29.769322],[106.592864,29.784705],[106.609018,29.799437],[106.601653,29.799843],[106.593011,29.808932],[106.5936,29.79964],[106.584909,29.799599],[106.587217,29.812665],[106.598805,29.816763],[106.598461,29.825607],[106.612848,29.832626],[106.622865,29.831327],[106.620262,29.840252],[106.634109,29.839481],[106.646581,29.849378],[106.64987,29.863857],[106.658512,29.869534],[106.668775,29.900348],[106.67506,29.897713],[106.678889,29.908212],[106.669118,29.912712],[106.679822,29.923615],[106.678497,29.92864],[106.687384,29.935489],[106.674274,29.932206],[106.674225,29.961948],[106.679724,29.97961],[106.677465,29.98601],[106.676385,30.015087],[106.678889,30.026141],[106.670739,30.034805],[106.678153,30.058121],[106.677024,30.063989],[106.648447,30.085559],[106.656352,30.086165],[106.668382,30.101742],[106.673881,30.12213],[106.688857,30.124031],[106.689643,30.117802],[106.703195,30.118126],[106.698726,30.098708],[106.698825,30.076535],[106.72583,30.057068],[106.726076,30.034319],[106.73241,30.026829],[106.742132,30.025938],[106.759416,30.018893],[106.764228,30.024602],[106.768598,30.017274],[106.785587,30.017233],[106.797764,30.023145],[106.799974,30.030554],[106.812495,30.028975],[106.830171,30.033955],[106.836996,30.049742],[106.842054,30.049135],[106.861449,30.028165],[106.856195,30.013872],[106.866506,30.012293],[106.864444,29.984916],[106.868323,29.978962],[106.877947,29.98601],[106.88708,29.981392],[106.889928,29.987954],[106.896654,29.978597],[106.909077,29.971873],[106.931467,29.975397],[106.935248,29.964054],[106.942515,29.964824],[106.946934,29.953683],[106.965691,29.951981],[106.970012,29.938326],[106.98489,29.934314],[106.974529,29.916603],[106.962058,29.901929],[106.952679,29.882145],[106.945461,29.875454],[106.944528,29.855908],[106.937114,29.851893],[106.936574,29.842483],[106.942859,29.839765],[106.944234,29.812949],[106.939913,29.804347],[106.952237,29.792214],[106.945167,29.784178],[106.952532,29.784259],[106.958522,29.769485],[106.96466,29.774518],[106.972222,29.763924],[106.945609,29.724743],[106.942564,29.705857],[106.930534,29.689],[106.913742,29.684043],[106.906082,29.678152],[106.893659,29.657064]]]]}},{"type":"Feature","properties":{"adcode":500113,"name":"巴南区","center":[106.519423,29.381919],"centroid":[106.751731,29.371851],"childrenNum":0,"level":"district","subFeatureIndex":12,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.552011,29.48726],[106.56954,29.485144],[106.578772,29.469878],[106.586677,29.473094],[106.59581,29.463974],[106.606808,29.474315],[106.627971,29.465847],[106.642849,29.469959],[106.655321,29.462346],[106.65866,29.46772],[106.673341,29.458437],[106.688808,29.468453],[106.683358,29.476473],[106.69308,29.483353],[106.693276,29.48897],[106.703686,29.487993],[106.705257,29.482254],[106.732115,29.483923],[106.738548,29.486731],[106.764179,29.530928],[106.7712,29.549155],[106.787993,29.576326],[106.801152,29.589055],[106.821087,29.591576],[106.843527,29.57657],[106.85045,29.575431],[106.861547,29.602067],[106.873086,29.615809],[106.893659,29.657064],[106.906082,29.678152],[106.913742,29.684043],[106.930534,29.689],[106.942564,29.705857],[106.945609,29.724743],[106.972222,29.763924],[106.988131,29.769322],[106.993483,29.75824],[106.988818,29.748781],[106.990144,29.738062],[106.998638,29.732539],[107.002223,29.714468],[106.993581,29.679331],[106.975315,29.634142],[106.966624,29.599546],[106.958768,29.582508],[106.953268,29.551311],[106.953612,29.535811],[106.947278,29.510826],[106.945952,29.497029],[106.935297,29.464463],[106.933039,29.448542],[106.936574,29.439339],[106.932253,29.399746],[106.922531,29.403046],[106.919978,29.329893],[106.922433,29.310322],[106.920616,29.302411],[106.92312,29.280673],[106.933039,29.279653],[106.936132,29.256931],[106.954692,29.252199],[106.95754,29.228981],[106.968392,29.215228],[106.961812,29.202738],[106.95263,29.197104],[106.955527,29.190695],[106.945069,29.183142],[106.919045,29.180366],[106.911385,29.197472],[106.895574,29.190491],[106.896409,29.180039],[106.907751,29.179672],[106.909175,29.160562],[106.899355,29.155621],[106.891744,29.14149],[106.891695,29.131769],[106.885263,29.141817],[106.868028,29.151456],[106.858012,29.149046],[106.849468,29.1575],[106.821235,29.149577],[106.812936,29.165014],[106.809941,29.178161],[106.800121,29.179958],[106.793689,29.169709],[106.788386,29.177181],[106.776405,29.163666],[106.768843,29.161298],[106.767665,29.169587],[106.757894,29.170159],[106.748908,29.176691],[106.729464,29.162604],[106.712377,29.179182],[106.699561,29.177181],[106.686746,29.188042],[106.680313,29.173548],[106.676631,29.176855],[106.668234,29.168158],[106.665092,29.158439],[106.65316,29.16142],[106.656205,29.175385],[106.642603,29.173874],[106.623896,29.160154],[106.604599,29.126908],[106.588395,29.12654],[106.585007,29.131442],[106.574451,29.128215],[106.560997,29.133239],[106.550047,29.145493],[106.549998,29.153498],[106.562372,29.161379],[106.545972,29.183265],[106.541896,29.192369],[106.547788,29.212534],[106.539343,29.213717],[106.535906,29.221962],[106.521225,29.224614],[106.515774,29.232042],[106.519653,29.251791],[106.514056,29.254688],[106.511208,29.268069],[106.505021,29.268966],[106.508655,29.278674],[106.486363,29.294336],[106.473645,29.335722],[106.474431,29.35696],[106.478163,29.36022],[106.460241,29.360872],[106.454496,29.35427],[106.440404,29.350153],[106.435542,29.352965],[106.441926,29.358916],[106.455036,29.380596],[106.469619,29.389153],[106.49196,29.39775],[106.509735,29.397506],[106.528197,29.388338],[106.534924,29.392005],[106.526528,29.411275],[106.498343,29.446913],[106.502075,29.47745],[106.509538,29.481765],[106.521765,29.479974],[106.542044,29.472972],[106.552011,29.48726]]]]}},{"type":"Feature","properties":{"adcode":500114,"name":"黔江区","center":[108.782577,29.527548],"centroid":[108.708597,29.435532],"childrenNum":0,"level":"district","subFeatureIndex":13,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.55869,29.13953],[108.570671,29.152313],[108.574403,29.164115],[108.556775,29.184857],[108.548919,29.205064],[108.555597,29.218738],[108.569247,29.224941],[108.568314,29.236245],[108.575778,29.252362],[108.571948,29.265703],[108.583192,29.278063],[108.584272,29.285812],[108.573568,29.302411],[108.560409,29.306081],[108.549459,29.315378],[108.549705,29.328303],[108.561538,29.352598],[108.550196,29.371754],[108.547201,29.381697],[108.552995,29.390539],[108.555843,29.412701],[108.576367,29.41706],[108.59257,29.442963],[108.581228,29.464911],[108.585549,29.477328],[108.561686,29.491657],[108.539688,29.491697],[108.50954,29.50285],[108.501242,29.49996],[108.494711,29.515099],[108.506054,29.536868],[108.515334,29.543948],[108.536251,29.540001],[108.547643,29.547406],[108.548379,29.557575],[108.534532,29.572177],[108.534974,29.588851],[108.516709,29.602148],[108.512633,29.614467],[108.507036,29.611093],[108.499965,29.622069],[108.487199,29.624102],[108.489997,29.642515],[108.504139,29.666288],[108.503549,29.67669],[108.52373,29.683109],[108.526676,29.696759],[108.506446,29.708172],[108.515285,29.71861],[108.504188,29.729413],[108.51666,29.735666],[108.520244,29.730347],[108.547004,29.742569],[108.548526,29.749512],[108.540081,29.756779],[108.522503,29.763761],[108.534434,29.787506],[108.557463,29.819035],[108.56581,29.820861],[108.579902,29.831206],[108.577349,29.844673],[108.588151,29.84808],[108.587955,29.85388],[108.601409,29.8656],[108.60843,29.862964],[108.622915,29.867304],[108.632686,29.86487],[108.633226,29.855908],[108.662491,29.852582],[108.657728,29.84808],[108.666124,29.842726],[108.670347,29.819076],[108.656942,29.816682],[108.670986,29.811813],[108.680658,29.800167],[108.678449,29.777887],[108.681788,29.770459],[108.67732,29.761447],[108.677565,29.748537],[108.686649,29.740051],[108.681051,29.721413],[108.69313,29.704476],[108.684783,29.693509],[108.691166,29.68969],[108.710365,29.699196],[108.718221,29.691924],[108.710905,29.679168],[108.73359,29.671489],[108.740611,29.665719],[108.743017,29.655926],[108.752641,29.649017],[108.763002,29.653366],[108.765899,29.661046],[108.774541,29.65174],[108.783281,29.653772],[108.773018,29.661534],[108.775964,29.67539],[108.765113,29.682256],[108.758141,29.678721],[108.752592,29.689365],[108.760645,29.693549],[108.786276,29.691518],[108.784655,29.677177],[108.794132,29.671205],[108.79752,29.660071],[108.792266,29.647351],[108.780089,29.645522],[108.785637,29.633857],[108.804394,29.640564],[108.813625,29.63154],[108.819812,29.632435],[108.816473,29.644018],[108.828061,29.671286],[108.835377,29.668442],[108.827325,29.654382],[108.83302,29.651293],[108.84451,29.658364],[108.855754,29.636377],[108.869699,29.643002],[108.879618,29.639222],[108.887916,29.628573],[108.885854,29.621134],[108.868324,29.598001],[108.885903,29.588445],[108.897589,29.596496],[108.901271,29.604791],[108.909177,29.593284],[108.899995,29.584866],[108.913056,29.574455],[108.902106,29.563026],[108.886934,29.553101],[108.878439,29.53935],[108.886983,29.530562],[108.888652,29.507041],[108.885952,29.498047],[108.869846,29.485917],[108.866557,29.471058],[108.873726,29.462753],[108.873971,29.449397],[108.886541,29.440601],[108.89808,29.441945],[108.90957,29.436814],[108.921256,29.436895],[108.932009,29.431682],[108.943646,29.410746],[108.93412,29.399461],[108.931027,29.369634],[108.916591,29.334622],[108.919734,29.326305],[108.908784,29.312972],[108.903432,29.296416],[108.915462,29.293561],[108.919783,29.283732],[108.93903,29.274065],[108.954252,29.272066],[108.937607,29.244283],[108.925871,29.23347],[108.925135,29.222615],[108.915265,29.215513],[108.896607,29.209024],[108.882416,29.1791],[108.854625,29.133484],[108.855656,29.122659],[108.847702,29.105214],[108.833266,29.109995],[108.832087,29.117267],[108.812054,29.122047],[108.803756,29.129195],[108.784852,29.123272],[108.775768,29.124008],[108.774295,29.110485],[108.749008,29.10881],[108.747584,29.092384],[108.726912,29.080492],[108.700397,29.094427],[108.698777,29.101619],[108.686698,29.109341],[108.681984,29.105623],[108.668678,29.108156],[108.66416,29.103744],[108.669856,29.095939],[108.662835,29.090382],[108.667205,29.078776],[108.661313,29.071624],[108.646533,29.081841],[108.628906,29.072891],[108.622179,29.073422],[108.625665,29.08699],[108.614568,29.095408],[108.615206,29.109709],[108.60789,29.109014],[108.599396,29.086908],[108.587169,29.095081],[108.598266,29.105705],[108.570769,29.124416],[108.55869,29.13953]]]]}},{"type":"Feature","properties":{"adcode":500115,"name":"长寿区","center":[107.074854,29.833671],"centroid":[107.140012,29.954647],"childrenNum":0,"level":"district","subFeatureIndex":14,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.053779,30.043751],[107.054221,30.040837],[107.0554,30.040553],[107.058395,30.043063],[107.075286,30.051118],[107.084517,30.063868],[107.073911,30.080986],[107.080147,30.094177],[107.093797,30.095391],[107.103077,30.090131],[107.111032,30.104251],[107.106563,30.113838],[107.13131,30.121524],[107.136466,30.134426],[107.16848,30.160306],[107.187335,30.181248],[107.221068,30.213743],[107.228335,30.223805],[107.256568,30.205903],[107.277044,30.181086],[107.288484,30.171303],[107.269482,30.145992],[107.274098,30.135841],[107.291381,30.136327],[107.295555,30.122454],[107.286766,30.107892],[107.29089,30.097939],[107.28328,30.091021],[107.271741,30.09446],[107.269089,30.081148],[107.259072,30.075887],[107.247534,30.07528],[107.26521,30.062006],[107.266045,30.055045],[107.279204,30.04873],[107.27724,30.043144],[107.294867,30.044359],[107.307879,30.035493],[107.31166,30.02023],[107.304688,30.0161],[107.31112,30.008203],[107.294818,30.002696],[107.29418,29.997917],[107.307094,29.992328],[107.325556,29.973007],[107.335573,29.97398],[107.347995,29.980501],[107.362824,29.979853],[107.374068,29.973372],[107.436329,30.033833],[107.46029,30.01533],[107.451501,30.008203],[107.453171,30.001441],[107.448064,29.999092],[107.421156,29.967944],[107.415755,29.970577],[107.383545,29.926614],[107.387129,29.921993],[107.377505,29.910523],[107.379666,29.899132],[107.369354,29.906794],[107.360762,29.897227],[107.342005,29.892929],[107.335818,29.884415],[107.337193,29.873062],[107.323445,29.852947],[107.313084,29.845809],[107.299827,29.847472],[107.29801,29.839603],[107.272379,29.837291],[107.270857,29.851447],[107.265161,29.847472],[107.240512,29.841347],[107.229317,29.84374],[107.210806,29.840292],[107.206583,29.824958],[107.212279,29.816276],[107.198039,29.809622],[107.186992,29.79473],[107.153111,29.784827],[107.111572,29.76299],[107.102635,29.754546],[107.086726,29.761813],[107.070277,29.758524],[107.070032,29.751217],[107.041406,29.734407],[107.027166,29.717189],[107.009195,29.712762],[107.002223,29.714468],[106.998638,29.732539],[106.990144,29.738062],[106.988818,29.748781],[106.993483,29.75824],[106.988131,29.769322],[106.972222,29.763924],[106.96466,29.774518],[106.958522,29.769485],[106.952532,29.784259],[106.945167,29.784178],[106.952237,29.792214],[106.939913,29.804347],[106.944234,29.812949],[106.942859,29.839765],[106.936574,29.842483],[106.937114,29.851893],[106.944528,29.855908],[106.945461,29.875454],[106.952679,29.882145],[106.962058,29.901929],[106.974529,29.916603],[106.98489,29.934314],[106.970012,29.938326],[106.965691,29.951981],[106.946934,29.953683],[106.942515,29.964824],[106.935248,29.964054],[106.931467,29.975397],[106.909077,29.971873],[106.896654,29.978597],[106.889928,29.987954],[106.88708,29.981392],[106.877947,29.98601],[106.868323,29.978962],[106.864444,29.984916],[106.866506,30.012293],[106.856195,30.013872],[106.861449,30.028165],[106.88433,30.0344],[106.913594,30.025574],[106.914871,30.033955],[106.941877,30.042739],[106.948604,30.040149],[106.956755,30.06059],[106.954889,30.066094],[106.966477,30.079894],[106.985332,30.084061],[106.998295,30.059456],[107.005316,30.052495],[107.014351,30.051604],[107.020636,30.036829],[107.042682,30.035007],[107.037821,30.047273],[107.042486,30.055085],[107.050588,30.053426],[107.053779,30.043751]]],[[[107.058395,30.043063],[107.0554,30.040553],[107.054221,30.040837],[107.053779,30.043751],[107.058395,30.043063]]]]}},{"type":"Feature","properties":{"adcode":500116,"name":"江津区","center":[106.253156,29.283387],"centroid":[106.26321,29.029607],"childrenNum":0,"level":"district","subFeatureIndex":15,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.461861,28.831019],[106.46844,28.826472],[106.453514,28.816967],[106.451402,28.808116],[106.46029,28.804961],[106.462794,28.797216],[106.451648,28.79279],[106.454201,28.776068],[106.462057,28.76123],[106.493826,28.73946],[106.499325,28.717398],[106.510324,28.715183],[106.515774,28.688194],[106.529719,28.673137],[106.520144,28.6621],[106.502762,28.661321],[106.506641,28.635343],[106.501338,28.628735],[106.501093,28.617898],[106.494955,28.615148],[106.494464,28.599999],[106.513319,28.577046],[106.524711,28.577826],[106.508802,28.564889],[106.498785,28.585874],[106.473842,28.598973],[106.466967,28.586408],[106.478899,28.574992],[106.488867,28.557496],[106.504726,28.54468],[106.501191,28.534533],[106.493384,28.538313],[106.483858,28.530589],[106.471632,28.532603],[106.466918,28.541846],[106.453072,28.544721],[106.454054,28.549774],[106.439471,28.559427],[106.43402,28.556675],[106.423218,28.562671],[106.412956,28.563123],[106.399109,28.571173],[106.385704,28.560823],[106.389829,28.553266],[106.373576,28.537656],[106.378487,28.533835],[106.374313,28.525618],[106.363903,28.526892],[106.349811,28.540121],[106.34225,28.532603],[106.338371,28.546858],[106.332037,28.553224],[106.344803,28.562014],[106.339304,28.566368],[106.345196,28.573021],[106.34662,28.58378],[106.340187,28.59889],[106.332184,28.603366],[106.324524,28.616749],[106.329778,28.63403],[106.310776,28.639981],[106.304049,28.649872],[106.311168,28.660048],[106.321087,28.665465],[106.30616,28.675763],[106.307191,28.687907],[106.303509,28.709113],[106.287698,28.732366],[106.273213,28.739788],[106.267665,28.779348],[106.252394,28.785823],[106.24439,28.814631],[106.254358,28.819179],[106.246698,28.826472],[106.260201,28.833641],[106.265062,28.846708],[106.255586,28.857398],[106.253229,28.865753],[106.242181,28.86821],[106.228089,28.881764],[106.225585,28.890568],[106.215371,28.891714],[106.206926,28.904528],[106.191606,28.908663],[106.173684,28.92082],[106.162538,28.908908],[106.149183,28.901949],[106.134354,28.90506],[106.10126,28.898961],[106.087708,28.904201],[106.085645,28.9103],[106.070522,28.919797],[106.062813,28.918201],[106.051913,28.906862],[106.042534,28.910587],[106.03949,28.918651],[106.042338,28.929538],[106.04003,28.940465],[106.047346,28.943575],[106.043811,28.954133],[106.036102,28.955729],[106.02417,28.949714],[106.017443,28.952905],[106.001535,28.973608],[105.984103,28.979008],[105.974627,28.973567],[105.985969,28.970131],[105.988424,28.964198],[105.9761,28.959166],[105.971877,28.965957],[105.961566,28.960107],[105.95808,28.952496],[105.934511,28.933876],[105.920321,28.930643],[105.909764,28.920452],[105.915607,28.907476],[105.909567,28.900189],[105.889338,28.909523],[105.888061,28.926837],[105.875049,28.933958],[105.852708,28.927369],[105.844262,28.93093],[105.830514,28.944271],[105.824769,28.953396],[105.826782,28.964403],[105.851677,28.976185],[105.858011,28.98678],[105.857323,29.012997],[105.864492,29.026001],[105.882905,29.029722],[105.885459,29.037204],[105.897145,29.049632],[105.919928,29.056132],[105.922285,29.078858],[105.913888,29.08086],[105.909518,29.093855],[105.917473,29.098881],[105.918848,29.109464],[105.93186,29.115102],[105.937899,29.127561],[105.942858,29.128338],[105.958276,29.147943],[105.954299,29.151251],[105.965347,29.15603],[105.96736,29.177671],[105.982287,29.193512],[105.996673,29.213595],[106.004677,29.215513],[106.016363,29.242529],[106.033156,29.253953],[106.031486,29.261868],[106.036789,29.284915],[106.038164,29.313339],[106.043418,29.32549],[106.072928,29.321005],[106.086382,29.30706],[106.084663,29.300331],[106.096104,29.291359],[106.110442,29.294907],[106.113289,29.284018],[106.120065,29.278878],[106.136416,29.294826],[106.152276,29.293684],[106.156106,29.301962],[106.17663,29.308446],[106.195731,29.327447],[106.206042,29.334826],[106.223621,29.353984],[106.245569,29.40989],[106.248613,29.429238],[106.262705,29.451596],[106.278565,29.449031],[106.285636,29.441986],[106.298549,29.440764],[106.30724,29.434248],[106.307339,29.426835],[106.320596,29.427976],[106.323002,29.420481],[106.317257,29.415227],[106.329041,29.413679],[106.331005,29.39555],[106.322314,29.38732],[106.314409,29.388827],[106.30891,29.379985],[106.295554,29.378763],[106.294425,29.384549],[106.284359,29.38516],[106.282248,29.368167],[106.275668,29.363236],[106.277829,29.352924],[106.267468,29.350234],[106.261232,29.335519],[106.274539,29.32871],[106.276945,29.322269],[106.289171,29.320679],[106.27994,29.286913],[106.298697,29.256483],[106.311905,29.254769],[106.339844,29.26456],[106.3559,29.27688],[106.384035,29.283039],[106.393217,29.294948],[106.385999,29.312401],[106.395525,29.339351],[106.400877,29.340777],[106.411876,29.342245],[106.435542,29.352965],[106.440404,29.350153],[106.454496,29.35427],[106.460241,29.360872],[106.478163,29.36022],[106.474431,29.35696],[106.473645,29.335722],[106.486363,29.294336],[106.508655,29.278674],[106.505021,29.268966],[106.511208,29.268069],[106.514056,29.254688],[106.519653,29.251791],[106.515774,29.232042],[106.521225,29.224614],[106.535906,29.221962],[106.539343,29.213717],[106.547788,29.212534],[106.541896,29.192369],[106.545972,29.183265],[106.562372,29.161379],[106.549998,29.153498],[106.550047,29.145493],[106.560997,29.133239],[106.574451,29.128215],[106.574205,29.116777],[106.581177,29.110076],[106.578084,29.09312],[106.584418,29.079634],[106.583436,29.071256],[106.589672,29.056663],[106.585695,29.053148],[106.589525,29.030008],[106.59414,29.019131],[106.608773,29.014756],[106.592471,29.005963],[106.585204,29.008294],[106.57833,29.022443],[106.562666,29.016555],[106.557118,29.006004],[106.549703,29.00535],[106.551815,29.024692],[106.544646,29.036386],[106.526331,29.036141],[106.524956,29.044195],[106.514547,29.059852],[106.504825,29.063285],[106.498,29.071624],[106.501044,29.0771],[106.49034,29.083476],[106.484497,29.065738],[106.489849,29.042969],[106.478113,29.024774],[106.475413,29.012179],[106.454447,29.0177],[106.444135,29.038103],[106.463874,29.042069],[106.44281,29.050573],[106.442515,29.039739],[106.427834,29.047588],[106.419732,29.047834],[106.404314,29.035364],[106.398765,29.027023],[106.385803,29.029476],[106.391842,29.022443],[106.397587,28.993693],[106.405738,28.979622],[106.399846,28.962521],[106.408733,28.95401],[106.402792,28.940956],[106.410992,28.922294],[106.411826,28.891182],[106.415264,28.876236],[106.43623,28.870217],[106.446443,28.863337],[106.455723,28.836427],[106.461861,28.831019]]]]}},{"type":"Feature","properties":{"adcode":500117,"name":"合川区","center":[106.265554,29.990993],"centroid":[106.311538,30.112474],"childrenNum":0,"level":"district","subFeatureIndex":16,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.648447,30.085559],[106.629101,30.079448],[106.591587,30.047071],[106.598265,30.039582],[106.596546,30.030432],[106.582209,30.022214],[106.572192,30.012698],[106.568706,29.991154],[106.55697,29.961259],[106.544941,29.935246],[106.526773,29.945822],[106.519506,29.927546],[106.505659,29.931234],[106.501338,29.922115],[106.488916,29.908415],[106.479046,29.908172],[106.477131,29.891875],[106.466967,29.882996],[106.465347,29.870832],[106.452581,29.869128],[106.462892,29.88478],[106.458522,29.887456],[106.452777,29.878212],[106.44281,29.883564],[106.46191,29.92402],[106.455281,29.926776],[106.443841,29.906834],[106.433235,29.901889],[106.423414,29.904564],[106.429601,29.892362],[106.423611,29.884334],[106.409077,29.889443],[106.396507,29.898118],[106.390958,29.906672],[106.390909,29.921304],[106.383053,29.92787],[106.339598,29.901767],[106.314409,29.884861],[106.26791,29.84443],[106.263393,29.852258],[106.271593,29.86779],[106.265995,29.873913],[106.276699,29.873021],[106.281658,29.894673],[106.27012,29.887334],[106.266977,29.895686],[106.258139,29.89747],[106.245078,29.907685],[106.245127,29.908253],[106.244783,29.908374],[106.244341,29.908253],[106.242377,29.910239],[106.2384,29.912549],[106.239873,29.919116],[106.221018,29.920413],[106.219005,29.929451],[106.208645,29.929126],[106.200346,29.936826],[106.197744,29.931153],[106.165877,29.922399],[106.164944,29.921507],[106.160574,29.919359],[106.146924,29.92787],[106.130426,29.921993],[106.129198,29.929491],[106.134845,29.938771],[106.124141,29.936461],[106.1127,29.9519],[106.112946,29.960813],[106.119378,29.966607],[106.123306,29.980056],[106.118052,29.986982],[106.123061,29.998687],[106.098215,30.002331],[106.075727,30.001643],[106.049163,29.997026],[106.036495,29.997674],[106.028,29.991883],[106.027362,30.001522],[106.046511,30.007474],[106.047788,30.01363],[106.020439,30.028084],[105.998785,30.026627],[105.991076,30.033671],[105.981501,30.052414],[105.981207,30.061359],[105.98592,30.070262],[105.980814,30.083131],[105.989357,30.093125],[105.985184,30.101742],[105.999472,30.113757],[105.994513,30.120108],[105.998343,30.129289],[105.978801,30.143606],[105.976247,30.153109],[105.987639,30.164026],[105.974381,30.175224],[105.973743,30.188079],[105.991174,30.177246],[106.00669,30.187958],[106.019948,30.201417],[106.006052,30.213622],[106.004039,30.224775],[105.995102,30.231845],[105.981059,30.233583],[105.985724,30.248692],[105.995397,30.256892],[106.006248,30.260002],[106.013466,30.268282],[106.009489,30.275754],[105.998588,30.280681],[105.992107,30.277369],[105.98101,30.280156],[105.983367,30.289766],[105.974872,30.289322],[105.967507,30.308379],[105.975216,30.30632],[105.988277,30.320006],[105.981305,30.325051],[105.980372,30.342084],[105.989063,30.352697],[105.97826,30.373477],[105.992009,30.36916],[106.002222,30.376906],[106.01381,30.372347],[106.030897,30.374244],[106.033745,30.361817],[106.061046,30.342003],[106.070768,30.341196],[106.073517,30.334133],[106.079311,30.344344],[106.088591,30.345958],[106.091047,30.336837],[106.088346,30.323154],[106.098019,30.323558],[106.106072,30.310761],[106.114812,30.317341],[106.122864,30.313708],[106.122324,30.306805],[106.131801,30.301799],[106.134403,30.308622],[106.124828,30.317907],[106.124092,30.324769],[106.132685,30.323679],[106.137153,30.315686],[106.149428,30.309469],[106.156499,30.313668],[106.169069,30.3041],[106.179822,30.278661],[106.178447,30.256892],[106.170542,30.250591],[106.178251,30.248611],[106.180362,30.232855],[106.201083,30.228411],[106.192539,30.2154],[106.201819,30.213137],[106.204471,30.205701],[106.212524,30.203115],[106.232213,30.212531],[106.240315,30.200164],[106.232704,30.186139],[106.240315,30.18533],[106.241788,30.177731],[106.249742,30.189736],[106.245913,30.196527],[106.254358,30.198426],[106.264424,30.193536],[106.27174,30.204004],[106.26192,30.213784],[106.279793,30.207924],[106.278467,30.195718],[106.28431,30.201983],[106.296684,30.205135],[106.292706,30.220209],[106.305816,30.225704],[106.300563,30.238552],[106.309794,30.2373],[106.318681,30.229138],[106.335032,30.226391],[106.336799,30.237906],[106.343968,30.237219],[106.34932,30.245258],[106.359632,30.241218],[106.372545,30.248167],[106.390222,30.243683],[106.383102,30.254711],[106.397391,30.249662],[106.401319,30.242673],[106.410795,30.24336],[106.416786,30.253418],[106.427834,30.253782],[106.429405,30.261174],[106.422138,30.262466],[106.407997,30.276117],[106.41821,30.278783],[106.434708,30.277046],[106.428619,30.291543],[106.43569,30.295177],[106.441877,30.289484],[106.444774,30.295702],[106.436475,30.303575],[106.441042,30.308945],[106.4515,30.308137],[106.44826,30.299618],[106.458964,30.302283],[106.472123,30.300022],[106.476149,30.306966],[106.481845,30.298407],[106.498,30.296025],[106.499865,30.288918],[106.509391,30.289363],[106.521372,30.300305],[106.544842,30.296752],[106.547052,30.310358],[106.56026,30.315162],[106.571603,30.30624],[106.586382,30.302969],[106.590507,30.294248],[106.611669,30.292431],[106.623061,30.281609],[106.627578,30.265899],[106.634845,30.265697],[106.642653,30.249863],[106.633029,30.24643],[106.621686,30.236492],[106.609804,30.23532],[106.611473,30.228047],[106.619133,30.229664],[106.632734,30.216208],[106.624436,30.211318],[106.626989,30.19778],[106.633618,30.199679],[106.63185,30.186543],[106.646973,30.189494],[106.639265,30.180156],[106.649527,30.176922],[106.653995,30.169726],[106.662195,30.170171],[106.665779,30.158972],[106.677613,30.157395],[106.67501,30.147165],[106.673881,30.12213],[106.668382,30.101742],[106.656352,30.086165],[106.648447,30.085559]]],[[[106.244783,29.908374],[106.245127,29.908253],[106.245078,29.907685],[106.244341,29.908253],[106.244783,29.908374]]]]}},{"type":"Feature","properties":{"adcode":500118,"name":"永川区","center":[105.894714,29.348748],"centroid":[105.872859,29.290183],"childrenNum":0,"level":"district","subFeatureIndex":17,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.66514,29.276594],[105.655664,29.284426],[105.645794,29.286506],[105.637251,29.298251],[105.635974,29.320638],[105.645352,29.319252],[105.653405,29.33397],[105.649575,29.340247],[105.653209,29.349052],[105.663078,29.346647],[105.675501,29.355574],[105.691655,29.357652],[105.696172,29.364622],[105.709283,29.368616],[105.709086,29.375625],[105.716893,29.372813],[105.728678,29.384875],[105.735159,29.38459],[105.747582,29.372487],[105.767762,29.379578],[105.773507,29.394857],[105.770561,29.408302],[105.802674,29.437139],[105.817895,29.490395],[105.825899,29.51396],[105.834933,29.527917],[105.855016,29.540042],[105.868617,29.537316],[105.876817,29.541791],[105.873969,29.552572],[105.890467,29.570429],[105.906572,29.562741],[105.903626,29.552531],[105.910746,29.539065],[105.921303,29.537438],[105.938341,29.543744],[105.935984,29.549968],[105.951156,29.548463],[105.956116,29.540734],[105.967802,29.53695],[105.975363,29.54228],[105.981992,29.533369],[105.988523,29.542483],[105.995446,29.541303],[105.995446,29.525801],[106.010127,29.520512],[106.018769,29.527388],[106.038803,29.529179],[106.071553,29.536014],[106.078526,29.545209],[106.089132,29.546388],[106.085989,29.530562],[106.076709,29.505536],[106.078035,29.491168],[106.076218,29.470366],[106.071799,29.461491],[106.073272,29.448868],[106.063648,29.418974],[106.062666,29.396161],[106.067822,29.390946],[106.065612,29.375788],[106.048377,29.353251],[106.049998,29.341878],[106.043418,29.32549],[106.038164,29.313339],[106.036789,29.284915],[106.031486,29.261868],[106.033156,29.253953],[106.016363,29.242529],[106.004677,29.215513],[105.996673,29.213595],[105.982287,29.193512],[105.96736,29.177671],[105.965347,29.15603],[105.954299,29.151251],[105.958276,29.147943],[105.942858,29.128338],[105.937899,29.127561],[105.93186,29.115102],[105.918848,29.109464],[105.917473,29.098881],[105.909518,29.093855],[105.913888,29.08086],[105.922285,29.078858],[105.919928,29.056132],[105.897145,29.049632],[105.885459,29.037204],[105.882905,29.029722],[105.864492,29.026001],[105.857323,29.012997],[105.858011,28.98678],[105.851677,28.976185],[105.826782,28.964403],[105.824769,28.953396],[105.830514,28.944271],[105.810579,28.940874],[105.797567,28.935923],[105.792706,28.943453],[105.796339,28.949632],[105.803852,28.947586],[105.80886,28.956547],[105.801348,28.958184],[105.788778,28.977617],[105.779105,28.979949],[105.76187,28.992998],[105.76624,29.013365],[105.754063,29.02412],[105.747631,29.037899],[105.741788,29.039494],[105.757795,29.069008],[105.745028,29.075465],[105.740855,29.088625],[105.729905,29.098759],[105.729267,29.107748],[105.735208,29.122414],[105.752099,29.129767],[105.742868,29.137569],[105.733195,29.130993],[105.728825,29.134424],[105.729463,29.152558],[105.719594,29.172159],[105.705796,29.174732],[105.70452,29.202411],[105.711983,29.218901],[105.705845,29.223757],[105.70889,29.238],[105.693963,29.267579],[105.69519,29.287362],[105.715911,29.29087],[105.70506,29.29923],[105.689838,29.29193],[105.678054,29.273494],[105.66514,29.276594]]]]}},{"type":"Feature","properties":{"adcode":500119,"name":"南川区","center":[107.098153,29.156646],"centroid":[107.171436,29.135469],"childrenNum":0,"level":"district","subFeatureIndex":18,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.401565,29.184694],[107.401516,29.175957],[107.412318,29.161379],[107.408095,29.150271],[107.408439,29.138345],[107.4215,29.135813],[107.427589,29.127357],[107.412957,29.095735],[107.392285,29.091281],[107.374412,29.097574],[107.369747,29.091608],[107.379862,29.05744],[107.390714,29.059075],[107.395182,29.039657],[107.381041,29.029926],[107.378536,29.021912],[107.364542,29.010543],[107.370435,28.993897],[107.396949,28.993325],[107.404413,28.981872],[107.405542,28.972258],[107.412957,28.960148],[107.421549,28.954542],[107.438784,28.955278],[107.441043,28.94378],[107.433579,28.933754],[107.422875,28.928269],[107.41443,28.913248],[107.415657,28.88979],[107.406131,28.89155],[107.391941,28.868497],[107.395378,28.86088],[107.383447,28.848551],[107.367243,28.844988],[107.359878,28.849985],[107.331988,28.841178],[107.345147,28.829585],[107.325409,28.809591],[107.304639,28.806764],[107.277142,28.799183],[107.261429,28.792708],[107.252395,28.780577],[107.253573,28.766805],[107.248417,28.761804],[107.219202,28.772707],[107.21876,28.788733],[107.213408,28.795003],[107.210609,28.814795],[107.216354,28.828151],[107.226371,28.836795],[107.195142,28.838065],[107.19691,28.847405],[107.206534,28.868005],[107.194013,28.876605],[107.198432,28.878407],[107.193571,28.888766],[107.184095,28.879922],[107.178644,28.883361],[107.166565,28.880659],[107.155861,28.882993],[107.146827,28.876236],[107.141965,28.887742],[107.096694,28.890076],[107.08707,28.872264],[107.072683,28.866613],[107.059819,28.868456],[107.063354,28.877055],[107.07234,28.879308],[107.066546,28.895358],[107.057462,28.894785],[107.04337,28.919879],[107.053288,28.919183],[107.057315,28.932771],[107.051275,28.942143],[107.043124,28.945785],[107.02913,28.941284],[107.015971,28.952087],[107.013614,28.969599],[107.022256,28.974058],[107.02967,28.985717],[107.024564,28.995983],[107.01715,28.998724],[107.003892,29.016023],[106.990045,29.021094],[106.979832,29.031766],[106.981158,29.039861],[106.988671,29.043459],[106.977034,29.056009],[106.975266,29.050532],[106.96358,29.058217],[106.954545,29.059239],[106.950421,29.071787],[106.938685,29.041906],[106.926361,29.047793],[106.920567,29.045749],[106.915362,29.054538],[106.906131,29.051758],[106.910256,29.068844],[106.921844,29.100475],[106.911483,29.114775],[106.905542,29.11596],[106.891695,29.131769],[106.891744,29.14149],[106.899355,29.155621],[106.909175,29.160562],[106.907751,29.179672],[106.896409,29.180039],[106.895574,29.190491],[106.911385,29.197472],[106.919045,29.180366],[106.945069,29.183142],[106.955527,29.190695],[106.95263,29.197104],[106.961812,29.202738],[106.968392,29.215228],[106.95754,29.228981],[106.954692,29.252199],[106.936132,29.256931],[106.933039,29.279653],[106.92312,29.280673],[106.920616,29.302411],[106.922433,29.310322],[106.919978,29.329893],[106.922531,29.403046],[106.932253,29.399746],[106.936574,29.439339],[106.933039,29.448542],[106.935297,29.464463],[106.945952,29.497029],[106.964415,29.488685],[106.98052,29.488767],[106.993925,29.482579],[107.00453,29.471058],[107.012927,29.487708],[107.019997,29.487057],[107.015873,29.473338],[107.034581,29.467435],[107.034482,29.453103],[107.025055,29.441782],[107.029228,29.410827],[107.034581,29.406713],[107.026381,29.402802],[107.035121,29.391231],[107.051619,29.394205],[107.052552,29.388705],[107.043321,29.378437],[107.07229,29.362829],[107.083387,29.359813],[107.10018,29.361606],[107.114812,29.366741],[107.109166,29.383856],[107.110442,29.391598],[107.125124,29.387564],[107.134158,29.394613],[107.146827,29.396365],[107.142947,29.408179],[107.134846,29.411438],[107.148741,29.419259],[107.155272,29.417304],[107.16082,29.424432],[107.167056,29.420603],[107.173096,29.408342],[107.185911,29.412945],[107.203244,29.411316],[107.199561,29.399135],[107.214439,29.39775],[107.207221,29.385934],[107.20732,29.366293],[107.225487,29.367801],[107.239285,29.364744],[107.241691,29.379415],[107.256176,29.38463],[107.263393,29.383571],[107.272428,29.37371],[107.272428,29.358386],[107.293444,29.349704],[107.298599,29.352069],[107.309893,29.345098],[107.318387,29.347789],[107.323395,29.339147],[107.347308,29.342571],[107.350156,29.346892],[107.367047,29.341756],[107.392039,29.326754],[107.38271,29.308609],[107.373332,29.298578],[107.379764,29.299516],[107.391597,29.289279],[107.388553,29.281081],[107.404069,29.28259],[107.421942,29.274636],[107.416541,29.264234],[107.401025,29.248853],[107.399355,29.235714],[107.401909,29.218248],[107.395378,29.205881],[107.401565,29.184694]]]]}},{"type":"Feature","properties":{"adcode":500120,"name":"璧山区","center":[106.231126,29.593581],"centroid":[106.191948,29.561371],"childrenNum":0,"level":"district","subFeatureIndex":19,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[106.253425,29.532841],[106.253278,29.519698],[106.261969,29.516524],[106.260594,29.494262],[106.267026,29.494994],[106.26025,29.466051],[106.262705,29.451596],[106.248613,29.429238],[106.245569,29.40989],[106.223621,29.353984],[106.206042,29.334826],[106.195731,29.327447],[106.17663,29.308446],[106.156106,29.301962],[106.152276,29.293684],[106.136416,29.294826],[106.120065,29.278878],[106.113289,29.284018],[106.110442,29.294907],[106.096104,29.291359],[106.084663,29.300331],[106.086382,29.30706],[106.072928,29.321005],[106.043418,29.32549],[106.049998,29.341878],[106.048377,29.353251],[106.065612,29.375788],[106.067822,29.390946],[106.062666,29.396161],[106.063648,29.418974],[106.073272,29.448868],[106.071799,29.461491],[106.076218,29.470366],[106.078035,29.491168],[106.076709,29.505536],[106.085989,29.530562],[106.089132,29.546388],[106.087217,29.552287],[106.096251,29.559691],[106.104844,29.576041],[106.112307,29.601457],[106.117561,29.610076],[106.113928,29.615687],[106.122717,29.638816],[106.144813,29.662956],[106.156695,29.667304],[106.165828,29.675755],[106.163226,29.681321],[106.169314,29.689893],[106.156155,29.70935],[106.163422,29.721088],[106.169069,29.752557],[106.160771,29.759702],[106.180559,29.771555],[106.194552,29.785395],[106.211689,29.791564],[106.233048,29.805686],[106.26791,29.84443],[106.314409,29.884861],[106.325653,29.872737],[106.329385,29.859639],[106.336407,29.860247],[106.330956,29.848323],[106.342446,29.842523],[106.337585,29.834532],[106.345883,29.836114],[106.34225,29.816804],[106.351284,29.812422],[106.372889,29.814207],[106.344214,29.779307],[106.334197,29.771311],[106.324279,29.774843],[106.31598,29.764898],[106.305669,29.736641],[106.297076,29.706467],[106.285636,29.697896],[106.280431,29.703298],[106.278712,29.67669],[106.284506,29.675268],[106.287698,29.663484],[106.2794,29.652553],[106.287649,29.635849],[106.279105,29.637841],[106.273017,29.631215],[106.282493,29.626744],[106.274882,29.612231],[106.265602,29.605889],[106.260005,29.592633],[106.251707,29.559406],[106.253425,29.532841]]]]}},{"type":"Feature","properties":{"adcode":500151,"name":"铜梁区","center":[106.054948,29.839944],"centroid":[106.0332,29.81109],"childrenNum":0,"level":"district","subFeatureIndex":20,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.981207,30.061359],[105.981501,30.052414],[105.991076,30.033671],[105.998785,30.026627],[106.020439,30.028084],[106.047788,30.01363],[106.046511,30.007474],[106.027362,30.001522],[106.028,29.991883],[106.036495,29.997674],[106.049163,29.997026],[106.075727,30.001643],[106.098215,30.002331],[106.123061,29.998687],[106.118052,29.986982],[106.123306,29.980056],[106.119378,29.966607],[106.112946,29.960813],[106.1127,29.9519],[106.124141,29.936461],[106.134845,29.938771],[106.129198,29.929491],[106.130426,29.921993],[106.146924,29.92787],[106.160574,29.919359],[106.164944,29.921507],[106.165141,29.921426],[106.165435,29.921102],[106.165533,29.92094],[106.165926,29.920696],[106.166074,29.920777],[106.166123,29.921142],[106.165877,29.922399],[106.197744,29.931153],[106.200346,29.936826],[106.208645,29.929126],[106.219005,29.929451],[106.221018,29.920413],[106.239873,29.919116],[106.2384,29.912549],[106.238302,29.912144],[106.2384,29.91182],[106.23894,29.911212],[106.239529,29.911131],[106.239873,29.91109],[106.240119,29.910928],[106.239971,29.909631],[106.240119,29.909347],[106.240757,29.909428],[106.24115,29.90955],[106.242377,29.910239],[106.244341,29.908253],[106.245078,29.907685],[106.258139,29.89747],[106.266977,29.895686],[106.27012,29.887334],[106.281658,29.894673],[106.276699,29.873021],[106.265995,29.873913],[106.271593,29.86779],[106.263393,29.852258],[106.26791,29.84443],[106.233048,29.805686],[106.211689,29.791564],[106.194552,29.785395],[106.180559,29.771555],[106.160771,29.759702],[106.169069,29.752557],[106.163422,29.721088],[106.156155,29.70935],[106.169314,29.689893],[106.163226,29.681321],[106.165828,29.675755],[106.156695,29.667304],[106.144813,29.662956],[106.122717,29.638816],[106.113928,29.615687],[106.117561,29.610076],[106.112307,29.601457],[106.104844,29.576041],[106.096251,29.559691],[106.087217,29.552287],[106.089132,29.546388],[106.078526,29.545209],[106.071553,29.536014],[106.038803,29.529179],[106.018769,29.527388],[106.010127,29.520512],[105.995446,29.525801],[105.995446,29.541303],[105.988523,29.542483],[105.981992,29.533369],[105.975363,29.54228],[105.967802,29.53695],[105.956116,29.540734],[105.951156,29.548463],[105.935984,29.549968],[105.938341,29.543744],[105.921303,29.537438],[105.910746,29.539065],[105.903626,29.552531],[105.906572,29.562741],[105.890467,29.570429],[105.924347,29.595805],[105.938243,29.613166],[105.946099,29.626988],[105.953513,29.630199],[105.969815,29.646294],[105.982532,29.671936],[105.997361,29.6645],[106.005659,29.682581],[106.031732,29.722184],[106.036838,29.726692],[106.025987,29.734854],[106.028344,29.749552],[106.014448,29.752841],[106.010913,29.747279],[106.001289,29.748375],[105.997508,29.756819],[105.998588,29.768916],[105.991223,29.781174],[105.976542,29.784746],[105.970601,29.779876],[105.957638,29.781662],[105.944233,29.775979],[105.922334,29.788236],[105.904706,29.785598],[105.906523,29.795582],[105.893806,29.802967],[105.888208,29.790347],[105.893904,29.785882],[105.888012,29.77468],[105.878584,29.769525],[105.868911,29.756982],[105.83076,29.757997],[105.822461,29.762827],[105.820939,29.773381],[105.806945,29.771636],[105.808418,29.783569],[105.789269,29.794121],[105.778368,29.811367],[105.790987,29.827879],[105.807387,29.833031],[105.809253,29.844714],[105.818926,29.855583],[105.824769,29.881861],[105.837241,29.878293],[105.846177,29.895402],[105.860319,29.896902],[105.870434,29.89078],[105.875638,29.897551],[105.88266,29.890659],[105.90888,29.879955],[105.910058,29.868561],[105.923169,29.865763],[105.930681,29.872373],[105.926606,29.877928],[105.933185,29.88778],[105.945657,29.893051],[105.95042,29.908172],[105.931712,29.927546],[105.941385,29.935691],[105.934953,29.954493],[105.925034,29.956478],[105.924347,29.963123],[105.91104,29.961624],[105.907849,29.98038],[105.915656,29.993179],[105.904019,29.995649],[105.886784,30.006462],[105.870335,30.00549],[105.866702,30.009864],[105.875491,30.027356],[105.869648,30.032983],[105.872103,30.045411],[105.883691,30.049256],[105.891498,30.044156],[105.900336,30.045775],[105.901711,30.057392],[105.895475,30.065123],[105.904608,30.073662],[105.897783,30.079003],[105.907554,30.091951],[105.917571,30.093934],[105.933333,30.088027],[105.934511,30.080703],[105.943006,30.074511],[105.939274,30.063342],[105.949438,30.060832],[105.959209,30.071234],[105.95862,30.076778],[105.973105,30.072771],[105.981207,30.061359]]],[[[106.2384,29.912549],[106.242377,29.910239],[106.24115,29.90955],[106.240757,29.909428],[106.240119,29.909347],[106.239971,29.909631],[106.240119,29.910928],[106.239873,29.91109],[106.239529,29.911131],[106.23894,29.911212],[106.2384,29.91182],[106.238302,29.912144],[106.2384,29.912549]]],[[[106.165877,29.922399],[106.166123,29.921142],[106.166074,29.920777],[106.165926,29.920696],[106.165533,29.92094],[106.165435,29.921102],[106.165141,29.921426],[106.164944,29.921507],[106.165877,29.922399]]]]}},{"type":"Feature","properties":{"adcode":500152,"name":"潼南区","center":[105.841818,30.189554],"centroid":[105.814632,30.143351],"childrenNum":0,"level":"district","subFeatureIndex":21,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.733146,29.860693],[105.735257,29.871967],[105.73403,29.893578],[105.717433,29.893578],[105.711639,29.899497],[105.715027,29.911171],[105.702507,29.923939],[105.714978,29.930747],[105.721116,29.950563],[105.731034,29.95664],[105.723326,29.976005],[105.732508,29.998768],[105.74876,30.005895],[105.75367,30.01861],[105.743359,30.027113],[105.742033,30.03359],[105.728039,30.027194],[105.721312,30.042051],[105.705354,30.035776],[105.699413,30.043144],[105.68699,30.038975],[105.683455,30.052859],[105.676728,30.056057],[105.674617,30.071274],[105.660476,30.066296],[105.649231,30.074592],[105.639264,30.076413],[105.637496,30.093691],[105.640835,30.101338],[105.619721,30.104129],[105.606759,30.109712],[105.598068,30.109227],[105.583141,30.12395],[105.582699,30.12755],[105.580244,30.129694],[105.574155,30.130422],[105.569982,30.134304],[105.593207,30.144738],[105.59684,30.157112],[105.582159,30.162974],[105.571406,30.161559],[105.558197,30.151977],[105.556086,30.144779],[105.549605,30.151734],[105.536151,30.152907],[105.536445,30.164834],[105.546904,30.180722],[105.567036,30.183188],[105.5799,30.173446],[105.595122,30.183673],[105.607888,30.178297],[105.618052,30.185694],[105.632832,30.183754],[105.642406,30.186422],[105.645549,30.206873],[105.662342,30.210066],[105.655418,30.220815],[105.636269,30.219724],[105.618739,30.23536],[105.62036,30.248934],[105.610589,30.255882],[105.620163,30.261779],[105.622668,30.273856],[105.645745,30.273371],[105.660672,30.264324],[105.667203,30.265697],[105.67334,30.252772],[105.701475,30.257862],[105.723866,30.254751],[105.720969,30.263193],[105.735159,30.261537],[105.730102,30.265818],[105.734963,30.277046],[105.722982,30.275552],[105.711787,30.282255],[105.711001,30.294208],[105.718612,30.307733],[105.711738,30.315848],[105.714831,30.322791],[105.729905,30.316897],[105.741493,30.319158],[105.735012,30.336676],[105.74984,30.339703],[105.756224,30.347088],[105.751854,30.357136],[105.770021,30.37618],[105.760299,30.384571],[105.770708,30.404054],[105.782787,30.403086],[105.795456,30.418491],[105.792313,30.427282],[105.802183,30.427927],[105.820154,30.437524],[105.831103,30.429016],[105.836946,30.41583],[105.846128,30.411152],[105.839107,30.399698],[105.846227,30.392437],[105.862332,30.406353],[105.873772,30.408692],[105.869108,30.401513],[105.877602,30.386669],[105.886784,30.392639],[105.876522,30.399536],[105.905296,30.406433],[105.905983,30.397036],[105.899011,30.396027],[105.901515,30.386346],[105.917031,30.395987],[105.925575,30.385338],[105.939568,30.380537],[105.940894,30.372267],[105.970257,30.378883],[105.97826,30.373477],[105.989063,30.352697],[105.980372,30.342084],[105.981305,30.325051],[105.988277,30.320006],[105.975216,30.30632],[105.967507,30.308379],[105.974872,30.289322],[105.983367,30.289766],[105.98101,30.280156],[105.992107,30.277369],[105.998588,30.280681],[106.009489,30.275754],[106.013466,30.268282],[106.006248,30.260002],[105.995397,30.256892],[105.985724,30.248692],[105.981059,30.233583],[105.995102,30.231845],[106.004039,30.224775],[106.006052,30.213622],[106.019948,30.201417],[106.00669,30.187958],[105.991174,30.177246],[105.973743,30.188079],[105.974381,30.175224],[105.987639,30.164026],[105.976247,30.153109],[105.978801,30.143606],[105.998343,30.129289],[105.994513,30.120108],[105.999472,30.113757],[105.985184,30.101742],[105.989357,30.093125],[105.980814,30.083131],[105.98592,30.070262],[105.981207,30.061359],[105.973105,30.072771],[105.95862,30.076778],[105.959209,30.071234],[105.949438,30.060832],[105.939274,30.063342],[105.943006,30.074511],[105.934511,30.080703],[105.933333,30.088027],[105.917571,30.093934],[105.907554,30.091951],[105.897783,30.079003],[105.904608,30.073662],[105.895475,30.065123],[105.901711,30.057392],[105.900336,30.045775],[105.891498,30.044156],[105.883691,30.049256],[105.872103,30.045411],[105.869648,30.032983],[105.875491,30.027356],[105.866702,30.009864],[105.870335,30.00549],[105.886784,30.006462],[105.904019,29.995649],[105.915656,29.993179],[105.907849,29.98038],[105.91104,29.961624],[105.924347,29.963123],[105.925034,29.956478],[105.934953,29.954493],[105.941385,29.935691],[105.931712,29.927546],[105.95042,29.908172],[105.945657,29.893051],[105.933185,29.88778],[105.926606,29.877928],[105.930681,29.872373],[105.923169,29.865763],[105.910058,29.868561],[105.90888,29.879955],[105.88266,29.890659],[105.875638,29.897551],[105.870434,29.89078],[105.860319,29.896902],[105.846177,29.895402],[105.837241,29.878293],[105.824769,29.881861],[105.818926,29.855583],[105.809253,29.844714],[105.807387,29.833031],[105.790987,29.827879],[105.778368,29.811367],[105.77719,29.801831],[105.763883,29.793512],[105.746354,29.801466],[105.721411,29.78779],[105.713898,29.789129],[105.714684,29.79684],[105.72308,29.809825],[105.735846,29.819319],[105.725339,29.832747],[105.738252,29.845646],[105.738105,29.856516],[105.733146,29.860693]]],[[[105.583141,30.12395],[105.574155,30.130422],[105.580244,30.129694],[105.582699,30.12755],[105.583141,30.12395]]]]}},{"type":"Feature","properties":{"adcode":500153,"name":"荣昌区","center":[105.594061,29.403627],"centroid":[105.506727,29.464817],"childrenNum":0,"level":"district","subFeatureIndex":22,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[105.66514,29.276594],[105.664698,29.269048],[105.671622,29.260889],[105.666515,29.252933],[105.647611,29.25326],[105.63946,29.261582],[105.644076,29.270965],[105.6318,29.280388],[105.619771,29.27174],[105.614173,29.258359],[105.607986,29.255748],[105.609508,29.27276],[105.596005,29.274473],[105.583288,29.270353],[105.558295,29.27847],[105.55584,29.273576],[105.537869,29.272882],[105.518425,29.264438],[105.50939,29.274677],[105.509145,29.285404],[105.488866,29.278185],[105.459307,29.290136],[105.465395,29.292379],[105.466427,29.305592],[105.474283,29.309996],[105.466083,29.313421],[105.466476,29.321576],[105.454691,29.329077],[105.44929,29.317498],[105.436573,29.319496],[105.420075,29.316968],[105.422972,29.326509],[105.418602,29.352313],[105.434805,29.363114],[105.438586,29.370816],[105.432203,29.379659],[105.443693,29.386382],[105.443103,29.399094],[105.431466,29.408179],[105.427293,29.418852],[105.417031,29.423373],[105.413544,29.418567],[105.39631,29.422884],[105.373281,29.420766],[105.371759,29.423862],[105.388797,29.431886],[105.387471,29.438361],[105.399207,29.438972],[105.389534,29.452818],[105.373821,29.458274],[105.362037,29.454691],[105.360417,29.444225],[105.345588,29.448501],[105.334147,29.441416],[105.324622,29.450008],[105.336111,29.455546],[105.338026,29.461857],[105.331299,29.47175],[105.321234,29.475984],[105.323247,29.495157],[105.318877,29.512413],[105.304686,29.531254],[105.294326,29.53398],[105.289759,29.552613],[105.298647,29.572503],[105.317649,29.578156],[105.311315,29.593365],[105.320644,29.601782],[105.320988,29.60971],[105.329826,29.604384],[105.325653,29.595927],[105.335522,29.595195],[105.341611,29.60292],[105.346766,29.620199],[105.354377,29.626703],[105.365965,29.627516],[105.369648,29.621053],[105.380794,29.628248],[105.377553,29.643287],[105.393167,29.650724],[105.383887,29.669823],[105.389681,29.676487],[105.400532,29.67157],[105.420615,29.688309],[105.436377,29.676974],[105.475658,29.674699],[105.482777,29.679127],[105.490683,29.675186],[105.487688,29.663159],[105.496673,29.648652],[105.509243,29.637962],[105.50561,29.609344],[105.517738,29.586493],[105.536642,29.59121],[105.542681,29.586412],[105.542534,29.57413],[105.549703,29.572096],[105.561045,29.588892],[105.580047,29.591617],[105.590899,29.590397],[105.594483,29.575553],[105.602241,29.569941],[105.599983,29.553019],[105.592175,29.549928],[105.59522,29.539432],[105.590015,29.524011],[105.583239,29.515588],[105.593059,29.517744],[105.595711,29.504152],[105.607642,29.508262],[105.619967,29.504803],[105.620556,29.494017],[105.631506,29.485917],[105.629738,29.478386],[105.637152,29.473623],[105.646236,29.486121],[105.639509,29.489052],[105.641179,29.505861],[105.648397,29.494139],[105.662636,29.499431],[105.65311,29.485022],[105.658119,29.481317],[105.657431,29.468168],[105.662194,29.460025],[105.687236,29.446506],[105.714929,29.464259],[105.725486,29.454121],[105.724013,29.449967],[105.735061,29.445162],[105.737663,29.435592],[105.727646,29.422844],[105.73403,29.417386],[105.722835,29.397872],[105.741002,29.397628],[105.728678,29.384875],[105.716893,29.372813],[105.709086,29.375625],[105.709283,29.368616],[105.696172,29.364622],[105.691655,29.357652],[105.675501,29.355574],[105.663078,29.346647],[105.653209,29.349052],[105.649575,29.340247],[105.653405,29.33397],[105.645352,29.319252],[105.635974,29.320638],[105.637251,29.298251],[105.645794,29.286506],[105.655664,29.284426],[105.66514,29.276594]]]]}},{"type":"Feature","properties":{"adcode":500154,"name":"开州区","center":[108.413317,31.167735],"centroid":[108.382659,31.271013],"childrenNum":0,"level":"district","subFeatureIndex":23,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.41497,30.998897],[108.395674,30.991641],[108.372792,30.969791],[108.355214,30.960408],[108.339649,30.963135],[108.349027,30.939153],[108.360861,30.932976],[108.346277,30.921222],[108.300269,30.901041],[108.29202,30.892976],[108.268402,30.881659],[108.260055,30.872789],[108.243803,30.882261],[108.244294,30.89113],[108.228237,30.881298],[108.231184,30.87612],[108.225488,30.860908],[108.229956,30.856171],[108.218417,30.852839],[108.200102,30.839188],[108.197254,30.833647],[108.18218,30.824211],[108.167106,30.827182],[108.157482,30.834771],[108.152179,30.831278],[108.131704,30.832001],[108.126057,30.840875],[108.122866,30.833487],[108.109608,30.82931],[108.105287,30.841356],[108.096646,30.84782],[108.090115,30.871545],[108.101654,30.878007],[108.081817,30.885712],[108.071751,30.892695],[108.069149,30.888281],[108.041112,30.876522],[108.0363,30.8701],[108.029426,30.884508],[108.009392,30.907662],[108.000849,30.911915],[107.994711,30.908665],[107.982435,30.913239],[107.971535,30.911794],[107.957345,30.919858],[107.948261,30.919056],[107.938735,30.940035],[107.936329,30.952749],[107.937409,30.968669],[107.943547,30.989437],[107.971535,30.982421],[107.983123,30.984225],[107.995889,31.004308],[108.003795,31.025389],[108.011062,31.023666],[108.033599,31.036128],[108.043321,31.035407],[108.053289,31.040736],[108.059869,31.053196],[108.050245,31.059966],[108.028984,31.061728],[108.024712,31.089244],[108.01386,31.098735],[108.009294,31.108785],[108.014744,31.115271],[108.025743,31.116351],[108.035318,31.128962],[108.0363,31.139929],[108.045629,31.145893],[108.056628,31.145652],[108.055253,31.156658],[108.069443,31.169383],[108.070278,31.177785],[108.085696,31.188107],[108.089919,31.201867],[108.080737,31.218945],[108.071113,31.218345],[108.076268,31.231822],[108.040081,31.218625],[108.027903,31.221984],[108.031635,31.23682],[108.021422,31.245736],[108.040866,31.253611],[108.059967,31.254971],[108.066399,31.261766],[108.080589,31.261446],[108.092374,31.265764],[108.094485,31.275036],[108.111916,31.286586],[108.146533,31.30277],[108.16141,31.313757],[108.162834,31.31971],[108.180462,31.325782],[108.185519,31.338005],[108.180609,31.349227],[108.171182,31.356975],[108.158906,31.360289],[108.154143,31.37075],[108.157826,31.376659],[108.175257,31.382608],[108.182868,31.393027],[108.203392,31.395382],[108.216306,31.411188],[108.216551,31.427031],[108.210561,31.435769],[108.225586,31.453004],[108.223131,31.46517],[108.210806,31.467883],[108.206829,31.464293],[108.193326,31.468202],[108.190478,31.491492],[108.218417,31.496197],[108.226764,31.505846],[108.236683,31.506365],[108.254801,31.498829],[108.259564,31.502497],[108.276995,31.501181],[108.281709,31.507282],[108.295998,31.503494],[108.311415,31.506684],[108.323298,31.502378],[108.345345,31.514936],[108.346572,31.525141],[108.33906,31.537896],[108.347603,31.545189],[108.381139,31.542599],[108.388652,31.546385],[108.391795,31.560452],[108.377948,31.570413],[108.393611,31.576349],[108.388357,31.586906],[108.402646,31.603874],[108.417916,31.610087],[108.423072,31.621277],[108.442664,31.6337],[108.456461,31.628882],[108.46525,31.61837],[108.468786,31.636169],[108.486168,31.639871],[108.494564,31.649545],[108.506692,31.657307],[108.513272,31.656193],[108.519066,31.665706],[108.532814,31.669129],[108.546464,31.666701],[108.542831,31.673626],[108.561833,31.669726],[108.574501,31.67088],[108.576809,31.664114],[108.608725,31.650421],[108.624388,31.651655],[108.640101,31.637005],[108.64123,31.625179],[108.649381,31.621715],[108.65542,31.626095],[108.67673,31.62275],[108.683899,31.627449],[108.69151,31.625259],[108.701183,31.634098],[108.714686,31.627648],[108.728974,31.634457],[108.736192,31.633302],[108.742281,31.640906],[108.755342,31.647077],[108.758141,31.664313],[108.770612,31.682142],[108.782888,31.688828],[108.794525,31.684251],[108.809894,31.685764],[108.840533,31.684371],[108.860517,31.681068],[108.865378,31.671079],[108.879421,31.663835],[108.888407,31.654999],[108.898227,31.65484],[108.892728,31.642578],[108.893268,31.632187],[108.887719,31.625657],[108.895821,31.614587],[108.894888,31.606025],[108.877997,31.602799],[108.865133,31.592801],[108.853398,31.578939],[108.837096,31.574237],[108.824133,31.578899],[108.820303,31.574596],[108.801399,31.574078],[108.794034,31.551366],[108.777094,31.543635],[108.769483,31.529845],[108.766881,31.513621],[108.761087,31.503893],[108.748026,31.505208],[108.730055,31.499746],[108.721707,31.503255],[108.703982,31.503972],[108.694554,31.499347],[108.69971,31.491652],[108.697255,31.476737],[108.703098,31.463814],[108.726617,31.455118],[108.740071,31.441834],[108.752298,31.443749],[108.759908,31.438602],[108.757797,31.430941],[108.742084,31.420087],[108.740022,31.407676],[108.731528,31.403285],[108.736389,31.395742],[108.729956,31.390752],[108.712525,31.394584],[108.694554,31.387199],[108.693474,31.377418],[108.709186,31.374983],[108.696567,31.359011],[108.701527,31.348988],[108.698237,31.343956],[108.683261,31.34084],[108.644176,31.339482],[108.63578,31.329896],[108.639806,31.31955],[108.659054,31.298535],[108.654586,31.289184],[108.63632,31.283509],[108.643489,31.268721],[108.631262,31.257249],[108.622768,31.259488],[108.618643,31.252212],[108.596646,31.230622],[108.588741,31.201587],[108.587759,31.185066],[108.578036,31.180065],[108.583585,31.174864],[108.598414,31.170943],[108.601851,31.160099],[108.576956,31.142851],[108.567823,31.140529],[108.562717,31.130443],[108.562619,31.115791],[108.547544,31.105261],[108.558887,31.089404],[108.537921,31.095491],[108.539934,31.082957],[108.53031,31.083838],[108.510964,31.07791],[108.511995,31.074145],[108.488181,31.064733],[108.486217,31.057322],[108.476691,31.052795],[108.48003,31.037811],[108.474334,31.022544],[108.451256,31.013527],[108.432156,31.012725],[108.418015,31.006072],[108.41497,30.998897]]]]}},{"type":"Feature","properties":{"adcode":500155,"name":"梁平区","center":[107.800034,30.672168],"centroid":[107.719234,30.658344],"childrenNum":0,"level":"district","subFeatureIndex":24,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.876131,30.813287],[107.88492,30.806138],[107.905592,30.77601],[107.908243,30.762911],[107.918653,30.75829],[107.959112,30.719262],[108.011405,30.709814],[108.03517,30.715362],[108.047544,30.723684],[108.074894,30.723121],[108.086678,30.713714],[108.074844,30.696304],[108.082259,30.677926],[108.079558,30.664532],[108.0554,30.660027],[108.042585,30.662481],[108.025645,30.648844],[108.023091,30.63617],[108.016954,30.629571],[108.025252,30.60289],[108.033697,30.592424],[108.028051,30.587432],[108.034778,30.574187],[108.029622,30.561544],[108.003795,30.542174],[107.990243,30.538871],[107.985676,30.531017],[107.972615,30.521913],[107.958621,30.531017],[107.953711,30.51434],[107.942025,30.498828],[107.939864,30.485893],[107.924839,30.494074],[107.916001,30.495323],[107.909422,30.502938],[107.897883,30.502938],[107.88546,30.512124],[107.886884,30.539556],[107.891352,30.54608],[107.885411,30.549544],[107.870386,30.547248],[107.860713,30.559088],[107.826145,30.554417],[107.829239,30.544671],[107.814017,30.521631],[107.819173,30.50882],[107.818142,30.497539],[107.810629,30.482428],[107.817455,30.471466],[107.80621,30.470861],[107.796488,30.479204],[107.796488,30.484805],[107.77783,30.497821],[107.777535,30.506121],[107.767911,30.513736],[107.757894,30.514058],[107.748123,30.521269],[107.741347,30.517885],[107.715716,30.482589],[107.695241,30.460986],[107.679479,30.438612],[107.661803,30.420387],[107.656205,30.431193],[107.673538,30.453851],[107.670346,30.464493],[107.660772,30.470136],[107.636957,30.470498],[107.637743,30.483032],[107.629298,30.485611],[107.611719,30.47211],[107.610197,30.48009],[107.593994,30.475174],[107.570523,30.47731],[107.562225,30.487949],[107.553436,30.491092],[107.55157,30.50322],[107.544352,30.498869],[107.533452,30.500843],[107.527559,30.490487],[107.516266,30.489198],[107.509097,30.495363],[107.496036,30.494638],[107.480029,30.478599],[107.463629,30.481984],[107.446837,30.49766],[107.425527,30.510835],[107.404855,30.516112],[107.408734,30.521551],[107.419929,30.516475],[107.433825,30.523565],[107.442859,30.535287],[107.42754,30.547611],[107.460241,30.571329],[107.46741,30.586305],[107.485332,30.598341],[107.493728,30.618988],[107.515431,30.642045],[107.516806,30.647838],[107.499179,30.660148],[107.477427,30.664774],[107.469718,30.677604],[107.456559,30.682712],[107.460929,30.687498],[107.458621,30.704788],[107.437065,30.721031],[107.425674,30.746756],[107.439029,30.747077],[107.44502,30.752503],[107.43957,30.759776],[107.446837,30.770103],[107.44556,30.778179],[107.453809,30.77167],[107.466379,30.774041],[107.460339,30.784165],[107.47345,30.785772],[107.47777,30.799792],[107.493778,30.803688],[107.490193,30.810757],[107.498982,30.810757],[107.489997,30.821118],[107.492108,30.833165],[107.482926,30.838305],[107.514793,30.854926],[107.523288,30.848222],[107.526626,30.839429],[107.535465,30.84766],[107.556529,30.846295],[107.560654,30.849868],[107.577594,30.848141],[107.584075,30.840473],[107.598266,30.844729],[107.614665,30.839148],[107.616138,30.828588],[107.633766,30.817785],[107.647465,30.823247],[107.670445,30.851996],[107.691951,30.874756],[107.704128,30.872227],[107.715864,30.887839],[107.737714,30.88499],[107.749547,30.873471],[107.750038,30.864801],[107.760349,30.862272],[107.752788,30.850751],[107.757452,30.840232],[107.755341,30.829551],[107.763836,30.817102],[107.775375,30.814853],[107.783722,30.819311],[107.799189,30.814934],[107.817749,30.798024],[107.831399,30.798426],[107.849861,30.792601],[107.876131,30.813287]]]]}},{"type":"Feature","properties":{"adcode":500156,"name":"武隆区","center":[107.75655,29.32376],"centroid":[107.709628,29.373159],"childrenNum":0,"level":"district","subFeatureIndex":25,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.401565,29.184694],[107.395378,29.205881],[107.401909,29.218248],[107.399355,29.235714],[107.401025,29.248853],[107.416541,29.264234],[107.421942,29.274636],[107.404069,29.28259],[107.388553,29.281081],[107.391597,29.289279],[107.379764,29.299516],[107.373332,29.298578],[107.38271,29.308609],[107.392039,29.326754],[107.367047,29.341756],[107.350156,29.346892],[107.347308,29.342571],[107.323395,29.339147],[107.318387,29.347789],[107.309893,29.345098],[107.298599,29.352069],[107.293444,29.349704],[107.272428,29.358386],[107.272428,29.37371],[107.263393,29.383571],[107.256176,29.38463],[107.241691,29.379415],[107.237713,29.394817],[107.226666,29.406835],[107.227598,29.418159],[107.240512,29.426795],[107.245422,29.424391],[107.260938,29.429035],[107.262264,29.436162],[107.277338,29.440357],[107.30567,29.465318],[107.313526,29.487912],[107.323248,29.497558],[107.328993,29.509321],[107.348683,29.515547],[107.358601,29.51575],[107.365868,29.522383],[107.380599,29.523197],[107.391548,29.530969],[107.427491,29.505658],[107.431762,29.483475],[107.441386,29.491575],[107.450519,29.490028],[107.463826,29.498617],[107.4625,29.502117],[107.475905,29.50635],[107.478507,29.497151],[107.513664,29.461165],[107.532666,29.423047],[107.546562,29.431845],[107.552798,29.447809],[107.56139,29.453062],[107.574206,29.452533],[107.577446,29.462427],[107.595958,29.480951],[107.613143,29.479526],[107.620558,29.483638],[107.615009,29.512373],[107.607546,29.514652],[107.608135,29.532474],[107.629003,29.539147],[107.651197,29.553304],[107.654634,29.562457],[107.666958,29.573804],[107.687532,29.600481],[107.69804,29.605889],[107.701575,29.615443],[107.709431,29.60906],[107.716404,29.596659],[107.732263,29.585598],[107.757403,29.602636],[107.767862,29.597635],[107.772576,29.585883],[107.781267,29.582142],[107.7685,29.579254],[107.795801,29.567744],[107.791774,29.560952],[107.80351,29.563433],[107.80729,29.554606],[107.818928,29.554647],[107.825851,29.545005],[107.828551,29.556192],[107.836309,29.560179],[107.83847,29.573926],[107.832283,29.581247],[107.831743,29.59243],[107.839943,29.607393],[107.845246,29.628695],[107.842938,29.653569],[107.845786,29.660233],[107.857472,29.667629],[107.87073,29.667995],[107.897146,29.661493],[107.905543,29.662428],[107.922974,29.655235],[107.934218,29.655723],[107.948703,29.623126],[107.949881,29.601701],[107.961715,29.608978],[107.969129,29.620321],[107.979784,29.627435],[108.000259,29.626256],[108.024368,29.619467],[108.046513,29.622679],[108.056039,29.621581],[108.067872,29.614223],[108.076563,29.605726],[108.084026,29.588892],[108.075876,29.577627],[108.066153,29.575472],[108.066988,29.566687],[108.075826,29.557982],[108.074059,29.549073],[108.055793,29.531783],[108.015432,29.504559],[108.017347,29.483719],[108.013959,29.469674],[108.013075,29.448786],[108.002763,29.442108],[108.004286,29.428424],[107.989653,29.416856],[107.992796,29.397383],[107.988426,29.38027],[107.976641,29.36344],[107.983319,29.350397],[107.984301,29.339188],[107.992059,29.325408],[108.003304,29.315174],[107.996282,29.288545],[107.998983,29.273943],[107.99697,29.26248],[108.010325,29.247792],[108.006446,29.229267],[107.997804,29.236857],[107.986756,29.217799],[107.973057,29.210166],[107.970111,29.198492],[107.960143,29.188695],[107.94286,29.178243],[107.934905,29.185102],[107.911975,29.190328],[107.898865,29.184245],[107.903775,29.172282],[107.899896,29.166361],[107.892727,29.134138],[107.895133,29.117185],[107.883889,29.106195],[107.889486,29.085151],[107.883938,29.078163],[107.873086,29.074852],[107.874707,29.057031],[107.849567,29.039289],[107.838421,29.040597],[107.823543,29.034219],[107.785244,29.04722],[107.78981,29.082372],[107.799974,29.106195],[107.810629,29.138345],[107.808567,29.142838],[107.795162,29.146473],[107.781905,29.161992],[107.775227,29.162808],[107.767911,29.17514],[107.760251,29.177712],[107.76089,29.189021],[107.751609,29.199635],[107.739383,29.189021],[107.724751,29.182203],[107.727206,29.175712],[107.718515,29.156152],[107.707565,29.154151],[107.698629,29.141245],[107.66362,29.147535],[107.659446,29.16289],[107.641573,29.16093],[107.629936,29.165585],[107.616924,29.163013],[107.606711,29.165463],[107.600622,29.15897],[107.601015,29.147821],[107.589231,29.150026],[107.585057,29.158357],[107.590164,29.165299],[107.583437,29.16828],[107.580147,29.183591],[107.575237,29.189062],[107.575139,29.20784],[107.565711,29.220982],[107.553387,29.218697],[107.549557,29.210085],[107.532224,29.195471],[107.514891,29.194206],[107.486707,29.174242],[107.473106,29.170975],[107.462353,29.176855],[107.463973,29.195431],[107.441435,29.203962],[107.428473,29.191144],[107.405444,29.188613],[107.401565,29.184694]]]]}},{"type":"Feature","properties":{"adcode":500229,"name":"城口县","center":[108.6649,31.946293],"centroid":[108.735105,31.881846],"childrenNum":0,"level":"district","subFeatureIndex":26,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.281611,31.716876],[109.266734,31.714927],[109.225145,31.724951],[109.227403,31.717035],[109.222542,31.701242],[109.228533,31.690817],[109.224261,31.688629],[109.209187,31.69412],[109.178253,31.69587],[109.16696,31.700207],[109.158514,31.69396],[109.148154,31.703669],[109.133325,31.705936],[109.122965,31.700167],[109.092473,31.699531],[109.06149,31.704743],[109.052013,31.696507],[109.038117,31.690777],[109.007036,31.691135],[109.0008,31.686758],[109.007331,31.673188],[109.00134,31.671039],[109.000407,31.657029],[108.992649,31.652969],[108.955529,31.654601],[108.954792,31.66288],[108.937607,31.652969],[108.918113,31.652929],[108.91448,31.660731],[108.906182,31.661248],[108.898227,31.65484],[108.888407,31.654999],[108.879421,31.663835],[108.865378,31.671079],[108.860517,31.681068],[108.840533,31.684371],[108.809894,31.685764],[108.794525,31.684251],[108.782888,31.688828],[108.770612,31.682142],[108.758141,31.664313],[108.755342,31.647077],[108.742281,31.640906],[108.736192,31.633302],[108.728974,31.634457],[108.714686,31.627648],[108.701183,31.634098],[108.69151,31.625259],[108.683899,31.627449],[108.67673,31.62275],[108.65542,31.626095],[108.649381,31.621715],[108.64123,31.625179],[108.640101,31.637005],[108.624388,31.651655],[108.608725,31.650421],[108.576809,31.664114],[108.574501,31.67088],[108.561833,31.669726],[108.542831,31.673626],[108.532225,31.677168],[108.514794,31.69412],[108.524761,31.69973],[108.518673,31.726184],[108.506103,31.734815],[108.535269,31.757681],[108.515727,31.7611],[108.489261,31.774737],[108.488574,31.780302],[108.478213,31.777917],[108.456314,31.783999],[108.454399,31.791075],[108.464072,31.803674],[108.462501,31.812814],[108.455135,31.813927],[108.441436,31.807608],[108.394741,31.826523],[108.384135,31.848611],[108.386197,31.853894],[108.370779,31.852742],[108.353741,31.856396],[108.340974,31.863546],[108.33523,31.876452],[108.326244,31.881615],[108.30842,31.905953],[108.299484,31.911272],[108.289516,31.910955],[108.282691,31.917742],[108.28603,31.938856],[108.275817,31.957625],[108.259368,31.966869],[108.267175,31.973097],[108.265849,31.983728],[108.282151,31.979206],[108.283919,31.986068],[108.297176,31.988527],[108.307094,31.997252],[108.3259,31.984957],[108.337488,31.981705],[108.3505,31.971947],[108.367146,31.984521],[108.369502,31.989876],[108.361401,31.998085],[108.33847,32.009506],[108.32919,32.01926],[108.340091,32.023106],[108.362874,32.036783],[108.364298,32.047248],[108.35978,32.053748],[108.344804,32.060526],[108.344608,32.068253],[108.362825,32.070037],[108.373774,32.077169],[108.395183,32.066311],[108.412712,32.070116],[108.429995,32.061358],[108.44944,32.072969],[108.452091,32.091036],[108.439276,32.094721],[108.431616,32.101693],[108.423465,32.117339],[108.414872,32.126369],[108.406623,32.141337],[108.390862,32.151315],[108.38821,32.157531],[108.369404,32.173325],[108.379175,32.177521],[108.39916,32.194064],[108.406378,32.196201],[108.425282,32.187416],[108.434022,32.192085],[108.457296,32.181479],[108.479342,32.182073],[108.492944,32.194935],[108.509736,32.201187],[108.551031,32.176096],[108.583978,32.172217],[108.592178,32.160223],[108.606024,32.155155],[108.646975,32.128666],[108.654045,32.117418],[108.66691,32.111913],[108.674717,32.103396],[108.714833,32.103713],[108.726421,32.106803],[108.747731,32.099831],[108.752543,32.08759],[108.751708,32.074158],[108.767961,32.065519],[108.776259,32.055096],[108.788682,32.048318],[108.810581,32.047169],[108.837881,32.038805],[108.873529,32.000227],[108.902401,31.984918],[108.91831,31.988249],[108.937116,31.988924],[108.95273,31.979682],[108.968295,31.982538],[108.978213,31.978135],[108.988427,31.979404],[109.020883,31.963219],[109.035122,31.958061],[109.039345,31.96072],[109.05982,31.941356],[109.069935,31.938936],[109.114225,31.905556],[109.124585,31.892137],[109.131901,31.891343],[109.167009,31.87534],[109.190921,31.855681],[109.199563,31.842494],[109.191854,31.827953],[109.196224,31.817543],[109.213606,31.817503],[109.232363,31.809436],[109.239875,31.811304],[109.255293,31.803038],[109.274835,31.800455],[109.274786,31.791075],[109.281268,31.777917],[109.263689,31.773544],[109.254655,31.766905],[109.256177,31.758635],[109.2713,31.756607],[109.27076,31.749291],[109.283085,31.739627],[109.2795,31.723479],[109.281611,31.716876]]]]}},{"type":"Feature","properties":{"adcode":500230,"name":"丰都县","center":[107.73248,29.866424],"centroid":[107.830885,29.884755],"childrenNum":0,"level":"district","subFeatureIndex":27,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.701575,29.615443],[107.698482,29.618614],[107.713752,29.642555],[107.718073,29.65682],[107.696616,29.660315],[107.684733,29.666532],[107.674176,29.663362],[107.670101,29.675064],[107.6565,29.686156],[107.64447,29.687821],[107.630427,29.701714],[107.632784,29.719016],[107.640345,29.740701],[107.625075,29.753896],[107.64226,29.76303],[107.638529,29.772976],[107.638627,29.813274],[107.622669,29.802562],[107.605336,29.808161],[107.605238,29.832423],[107.595369,29.835222],[107.604256,29.852014],[107.613585,29.856111],[107.616973,29.865884],[107.626892,29.874522],[107.613094,29.876955],[107.598707,29.888632],[107.602979,29.897389],[107.59473,29.917657],[107.579361,29.923939],[107.573126,29.933827],[107.57946,29.943877],[107.571898,29.951049],[107.56193,29.946146],[107.546807,29.958585],[107.546905,29.965675],[107.53355,29.968551],[107.523779,29.978678],[107.515186,29.959436],[107.500554,29.960611],[107.498197,29.972481],[107.487443,29.972076],[107.471338,29.989453],[107.483908,29.992693],[107.491322,30.004964],[107.491372,30.013306],[107.5308,30.059699],[107.539295,30.064192],[107.53954,30.072407],[107.528296,30.082888],[107.535268,30.088512],[107.55756,30.098344],[107.55815,30.114566],[107.570425,30.122252],[107.579361,30.119582],[107.582897,30.131595],[107.568706,30.139077],[107.572978,30.144374],[107.569983,30.166937],[107.581227,30.174941],[107.597922,30.179631],[107.604501,30.187392],[107.595909,30.198063],[107.605729,30.198628],[107.61005,30.209136],[107.626548,30.20655],[107.632882,30.213097],[107.642801,30.239562],[107.651884,30.241622],[107.656402,30.259598],[107.662588,30.261052],[107.675944,30.252812],[107.673145,30.238754],[107.666762,30.234754],[107.668088,30.22631],[107.675502,30.22336],[107.691264,30.234916],[107.709284,30.237946],[107.705945,30.230876],[107.714685,30.221421],[107.705356,30.224209],[107.704963,30.216491],[107.721216,30.21835],[107.721314,30.230189],[107.728728,30.23132],[107.734129,30.221098],[107.742084,30.225502],[107.745128,30.236774],[107.762019,30.240936],[107.769924,30.236572],[107.769139,30.224573],[107.758336,30.217016],[107.757502,30.21047],[107.765898,30.198224],[107.788436,30.190747],[107.794377,30.185816],[107.808567,30.184239],[107.811759,30.178337],[107.838617,30.168675],[107.845688,30.162974],[107.842103,30.155009],[107.819026,30.13394],[107.812937,30.118935],[107.81878,30.112058],[107.831939,30.108782],[107.84446,30.119865],[107.862186,30.113879],[107.87451,30.09976],[107.88109,30.103199],[107.895919,30.120067],[107.906525,30.112544],[107.908243,30.105748],[107.936378,30.069008],[107.948457,30.066458],[107.967558,30.055611],[107.987297,30.047921],[107.998492,30.053871],[108.007575,30.043508],[108.01661,30.042132],[108.02702,30.029056],[108.018476,30.014804],[108.024859,30.010957],[108.03247,29.990222],[108.018034,29.971589],[108.009687,29.978476],[108.002027,29.977544],[107.993336,29.96689],[108.014695,29.9472],[108.024908,29.934962],[108.036005,29.912225],[108.046316,29.912387],[108.049999,29.906226],[108.035907,29.90197],[108.042536,29.893456],[108.059869,29.889726],[108.071456,29.877157],[108.072488,29.870953],[108.058936,29.857246],[108.084125,29.838873],[108.099199,29.840657],[108.108823,29.848851],[108.122915,29.851771],[108.145992,29.846377],[108.14997,29.83011],[108.167008,29.838305],[108.172998,29.837656],[108.177859,29.822443],[108.190626,29.819441],[108.194014,29.812665],[108.18547,29.801628],[108.194112,29.790712],[108.217484,29.777887],[108.208204,29.764938],[108.204129,29.765182],[108.187925,29.743909],[108.178252,29.749877],[108.172213,29.745533],[108.17457,29.735463],[108.181051,29.734286],[108.169168,29.7087],[108.179529,29.699602],[108.174962,29.686075],[108.156157,29.676121],[108.156304,29.669579],[108.143587,29.659218],[108.149921,29.647636],[108.156107,29.644872],[108.168186,29.648083],[108.17894,29.647839],[108.182033,29.625972],[108.178547,29.619183],[108.167499,29.617679],[108.163374,29.603612],[108.153652,29.599749],[108.132391,29.603815],[108.117366,29.603449],[108.114175,29.599302],[108.098757,29.600684],[108.082161,29.611377],[108.078773,29.618817],[108.067872,29.614223],[108.056039,29.621581],[108.046513,29.622679],[108.024368,29.619467],[108.000259,29.626256],[107.979784,29.627435],[107.969129,29.620321],[107.961715,29.608978],[107.949881,29.601701],[107.948703,29.623126],[107.934218,29.655723],[107.922974,29.655235],[107.905543,29.662428],[107.897146,29.661493],[107.87073,29.667995],[107.857472,29.667629],[107.845786,29.660233],[107.842938,29.653569],[107.845246,29.628695],[107.839943,29.607393],[107.831743,29.59243],[107.832283,29.581247],[107.83847,29.573926],[107.836309,29.560179],[107.828551,29.556192],[107.825851,29.545005],[107.818928,29.554647],[107.80729,29.554606],[107.80351,29.563433],[107.791774,29.560952],[107.795801,29.567744],[107.7685,29.579254],[107.781267,29.582142],[107.772576,29.585883],[107.767862,29.597635],[107.757403,29.602636],[107.732263,29.585598],[107.716404,29.596659],[107.709431,29.60906],[107.701575,29.615443]]]]}},{"type":"Feature","properties":{"adcode":500231,"name":"垫江县","center":[107.348692,30.330012],"centroid":[107.437814,30.253308],"childrenNum":0,"level":"district","subFeatureIndex":28,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[107.453171,30.001441],[107.451501,30.008203],[107.46029,30.01533],[107.436329,30.033833],[107.374068,29.973372],[107.362824,29.979853],[107.347995,29.980501],[107.335573,29.97398],[107.325556,29.973007],[107.307094,29.992328],[107.29418,29.997917],[107.294818,30.002696],[107.31112,30.008203],[107.304688,30.0161],[107.31166,30.02023],[107.307879,30.035493],[107.294867,30.044359],[107.27724,30.043144],[107.279204,30.04873],[107.266045,30.055045],[107.26521,30.062006],[107.247534,30.07528],[107.259072,30.075887],[107.269089,30.081148],[107.271741,30.09446],[107.28328,30.091021],[107.29089,30.097939],[107.286766,30.107892],[107.295555,30.122454],[107.291381,30.136327],[107.274098,30.135841],[107.269482,30.145992],[107.288484,30.171303],[107.277044,30.181086],[107.256568,30.205903],[107.228335,30.223805],[107.239432,30.237582],[107.255979,30.263799],[107.264866,30.289766],[107.277535,30.311246],[107.288779,30.337564],[107.304197,30.354594],[107.31878,30.364278],[107.33901,30.387072],[107.34284,30.401674],[107.341367,30.41212],[107.34554,30.425508],[107.360025,30.45627],[107.381237,30.485329],[107.388848,30.49089],[107.404855,30.516112],[107.425527,30.510835],[107.446837,30.49766],[107.463629,30.481984],[107.480029,30.478599],[107.496036,30.494638],[107.509097,30.495363],[107.516266,30.489198],[107.527559,30.490487],[107.533452,30.500843],[107.544352,30.498869],[107.55157,30.50322],[107.553436,30.491092],[107.562225,30.487949],[107.570523,30.47731],[107.593994,30.475174],[107.610197,30.48009],[107.611719,30.47211],[107.629298,30.485611],[107.637743,30.483032],[107.636957,30.470498],[107.660772,30.470136],[107.670346,30.464493],[107.673538,30.453851],[107.656205,30.431193],[107.661803,30.420387],[107.650362,30.406917],[107.631262,30.398568],[107.622767,30.384652],[107.602488,30.367869],[107.595025,30.351083],[107.583093,30.341801],[107.569836,30.326868],[107.572242,30.321257],[107.597283,30.313224],[107.597824,30.29445],[107.581767,30.287586],[107.587119,30.275188],[107.573322,30.274784],[107.567282,30.268201],[107.57342,30.256367],[107.573862,30.244693],[107.558395,30.244046],[107.554271,30.229583],[107.545825,30.227643],[107.544794,30.221057],[107.553583,30.213177],[107.54828,30.208651],[107.550097,30.19681],[107.563649,30.19875],[107.571505,30.208166],[107.56851,30.219198],[107.577299,30.221461],[107.584861,30.202185],[107.595909,30.198063],[107.604501,30.187392],[107.597922,30.179631],[107.581227,30.174941],[107.569983,30.166937],[107.572978,30.144374],[107.568706,30.139077],[107.582897,30.131595],[107.579361,30.119582],[107.570425,30.122252],[107.55815,30.114566],[107.55756,30.098344],[107.535268,30.088512],[107.528296,30.082888],[107.53954,30.072407],[107.539295,30.064192],[107.5308,30.059699],[107.491372,30.013306],[107.491322,30.004964],[107.483908,29.992693],[107.471338,29.989453],[107.466968,29.998606],[107.453171,30.001441]]]]}},{"type":"Feature","properties":{"adcode":500233,"name":"忠县","center":[108.037518,30.291537],"centroid":[107.914786,30.335722],"childrenNum":0,"level":"district","subFeatureIndex":29,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.223622,30.421274],[108.208351,30.408611],[108.186403,30.413854],[108.174619,30.410144],[108.152965,30.395019],[108.133128,30.362624],[108.12262,30.359799],[108.096449,30.358831],[108.084665,30.350115],[108.084419,30.343093],[108.094731,30.344667],[108.117072,30.329169],[108.127874,30.333487],[108.145894,30.334254],[108.163031,30.325294],[108.163473,30.321055],[108.147466,30.302606],[108.147318,30.297115],[108.127334,30.299982],[108.131606,30.288918],[108.129003,30.281125],[108.142212,30.273654],[108.141475,30.265495],[108.126303,30.255357],[108.129494,30.244531],[108.125861,30.235845],[108.121933,30.245824],[108.114273,30.251399],[108.103716,30.246995],[108.093994,30.253459],[108.097038,30.237259],[108.105533,30.232653],[108.101948,30.223482],[108.10843,30.219198],[108.124879,30.227199],[108.127383,30.223684],[108.119379,30.211803],[108.129887,30.210268],[108.120705,30.200568],[108.107595,30.207439],[108.085549,30.17862],[108.072438,30.175144],[108.070965,30.163702],[108.061587,30.157071],[108.075777,30.153917],[108.092374,30.129532],[108.083928,30.111209],[108.0554,30.072043],[108.037233,30.067591],[108.031144,30.072326],[108.034974,30.084183],[108.029622,30.089119],[108.021569,30.078032],[108.010571,30.071355],[108.00733,30.057028],[107.998492,30.053871],[107.987297,30.047921],[107.967558,30.055611],[107.948457,30.066458],[107.936378,30.069008],[107.908243,30.105748],[107.906525,30.112544],[107.895919,30.120067],[107.88109,30.103199],[107.87451,30.09976],[107.862186,30.113879],[107.84446,30.119865],[107.831939,30.108782],[107.81878,30.112058],[107.812937,30.118935],[107.819026,30.13394],[107.842103,30.155009],[107.845688,30.162974],[107.838617,30.168675],[107.811759,30.178337],[107.808567,30.184239],[107.794377,30.185816],[107.788436,30.190747],[107.765898,30.198224],[107.757502,30.21047],[107.758336,30.217016],[107.769139,30.224573],[107.769924,30.236572],[107.762019,30.240936],[107.745128,30.236774],[107.742084,30.225502],[107.734129,30.221098],[107.728728,30.23132],[107.721314,30.230189],[107.721216,30.21835],[107.704963,30.216491],[107.705356,30.224209],[107.714685,30.221421],[107.705945,30.230876],[107.709284,30.237946],[107.691264,30.234916],[107.675502,30.22336],[107.668088,30.22631],[107.666762,30.234754],[107.673145,30.238754],[107.675944,30.252812],[107.662588,30.261052],[107.656402,30.259598],[107.651884,30.241622],[107.642801,30.239562],[107.632882,30.213097],[107.626548,30.20655],[107.61005,30.209136],[107.605729,30.198628],[107.595909,30.198063],[107.584861,30.202185],[107.577299,30.221461],[107.56851,30.219198],[107.571505,30.208166],[107.563649,30.19875],[107.550097,30.19681],[107.54828,30.208651],[107.553583,30.213177],[107.544794,30.221057],[107.545825,30.227643],[107.554271,30.229583],[107.558395,30.244046],[107.573862,30.244693],[107.57342,30.256367],[107.567282,30.268201],[107.573322,30.274784],[107.587119,30.275188],[107.581767,30.287586],[107.597824,30.29445],[107.597283,30.313224],[107.572242,30.321257],[107.569836,30.326868],[107.583093,30.341801],[107.595025,30.351083],[107.602488,30.367869],[107.622767,30.384652],[107.631262,30.398568],[107.650362,30.406917],[107.661803,30.420387],[107.679479,30.438612],[107.695241,30.460986],[107.715716,30.482589],[107.741347,30.517885],[107.748123,30.521269],[107.757894,30.514058],[107.767911,30.513736],[107.777535,30.506121],[107.77783,30.497821],[107.796488,30.484805],[107.796488,30.479204],[107.80621,30.470861],[107.817455,30.471466],[107.810629,30.482428],[107.818142,30.497539],[107.819173,30.50882],[107.814017,30.521631],[107.829239,30.544671],[107.826145,30.554417],[107.860713,30.559088],[107.870386,30.547248],[107.885411,30.549544],[107.891352,30.54608],[107.886884,30.539556],[107.88546,30.512124],[107.897883,30.502938],[107.909422,30.502938],[107.916001,30.495323],[107.924839,30.494074],[107.939864,30.485893],[107.942025,30.498828],[107.953711,30.51434],[107.958621,30.531017],[107.972615,30.521913],[107.985676,30.531017],[107.990243,30.538871],[108.003795,30.542174],[108.029622,30.561544],[108.034778,30.574187],[108.052847,30.572094],[108.062667,30.574429],[108.072537,30.582159],[108.083339,30.579582],[108.088593,30.572617],[108.103863,30.573382],[108.105631,30.591458],[108.111621,30.59343],[108.127187,30.586104],[108.126647,30.577972],[108.120067,30.576965],[108.12645,30.564],[108.143587,30.566215],[108.153063,30.545879],[108.152523,30.535931],[108.163374,30.540805],[108.171378,30.539314],[108.165633,30.524411],[108.175552,30.510633],[108.184537,30.518167],[108.195045,30.514501],[108.207811,30.49766],[108.230496,30.476705],[108.232755,30.45502],[108.241937,30.443773],[108.223622,30.421274]]]]}},{"type":"Feature","properties":{"adcode":500235,"name":"云阳县","center":[108.697698,30.930529],"centroid":[108.856912,31.036349],"childrenNum":0,"level":"district","subFeatureIndex":30,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.90952,30.581273],[108.869896,30.610979],[108.871565,30.618103],[108.901713,30.646792],[108.899946,30.676438],[108.896312,30.684039],[108.884331,30.687337],[108.883546,30.695661],[108.872007,30.690112],[108.836016,30.678449],[108.828699,30.679414],[108.823347,30.69168],[108.818094,30.693771],[108.785883,30.683516],[108.779254,30.685125],[108.781022,30.697028],[108.79261,30.706558],[108.789762,30.714277],[108.763444,30.713031],[108.766586,30.720548],[108.762609,30.728106],[108.76639,30.74141],[108.754998,30.740044],[108.749842,30.74555],[108.740169,30.775527],[108.74724,30.782116],[108.740808,30.787259],[108.738549,30.808026],[108.733393,30.81405],[108.715177,30.815094],[108.699955,30.811841],[108.698482,30.822885],[108.685127,30.835976],[108.685078,30.845773],[108.671968,30.852116],[108.665977,30.867972],[108.653014,30.89105],[108.634798,30.885271],[108.625419,30.875358],[108.621589,30.888561],[108.623013,30.912837],[108.628169,30.918253],[108.619233,30.926999],[108.61884,30.934741],[108.608578,30.93807],[108.593307,30.920259],[108.566448,30.912396],[108.552602,30.915405],[108.537577,30.958123],[108.523632,30.973159],[108.531243,30.978051],[108.533894,30.996251],[108.51666,30.990559],[108.506643,30.992604],[108.501094,30.98651],[108.50409,30.977289],[108.496626,30.972839],[108.486413,30.977008],[108.460537,30.967426],[108.454743,30.970232],[108.45327,30.988755],[108.455626,30.994728],[108.440356,31.002545],[108.426509,30.998216],[108.41497,30.998897],[108.418015,31.006072],[108.432156,31.012725],[108.451256,31.013527],[108.474334,31.022544],[108.48003,31.037811],[108.476691,31.052795],[108.486217,31.057322],[108.488181,31.064733],[108.511995,31.074145],[108.510964,31.07791],[108.53031,31.083838],[108.539934,31.082957],[108.537921,31.095491],[108.558887,31.089404],[108.547544,31.105261],[108.562619,31.115791],[108.562717,31.130443],[108.567823,31.140529],[108.576956,31.142851],[108.601851,31.160099],[108.598414,31.170943],[108.583585,31.174864],[108.578036,31.180065],[108.587759,31.185066],[108.588741,31.201587],[108.596646,31.230622],[108.618643,31.252212],[108.622768,31.259488],[108.631262,31.257249],[108.643489,31.268721],[108.63632,31.283509],[108.654586,31.289184],[108.659054,31.298535],[108.639806,31.31955],[108.63578,31.329896],[108.644176,31.339482],[108.683261,31.34084],[108.698237,31.343956],[108.701527,31.348988],[108.696567,31.359011],[108.709186,31.374983],[108.693474,31.377418],[108.694554,31.387199],[108.712525,31.394584],[108.729956,31.390752],[108.736389,31.395742],[108.731528,31.403285],[108.740022,31.407676],[108.742084,31.420087],[108.757797,31.430941],[108.759908,31.438602],[108.779205,31.435251],[108.800221,31.425155],[108.809894,31.417414],[108.795752,31.403086],[108.798748,31.396859],[108.816866,31.390233],[108.83248,31.375302],[108.822071,31.370271],[108.823053,31.356815],[108.834739,31.35382],[108.837096,31.346432],[108.865035,31.343716],[108.869896,31.339562],[108.887572,31.336007],[108.893268,31.342358],[108.89042,31.354738],[108.892826,31.364641],[108.886394,31.372148],[108.88988,31.383566],[108.900142,31.387558],[108.908146,31.383566],[108.916837,31.387399],[108.927197,31.386001],[108.936035,31.390991],[108.948409,31.382728],[108.962452,31.385722],[108.971487,31.380812],[108.983418,31.385762],[108.992207,31.380812],[109.020146,31.375781],[109.029181,31.370032],[109.05162,31.367117],[109.055352,31.357054],[109.050294,31.340721],[109.055057,31.326301],[109.033305,31.290862],[109.042978,31.283349],[109.062717,31.276355],[109.068069,31.27008],[109.072685,31.247015],[109.087464,31.225703],[109.092571,31.211986],[109.092816,31.192387],[109.074305,31.189467],[109.067431,31.179465],[109.048969,31.186787],[109.048576,31.164341],[109.055008,31.155537],[109.056187,31.132604],[109.080246,31.128641],[109.100231,31.121636],[109.100034,31.102579],[109.093946,31.09437],[109.096646,31.078391],[109.095271,31.061007],[109.119528,31.058123],[109.131557,31.054077],[109.145748,31.056921],[109.165045,31.068057],[109.190774,31.066335],[109.197648,31.053276],[109.214637,31.047907],[109.225243,31.053837],[109.228778,31.046866],[109.239875,31.04314],[109.244884,31.032201],[109.251021,31.029276],[109.238009,31.006432],[109.217583,30.982421],[109.211642,30.96935],[109.218221,30.963857],[109.220333,30.945369],[109.218762,30.926317],[109.215472,30.920781],[109.201822,30.927962],[109.200545,30.932936],[109.186306,30.936907],[109.157581,30.940637],[109.150609,30.936265],[109.151934,30.924151],[109.160969,30.916809],[109.162197,30.905776],[109.15547,30.907622],[109.144029,30.902165],[109.150118,30.878247],[109.130477,30.879732],[109.135485,30.866688],[109.108283,30.860145],[109.086531,30.858178],[109.0773,30.869096],[109.054615,30.860908],[109.051767,30.843524],[109.043224,30.831278],[109.05054,30.824773],[109.050785,30.814171],[109.044059,30.809873],[109.048821,30.777215],[109.059575,30.764598],[109.056579,30.754834],[109.047839,30.745309],[109.047348,30.730277],[109.018575,30.718297],[109.019655,30.711784],[109.030801,30.706598],[109.018919,30.696706],[109.024565,30.683154],[109.017544,30.675232],[109.022945,30.663567],[109.01558,30.648884],[109.021766,30.642366],[109.009737,30.627238],[108.999229,30.632066],[108.987494,30.623294],[108.978017,30.629813],[108.967509,30.624823],[108.943842,30.601843],[108.919488,30.589365],[108.90952,30.581273]]]]}},{"type":"Feature","properties":{"adcode":500236,"name":"奉节县","center":[109.465774,31.019967],"centroid":[109.349749,30.95233],"childrenNum":0,"level":"district","subFeatureIndex":31,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.103668,30.565812],[109.106123,30.570765],[109.101114,30.579542],[109.102686,30.580146],[109.105534,30.585661],[109.105926,30.610738],[109.112506,30.61271],[109.121737,30.628726],[109.120951,30.635768],[109.111917,30.646108],[109.096646,30.638745],[109.088053,30.646631],[109.070181,30.640274],[109.049165,30.645545],[109.045728,30.653189],[109.021766,30.642366],[109.01558,30.648884],[109.022945,30.663567],[109.017544,30.675232],[109.024565,30.683154],[109.018919,30.696706],[109.030801,30.706598],[109.019655,30.711784],[109.018575,30.718297],[109.047348,30.730277],[109.047839,30.745309],[109.056579,30.754834],[109.059575,30.764598],[109.048821,30.777215],[109.044059,30.809873],[109.050785,30.814171],[109.05054,30.824773],[109.043224,30.831278],[109.051767,30.843524],[109.054615,30.860908],[109.0773,30.869096],[109.086531,30.858178],[109.108283,30.860145],[109.135485,30.866688],[109.130477,30.879732],[109.150118,30.878247],[109.144029,30.902165],[109.15547,30.907622],[109.162197,30.905776],[109.160969,30.916809],[109.151934,30.924151],[109.150609,30.936265],[109.157581,30.940637],[109.186306,30.936907],[109.200545,30.932936],[109.201822,30.927962],[109.215472,30.920781],[109.218762,30.926317],[109.220333,30.945369],[109.218221,30.963857],[109.211642,30.96935],[109.217583,30.982421],[109.238009,31.006432],[109.251021,31.029276],[109.244884,31.032201],[109.239875,31.04314],[109.228778,31.046866],[109.225243,31.053837],[109.214637,31.047907],[109.197648,31.053276],[109.190774,31.066335],[109.165045,31.068057],[109.145748,31.056921],[109.131557,31.054077],[109.119528,31.058123],[109.095271,31.061007],[109.096646,31.078391],[109.093946,31.09437],[109.100034,31.102579],[109.100231,31.121636],[109.080246,31.128641],[109.056187,31.132604],[109.055008,31.155537],[109.048576,31.164341],[109.048969,31.186787],[109.067431,31.179465],[109.074305,31.189467],[109.092816,31.192387],[109.092571,31.211986],[109.087464,31.225703],[109.072685,31.247015],[109.068069,31.27008],[109.062717,31.276355],[109.042978,31.283349],[109.033305,31.290862],[109.055057,31.326301],[109.050294,31.340721],[109.055352,31.357054],[109.05162,31.367117],[109.065712,31.364681],[109.079117,31.370112],[109.102735,31.364162],[109.123357,31.37083],[109.138137,31.366279],[109.176534,31.361527],[109.197206,31.362126],[109.213606,31.358332],[109.224114,31.362206],[109.235014,31.356975],[109.242085,31.362126],[109.266292,31.35985],[109.272577,31.355657],[109.322415,31.34779],[109.326392,31.324064],[109.334396,31.306925],[109.355853,31.295578],[109.354134,31.286826],[109.374757,31.286427],[109.376623,31.276236],[109.39042,31.262326],[109.387867,31.248654],[109.393857,31.242897],[109.415511,31.245496],[109.431617,31.240058],[109.435741,31.231981],[109.45003,31.238979],[109.450766,31.246535],[109.462698,31.250693],[109.479638,31.251772],[109.493533,31.249454],[109.497069,31.244816],[109.512487,31.243217],[109.518526,31.250333],[109.530409,31.253891],[109.55712,31.251053],[109.561883,31.243976],[109.569346,31.244456],[109.581572,31.225743],[109.588201,31.223384],[109.61668,31.229662],[109.629545,31.225703],[109.631951,31.217505],[109.622523,31.204747],[109.624389,31.190027],[109.63033,31.189147],[109.64511,31.177905],[109.668629,31.185466],[109.692493,31.172584],[109.703688,31.169903],[109.727944,31.171743],[109.742773,31.178185],[109.760646,31.175144],[109.770564,31.16166],[109.769533,31.143771],[109.758289,31.129242],[109.764819,31.11495],[109.753428,31.113389],[109.744442,31.100616],[109.727306,31.09473],[109.720431,31.070581],[109.712182,31.063691],[109.691462,31.054037],[109.679333,31.052835],[109.662737,31.042338],[109.605829,31.017655],[109.598611,31.010841],[109.612555,30.995971],[109.61177,30.986911],[109.60082,30.977129],[109.601999,30.962814],[109.596941,30.95327],[109.601557,30.941639],[109.59812,30.936465],[109.603079,30.922345],[109.609904,30.91693],[109.612752,30.90389],[109.594879,30.905415],[109.594584,30.902044],[109.574207,30.900961],[109.561392,30.893698],[109.569543,30.873712],[109.585648,30.871384],[109.588839,30.865885],[109.61506,30.861951],[109.615256,30.848222],[109.608087,30.846214],[109.607203,30.838225],[109.628661,30.820998],[109.636517,30.821922],[109.646435,30.803929],[109.644226,30.794128],[109.649725,30.778782],[109.659153,30.761987],[109.656698,30.76046],[109.660773,30.73727],[109.649038,30.71894],[109.62542,30.702657],[109.602244,30.698838],[109.590656,30.693409],[109.581622,30.670847],[109.588005,30.664693],[109.577104,30.655321],[109.574109,30.646872],[109.562865,30.646752],[109.538756,30.638424],[109.533698,30.641562],[109.541407,30.65166],[109.537921,30.663969],[109.528739,30.663929],[109.514696,30.655401],[109.493337,30.637176],[109.48278,30.623173],[109.465889,30.619511],[109.456511,30.613797],[109.449342,30.603735],[109.437852,30.598059],[109.428032,30.57616],[109.418114,30.560014],[109.393808,30.531138],[109.380846,30.518288],[109.368668,30.500279],[109.352072,30.487183],[109.342841,30.494718],[109.341564,30.512728],[109.337145,30.520826],[109.342252,30.529567],[109.361058,30.550994],[109.361156,30.554739],[109.344265,30.577126],[109.314509,30.59979],[109.323299,30.604137],[109.32816,30.616091],[109.313577,30.610174],[109.299534,30.630577],[109.278813,30.610174],[109.251169,30.592907],[109.227551,30.585661],[109.227845,30.58087],[109.247731,30.583205],[109.222788,30.569597],[109.192787,30.546282],[109.17133,30.547007],[109.164799,30.538187],[109.150609,30.527392],[109.141181,30.525096],[109.139463,30.534562],[109.124389,30.531702],[109.12483,30.538912],[109.113488,30.548658],[109.103668,30.565812]]],[[[109.101114,30.579542],[109.098659,30.579099],[109.092865,30.578737],[109.083585,30.598261],[109.09316,30.609007],[109.105926,30.610738],[109.105534,30.585661],[109.102686,30.580146],[109.101114,30.579542]]],[[[109.098659,30.579099],[109.106123,30.570765],[109.103668,30.565812],[109.092865,30.578737],[109.098659,30.579099]]]]}},{"type":"Feature","properties":{"adcode":500237,"name":"巫山县","center":[109.878928,31.074843],"centroid":[109.901336,31.115213],"childrenNum":0,"level":"district","subFeatureIndex":32,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.659153,30.761987],[109.649725,30.778782],[109.644226,30.794128],[109.646435,30.803929],[109.636517,30.821922],[109.628661,30.820998],[109.607203,30.838225],[109.608087,30.846214],[109.615256,30.848222],[109.61506,30.861951],[109.588839,30.865885],[109.585648,30.871384],[109.569543,30.873712],[109.561392,30.893698],[109.574207,30.900961],[109.594584,30.902044],[109.594879,30.905415],[109.612752,30.90389],[109.609904,30.91693],[109.603079,30.922345],[109.59812,30.936465],[109.601557,30.941639],[109.596941,30.95327],[109.601999,30.962814],[109.60082,30.977129],[109.61177,30.986911],[109.612555,30.995971],[109.598611,31.010841],[109.605829,31.017655],[109.662737,31.042338],[109.679333,31.052835],[109.691462,31.054037],[109.712182,31.063691],[109.720431,31.070581],[109.727306,31.09473],[109.744442,31.100616],[109.753428,31.113389],[109.764819,31.11495],[109.758289,31.129242],[109.769533,31.143771],[109.770564,31.16166],[109.760646,31.175144],[109.742773,31.178185],[109.727944,31.171743],[109.703688,31.169903],[109.692493,31.172584],[109.668629,31.185466],[109.64511,31.177905],[109.63033,31.189147],[109.624389,31.190027],[109.622523,31.204747],[109.631951,31.217505],[109.629545,31.225703],[109.61668,31.229662],[109.588201,31.223384],[109.581572,31.225743],[109.569346,31.244456],[109.587366,31.260967],[109.602833,31.262686],[109.597776,31.268442],[109.61285,31.295018],[109.626893,31.295937],[109.644373,31.310641],[109.662443,31.294499],[109.690676,31.296577],[109.698679,31.302171],[109.713803,31.299094],[109.711446,31.31959],[109.716945,31.332013],[109.71503,31.338644],[109.720972,31.349746],[109.730006,31.356176],[109.749892,31.35362],[109.761431,31.346951],[109.775032,31.354179],[109.775425,31.361527],[109.785638,31.361088],[109.789223,31.377857],[109.803315,31.378336],[109.821384,31.387638],[109.830468,31.388317],[109.853496,31.382209],[109.890126,31.392069],[109.911878,31.392149],[109.922828,31.394664],[109.935005,31.414381],[109.940553,31.427869],[109.937804,31.440836],[109.94183,31.448456],[109.938049,31.458748],[109.94291,31.475341],[109.954744,31.468401],[109.967903,31.474304],[109.987789,31.474663],[109.996382,31.469359],[110.003649,31.453642],[110.020687,31.442073],[110.033502,31.439679],[110.034484,31.430822],[110.049411,31.41877],[110.053978,31.410909],[110.089773,31.408674],[110.100084,31.411268],[110.108824,31.408314],[110.115158,31.412265],[110.11889,31.400651],[110.127384,31.393386],[110.140004,31.390472],[110.145307,31.381331],[110.140053,31.368315],[110.14948,31.354299],[110.14732,31.34783],[110.157975,31.333491],[110.151739,31.317872],[110.159644,31.315355],[110.163965,31.30321],[110.156158,31.277315],[110.162443,31.251932],[110.171428,31.250573],[110.174866,31.243497],[110.169612,31.227943],[110.178008,31.204867],[110.176535,31.198067],[110.180218,31.179585],[110.186404,31.169583],[110.196912,31.163581],[110.198876,31.156538],[110.186895,31.145332],[110.1894,31.129482],[110.180218,31.121676],[110.161264,31.116111],[110.146927,31.116912],[110.145847,31.108144],[110.135437,31.106262],[110.12871,31.095131],[110.120117,31.088844],[110.122131,31.072904],[110.13308,31.059806],[110.126648,31.054678],[110.120854,31.032001],[110.140151,31.030638],[110.140986,31.00503],[110.136075,30.986751],[110.163572,30.991641],[110.172165,30.98659],[110.173245,30.979895],[110.161657,30.968308],[110.163769,30.961371],[110.153899,30.953832],[110.145601,30.922145],[110.151837,30.912316],[110.144324,30.897229],[110.124095,30.868133],[110.115306,30.845492],[110.095812,30.829873],[110.095861,30.82156],[110.089527,30.816058],[110.082309,30.799591],[110.052996,30.799591],[110.042488,30.80666],[110.039198,30.820516],[110.03198,30.820476],[110.019607,30.829592],[110.017937,30.855328],[110.005024,30.870381],[110.008215,30.883585],[109.995056,30.887839],[109.975956,30.888682],[109.958377,30.877445],[109.943696,30.87897],[109.940897,30.889685],[109.932304,30.887679],[109.905642,30.899797],[109.894545,30.899797],[109.878244,30.889163],[109.856099,30.880254],[109.81942,30.860225],[109.797619,30.855609],[109.780777,30.848583],[109.759074,30.832804],[109.729613,30.815376],[109.716601,30.80168],[109.718124,30.778661],[109.702657,30.770264],[109.702117,30.783643],[109.692149,30.778902],[109.685373,30.768657],[109.659153,30.761987]]]]}},{"type":"Feature","properties":{"adcode":500238,"name":"巫溪县","center":[109.628912,31.3966],"centroid":[109.35337,31.503107],"childrenNum":0,"level":"district","subFeatureIndex":33,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.94291,31.475341],[109.938049,31.458748],[109.94183,31.448456],[109.937804,31.440836],[109.940553,31.427869],[109.935005,31.414381],[109.922828,31.394664],[109.911878,31.392149],[109.890126,31.392069],[109.853496,31.382209],[109.830468,31.388317],[109.821384,31.387638],[109.803315,31.378336],[109.789223,31.377857],[109.785638,31.361088],[109.775425,31.361527],[109.775032,31.354179],[109.761431,31.346951],[109.749892,31.35362],[109.730006,31.356176],[109.720972,31.349746],[109.71503,31.338644],[109.716945,31.332013],[109.711446,31.31959],[109.713803,31.299094],[109.698679,31.302171],[109.690676,31.296577],[109.662443,31.294499],[109.644373,31.310641],[109.626893,31.295937],[109.61285,31.295018],[109.597776,31.268442],[109.602833,31.262686],[109.587366,31.260967],[109.569346,31.244456],[109.561883,31.243976],[109.55712,31.251053],[109.530409,31.253891],[109.518526,31.250333],[109.512487,31.243217],[109.497069,31.244816],[109.493533,31.249454],[109.479638,31.251772],[109.462698,31.250693],[109.450766,31.246535],[109.45003,31.238979],[109.435741,31.231981],[109.431617,31.240058],[109.415511,31.245496],[109.393857,31.242897],[109.387867,31.248654],[109.39042,31.262326],[109.376623,31.276236],[109.374757,31.286427],[109.354134,31.286826],[109.355853,31.295578],[109.334396,31.306925],[109.326392,31.324064],[109.322415,31.34779],[109.272577,31.355657],[109.266292,31.35985],[109.242085,31.362126],[109.235014,31.356975],[109.224114,31.362206],[109.213606,31.358332],[109.197206,31.362126],[109.176534,31.361527],[109.138137,31.366279],[109.123357,31.37083],[109.102735,31.364162],[109.079117,31.370112],[109.065712,31.364681],[109.05162,31.367117],[109.029181,31.370032],[109.020146,31.375781],[108.992207,31.380812],[108.983418,31.385762],[108.971487,31.380812],[108.962452,31.385722],[108.948409,31.382728],[108.936035,31.390991],[108.927197,31.386001],[108.916837,31.387399],[108.908146,31.383566],[108.900142,31.387558],[108.88988,31.383566],[108.886394,31.372148],[108.892826,31.364641],[108.89042,31.354738],[108.893268,31.342358],[108.887572,31.336007],[108.869896,31.339562],[108.865035,31.343716],[108.837096,31.346432],[108.834739,31.35382],[108.823053,31.356815],[108.822071,31.370271],[108.83248,31.375302],[108.816866,31.390233],[108.798748,31.396859],[108.795752,31.403086],[108.809894,31.417414],[108.800221,31.425155],[108.779205,31.435251],[108.759908,31.438602],[108.752298,31.443749],[108.740071,31.441834],[108.726617,31.455118],[108.703098,31.463814],[108.697255,31.476737],[108.69971,31.491652],[108.694554,31.499347],[108.703982,31.503972],[108.721707,31.503255],[108.730055,31.499746],[108.748026,31.505208],[108.761087,31.503893],[108.766881,31.513621],[108.769483,31.529845],[108.777094,31.543635],[108.794034,31.551366],[108.801399,31.574078],[108.820303,31.574596],[108.824133,31.578899],[108.837096,31.574237],[108.853398,31.578939],[108.865133,31.592801],[108.877997,31.602799],[108.894888,31.606025],[108.895821,31.614587],[108.887719,31.625657],[108.893268,31.632187],[108.892728,31.642578],[108.898227,31.65484],[108.906182,31.661248],[108.91448,31.660731],[108.918113,31.652929],[108.937607,31.652969],[108.954792,31.66288],[108.955529,31.654601],[108.992649,31.652969],[109.000407,31.657029],[109.00134,31.671039],[109.007331,31.673188],[109.0008,31.686758],[109.007036,31.691135],[109.038117,31.690777],[109.052013,31.696507],[109.06149,31.704743],[109.092473,31.699531],[109.122965,31.700167],[109.133325,31.705936],[109.148154,31.703669],[109.158514,31.69396],[109.16696,31.700207],[109.178253,31.69587],[109.209187,31.69412],[109.224261,31.688629],[109.228533,31.690817],[109.222542,31.701242],[109.227403,31.717035],[109.225145,31.724951],[109.266734,31.714927],[109.281611,31.716876],[109.302038,31.71067],[109.3232,31.70888],[109.361254,31.708642],[109.389487,31.705101],[109.411632,31.708244],[109.420274,31.720655],[109.425872,31.718786],[109.4462,31.722883],[109.45656,31.722008],[109.459703,31.715205],[109.472714,31.714649],[109.477134,31.720218],[109.491029,31.720973],[109.501095,31.717155],[109.549755,31.730002],[109.572096,31.726343],[109.580394,31.72869],[109.606172,31.714688],[109.617024,31.711585],[109.644913,31.720854],[109.659005,31.716956],[109.683016,31.71978],[109.693376,31.716558],[109.696028,31.70709],[109.709531,31.701122],[109.731086,31.700446],[109.728091,31.688828],[109.731872,31.673148],[109.740612,31.663636],[109.740416,31.635173],[109.737421,31.628683],[109.76423,31.602998],[109.745326,31.596426],[109.746406,31.577982],[109.727502,31.570731],[109.718909,31.556985],[109.735309,31.546106],[109.760204,31.547182],[109.765457,31.549653],[109.788584,31.55045],[109.801007,31.541443],[109.822071,31.553757],[109.83798,31.555272],[109.860174,31.543555],[109.869209,31.530124],[109.878194,31.528848],[109.894594,31.519162],[109.923859,31.521474],[109.934907,31.517727],[109.945267,31.506684],[109.965595,31.50788],[109.98229,31.512504],[109.961323,31.499268],[109.957248,31.490774],[109.942174,31.483238],[109.94291,31.475341]]]]}},{"type":"Feature","properties":{"adcode":500240,"name":"石柱土家族自治县","center":[108.112448,29.99853],"centroid":[108.298494,30.093676],"childrenNum":0,"level":"district","subFeatureIndex":34,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.424054,30.488956],[108.414332,30.475818],[108.421206,30.464372],[108.421796,30.448852],[108.411779,30.436919],[108.421206,30.4295],[108.430486,30.415628],[108.421697,30.410547],[108.425331,30.399052],[108.420912,30.394131],[108.399454,30.389412],[108.403284,30.374728],[108.421943,30.366457],[108.432696,30.35411],[108.451011,30.355603],[108.459898,30.359799],[108.46908,30.343819],[108.48273,30.33603],[108.498394,30.316332],[108.51499,30.315162],[108.526382,30.305271],[108.52486,30.294733],[108.533305,30.292108],[108.537921,30.278581],[108.54617,30.276279],[108.545237,30.269978],[108.562029,30.26287],[108.567332,30.254872],[108.58167,30.255882],[108.573519,30.237178],[108.56743,30.23435],[108.568904,30.225623],[108.553829,30.174537],[108.552258,30.163338],[108.56748,30.155697],[108.561489,30.144132],[108.546071,30.104372],[108.533207,30.084183],[108.532323,30.073702],[108.525252,30.073824],[108.516267,30.064232],[108.516414,30.05298],[108.524221,30.058647],[108.531783,30.055085],[108.526185,30.04954],[108.530703,30.043104],[108.528886,30.00545],[108.542634,29.99735],[108.534238,29.971833],[108.519458,29.943512],[108.515874,29.930383],[108.524074,29.911658],[108.524221,29.896821],[108.516169,29.885631],[108.517052,29.865479],[108.509049,29.878617],[108.495693,29.876914],[108.489163,29.867466],[108.468049,29.864181],[108.457394,29.865438],[108.453122,29.871683],[108.433776,29.880077],[108.402793,29.855908],[108.392777,29.863492],[108.386933,29.860004],[108.391598,29.853231],[108.371466,29.84159],[108.372841,29.834127],[108.368177,29.818913],[108.3942,29.816479],[108.383987,29.795501],[108.36091,29.756819],[108.365918,29.748537],[108.368078,29.726042],[108.373922,29.712803],[108.358013,29.720763],[108.350156,29.721047],[108.326391,29.711747],[108.315785,29.722793],[108.30513,29.72588],[108.298895,29.734773],[108.295752,29.729007],[108.27071,29.733149],[108.245669,29.750892],[108.239384,29.745289],[108.227992,29.747076],[108.22097,29.732499],[108.225193,29.725514],[108.217975,29.716336],[108.22156,29.712153],[108.205847,29.69948],[108.208891,29.685343],[108.195143,29.666979],[108.169267,29.658445],[108.168186,29.648083],[108.156107,29.644872],[108.149921,29.647636],[108.143587,29.659218],[108.156304,29.669579],[108.156157,29.676121],[108.174962,29.686075],[108.179529,29.699602],[108.169168,29.7087],[108.181051,29.734286],[108.17457,29.735463],[108.172213,29.745533],[108.178252,29.749877],[108.187925,29.743909],[108.204129,29.765182],[108.208204,29.764938],[108.217484,29.777887],[108.194112,29.790712],[108.18547,29.801628],[108.194014,29.812665],[108.190626,29.819441],[108.177859,29.822443],[108.172998,29.837656],[108.167008,29.838305],[108.14997,29.83011],[108.145992,29.846377],[108.122915,29.851771],[108.108823,29.848851],[108.099199,29.840657],[108.084125,29.838873],[108.058936,29.857246],[108.072488,29.870953],[108.071456,29.877157],[108.059869,29.889726],[108.042536,29.893456],[108.035907,29.90197],[108.049999,29.906226],[108.046316,29.912387],[108.036005,29.912225],[108.024908,29.934962],[108.014695,29.9472],[107.993336,29.96689],[108.002027,29.977544],[108.009687,29.978476],[108.018034,29.971589],[108.03247,29.990222],[108.024859,30.010957],[108.018476,30.014804],[108.02702,30.029056],[108.01661,30.042132],[108.007575,30.043508],[107.998492,30.053871],[108.00733,30.057028],[108.010571,30.071355],[108.021569,30.078032],[108.029622,30.089119],[108.034974,30.084183],[108.031144,30.072326],[108.037233,30.067591],[108.0554,30.072043],[108.083928,30.111209],[108.092374,30.129532],[108.075777,30.153917],[108.061587,30.157071],[108.070965,30.163702],[108.072438,30.175144],[108.085549,30.17862],[108.107595,30.207439],[108.120705,30.200568],[108.129887,30.210268],[108.119379,30.211803],[108.127383,30.223684],[108.124879,30.227199],[108.10843,30.219198],[108.101948,30.223482],[108.105533,30.232653],[108.097038,30.237259],[108.093994,30.253459],[108.103716,30.246995],[108.114273,30.251399],[108.121933,30.245824],[108.125861,30.235845],[108.129494,30.244531],[108.126303,30.255357],[108.141475,30.265495],[108.142212,30.273654],[108.129003,30.281125],[108.131606,30.288918],[108.127334,30.299982],[108.147318,30.297115],[108.147466,30.302606],[108.163473,30.321055],[108.163031,30.325294],[108.145894,30.334254],[108.127874,30.333487],[108.117072,30.329169],[108.094731,30.344667],[108.084419,30.343093],[108.084665,30.350115],[108.096449,30.358831],[108.12262,30.359799],[108.133128,30.362624],[108.152965,30.395019],[108.174619,30.410144],[108.186403,30.413854],[108.208351,30.408611],[108.223622,30.421274],[108.236732,30.409216],[108.254261,30.403529],[108.261479,30.388605],[108.275031,30.405546],[108.296538,30.401109],[108.298944,30.407562],[108.315835,30.425387],[108.317062,30.433129],[108.33248,30.449336],[108.338814,30.470337],[108.344657,30.476987],[108.378734,30.534884],[108.394593,30.536737],[108.404315,30.548295],[108.410404,30.543261],[108.409717,30.532749],[108.402253,30.529688],[108.399553,30.520504],[108.409962,30.517563],[108.412368,30.503059],[108.427786,30.512567],[108.42101,30.497176],[108.424054,30.488956]]]]}},{"type":"Feature","properties":{"adcode":500241,"name":"秀山土家族苗族自治县","center":[108.996043,28.444772],"centroid":[109.018121,28.491722],"childrenNum":0,"level":"district","subFeatureIndex":35,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.723377,28.491963],[108.730889,28.517853],[108.753329,28.532972],[108.763984,28.545707],[108.775964,28.544968],[108.785294,28.54924],[108.785981,28.562096],[108.799877,28.583657],[108.815295,28.593471],[108.819174,28.60082],[108.839256,28.604146],[108.854821,28.613136],[108.881484,28.621716],[108.895379,28.614737],[108.915314,28.621962],[108.936723,28.616913],[108.954252,28.610016],[108.961126,28.630213],[108.982633,28.682327],[108.990636,28.67884],[108.999622,28.699228],[109.01941,28.690696],[109.044991,28.719325],[109.05653,28.741879],[109.062128,28.759385],[109.05982,28.768198],[109.094338,28.79234],[109.105681,28.805699],[109.106712,28.816311],[109.092718,28.809305],[109.093455,28.819261],[109.104502,28.826595],[109.111622,28.824669],[109.117465,28.83106],[109.130919,28.832453],[109.147908,28.84552],[109.157188,28.844824],[109.166223,28.852402],[109.175896,28.8515],[109.197599,28.870217],[109.197943,28.875131],[109.211004,28.882788],[109.235505,28.880372],[109.234032,28.863828],[109.242674,28.85105],[109.239679,28.827168],[109.245817,28.812992],[109.246406,28.801683],[109.241888,28.794266],[109.241299,28.776519],[109.261333,28.774962],[109.256177,28.765616],[109.273019,28.760902],[109.278469,28.751514],[109.297668,28.748152],[109.300663,28.739665],[109.28824,28.727322],[109.294672,28.71912],[109.28495,28.713871],[109.271497,28.698941],[109.265015,28.699474],[109.252936,28.691558],[109.266194,28.680194],[109.270907,28.671783],[109.251758,28.660828],[109.221069,28.649133],[109.202902,28.63797],[109.193131,28.636205],[109.181395,28.621716],[109.186355,28.610632],[109.201478,28.598439],[109.236144,28.619417],[109.249401,28.608662],[109.258878,28.605583],[109.278469,28.612439],[109.287013,28.626806],[109.300172,28.626436],[109.306604,28.62069],[109.309354,28.598808],[109.3205,28.579797],[109.304738,28.579017],[109.29482,28.566286],[109.288928,28.546324],[109.27459,28.539217],[109.274688,28.524837],[109.280384,28.5204],[109.271988,28.51399],[109.274344,28.494676],[109.229613,28.474906],[109.215521,28.48214],[109.191756,28.470877],[109.192394,28.464423],[109.176583,28.446169],[109.180708,28.439466],[109.176731,28.43153],[109.168383,28.432064],[109.164946,28.414997],[109.154291,28.417588],[109.157139,28.403398],[109.153653,28.39731],[109.153113,28.38106],[109.144766,28.36382],[109.138579,28.358635],[109.151689,28.350528],[109.150805,28.344684],[109.137744,28.33423],[109.14123,28.320564],[109.126844,28.296932],[109.11614,28.288614],[109.117563,28.278607],[109.095959,28.261804],[109.088004,28.261392],[109.081523,28.24854],[109.085353,28.232803],[109.096106,28.22106],[109.101409,28.201404],[109.089477,28.196252],[109.086384,28.184712],[109.070033,28.191471],[109.06144,28.200126],[109.041603,28.20536],[109.038215,28.217434],[109.026186,28.220154],[109.013812,28.199591],[109.014647,28.17923],[109.009786,28.167893],[109.001537,28.16138],[108.985775,28.161339],[108.979539,28.171274],[108.956609,28.182321],[108.929407,28.190565],[108.927884,28.20025],[108.933187,28.207874],[108.919488,28.217764],[108.91227,28.21558],[108.897245,28.219536],[108.864445,28.206143],[108.855116,28.199879],[108.836212,28.20738],[108.826539,28.22551],[108.821776,28.245121],[108.807389,28.242855],[108.796636,28.22378],[108.773313,28.213478],[108.765309,28.192131],[108.758533,28.196046],[108.758681,28.220236],[108.749548,28.22757],[108.739678,28.226252],[108.737567,28.251424],[108.7276,28.259827],[108.725783,28.280296],[108.741053,28.294914],[108.763738,28.305619],[108.770072,28.314965],[108.76143,28.324557],[108.777929,28.347236],[108.777732,28.367441],[108.783084,28.380402],[108.762805,28.385791],[108.763296,28.398585],[108.779303,28.427418],[108.773509,28.438315],[108.746749,28.450239],[108.749106,28.461052],[108.729416,28.470918],[108.723377,28.491963]]]]}},{"type":"Feature","properties":{"adcode":500242,"name":"酉阳土家族苗族自治县","center":[108.767201,28.839828],"centroid":[108.800286,28.899839],"childrenNum":0,"level":"district","subFeatureIndex":36,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[109.235505,28.880372],[109.211004,28.882788],[109.197943,28.875131],[109.197599,28.870217],[109.175896,28.8515],[109.166223,28.852402],[109.157188,28.844824],[109.147908,28.84552],[109.130919,28.832453],[109.117465,28.83106],[109.111622,28.824669],[109.104502,28.826595],[109.093455,28.819261],[109.092718,28.809305],[109.106712,28.816311],[109.105681,28.805699],[109.094338,28.79234],[109.05982,28.768198],[109.062128,28.759385],[109.05653,28.741879],[109.044991,28.719325],[109.01941,28.690696],[108.999622,28.699228],[108.990636,28.67884],[108.982633,28.682327],[108.961126,28.630213],[108.954252,28.610016],[108.936723,28.616913],[108.915314,28.621962],[108.895379,28.614737],[108.881484,28.621716],[108.854821,28.613136],[108.839256,28.604146],[108.819174,28.60082],[108.815295,28.593471],[108.799877,28.583657],[108.785981,28.562096],[108.785294,28.54924],[108.775964,28.544968],[108.763984,28.545707],[108.753329,28.532972],[108.730889,28.517853],[108.723377,28.491963],[108.709727,28.501087],[108.701428,28.482469],[108.688613,28.482469],[108.671133,28.475276],[108.658661,28.47803],[108.645256,28.468616],[108.641476,28.455707],[108.663915,28.444318],[108.669856,28.431489],[108.688318,28.422318],[108.690921,28.410555],[108.696813,28.404591],[108.693523,28.395171],[108.664701,28.38287],[108.657041,28.362215],[108.659103,28.350322],[108.670102,28.354396],[108.677418,28.345795],[108.667352,28.334436],[108.647466,28.331101],[108.639855,28.333201],[108.630771,28.328014],[108.611573,28.324557],[108.606466,28.336576],[108.598021,28.34205],[108.580099,28.343285],[108.576367,28.364314],[108.577545,28.390193],[108.587415,28.404961],[108.608823,28.407306],[108.609952,28.435683],[108.602833,28.438849],[108.597235,28.456817],[108.586776,28.463066],[108.589182,28.473837],[108.574943,28.497676],[108.578036,28.509018],[108.573224,28.528124],[108.576858,28.533794],[108.58933,28.538601],[108.610934,28.539381],[108.604453,28.589529],[108.618889,28.606527],[108.636025,28.621757],[108.632343,28.638914],[108.623259,28.641418],[108.609019,28.633619],[108.596155,28.64035],[108.585303,28.639653],[108.586482,28.64704],[108.574796,28.660336],[108.564828,28.661156],[108.561146,28.649174],[108.548723,28.64782],[108.53851,28.652703],[108.522208,28.641951],[108.505415,28.635795],[108.500996,28.626642],[108.491274,28.630582],[108.471142,28.627791],[108.461371,28.634153],[108.43903,28.633989],[108.421697,28.643346],[108.39096,28.651759],[108.35217,28.676091],[108.344019,28.673425],[108.332529,28.679579],[108.340238,28.689671],[108.347898,28.710262],[108.347259,28.736302],[108.372498,28.760164],[108.375051,28.767092],[108.385264,28.772216],[108.388996,28.785823],[108.386492,28.801642],[108.382416,28.805781],[108.354232,28.814263],[108.355165,28.831634],[108.346425,28.856333],[108.355312,28.870831],[108.357423,28.893393],[108.350353,28.907107],[108.350549,28.930316],[108.346916,28.941488],[108.339943,28.947872],[108.322954,28.953969],[108.312103,28.997497],[108.326686,29.000932],[108.331989,29.010911],[108.348143,29.027228],[108.373627,29.044849],[108.394446,29.053107],[108.415756,29.051268],[108.424987,29.057277],[108.434906,29.070643],[108.447279,29.066187],[108.456314,29.071951],[108.464858,29.087521],[108.473008,29.08462],[108.492109,29.095245],[108.505464,29.095326],[108.518329,29.100148],[108.527167,29.117798],[108.528198,29.128338],[108.534631,29.133975],[108.55869,29.13953],[108.570769,29.124416],[108.598266,29.105705],[108.587169,29.095081],[108.599396,29.086908],[108.60789,29.109014],[108.615206,29.109709],[108.614568,29.095408],[108.625665,29.08699],[108.622179,29.073422],[108.628906,29.072891],[108.646533,29.081841],[108.661313,29.071624],[108.667205,29.078776],[108.662835,29.090382],[108.669856,29.095939],[108.66416,29.103744],[108.668678,29.108156],[108.681984,29.105623],[108.686698,29.109341],[108.698777,29.101619],[108.700397,29.094427],[108.726912,29.080492],[108.747584,29.092384],[108.749008,29.10881],[108.774295,29.110485],[108.775768,29.124008],[108.784852,29.123272],[108.803756,29.129195],[108.812054,29.122047],[108.832087,29.117267],[108.833266,29.109995],[108.847702,29.105214],[108.855656,29.122659],[108.854625,29.133484],[108.882416,29.1791],[108.896607,29.209024],[108.915265,29.215513],[108.925135,29.222615],[108.925871,29.23347],[108.937607,29.244283],[108.954252,29.272066],[108.93903,29.274065],[108.919783,29.283732],[108.915462,29.293561],[108.903432,29.296416],[108.908784,29.312972],[108.919734,29.326305],[108.956069,29.330953],[108.97237,29.32924],[108.986168,29.336742],[108.985088,29.350479],[108.994761,29.355085],[108.999425,29.363929],[109.009786,29.36022],[109.034729,29.360261],[109.033453,29.378233],[109.039934,29.389805],[109.053191,29.40272],[109.06419,29.401743],[109.080786,29.390661],[109.090361,29.378681],[109.101704,29.373506],[109.112506,29.360995],[109.110002,29.342693],[109.114568,29.332787],[109.108725,29.319333],[109.113881,29.314196],[109.10465,29.293154],[109.106467,29.288545],[109.129986,29.282468],[109.141967,29.270475],[109.118545,29.232409],[109.110395,29.215105],[109.122965,29.199268],[109.123014,29.191267],[109.138824,29.169505],[109.154488,29.172363],[109.16254,29.180693],[109.18007,29.171955],[109.203098,29.151823],[109.215521,29.145289],[109.228533,29.129972],[109.232559,29.120086],[109.22593,29.113508],[109.237273,29.086704],[109.257748,29.086745],[109.266194,29.079552],[109.287847,29.07101],[109.301154,29.070643],[109.312251,29.066351],[109.319616,29.04256],[109.304836,29.020808],[109.295458,29.016391],[109.292365,29.004695],[109.292463,28.987639],[109.284165,28.972299],[109.272331,28.970949],[109.261038,28.950532],[109.25544,28.926141],[109.256864,28.907721],[109.239924,28.892042],[109.235505,28.880372]]]]}},{"type":"Feature","properties":{"adcode":500243,"name":"彭水苗族土家族自治县","center":[108.166551,29.293856],"centroid":[108.266309,29.353956],"childrenNum":0,"level":"district","subFeatureIndex":37,"acroutes":[100000,500000]},"geometry":{"type":"MultiPolygon","coordinates":[[[[108.312103,28.997497],[108.308715,29.003386],[108.309795,29.018436],[108.297863,29.047179],[108.307193,29.077509],[108.301939,29.083067],[108.28657,29.089197],[108.270612,29.090913],[108.268648,29.077795],[108.260203,29.063735],[108.256962,29.041987],[108.24228,29.028372],[108.224653,29.031562],[108.230398,29.046975],[108.215029,29.056132],[108.204718,29.056786],[108.197745,29.070643],[108.171427,29.06537],[108.150068,29.053311],[108.132686,29.054088],[108.130624,29.063326],[108.109854,29.076078],[108.070474,29.086418],[108.035956,29.054047],[108.034532,29.046771],[108.02427,29.038676],[107.993925,29.033851],[107.949292,29.033729],[107.931124,29.035241],[107.908783,29.007353],[107.885215,29.008417],[107.887571,29.000114],[107.883054,28.986535],[107.872006,28.983058],[107.867538,28.960475],[107.842005,28.964648],[107.82811,28.976144],[107.810433,28.984285],[107.821186,29.005758],[107.823543,29.034219],[107.838421,29.040597],[107.849567,29.039289],[107.874707,29.057031],[107.873086,29.074852],[107.883938,29.078163],[107.889486,29.085151],[107.883889,29.106195],[107.895133,29.117185],[107.892727,29.134138],[107.899896,29.166361],[107.903775,29.172282],[107.898865,29.184245],[107.911975,29.190328],[107.934905,29.185102],[107.94286,29.178243],[107.960143,29.188695],[107.970111,29.198492],[107.973057,29.210166],[107.986756,29.217799],[107.997804,29.236857],[108.006446,29.229267],[108.010325,29.247792],[107.99697,29.26248],[107.998983,29.273943],[107.996282,29.288545],[108.003304,29.315174],[107.992059,29.325408],[107.984301,29.339188],[107.983319,29.350397],[107.976641,29.36344],[107.988426,29.38027],[107.992796,29.397383],[107.989653,29.416856],[108.004286,29.428424],[108.002763,29.442108],[108.013075,29.448786],[108.013959,29.469674],[108.017347,29.483719],[108.015432,29.504559],[108.055793,29.531783],[108.074059,29.549073],[108.075826,29.557982],[108.066988,29.566687],[108.066153,29.575472],[108.075876,29.577627],[108.084026,29.588892],[108.076563,29.605726],[108.067872,29.614223],[108.078773,29.618817],[108.082161,29.611377],[108.098757,29.600684],[108.114175,29.599302],[108.117366,29.603449],[108.132391,29.603815],[108.153652,29.599749],[108.163374,29.603612],[108.167499,29.617679],[108.178547,29.619183],[108.182033,29.625972],[108.17894,29.647839],[108.168186,29.648083],[108.169267,29.658445],[108.195143,29.666979],[108.208891,29.685343],[108.205847,29.69948],[108.22156,29.712153],[108.217975,29.716336],[108.225193,29.725514],[108.22097,29.732499],[108.227992,29.747076],[108.239384,29.745289],[108.245669,29.750892],[108.27071,29.733149],[108.295752,29.729007],[108.298895,29.734773],[108.30513,29.72588],[108.315785,29.722793],[108.326391,29.711747],[108.350156,29.721047],[108.358013,29.720763],[108.373922,29.712803],[108.368078,29.726042],[108.365918,29.748537],[108.36091,29.756819],[108.383987,29.795501],[108.3942,29.816479],[108.393169,29.83583],[108.404561,29.834451],[108.408882,29.820658],[108.424496,29.815302],[108.425478,29.804185],[108.416984,29.787344],[108.421304,29.774153],[108.444235,29.776913],[108.445462,29.76437],[108.438588,29.75617],[108.437115,29.740782],[108.460487,29.740904],[108.467656,29.729697],[108.489506,29.723199],[108.506446,29.708172],[108.526676,29.696759],[108.52373,29.683109],[108.503549,29.67669],[108.504139,29.666288],[108.489997,29.642515],[108.487199,29.624102],[108.499965,29.622069],[108.507036,29.611093],[108.512633,29.614467],[108.516709,29.602148],[108.534974,29.588851],[108.534532,29.572177],[108.548379,29.557575],[108.547643,29.547406],[108.536251,29.540001],[108.515334,29.543948],[108.506054,29.536868],[108.494711,29.515099],[108.501242,29.49996],[108.50954,29.50285],[108.539688,29.491697],[108.561686,29.491657],[108.585549,29.477328],[108.581228,29.464911],[108.59257,29.442963],[108.576367,29.41706],[108.555843,29.412701],[108.552995,29.390539],[108.547201,29.381697],[108.550196,29.371754],[108.561538,29.352598],[108.549705,29.328303],[108.549459,29.315378],[108.560409,29.306081],[108.573568,29.302411],[108.584272,29.285812],[108.583192,29.278063],[108.571948,29.265703],[108.575778,29.252362],[108.568314,29.236245],[108.569247,29.224941],[108.555597,29.218738],[108.548919,29.205064],[108.556775,29.184857],[108.574403,29.164115],[108.570671,29.152313],[108.55869,29.13953],[108.534631,29.133975],[108.528198,29.128338],[108.527167,29.117798],[108.518329,29.100148],[108.505464,29.095326],[108.492109,29.095245],[108.473008,29.08462],[108.464858,29.087521],[108.456314,29.071951],[108.447279,29.066187],[108.434906,29.070643],[108.424987,29.057277],[108.415756,29.051268],[108.394446,29.053107],[108.373627,29.044849],[108.348143,29.027228],[108.331989,29.010911],[108.326686,29.000932],[108.312103,28.997497]]]]}}]} + + ); +})); \ No newline at end of file diff --git a/src/assets/chartstheme/echarts-skin.js b/src/assets/chartstheme/echarts-skin.js new file mode 100644 index 0000000..8ffb3fa --- /dev/null +++ b/src/assets/chartstheme/echarts-skin.js @@ -0,0 +1,675 @@ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['exports', 'echarts'], factory); + } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { + // CommonJS + factory(exports, require('echarts')); + } else { + // Browser globals + factory({}, root.echarts); + } +}(this, function (exports, echarts) { + var log = function (msg) { + if (typeof console !== 'undefined') { + console && console.error && console.error(msg); + } + }; + if (!echarts) { + log('ECharts is not Loaded'); + return; + } + + //color + var color = ['#00C2FF', '#FF2D55', '#C6C600', '#DA8E1E', '#B9302D', '#9E5DFF']; + //颜色 + var backgroundColor = "rgba(0,0,0,0)";//背景色 + var fontSize = 12;//文字大小,label + //grid + var leftGrid = 60; //距离左侧距离 + var rightGrid = 30; //距离右侧距离 + var topGrid = 60; //距离顶部距离 + var bottomGrid = 30; //距离底部距离 + var containLabel = false; //grid区域是否包含坐标轴的刻度标签 + + //标题 + var colorTitle = "#fff"; //主标题颜色 + var fontSizeTitle = 18; //主标题大小 + var colorSubTitle = "#fff"; //主标题颜色 + var fontSizeSubTitle = 12; //主标题大小 + var leftTitle = 15;//主标题距离左侧距离,标题自带5px留白 + var topTitle = 10;//主标题距离顶部距离,标题自带5px留白 + + //图例 + var colorLegend = "#fff"; //图例文字颜色 + var leftLegend = "auto"; + var rightLegend = 0; + var topLegend = 10; + var itemGapLegend = 5;//图例每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。 + var itemWidthLegend = 12;//图例标记的图形宽度。 + var itemHeightLegend = 8;//图例标记的图形高度。 + var fontSizeLegend = 12; //图例字号 + var iconLegend = 'rect'; //图例形状 + + //轴线-类目轴 + var showAxisLineLine = true; //是否显示轴线 + var colorAxisLineLine = "#fff"; //轴线颜色 + + var showAxisLineLable = true; //是否显示标签 + var colorAxisLineLable = "rgba(255,255,255,1)"; //标签颜色 + var fontSizeAxisLineLable = 12; //标签文字字号 + + var showAxisLineTick = false; //是否显示刻度 + var colorAxisLineTick = "rgba(255,255,255,.3)"; //刻度颜色 + + var showAxisLineSplitLine = false; //是否显示分割线 + var colorAxisLineSplitLine = ['rgba(255,255,255,.3)']; //分割线颜色 + var colorAxisLineSplitLineType = "dashed"; //分割线类型 + + var showAxisLineSplitArea = false; //是否显示分割区域 + var colorAxisLineSplitArea = ["rgba(250,250,250,0.05)", "rgba(200,200,200,0.02)"]; //分割区域颜色 + + + //轴线-数值轴 + var showValueLineLine = true; //是否显示轴线 + var colorValueLineLine = "#fff"; //轴线颜色 + + var showValueLineLable = true; //是否显示标签 + var colorValueLineLable = "rgba(255,255,255,1)"; //标签颜色 + var fontSizeValueLineLable = 12; //标签文字字号 + + var showValueLineTick = false; //是否显示刻度 + var colorValueLineTick = "rgba(255,255,255,.3)"; //刻度颜色 + + var showValueLineSplitLine = false; //是否显示分割线 + var colorValueLineSplitLine = ["rgba(255,255,255,.2)"]; //分割线颜色 + var colorValueLineSplitLineType = "dashed"; //分割线类型 + + var showValueLineSplitArea = false; //是否显示分割区域 + var colorValueLineSplitArea = ["rgba(250,250,250,0.05)", "rgba(200,200,200,0.02)"]; //分割区域颜色 + + //折线图 + var symbolSizeLine = 6;//标记的图形大小 + var symbolTypeLine = "circle";//标记的图形类型 + var smoothLine = false;//是否平滑显示 + + //雷达图 + var startAngleRadar = 90;//坐标系起始角度,也就是第一个指示器轴的角度。 + var splitNumberRadar = 4;//指示器轴的分割段数 + var symbolSizeRadar = 5;//标记的图形大小 + var symbolTypeRadar = "circle";//标记的图形类型 + var shapeRadar = "polygon";//雷达图绘制类型,支持 多边形'polygon' 和 圆形'circle'。 + var colorNameRadar = "#fff";//name颜色 + var colorAxisLineRadar = "#4496FF";//坐标轴线线的颜色。//rgba(0,120,255,.2) + var colorsplitLineRadar = "#4496FF"; //分隔线颜色//rgba(0,111,255,.2) + var colorsplitAreaRadar = ["rgba(0,0,0,0)", "rgba(0,0,0,.02)"]; //分隔区域颜色 + + + echarts.registerTheme('skinUpp', { + //色卡 + "color": color, + //背景色 + "backgroundColor": backgroundColor, + //文字 + "textStyle": { + 'fontSize' : fontSize, + }, + //网格grid + "grid": { + "left": leftGrid, + "right": rightGrid, + "bottom": bottomGrid, + "top": topGrid, + "containLabel": containLabel, + }, + //标题 + "title": { + // 主标题 + "textStyle": { + "color": colorTitle, + "fontSize": fontSizeTitle, + }, + // 副标题 + "subtextStyle": { + "color": colorSubTitle, + "fontSize": fontSizeSubTitle, + }, + "left": leftTitle, + "top": topTitle, + }, + //折线 + "line": { + "itemStyle": { + "normal": { + "borderWidth": "2" + } + }, + "lineStyle": { + "normal": { + "width": "2" + } + }, + "symbolSize": symbolSizeLine, + "symbol": symbolTypeLine, + "smooth": smoothLine, + }, + //雷达图 + "radar": { + "itemStyle": { + "normal": { + "borderWidth": "5" + } + }, + "lineStyle": { + "normal": { + "width": "2" + } + }, + "smooth": true, + //以上的好像无用 + "startAngle": startAngleRadar, + "splitNumber": splitNumberRadar, + "symbolSize": symbolSizeRadar, + "symbol": symbolTypeRadar, + "shape": shapeRadar, + "name":{ + "textStyle": { + "color": colorNameRadar + } + }, + "axisLine": { + "lineStyle": { + "color": colorAxisLineRadar + } + }, + "splitLine": { + "lineStyle": { + "color": colorsplitLineRadar + } + }, + "splitArea": { + "areaStyle": { + "color": colorsplitAreaRadar + } + }, + }, + //柱状图 + "bar": { + "itemStyle": { + "normal": { + "barBorderWidth": 0, + "barBorderColor": "#ccc", + }, + "emphasis": { + "barBorderWidth": 0, + "barBorderColor": "#ccc" + } + }, + "barMaxWidth": "60%",//最大宽度 + "barWidth": 18, + + }, + //饼图 + "pie": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //散点(气泡)图 + "scatter": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //箱形图 + "boxplot": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //平行坐标系的系列 + "parallel": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //桑基图 + "sankey": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //漏斗图 + "funnel": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //仪表盘 + "gauge": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + //K线图 + "candlestick": { + "itemStyle": { + "normal": { + "color": "#edafda", + "color0": "transparent", + "borderColor": "#d680bc", + "borderColor0": "#8fd3e8", + "borderWidth": "2" + } + } + }, + //关系图 + "graph": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + } + }, + "lineStyle": { + "normal": { + "width": 1, + "color": "#aaaaaa" + } + }, + "symbolSize": "6", + "symbol": "emptyCircle", + "smooth": true, + "color": [ + "#516b91", + "#59c4e6", + "#edafda", + "#93b7e3", + "#a5e7f0", + "#cbb0e3" + ], + "label": { + "normal": { + "textStyle": { + "color": "#eeeeee" + } + } + } + }, + //地图 + "map": { + "itemStyle": { + "normal": { + "areaColor": "#f3f3f3", + "borderColor": "#516b91", + "borderWidth": 0.5 + }, + "emphasis": { + "areaColor": "rgba(165,231,240,1)", + "borderColor": "#516b91", + "borderWidth": 1 + } + }, + "label": { + "normal": { + "textStyle": { + "color": "#000000" + } + }, + "emphasis": { + "textStyle": { + "color": "rgb(81,107,145)" + } + } + } + }, + //地理坐标系组件 + "geo": { + "itemStyle": { + "normal": { + "areaColor": "#f3f3f3", + "borderColor": "#516b91", + "borderWidth": 0.5 + }, + "emphasis": { + "areaColor": "rgba(165,231,240,1)", + "borderColor": "#516b91", + "borderWidth": 1 + } + }, + "label": { + "normal": { + "textStyle": { + "color": "#000000" + } + }, + "emphasis": { + "textStyle": { + "color": "rgb(81,107,145)" + } + } + } + }, + //类目轴 + "categoryAxis": { + //轴线 + "axisLine": { + "show": showAxisLineLine, + "lineStyle": { + "color": colorAxisLineLine, + } + }, + //刻度 + "axisTick": { + "show": showAxisLineTick, + "lineStyle": { + "color": colorAxisLineTick, + } + }, + //标签 + "axisLabel": { + "show": showAxisLineLable, + "textStyle": { + "color": colorAxisLineLable, + "fontSize": fontSizeAxisLineLable, + } + }, + //分割线 + "splitLine": { + "show": showAxisLineSplitLine, + "lineStyle": { + "color": colorAxisLineSplitLine, + "type": colorAxisLineSplitLineType, + } + }, + //分割区域 + "splitArea": { + "show": showAxisLineSplitArea, + "areaStyle": { + "color": colorAxisLineSplitArea, + } + } + }, + //数值轴 + "valueAxis": { + //轴线 + "axisLine": { + "show": showValueLineLine, + "lineStyle": { + "color": colorValueLineLine, + } + }, + //刻度 + "axisTick": { + "show": showValueLineTick, + "lineStyle": { + "color": colorValueLineTick, + } + }, + //标签 + "axisLabel": { + "show": showValueLineLable, + "textStyle": { + "color": colorValueLineLable, + "fontSize": fontSizeValueLineLable, + } + }, + //分割线 + "splitLine": { + "show": showValueLineSplitLine, + "lineStyle": { + "color": colorValueLineSplitLine, + "type": colorValueLineSplitLineType, + } + }, + //分割区域 + "splitArea": { + "show": showValueLineSplitArea, + "areaStyle": { + "color": colorValueLineSplitArea, + } + } + }, + "logAxis": { + "axisLine": { + "show": true, + "lineStyle": { + "color": "#cccccc" + } + }, + "axisTick": { + "show": false, + "lineStyle": { + "color": "#333" + } + }, + "axisLabel": { + "show": true, + "textStyle": { + "color": "#999999" + } + }, + "splitLine": { + "show": true, + "lineStyle": { + "color": [ + "#eeeeee" + ] + } + }, + "splitArea": { + "show": false, + "areaStyle": { + "color": [ + "rgba(250,250,250,0.05)", + "rgba(200,200,200,0.02)" + ] + } + } + }, + "timeAxis": { + "axisLine": { + "show": true, + "lineStyle": { + "color": "#cccccc" + } + }, + "axisTick": { + "show": false, + "lineStyle": { + "color": "#333" + } + }, + "axisLabel": { + "show": true, + "textStyle": { + "color": "#999999" + } + }, + "splitLine": { + "show": true, + "lineStyle": { + "color": [ + "#eeeeee" + ] + } + }, + "splitArea": { + "show": false, + "areaStyle": { + "color": [ + "rgba(250,250,250,0.05)", + "rgba(200,200,200,0.02)" + ] + } + } + }, + //工具栏 + "toolbox": { + "iconStyle": { + "normal": { + "borderColor": "#999999" + }, + "emphasis": { + "borderColor": "#666666" + } + } + }, + //图例 + "legend": { + //靠右侧,默认5px留白 + "left": leftLegend, + "right": rightLegend, + "top": topLegend, + "itemGap": itemGapLegend, + "itemWidth": itemWidthLegend, + "itemHeight": itemHeightLegend, + "icon": iconLegend, + //文字样式 + "textStyle": { + "color": colorLegend, + "fontSize":fontSizeLegend, + }, + }, + //弹窗 + "tooltip": { + "axisPointer": { + "lineStyle": { + "color": "#cccccc", + "width": 1 + }, + "crossStyle": { + "color": "#cccccc", + "width": 1 + } + } + }, + + "timeline": { + "lineStyle": { + "color": "#8fd3e8", + "width": 1 + }, + "itemStyle": { + "normal": { + "color": "#8fd3e8", + "borderWidth": 1 + }, + "emphasis": { + "color": "#8fd3e8" + } + }, + "controlStyle": { + "normal": { + "color": "#8fd3e8", + "borderColor": "#8fd3e8", + "borderWidth": 0.5 + }, + "emphasis": { + "color": "#8fd3e8", + "borderColor": "#8fd3e8", + "borderWidth": 0.5 + } + }, + "checkpointStyle": { + "color": "#8fd3e8", + "borderColor": "rgba(138,124,168,0.37)" + }, + "label": { + "normal": { + "textStyle": { + "color": "#8fd3e8" + } + }, + "emphasis": { + "textStyle": { + "color": "#8fd3e8" + } + } + } + }, + //视觉映射组件 + "visualMap": { + "color": [ + "#516b91", + "#59c4e6", + "#a5e7f0" + ] + }, + //区域缩放 + "dataZoom": { + "backgroundColor": "rgba(0,0,0,0)", + "dataBackgroundColor": "rgba(255,255,255,0.3)", + "fillerColor": "rgba(167,183,204,0.4)", + "handleColor": "#a7b7cc", + "handleSize": "100%", + "textStyle": { + "color": "#333333" + } + }, + //标注 + "markPoint": { + "label": { + "normal": { + "textStyle": { + "color": "#eeeeee" + } + }, + "emphasis": { + "textStyle": { + "color": "#eeeeee" + } + } + } + } + }); +})); diff --git a/src/assets/chartstheme/westeros.js b/src/assets/chartstheme/westeros.js new file mode 100644 index 0000000..2c1b2c4 --- /dev/null +++ b/src/assets/chartstheme/westeros.js @@ -0,0 +1,513 @@ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['exports', 'echarts'], factory); + } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { + // CommonJS + factory(exports, require('echarts')); + } else { + // Browser globals + factory({}, root.echarts); + } +}(this, function (exports, echarts) { + var log = function (msg) { + if (typeof console !== 'undefined') { + console && console.error && console.error(msg); + } + }; + if (!echarts) { + log('ECharts is not Loaded'); + return; + } + echarts.registerTheme('westeros', { + "color": [ + "#516b91", + "#59c4e6", + "#edafda", + "#93b7e3", + "#a5e7f0", + "#cbb0e3" + ], + "backgroundColor": "rgba(0,0,0,0)", + "textStyle": {}, + "title": { + "textStyle": { + "color": "#516b91" + }, + "subtextStyle": { + "color": "#93b7e3" + } + }, + "line": { + "itemStyle": { + "normal": { + "borderWidth": "2" + } + }, + "lineStyle": { + "normal": { + "width": "2" + } + }, + "symbolSize": "6", + "symbol": "emptyCircle", + "smooth": true + }, + "radar": { + "itemStyle": { + "normal": { + "borderWidth": "2" + } + }, + "lineStyle": { + "normal": { + "width": "2" + } + }, + "symbolSize": "6", + "symbol": "emptyCircle", + "smooth": true + }, + "bar": { + "itemStyle": { + "normal": { + "barBorderWidth": 0, + "barBorderColor": "#ccc" + }, + "emphasis": { + "barBorderWidth": 0, + "barBorderColor": "#ccc" + } + } + }, + "pie": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "scatter": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "boxplot": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "parallel": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "sankey": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "funnel": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "gauge": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + }, + "emphasis": { + "borderWidth": 0, + "borderColor": "#ccc" + } + } + }, + "candlestick": { + "itemStyle": { + "normal": { + "color": "#edafda", + "color0": "transparent", + "borderColor": "#d680bc", + "borderColor0": "#8fd3e8", + "borderWidth": "2" + } + } + }, + "graph": { + "itemStyle": { + "normal": { + "borderWidth": 0, + "borderColor": "#ccc" + } + }, + "lineStyle": { + "normal": { + "width": 1, + "color": "#aaa" + } + }, + "symbolSize": "6", + "symbol": "emptyCircle", + "smooth": true, + "color": [ + "#516b91", + "#59c4e6", + "#edafda", + "#93b7e3", + "#a5e7f0", + "#cbb0e3" + ], + "label": { + "normal": { + "textStyle": { + "color": "#eee" + } + } + } + }, + "map": { + "itemStyle": { + "normal": { + "areaColor": "#f3f3f3", + "borderColor": "#516b91", + "borderWidth": 0.5 + }, + "emphasis": { + "areaColor": "#a5e7f0", + "borderColor": "#516b91", + "borderWidth": 1 + } + }, + "label": { + "normal": { + "textStyle": { + "color": "#000" + } + }, + "emphasis": { + "textStyle": { + "color": "#516b91" + } + } + } + }, + "geo": { + "itemStyle": { + "normal": { + "areaColor": "#f3f3f3", + "borderColor": "#516b91", + "borderWidth": 0.5 + }, + "emphasis": { + "areaColor": "#a5e7f0", + "borderColor": "#516b91", + "borderWidth": 1 + } + }, + "label": { + "normal": { + "textStyle": { + "color": "#000" + } + }, + "emphasis": { + "textStyle": { + "color": "#516b91" + } + } + } + }, + "categoryAxis": { + "axisLine": { + "show": true, + "lineStyle": { + "color": "#cccccc" + } + }, + "axisTick": { + "show": false, + "lineStyle": { + "color": "#333" + } + }, + "axisLabel": { + "show": true, + "textStyle": { + "color": "#999999" + } + }, + "splitLine": { + "show": true, + "lineStyle": { + "color": [ + "#eeeeee" + ] + } + }, + "splitArea": { + "show": false, + "areaStyle": { + "color": [ + "rgba(250,250,250,0.05)", + "rgba(200,200,200,0.02)" + ] + } + } + }, + "valueAxis": { + "axisLine": { + "show": true, + "lineStyle": { + "color": "#cccccc" + } + }, + "axisTick": { + "show": false, + "lineStyle": { + "color": "#333" + } + }, + "axisLabel": { + "show": true, + "textStyle": { + "color": "#999999" + } + }, + "splitLine": { + "show": true, + "lineStyle": { + "color": [ + "#eeeeee" + ] + } + }, + "splitArea": { + "show": false, + "areaStyle": { + "color": [ + "rgba(250,250,250,0.05)", + "rgba(200,200,200,0.02)" + ] + } + } + }, + "logAxis": { + "axisLine": { + "show": true, + "lineStyle": { + "color": "#cccccc" + } + }, + "axisTick": { + "show": false, + "lineStyle": { + "color": "#333" + } + }, + "axisLabel": { + "show": true, + "textStyle": { + "color": "#999999" + } + }, + "splitLine": { + "show": true, + "lineStyle": { + "color": [ + "#eeeeee" + ] + } + }, + "splitArea": { + "show": false, + "areaStyle": { + "color": [ + "rgba(250,250,250,0.05)", + "rgba(200,200,200,0.02)" + ] + } + } + }, + "timeAxis": { + "axisLine": { + "show": true, + "lineStyle": { + "color": "#cccccc" + } + }, + "axisTick": { + "show": false, + "lineStyle": { + "color": "#333" + } + }, + "axisLabel": { + "show": true, + "textStyle": { + "color": "#999999" + } + }, + "splitLine": { + "show": true, + "lineStyle": { + "color": [ + "#eeeeee" + ] + } + }, + "splitArea": { + "show": false, + "areaStyle": { + "color": [ + "rgba(250,250,250,0.05)", + "rgba(200,200,200,0.02)" + ] + } + } + }, + "toolbox": { + "iconStyle": { + "normal": { + "borderColor": "#999999" + }, + "emphasis": { + "borderColor": "#666666" + } + } + }, + "legend": { + "textStyle": { + "color": "#999999" + } + }, + "tooltip": { + "axisPointer": { + "lineStyle": { + "color": "#cccccc", + "width": 1 + }, + "crossStyle": { + "color": "#cccccc", + "width": 1 + } + } + }, + "timeline": { + "lineStyle": { + "color": "#8fd3e8", + "width": 1 + }, + "itemStyle": { + "normal": { + "color": "#8fd3e8", + "borderWidth": 1 + }, + "emphasis": { + "color": "#8fd3e8" + } + }, + "controlStyle": { + "normal": { + "color": "#8fd3e8", + "borderColor": "#8fd3e8", + "borderWidth": 0.5 + }, + "emphasis": { + "color": "#8fd3e8", + "borderColor": "#8fd3e8", + "borderWidth": 0.5 + } + }, + "checkpointStyle": { + "color": "#8fd3e8", + "borderColor": "rgba(138,124,168,0.37)" + }, + "label": { + "normal": { + "textStyle": { + "color": "#8fd3e8" + } + }, + "emphasis": { + "textStyle": { + "color": "#8fd3e8" + } + } + } + }, + "visualMap": { + "color": [ + "#516b91", + "#59c4e6", + "#a5e7f0" + ] + }, + "dataZoom": { + "backgroundColor": "rgba(0,0,0,0)", + "dataBackgroundColor": "rgba(255,255,255,0.3)", + "fillerColor": "rgba(167,183,204,0.4)", + "handleColor": "#a7b7cc", + "handleSize": "100%", + "textStyle": { + "color": "#333333" + } + }, + "markPoint": { + "label": { + "normal": { + "textStyle": { + "color": "#eee" + } + }, + "emphasis": { + "textStyle": { + "color": "#eee" + } + } + } + } + }); +})); diff --git a/src/assets/css/newStyle.css b/src/assets/css/newStyle.css new file mode 100644 index 0000000..843324d --- /dev/null +++ b/src/assets/css/newStyle.css @@ -0,0 +1,533 @@ +@charset "UTF-8"; +body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td, hr, button, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { margin: 0; padding: 0; } + +h1, h2, h3, h4, h5, h6 { font-size: 100%; font-weight: 400; } + +address, caption, cite, code, dfn, em, th, var { font-style: normal; font-weight: 400; } + +ol, ul, li { list-style: none; } + +a { text-decoration: none; color: #fff; background-color: transparent; -webkit-text-decoration-skip: objects; } + +a:hover { text-decoration: none; color: #93FCFF; } + +a:active, a:focus, a:hover { outline-width: 0; text-decoration: none; outline: none; } + +label { font-weight: 400; } + +fieldset, img { border: 0; } + +html, body { color: #fff; background: #000D12; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-tap-highlight-color: transparent; height: 100%; } + +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } + +audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } + +body, button, input, select, textarea { font-family: Helvetica Neue, Helvetica, Arial, PingFang SC, Hiragino Sans GB, Heiti SC, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif; font-size: 12px; line-height: 1.428571; } + +::-ms-clear, ::-ms-reveal { display: none; } + +button, input, select, textarea { font-size: 100%; } + +button, input[type=button], input[type=reset], input[type=submit] { cursor: pointer; -webkit-appearance: button; } + +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +abbr[title] { border-bottom: none; text-decoration: underline; text-decoration: underline dotted; } + +b, strong { font-weight: bolder; } + +del { text-decoration: line-through; } + +mark { background: #ff0; color: #000; } + +small { font-size: 80%; } + +audio, video { display: inline-block; } + +img { border-style: none; } + +svg:not(:root) { overflow: hidden; } + +table { border-collapse: collapse; border-spacing: 0; } + +th { text-align: inherit; } + +td { word-break: break-all; word-wrap: break-word; } + +textarea { resize: none; } + +iframe { display: block; } + +/*float*/ +.clearfix { *zoom: 1; } +.clearfix:before, .clearfix:after { content: ""; display: table; } +.clearfix:after { clear: both; overflow: hidden; } + +.clear { clear: both; } + +/*盒模型*/ +*, *:before, *:after { -wekbit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + +/*被选中的文本背景颜色*/ +::-webkit-selection { color: #fff; background: #93FCFF; } + +::-moz-selection { color: #fff; background: #93FCFF; } + +::selection { color: #fff; background: #93FCFF; } + +/*placeholder颜色*/ +::-webkit-input-placeholder { color: #999; font-weight: 400; } + +:-moz-placeholder { color: #999; font-weight: 400; } + +::-moz-placeholder { color: #999; font-weight: 400; } + +:-ms-input-placeholder { color: #999 !important; font-weight: 400 !important; } + +[class*=" icon-"], [class^=icon-] { font-family: icom !important; speak: none; font-style: normal; font-weight: 400; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } + +/*删格系统*/ +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col-13, .col-14, .col-15, .col-16, .col-17, .col-18, .col-19, .col-20, .col-21, .col-22, .col-23, .col-24 { flex: 1; } + +.container { padding-right: 10px; padding-left: 10px; margin-right: auto; margin-left: auto; } +.container .container-pt { padding-top: 20px; } +.container .container-padding { padding: 20px; } + +.row { display: flex; } + +.col-1 { width: 4.1666666667%; } + +.col-2 { width: 8.3333333333%; } + +.col-3 { width: 12.5%; } + +.col-4 { width: 16.6666666667%; } + +.col-5 { width: 20.8333333333%; } + +.col-6 { width: 25%; } + +.col-7 { width: 29.1666666667%; } + +.col-8 { width: 33.3333333333%; } + +.col-9 { width: 37.5%; } + +.col-10 { width: 41.6666666667%; } + +.col-11 { width: 45.8333333333%; } + +.col-12 { width: 50%; } + +.col-13 { width: 54.1666666667%; } + +.col-14 { width: 58.3333333333%; } + +.col-15 { width: 62.5%; } + +.col-16 { width: 66.6666666667%; } + +.col-17 { width: 70.8333333333%; } + +.col-18 { width: 75%; } + +.col-19 { width: 79.1666666667%; } + +.col-20 { width: 83.3333333333%; } + +.col-21 { width: 87.5%; } + +.col-22 { width: 91.6666666667%; } + +.col-23 { width: 95.8333333333%; } + +.col-24 { width: 100%; } + +.row-gap { margin-left: 10px; margin-right: 10px; } +.row-gap .col-1 { padding-left: 0; padding-right: 0; } +.row-gap .col-2 { padding-left: 0; padding-right: 0; } +.row-gap .col-3 { padding-left: 0; padding-right: 0; } +.row-gap .col-4 { padding-left: 0; padding-right: 0; } +.row-gap .col-5 { padding-left: 0; padding-right: 0; } +.row-gap .col-6 { padding-left: 0; padding-right: 0; } +.row-gap .col-7 { padding-left: 0; padding-right: 0; } +.row-gap .col-8 { padding-left: 0; padding-right: 0; } +.row-gap .col-9 { padding-left: 0; padding-right: 0; } +.row-gap .col-10 { padding-left: 0; padding-right: 0; } +.row-gap .col-11 { padding-left: 0; padding-right: 0; } +.row-gap .col-12 { padding-left: 0; padding-right: 0; } +.row-gap .col-13 { padding-left: 0; padding-right: 0; } +.row-gap .col-14 { padding-left: 0; padding-right: 0; } +.row-gap .col-15 { padding-left: 0; padding-right: 0; } +.row-gap .col-16 { padding-left: 0; padding-right: 0; } +.row-gap .col-17 { padding-left: 0; padding-right: 0; } +.row-gap .col-18 { padding-left: 0; padding-right: 0; } +.row-gap .col-19 { padding-left: 0; padding-right: 0; } +.row-gap .col-20 { padding-left: 0; padding-right: 0; } +.row-gap .col-21 { padding-left: 0; padding-right: 0; } +.row-gap .col-22 { padding-left: 0; padding-right: 0; } +.row-gap .col-23 { padding-left: 0; padding-right: 0; } +.row-gap .col-24 { padding-left: 0; padding-right: 0; } + +.header { position: absolute; top: 0; left: 0; width: 100%; height: 0px; background: url(../images/header-bg.png) center center no-repeat; background-size: auto 100%; } +.header:before { content: ""; position: absolute; top: 116px; left: 50%; margin-left: -100px; width: 200px; height: 8px; background-color: #93FCFF; } + +.logo { margin-top: 30px; height: 50px; line-height: 46px; text-align: center; font-size: 40px; letter-spacing: 2.2px; text-indent: 2.2px; font-weight: 500; user-select: none; position: relative; z-index: 10; } +.logo img { width: 118px; height: 50px; vertical-align: top; margin-right: 20px; } + +.notice-box { width: 460px; margin: 8px auto; line-height: 22px; height: 22px; display: flex; position: relative; overflow: hidden; } +.notice-box .notice-icon { width: 28px; } +.notice-box .notice-icon svg { vertical-align: middle; } +.notice-box .notice-txt { position: relative; width: 432px; overflow: hidden; white-space: nowrap; font-size: 16px; } +.notice-box .notice-txt .str_move { white-space: nowrap; position: absolute; left: 0px; } + +.str_move { white-space: nowrap; position: absolute; top: 0; left: 0; cursor: move; } + +.str_move_clone { display: inline-block; vertical-align: top; position: absolute; left: 100%; top: 0; } + +.str_vertical .str_move_clone { left: 0; top: 100%; } + +.str_down .str_move_clone { left: 0; bottom: 100%; } + +.str_vertical .str_move, .str_down .str_move { white-space: normal; width: 100%; } + +.str_static .str_move, .no_drag .str_move, .noStop .str_move { cursor: inherit; } + +.str_wrap img { max-width: none !important; } + +/*网站通用样式及组件*/ +.mt { margin-top: 10px; } + +.mt-lg { margin-top: 20px !important; } + +.mt-sm { margin-top: 5px; } + +.mt-lg { margin-top: 20px; } + +.mt-mlg { margin-top: 30px; } + +.mt-mlger { margin-top: 50px; } + +.show { display: block; } + +.hide { display: none; } + +.vs-show { visibility: visible; } + +.vs-hide { visibility: hidden; } + +.pull-left { float: left; } + +.pull-right { float: right; } + +.text-center { text-align: center; } + +.text-left { text-align: left; } + +.text-right { text-align: right; } + +.text-justify { text-align: justify; } + +.text-default { color: #fff; } + +.text-primary { color: #93FCFF; } + +.text-light, .text-tips { color: #666; } + +.text-lighter { color: #999; } + +.text-lightest { color: #d3d3d3; } + +.text-success { color: #5eb95e; } + +.text-error { color: #f00; } + +.text-warning { color: #f37b1d; } + +.text-danger { color: #B9302D; } + +.text-disabled { color: #eaeded; } + +.text-price { color: #f10214; } + +.text-white { color: #fff; } + +.text-lg { font-size: 16px; } + +.text-mlg { font-size: 18px; } + +.text-blg { font-size: 20px; } + +.text-sm { font-size: 12px; } + +.text-md { font-size: 12px; } + +.text-bold, .text-700 { font-weight: 700; } + +.text-normal, .text-400 { font-weight: 400; } + +.text-underline { text-decoration: underline; } +.text-underline:hover { text-decoration: underline; } + +.text-indent { text-indent: 2em; } + +.text-required { color: #f00; font-weight: 400; } + +.small-size { transform: scale(0.8); margin: 0px 0 0 -1px; display: inline-block; vertical-align: sub; } + +.text-linear { background: linear-gradient(to bottom, #fff, #C0C2C2); -webkit-background-clip: text; color: transparent; } + +.panel, .box-wrap { max-height: 270px; max-width: 590px; background-image: url(../images/panel-bg.png); background-size: 100% 100%; display: flex; flex-direction: column; width: 100%; } +.panel.panel-lg, .box-wrap.panel-lg { width: 120%; } +.panel.panel02, .box-wrap.panel02 { background-image: url(../images/panel-bg02.png); } +.panel.panel03, .box-wrap.panel03 { background-image: url(../images/panel-bg03.png); max-height: 226px; } +.panel.panel04, .box-wrap.panel04 { background-image: url(../images/panel-bg04.png); } +.panel.panel05, .box-wrap.panel05 { background-image: url(../images/panel-bg05.png); max-width: 100%; background-size: 100% 100%; } +.panel.panel06, .box-wrap.panel06 { background-image: url(../images/panel-bg06.png); max-width: none; max-height: 339px; background-size: 100% 100%; } +.panel .panel-hd, .box-wrap .panel-hd { padding: 5px 30px 15px; position: relative; } +.panel .panel-hd .panel-tit, .box-wrap .panel-hd .panel-tit { padding-top: 15px; font-size: 18px; line-height: 26px; } +.panel .panel-hd .panel-more, .box-wrap .panel-hd .panel-more { position: absolute; right: 30px; top: 20px; z-index: 100; transition: .3s opactiy; } +.panel .panel-hd .panel-more:hover, .box-wrap .panel-hd .panel-more:hover { opacity: 0.9; } +.panel .panel-hd + .panel-bd, .box-wrap .panel-hd + .panel-bd { margin-top: -20px; } +.panel .panel-bd, .box-wrap .panel-bd { flex: 1; padding: 20px 30px 20px; display: flex; justify-content: center; align-items: center; } +.panel .panel-bd > div, .box-wrap .panel-bd > div { flex: 1; } + +.box-wrap { margin-left: auto; margin-right: auto; min-width: 300px; max-width: 470px; border: 1px solid #1F6F9B; position: relative; background-image: none; } + +.box-wrap:before { position: absolute; left: 0; right: 0; top: 0; bottom: 0; content: ""; background: linear-gradient(#93FCFF, #93FCFF) left top, linear-gradient(#93FCFF, #93FCFF) left top, linear-gradient(#93FCFF, #93FCFF) right top, linear-gradient(#93FCFF, #93FCFF) right top, linear-gradient(#93FCFF, #93FCFF) left bottom, linear-gradient(#93FCFF, #93FCFF) left bottom, linear-gradient(#93FCFF, #93FCFF) right bottom, linear-gradient(#93FCFF, #93FCFF) right bottom; background-repeat: no-repeat; background-size: 18px 2px, 2px 18px; } + +.chart-item { height: 100%; } + +.table { width: 100%; text-align: center; color: rgba(255, 255, 255, 0.8); } +.table th { background-color: rgba(18, 148, 184, 0.9); line-height: 22px; padding: 7px 5px; font-size: 16px; } +.table td { background-color: rgba(20, 72, 93, 0.7); line-height: 16px; padding: 10px 5px; font-size: 12px; border-top: 1px solid rgba(0, 0, 0, 0.6); } +.table tbody tr { transition: .3s color; } +.table tbody tr:hover { color: #93FCFF; } + +.progress { height: 36px; line-height: 36px; padding: 0 3px; } +.progress .progress-bar { position: relative; margin-top: 2px; margin-bottom: 2px; height: 30px; background-color: transparent; } +.progress .progress-bar-inner { width: 0; max-width: 100%; height: 30px; background-color: #93FCFF; animation: animate-positive 2s; position: relative; } +.progress .progress-bar-inner:before { content: ""; width: 100%; position: absolute; left: 0; top: 0; bottom: 0; background-image: url(../images/barbg.png); background-size: auto 30px; } +.progress .progress-bar-inner.progress-bar-success { background: #5eb95e; } +.progress .progress-bar-inner.progress-bar-error { background: #f00; } +.progress .progress-bar-inner.progress-bar-gradient { background: linear-gradient(to right, #019CFE, #FEFC01); } + +.progress-list .progress-item { height: 44px; line-height: 36px; padding-top: 4px; display: flex; } +.progress-list .progress-name { width: 120px; padding-right: 10px; overflow: hidden; white-space: nowrap; font-size: 16px; color: rgba(255, 255, 255, 0.5); } +.progress-list .progress-num { position: absolute; width: 0px; overflow: hidden; left: 5px; top: 0; width: 42px; white-space: nowrap; z-index: 100; font-weight: 500; font-size: 18px; line-height: 34px; } +.progress-list .progress { border: 1px solid #fff; border-radius: 2px; position: relative; flex: 1; } +.progress-list .progress:before { content: ""; width: 4px; height: 34px; border-radius: 100px; border: 1px solid #fff; position: absolute; left: -8px; top: 0; } + +@font-face { font-family: 'digiface'; src: url("../font/digiface.ttf") format("truetype"); } +.page { position: relative; min-width: 1000px; background: url(../images/bg.png) center center repeat; background-size: 158px 159px; min-height: 100%; } + +.page-side { position: absolute; top: 100px; bottom: 10px; padding: 30px 0px; z-index: 99; display: flex; flex-direction: column; justify-content: space-between; width: 30%; max-width: 678px; } + +.page-left { padding-left: 30px; } +.page-left .num-item { flex: 1; height: auto; } +.page-left .panel { flex: 2; } +.page-left .common-list { flex: 2; margin-bottom: 10px; } + +.page-right { padding-right: 30px; left: auto; right: 0; display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; } +.page-right div { flex: 1; margin-bottom: 10px; } +.page-right div:last-child { margin-bottom: 0; } +.page-right > .chart-item { margin-bottom: 0px; width: 100%; max-height: 270px; min-height: 190px; } + +.page-center { left: 32%; right: 32%; position: absolute; top: 106px; bottom: 20px; z-index: 100; } + +.page01 .page-center { top: 230px; } +.page01 .page-left { top: 262px; } + +.page-bottom { padding: 0 150px 0 350px; } + +.page-top { position: relative; z-index: 100; left: 0; padding: 160px 30% 0 30px; } +.page-top .num-list { display: flex; padding-top: 0; } +.page-top .num-list .num-item { flex: 1; } +.page-top .num-item { margin-right: 20px; margin-bottom: 0; } + +.page-bd { padding: 40px 30px 10px; display: flex; } +.page-bd .page-map { flex: 1; margin: 0 90px; height: 677px; background-image: url(../images/panel-bg07.png); background-size: 100% 100%; display: flex; align-items: center; padding-right: 60px; } +.page-bd .page-map .chart-item { width: 62%; } +.page-bd .page-map .table-box { overflow: hidden; padding: 20px 0; width: 38%; max-height: 90%; display: flex; flex-direction: column; } +.page-bd .page-map .table-box .table-body { flex: 1; overflow: auto; } +.page-bd .page-map .table-box .table-body::-webkit-scrollbar { display: none; } + +.common-list { padding: 10px 0 0 44px; margin-left: -44px; background-image: url(../images/common-bg.png); background-repeat: no-repeat; background-size: 44px 280px; display: flex; flex-direction: column; justify-content: space-between; max-height: 326px; } +.common-list .list-item { display: block; line-height: 62px; height: 60px; overflow: hidden; width: 200px; background-image: url(../images/common01.png); background-size: cover; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: .3s all; } +.common-list .list-item.is-active, .common-list .list-item:hover { background-image: url(../images/common-active.png); } +.common-list .list-item .list-tit { font-size: 18px; } + +.num-list { padding: 30px 0 0 0px; } + +.num-item { display: block; padding: 12px 22px; height: auto; overflow: hidden; max-width: 346px; background-image: url(../images/numbg.png); background-size: contain; background-repeat: no-repeat; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: .3s color; margin-bottom: 10px; } +.num-item .num-tit { font-size: 20px; line-height: 30px; } +.num-item .num-text { color: #93FCFF; font-weight: 500; font-family: 'digiface'; font-size: 50px; line-height: 62px; letter-spacing: 0.1em; } +.num-item .num-text .unit { font-size: 34px; margin-left: 10px; } + +.main { display: flex; flex-direction: column; padding: 0 30px 10px; height: 93%; } + +.main-top { flex: 2; display: flex; padding: 30px 0 0; max-height: 699px; } + +.main-left { flex: 0.7; display: flex; flex-direction: column; justify-content: space-between; } +.main-left > div { flex: 1; } + +.main-right { flex: 0.8; display: flex; flex-direction: column; justify-content: space-between; } +.main-right > div { flex: 1; } + +.main-bottom { flex: 1; overflow: hidden; margin-top: 10px; display: flex; align-items: center; } +.main-bottom > div { height: 100%; max-height: none; } + +.main-center { padding: 0 50px; flex: 1; display: flex; flex-direction: column; justify-content: space-between; } +.main-center .number-area { flex: 0.5; display: flex; justify-content: space-between; } +.main-center .number-area .number-box { flex: 1; padding-right: 10px; } +.main-center .number-area .number-item { flex: 0.5; } +.main-center > div { flex: 1; } + +.number-area { display: flex; align-items: flex-end; height: 150px; } +.number-area .number-tit { font-size: 22px; line-height: 30px; margin-bottom: 22px; } +.number-area .number-item { margin-left: 5px; } +.number-area .number-item .item-tit { font-size: 18px; line-height: 24px; margin-bottom: 10px; color: rgba(255, 255, 255, 0.8); } +.number-area .number-item .item-txt { font-size: 22px; line-height: 30px; color: #93FCFF; } + +.count-number { display: flex; } +.count-number > li { flex: 1; min-width: 24px; max-width: 50px; line-height: 50px; padding: 10px 0; background: rgba(173, 219, 252, 0.3); background-size: 100% 100%; margin-right: 10px; text-align: center; font-size: 48px; color: #fff; font-style: normal; user-select: none; overflow: hidden; } +.count-number > li:last-child { margin-right: 0; } +.count-number span { display: block; } +.count-number .is-active span { animation: numMove .3s forwards; } + +@keyframes numMove { 100% { transform: translateY(-100%); } } +.total-box { display: flex; flex-direction: column; justify-content: space-between; } +.total-box .total-item { display: flex; padding: 3px 0; text-align: center;color: #fff; } +.total-box .total-item > div { height: 36px; line-height: 36px; font-size: 16px; flex: 1; background-color: rgba(88, 206, 208, 0.16); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 0 10px; } +.total-box .total-item .total-name { margin-right: 10px; } + +.total-list { margin: 0 0 30px; display: flex; justify-content: space-between; } +.total-list .total-tit { margin-bottom: 10px; color: rgba(255, 255, 255, 0.8); } +.total-list .total-item { margin: 0 5px; } +.total-list .total-num { display: flex; padding: 5px 0 5px 10px; position: relative; background: linear-gradient(to bottom, rgba(11, 68, 138, 0.3), rgba(6, 10, 34, 0.38), rgba(11, 68, 138, 0.3)); } +.total-list .total-num:before { position: absolute; left: 0; right: 0; top: 0; bottom: 0; content: ""; background: linear-gradient(#164C6C, #164C6C) left top, linear-gradient(#164C6C, #164C6C) left top, linear-gradient(#164C6C, #164C6C) right top, linear-gradient(#164C6C, #164C6C) right top, linear-gradient(#164C6C, #164C6C) left bottom, linear-gradient(#164C6C, #164C6C) left bottom, linear-gradient(#164C6C, #164C6C) right bottom, linear-gradient(#164C6C, #164C6C) right bottom; background-repeat: no-repeat; background-size: 50% 1px, 1px 15px, 50% 1px, 1px 15px; } +.total-list .total-num li { margin-right: 10px; height: 32px; line-height: 32px; } +.total-list .total-num li b { vertical-align: middle; display: inline-block; font-weight: 400; width: 3px; height: 3px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.8); } +.total-list .total-num .num-item { width: 20px; background: linear-gradient(to bottom, rgba(214, 239, 254, 0.3), rgba(173, 219, 252, 0.3)); background-size: 100% 100%; margin-right: 10px; text-align: center; font-size: 18px; color: #fff; font-style: normal; user-select: none; overflow: hidden; } +.total-list .total-num .num { display: block; width: 20px; height: 32px; line-height: 32px; } +.total-list .total-num .is-active span { animation: numMove .3s forwards; } + +.login-main { display: flex; flex-direction: column; height: 100%; align-items: center; padding-top: 3%; position: relative; background: url(../images/loginbg.jpg) no-repeat center bottom; background-size: 100% auto; background-repeat: no-repeat; } +.login-main .login-header { width: 100%; background: url(../images/login-header.png) no-repeat center center; height: 320px; background-size: auto 320px; } +.login-main .login-header .logo { margin-top: 66px; font-size: 58px; height: 80px; line-height: 80px; } +.login-main .login-header .logo img { width: 188px; height: 80px; } +.login-main .login-error { margin-top: -50px; margin-bottom: 50px; display: none; } + +.login-item { width: 753px; height: 104px; background-image: url(../images/login-inputbg.png); background-size: auto 100%; background-position: center center; padding: 20px 0 0 236px; margin-bottom: 40px; font-size: 16px; transition: .3s background; } +.login-item .login-icon { display: inline-block; vertical-align: top; width: 60px; line-height: 54px; height: 54px; text-align: center; } +.login-item .login-icon svg { vertical-align: top; margin-top: 15px; } +.login-item:hover, .login-item.is-active { background-image: url(../images/login-inputbg01.png); } +.login-item .login-input { vertical-align: middle; background-color: transparent; border-color: transparent; outline: none; color: #fff; line-height: 54px; height: 54px; width: 350px; } +.login-item.login-btn { background-image: url(../images/loginbtn-bg.png); width: 100%; text-align: center; letter-spacing: 10px; text-indent: 10px; font-size: 20px; padding: 0; font-weight: 500; } +.login-item.login-btn .login-txt { width: 700px; margin: 0 auto; display: block; padding-top: 32px; height: 100%; transition: .3s color; } + +@media all and (max-width: 1100px) { .header { height: 0px; } + .header:before { top: 86px; } + .page-top { padding-top: 98px; padding-right: 35%; } + .page-top .num-item { margin-right: 10px; padding-top: 20px; } + .common-list { background-image: none; } + .logo { margin-top: 10px; font-size: 30px; } + .notice-box { margin-top: 0; } + .page-side { padding-top: 0; padding-bottom: 10px; } + .page-side .num-list { padding-top: 0; } + .page-left { padding-left: 10px; } + .page-right { padding-right: 10px; } + .main { padding-left: 10px; padding-right: 10px; } + .main .panel .panel-bd, .main .box-wrap .panel-bd { padding: 10px; } + .main .main-center { padding-left: 10px; padding-right: 10px; } + .main .main-top { margin-top: 10px; } + .main .count-number li { font-size: 30px; padding: 0; } + .main .number-area .number-tit { font-size: 18px; } + .box-wrap .panel-bd { padding-top: 0; } + .box-wrap .panel-hd { padding-bottom: 0; padding-top: 0; } + .box-wrap .panel-hd .panel-tit { padding-top: 10px; } + .progress-list .progress-item { height: 36px; line-height: 28px; } + .progress-list .progress { line-height: 28px; height: 28px; } + .progress-list .progress:before { height: 28px; } + .progress-list .progress-num { line-height: 26px; } + .progress-list .progress-bar { height: 22px; } + .progress-list .progress-bar .progress-bar-inner { height: 22px; } } +@media all and (max-width: 1440px) { .page-top { padding-left: 10px; } + .page-top .num-item { background-size: 100% 100%; padding-bottom: 0; display: flex; flex-direction: column; justify-content: baseline; } + .page-top .num-item .num-text { font-size: 32px; line-height: 46px; } + .page-top .num-item .num-text .unit { font-size: 26px; } } +@media all and (min-width: 1630px) { .main-bottom { margin-top: 30px; } } +@media all and (max-width: 1630px) { .panel .panel-bd, .panel .panel-hd, .box-wrap .panel-bd, .box-wrap .panel-hd { padding-left: 10px; padding-right: 10px; } } +@media all and (max-height: 620px) { .page-top { padding-top: 105px; } } +@media all and (min-height: 768px) { .main-bottom { flex: 1.2; } } +@media all and (min-height: 820px) { .box-wrap.mt { margin-top: 30px; } + .main-bottom { margin-top: 30px; } } +@media all and (max-height: 768px) { .page01 .page-left { top: 190px; } + .num-item .num-text { font-size: 32px; } + .num-item .num-text .unit { font-size: 26px; } + .logo { font-size: 30px; } + .notice-box { margin-top: 0; } + .panel .panel-bd { padding: 10px; } } +@keyframes fadeIn { from { opacity: 0; } + to { opacity: 1; } } +@keyframes fadeInUp { from { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInUpBig { from { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInDown { from { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@-webkit-keyframes fadeInDownBig { from { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInLeft { from { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInLeftBig { from { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInRight { from { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInRightBig { from { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeOut { from { opacity: 1; } + to { opacity: 0; } } +@keyframes fadeOutDown { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } +@keyframes fadeOutDownBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } +@keyframes fadeOutUp { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } +@keyframes fadeOutUpBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } +@keyframes fadeOutLeft { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } +@keyframes fadeOutLeftBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } +@keyframes fadeOutRight { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } +@keyframes fadeOutRightBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } +@keyframes zoomIn { from { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } + 50% { opacity: 1; } } +@keyframes zoomOut { from { opacity: 1; } + 50% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } + to { opacity: 0; } } +@keyframes rotateIn { from { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, -200deg); transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } + to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } } +@keyframes rotateOut { from { -webkit-transform-origin: center; transform-origin: center; opacity: 1; } + to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 200deg); transform: rotate3d(0, 0, 1, 200deg); opacity: 0; } } +@keyframes up-small { 0% { transform: translate3d(0, 30px, 0); opacity: 0.3; } + 100% { transform: translate3d(0, 0, 0); opacity: 1; } } +@keyframes animate-positive { 0% { width: 0%; } } +@keyframes rotate { 100% { transform: rotate(360deg); } } +@keyframes rotate-everse { 100% { transform: rotate(-360deg); } } +@keyframes scale-spring { 0% { opacity: 0.5; -ms-transform: scale(0.5); transform: scale(0.5); } + 80% { opacity: 0.8; -ms-transform: scale(1.1); transform: scale(1.1); } + 100% { opacity: 1; -ms-transform: scale(1); transform: scale(1); } } +@keyframes light-move { 0% { transform: translate(0); } } +/* +z-index: + +*/ + +/*# sourceMappingURL=style.css.map */ diff --git a/src/assets/css/style.css b/src/assets/css/style.css new file mode 100644 index 0000000..81c66cc --- /dev/null +++ b/src/assets/css/style.css @@ -0,0 +1,505 @@ +@charset "UTF-8"; +body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td, hr, button, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { margin: 0; padding: 0; } + +h1, h2, h3, h4, h5, h6 { font-size: 100%; font-weight: 400; } + +address, caption, cite, code, dfn, em, th, var { font-style: normal; font-weight: 400; } + +ol, ul, li { list-style: none; } + +a { text-decoration: none; color: #fff; background-color: transparent; -webkit-text-decoration-skip: objects; } + +a:hover { text-decoration: none; color: #93FCFF; } + +a:active, a:focus, a:hover { outline-width: 0; text-decoration: none; outline: none; } + +label { font-weight: 400; } + +fieldset, img { border: 0; } + +html, body { color: #fff; background: #000D12; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-tap-highlight-color: transparent; height: 100%; } + +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } + +audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } + +body, button, input, select, textarea { font-family: Helvetica Neue, Helvetica, Arial, PingFang SC, Hiragino Sans GB, Heiti SC, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif; font-size: 12px; line-height: 1.428571; } + +::-ms-clear, ::-ms-reveal { display: none; } + +button, input, select, textarea { font-size: 100%; } + +button, input[type=button], input[type=reset], input[type=submit] { cursor: pointer; -webkit-appearance: button; } + +button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } + +button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } + +abbr[title] { border-bottom: none; text-decoration: underline; text-decoration: underline dotted; } + +b, strong { font-weight: bolder; } + +del { text-decoration: line-through; } + +mark { background: #ff0; color: #000; } + +small { font-size: 80%; } + +audio, video { display: inline-block; } + +img { border-style: none; } + +svg:not(:root) { overflow: hidden; } + +table { border-collapse: collapse; border-spacing: 0; } + +th { text-align: inherit; } + +td { word-break: break-all; word-wrap: break-word; } + +textarea { resize: none; } + +iframe { display: block; } + +/*float*/ +.clearfix { *zoom: 1; } +.clearfix:before, .clearfix:after { content: ""; display: table; } +.clearfix:after { clear: both; overflow: hidden; } + +.clear { clear: both; } + +/*盒模型*/ +*, *:before, *:after { -wekbit-box-sizing: border-box; -moz-box-sizing: border-box; -o-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; } + +/*被选中的文本背景颜色*/ +::-webkit-selection { color: #fff; background: #93FCFF; } + +::-moz-selection { color: #fff; background: #93FCFF; } + +::selection { color: #fff; background: #93FCFF; } + +/*placeholder颜色*/ +::-webkit-input-placeholder { color: #999; font-weight: 400; } + +:-moz-placeholder { color: #999; font-weight: 400; } + +::-moz-placeholder { color: #999; font-weight: 400; } + +:-ms-input-placeholder { color: #999 !important; font-weight: 400 !important; } + +[class*=" icon-"], [class^=icon-] { font-family: icom !important; speak: none; font-style: normal; font-weight: 400; font-variant: normal; text-transform: none; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } + +/*删格系统*/ +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col-13, .col-14, .col-15, .col-16, .col-17, .col-18, .col-19, .col-20, .col-21, .col-22, .col-23, .col-24 { flex: 1; } + +.container { padding-right: 10px; padding-left: 10px; margin-right: auto; margin-left: auto; } +.container .container-pt { padding-top: 20px; } +.container .container-padding { padding: 20px; } + +.row { display: flex; } + +.col-1 { width: 4.1666666667%; } + +.col-2 { width: 8.3333333333%; } + +.col-3 { width: 12.5%; } + +.col-4 { width: 16.6666666667%; } + +.col-5 { width: 20.8333333333%; } + +.col-6 { width: 25%; } + +.col-7 { width: 29.1666666667%; } + +.col-8 { width: 33.3333333333%; } + +.col-9 { width: 37.5%; } + +.col-10 { width: 41.6666666667%; } + +.col-11 { width: 45.8333333333%; } + +.col-12 { width: 50%; } + +.col-13 { width: 54.1666666667%; } + +.col-14 { width: 58.3333333333%; } + +.col-15 { width: 62.5%; } + +.col-16 { width: 66.6666666667%; } + +.col-17 { width: 70.8333333333%; } + +.col-18 { width: 75%; } + +.col-19 { width: 79.1666666667%; } + +.col-20 { width: 83.3333333333%; } + +.col-21 { width: 87.5%; } + +.col-22 { width: 91.6666666667%; } + +.col-23 { width: 95.8333333333%; } + +.col-24 { width: 100%; } + +.row-gap { margin-left: 10px; margin-right: 10px; } +.row-gap .col-1 { padding-left: 0; padding-right: 0; } +.row-gap .col-2 { padding-left: 0; padding-right: 0; } +.row-gap .col-3 { padding-left: 0; padding-right: 0; } +.row-gap .col-4 { padding-left: 0; padding-right: 0; } +.row-gap .col-5 { padding-left: 0; padding-right: 0; } +.row-gap .col-6 { padding-left: 0; padding-right: 0; } +.row-gap .col-7 { padding-left: 0; padding-right: 0; } +.row-gap .col-8 { padding-left: 0; padding-right: 0; } +.row-gap .col-9 { padding-left: 0; padding-right: 0; } +.row-gap .col-10 { padding-left: 0; padding-right: 0; } +.row-gap .col-11 { padding-left: 0; padding-right: 0; } +.row-gap .col-12 { padding-left: 0; padding-right: 0; } +.row-gap .col-13 { padding-left: 0; padding-right: 0; } +.row-gap .col-14 { padding-left: 0; padding-right: 0; } +.row-gap .col-15 { padding-left: 0; padding-right: 0; } +.row-gap .col-16 { padding-left: 0; padding-right: 0; } +.row-gap .col-17 { padding-left: 0; padding-right: 0; } +.row-gap .col-18 { padding-left: 0; padding-right: 0; } +.row-gap .col-19 { padding-left: 0; padding-right: 0; } +.row-gap .col-20 { padding-left: 0; padding-right: 0; } +.row-gap .col-21 { padding-left: 0; padding-right: 0; } +.row-gap .col-22 { padding-left: 0; padding-right: 0; } +.row-gap .col-23 { padding-left: 0; padding-right: 0; } +.row-gap .col-24 { padding-left: 0; padding-right: 0; } + +.header { position: absolute; top: 0; left: 0; width: 100%; height: 160px; background: url(../../assets/images/header-bg.png) center center no-repeat; background-size: auto 100%; } +.header:before { content: ""; position: absolute; top: 116px; left: 50%; margin-left: -100px; width: 200px; height: 8px; background-color: #93FCFF; } + +.logo { margin-top: 30px; height: 50px; line-height: 46px; text-align: center; font-size: 40px; letter-spacing: 2.2px; text-indent: 2.2px; font-weight: 500; user-select: none; position: relative; z-index: 10; } +.logo img { width: 118px; height: 50px; vertical-align: top; margin-right: 20px; } + +.notice-box { width: 460px; margin: 8px auto; line-height: 22px; height: 22px; display: flex; position: relative; overflow: hidden; } +.notice-box .notice-icon { width: 28px; } +.notice-box .notice-icon svg { vertical-align: middle; } +.notice-box .notice-txt { position: relative; width: 432px; overflow: hidden; white-space: nowrap; font-size: 16px; } +.notice-box .notice-txt .str_move { white-space: nowrap; position: absolute; left: 0px; } + +.str_move { white-space: nowrap; position: absolute; top: 0; left: 0; cursor: move; } + +.str_move_clone { display: inline-block; vertical-align: top; position: absolute; left: 100%; top: 0; } + +.str_vertical .str_move_clone { left: 0; top: 100%; } + +.str_down .str_move_clone { left: 0; bottom: 100%; } + +.str_vertical .str_move, .str_down .str_move { white-space: normal; width: 100%; } + +.str_static .str_move, .no_drag .str_move, .noStop .str_move { cursor: inherit; } + +.str_wrap img { max-width: none !important; } + +/*网站通用样式及组件*/ +.mt { margin-top: 10px; } + +.mt-lg { margin-top: 20px !important; } + +.mt-sm { margin-top: 5px; } + +.mt-lg { margin-top: 20px; } + +.mt-mlg { margin-top: 30px; } + +.mt-mlger { margin-top: 50px; } + +.show { display: block; } + +.hide { display: none; } + +.vs-show { visibility: visible; } + +.vs-hide { visibility: hidden; } + +.pull-left { float: left; } + +.pull-right { float: right; } + +.text-center { text-align: center; } + +.text-left { text-align: left; } + +.text-right { text-align: right; } + +.text-justify { text-align: justify; } + +.text-default { color: #fff; } + +.text-primary { color: #93FCFF; } + +.text-light, .text-tips { color: #666; } + +.text-lighter { color: #999; } + +.text-lightest { color: #d3d3d3; } + +.text-success { color: #5eb95e; } + +.text-error { color: #f00; } + +.text-warning { color: #f37b1d; } + +.text-danger { color: #B9302D; } + +.text-disabled { color: #eaeded; } + +.text-price { color: #f10214; } + +.text-white { color: #fff; } + +.text-lg { font-size: 16px; } + +.text-mlg { font-size: 18px; } + +.text-blg { font-size: 20px; } + +.text-sm { font-size: 12px; } + +.text-md { font-size: 12px; } + +.text-bold, .text-700 { font-weight: 700; } + +.text-normal, .text-400 { font-weight: 400; } + +.text-underline { text-decoration: underline; } +.text-underline:hover { text-decoration: underline; } + +.text-indent { text-indent: 2em; } + +.text-required { color: #f00; font-weight: 400; } + +.small-size { transform: scale(0.8); margin: 0px 0 0 -1px; display: inline-block; vertical-align: sub; } + +.text-linear { background: linear-gradient(to bottom, #fff, #C0C2C2); -webkit-background-clip: text; color: transparent; } + +.panel, .box-wrap { max-height: 270px; max-width: 800px; background-image: url(../../assets/images/panel-bg.png); background-size: 100% 100%; display: flex; flex-direction: column; width: 100%; } +.panel.panel-lg, .box-wrap.panel-lg { width: 163%; } +.panel.panel02, .box-wrap.panel02 { background-image: url(../../assets/images/panel-bg02.png); } +.panel.panel03, .box-wrap.panel03 { background-image: url(../../assets/images/panel-bg03.png); max-height: 226px; } +.panel.panel04, .box-wrap.panel04 { background-image: url(../../assets/images/panel-bg04.png); } +.panel.panel05, .box-wrap.panel05 { background-image: url(../../assets/images/panel-bg05.png); max-width: 100%; background-size: 100% 100%; } +.panel.panel06, .box-wrap.panel06 { background-image: url(../../assets/images/panel-bg06.png); max-width: 784px; max-height: 339px; background-size: 100% 100%; } +.panel .panel-hd, .box-wrap .panel-hd { padding: 5px 30px 15px; position: relative; } +.panel .panel-hd .panel-tit, .box-wrap .panel-hd .panel-tit { padding-top: 15px; font-size: 18px; line-height: 26px; } +.panel .panel-hd .panel-more, .box-wrap .panel-hd .panel-more { position: absolute; right: 30px; top: 20px; z-index: 100; transition: .3s opactiy; } +.panel .panel-hd .panel-more:hover, .box-wrap .panel-hd .panel-more:hover { opacity: 0.9; } +.panel .panel-hd + .panel-bd, .box-wrap .panel-hd + .panel-bd { margin-top: -20px; } +.panel .panel-bd, .box-wrap .panel-bd { flex: 1; padding: 20px 30px 20px; } + +.box-wrap { margin-left: auto; margin-right: auto; width: 470px; height: 244px; border: 1px solid #1F6F9B; position: relative; background-image: none; } + +.box-wrap:before { position: absolute; left: 0; right: 0; top: 0; bottom: 0; content: ""; background: linear-gradient(#93FCFF, #93FCFF) left top, linear-gradient(#93FCFF, #93FCFF) left top, linear-gradient(#93FCFF, #93FCFF) right top, linear-gradient(#93FCFF, #93FCFF) right top, linear-gradient(#93FCFF, #93FCFF) left bottom, linear-gradient(#93FCFF, #93FCFF) left bottom, linear-gradient(#93FCFF, #93FCFF) right bottom, linear-gradient(#93FCFF, #93FCFF) right bottom; background-repeat: no-repeat; background-size: 18px 2px, 2px 18px; } + +.chart-item { height: 100%; } + +.table { width: 100%; text-align: center; color: rgba(255, 255, 255, 0.8); } +.table th { background-color: rgba(18, 148, 184, 0.9); line-height: 22px; padding: 7px 5px; font-size: 16px; } +.table td { background-color: rgba(20, 72, 93, 0.7); line-height: 16px; padding: 10px 5px; font-size: 12px; border-top: 1px solid rgba(0, 0, 0, 0.6); } +.table tbody tr { transition: .3s color; } +.table tbody tr:hover { color: #93FCFF; } + +.progress { height: 36px; line-height: 36px; padding: 0 3px; } +.progress .progress-bar { position: relative; margin-top: 2px; margin-bottom: 2px; height: 30px; background-color: transparent; } +.progress .progress-bar-inner { width: 0; max-width: 100%; height: 30px; background-color: #93FCFF; animation: animate-positive 2s; position: relative; } +.progress .progress-bar-inner:before { content: ""; width: 100%; position: absolute; left: 0; top: 0; bottom: 0; background-image: url(../../assets/images/barbg.png); background-size: auto 30px; } +.progress .progress-bar-inner.progress-bar-success { background: #5eb95e; } +.progress .progress-bar-inner.progress-bar-error { background: #f00; } +.progress .progress-bar-inner.progress-bar-gradient { background: linear-gradient(to right, #019CFE, #FEFC01); } + +.progress-list .progress-item { height: 44px; line-height: 36px; padding-top: 4px; display: flex; } +.progress-list .progress-name { width: 150px; padding-right: 10px; overflow: hidden; white-space: nowrap; font-size: 20px; color: rgba(255, 255, 255, 0.5); } +.progress-list .progress-num { position: absolute; width: 0px; overflow: hidden; left: 5px; top: 0; width: 42px; white-space: nowrap; z-index: 100; font-weight: 500; font-size: 18px; line-height: 34px; } +.progress-list .progress { border: 1px solid #fff; border-radius: 2px; position: relative; flex: 1; } +.progress-list .progress:before { content: ""; width: 4px; height: 34px; border-radius: 100px; border: 1px solid #fff; position: absolute; left: -8px; top: 0; } + +@font-face { font-family: 'digiface'; src: url("../../assets/font/digiface.ttf") format("truetype"); } +.page { position: relative; min-width: 1000px; background: url(../../assets/images/bg.png) center center repeat; background-size: 158px 159px; min-height: 100%; } + +.page-side { position: absolute; top: 28px; bottom: 74px; padding: 30px 0px; z-index: 99; display: flex; flex-direction: column; justify-content: space-between; width: 30%; max-width: 678px; } + +.page-left { padding-left: 30px; } +.page-left .num-item { flex: 1; height: auto; } +.page-left .panel { flex: 2; } +.page-left .common-list { flex: 2; margin-bottom: 10px; } + +.page-right { padding-right: 30px; left: auto; right: 0; display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; } +.page-right div { flex: 1; margin-bottom: 10px; } +.page-right div:last-child { margin-bottom: 0; } +.page-right > .chart-item { margin-bottom: 0px; width: 100%; max-height: 270px; min-height: 190px; } + +.page-center { left: 21%; right: 32%; position: absolute; top: 54px; bottom: 20px; z-index: 100; } + +.page01 .page-center { top: 230px; } +.page01 .page-left { top: 262px; } + +.page-bottom { padding: 0 150px 0 350px; } + +.page-top { position: relative; z-index: 100; left: 0; padding: 160px 30% 0 30px; } +.page-top .num-list { display: flex; padding-top: 0; } +.page-top .num-list .num-item { flex: 1; } +.page-top .num-item { margin-right: 20px; margin-bottom: 0; } + +.page-bd { padding: 40px 30px 10px; display: flex; } +.page-bd .page-map { flex: 1; margin: 0 90px; height: 677px; background-image: url(../../assets/images/panel-bg07.png); background-size: 100% 100%; display: flex; align-items: center; padding-right: 60px; } +.page-bd .page-map .chart-item { width: 62%; } +.page-bd .page-map .table-box { overflow: hidden; padding: 20px 0; width: 38%; max-height: 90%; display: flex; flex-direction: column; } +.page-bd .page-map .table-box .table-body { flex: 1; overflow: auto; } +.page-bd .page-map .table-box .table-body::-webkit-scrollbar { display: none; } + +.common-list { padding: 10px 0 0 44px; margin-left: -44px; background-image: url(../../assets/images/common-bg.png); background-repeat: no-repeat; background-size: 44px 280px; display: flex; flex-direction: column; justify-content: space-between; max-height: 326px; } +.common-list .list-item { display: block; line-height: 62px; height: 60px; overflow: hidden; width: 200px; background-image: url(../../assets/images/common01.png); background-size: cover; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: .3s all; } +.common-list .list-item.is-active, .common-list .list-item:hover { background-image: url(../../assets/images/common-active.png); } +.common-list .list-item .list-tit { font-size: 18px; } + +.num-list { padding: 30px 0 0 0px; } + +.num-item { display: block; padding: 12px 22px; height: auto; overflow: hidden; max-width: 295px;max-height: 120px; background-image: url(../../assets/images/numbg.png); background-size: 100% 100%; background-repeat: no-repeat; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: .3s color; margin-bottom: 10px; } +.num-item .num-tit { font-size: 20px; line-height: 30px; } +.num-item .num-text { color: #93FCFF; font-weight: 500; font-family: 'digiface'; font-size: 50px; line-height: 62px; letter-spacing: 0.1em; } +.num-item .num-text .unit { font-size: 34px; margin-left: 10px; } + +.main { display: flex; flex-direction: column; justify-content: space-between; } + +.main-top { display: flex; padding: 160px 30px 0; } + +.main-left { min-width: 508px; flex: 0.26; margin-top: -50px; } + +.main-right { min-width: 470px; flex: 0.26; margin-top: -50px; } + +.main-bottom { flex: 1; padding: 0 30px; display: flex; } + +.main-center { padding: 0 50px; flex: 1; } + +.number-area { display: flex; align-items: flex-end; height: 150px; } +.number-area .number-tit { font-size: 22px; line-height: 30px; margin-bottom: 22px; } +.number-area .number-item { margin-left: 30px; } +.number-area .number-item .item-tit { font-size: 18px; line-height: 24px; margin-bottom: 10px; color: rgba(255, 255, 255, 0.8); } +.number-area .number-item .item-txt { font-size: 22px; line-height: 30px; color: #93FCFF; } + +.count-number { height: 70px; display: flex; } +.count-number > li { width: 40px; height: 70px; line-height: 70px; background: rgba(173, 219, 252, 0.3); background-size: 100% 100%; margin-right: 10px; text-align: center; font-size: 48px; color: #fff; font-style: normal; user-select: none; overflow: hidden; } +.count-number span { display: block; width: 40px; height: 70px; line-height: 70px; } +.count-number .is-active span { animation: numMove .3s forwards; } + +@keyframes numMove { 100% { transform: translateY(-100%); } } +.total-box { display: flex; flex-direction: column; } +.total-box .total-item { display: flex; padding: 3px 0; text-align: center; } +.total-box .total-item > div { height: 36px; line-height: 36px; font-size: 16px; flex: 1; background-color: rgba(88, 206, 208, 0.16); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 0 10px; } +.total-box .total-item .total-name { margin-right: 10px; } + +.total-list { margin: 0 0 30px; display: flex; justify-content: space-between; } +.total-list .total-tit { margin-bottom: 10px; color: rgba(255, 255, 255, 0.8); } +.total-list .total-item { margin: 0 5px; } +.total-list .total-num { display: flex; padding: 5px 0 5px 10px; position: relative; background: linear-gradient(to bottom, rgba(11, 68, 138, 0.3), rgba(6, 10, 34, 0.38), rgba(11, 68, 138, 0.3)); } +.total-list .total-num:before { position: absolute; left: 0; right: 0; top: 0; bottom: 0; content: ""; background: linear-gradient(#164C6C, #164C6C) left top, linear-gradient(#164C6C, #164C6C) left top, linear-gradient(#164C6C, #164C6C) right top, linear-gradient(#164C6C, #164C6C) right top, linear-gradient(#164C6C, #164C6C) left bottom, linear-gradient(#164C6C, #164C6C) left bottom, linear-gradient(#164C6C, #164C6C) right bottom, linear-gradient(#164C6C, #164C6C) right bottom; background-repeat: no-repeat; background-size: 50% 1px, 1px 15px, 50% 1px, 1px 15px; } +.total-list .total-num li { margin-right: 10px; height: 32px; line-height: 32px; } +.total-list .total-num li b { vertical-align: middle; display: inline-block; font-weight: 400; width: 3px; height: 3px; border-radius: 50%; background-color: rgba(255, 255, 255, 0.8); } +.total-list .total-num .num-item { width: 20px; background: linear-gradient(to bottom, rgba(214, 239, 254, 0.3), rgba(173, 219, 252, 0.3)); background-size: 100% 100%; margin-right: 10px; text-align: center; font-size: 18px; color: #fff; font-style: normal; user-select: none; overflow: hidden; } +.total-list .total-num .num { display: block; width: 20px; height: 32px; line-height: 32px; } +.total-list .total-num .is-active span { animation: numMove .3s forwards; } + +.login-main { display: flex; flex-direction: column; height: 100%; align-items: center; padding-top: 3%; position: relative; background: url(../../assets/images/loginbg.jpg) no-repeat center bottom; background-size: 100% auto; background-repeat: no-repeat; } +.login-main .login-header { width: 100%; background: url(../../assets/images/login-header.png) no-repeat center center; height: 320px; background-size: auto 320px; } +.login-main .login-header .logo { margin-top: 66px; font-size: 58px; height: 80px; line-height: 80px; } +.login-main .login-header .logo img { width: 188px; height: 80px; } +.login-main .login-error { margin-top: -50px; margin-bottom: 50px; display: none; } + +.login-item { width: 753px; height: 104px; background-image: url(../../assets/images/login-inputbg.png); background-size: auto 100%; background-position: center center; padding: 20px 0 0 236px; margin-bottom: 40px; font-size: 16px; transition: .3s background; } +.login-item .login-icon { display: inline-block; vertical-align: top; width: 60px; line-height: 54px; height: 54px; text-align: center; } +.login-item .login-icon svg { vertical-align: top; margin-top: 15px; } +.login-item:hover, .login-item.is-active { background-image: url(../../assets/images/login-inputbg01.png); } +.login-item .login-input { vertical-align: middle; background-color: transparent; border-color: transparent; outline: none; color: #fff; line-height: 54px; height: 54px; width: 350px; } +.login-item.login-btn { background-image: url(../../assets/images/loginbtn-bg.png); width: 100%; text-align: center; letter-spacing: 10px; text-indent: 10px; font-size: 20px; padding: 0; font-weight: 500; } +.login-item.login-btn .login-txt { width: 700px; margin: 0 auto; display: block; padding-top: 32px; height: 100%; transition: .3s color; } + +@media all and (max-width: 1100px) { .header { height: 120px; } + .header:before { top: 86px; } + .page-top { padding-top: 98px; padding-right: 35%; } + .page-top .num-item { margin-right: 10px; padding-top: 20px; } + .common-list { background-image: none; } + .logo { margin-top: 10px; font-size: 30px; } + .notice-box { margin-top: 0; } + .page-side { padding-top: 0; padding-bottom: 10px; } + .page-side .num-list { padding-top: 0; } + .page-left { padding-left: 10px; } + .page-right { padding-right: 10px; } } +@media all and (max-width: 1440px) { .page-top { padding-left: 10px; } + .page-top .num-item { background-size: 100% 100%; padding-bottom: 0; display: flex; flex-direction: column; justify-content: baseline; } + .page-top .num-item .num-text { font-size: 32px; line-height: 46px; } + .page-top .num-item .num-text .unit { font-size: 26px; } } +@media all and (max-width: 1500px) { .panel .panel-bd { padding-left: 10px; padding-right: 10px; } } +@media all and (max-height: 620px) { .page-top { padding-top: 105px; } } +@media all and (max-height: 768px) { .page01 .page-left { top: 190px; } + .num-item .num-text { font-size: 32px; } + .num-item .num-text .unit { font-size: 26px; } + .logo { font-size: 30px; } + .notice-box { margin-top: 0; } + .panel .panel-bd { padding: 10px; } } +@keyframes fadeIn { from { opacity: 0; } + to { opacity: 1; } } +@keyframes fadeInUp { from { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInUpBig { from { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInDown { from { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@-webkit-keyframes fadeInDownBig { from { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInLeft { from { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInLeftBig { from { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInRight { from { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeInRightBig { from { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } + to { opacity: 1; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } +@keyframes fadeOut { from { opacity: 1; } + to { opacity: 0; } } +@keyframes fadeOutDown { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } } +@keyframes fadeOutDownBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } +@keyframes fadeOutUp { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } } +@keyframes fadeOutUpBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } +@keyframes fadeOutLeft { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } } +@keyframes fadeOutLeftBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } +@keyframes fadeOutRight { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } } +@keyframes fadeOutRightBig { from { opacity: 1; } + to { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } +@keyframes zoomIn { from { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } + 50% { opacity: 1; } } +@keyframes zoomOut { from { opacity: 1; } + 50% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } + to { opacity: 0; } } +@keyframes rotateIn { from { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, -200deg); transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } + to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); opacity: 1; } } +@keyframes rotateOut { from { -webkit-transform-origin: center; transform-origin: center; opacity: 1; } + to { -webkit-transform-origin: center; transform-origin: center; -webkit-transform: rotate3d(0, 0, 1, 200deg); transform: rotate3d(0, 0, 1, 200deg); opacity: 0; } } +@keyframes up-small { 0% { transform: translate3d(0, 30px, 0); opacity: 0.3; } + 100% { transform: translate3d(0, 0, 0); opacity: 1; } } +@keyframes animate-positive { 0% { width: 0%; } } +@keyframes rotate { 100% { transform: rotate(360deg); } } +@keyframes rotate-everse { 100% { transform: rotate(-360deg); } } +@keyframes scale-spring { 0% { opacity: 0.5; -ms-transform: scale(0.5); transform: scale(0.5); } + 80% { opacity: 0.8; -ms-transform: scale(1.1); transform: scale(1.1); } + 100% { opacity: 1; -ms-transform: scale(1); transform: scale(1); } } +@keyframes light-move { 0% { transform: translate(0); } } +/* +z-index: + +*/ + +/*# sourceMappingURL=style.css.map */ diff --git a/src/assets/echarts/echarts.common.min.js b/src/assets/echarts/echarts.common.min.js new file mode 100644 index 0000000..0d97001 --- /dev/null +++ b/src/assets/echarts/echarts.common.min.js @@ -0,0 +1,22 @@ + +/* +* 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. +*/ + + +!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";var e=2311,i=function(){return e++},v="object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?{browser:{},os:{},node:!1,wxa:!0,canvasSupported:!0,svgSupported:!1,touchEventsSupported:!0,domSupported:!1}:"undefined"==typeof document&&"undefined"!=typeof self?{browser:{},os:{},node:!1,worker:!0,canvasSupported:!0,domSupported:!1}:"undefined"==typeof navigator?{browser:{},os:{},node:!0,worker:!1,canvasSupported:!0,svgSupported:!0,domSupported:!1}:function(t){var e={},n=t.match(/Firefox\/([\d.]+)/),i=t.match(/MSIE\s([\d.]+)/)||t.match(/Trident\/.+?rv:(([\d.]+))/),r=t.match(/Edge\/([\d.]+)/),o=/micromessenger/i.test(t);n&&(e.firefox=!0,e.version=n[1]);i&&(e.ie=!0,e.version=i[1]);r&&(e.edge=!0,e.version=r[1]);o&&(e.weChat=!0);return{browser:e,os:{},node:!1,canvasSupported:!!document.createElement("canvas").getContext,svgSupported:"undefined"!=typeof SVGRect,touchEventsSupported:"ontouchstart"in window&&!e.ie&&!e.edge,pointerEventsSupported:"onpointerdown"in window&&(e.edge||e.ie&&11<=e.version),domSupported:"undefined"!=typeof document}}(navigator.userAgent);var s={"[object Function]":1,"[object RegExp]":1,"[object Date]":1,"[object Error]":1,"[object CanvasGradient]":1,"[object CanvasPattern]":1,"[object Image]":1,"[object Canvas]":1},l={"[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},u=Object.prototype.toString,n=Array.prototype,a=n.forEach,h=n.filter,r=n.slice,c=n.map,d=n.reduce,o={};function f(t,e){"createCanvas"===t&&(y=null),o[t]=e}function b(t){if(null==t||"object"!=typeof t)return t;var e=t,n=u.call(t);if("[object Array]"===n){if(!$(t)){e=[];for(var i=0,r=t.length;i>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[l]+":0",r[u]+":0",i[1-l]+":auto",r[1-u]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}return n}(e,o),o,r);if(a)return a(t,n,i),!0}return!1}function Ot(t){return"CANVAS"===t.nodeName.toUpperCase()}var Et="undefined"!=typeof window&&!!window.addEventListener,zt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Nt=[];function Bt(t,e,n,i){return n=n||{},i||!v.canvasSupported?Rt(t,e,n):v.browser.firefox&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):Rt(t,e,n),n}function Rt(t,e,n){if(v.domSupported&&t.getBoundingClientRect){var i=e.clientX,r=e.clientY;if(Ot(t)){var o=t.getBoundingClientRect();return n.zrX=i-o.left,void(n.zrY=r-o.top)}if(Lt(Nt,t,i,r))return n.zrX=Nt[0],void(n.zrY=Nt[1])}n.zrX=n.zrY=0}function Vt(t){return t||window.event}function Ft(t,e,n){if(null!=(e=Vt(e)).zrX)return e;var i=e.type;if(i&&0<=i.indexOf("touch")){var r="touchend"!==i?e.targetTouches[0]:e.changedTouches[0];r&&Bt(t,r,e,n)}else Bt(t,e,e,n),e.zrDelta=e.wheelDelta?e.wheelDelta/120:-(e.detail||0)/3;var o=e.button;return null==e.which&&void 0!==o&&zt.test(e.type)&&(e.which=1&o?1:2&o?3:4&o?2:0),e}function Ht(t,e,n,i){Et?t.addEventListener(e,n,i):t.attachEvent("on"+e,n)}var Wt=Et?function(t){t.preventDefault(),t.stopPropagation(),t.cancelBubble=!0}:function(t){t.returnValue=!1,t.cancelBubble=!0};function Gt(t){return 2===t.which||3===t.which}function Zt(){this._track=[]}function Ut(t){var e=t[1][0]-t[0][0],n=t[1][1]-t[0][1];return Math.sqrt(e*e+n*n)}Zt.prototype={constructor:Zt,recognize:function(t,e,n){return this._doTrack(t,e,n),this._recognize(t)},clear:function(){return this._track.length=0,this},_doTrack:function(t,e,n){var i=t.touches;if(i){for(var r={points:[],touches:[],target:e,event:t},o=0,a=i.length;oi.getWidth()||n<0||n>i.getHeight()}$t.prototype={constructor:$t,setHandlerProxy:function(e){this.proxy&&this.proxy.dispose(),e&&(D(Kt,function(t){e.on&&e.on(t,this[t],this)},this),e.handler=this),this.proxy=e},mousemove:function(t){var e=t.zrX,n=t.zrY,i=Jt(this,e,n),r=this._hovered,o=r.target;o&&!o.__zr&&(o=(r=this.findHover(r.x,r.y)).target);var a=this._hovered=i?{x:e,y:n}:this.findHover(e,n),s=a.target,l=this.proxy;l.setCursor&&l.setCursor(s?s.cursor:"default"),o&&s!==o&&this.dispatchToElement(r,"mouseout",t),this.dispatchToElement(a,"mousemove",t),s&&s!==o&&this.dispatchToElement(a,"mouseover",t)},mouseout:function(t){var e=t.zrEventControl,n=t.zrIsToLocalDOM;"only_globalout"!==e&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==e&&(n||this.trigger("globalout",{type:"globalout",event:t}))},resize:function(t){this._hovered={}},dispatch:function(t,e){var n=this[t];n&&n.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,n){var i=(t=t||{}).target;if(!i||!i.silent){for(var r="on"+e,o=function(t,e,n){return{type:t,event:n,target:e.target,topTarget:e.topTarget,cancelBubble:!1,offsetX:n.zrX,offsetY:n.zrY,gestureEvent:n.gestureEvent,pinchX:n.pinchX,pinchY:n.pinchY,pinchScale:n.pinchScale,wheelDelta:n.zrDelta,zrByTouch:n.zrByTouch,which:n.which,stop:jt}}(e,t,n);i&&(i[r]&&(o.cancelBubble=i[r].call(i,o)),i.trigger(e,o),i=i.parent,!o.cancelBubble););o.cancelBubble||(this.trigger(e,o),this.painter&&this.painter.eachOtherLayer(function(t){"function"==typeof t[r]&&t[r].call(t,o),t.trigger&&t.trigger(e,o)}))}},findHover:function(t,e,n){for(var i=this.storage.getDisplayList(),r={x:t,y:e},o=i.length-1;0<=o;o--){var a;if(i[o]!==n&&!i[o].ignore&&(a=Qt(i[o],t,e))&&(r.topTarget||(r.topTarget=i[o]),a!==Yt)){r.target=i[o];break}}return r},processGesture:function(t,e){this._gestureMgr||(this._gestureMgr=new Zt);var n=this._gestureMgr;"start"===e&&n.clear();var i=n.recognize(t,this.findHover(t.zrX,t.zrY,null).target,this.proxy.dom);if("end"===e&&n.clear(),i){var r=i.type;t.gestureEvent=r,this.dispatchToElement({target:i.target},r,i.event)}}},D(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(a){$t.prototype[a]=function(t){var e,n,i=t.zrX,r=t.zrY,o=Jt(this,i,r);if("mouseup"===a&&o||(n=(e=this.findHover(i,r)).target),"mousedown"===a)this._downEl=n,this._downPoint=[t.zrX,t.zrY],this._upEl=n;else if("mouseup"===a)this._upEl=n;else if("click"===a){if(this._downEl!==this._upEl||!this._downPoint||4=this._maxSize&&0>4|(3840&i)>>8,240&i|(240&i)>>4,15&i|(15&i)<<4,1),ze(t,e),e):void Pe(e,0,0,0,1):7===r.length?0<=(i=parseInt(r.substr(1),16))&&i<=16777215?(Pe(e,(16711680&i)>>16,(65280&i)>>8,255&i,1),ze(t,e),e):void Pe(e,0,0,0,1):void 0;var o=r.indexOf("("),a=r.indexOf(")");if(-1!==o&&a+1===r.length){var s=r.substr(0,o),l=r.substr(o+1,a-(o+1)).split(","),u=1;switch(s){case"rgba":if(4!==l.length)return void Pe(e,0,0,0,1);u=Ae(l.pop());case"rgb":return 3!==l.length?void Pe(e,0,0,0,1):(Pe(e,Te(l[0]),Te(l[1]),Te(l[2]),u),ze(t,e),e);case"hsla":return 4!==l.length?void Pe(e,0,0,0,1):(l[3]=Ae(l[3]),Be(l,e),ze(t,e),e);case"hsl":return 3!==l.length?void Pe(e,0,0,0,1):(Be(l,e),ze(t,e),e);default:return}}Pe(e,0,0,0,1)}}function Be(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=Ae(t[1]),r=Ae(t[2]),o=r<=.5?r*(i+1):r+i-r*i,a=2*r-o;return Pe(e=e||[],Ie(255*De(a,o,n+1/3)),Ie(255*De(a,o,n)),Ie(255*De(a,o,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Re(t,e){var n=Ne(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,255e);n++);n=Math.min(n-1,u-2)}D=e;var i=g[(A=n)+1]-g[n];if(0!=i)if(S=(e-g[n])/i,l)if(I=m[n],M=m[0===n?n:n-1],C=m[u-2=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},clone:function(){return new Sn(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}}},Sn.create=function(t){return new Sn(t.x,t.y,t.width,t.height)};var Mn=function(t){for(var e in t=t||{},gn.call(this,t),t)t.hasOwnProperty(e)&&(this[e]=t[e]);this._children=[],this.__storage=null,this.__dirty=!0};Mn.prototype={constructor:Mn,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,n=0;n>>1])<0?l=o:s=1+o;var u=i-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(;0>>1);0>>1);o(t,e[n+h])<0?l=h:a=h+1}return l}function Pn(p,g){var a,s,m=Cn,l=0,v=[];function e(t){var e=a[t],n=s[t],i=a[t+1],r=s[t+1];s[t]=n+r,t===l-3&&(a[t+1]=a[t+2],s[t+1]=s[t+2]),l--;var o=kn(p[i],p,e,n,0,g);e+=o,0!==(n-=o)&&0!==(r=Dn(p[e+n-1],p,i,r,r-1,g))&&(n<=r?function(t,e,n,i){var r=0;for(r=0;rs[t+1])break;e(t)}},this.forceMergeRuns=function(){for(;1>=1;return t+e}(r);do{if((o=Tn(t,n,i,e))=e.maxIterations){t+=e.ellipsis;break}var s=0===a?mi(t,r,e.ascCharWidth,e.cnCharWidth):0f)return{lines:[],width:0,height:0};D.textWidth=li(D.text,w);var S=_.textWidth,M=null==S||"auto"===S;if("string"==typeof S&&"%"===S.charAt(S.length-1))D.percentWidth=S,u.push(D),S=0;else{if(M){S=D.textWidth;var I=_.textBackgroundColor,C=I&&I.image;C&&ei(C=Qn(C))&&(S=Math.max(S,C.width*b/C.height))}var T=x?x[1]+x[3]:0;S+=T;var A=null!=d?d-v:null;null!=A&&Ai[0]){for(a=0;at);a++);o=n[i[a]]}if(i.splice(a+1,0,t),!(n[t]=e).virtual)if(o){var l=o.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 dn("Layer of zlevel "+t+" is not valid")},eachLayer:function(t,e){var n,i,r=this._zlevelList;for(i=0;i=o.length&&o.push({option:t})}}),o}function Br(t){var a=Q();Ar(t,function(t,e){var n=t.exist;n&&a.set(n.id,t)}),Ar(t,function(t,e){var n=t.option;X(!n||null==n.id||!a.get(n.id)||a.get(n.id)===t,"id duplicates: "+(n&&n.id)),n&&null!=n.id&&a.set(n.id,t),t.keyInfo||(t.keyInfo={})}),Ar(t,function(t,e){var n=t.exist,i=t.option,r=t.keyInfo;if(Dr(i)){if(r.name=null!=i.name?i.name+"":n?n.name:Pr+e,n)r.id=n.id;else if(null!=i.id)r.id=i.id+"";else for(var o=0;r.id="\0"+r.name+"\0"+o++,a.get(r.id););a.set(r.id,t)}})}function Rr(t){var e=t.name;return!(!e||!e.indexOf(Pr))}function Vr(t){return Dr(t)&&t.id&&0===(t.id+"").indexOf("\0_ec_\0")}function Fr(e,t){return null!=t.dataIndexInside?t.dataIndexInside:null!=t.dataIndex?O(t.dataIndex)?P(t.dataIndex,function(t){return e.indexOfRawIndex(t)}):e.indexOfRawIndex(t.dataIndex):null!=t.name?O(t.name)?P(t.name,function(t){return e.indexOfName(t)}):e.indexOfName(t.name):void 0}function Hr(){var e="__\0ec_inner_"+Wr+++"_"+Math.random().toFixed(5);return function(t){return t[e]||(t[e]={})}}var Wr=0;function Gr(s,l,u){if(z(l)){var t={};t[l+"Index"]=0,l=t}var e=u&&u.defaultMainType;!e||Zr(l,e+"Index")||Zr(l,e+"Id")||Zr(l,e+"Name")||(l[e+"Index"]=0);var h={};return Ar(l,function(t,e){t=l[e];if("dataIndex"!==e&&"dataIndexInside"!==e){var n=e.match(/^(\w+)(Index|Id|Name)$/)||[],i=n[1],r=(n[2]||"").toLowerCase();if(!(!i||!r||null==t||"index"===r&&"none"===t||u&&u.includeMainTypes&&x(u.includeMainTypes,i)<0)){var o={mainType:i};"index"===r&&"all"===t||(o[r]=t);var a=s.queryComponents(o);h[i+"Models"]=a,h[i+"Model"]=a[0]}}else h[e]=t}),h}function Zr(t,e){return t&&t.hasOwnProperty(e)}function Ur(t,e,n){t.setAttribute?t.setAttribute(e,n):t[e]=n}function Xr(t){return"auto"===t?v.domSupported?"html":"richText":t||"html"}var Yr=".",jr="___EC__COMPONENT__CONTAINER___";function qr(t){var e={main:"",sub:""};return t&&(t=t.split(Yr),e.main=t[0]||"",e.sub=t[1]||""),e}function $r(t){(t.$constructor=t).extend=function(t){function e(){t.$constructor?t.$constructor.apply(this,arguments):n.apply(this,arguments)}var n=this;return k(e.prototype,t),e.extend=this.extend,e.superCall=Jr,e.superApply=to,w(e,this),e.superClass=n,e}}var Kr=0;function Qr(t){var e=["__\0is_clz",Kr++,Math.random().toFixed(3)].join("_");t.prototype[e]=!0,t.isInstance=function(t){return!(!t||!t[e])}}function Jr(t,e){var n=Z(arguments,2);return this.superClass.prototype[e].apply(t,n)}function to(t,e,n){return this.superClass.prototype[e].apply(t,n)}function eo(n,t){t=t||{};var r={};if(n.registerClass=function(t,e){if(e)if(function(t){X(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t),'componentType "'+t+'" illegal')}(e),(e=qr(e)).sub){if(e.sub!==jr){(function(t){var e=r[t.main];e&&e[jr]||((e=r[t.main]={})[jr]=!0);return e})(e)[e.sub]=t}}else r[e.main]=t;return t},n.getClass=function(t,e,n){var i=r[t];if(i&&i[jr]&&(i=e?i[e]:null),n&&!i)throw new Error(e?"Component "+t+"."+(e||"")+" not exists. Load it first.":t+".type should be specified.");return i},n.getClassesByMainType=function(t){t=qr(t);var n=[],e=r[t.main];return e&&e[jr]?D(e,function(t,e){e!==jr&&n.push(t)}):n.push(e),n},n.hasClass=function(t){return t=qr(t),!!r[t.main]},n.getAllClassMainTypes=function(){var n=[];return D(r,function(t,e){n.push(e)}),n},n.hasSubTypes=function(t){t=qr(t);var e=r[t.main];return e&&e[jr]},n.parseClassType=qr,t.registerWhenExtend){var i=n.extend;i&&(n.extend=function(t){var e=i.call(this,t);return n.registerClass(e,t.type)})}return n}function no(s){for(var t=0;tthis._ux||Ko(e-this._yi)>this._uy||this._len<5;return this.addData(Ho.L,t,e),this._ctx&&n&&(this._needsDash()?this._dashedLineTo(t,e):this._ctx.lineTo(t,e)),n&&(this._xi=t,this._yi=e),this},bezierCurveTo:function(t,e,n,i,r,o){return this.addData(Ho.C,t,e,n,i,r,o),this._ctx&&(this._needsDash()?this._dashedBezierTo(t,e,n,i,r,o):this._ctx.bezierCurveTo(t,e,n,i,r,o)),this._xi=r,this._yi=o,this},quadraticCurveTo:function(t,e,n,i){return this.addData(Ho.Q,t,e,n,i),this._ctx&&(this._needsDash()?this._dashedQuadraticTo(t,e,n,i):this._ctx.quadraticCurveTo(t,e,n,i)),this._xi=n,this._yi=i,this},arc:function(t,e,n,i,r,o){return this.addData(Ho.A,t,e,n,n,i,r-i,0,o?0:1),this._ctx&&this._ctx.arc(t,e,n,i,r,o),this._xi=jo(r)*n+t,this._yi=qo(r)*n+e,this},arcTo:function(t,e,n,i,r){return this._ctx&&this._ctx.arcTo(t,e,n,i,r),this},rect:function(t,e,n,i){return this._ctx&&this._ctx.rect(t,e,n,i),this.addData(Ho.R,t,e,n,i),this},closePath:function(){this.addData(Ho.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&(this._needsDash()&&this._dashedLineTo(e,n),t.closePath()),this._xi=e,this._yi=n,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;for(var e=this._dashIdx=0,n=0;ne.length&&(this._expandData(),e=this.data);for(var n=0;nl||Ko(a-r)>u||c===h-1)&&(t.lineTo(o,a),i=o,r=a);break;case Ho.C:t.bezierCurveTo(s[c++],s[c++],s[c++],s[c++],s[c++],s[c++]),i=s[c-2],r=s[c-1];break;case Ho.Q:t.quadraticCurveTo(s[c++],s[c++],s[c++],s[c++]),i=s[c-2],r=s[c-1];break;case Ho.A:var f=s[c++],p=s[c++],g=s[c++],m=s[c++],v=s[c++],y=s[c++],_=s[c++],x=s[c++],w=m=ca[i=0]+t&&a<=ca[1]+t?h:0}if(o){l=i;i=ra(r),r=ra(l)}else i=ra(i),r=ra(r);rMath.PI/2&&p<1.5*Math.PI&&(h=-h),c+=h)}}return c}function ma(t,e,n,i,r){for(var o=0,a=0,s=0,l=0,u=0,h=0;hMath.abs(o[1])?0=e[1])return n[1]}else{if(t>=e[0])return n[0];if(t<=e[1])return n[1]}else{if(t===e[0])return n[0];if(t===e[1])return n[1]}return(t-e[0])/r*o+n[0]}function Cl(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?function(t){return t.replace(/^\s+|\s+$/g,"")}(t).match(/%$/)?parseFloat(t)/100*e:parseFloat(t):null==t?NaN:+t}function Tl(t,e,n){return null==e&&(e=10),e=Math.min(Math.max(0,e),20),t=(+t).toFixed(e),n?t:+t}function Al(t){return t.sort(function(t,e){return t-e}),t}function Dl(t){if(t=+t,isNaN(t))return 0;for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}function kl(t){var e=t.toString(),n=e.indexOf("e");if(0h&&(h=u[d],c=d);++s[c],u[c]=0,++l}return s[e]/r}function Ol(t){var e=2*Math.PI;return(t%e+e)%e}function El(t){return-Ml"'])/g,Ul={"&":"&","<":"<",">":">",'"':""","'":"'"};function Xl(t){return null==t?"":(t+"").replace(Zl,function(t,e){return Ul[e]})}function Yl(t,e){return"{"+t+(null==e?"":e)+"}"}var jl=["a","b","c","d","e","f","g"];function ql(t,e,n){O(e)||(e=[e]);var i=e.length;if(!i)return"";for(var r=e[0].$vars||[],o=0;o':'':{renderMode:r,content:"{marker"+o+"|} ",style:{color:n}}:""}function Kl(t,e){return"0000".substr(0,e-(t+="").length)+t}function Ql(t,e,n){"week"!==t&&"month"!==t&&"quarter"!==t&&"half-year"!==t&&"year"!==t||(t="MM-dd\nyyyy");var i=Nl(e),r=n?"UTC":"",o=i["get"+r+"FullYear"](),a=i["get"+r+"Month"]()+1,s=i["get"+r+"Date"](),l=i["get"+r+"Hours"](),u=i["get"+r+"Minutes"](),h=i["get"+r+"Seconds"](),c=i["get"+r+"Milliseconds"]();return t=t.replace("MM",Kl(a,2)).replace("M",a).replace("yyyy",o).replace("yy",o%100).replace("dd",Kl(s,2)).replace("d",s).replace("hh",Kl(l,2)).replace("h",l).replace("mm",Kl(u,2)).replace("m",u).replace("ss",Kl(h,2)).replace("s",h).replace("SSS",Kl(c,3))}function Jl(t){return t?t.charAt(0).toUpperCase()+t.substr(1):t}var tu=fi;var eu=(Object.freeze||Object)({addCommas:Hl,toCamelCase:Wl,normalizeCssArray:Gl,encodeHTML:Xl,formatTpl:ql,formatTplSimple:function(n,t,i){return D(t,function(t,e){n=n.replace("{"+e+"}",i?Xl(t):t)}),n},getTooltipMarker:$l,formatTime:Ql,capitalFirst:Jl,truncateText:tu,getTextBoundingRect:function(t){return ui(t.text,t.font,t.textAlign,t.textVerticalAlign,t.textPadding,t.textLineHeight,t.rich,t.truncate)},getTextRect:function(t,e,n,i,r,o,a,s){return ui(t,e,n,i,r,s,o,a)}}),nu=D,iu=["left","right","top","bottom","width","height"],ru=[["width","left","right"],["height","top","bottom"]];function ou(h,c,d,f,p){var g=0,m=0;null==f&&(f=1/0),null==p&&(p=1/0);var v=0;c.eachChild(function(t,e){var n,i,r=t.position,o=t.getBoundingRect(),a=c.childAt(e+1),s=a&&a.getBoundingRect();if("horizontal"===h){var l=o.width+(s?-s.x+o.x:0);v=f<(n=g+l)||t.newline?(g=0,n=l,m+=v+d,o.height):Math.max(v,o.height)}else{var u=o.height+(s?-s.y+o.y:0);v=p<(i=m+u)||t.newline?(g+=v+d,m=0,i=u,o.width):Math.max(v,o.width)}t.newline||(r[0]=g,r[1]=m,"horizontal"===h?g=n+d:m=i+d)})}var au=ou;T(ou,"vertical"),T(ou,"horizontal");function su(t,e,n){n=Gl(n||0);var i=e.width,r=e.height,o=Cl(t.left,i),a=Cl(t.top,r),s=Cl(t.right,i),l=Cl(t.bottom,r),u=Cl(t.width,i),h=Cl(t.height,r),c=n[2]+n[0],d=n[1]+n[3],f=t.aspect;switch(isNaN(u)&&(u=i-s-d-o),isNaN(h)&&(h=r-l-c-a),null!=f&&(isNaN(u)&&isNaN(h)&&(i/re)return t[i];return t[n-1]}(s,n):a;if((l=l||a)&&l.length){var u=l[r];return t&&(o[t]=u),i.colorIdx=(r+1)%l.length,u}}},bu="original",Su="arrayRows",Mu="objectRows",Iu="keyedColumns",Cu="unknown",Tu="typedArray",Au="column",Du="row";function ku(t){this.fromDataset=t.fromDataset,this.data=t.data||(t.sourceFormat===Iu?{}:[]),this.sourceFormat=t.sourceFormat||Cu,this.seriesLayoutBy=t.seriesLayoutBy||Au,this.dimensionsDefine=t.dimensionsDefine,this.encodeDefine=t.encodeDefine&&Q(t.encodeDefine),this.startIndex=t.startIndex||0,this.dimensionsDetectCount=t.dimensionsDetectCount}ku.seriesDataToSource=function(t){return new ku({data:t,sourceFormat:R(t)?Tu:bu,fromDataset:!1})},Qr(ku);var Pu={Must:1,Might:2,Not:3},Lu=Hr();function Ou(t){var e=t.option,n=e.data,i=R(n)?Tu:bu,r=!1,o=e.seriesLayoutBy,a=e.sourceHeader,s=e.dimensions,l=Ru(t);if(l){var u=l.option;n=u.source,i=Lu(l).sourceFormat,r=!0,o=o||u.seriesLayoutBy,null==a&&(a=u.sourceHeader),s=s||u.dimensions}var h=function(t,e,n,i,r){if(!t)return{dimensionsDefine:Eu(r)};var o,a;if(e===Su)"auto"===i||null==i?zu(function(t){null!=t&&"-"!==t&&(z(t)?null==a&&(a=1):a=0)},n,t,10):a=i?1:0,r||1!==a||(r=[],zu(function(t,e){r[e]=null!=t?t:""},n,t)),o=r?r.length:n===Du?t.length:t[0]?t[0].length:null;else if(e===Mu)r=r||function(t){var e,n=0;for(;n":"\n",f="richText"===c,p={},g=0;function n(t){return{renderMode:c,content:Xl(Hl(t)),style:p}}var m=this.getData(),o=m.mapDimension("defaultedTooltip",!0),i=o.length,a=this.getRawValue(r),s=O(a),v=m.getItemVisual(r,"color");N(v)&&v.colorStops&&(v=(v.colorStops[0]||{}).color),v=v||"transparent";var l=(1":"",i=n+u.join(n||", ");return{renderMode:c,content:i,style:p}}(a):n(i?Ah(m,r,o[0]):s?a[0]:a)).content,u=d.seriesIndex+"at"+g,y=$l({color:v,type:"item",renderMode:c,markerId:u});p[u]=v,++g;var _=m.getName(r),x=this.name;Rr(this)||(x=""),x=x?Xl(x)+(h?": ":e):"";var w="string"==typeof y?y:y.content;return{html:h?w+x+l:x+w+(_?Xl(_)+": "+l:l),markers:p}},isAnimationEnabled:function(){if(v.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,n){var i=this.ecModel,r=wu.getColorFromPalette.call(this,t,e,n);return r=r||i.getColorFromPalette(t,e,n)},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});function Yh(t){var e=t.name;Rr(t)||(t.name=function(t){var n=t.getRawData(),e=n.mapDimension("seriesName",!0),i=[];return D(e,function(t){var e=n.getDimensionInfo(t);e.displayName&&i.push(e.displayName)}),i.join(" ")}(t)||e)}function jh(t){return t.model.getRawData().count()}function qh(t){var e=t.model;return e.setData(e.getRawData().cloneShallow()),$h}function $h(t,e){t.end>e.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function Kh(e,n){D(e.CHANGABLE_METHODS,function(t){e.wrapMethod(t,T(Qh,n))})}function Qh(t){var e=Jh(t);e&&e.setOutputEnd(this.count())}function Jh(t){var e=(t.ecModel||{}).scheduler,n=e&&e.getPipeline(t.uid);if(n){var i=n.currentTask;if(i){var r=i.agentStubMap;r&&(i=r.get(t.uid))}return i}}S(Xh,Ph),S(Xh,wu);var tc=function(){this.group=new Mn,this.uid=Sl("viewComponent")};tc.prototype={constructor:tc,init:function(t,e){},render:function(t,e,n,i){},dispose:function(){},filterForExposedEvent:null};var ec=tc.prototype;ec.updateView=ec.updateLayout=ec.updateVisual=function(t,e,n,i){},$r(tc),eo(tc,{registerWhenExtend:!0});function nc(){var s=Hr();return function(t){var e=s(t),n=t.pipelineContext,i=e.large,r=e.progressiveRender,o=e.large=n&&n.large,a=e.progressiveRender=n&&n.progressiveRender;return!!(i^o||r^a)&&"reset"}}var ic=Hr(),rc=nc();function oc(){this.group=new Mn,this.uid=Sl("viewChart"),this.renderTask=Lh({plan:uc,reset:hc}),this.renderTask.context={view:this}}var ac=oc.prototype={type:"chart",init:function(t,e){},render:function(t,e,n,i){},highlight:function(t,e,n,i){lc(t.getData(),i,"emphasis")},downplay:function(t,e,n,i){lc(t.getData(),i,"normal")},remove:function(t,e){this.group.removeAll()},dispose:function(){},incrementalPrepareRender:null,incrementalRender:null,updateTransform:null,filterForExposedEvent:null};function sc(t,e,n){if(t&&(t.trigger(e,n),t.isGroup&&!Us(t)))for(var i=0,r=t.childCount();ic?n+=p(g("data.partialData"),{displayCnt:c}):n+=g("data.allData");for(var a=[],s=0;sn.blockIndex?n.step:null,o=i&&i.modDataCount;return{step:r,modBy:null!=o?Math.ceil(o/r):null,modDataCount:o}}},Sc.getPipeline=function(t){return this._pipelineMap.get(t)},Sc.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),r=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),a="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:r,modDataCount:a,large:o}},Sc.restorePipelines=function(t){var i=this,r=i._pipelineMap=Q();t.eachSeries(function(t){var e=t.getProgressive(),n=t.uid;r.set(n,{id:n,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:e&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(e||700),count:0}),zc(i,t,t.dataTask)})},Sc.prepareStageTasks=function(){var n=this._stageTaskMap,i=this.ecInstance.getModel(),r=this.api;D(this._allHandlers,function(t){var e=n.get(t.uid)||n.set(t.uid,[]);t.reset&&function(i,r,t,o,a){var s=t.seriesTaskMap||(t.seriesTaskMap=Q()),e=r.seriesType,n=r.getTargetSeries;r.createOnAllSeries?o.eachRawSeries(l):e?o.eachRawSeriesByType(e,l):n&&n(o,a).each(l);function l(t){var e=t.uid,n=s.get(e)||s.set(e,Lh({plan:kc,reset:Pc,count:Ec}));n.context={model:t,ecModel:o,api:a,useClearVisual:r.isVisual&&!r.isLayout,plan:r.plan,reset:r.reset,scheduler:i},zc(i,t,n)}var u=i._pipelineMap;s.each(function(t,e){u.get(e)||(t.dispose(),s.removeKey(e))})}(this,t,e,i,r),t.overallReset&&function(i,t,e,n,r){var o=e.overallTask=e.overallTask||Lh({reset:Cc});o.context={ecModel:n,api:r,overallReset:t.overallReset,scheduler:i};var a=o.agentStubMap=o.agentStubMap||Q(),s=t.seriesType,l=t.getTargetSeries,u=!0,h=t.modifyOutputEnd;s?n.eachRawSeriesByType(s,c):l?l(n,r).each(c):(u=!1,D(n.getSeries(),c));function c(t){var e=t.uid,n=a.get(e);n||(n=a.set(e,Lh({reset:Tc,onDirty:Dc})),o.dirty()),n.context={model:t,overallProgress:u,modifyOutputEnd:h},n.agent=o,n.__block=u,zc(i,t,n)}var d=i._pipelineMap;a.each(function(t,e){d.get(e)||(t.dispose(),o.dirty(),a.removeKey(e))})}(this,t,e,i,r)},this)},Sc.prepareView=function(t,e,n,i){var r=t.renderTask,o=r.context;o.model=e,o.ecModel=n,o.api=i,r.__block=!t.incrementalPrepareRender,zc(this,e,r)},Sc.performDataProcessorTasks=function(t,e){Mc(this,this._dataProcessorHandlers,t,e,{block:!0})},Sc.performVisualTasks=function(t,e,n){Mc(this,this._visualHandlers,t,e,n)},Sc.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e|=t.dataTask.perform()}),this.unfinished|=e},Sc.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 Ic=Sc.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)};function Cc(t){t.overallReset(t.ecModel,t.api,t.payload)}function Tc(t,e){return t.overallProgress&&Ac}function Ac(){this.agent.dirty(),this.getDownstream().dirty()}function Dc(){this.agent&&this.agent.dirty()}function kc(t){return t.plan&&t.plan(t.model,t.ecModel,t.api,t.payload)}function Pc(t){t.useClearVisual&&t.data.clearAllVisual();var e=t.resetDefines=Lr(t.reset(t.model,t.ecModel,t.api,t.payload));return 1t.get("hoverLayerThreshold")&&!v.node&&t.eachSeries(function(t){if(!t.preventUsingHoverLayer){var e=n._chartsMap[t.__viewId];e.__alive&&e.group.traverse(function(t){t.useHoverLayer=!0})}})}(i,t),xc(i._zr.dom,t)}function Ed(e,n){hd(Wd,function(t){t(e,n)})}wd.resize=function(t){if(!this._disposed){this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var n=e.resetOption("media"),i=t&&t.silent;this[gd]=!0,n&&Md(this),Sd.update.call(this),this[gd]=!1,Ad.call(this,i),Dd.call(this,i)}}},wd.showLoading=function(t,e){if(!this._disposed&&(dd(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),Ud[t])){var n=Ud[t](this._api,e),i=this._zr;this._loadingFX=n,i.add(n)}},wd.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},wd.makeActionFromEvent=function(t){var e=k({},t);return e.type=Vd[t.type],e},wd.dispatchAction=function(t,e){this._disposed||(dd(e)||(e={silent:!!e}),Rd[t.type]&&this._model&&(this[gd]?this._pendingActions.push(t):(Td.call(this,t,e.silent),e.flush?this._zr.flush(!0):!1!==e.flush&&v.browser.weChat&&this._throttledZrFlush(),Ad.call(this,e.silent),Dd.call(this,e.silent))))},wd.appendData=function(t){if(!this._disposed){var e=t.seriesIndex;this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0}},wd.on=yd("on",!1),wd.off=yd("off",!1),wd.one=yd("one",!1);var zd=["click","dblclick","mouseover","mouseout","mousemove","mousedown","mouseup","globalout","contextmenu"];function Nd(t,e){var n=t.get("z"),i=t.get("zlevel");e.group.traverse(function(t){"group"!==t.type&&(null!=n&&(t.z=n),null!=i&&(t.zlevel=i))})}function Bd(){this.eventInfo}wd._initEvents=function(){hd(zd,function(u){function t(t){var e,n=this.getModel(),i=t.target;if("globalout"===u)e={};else if(i&&null!=i.dataIndex){var r=i.dataModel||n.getSeriesByIndex(i.seriesIndex);e=r&&r.getDataParams(i.dataIndex,i.dataType,i)||{}}else i&&i.eventData&&(e=k({},i.eventData));if(e){var o=e.componentType,a=e.componentIndex;"markLine"!==o&&"markPoint"!==o&&"markArea"!==o||(o="series",a=e.seriesIndex);var s=o&&null!=a&&n.getComponent(o,a),l=s&&this["series"===s.mainType?"_chartsMap":"_componentsMap"][s.__viewId];e.event=t,e.type=u,this._ecEventProcessor.eventInfo={targetEl:i,packedEvent:e,model:s,view:l},this.trigger(u,e)}}t.zrEventfulCallAtLast=!0,this._zr.on(u,t,this)},this),hd(Vd,function(t,e){this._messageCenter.on(e,function(t){this.trigger(e,t)},this)},this)},wd.isDisposed=function(){return this._disposed},wd.clear=function(){this._disposed||this.setOption({series:[]},!0)},wd.dispose=function(){if(!this._disposed){this._disposed=!0,Ur(this.getDom(),$d,"");var e=this._api,n=this._model;hd(this._componentsViews,function(t){t.dispose(n,e)}),hd(this._chartsViews,function(t){t.dispose(n,e)}),this._zr.dispose(),delete Xd[this.id]}},S(xd,It),Bd.prototype={constructor:Bd,normalizeQuery:function(t){var s={},l={},u={};if(z(t)){var e=fd(t);s.mainType=e.main||null,s.subType=e.sub||null}else{var h=["Index","Name","Id"],c={name:1,dataIndex:1,dataType:1};D(t,function(t,e){for(var n=!1,i=0;i_[1]&&(_[1]=y)}e&&(this._nameList[d]=e[f])}this._rawCount=this._count=l,this._extent={},Lf(this)},kf._initDataFromProvider=function(t,e){if(!(e<=t)){for(var n,i=this._chunkSize,r=this._rawData,o=this._storage,a=this.dimensions,s=a.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(!r.pure){var I=u[v];if(m&&null==I)if(null!=m.name)u[v]=I=m.name;else if(null!=n){var C=a[n],T=o[C][y];if(T){I=T[_];var A=l[C].ordinalMeta;A&&A.categories.length&&(I=A.categories[I])}}var D=null==m?null:m.id;null==D&&null!=I&&(d[I]=d[I]||0,0=this._rawCount||t<0)return-1;if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return o;r=o-1}}return-1},kf.indicesOfNearest=function(t,e,n){var i=[];if(!this._storage[t])return i;null==n&&(n=1/0);for(var r=1/0,o=-1,a=0,s=0,l=this.count();st[I][1])&&(M=!1)}M&&(o[a++]=this.getRawIndex(m))}return aw[1]&&(w[1]=x)}}}return r},kf.downSample=function(t,e,n,i){for(var r=Rf(this,[t]),o=r._storage,a=[],s=Math.floor(1/e),l=o[t],u=this.count(),h=this._chunkSize,c=r._rawExtent[t],d=new(If(this))(u),f=0,p=0;pc[1]&&(c[1]=_),d[f++]=x}return r._count=f,r._indices=d,r.getRawIndex=zf,r},kf.getItemModel=function(t){var e=this.hostModel;return new _l(this.getRawDataItem(t),e,e&&e.ecModel)},kf.diff=function(e){var n=this;return new pf(e?e.getIndices():[],this.getIndices(),function(t){return Nf(e,t)},function(t){return Nf(n,t)})},kf.getVisual=function(t){var e=this._visual;return e&&e[t]},kf.setVisual=function(t,e){if(_f(t))for(var n in t)t.hasOwnProperty(n)&&this.setVisual(n,t[n]);else this._visual=this._visual||{},this._visual[t]=e},kf.setLayout=function(t,e){if(_f(t))for(var n in t)t.hasOwnProperty(n)&&this.setLayout(n,t[n]);else this._layout[t]=e},kf.getLayout=function(t){return this._layout[t]},kf.getItemLayout=function(t){return this._itemLayouts[t]},kf.setItemLayout=function(t,e,n){this._itemLayouts[t]=n?k(this._itemLayouts[t]||{},e):e},kf.clearItemLayouts=function(){this._itemLayouts.length=0},kf.getItemVisual=function(t,e,n){var i=this._itemVisuals[t],r=i&&i[e];return null!=r||n?r:this.getVisual(e)},kf.setItemVisual=function(t,e,n){var i=this._itemVisuals[t]||{},r=this.hasItemVisual;if(this._itemVisuals[t]=i,_f(e))for(var o in e)e.hasOwnProperty(o)&&(i[o]=e[o],r[o]=!0);else i[e]=n,r[e]=!0},kf.clearAllVisual=function(){this._visual={},this._itemVisuals=[],this.hasItemVisual={}};function Hf(t){t.seriesIndex=this.seriesIndex,t.dataIndex=this.dataIndex,t.dataType=this.dataType}function Wf(t,e,n){ku.isInstance(e)||(e=ku.seriesDataToSource(e)),n=n||{},t=(t||[]).slice();for(var i=(n.dimsDef||[]).slice(),r=Q(),o=Q(),l=[],a=function(t,e,n,i){var r=Math.max(t.dimensionsDetectCount||1,e.length,n.length,i||0);return D(e,function(t){var e=t.dimsDef;e&&(r=Math.max(r,e.length))}),r}(e,t,i,n.dimCount),s=0;s=e[0]&&t<=e[1]},Qf.prototype.normalize=function(t){var e=this._extent;return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])},Qf.prototype.scale=function(t){var e=this._extent;return t*(e[1]-e[0])+e[0]},Qf.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1])},Qf.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},Qf.prototype.getExtent=function(){return this._extent.slice()},Qf.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},Qf.prototype.isBlank=function(){return this._isBlank},Qf.prototype.setBlank=function(t){this._isBlank=t},Qf.prototype.getLabel=null,$r(Qf),eo(Qf,{registerWhenExtend:!0}),Jf.createByAxisModel=function(t){var e=t.option,n=e.data,i=n&&P(n,np);return new Jf({categories:i,needCollect:!i,deduplication:!1!==e.dedplication})};var tp=Jf.prototype;function ep(t){return t._map||(t._map=Q(t.categories))}function np(t){return N(t)&&null!=t.value?t.value:t+""}tp.getOrdinal=function(t){return ep(this).get(t)},tp.parseAndCollect=function(t){var e,n=this._needCollect;if("string"!=typeof t&&!n)return t;if(n&&!this._deduplication)return e=this.categories.length,this.categories[e]=t,e;var i=ep(this);return null==(e=i.get(t))&&(n?(e=this.categories.length,this.categories[e]=t,i.set(t,e)):e=NaN),e};var ip=Qf.prototype,rp=Qf.extend({type:"ordinal",init:function(t,e){t&&!O(t)||(t=new Jf({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),ip.contain.call(this,t)&&null!=this._ordinalMeta.categories[t]},normalize:function(t){return ip.normalize.call(this,this.parse(t))},scale:function(t){return Math.round(ip.scale.call(this,t))},getTicks:function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push(n),n++;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:J,niceExtent:J});rp.create=function(){return new rp};var op=Tl;function ap(t){return kl(t)+2}function sp(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function lp(t,e){isFinite(t[0])||(t[0]=e[0]),isFinite(t[1])||(t[1]=e[1]),sp(t,0,e),sp(t,1,e),t[0]>t[1]&&(t[0]=t[1])}var up=Tl,hp=Qf.extend({type:"interval",_interval:0,_intervalPrecision:2,setExtent:function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},unionExtent:function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),hp.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=ap(t)},getTicks:function(t){var e=this._interval,n=this._extent,i=this._niceExtent,r=this._intervalPrecision,o=[];if(!e)return o;n[0]s&&(t?o.push(up(s+e,r)):o.push(n[1])),o},getMinorTicks:function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),r=1;ri[0]&&h>>1;t[r][1]>1^-(1&s),l=l>>1^-(1&l),r=s+=r,o=l+=o,i.push([s/n,l/n])}return i}sg.prototype={constructor:sg,properties:null,getBoundingRect:function(){var t=this._rect;if(t)return t;for(var e=Number.MAX_VALUE,n=[e,e],i=[-e,-e],r=[],o=[],a=this.geometries,s=0;ss[1];d(e[0].coord,s[0])&&(i?e[0].coord=s[0]:e.shift());i&&d(s[0],e[0].coord)&&e.unshift({coord:s[0]});d(s[1],o.coord)&&(i?o.coord=s[1]:e.pop());i&&d(o.coord,s[1])&&e.push({coord:s[1]});function d(t,e){return t=Tl(t),e=Tl(e),c?ei[0]&&(i[0]=o[0]),o[1]>i[1]&&(i[1]=o[1])}return{min:e?n:i,max:e?i:n}}var Jg=xa.extend({type:"ec-polyline",shape:{points:[],smooth:0,smoothConstraint:!0,smoothMonotone:null,connectNulls:!1},style:{fill:null,stroke:"#000"},brush:Va(xa.prototype.brush),buildPath:function(t,e){var n=e.points,i=0,r=n.length,o=Qg(n,e.smoothConstraint);if(e.connectNulls){for(;0i)return!1;return!0}(o,e))){var a=e.mapDimension(o.dim),s={};return D(o.getViewLabels(),function(t){s[t.tickValue]=1}),function(t){return!s.hasOwnProperty(e.get(a,t))}}}}function sm(t,e,n){if("cartesian2d"!==t.type)return nm(t,e,n);var i=t.getBaseAxis().isHorizontal(),r=em(t,e,n);if(!n.get("clip",!0)){var o=r.shape,a=Math.max(o.width,o.height);i?(o.y-=a,o.height+=2*a):(o.x-=a,o.width+=2*a)}return r}oc.extend({type:"line",init:function(){var t=new Mn,e=new Ng;this.group.add(e.group),this._symbolDraw=e,this._lineGroup=t},render:function(t,e,n){var i=t.coordinateSystem,r=this.group,o=t.getData(),a=t.getModel("lineStyle"),s=t.getModel("areaStyle"),l=o.mapArray(o.getItemLayout),u="polar"===i.type,h=this._coordSys,c=this._symbolDraw,d=this._polyline,f=this._polygon,p=this._lineGroup,g=t.get("animation"),m=!s.isEmpty(),v=s.get("origin"),y=function(t,e,n){if(!n.valueDim)return[];for(var i=[],r=0,o=e.count();rh[c-1].coord&&(h.reverse(),d.reverse());var f=h[0].coord-10,p=h[c-1].coord+10,g=p-f;if(g<.001)return"transparent";D(h,function(t){t.offset=(t.coord-f)/g}),h.push({offset:c?h[c-1].offset:.5,color:d[1]||"transparent"}),h.unshift({offset:c?h[0].offset:.5,color:d[0]||"transparent"});var m=new ls(0,0,0,0,h,!0);return m[i]=f,m[i+"2"]=p,m}}}(o,i)||o.getVisual("color");d.useStyle(A(a.getLineStyle(),{fill:"none",stroke:M,lineJoin:"bevel"}));var I=t.get("smooth");if(I=rm(t.get("smooth")),d.setShape({smooth:I,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")}),f){var C=o.getCalculationInfo("stackedOnSeries"),T=0;f.useStyle(A(s.getAreaStyle(),{fill:M,opacity:.7,lineJoin:"bevel"})),C&&(T=rm(C.get("smooth"))),f.setShape({smooth:I,stackedOnSmooth:T,smoothMonotone:t.get("smoothMonotone"),connectNulls:t.get("connectNulls")})}this._data=o,this._coordSys=i,this._stackedOnPoints=y,this._points=l,this._step=S,this._valueOrigin=v},dispose:function(){},highlight:function(t,e,n,i){var r=t.getData(),o=Fr(r,i);if(!(o instanceof Array)&&null!=o&&0<=o){var a=r.getItemGraphicEl(o);if(!a){var s=r.getItemLayout(o);if(!s)return;if(this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(s[0],s[1]))return;(a=new Cg(r,o)).position=s,a.setZ(t.get("zlevel"),t.get("z")),a.ignore=isNaN(s[0])||isNaN(s[1]),a.__temp=!0,r.setItemGraphicEl(o,a),a.stopSymbolAnimation(!0),this.group.add(a)}a.highlight()}else oc.prototype.highlight.call(this,t,e,n,i)},downplay:function(t,e,n,i){var r=t.getData(),o=Fr(r,i);if(null!=o&&0<=o){var a=r.getItemGraphicEl(o);a&&(a.__temp?(r.setItemGraphicEl(o,null),this.group.remove(a)):a.downplay())}else oc.prototype.downplay.call(this,t,e,n,i)},_newPolyline:function(t){var e=this._polyline;return e&&this._lineGroup.remove(e),e=new Jg({shape:{points:t},silent:!0,z2:10}),this._lineGroup.add(e),this._polyline=e},_newPolygon:function(t,e){var n=this._polygon;return n&&this._lineGroup.remove(n),n=new tm({shape:{points:t,stackedOnPoints:e},silent:!0}),this._lineGroup.add(n),this._polygon=n},_updateAnimation:function(t,e,n,i,r,o){var a=this._polyline,s=this._polygon,l=t.hostModel,u=function(t,e,n,i,r,o,a,s){for(var l=function(t,e){var n=[];return e.diff(t).add(function(t){n.push({cmd:"+",idx:t})}).update(function(t,e){n.push({cmd:"=",idx:e,idx1:t})}).remove(function(t){n.push({cmd:"-",idx:t})}).execute(),n}(t,e),u=[],h=[],c=[],d=[],f=[],p=[],g=[],m=Hg(r,e,a),v=Hg(o,t,s),y=0;ye&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;ne[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},w(gm,_g);var mm={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)"]}}},vm={};vm.categoryAxis=m({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},mm),vm.valueAxis=m({boundaryGap:[0,0],splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#eee",width:1}}},mm),vm.timeAxis=A({scale:!0,min:"dataMin",max:"dataMax"},vm.valueAxis),vm.logAxis=A({scale:!0,logBase:10},vm.valueAxis);function ym(o,t,a,e){D(_m,function(r){t.extend({type:o+"Axis."+r,mergeDefaultAndTheme:function(t,e){var n=this.layoutMode,i=n?hu(t):{};m(t,e.getTheme().get(r+"Axis")),m(t,this.getDefaultOption()),t.type=a(o,t),n&&uu(t,i,n)},optionUpdated:function(){"category"===this.option.type&&(this.__ordinalMeta=Jf.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:p([{},vm[r+"Axis"],e],!0)})}),mu.registerSubTypeDefaulter(o+"Axis",T(a,o))}var _m=["value","category","time","log"],xm=mu.extend({type:"cartesian2dAxis",axis:null,init:function(){xm.superApply(this,"init",arguments),this.resetRange()},mergeOption:function(){xm.superApply(this,"mergeOption",arguments),this.resetRange()},restoreData:function(){xm.superApply(this,"restoreData",arguments),this.resetRange()},getCoordSysModel:function(){return this.ecModel.queryComponents({mainType:"grid",index:this.option.gridIndex,id:this.option.gridId})[0]}});function wm(t,e){return e.type||(e.data?"category":"value")}m(xm.prototype,Xp);var bm={offset:0};function Sm(t,e){return t.getCoordSysModel()===e}function Mm(t,e,n){this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this._initCartesian(t,e,n),this.model=t}ym("x",xm,wm,bm),ym("y",xm,wm,bm),mu.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 Im=Mm.prototype;function Cm(t,e,n,i){n.getAxesOnZeroOf=function(){return r?[r]:[]};var r,o=t[e],a=n.model,s=a.get("axisLine.onZero"),l=a.get("axisLine.onZeroAxisIndex");if(s){if(null!=l)Tm(o[l])&&(r=o[l]);else for(var u in o)if(o.hasOwnProperty(u)&&Tm(o[u])&&!i[h(o[u])]){r=o[u];break}r&&(i[h(r)]=!0)}function h(t){return t.dim+"_"+t.index}}function Tm(t){return t&&"category"!==t.type&&"time"!==t.type&&function(t){var e=t.scale.getExtent(),n=e[0],i=e[1];return!(0u[1]?-1:1,c=["start"===o?u[0]-h*l:"end"===o?u[1]+h*l:(u[0]+u[1])/2,Vm(o)?t.labelOffset+a*l:0],d=e.get("nameRotate");null!=d&&(d=d*Lm/180),Vm(o)?i=zm(t.rotation,null!=d?d:t.rotation,a):(i=function(t,e,n,i){var r,o,a=Ol(n-t.rotation),s=i[0]>i[1],l="start"===e&&!s||"start"!==e&&s;r=El(a-Lm/2)?(o=l?"bottom":"top","center"):El(a-1.5*Lm)?(o=l?"top":"bottom","center"):(o="middle",a<1.5*Lm&&Lm/2l[1]&&l.reverse(),(null==a||a>l[1])&&(a=l[1]),a=n.r0}}});var Av=Math.PI/180;function Dv(r,t,e,n,i,o,a,s,l,u){function h(t,e,n){for(var i=t;il+a);i++)if(r[i].y+=n,tr[i].y+r[i].height)return void c(i,n/2);c(e-1,n/2)}function c(t,e){for(var n=t;0<=n&&!(r[n].y-er[n-1].y+r[n-1].height));n--);}function d(t,e,n,i,r,o){for(var a=e?Number.MAX_VALUE:0,s=0,l=t.length;s=e?v.push(r[y]):m.push(r[y]);d(m,!1,t,e,n,i),d(v,!0,t,e,n,i)}function kv(t){return"center"===t.position}function Pv(k,P,L,t,O,e){var E,z,N=k.getData(),B=[],R=!1,V=(k.get("minShowLabelAngle")||0)*Av;N.each(function(t){var e=N.getItemLayout(t),n=N.getItemModel(t),i=n.getModel("label"),r=i.get("position")||n.get("emphasis.label.position"),o=i.get("distanceToLabelLine"),a=i.get("alignTo"),s=Cl(i.get("margin"),L),l=i.get("bleedMargin"),u=i.getFont(),h=n.getModel("labelLine"),c=h.get("length");c=Cl(c,L);var d=h.get("length2");if(d=Cl(d,L),!(e.anglea)return!0;if(o){var s=Um(t).seriesDataCount,l=i.getExtent();return Math.abs(l[0]-l[1])/s>a}return!1},makeElOption:function(t,e,n,i,r){},createPointerEl:function(t,e,n,i){var r=e.pointer;if(r){var o=ay(t).pointerEl=new dl[r.type](sy(e.pointer));t.add(o)}},createLabelEl:function(t,e,n,i){if(e.label){var r=ay(t).labelEl=new Ja(sy(e.label));t.add(r),cy(r,i)}},updatePointerEl:function(t,e,n){var i=ay(t).pointerEl;i&&e.pointer&&(i.setStyle(e.pointer.style),n(i,{shape:e.pointer.shape}))},updateLabelEl:function(t,e,n,i){var r=ay(t).labelEl;r&&(r.setStyle(e.label.style),n(r,{shape:e.label.shape,position:e.label.position}),cy(r,i))},_renderHandle:function(t){if(!this._dragging&&this.updateHandleTransform){var e,n=this._axisPointerModel,i=this._api.getZr(),r=this._handle,o=n.getModel("handle"),a=n.get("status");if(!o.get("show")||!a||"hide"===a)return r&&i.remove(r),void(this._handle=null);this._handle||(e=!0,r=this._handle=ul(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){Wt(t.event)},onmousedown:ly(this._onHandleDragMove,this,0,0),drift:ly(this._onHandleDragMove,this),ondragend:ly(this._onHandleDragEnd,this)}),i.add(r)),fy(r,n,!1);r.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var s=o.get("size");O(s)||(s=[s,s]),r.attr("scale",[s[0]/2,s[1]/2]),mc(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,e)}},_moveHandleToValue:function(t,e){hy(this._axisPointerModel,!e&&this._moveAnimation,this._handle,dy(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},_onHandleDragMove:function(t,e){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(dy(n),[t,e],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(dy(i)),ay(n).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(),n=this._group,i=this._handle;e&&n&&(this._lastGraphicKey=null,n&&e.remove(n),i&&e.remove(i),this._group=null,this._handle=null,this._payloadInfo=null)},doClear:function(){},buildLabel:function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}}).constructor=uy);var vy=uy.extend({makeElOption:function(t,e,n,i,r){var o=n.axis,a=o.grid,s=i.get("type"),l=yy(a,o).getOtherAxis(o).getGlobalExtent(),u=o.toGlobalCoord(o.dataToCoord(e,!0));if(s&&"none"!==s){var h=function(t){var e,n=t.get("type"),i=t.getModel(n+"Style");return"line"===n?(e=i.getLineStyle()).fill=null:"shadow"===n&&((e=i.getAreaStyle()).stroke=null),e}(i),c=_y[s](o,u,l);c.style=h,t.graphicKey=c.type,t.pointer=c}!function(t,e,n,i,r,o){var a=Pm.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=r.get("label.margin"),py(e,i,r,o,{position:my(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}(e,t,Qm(a.model,n),n,i,r)},getHandleTransform:function(t,e,n){var i=Qm(e.axis.grid.model,e,{labelInside:!1});return i.labelMargin=n.get("handle.margin"),{position:my(e.axis,t,i),rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},updateHandleTransform:function(t,e,n,i){var r=n.axis,o=r.grid,a=r.getGlobalExtent(!0),s=yy(o,r).getOtherAxis(r).getGlobalExtent(),l="x"===r.dim?0:1,u=t.position;u[l]+=e[l],u[l]=Math.min(a[1],u[l]),u[l]=Math.max(a[0],u[l]);var h=(s[1]+s[0])/2,c=[h,h];c[l]=u[l];return{position:u,rotation:t.rotation,cursorPoint:c,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][l]}}});function yy(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var _y={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:function(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}([e,n[0]],[e,n[1]],xy(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),r=n[1]-n[0];return{type:"Rect",shape:function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}([e-i/2,n[0]],[i,r],xy(t))}}};function xy(t){return"x"===t.dim?0:1}jm.registerAxisPointerClass("CartesianAxisPointer",vy),ef(function(t){if(t){t.axisPointer&&0!==t.axisPointer.length||(t.axisPointer={});var e=t.axisPointer.link;e&&!O(e)&&(t.axisPointer.link=[e])}}),nf(pd.PROCESSOR.STATISTIC,function(t,e){t.getComponent("axisPointer").coordSysAxesInfo=Gm(t,e)}),rf({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},function(t,e,n){var i=t.currTrigger,a=[t.x,t.y],r=t,o=t.dispatchAction||C(n.dispatchAction,n),s=e.getComponent("axisPointer").coordSysAxesInfo;if(s){Qv(a)&&(a=Zv({seriesIndex:r.seriesIndex,dataIndex:r.dataIndex},e).point);var l=Qv(a),u=r.axesInfo,h=s.axesInfo,c="leave"===i||Qv(a),d={},f={},p={list:[],map:{}},g={showPointer:Xv(qv,f),showTooltip:Xv($v,p)};Uv(s.coordSysMap,function(t,e){var o=l||t.containPoint(a);Uv(s.coordSysAxesInfo[e],function(t,e){var n=t.axis,i=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(u,t);if(!c&&o&&(!u||i)){var r=i&&i.value;null!=r||l||(r=n.pointToData(a)),null!=r&&jv(t,r,g,!1,d)}})});var m={};return Uv(h,function(r,t){var o=r.linkGroup;o&&!f[t]&&Uv(o.axesInfo,function(t,e){var n=f[e];if(t!==r&&n){var i=n.value;o.mapper&&(i=r.axis.scale.parse(o.mapper(i,Kv(t),Kv(r)))),m[r.key]=i}})}),Uv(m,function(t,e){jv(h[e],t,g,!0,d)}),function(r,t,e){var o=e.axesInfo=[];Uv(t,function(t,e){var n=t.axisPointerModel.option,i=r[e];i?(t.useHandle||(n.status="show"),n.value=i.value,n.seriesDataIndices=(i.payloadBatch||[]).slice()):t.useHandle||(n.status="hide"),"show"===n.status&&o.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:n.value})})}(f,h,d),function(t,e,n,i){if(Qv(e)||!t.list.length)return i({type:"hideTip"});var r=((t.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};i({type:"showTip",escapeConnect:!0,x:e[0],y:e[1],tooltipOption:n.tooltipOption,position:n.position,dataIndexInside:r.dataIndexInside,dataIndex:r.dataIndex,seriesIndex:r.seriesIndex,dataByCoordSys:t.list})}(p,a,t,o),function(t,e,n){var i=n.getZr(),r="axisPointerLastHighlights",o=Yv(i)[r]||{},a=Yv(i)[r]={};Uv(t,function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&Uv(n.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;a[e]=t})});var s=[],l=[];D(o,function(t,e){a[e]||l.push(t)}),D(a,function(t,e){o[e]||s.push(t)}),l.length&&n.dispatchAction({type:"downplay",escapeConnect:!0,batch:l}),s.length&&n.dispatchAction({type:"highlight",escapeConnect:!0,batch:s})}(h,0,n),d}}),uf({type:"tooltip",dependencies:["axisPointer"],defaultOption:{zlevel:0,z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:!1,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"rgba(50,50,50,0.7)",borderColor:"#333",borderRadius:4,borderWidth:0,padding:5,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#fff",fontSize:14}}});var wy=D,by=Wl,Sy=["","-webkit-","-moz-","-o-"];function My(r){var o=[],t=r.get("transitionDuration"),e=r.get("backgroundColor"),n=r.getModel("textStyle"),i=r.get("padding");return t&&o.push(function(t){var e="cubic-bezier(0.23, 1, 0.32, 1)",n="left "+t+"s "+e+",top "+t+"s "+e;return P(Sy,function(t){return t+"transition:"+n}).join(";")}(t)),e&&(v.canvasSupported?o.push("background-Color:"+e):(o.push("background-Color:#"+Ve(e)),o.push("filter:alpha(opacity=70)"))),wy(["width","color","radius"],function(t){var e="border-"+t,n=by(e),i=r.get(n);null!=i&&o.push(e+":"+i+("color"===t?"":"px"))}),o.push(function(n){var i=[],t=n.get("fontSize"),e=n.getTextColor();return e&&i.push("color:"+e),i.push("font:"+n.getFont()),t&&i.push("line-height:"+Math.round(3*t/2)+"px"),wy(["decoration","align"],function(t){var e=n.get(t);e&&i.push("text-"+t+":"+e)}),i.join(";")}(n)),null!=i&&o.push("padding:"+Gl(i).join("px ")+"px"),o.join(";")+";"}function Iy(t,e,n,i,r){var o=e&&e.painter;if(n){var a=o&&o.getViewportRoot();a&&function(t,e,n,i,r){Lt(Pt,e,i,r,!0)&&Lt(t,n,Pt[0],Pt[1])}(t,a,document.body,i,r)}else{t[0]=i,t[1]=r;var s=o&&o.getViewportRootOffset();s&&(t[0]+=s.offsetLeft,t[1]+=s.offsetTop)}}function Cy(t,e,n){if(v.wxa)return null;var i=document.createElement("div");i.domBelongToZr=!0,this.el=i;var r=this._zr=e.getZr(),o=this._appendToBody=n&&n.appendToBody;this._styleCoord=[0,0],Iy(this._styleCoord,r,o,e.getWidth()/2,e.getHeight()/2),o?document.body.appendChild(i):t.appendChild(i),this._container=t,this._show=!1,this._hideTimeout;var a=this;i.onmouseenter=function(){a._enterable&&(clearTimeout(a._hideTimeout),a._show=!0),a._inContent=!0},i.onmousemove=function(t){if(t=t||window.event,!a._enterable){var e=r.handler;Ft(r.painter.getViewportRoot(),t,!0),e.dispatch("mousemove",t)}},i.onmouseleave=function(){a._enterable&&a._show&&a.hideLater(a._hideDelay),a._inContent=!1}}function Ty(t){this._zr=t.getZr(),this._show=!1,this._hideTimeout}Cy.prototype={constructor:Cy,_enterable:!0,update:function(){var t=this._container,e=t.currentStyle||document.defaultView.getComputedStyle(t),n=t.style;"absolute"!==n.position&&"absolute"!==e.position&&(n.position="relative")},show:function(t){clearTimeout(this._hideTimeout);var e=this.el,n=this._styleCoord;e.style.cssText="position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;"+My(t)+";left:"+n[0]+"px;top:"+n[1]+"px;"+(t.get("extraCssText")||""),e.style.display=e.innerHTML?"block":"none",e.style.pointerEvents=this._enterable?"auto":"none",this._show=!0},setContent:function(t){this.el.innerHTML=null==t?"":t},setEnterable:function(t){this._enterable=t},getSize:function(){var t=this.el;return[t.clientWidth,t.clientHeight]},moveTo:function(t,e){var n=this._styleCoord;Iy(n,this._zr,this._appendToBody,t,e);var i=this.el.style;i.left=n[0]+"px",i.top=n[1]+"px"},hide:function(){this.el.style.display="none",this._show=!1},hideLater:function(t){!this._show||this._inContent&&this._enterable||(t?(this._hideDelay=t,this._show=!1,this._hideTimeout=setTimeout(C(this.hide,this),t)):this.hide())},isShow:function(){return this._show},dispose:function(){this.el.parentNode.removeChild(this.el)},getOuterSize:function(){var t=this.el.clientWidth,e=this.el.clientHeight;if(document.defaultView&&document.defaultView.getComputedStyle){var n=document.defaultView.getComputedStyle(this.el);n&&(t+=parseInt(n.borderLeftWidth,10)+parseInt(n.borderRightWidth,10),e+=parseInt(n.borderTopWidth,10)+parseInt(n.borderBottomWidth,10))}return{width:t,height:e}}},Ty.prototype={constructor:Ty,_enterable:!0,update:function(){},show:function(t){this._hideTimeout&&clearTimeout(this._hideTimeout),this.el.attr("show",!0),this._show=!0},setContent:function(t,e,n){this.el&&this._zr.remove(this.el);for(var i={},r=t,o="{marker",a=r.indexOf(o);0<=a;){var s=r.indexOf("|}"),l=r.substr(a+o.length,s-a-o.length);-1n[r],f=[-h.x,-h.y];e||(f[i]=s.position[i]);var p=[0,0],g=[-c.x,-c.y],m=W(t.get("pageButtonGap",!0),t.get("itemGap",!0));d&&("end"===t.get("pageButtonPosition",!0)?g[i]+=n[r]-c[r]:p[i]+=c[r]+m);g[1-i]+=h[o]/2-c[o]/2,s.attr("position",f),l.attr("position",p),u.attr("position",g);var v={x:0,y:0};if(v[r]=d?n[r]:h[r],v[o]=Math.max(h[o],c[o]),v[a]=Math.min(0,c[a]+g[1-i]),l.__rectSize=n[r],d){var y={x:0,y:0};y[r]=Math.max(n[r]-c[r]-m,0),y[o]=v[o],l.setClipPath(new Ja({shape:y})),l.__rectSize=y[r]}else u.eachChild(function(t){t.attr({invisible:!0,silent:!0})});var _=this._getPageInfo(t);return null!=_.pageIndex&&nl(s,{position:_.contentPosition},d&&t),this._updatePageInfoView(t,_),v},_pageGo:function(t,e,n){var i=this._getPageInfo(e)[t];null!=i&&n.dispatchAction({type:"legendScroll",scrollDataIndex:i,legendId:e.id})},_updatePageInfoView:function(i,r){var o=this._controllerGroup;D(["pagePrev","pageNext"],function(t){var e=null!=r[t+"DataIndex"],n=o.childOfName(t);n&&(n.setStyle("fill",e?i.get("pageIconColor",!0):i.get("pageIconInactiveColor",!0)),n.cursor=e?"pointer":"default")});var t=o.childOfName("pageText"),e=i.get("pageFormatter"),n=r.pageIndex,a=null!=n?n+1:0,s=r.pageCount;t&&e&&t.setStyle("text",z(e)?e.replace("{current}",a).replace("{total}",s):e({current:a,total:s}))},_getPageInfo:function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,r=t.getOrient().index,o=Ky[r],a=Qy[r],s=this._findTargetItemIndex(e),l=n.children(),u=l[s],h=l.length,c=h?1:0,d={contentPosition:n.position.slice(),pageCount:c,pageIndex:c-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!u)return d;var f=y(u);d.contentPosition[r]=-f.s;for(var p=s+1,g=f,m=f,v=null;p<=h;++p)(!(v=y(l[p]))&&m.e>g.s+i||v&&!_(v,g.s))&&(g=m.i>g.i?m:v)&&(null==d.pageNextDataIndex&&(d.pageNextDataIndex=g.i),++d.pageCount),m=v;for(p=s-1,g=f,m=f,v=null;-1<=p;--p)(v=y(l[p]))&&_(m,v.s)||!(g.i=e&&t.s<=e+i}},_findTargetItemIndex:function(i){return this._showController?(this.getContentGroup().eachChild(function(t,e){var n=t.__legendDataIndex;null==o&&null!=n&&(o=e),n===i&&(r=e)}),null!=r?r:o):0;var r,o}});rf("legendScroll","legendscroll",function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(n)})}),uf({type:"title",layoutMode:{type:"box",ignoreSize:!0},defaultOption:{zlevel:0,z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bolder",color:"#333"},subtextStyle:{color:"#aaa"}}}),hf({type:"title",render:function(t,e,n){if(this.group.removeAll(),t.get("show")){var i=this.group,r=t.getModel("textStyle"),o=t.getModel("subtextStyle"),a=t.get("textAlign"),s=W(t.get("textBaseline"),t.get("textVerticalAlign")),l=new Ra({style:js({},r,{text:t.get("text"),textFill:r.getTextColor()},{disableBox:!0}),z2:10}),u=l.getBoundingRect(),h=t.get("subtext"),c=new Ra({style:js({},o,{text:h,textFill:o.getTextColor(),y:u.height+t.get("itemGap"),textVerticalAlign:"top"},{disableBox:!0}),z2:10}),d=t.get("link"),f=t.get("sublink"),p=t.get("triggerEvent",!0);l.silent=!d&&!p,c.silent=!f&&!p,d&&l.on("click",function(){window.open(d,"_"+t.get("target"))}),f&&c.on("click",function(){window.open(f,"_"+t.get("subtarget"))}),l.eventData=c.eventData=p?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(l),h&&i.add(c);var g=i.getBoundingRect(),m=t.getBoxLayoutParams();m.width=g.width,m.height=g.height;var v=su(m,{width:n.getWidth(),height:n.getHeight()},t.get("padding"));a||("middle"===(a=t.get("left")||t.get("right"))&&(a="center"),"right"===a?v.x+=v.width:"center"===a&&(v.x+=v.width/2)),s||("center"===(s=t.get("top")||t.get("bottom"))&&(s="middle"),"bottom"===s?v.y+=v.height:"middle"===s&&(v.y+=v.height/2),s=s||"top"),i.attr("position",[v.x,v.y]);var y={textAlign:a,textVerticalAlign:s};l.setStyle(y),c.setStyle(y),g=i.getBoundingRect();var _=v.margin,x=t.getItemStyle(["color","opacity"]);x.fill=t.get("backgroundColor");var w=new Ja({shape:{x:g.x-_[3],y:g.y-_[0],width:g.width+_[1]+_[3],height:g.height+_[0]+_[2],r:t.get("borderRadius")},style:x,subPixelOptimize:!0,silent:!0});i.add(w)}}});var t_=Hl,e_=Xl;function n_(t){Or(t,"label",["show"])}var i_=uf({type:"marker",dependencies:["series","grid","polar","geo"],init:function(t,e,n){this.mergeDefaultAndTheme(t,n),this._mergeOption(t,n,!1,!0)},isAnimationEnabled:function(){if(v.node)return!1;var t=this.__hostSeries;return this.getShallow("animation")&&t&&t.isAnimationEnabled()},mergeOption:function(t,e){this._mergeOption(t,e,!1,!1)},_mergeOption:function(t,i,e,r){var o=this.constructor,a=this.mainType+"Model";e||i.eachSeries(function(t){var e=t.get(this.mainType,!0),n=t[a];e&&e.data?(n?n._mergeOption(e,i,!0):(r&&n_(e),D(e.data,function(t){t instanceof Array?(n_(t[0]),n_(t[1])):n_(t)}),k(n=new o(e,this,i),{mainType:this.mainType,seriesIndex:t.seriesIndex,name:t.name,createdBySelf:!0}),n.__hostSeries=t),t[a]=n):t[a]=null},this)},formatTooltip:function(t){var e=this.getData(),n=this.getRawValue(t),i=O(n)?P(n,t_).join(", "):t_(n),r=e.getName(t),o=e_(this.name);return null==n&&!r||(o+="
"),r&&(o+=e_(r),null!=n&&(o+=" : ")),null!=n&&(o+=e_(i)),o},getData:function(){return this._data},setData:function(t){this._data=t}});S(i_,Ph),i_.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 r_=x;function o_(t,e,n,i,r,o){var a=[],s=qf(e,i)?e.getCalculationInfo("stackResultDimension"):i,l=d_(e,s,t),u=e.indicesOfNearest(s,l)[0];a[r]=e.get(n,u),a[o]=e.get(s,u);var h=e.get(i,u),c=Dl(e.get(i,u));return 0<=(c=Math.min(c,20))&&(a[o]=+a[o].toFixed(c)),[a,h]}var a_=T,s_={min:a_(o_,"min"),max:a_(o_,"max"),average:a_(o_,"average")};function l_(t,e){var n=t.getData(),i=t.coordinateSystem;if(e&&!function(t){return!isNaN(parseFloat(t.x))&&!isNaN(parseFloat(t.y))}(e)&&!O(e.coord)&&i){var r=i.dimensions,o=u_(e,n,i,t);if((e=b(e)).type&&s_[e.type]&&o.baseAxis&&o.valueAxis){var a=r_(r,o.baseAxis.dim),s=r_(r,o.valueAxis.dim),l=s_[e.type](n,o.baseDataDim,o.valueDataDim,a,s);e.coord=l[0],e.value=l[1]}else{for(var u=[null!=e.xAxis?e.xAxis:e.radiusAxis,null!=e.yAxis?e.yAxis:e.angleAxis],h=0;h<2;h++)s_[u[h]]&&(u[h]=d_(n,n.mapDimension(r[h]),u[h]));e.coord=u}}return e}function u_(t,e,n,i){var r={};return null!=t.valueIndex||null!=t.valueDim?(r.valueDataDim=null!=t.valueIndex?e.getDimension(t.valueIndex):t.valueDim,r.valueAxis=n.getAxis(function(t,e){var n=t.getData(),i=n.dimensions;e=n.getDimension(e);for(var r=0;ro&&(e[1-i]=e[i]+c.sign*o),e}function q_(t,e){var n=t[e]-t[1-e];return{span:Math.abs(n),sign:0i[1]&&(i[1]=e[1])})}),i[1]c[1];if(a&&!s&&!l)return!0;a&&(i=!0),s&&(e=!0),l&&(n=!0)}return i&&e&&n}):Q_(h,function(t){if("empty"===r)n.setData(u=u.map(t,function(t){return function(t){return t>=c[0]&&t<=c[1]}(t)?t:NaN}));else{var e={};e[t]=c,u.selectRange(e)}}),Q_(h,function(t){u.setApproximateExtent(c,t)}))})}}};var ex=D,nx=X_,ix=uf({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,n){this._dataIntervalByAxis={},this._dataInfo={},this._axisProxies={},this.textStyleModel,this._autoThrottle=!0,this._rangePropMode=["percent","percent"];var i=rx(t);this.settledOption=i,this.mergeDefaultAndTheme(t,n),this.doInit(i)},mergeOption:function(t){var e=rx(t);m(this.option,t,!0),m(this.settledOption,e,!0),this.doInit(e)},doInit:function(t){var n=this.option;v.canvasSupported||(n.realtime=!1),this._setDefaultThrottle(t),ox(this,t);var i=this.settledOption;ex([["start","startValue"],["end","endValue"]],function(t,e){"value"===this._rangePropMode[e]&&(n[t[0]]=i[t[0]]=null)},this),this.textStyleModel=this.getModel("textStyle"),this._resetTarget(),this._giveAxisProxies()},_giveAxisProxies:function(){var a=this._axisProxies;this.eachTargetAxis(function(t,e,n,i){var r=this.dependentModels[t.axis][e],o=r.__dzAxisProxy||(r.__dzAxisProxy=new K_(t.name,e,this,i));a[t.name+"_"+e]=o},this)},_resetTarget:function(){var n=this.option,t=this._judgeAutoMode();nx(function(t){var e=t.axisIndex;n[e]=Lr(n[e])},this),"axisIndex"===t?this._autoSetAxisIndex():"orient"===t&&this._autoSetOrient()},_judgeAutoMode:function(){var e=this.option,n=!1;nx(function(t){null!=e[t.axisIndex]&&(n=!0)},this);var t=e.orient;return null==t&&n?"orient":n?void 0:(null==t&&(e.orient="horizontal"),"axisIndex")},_autoSetAxisIndex:function(){var o=!0,e=this.get("orient",!0),a=this.option,t=this.dependentModels;if(o){var n="vertical"===e?"y":"x";t[n+"Axis"].length?(a[n+"AxisIndex"]=[0],o=!1):ex(t.singleAxis,function(t){o&&t.get("orient",!0)===e&&(a.singleAxisIndex=[t.componentIndex],o=!1)})}o&&nx(function(t){if(o){var e=[],n=this.dependentModels[t.axis];if(n.length&&!e.length)for(var i=0,r=n.length;ie[0]||n[1]<0||n[1]>e[1])){var i=this._handleEnds,r=(i[0]+i[1])/2,o=this._updateInterval("all",n[0]-r);this._updateView(),o&&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 n;if(cx(this.getTargetCoordInfo(),function(t){if(!n&&t.length){var e=t[0].model.coordinateSystem;n=e.getRect&&e.getRect()}}),!n){var t=this.api.getWidth(),e=this.api.getHeight();n={x:.2*t,y:.2*e,width:.6*t,height:.6*e}}return n}});function mx(t){return"vertical"===t?"ns-resize":"ew-resize"}nf({getTargetSeries:function(t){var i=Q();return t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,e,n){D(n.getAxisProxy(t.name,e).getTargetSeriesModels(),function(t){i.set(t.uid,t)})})}),i},modifyOutputEnd:!0,overallReset:function(t,i){t.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(t,e,n){n.getAxisProxy(t.name,e).reset(n,i)}),t.eachTargetAxis(function(t,e,n){n.getAxisProxy(t.name,e).filterData(n,i)})}),t.eachComponent("dataZoom",function(t){var e=t.findRepresentativeAxisProxy(),n=e.getDataPercentWindow(),i=e.getDataValueWindow();t.setCalculatedRange({start:n[0],end:n[1],startValue:i[0],endValue:i[1]})})}}),rf("dataZoom",function(n,t){var i=Y_(C(t.eachComponent,t,"dataZoom"),X_,function(t,e){return t.get(e.axisIndex)}),r=[];t.eachComponent({mainType:"dataZoom",query:n},function(t,e){r.push.apply(r,i(t).nodes)}),D(r,function(t,e){t.setRawRange({start:n.start,end:n.end,startValue:n.startValue,endValue:n.endValue})})}),ix.extend({type:"dataZoom.inside",defaultOption:{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}});var vx="\0_ec_interaction_mutex";function yx(t,e){return!!_x(t)[e]}function _x(t){return t[vx]||(t[vx]={})}function xx(n){this.pointerChecker,this._zr=n,this._opt={};var t=C,i=t(bx,this),r=t(Sx,this),o=t(Mx,this),a=t(Ix,this),s=t(Cx,this);It.call(this),this.setPointerChecker=function(t){this.pointerChecker=t},this.enable=function(t,e){this.disable(),this._opt=A(b(e)||{},{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),null==t&&(t=!0),!0!==t&&"move"!==t&&"pan"!==t||(n.on("mousedown",i),n.on("mousemove",r),n.on("mouseup",o)),!0!==t&&"scale"!==t&&"zoom"!==t||(n.on("mousewheel",a),n.on("pinch",s))},this.disable=function(){n.off("mousedown",i),n.off("mousemove",r),n.off("mouseup",o),n.off("mousewheel",a),n.off("pinch",s)},this.dispose=this.disable,this.isDragging=function(){return this._dragging},this.isPinching=function(){return this._pinching}}function bx(t){if(!(Gt(t)||t.target&&t.target.draggable)){var e=t.offsetX,n=t.offsetY;this.pointerChecker&&this.pointerChecker(t,e,n)&&(this._x=e,this._y=n,this._dragging=!0)}}function Sx(t){if(this._dragging&&Dx("moveOnMouseMove",t,this._opt)&&"pinch"!==t.gestureEvent&&!yx(this._zr,"globalPan")){var e=t.offsetX,n=t.offsetY,i=this._x,r=this._y,o=e-i,a=n-r;this._x=e,this._y=n,this._opt.preventDefaultMouseMove&&Wt(t.event),Ax(this,"pan","moveOnMouseMove",t,{dx:o,dy:a,oldX:i,oldY:r,newX:e,newY:n})}}function Mx(t){Gt(t)||(this._dragging=!1)}function Ix(t){var e=Dx("zoomOnMouseWheel",t,this._opt),n=Dx("moveOnMouseWheel",t,this._opt),i=t.wheelDelta,r=Math.abs(i),o=t.offsetX,a=t.offsetY;if(0!==i&&(e||n)){if(e){var s=3d.getHeight()&&(n.textPosition="top",o=!0);var a=o?-5-i.height:p+8;r+i.width/2>d.getWidth()?(n.textPosition=["100%",a],n.textAlign="right"):r-i.width/2<0&&(n.textPosition=[0,a],n.textAlign="left")}})}function t(t,e){var n,i=m[t],r=m[e],o=u[i],a=new _l(o,h,h.ecModel);if(l&&null!=l.newTitle&&(o.title=l.newTitle),i&&!r){if(function(t){return 0===t.indexOf("my")}(i))n={model:a,onclick:a.option.onclick,featureName:i};else{var s=Gx(i);if(!s)return;n=new s(a,c,d)}g[i]=n}else{if(!(n=g[r]))return;n.model=a,n.ecModel=c,n.api=d}i||!r?a.get("show")&&!n.unusable?(function(r,o,t){var a=r.getModel("iconStyle"),s=r.getModel("emphasis.iconStyle"),e=o.getIcons?o.getIcons():r.get("icon"),l=r.get("title")||{};if("string"==typeof e){var n=e,i=l;l={},(e={})[t]=n,l[t]=i}var u=r.iconPaths={};D(e,function(t,e){var n=ul(t,{},{x:-p/2,y:-p/2,width:p,height:p});n.setStyle(a.getItemStyle()),n.hoverStyle=s.getItemStyle(),n.setStyle({text:l[e],textAlign:s.get("textAlign"),textBorderRadius:s.get("textBorderRadius"),textPadding:s.get("textPadding"),textFill:null});var i=h.getModel("tooltip");i&&i.get("show")&&n.attr("tooltip",k({content:l[e],formatter:i.get("formatter",!0)||function(){return l[e]},formatterParams:{componentType:"toolbox",name:e,title:l[e],$vars:["name","title"]},position:i.get("position",!0)||"bottom"},i.option)),Gs(n),h.get("showTitle")&&(n.__title=l[e],n.on("mouseover",function(){var t=s.getItemStyle(),e="vertical"===h.get("orient")?null==h.get("right")?"right":"left":null==h.get("bottom")?"bottom":"top";n.setStyle({textFill:s.get("textFill")||t.fill||t.stroke||"#000",textBackgroundColor:s.get("textBackgroundColor"),textPosition:s.get("textPosition")||e})}).on("mouseout",function(){n.setStyle({textFill:null,textBackgroundColor:null})})),n.trigger(r.get("iconStatus."+e)||"normal"),f.add(n),n.on("click",C(o.onclick,o,c,d,e)),u[e]=n})}(a,n,i),a.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&i[t].trigger(e)},n.render&&n.render(a,c,d,l)):n.remove&&n.remove(c,d):n.dispose&&n.dispose(c,d)}},updateView:function(t,e,n,i){D(this._features,function(t){t.updateView&&t.updateView(t.model,e,n,i)})},remove:function(e,n){D(this._features,function(t){t.remove&&t.remove(e,n)}),this.group.removeAll()},dispose:function(e,n){D(this._features,function(t){t.dispose&&t.dispose(e,n)})}});var Ux=_c.toolbox.saveAsImage;function Xx(t){this.model=t}Xx.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:Ux.title,type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],pixelRatio:1,lang:Ux.lang.slice()},Xx.prototype.unusable=!v.canvasSupported,Xx.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",r=n.get("type",!0)||"png",o=e.getConnectedDataURL({type:r,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")});if("function"!=typeof MouseEvent||v.browser.ie||v.browser.edge)if(window.navigator.msSaveOrOpenBlob){for(var a=atob(o.split(",")[1]),s=a.length,l=new Uint8Array(s);s--;)l[s]=a.charCodeAt(s);var u=new Blob([l]);window.navigator.msSaveOrOpenBlob(u,i+"."+r)}else{var h=n.get("lang"),c='';window.open().document.write(c)}else{var d=document.createElement("a");d.download=i+"."+r,d.target="_blank",d.href=o;var f=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!1});d.dispatchEvent(f)}},Wx("saveAsImage",Xx);var Yx=_c.toolbox.magicType,jx="__ec_magicType_stack__";function qx(t){this.model=t}qx.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"},title:b(Yx.title),option:{},seriesIndex:{}};var $x=qx.prototype;$x.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return D(t.get("type"),function(t){e[t]&&(n[t]=e[t])}),n};var Kx={line:function(t,e,n,i){if("bar"===t)return m({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get("option.line")||{},!0)},bar:function(t,e,n,i){if("line"===t)return m({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get("option.bar")||{},!0)},stack:function(t,e,n,i){var r=n.get("stack")===jx;if("line"===t||"bar"===t)return i.setIconStatus("stack",r?"normal":"emphasis"),m({id:e,stack:r?"":jx},i.get("option.stack")||{},!0)}},Qx=[["line","bar"],["stack"]];$x.onclick=function(u,t,h){var c=this.model,e=c.get("seriesIndex."+h);if(Kx[h]){var n,d={series:[]};if(D(Qx,function(t){0<=x(t,h)&&D(t,function(t){c.setIconStatus(t,"normal")})}),c.setIconStatus(h,"emphasis"),u.eachComponent({mainType:"series",query:null==e?null:{seriesIndex:e}},function(t){var e=t.subType,n=t.id,i=Kx[h](e,n,t,c);i&&(A(i,t.option),d.series.push(i));var r=t.coordinateSystem;if(r&&"cartesian2d"===r.type&&("line"===h||"bar"===h)){var o=r.getAxesByScale("ordinal")[0];if(o){var a=o.dim+"Axis",s=u.queryComponents({mainType:a,index:t.get(name+"Index"),id:t.get(name+"Id")})[0].componentIndex;d[a]=d[a]||[];for(var l=0;l<=s;l++)d[a][s]=d[a][s]||{};d[a][s].boundaryGap="bar"===h}}}),"stack"===h)n=d.series&&d.series[0]&&d.series[0].stack===jx?m({stack:Yx.title.tiled},Yx.title):b(Yx.title);t.dispatchAction({type:"changeMagicType",currentType:h,newOption:d,newTitle:n})}},rf({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),Wx("magicType",qx);var Jx=_c.toolbox.dataView,tw=new Array(60).join("-"),ew="\t";function nw(t){var e=function(t){var r={},o=[],a=[];return t.eachRawSeries(function(t){var e=t.coordinateSystem;if(!e||"cartesian2d"!==e.type&&"polar"!==e.type)o.push(t);else{var n=e.getBaseAxis();if("category"===n.type){var i=n.dim+"_"+n.index;r[i]||(r[i]={categoryAxis:n,valueAxis:e.getOtherAxis(n),series:[]},a.push({axisDim:n.dim,axisIndex:n.index})),r[i].series.push(t)}else o.push(t)}}),{seriesGroupByCategoryAxis:r,other:o,meta:a}}(t);return{value:I([function(t){var h=[];return D(t,function(t,e){var n=t.categoryAxis,i=t.valueAxis.dim,r=[" "].concat(P(t.series,function(t){return t.name})),o=[n.model.getCategories()];D(t.series,function(t){o.push(t.getRawData().mapArray(i,function(t){return t}))});for(var a=[r.join(ew)],s=0;si.getWidth()||n<0||n>i.getHeight()}(t,e)){var i=t._zr,r=t._covers,o=Aw(t,e,n);if(!t._dragging)for(var a=0;at[1]&&t.reverse(),t}function lb(t,e){return Gr(t,e,{includeMainTypes:rb})}ab.setOutputRanges=function(t,e){this.matchOutputRanges(t,e,function(t,e,n){if((t.coordRanges||(t.coordRanges=[])).push(e),!t.coordRange){t.coordRange=e;var i=db[t.brushType](0,n,e);t.__rangeOffset={offset:pb[t.brushType](i.values,t.range,[1,1]),xyMinMax:i.xyMinMax}}})},ab.matchOutputRanges=function(t,i,r){tb(t,function(n){var t=this.findTargetInfo(n,i);t&&!0!==t&&D(t.coordSyses,function(t){var e=db[n.brushType](1,t,n.range);r(n,e.values,t,i)})},this)},ab.setInputRanges=function(t,r){tb(t,function(t){var e=this.findTargetInfo(t,r);if(t.range=t.range||[],e&&!0!==e){t.panelId=e.panelId;var n=db[t.brushType](0,e.coordSys,t.coordRange),i=t.__rangeOffset;t.range=i?pb[t.brushType](n.values,i.offset,function(t,e){var n=mb(t),i=mb(e),r=[n[0]/i[0],n[1]/i[1]];return isNaN(r[0])&&(r[0]=1),isNaN(r[1])&&(r[1]=1),r}(n.xyMinMax,i.xyMinMax)):n.values}},this)},ab.makePanelOpts=function(n,i){return P(this._targetInfoList,function(t){var e=t.getPanelRect();return{panelId:t.panelId,defaultBrushType:i&&i(t),clipPath:function(n){return n=Jw(n),function(t,e){return ll(t,n)}}(e),isTargetByCursor:Qw(e,n,t.coordSysModel),getLinearBrushOtherExtent:function(r,o){return r=Jw(r),function(t){var e=null!=o?o:t,n=e?r.width:r.height,i=e?r.x:r.y;return[i,i+(n||0)]}}(e)}})},ab.controlSeries=function(t,e,n){var i=this.findTargetInfo(t,n);return!0===i||i&&0<=eb(i.coordSyses,e.coordinateSystem)},ab.findTargetInfo=function(t,e){for(var n=this._targetInfoList,i=lb(e,t),r=0;r')}}catch(t){Ab=function(t){return Lb.createElement("<"+t+' xmlns="'+Db+'" class="zrvml">')}}var Eb,zb=Jo.CMD,Nb=Math.round,Bb=Math.sqrt,Rb=Math.abs,Vb=Math.cos,Fb=Math.sin,Hb=Math.max;if(!v.canvasSupported){var Wb=",",Gb="progid:DXImageTransform.Microsoft",Zb=21600,Ub=Zb/2,Xb=function(t){t.style.cssText="position:absolute;left:0;top:0;width:1px;height:1px;",t.coordsize=Zb+","+Zb,t.coordorigin="0,0"},Yb=function(t,e,n){return"rgb("+[t,e,n].join(",")+")"},jb=function(t,e){e&&t&&e.parentNode!==t&&t.appendChild(e)},qb=function(t,e){e&&t&&e.parentNode===t&&t.removeChild(e)},$b=function(t,e,n){return 1e5*(parseFloat(t)||0)+1e3*(parseFloat(e)||0)+n},Kb=Hi,Qb=function(t,e,n){var i=Ne(e);n=+n,isNaN(n)&&(n=1),i&&(t.color=Yb(i[0],i[1],i[2]),t.opacity=n*i[3])},Jb=function(t,e,n,i){var r="fill"===e,o=t.getElementsByTagName(e)[0];null!=n[e]&&"none"!==n[e]&&(r||!r&&n.lineWidth)?(t[r?"filled":"stroked"]="true",n[e]instanceof rs&&qb(t,o),o=o||Ob(e),r?function(t,e,n){var i,r,o=e.fill;if(null!=o)if(o instanceof rs){var a,s=0,l=[0,0],u=0,h=1,c=n.getBoundingRect(),d=c.width,f=c.height;if("linear"===o.type){a="gradient";var p=n.transform,g=[o.x*d,o.y*f],m=[o.x2*d,o.y2*f];p&&(yt(g,g,p),yt(m,m,p));var v=m[0]-g[0],y=m[1]-g[1];(s=180*Math.atan2(v,y)/Math.PI)<0&&(s+=360),s<1e-6&&(s=0)}else{a="gradientradial";g=[o.x*d,o.y*f],p=n.transform;var _=n.scale,x=d,w=f;l=[(g[0]-c.x)/x,(g[1]-c.y)/w],p&&yt(g,g,p),x/=_[0]*Zb,w/=_[1]*Zb;var b=Hb(x,w);u=0/b,h=2*o.r/b-u}var S=o.colorStops.slice();S.sort(function(t,e){return t.offset-e.offset});for(var M=S.length,I=[],C=[],T=0;T=c&&d<=n+1){for(var i=[],r=0;r=c&&d<=r+1)return WS(h,e.components,u,l);p[t]=e}else p[t]=void 0}var s;f++}for(;f<=e;){var a=o();if(a)return a}},pushComponent:function(t,e,n){var i=t[t.length-1];i&&i.added===e&&i.removed===n?t[t.length-1]={count:i.count+1,added:e,removed:n}:t.push({count:1,added:e,removed:n})},extractCommon:function(t,e,n,i){for(var r=e.length,o=n.length,a=t.newPos,s=a-i,l=0;a+1= 2) { + var fakeBody = document.createElement("body"); + var testElement = document.createElement("div"); + testElement.style.border = ".5px solid transparent"; + fakeBody.appendChild(testElement); + docEl.appendChild(fakeBody); + if (testElement.offsetHeight === 1) { + docEl.classList.add("hairlines"); + } + docEl.removeChild(fakeBody); + } +})(window, document); diff --git a/src/assets/font/DS-DIGIT.TTF b/src/assets/font/DS-DIGIT.TTF new file mode 100644 index 0000000000000000000000000000000000000000..65642f982e7ee18d1c110285679323e2ef6d23d9 GIT binary patch literal 25480 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 literal 0 HcmV?d00001 diff --git a/src/assets/icon/MaterialIcons-Regular.eot b/src/assets/icon/MaterialIcons-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..70508ebabc9992e64f1314f866b2d7ab90438c58 GIT binary patch literal 143258 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 Hzx)3OGG_Ot literal 0 HcmV?d00001 diff --git a/src/assets/icon/MaterialIcons-Regular.ijmap b/src/assets/icon/MaterialIcons-Regular.ijmap new file mode 100644 index 0000000..d9f1d25 --- /dev/null +++ b/src/assets/icon/MaterialIcons-Regular.ijmap @@ -0,0 +1 @@ +{"icons":{"e84d":{"name":"3d Rotation"},"eb3b":{"name":"Ac Unit"},"e190":{"name":"Access Alarm"},"e191":{"name":"Access Alarms"},"e192":{"name":"Access Time"},"e84e":{"name":"Accessibility"},"e914":{"name":"Accessible"},"e84f":{"name":"Account Balance"},"e850":{"name":"Account Balance Wallet"},"e851":{"name":"Account Box"},"e853":{"name":"Account Circle"},"e60e":{"name":"Adb"},"e145":{"name":"Add"},"e439":{"name":"Add A Photo"},"e193":{"name":"Add Alarm"},"e003":{"name":"Add Alert"},"e146":{"name":"Add Box"},"e147":{"name":"Add Circle"},"e148":{"name":"Add Circle Outline"},"e567":{"name":"Add Location"},"e854":{"name":"Add Shopping Cart"},"e39d":{"name":"Add To Photos"},"e05c":{"name":"Add To Queue"},"e39e":{"name":"Adjust"},"e630":{"name":"Airline Seat Flat"},"e631":{"name":"Airline Seat Flat Angled"},"e632":{"name":"Airline Seat Individual Suite"},"e633":{"name":"Airline Seat Legroom Extra"},"e634":{"name":"Airline Seat Legroom Normal"},"e635":{"name":"Airline Seat Legroom Reduced"},"e636":{"name":"Airline Seat Recline Extra"},"e637":{"name":"Airline Seat Recline Normal"},"e195":{"name":"Airplanemode Active"},"e194":{"name":"Airplanemode Inactive"},"e055":{"name":"Airplay"},"eb3c":{"name":"Airport Shuttle"},"e855":{"name":"Alarm"},"e856":{"name":"Alarm Add"},"e857":{"name":"Alarm Off"},"e858":{"name":"Alarm On"},"e019":{"name":"Album"},"eb3d":{"name":"All Inclusive"},"e90b":{"name":"All Out"},"e859":{"name":"Android"},"e85a":{"name":"Announcement"},"e5c3":{"name":"Apps"},"e149":{"name":"Archive"},"e5c4":{"name":"Arrow Back"},"e5db":{"name":"Arrow Downward"},"e5c5":{"name":"Arrow Drop Down"},"e5c6":{"name":"Arrow Drop Down Circle"},"e5c7":{"name":"Arrow Drop Up"},"e5c8":{"name":"Arrow Forward"},"e5d8":{"name":"Arrow Upward"},"e060":{"name":"Art Track"},"e85b":{"name":"Aspect Ratio"},"e85c":{"name":"Assessment"},"e85d":{"name":"Assignment"},"e85e":{"name":"Assignment Ind"},"e85f":{"name":"Assignment Late"},"e860":{"name":"Assignment Return"},"e861":{"name":"Assignment Returned"},"e862":{"name":"Assignment Turned In"},"e39f":{"name":"Assistant"},"e3a0":{"name":"Assistant Photo"},"e226":{"name":"Attach File"},"e227":{"name":"Attach Money"},"e2bc":{"name":"Attachment"},"e3a1":{"name":"Audiotrack"},"e863":{"name":"Autorenew"},"e01b":{"name":"Av Timer"},"e14a":{"name":"Backspace"},"e864":{"name":"Backup"},"e19c":{"name":"Battery Alert"},"e1a3":{"name":"Battery Charging Full"},"e1a4":{"name":"Battery Full"},"e1a5":{"name":"Battery Std"},"e1a6":{"name":"Battery Unknown"},"eb3e":{"name":"Beach Access"},"e52d":{"name":"Beenhere"},"e14b":{"name":"Block"},"e1a7":{"name":"Bluetooth"},"e60f":{"name":"Bluetooth Audio"},"e1a8":{"name":"Bluetooth Connected"},"e1a9":{"name":"Bluetooth Disabled"},"e1aa":{"name":"Bluetooth Searching"},"e3a2":{"name":"Blur Circular"},"e3a3":{"name":"Blur Linear"},"e3a4":{"name":"Blur Off"},"e3a5":{"name":"Blur On"},"e865":{"name":"Book"},"e866":{"name":"Bookmark"},"e867":{"name":"Bookmark Border"},"e228":{"name":"Border All"},"e229":{"name":"Border Bottom"},"e22a":{"name":"Border Clear"},"e22b":{"name":"Border Color"},"e22c":{"name":"Border Horizontal"},"e22d":{"name":"Border Inner"},"e22e":{"name":"Border Left"},"e22f":{"name":"Border Outer"},"e230":{"name":"Border Right"},"e231":{"name":"Border Style"},"e232":{"name":"Border Top"},"e233":{"name":"Border Vertical"},"e06b":{"name":"Branding Watermark"},"e3a6":{"name":"Brightness 1"},"e3a7":{"name":"Brightness 2"},"e3a8":{"name":"Brightness 3"},"e3a9":{"name":"Brightness 4"},"e3aa":{"name":"Brightness 5"},"e3ab":{"name":"Brightness 6"},"e3ac":{"name":"Brightness 7"},"e1ab":{"name":"Brightness Auto"},"e1ac":{"name":"Brightness High"},"e1ad":{"name":"Brightness Low"},"e1ae":{"name":"Brightness Medium"},"e3ad":{"name":"Broken Image"},"e3ae":{"name":"Brush"},"e6dd":{"name":"Bubble Chart"},"e868":{"name":"Bug Report"},"e869":{"name":"Build"},"e43c":{"name":"Burst Mode"},"e0af":{"name":"Business"},"eb3f":{"name":"Business Center"},"e86a":{"name":"Cached"},"e7e9":{"name":"Cake"},"e0b0":{"name":"Call"},"e0b1":{"name":"Call End"},"e0b2":{"name":"Call Made"},"e0b3":{"name":"Call Merge"},"e0b4":{"name":"Call Missed"},"e0e4":{"name":"Call Missed Outgoing"},"e0b5":{"name":"Call Received"},"e0b6":{"name":"Call Split"},"e06c":{"name":"Call To Action"},"e3af":{"name":"Camera"},"e3b0":{"name":"Camera Alt"},"e8fc":{"name":"Camera Enhance"},"e3b1":{"name":"Camera Front"},"e3b2":{"name":"Camera Rear"},"e3b3":{"name":"Camera Roll"},"e5c9":{"name":"Cancel"},"e8f6":{"name":"Card Giftcard"},"e8f7":{"name":"Card Membership"},"e8f8":{"name":"Card Travel"},"eb40":{"name":"Casino"},"e307":{"name":"Cast"},"e308":{"name":"Cast Connected"},"e3b4":{"name":"Center Focus Strong"},"e3b5":{"name":"Center Focus Weak"},"e86b":{"name":"Change History"},"e0b7":{"name":"Chat"},"e0ca":{"name":"Chat Bubble"},"e0cb":{"name":"Chat Bubble Outline"},"e5ca":{"name":"Check"},"e834":{"name":"Check Box"},"e835":{"name":"Check Box Outline Blank"},"e86c":{"name":"Check Circle"},"e5cb":{"name":"Chevron Left"},"e5cc":{"name":"Chevron Right"},"eb41":{"name":"Child Care"},"eb42":{"name":"Child Friendly"},"e86d":{"name":"Chrome Reader Mode"},"e86e":{"name":"Class"},"e14c":{"name":"Clear"},"e0b8":{"name":"Clear All"},"e5cd":{"name":"Close"},"e01c":{"name":"Closed Caption"},"e2bd":{"name":"Cloud"},"e2be":{"name":"Cloud Circle"},"e2bf":{"name":"Cloud Done"},"e2c0":{"name":"Cloud Download"},"e2c1":{"name":"Cloud Off"},"e2c2":{"name":"Cloud Queue"},"e2c3":{"name":"Cloud Upload"},"e86f":{"name":"Code"},"e3b6":{"name":"Collections"},"e431":{"name":"Collections Bookmark"},"e3b7":{"name":"Color Lens"},"e3b8":{"name":"Colorize"},"e0b9":{"name":"Comment"},"e3b9":{"name":"Compare"},"e915":{"name":"Compare Arrows"},"e30a":{"name":"Computer"},"e638":{"name":"Confirmation Number"},"e0d0":{"name":"Contact Mail"},"e0cf":{"name":"Contact Phone"},"e0ba":{"name":"Contacts"},"e14d":{"name":"Content Copy"},"e14e":{"name":"Content Cut"},"e14f":{"name":"Content Paste"},"e3ba":{"name":"Control Point"},"e3bb":{"name":"Control Point Duplicate"},"e90c":{"name":"Copyright"},"e150":{"name":"Create"},"e2cc":{"name":"Create New Folder"},"e870":{"name":"Credit Card"},"e3be":{"name":"Crop"},"e3bc":{"name":"Crop 16 9"},"e3bd":{"name":"Crop 3 2"},"e3bf":{"name":"Crop 5 4"},"e3c0":{"name":"Crop 7 5"},"e3c1":{"name":"Crop Din"},"e3c2":{"name":"Crop Free"},"e3c3":{"name":"Crop Landscape"},"e3c4":{"name":"Crop Original"},"e3c5":{"name":"Crop Portrait"},"e437":{"name":"Crop Rotate"},"e3c6":{"name":"Crop Square"},"e871":{"name":"Dashboard"},"e1af":{"name":"Data Usage"},"e916":{"name":"Date Range"},"e3c7":{"name":"Dehaze"},"e872":{"name":"Delete"},"e92b":{"name":"Delete Forever"},"e16c":{"name":"Delete Sweep"},"e873":{"name":"Description"},"e30b":{"name":"Desktop Mac"},"e30c":{"name":"Desktop Windows"},"e3c8":{"name":"Details"},"e30d":{"name":"Developer Board"},"e1b0":{"name":"Developer Mode"},"e335":{"name":"Device Hub"},"e1b1":{"name":"Devices"},"e337":{"name":"Devices Other"},"e0bb":{"name":"Dialer Sip"},"e0bc":{"name":"Dialpad"},"e52e":{"name":"Directions"},"e52f":{"name":"Directions Bike"},"e532":{"name":"Directions Boat"},"e530":{"name":"Directions Bus"},"e531":{"name":"Directions Car"},"e534":{"name":"Directions Railway"},"e566":{"name":"Directions Run"},"e533":{"name":"Directions Subway"},"e535":{"name":"Directions Transit"},"e536":{"name":"Directions Walk"},"e610":{"name":"Disc Full"},"e875":{"name":"Dns"},"e612":{"name":"Do Not Disturb"},"e611":{"name":"Do Not Disturb Alt"},"e643":{"name":"Do Not Disturb Off"},"e644":{"name":"Do Not Disturb On"},"e30e":{"name":"Dock"},"e7ee":{"name":"Domain"},"e876":{"name":"Done"},"e877":{"name":"Done All"},"e917":{"name":"Donut Large"},"e918":{"name":"Donut Small"},"e151":{"name":"Drafts"},"e25d":{"name":"Drag Handle"},"e613":{"name":"Drive Eta"},"e1b2":{"name":"Dvr"},"e3c9":{"name":"Edit"},"e568":{"name":"Edit Location"},"e8fb":{"name":"Eject"},"e0be":{"name":"Email"},"e63f":{"name":"Enhanced Encryption"},"e01d":{"name":"Equalizer"},"e000":{"name":"Error"},"e001":{"name":"Error Outline"},"e926":{"name":"Euro Symbol"},"e56d":{"name":"Ev Station"},"e878":{"name":"Event"},"e614":{"name":"Event Available"},"e615":{"name":"Event Busy"},"e616":{"name":"Event Note"},"e903":{"name":"Event Seat"},"e879":{"name":"Exit To App"},"e5ce":{"name":"Expand Less"},"e5cf":{"name":"Expand More"},"e01e":{"name":"Explicit"},"e87a":{"name":"Explore"},"e3ca":{"name":"Exposure"},"e3cb":{"name":"Exposure Neg 1"},"e3cc":{"name":"Exposure Neg 2"},"e3cd":{"name":"Exposure Plus 1"},"e3ce":{"name":"Exposure Plus 2"},"e3cf":{"name":"Exposure Zero"},"e87b":{"name":"Extension"},"e87c":{"name":"Face"},"e01f":{"name":"Fast Forward"},"e020":{"name":"Fast Rewind"},"e87d":{"name":"Favorite"},"e87e":{"name":"Favorite Border"},"e06d":{"name":"Featured Play List"},"e06e":{"name":"Featured Video"},"e87f":{"name":"Feedback"},"e05d":{"name":"Fiber Dvr"},"e061":{"name":"Fiber Manual Record"},"e05e":{"name":"Fiber New"},"e06a":{"name":"Fiber Pin"},"e062":{"name":"Fiber Smart Record"},"e2c4":{"name":"File Download"},"e2c6":{"name":"File Upload"},"e3d3":{"name":"Filter"},"e3d0":{"name":"Filter 1"},"e3d1":{"name":"Filter 2"},"e3d2":{"name":"Filter 3"},"e3d4":{"name":"Filter 4"},"e3d5":{"name":"Filter 5"},"e3d6":{"name":"Filter 6"},"e3d7":{"name":"Filter 7"},"e3d8":{"name":"Filter 8"},"e3d9":{"name":"Filter 9"},"e3da":{"name":"Filter 9 Plus"},"e3db":{"name":"Filter B And W"},"e3dc":{"name":"Filter Center Focus"},"e3dd":{"name":"Filter Drama"},"e3de":{"name":"Filter Frames"},"e3df":{"name":"Filter Hdr"},"e152":{"name":"Filter List"},"e3e0":{"name":"Filter None"},"e3e2":{"name":"Filter Tilt Shift"},"e3e3":{"name":"Filter Vintage"},"e880":{"name":"Find In Page"},"e881":{"name":"Find Replace"},"e90d":{"name":"Fingerprint"},"e5dc":{"name":"First Page"},"eb43":{"name":"Fitness Center"},"e153":{"name":"Flag"},"e3e4":{"name":"Flare"},"e3e5":{"name":"Flash Auto"},"e3e6":{"name":"Flash Off"},"e3e7":{"name":"Flash On"},"e539":{"name":"Flight"},"e904":{"name":"Flight Land"},"e905":{"name":"Flight Takeoff"},"e3e8":{"name":"Flip"},"e882":{"name":"Flip To Back"},"e883":{"name":"Flip To Front"},"e2c7":{"name":"Folder"},"e2c8":{"name":"Folder Open"},"e2c9":{"name":"Folder Shared"},"e617":{"name":"Folder Special"},"e167":{"name":"Font Download"},"e234":{"name":"Format Align Center"},"e235":{"name":"Format Align Justify"},"e236":{"name":"Format Align Left"},"e237":{"name":"Format Align Right"},"e238":{"name":"Format Bold"},"e239":{"name":"Format Clear"},"e23a":{"name":"Format Color Fill"},"e23b":{"name":"Format Color Reset"},"e23c":{"name":"Format Color Text"},"e23d":{"name":"Format Indent Decrease"},"e23e":{"name":"Format Indent Increase"},"e23f":{"name":"Format Italic"},"e240":{"name":"Format Line Spacing"},"e241":{"name":"Format List Bulleted"},"e242":{"name":"Format List Numbered"},"e243":{"name":"Format Paint"},"e244":{"name":"Format Quote"},"e25e":{"name":"Format Shapes"},"e245":{"name":"Format Size"},"e246":{"name":"Format Strikethrough"},"e247":{"name":"Format Textdirection L To R"},"e248":{"name":"Format Textdirection R To L"},"e249":{"name":"Format Underlined"},"e0bf":{"name":"Forum"},"e154":{"name":"Forward"},"e056":{"name":"Forward 10"},"e057":{"name":"Forward 30"},"e058":{"name":"Forward 5"},"eb44":{"name":"Free Breakfast"},"e5d0":{"name":"Fullscreen"},"e5d1":{"name":"Fullscreen Exit"},"e24a":{"name":"Functions"},"e927":{"name":"G Translate"},"e30f":{"name":"Gamepad"},"e021":{"name":"Games"},"e90e":{"name":"Gavel"},"e155":{"name":"Gesture"},"e884":{"name":"Get App"},"e908":{"name":"Gif"},"eb45":{"name":"Golf Course"},"e1b3":{"name":"Gps Fixed"},"e1b4":{"name":"Gps Not Fixed"},"e1b5":{"name":"Gps Off"},"e885":{"name":"Grade"},"e3e9":{"name":"Gradient"},"e3ea":{"name":"Grain"},"e1b8":{"name":"Graphic Eq"},"e3eb":{"name":"Grid Off"},"e3ec":{"name":"Grid On"},"e7ef":{"name":"Group"},"e7f0":{"name":"Group Add"},"e886":{"name":"Group Work"},"e052":{"name":"Hd"},"e3ed":{"name":"Hdr Off"},"e3ee":{"name":"Hdr On"},"e3f1":{"name":"Hdr Strong"},"e3f2":{"name":"Hdr Weak"},"e310":{"name":"Headset"},"e311":{"name":"Headset Mic"},"e3f3":{"name":"Healing"},"e023":{"name":"Hearing"},"e887":{"name":"Help"},"e8fd":{"name":"Help Outline"},"e024":{"name":"High Quality"},"e25f":{"name":"Highlight"},"e888":{"name":"Highlight Off"},"e889":{"name":"History"},"e88a":{"name":"Home"},"eb46":{"name":"Hot Tub"},"e53a":{"name":"Hotel"},"e88b":{"name":"Hourglass Empty"},"e88c":{"name":"Hourglass Full"},"e902":{"name":"Http"},"e88d":{"name":"Https"},"e3f4":{"name":"Image"},"e3f5":{"name":"Image Aspect Ratio"},"e0e0":{"name":"Import Contacts"},"e0c3":{"name":"Import Export"},"e912":{"name":"Important Devices"},"e156":{"name":"Inbox"},"e909":{"name":"Indeterminate Check Box"},"e88e":{"name":"Info"},"e88f":{"name":"Info Outline"},"e890":{"name":"Input"},"e24b":{"name":"Insert Chart"},"e24c":{"name":"Insert Comment"},"e24d":{"name":"Insert Drive File"},"e24e":{"name":"Insert Emoticon"},"e24f":{"name":"Insert Invitation"},"e250":{"name":"Insert Link"},"e251":{"name":"Insert Photo"},"e891":{"name":"Invert Colors"},"e0c4":{"name":"Invert Colors Off"},"e3f6":{"name":"Iso"},"e312":{"name":"Keyboard"},"e313":{"name":"Keyboard Arrow Down"},"e314":{"name":"Keyboard Arrow Left"},"e315":{"name":"Keyboard Arrow Right"},"e316":{"name":"Keyboard Arrow Up"},"e317":{"name":"Keyboard Backspace"},"e318":{"name":"Keyboard Capslock"},"e31a":{"name":"Keyboard Hide"},"e31b":{"name":"Keyboard Return"},"e31c":{"name":"Keyboard Tab"},"e31d":{"name":"Keyboard Voice"},"eb47":{"name":"Kitchen"},"e892":{"name":"Label"},"e893":{"name":"Label Outline"},"e3f7":{"name":"Landscape"},"e894":{"name":"Language"},"e31e":{"name":"Laptop"},"e31f":{"name":"Laptop Chromebook"},"e320":{"name":"Laptop Mac"},"e321":{"name":"Laptop Windows"},"e5dd":{"name":"Last Page"},"e895":{"name":"Launch"},"e53b":{"name":"Layers"},"e53c":{"name":"Layers Clear"},"e3f8":{"name":"Leak Add"},"e3f9":{"name":"Leak Remove"},"e3fa":{"name":"Lens"},"e02e":{"name":"Library Add"},"e02f":{"name":"Library Books"},"e030":{"name":"Library Music"},"e90f":{"name":"Lightbulb Outline"},"e919":{"name":"Line Style"},"e91a":{"name":"Line Weight"},"e260":{"name":"Linear Scale"},"e157":{"name":"Link"},"e438":{"name":"Linked Camera"},"e896":{"name":"List"},"e0c6":{"name":"Live Help"},"e639":{"name":"Live Tv"},"e53f":{"name":"Local Activity"},"e53d":{"name":"Local Airport"},"e53e":{"name":"Local Atm"},"e540":{"name":"Local Bar"},"e541":{"name":"Local Cafe"},"e542":{"name":"Local Car Wash"},"e543":{"name":"Local Convenience Store"},"e556":{"name":"Local Dining"},"e544":{"name":"Local Drink"},"e545":{"name":"Local Florist"},"e546":{"name":"Local Gas Station"},"e547":{"name":"Local Grocery Store"},"e548":{"name":"Local Hospital"},"e549":{"name":"Local Hotel"},"e54a":{"name":"Local Laundry Service"},"e54b":{"name":"Local Library"},"e54c":{"name":"Local Mall"},"e54d":{"name":"Local Movies"},"e54e":{"name":"Local Offer"},"e54f":{"name":"Local Parking"},"e550":{"name":"Local Pharmacy"},"e551":{"name":"Local Phone"},"e552":{"name":"Local Pizza"},"e553":{"name":"Local Play"},"e554":{"name":"Local Post Office"},"e555":{"name":"Local Printshop"},"e557":{"name":"Local See"},"e558":{"name":"Local Shipping"},"e559":{"name":"Local Taxi"},"e7f1":{"name":"Location City"},"e1b6":{"name":"Location Disabled"},"e0c7":{"name":"Location Off"},"e0c8":{"name":"Location On"},"e1b7":{"name":"Location Searching"},"e897":{"name":"Lock"},"e898":{"name":"Lock Open"},"e899":{"name":"Lock Outline"},"e3fc":{"name":"Looks"},"e3fb":{"name":"Looks 3"},"e3fd":{"name":"Looks 4"},"e3fe":{"name":"Looks 5"},"e3ff":{"name":"Looks 6"},"e400":{"name":"Looks One"},"e401":{"name":"Looks Two"},"e028":{"name":"Loop"},"e402":{"name":"Loupe"},"e16d":{"name":"Low Priority"},"e89a":{"name":"Loyalty"},"e158":{"name":"Mail"},"e0e1":{"name":"Mail Outline"},"e55b":{"name":"Map"},"e159":{"name":"Markunread"},"e89b":{"name":"Markunread Mailbox"},"e322":{"name":"Memory"},"e5d2":{"name":"Menu"},"e252":{"name":"Merge Type"},"e0c9":{"name":"Message"},"e029":{"name":"Mic"},"e02a":{"name":"Mic None"},"e02b":{"name":"Mic Off"},"e618":{"name":"Mms"},"e253":{"name":"Mode Comment"},"e254":{"name":"Mode Edit"},"e263":{"name":"Monetization On"},"e25c":{"name":"Money Off"},"e403":{"name":"Monochrome Photos"},"e7f2":{"name":"Mood"},"e7f3":{"name":"Mood Bad"},"e619":{"name":"More"},"e5d3":{"name":"More Horiz"},"e5d4":{"name":"More Vert"},"e91b":{"name":"Motorcycle"},"e323":{"name":"Mouse"},"e168":{"name":"Move To Inbox"},"e02c":{"name":"Movie"},"e404":{"name":"Movie Creation"},"e43a":{"name":"Movie Filter"},"e6df":{"name":"Multiline Chart"},"e405":{"name":"Music Note"},"e063":{"name":"Music Video"},"e55c":{"name":"My Location"},"e406":{"name":"Nature"},"e407":{"name":"Nature People"},"e408":{"name":"Navigate Before"},"e409":{"name":"Navigate Next"},"e55d":{"name":"Navigation"},"e569":{"name":"Near Me"},"e1b9":{"name":"Network Cell"},"e640":{"name":"Network Check"},"e61a":{"name":"Network Locked"},"e1ba":{"name":"Network Wifi"},"e031":{"name":"New Releases"},"e16a":{"name":"Next Week"},"e1bb":{"name":"Nfc"},"e641":{"name":"No Encryption"},"e0cc":{"name":"No Sim"},"e033":{"name":"Not Interested"},"e06f":{"name":"Note"},"e89c":{"name":"Note Add"},"e7f4":{"name":"Notifications"},"e7f7":{"name":"Notifications Active"},"e7f5":{"name":"Notifications None"},"e7f6":{"name":"Notifications Off"},"e7f8":{"name":"Notifications Paused"},"e90a":{"name":"Offline Pin"},"e63a":{"name":"Ondemand Video"},"e91c":{"name":"Opacity"},"e89d":{"name":"Open In Browser"},"e89e":{"name":"Open In New"},"e89f":{"name":"Open With"},"e7f9":{"name":"Pages"},"e8a0":{"name":"Pageview"},"e40a":{"name":"Palette"},"e925":{"name":"Pan Tool"},"e40b":{"name":"Panorama"},"e40c":{"name":"Panorama Fish Eye"},"e40d":{"name":"Panorama Horizontal"},"e40e":{"name":"Panorama Vertical"},"e40f":{"name":"Panorama Wide Angle"},"e7fa":{"name":"Party Mode"},"e034":{"name":"Pause"},"e035":{"name":"Pause Circle Filled"},"e036":{"name":"Pause Circle Outline"},"e8a1":{"name":"Payment"},"e7fb":{"name":"People"},"e7fc":{"name":"People Outline"},"e8a2":{"name":"Perm Camera Mic"},"e8a3":{"name":"Perm Contact Calendar"},"e8a4":{"name":"Perm Data Setting"},"e8a5":{"name":"Perm Device Information"},"e8a6":{"name":"Perm Identity"},"e8a7":{"name":"Perm Media"},"e8a8":{"name":"Perm Phone Msg"},"e8a9":{"name":"Perm Scan Wifi"},"e7fd":{"name":"Person"},"e7fe":{"name":"Person Add"},"e7ff":{"name":"Person Outline"},"e55a":{"name":"Person Pin"},"e56a":{"name":"Person Pin Circle"},"e63b":{"name":"Personal Video"},"e91d":{"name":"Pets"},"e0cd":{"name":"Phone"},"e324":{"name":"Phone Android"},"e61b":{"name":"Phone Bluetooth Speaker"},"e61c":{"name":"Phone Forwarded"},"e61d":{"name":"Phone In Talk"},"e325":{"name":"Phone Iphone"},"e61e":{"name":"Phone Locked"},"e61f":{"name":"Phone Missed"},"e620":{"name":"Phone Paused"},"e326":{"name":"Phonelink"},"e0db":{"name":"Phonelink Erase"},"e0dc":{"name":"Phonelink Lock"},"e327":{"name":"Phonelink Off"},"e0dd":{"name":"Phonelink Ring"},"e0de":{"name":"Phonelink Setup"},"e410":{"name":"Photo"},"e411":{"name":"Photo Album"},"e412":{"name":"Photo Camera"},"e43b":{"name":"Photo Filter"},"e413":{"name":"Photo Library"},"e432":{"name":"Photo Size Select Actual"},"e433":{"name":"Photo Size Select Large"},"e434":{"name":"Photo Size Select Small"},"e415":{"name":"Picture As Pdf"},"e8aa":{"name":"Picture In Picture"},"e911":{"name":"Picture In Picture Alt"},"e6c4":{"name":"Pie Chart"},"e6c5":{"name":"Pie Chart Outlined"},"e55e":{"name":"Pin Drop"},"e55f":{"name":"Place"},"e037":{"name":"Play Arrow"},"e038":{"name":"Play Circle Filled"},"e039":{"name":"Play Circle Outline"},"e906":{"name":"Play For Work"},"e03b":{"name":"Playlist Add"},"e065":{"name":"Playlist Add Check"},"e05f":{"name":"Playlist Play"},"e800":{"name":"Plus One"},"e801":{"name":"Poll"},"e8ab":{"name":"Polymer"},"eb48":{"name":"Pool"},"e0ce":{"name":"Portable Wifi Off"},"e416":{"name":"Portrait"},"e63c":{"name":"Power"},"e336":{"name":"Power Input"},"e8ac":{"name":"Power Settings New"},"e91e":{"name":"Pregnant Woman"},"e0df":{"name":"Present To All"},"e8ad":{"name":"Print"},"e645":{"name":"Priority High"},"e80b":{"name":"Public"},"e255":{"name":"Publish"},"e8ae":{"name":"Query Builder"},"e8af":{"name":"Question Answer"},"e03c":{"name":"Queue"},"e03d":{"name":"Queue Music"},"e066":{"name":"Queue Play Next"},"e03e":{"name":"Radio"},"e837":{"name":"Radio Button Checked"},"e836":{"name":"Radio Button Unchecked"},"e560":{"name":"Rate Review"},"e8b0":{"name":"Receipt"},"e03f":{"name":"Recent Actors"},"e91f":{"name":"Record Voice Over"},"e8b1":{"name":"Redeem"},"e15a":{"name":"Redo"},"e5d5":{"name":"Refresh"},"e15b":{"name":"Remove"},"e15c":{"name":"Remove Circle"},"e15d":{"name":"Remove Circle Outline"},"e067":{"name":"Remove From Queue"},"e417":{"name":"Remove Red Eye"},"e928":{"name":"Remove Shopping Cart"},"e8fe":{"name":"Reorder"},"e040":{"name":"Repeat"},"e041":{"name":"Repeat One"},"e042":{"name":"Replay"},"e059":{"name":"Replay 10"},"e05a":{"name":"Replay 30"},"e05b":{"name":"Replay 5"},"e15e":{"name":"Reply"},"e15f":{"name":"Reply All"},"e160":{"name":"Report"},"e8b2":{"name":"Report Problem"},"e56c":{"name":"Restaurant"},"e561":{"name":"Restaurant Menu"},"e8b3":{"name":"Restore"},"e929":{"name":"Restore Page"},"e0d1":{"name":"Ring Volume"},"e8b4":{"name":"Room"},"eb49":{"name":"Room Service"},"e418":{"name":"Rotate 90 Degrees Ccw"},"e419":{"name":"Rotate Left"},"e41a":{"name":"Rotate Right"},"e920":{"name":"Rounded Corner"},"e328":{"name":"Router"},"e921":{"name":"Rowing"},"e0e5":{"name":"Rss Feed"},"e642":{"name":"Rv Hookup"},"e562":{"name":"Satellite"},"e161":{"name":"Save"},"e329":{"name":"Scanner"},"e8b5":{"name":"Schedule"},"e80c":{"name":"School"},"e1be":{"name":"Screen Lock Landscape"},"e1bf":{"name":"Screen Lock Portrait"},"e1c0":{"name":"Screen Lock Rotation"},"e1c1":{"name":"Screen Rotation"},"e0e2":{"name":"Screen Share"},"e623":{"name":"Sd Card"},"e1c2":{"name":"Sd Storage"},"e8b6":{"name":"Search"},"e32a":{"name":"Security"},"e162":{"name":"Select All"},"e163":{"name":"Send"},"e811":{"name":"Sentiment Dissatisfied"},"e812":{"name":"Sentiment Neutral"},"e813":{"name":"Sentiment Satisfied"},"e814":{"name":"Sentiment Very Dissatisfied"},"e815":{"name":"Sentiment Very Satisfied"},"e8b8":{"name":"Settings"},"e8b9":{"name":"Settings Applications"},"e8ba":{"name":"Settings Backup Restore"},"e8bb":{"name":"Settings Bluetooth"},"e8bd":{"name":"Settings Brightness"},"e8bc":{"name":"Settings Cell"},"e8be":{"name":"Settings Ethernet"},"e8bf":{"name":"Settings Input Antenna"},"e8c0":{"name":"Settings Input Component"},"e8c1":{"name":"Settings Input Composite"},"e8c2":{"name":"Settings Input Hdmi"},"e8c3":{"name":"Settings Input Svideo"},"e8c4":{"name":"Settings Overscan"},"e8c5":{"name":"Settings Phone"},"e8c6":{"name":"Settings Power"},"e8c7":{"name":"Settings Remote"},"e1c3":{"name":"Settings System Daydream"},"e8c8":{"name":"Settings Voice"},"e80d":{"name":"Share"},"e8c9":{"name":"Shop"},"e8ca":{"name":"Shop Two"},"e8cb":{"name":"Shopping Basket"},"e8cc":{"name":"Shopping Cart"},"e261":{"name":"Short Text"},"e6e1":{"name":"Show Chart"},"e043":{"name":"Shuffle"},"e1c8":{"name":"Signal Cellular 4 Bar"},"e1cd":{"name":"Signal Cellular Connected No Internet 4 Bar"},"e1ce":{"name":"Signal Cellular No Sim"},"e1cf":{"name":"Signal Cellular Null"},"e1d0":{"name":"Signal Cellular Off"},"e1d8":{"name":"Signal Wifi 4 Bar"},"e1d9":{"name":"Signal Wifi 4 Bar Lock"},"e1da":{"name":"Signal Wifi Off"},"e32b":{"name":"Sim Card"},"e624":{"name":"Sim Card Alert"},"e044":{"name":"Skip Next"},"e045":{"name":"Skip Previous"},"e41b":{"name":"Slideshow"},"e068":{"name":"Slow Motion Video"},"e32c":{"name":"Smartphone"},"eb4a":{"name":"Smoke Free"},"eb4b":{"name":"Smoking Rooms"},"e625":{"name":"Sms"},"e626":{"name":"Sms Failed"},"e046":{"name":"Snooze"},"e164":{"name":"Sort"},"e053":{"name":"Sort By Alpha"},"eb4c":{"name":"Spa"},"e256":{"name":"Space Bar"},"e32d":{"name":"Speaker"},"e32e":{"name":"Speaker Group"},"e8cd":{"name":"Speaker Notes"},"e92a":{"name":"Speaker Notes Off"},"e0d2":{"name":"Speaker Phone"},"e8ce":{"name":"Spellcheck"},"e838":{"name":"Star"},"e83a":{"name":"Star Border"},"e839":{"name":"Star Half"},"e8d0":{"name":"Stars"},"e0d3":{"name":"Stay Current Landscape"},"e0d4":{"name":"Stay Current Portrait"},"e0d5":{"name":"Stay Primary Landscape"},"e0d6":{"name":"Stay Primary Portrait"},"e047":{"name":"Stop"},"e0e3":{"name":"Stop Screen Share"},"e1db":{"name":"Storage"},"e8d1":{"name":"Store"},"e563":{"name":"Store Mall Directory"},"e41c":{"name":"Straighten"},"e56e":{"name":"Streetview"},"e257":{"name":"Strikethrough S"},"e41d":{"name":"Style"},"e5d9":{"name":"Subdirectory Arrow Left"},"e5da":{"name":"Subdirectory Arrow Right"},"e8d2":{"name":"Subject"},"e064":{"name":"Subscriptions"},"e048":{"name":"Subtitles"},"e56f":{"name":"Subway"},"e8d3":{"name":"Supervisor Account"},"e049":{"name":"Surround Sound"},"e0d7":{"name":"Swap Calls"},"e8d4":{"name":"Swap Horiz"},"e8d5":{"name":"Swap Vert"},"e8d6":{"name":"Swap Vertical Circle"},"e41e":{"name":"Switch Camera"},"e41f":{"name":"Switch Video"},"e627":{"name":"Sync"},"e628":{"name":"Sync Disabled"},"e629":{"name":"Sync Problem"},"e62a":{"name":"System Update"},"e8d7":{"name":"System Update Alt"},"e8d8":{"name":"Tab"},"e8d9":{"name":"Tab Unselected"},"e32f":{"name":"Tablet"},"e330":{"name":"Tablet Android"},"e331":{"name":"Tablet Mac"},"e420":{"name":"Tag Faces"},"e62b":{"name":"Tap And Play"},"e564":{"name":"Terrain"},"e262":{"name":"Text Fields"},"e165":{"name":"Text Format"},"e0d8":{"name":"Textsms"},"e421":{"name":"Texture"},"e8da":{"name":"Theaters"},"e8db":{"name":"Thumb Down"},"e8dc":{"name":"Thumb Up"},"e8dd":{"name":"Thumbs Up Down"},"e62c":{"name":"Time To Leave"},"e422":{"name":"Timelapse"},"e922":{"name":"Timeline"},"e425":{"name":"Timer"},"e423":{"name":"Timer 10"},"e424":{"name":"Timer 3"},"e426":{"name":"Timer Off"},"e264":{"name":"Title"},"e8de":{"name":"Toc"},"e8df":{"name":"Today"},"e8e0":{"name":"Toll"},"e427":{"name":"Tonality"},"e913":{"name":"Touch App"},"e332":{"name":"Toys"},"e8e1":{"name":"Track Changes"},"e565":{"name":"Traffic"},"e570":{"name":"Train"},"e571":{"name":"Tram"},"e572":{"name":"Transfer Within A Station"},"e428":{"name":"Transform"},"e8e2":{"name":"Translate"},"e8e3":{"name":"Trending Down"},"e8e4":{"name":"Trending Flat"},"e8e5":{"name":"Trending Up"},"e429":{"name":"Tune"},"e8e6":{"name":"Turned In"},"e8e7":{"name":"Turned In Not"},"e333":{"name":"Tv"},"e169":{"name":"Unarchive"},"e166":{"name":"Undo"},"e5d6":{"name":"Unfold Less"},"e5d7":{"name":"Unfold More"},"e923":{"name":"Update"},"e1e0":{"name":"Usb"},"e8e8":{"name":"Verified User"},"e258":{"name":"Vertical Align Bottom"},"e259":{"name":"Vertical Align Center"},"e25a":{"name":"Vertical Align Top"},"e62d":{"name":"Vibration"},"e070":{"name":"Video Call"},"e071":{"name":"Video Label"},"e04a":{"name":"Video Library"},"e04b":{"name":"Videocam"},"e04c":{"name":"Videocam Off"},"e338":{"name":"Videogame Asset"},"e8e9":{"name":"View Agenda"},"e8ea":{"name":"View Array"},"e8eb":{"name":"View Carousel"},"e8ec":{"name":"View Column"},"e42a":{"name":"View Comfy"},"e42b":{"name":"View Compact"},"e8ed":{"name":"View Day"},"e8ee":{"name":"View Headline"},"e8ef":{"name":"View List"},"e8f0":{"name":"View Module"},"e8f1":{"name":"View Quilt"},"e8f2":{"name":"View Stream"},"e8f3":{"name":"View Week"},"e435":{"name":"Vignette"},"e8f4":{"name":"Visibility"},"e8f5":{"name":"Visibility Off"},"e62e":{"name":"Voice Chat"},"e0d9":{"name":"Voicemail"},"e04d":{"name":"Volume Down"},"e04e":{"name":"Volume Mute"},"e04f":{"name":"Volume Off"},"e050":{"name":"Volume Up"},"e0da":{"name":"Vpn Key"},"e62f":{"name":"Vpn Lock"},"e1bc":{"name":"Wallpaper"},"e002":{"name":"Warning"},"e334":{"name":"Watch"},"e924":{"name":"Watch Later"},"e42c":{"name":"Wb Auto"},"e42d":{"name":"Wb Cloudy"},"e42e":{"name":"Wb Incandescent"},"e436":{"name":"Wb Iridescent"},"e430":{"name":"Wb Sunny"},"e63d":{"name":"Wc"},"e051":{"name":"Web"},"e069":{"name":"Web Asset"},"e16b":{"name":"Weekend"},"e80e":{"name":"Whatshot"},"e1bd":{"name":"Widgets"},"e63e":{"name":"Wifi"},"e1e1":{"name":"Wifi Lock"},"e1e2":{"name":"Wifi Tethering"},"e8f9":{"name":"Work"},"e25b":{"name":"Wrap Text"},"e8fa":{"name":"Youtube Searched For"},"e8ff":{"name":"Zoom In"},"e900":{"name":"Zoom Out"},"e56b":{"name":"Zoom Out Map"}}} \ No newline at end of file diff --git a/src/assets/icon/MaterialIcons-Regular.svg b/src/assets/icon/MaterialIcons-Regular.svg new file mode 100644 index 0000000..a449327 --- /dev/null +++ b/src/assets/icon/MaterialIcons-Regular.svg @@ -0,0 +1,2373 @@ + + + + + +Created by FontForge 20151118 at Mon Feb 8 11:58:02 2016 + By shyndman +Copyright 2015 Google, Inc. All Rights Reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icon/MaterialIcons-Regular.ttf b/src/assets/icon/MaterialIcons-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7015564ad166a3e9d88c82f17829f0cc01ebe29a GIT binary patch literal 128180 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 ohyj3!`#ee%L;DTjx@8!5k5~VH0QmdE^#A|> literal 0 HcmV?d00001 diff --git a/src/assets/icon/MaterialIcons-Regular.woff b/src/assets/icon/MaterialIcons-Regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..b648a3eea2d16b6ce783906d6b7d5f251b9eb56c GIT binary patch literal 57620 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

wF7DI|Kx|V1sBQ9FYs>m5C)C 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 BJ$(QG literal 0 HcmV?d00001 diff --git a/src/assets/icon/MaterialIcons-Regular.woff2 b/src/assets/icon/MaterialIcons-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9fa211252080046a23b2449dbdced6abc2b0bb34 GIT binary patch literal 44300 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 QW8}wPUeo^@jR61v08@RD2LJ#7 literal 0 HcmV?d00001 diff --git a/src/assets/icon/material-icons.css b/src/assets/icon/material-icons.css new file mode 100644 index 0000000..f028ea2 --- /dev/null +++ b/src/assets/icon/material-icons.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url(./MaterialIcons-Regular.eot); /* For IE6-8 */ + src: local('Material Icons'), + local('MaterialIcons-Regular'), + url(./MaterialIcons-Regular.woff2) format('woff2'), + url(./MaterialIcons-Regular.woff) format('woff'), + url(./MaterialIcons-Regular.ttf) format('truetype'); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; /* Preferred icon size */ + display: inline-block; + line-height: 1; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + white-space: nowrap; + direction: ltr; + + /* Support for all WebKit browsers. */ + -webkit-font-smoothing: antialiased; + /* Support for Safari and Chrome. */ + text-rendering: optimizeLegibility; + + /* Support for Firefox. */ + -moz-osx-font-smoothing: grayscale; + + /* Support for IE. */ + font-feature-settings: 'liga'; +} diff --git a/src/assets/images/background.jpg b/src/assets/images/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0185b7d1157401f95d30c839e502f49dae362c2d GIT binary patch literal 699115 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 c1{6C%+Uiv&lQe-CnWJqDz)`>?iCX>#7(|)LE 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%0D1jSor?uDWmH<-YoTUGTYyL)BS)E_ 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

*GO7_Q#3nd0%1#U!;QPw2+Q>^|TN!_R61=y& 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

aV-dcK{#!>qg?KP>xmM){t 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⩔Ml=zPlJ3~{Q|9s(k?)F^@vq5rhd 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%0AF*w6RwJg$FIr7?E2UupiQn-Dh1^YZv^K1r#p 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