diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7d4e22c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24088 @@
+/node_modules/
+/frontend/dashboard/node_modules/.bin/esbuild
+/frontend/dashboard/node_modules/.bin/esbuild.cmd
+/frontend/dashboard/node_modules/.bin/esbuild.ps1
+/frontend/dashboard/node_modules/.bin/loose-envify
+/frontend/dashboard/node_modules/.bin/loose-envify.cmd
+/frontend/dashboard/node_modules/.bin/loose-envify.ps1
+/frontend/dashboard/node_modules/.bin/nanoid
+/frontend/dashboard/node_modules/.bin/nanoid.cmd
+/frontend/dashboard/node_modules/.bin/nanoid.ps1
+/frontend/dashboard/node_modules/.bin/parser
+/frontend/dashboard/node_modules/.bin/parser.cmd
+/frontend/dashboard/node_modules/.bin/parser.ps1
+/frontend/dashboard/node_modules/.bin/resolve
+/frontend/dashboard/node_modules/.bin/resolve.cmd
+/frontend/dashboard/node_modules/.bin/resolve.ps1
+/frontend/dashboard/node_modules/.bin/rollup
+/frontend/dashboard/node_modules/.bin/rollup.cmd
+/frontend/dashboard/node_modules/.bin/rollup.ps1
+/frontend/dashboard/node_modules/.bin/tsc
+/frontend/dashboard/node_modules/.bin/tsc.cmd
+/frontend/dashboard/node_modules/.bin/tsc.ps1
+/frontend/dashboard/node_modules/.bin/tsserver
+/frontend/dashboard/node_modules/.bin/tsserver.cmd
+/frontend/dashboard/node_modules/.bin/tsserver.ps1
+/frontend/dashboard/node_modules/.bin/vite
+/frontend/dashboard/node_modules/.bin/vite.cmd
+/frontend/dashboard/node_modules/.bin/vite.ps1
+/frontend/dashboard/node_modules/.bin/vue-demi-fix
+/frontend/dashboard/node_modules/.bin/vue-demi-fix.cmd
+/frontend/dashboard/node_modules/.bin/vue-demi-fix.ps1
+/frontend/dashboard/node_modules/.bin/vue-demi-switch
+/frontend/dashboard/node_modules/.bin/vue-demi-switch.cmd
+/frontend/dashboard/node_modules/.bin/vue-demi-switch.ps1
+/frontend/dashboard/node_modules/.vite/deps/@jiaminghi_data-view.js
+/frontend/dashboard/node_modules/.vite/deps/@jiaminghi_data-view.js.map
+/frontend/dashboard/node_modules/.vite/deps/_metadata.json
+/frontend/dashboard/node_modules/.vite/deps/ant-design-vue.js
+/frontend/dashboard/node_modules/.vite/deps/ant-design-vue.js.map
+/frontend/dashboard/node_modules/.vite/deps/chunk-HUBM7RA2.js
+/frontend/dashboard/node_modules/.vite/deps/chunk-HUBM7RA2.js.map
+/frontend/dashboard/node_modules/.vite/deps/chunk-UNW3VTSU.js
+/frontend/dashboard/node_modules/.vite/deps/chunk-UNW3VTSU.js.map
+/frontend/dashboard/node_modules/.vite/deps/chunk-YGWLVKKF.js
+/frontend/dashboard/node_modules/.vite/deps/chunk-YGWLVKKF.js.map
+/frontend/dashboard/node_modules/.vite/deps/package.json
+/frontend/dashboard/node_modules/.vite/deps/pinia.js
+/frontend/dashboard/node_modules/.vite/deps/pinia.js.map
+/frontend/dashboard/node_modules/.vite/deps/vue.js
+/frontend/dashboard/node_modules/.vite/deps/vue.js.map
+/frontend/dashboard/node_modules/.vite/deps/vue-router.js
+/frontend/dashboard/node_modules/.vite/deps/vue-router.js.map
+/frontend/dashboard/node_modules/@ant-design/colors/dist/src/generate.d.ts
+/frontend/dashboard/node_modules/@ant-design/colors/dist/src/index.d.ts
+/frontend/dashboard/node_modules/@ant-design/colors/dist/index.esm.js
+/frontend/dashboard/node_modules/@ant-design/colors/dist/index.js
+/frontend/dashboard/node_modules/@ant-design/colors/LICENSE
+/frontend/dashboard/node_modules/@ant-design/colors/package.json
+/frontend/dashboard/node_modules/@ant-design/colors/README.md
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AccountBookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AccountBookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AccountBookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AccountBookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AccountBookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AccountBookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AimOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AimOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlertFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlertFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlertOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlertOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlertTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlertTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlibabaOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlibabaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlignCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlignCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlignLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlignLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlignRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlignRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AlipaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AliwangwangFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AliwangwangFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AliwangwangOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AliwangwangOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AliyunOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AliyunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AmazonCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AmazonCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AmazonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AmazonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AmazonSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AmazonSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AndroidFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AndroidFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AndroidOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AndroidOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AntCloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AntCloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AntDesignOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AntDesignOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApartmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApartmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApiFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApiFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ApiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AppstoreTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AreaChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AreaChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowsAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowsAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ArrowUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioMutedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioMutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AudioTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AuditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/AuditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BaiduOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BaiduOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BankFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BankFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BankOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BankOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BankTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BankTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BarcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BarcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BarsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BehanceSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BellFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BellFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BellOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BellOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BellTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BellTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BgColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BgColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BilibiliFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BilibiliFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BilibiliOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BilibiliOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderHorizontalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderHorizontalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderInnerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderInnerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderlessTableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderlessTableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderOuterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderOuterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderVerticleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BorderVerticleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoxPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoxPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoxPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoxPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoxPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BoxPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BranchesOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BranchesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BugFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BugFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BugOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BugOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BugTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BugTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BuildFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BuildFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BuildOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BuildOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BuildTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BuildTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BulbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BulbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BulbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BulbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BulbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/BulbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalculatorFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalculatorFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalculatorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalculatorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalculatorTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalculatorTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalendarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalendarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalendarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalendarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalendarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CalendarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretDownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretDownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretLeftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretLeftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretRightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretRightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretUpFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretUpFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CaretUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarryOutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarryOutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarryOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarryOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarryOutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarryOutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CheckSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ChromeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ChromeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ChromeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ChromeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClearOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClearOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClockCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClockCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClockCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClockCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClockCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClockCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloseSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudDownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudDownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudServerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudServerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudUploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CloudUploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClusterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ClusterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodepenSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeSandboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeSandboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeSandboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeSandboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeSandboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeSandboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CodeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CoffeeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CoffeeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ColumnHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ColumnHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ColumnWidthOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ColumnWidthOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CommentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CommentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompressOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CompressOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ConsoleSqlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ConsoleSqlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContactsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContactsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContactsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContactsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContactsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContactsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContainerFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContainerFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContainerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContainerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContainerTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ContainerTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ControlFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ControlFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ControlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ControlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ControlTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ControlTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyrightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CopyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CreditCardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CreditCardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CreditCardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CreditCardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CreditCardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CreditCardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CustomerServiceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CustomerServiceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CustomerServiceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CustomerServiceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CustomerServiceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/CustomerServiceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashboardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashboardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashboardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashboardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashboardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashboardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DatabaseFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DatabaseFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DatabaseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DatabaseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DatabaseTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DatabaseTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteColumnOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteColumnOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteRowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteRowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeleteTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeliveredProcedureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeliveredProcedureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeploymentUnitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DeploymentUnitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DesktopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DesktopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiffFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiffFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiffTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiffTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingdingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingdingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingtalkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingtalkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingtalkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingtalkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingtalkSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DingtalkSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DisconnectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DisconnectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiscordFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiscordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiscordOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DiscordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DislikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DislikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DislikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DislikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DislikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DislikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DockerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DockerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DollarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DotNetOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DotNetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DoubleLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DownSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DragOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DragOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DribbbleSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DropboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DropboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DropboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DropboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DropboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/DropboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EditFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EditFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EditTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EditTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EllipsisOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnvironmentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnvironmentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnvironmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnvironmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnvironmentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EnvironmentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EuroTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExceptionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExceptionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExpandAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExpandAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExperimentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExperimentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExperimentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExperimentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExperimentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExperimentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ExportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeInvisibleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/EyeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FacebookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FacebookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FacebookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FacebookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FallOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FallOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FastForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldBinaryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldBinaryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldNumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldNumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldStringOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldStringOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldTimeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FieldTimeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileDoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileDoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExcelFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExcelFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExcelOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExcelOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExcelTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExcelTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExclamationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExclamationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExclamationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileExclamationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileGifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileGifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileImageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileImageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileImageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileImageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileImageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileImageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileJpgOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileJpgOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileMarkdownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileMarkdownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileMarkdownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileMarkdownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileMarkdownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileMarkdownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePdfFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePdfFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePdfOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePdfOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePdfTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePdfTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePptFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePptFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePptOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePptTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilePptTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileProtectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileProtectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileSearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileSearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTextFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTextFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTextOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTextOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTextTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTextTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileUnknownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileUnknownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileUnknownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileUnknownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileUnknownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileUnknownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileWordFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileWordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileWordOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileWordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileWordTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileWordTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileZipFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileZipFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileZipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileZipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileZipTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FileZipTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FilterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FireFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FireFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FireOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FireOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FireTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FireTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FlagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FlagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FlagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FlagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FlagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FlagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOpenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOpenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOpenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOpenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOpenTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOpenTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FolderViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FontColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FontColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FontSizeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FontSizeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ForkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ForkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FormatPainterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FormatPainterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FormatPainterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FormatPainterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FormOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FormOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FullscreenExitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FullscreenExitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FullscreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FullscreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunctionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunctionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundProjectionScreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundProjectionScreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FundViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunnelPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunnelPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunnelPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunnelPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunnelPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/FunnelPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GatewayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GatewayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GiftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GiftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GiftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GiftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GiftTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GiftTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GithubFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GithubFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GithubOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GithubOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GitlabFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GitlabFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GitlabOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GitlabOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GlobalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GlobalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoldTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoogleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoogleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoogleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoogleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GooglePlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GooglePlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GooglePlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GooglePlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GooglePlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GooglePlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoogleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GoogleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/GroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HarmonyOSOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HarmonyOSOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeatMapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HeatMapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HighlightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HighlightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HighlightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HighlightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HighlightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HighlightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HistoryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HistoryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HomeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HomeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HomeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HomeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HomeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HomeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HourglassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HourglassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HourglassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HourglassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HourglassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/HourglassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Html5Filled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Html5Filled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Html5Outlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Html5Outlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Html5TwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Html5TwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IdcardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IdcardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IdcardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IdcardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IdcardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IdcardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IeCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IeCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IeSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IeSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ImportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ImportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InfoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowAboveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowAboveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowBelowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowBelowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsertRowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InstagramFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InstagramFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InstagramOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InstagramOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsuranceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsuranceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsuranceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsuranceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsuranceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InsuranceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InteractionFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InteractionFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InteractionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InteractionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InteractionTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/InteractionTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IssuesCloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/IssuesCloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ItalicOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ItalicOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/JavaOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/JavaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/JavaScriptOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/JavaScriptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/KeyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/KeyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/KubernetesOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/KubernetesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LaptopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LaptopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LayoutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LayoutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LayoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LayoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LayoutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LayoutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LeftSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LineChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LineChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LineHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LineHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinkedinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinkedinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinkedinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinkedinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinuxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LinuxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Loading3QuartersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/Loading3QuartersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LoginOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LoginOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LogoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/LogoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MacCommandFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MacCommandFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MacCommandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MacCommandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MailFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MailFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MailOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MailOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MailTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MailTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ManOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ManOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MedicineBoxFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MedicineBoxFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MedicineBoxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MedicineBoxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MedicineBoxTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MedicineBoxTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumWorkmarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MediumWorkmarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MehFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MehFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MehOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MehOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MehTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MehTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MenuFoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MenuFoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MenuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MenuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MenuUnfoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MenuUnfoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MergeCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MergeCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MergeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MergeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MergeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MergeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MessageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MessageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MessageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MessageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MessageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MessageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MinusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MobileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MobileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MobileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MobileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MobileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MobileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoneyCollectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoneyCollectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoneyCollectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoneyCollectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoneyCollectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoneyCollectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MonitorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MonitorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoonFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoonFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MutedFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MutedFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MutedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/MutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NodeCollapseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NodeCollapseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NodeExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NodeExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NodeIndexOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NodeIndexOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NotificationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NotificationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NotificationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NotificationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NotificationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NotificationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/NumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OneToOneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OneToOneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OpenAIFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OpenAIFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OpenAIOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OpenAIOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OrderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/OrderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PaperClipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PaperClipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PartitionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PartitionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PauseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PercentageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PercentageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PhoneFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PhoneFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PhoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PhoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PhoneTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PhoneTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PicCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PicCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PicLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PicLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PicRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PicRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PictureFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PictureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PictureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PictureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PictureTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PictureTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PieChartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PieChartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PieChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PieChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PieChartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PieChartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PinterestFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PinterestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PinterestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PinterestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlayCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlayCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlaySquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlaySquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlaySquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlaySquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PlusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoweroffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PoweroffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PrinterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PrinterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PrinterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PrinterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PrinterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PrinterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProductFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProductFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProductOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProductOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProfileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProfileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProfileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProfileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProfileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProfileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProjectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProjectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProjectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProjectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProjectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ProjectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PropertySafetyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PropertySafetyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PropertySafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PropertySafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PropertySafetyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PropertySafetyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PullRequestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PullRequestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PushpinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PushpinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PushpinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PushpinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PushpinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PushpinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PythonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/PythonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QqCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QqCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QqOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QqOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QqSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QqSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QrcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QrcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/QuestionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusBottomleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusBottomleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusBottomrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusBottomrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusSettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusSettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusUpleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusUpleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusUprightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RadiusUprightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReadFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReadFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReconciliationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReconciliationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReconciliationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReconciliationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReconciliationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReconciliationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedditCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedditCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedditSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedditSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedEnvelopeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedEnvelopeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedEnvelopeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedEnvelopeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedEnvelopeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedEnvelopeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RedoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ReloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RestFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RestTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RestTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RetweetOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RetweetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RightSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RiseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RiseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RobotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RobotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RobotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RobotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RocketFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RocketFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RocketOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RocketOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RocketTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RocketTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RollbackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RollbackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RotateLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RotateLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RotateRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RotateRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RubyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/RubyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyCertificateFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyCertificateFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyCertificateOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyCertificateOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyCertificateTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyCertificateTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SaveFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SaveFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SaveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SaveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SaveTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SaveTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScheduleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScheduleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScheduleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScheduleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScheduleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScheduleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScissorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ScissorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SecurityScanFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SecurityScanFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SecurityScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SecurityScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SecurityScanTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SecurityScanTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SelectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SelectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SendOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SendOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SettingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SettingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SettingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SettingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShakeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShakeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShareAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShareAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingCartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingCartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShoppingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShrinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ShrinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SignalFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SignalFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SignatureFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SignatureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SignatureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SignatureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SisternodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SisternodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SketchCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SketchCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SketchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SketchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SketchSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SketchSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkypeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkypeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkypeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SkypeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlackSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlidersFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlidersFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlidersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlidersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlidersTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SlidersTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmallDashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmallDashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SmileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SnippetsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SnippetsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SnippetsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SnippetsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SnippetsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SnippetsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SolutionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SolutionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SortAscendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SortAscendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SortDescendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SortDescendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SoundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SoundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SoundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SoundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SplitCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SplitCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SpotifyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SpotifyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SpotifyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SpotifyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StepForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StrikethroughOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/StrikethroughOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SubnodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SubnodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SunFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SunFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SunOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwapLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwapLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwapRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwapRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwitcherFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwitcherFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwitcherOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwitcherOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwitcherTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SwitcherTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/SyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TabletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TabletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TabletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TabletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TabletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TabletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TaobaoSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TeamOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TeamOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ThunderboltFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ThunderboltFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ThunderboltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ThunderboltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ThunderboltTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ThunderboltTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TikTokFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TikTokFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TikTokOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TikTokOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToolFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToolFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToolOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToolOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToolTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToolTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ToTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrademarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TransactionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TransactionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TranslationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TranslationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrophyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrophyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrophyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrophyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrophyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TrophyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TruckFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TruckFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TruckOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TruckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitchFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitchFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitterCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitterCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitterSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/TwitterSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnderlineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnderlineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UndoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UndoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UngroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UngroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnlockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnlockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnlockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnlockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnorderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UnorderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UpSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsergroupAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsergroupAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsergroupDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UsergroupDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserSwitchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/UserSwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerifiedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerifiedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalAlignBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalAlignBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalAlignMiddleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalAlignMiddleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalAlignTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalAlignTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VerticalRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/VideoCameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WalletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WalletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WalletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WalletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WalletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WalletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WarningFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WarningFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WarningOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WarningOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WarningTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WarningTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatWorkFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatWorkFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatWorkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WechatWorkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WeiboSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WhatsAppOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WhatsAppOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WifiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WifiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WindowsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WindowsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WindowsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WindowsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WomanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/WomanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/XFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/XFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/XOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/XOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YahooFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YahooFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YahooOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YahooOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YoutubeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YoutubeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YoutubeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YoutubeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YuqueFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YuqueFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YuqueOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/YuqueOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZhihuCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZhihuCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZhihuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZhihuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZhihuSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZhihuSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZoomInOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZoomInOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZoomOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/asn/ZoomOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/helpers.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/helpers.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/index.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/index.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/types.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/es/types.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/account-book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/alert.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/alipay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/alipay-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/aliwangwang.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/amazon-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/amazon-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/android.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/api.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/apple.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/appstore.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/audio.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/bank.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/behance-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/behance-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/bell.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/bilibili.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/box-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/bug.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/build.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/bulb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/calculator.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/calendar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/car.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/caret-down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/caret-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/caret-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/caret-up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/carry-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/check-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/check-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/chrome.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/ci-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/clock-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/close-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/close-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/code.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/code-sandbox-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/code-sandbox-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/codepen-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/codepen-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/compass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/contacts.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/container.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/control.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/copy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/copyright-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/credit-card.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/crown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/customer-service.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dashboard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/database.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/diff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dingtalk-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dingtalk-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/discord.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dislike.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dollar-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/down-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/down-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dribbble-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dribbble-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dropbox-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/dropbox-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/edit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/environment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/euro-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/exclamation-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/experiment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/eye.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/eye-invisible.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/facebook.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/fast-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/fast-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-excel.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-image.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-markdown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-pdf.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-ppt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-text.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-unknown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-word.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/file-zip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/filter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/fire.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/flag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/folder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/folder-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/folder-open.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/format-painter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/frown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/fund.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/funnel-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/gift.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/github.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/gitlab.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/gold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/golden.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/google-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/google-plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/google-plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/google-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/hdd.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/heart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/highlight.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/home.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/hourglass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/html5.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/idcard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/ie-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/ie-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/info-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/instagram.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/insurance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/interaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/layout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/left-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/left-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/like.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/linkedin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/lock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/mac-command.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/mail.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/medicine-box.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/medium-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/medium-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/meh.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/merge.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/message.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/minus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/minus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/mobile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/money-collect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/moon.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/muted.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/notification.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/open-a-i.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/open-ai.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/pause-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/pay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/phone.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/picture.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/pie-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/pinterest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/play-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/play-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/pound-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/printer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/product.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/profile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/project.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/property-safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/pushpin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/qq-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/qq-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/question-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/read.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/reconciliation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/red-envelope.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/reddit-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/reddit-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/rest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/right-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/right-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/robot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/rocket.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/safety-certificate.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/save.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/schedule.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/security-scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/shop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/shopping.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/signal.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/signature.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/sketch-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/sketch-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/skin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/skype.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/slack-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/slack-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/sliders.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/smile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/snippets.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/sound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/spotify.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/star.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/step-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/step-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/stop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/sun.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/switcher.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/tablet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/tag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/tags.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/taobao-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/taobao-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/thunderbolt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/tik-tok.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/tool.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/trademark-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/trophy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/truck.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/twitch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/twitter-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/twitter-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/unlock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/up-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/up-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/usb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/video-camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/wallet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/warning.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/wechat.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/wechat-work.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/weibo-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/weibo-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/windows.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/x.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/yahoo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/youtube.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/yuque.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/zhihu-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/filled/zhihu-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/account-book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/aim.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/alert.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/alibaba.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/align-center.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/align-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/align-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/alipay.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/alipay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/aliwangwang.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/aliyun.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/amazon.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/android.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ant-cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ant-design.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/apartment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/api.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/apple.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/appstore.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/appstore-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/area-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/arrow-down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/arrow-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/arrow-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/arrow-up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/arrows-alt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/audio.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/audio-muted.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/audit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/baidu.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bank.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bar-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/barcode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bars.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/behance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/behance-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bell.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bg-colors.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bilibili.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/block.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-bottom.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-horizontal.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-inner.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-outer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-top.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/border-verticle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/borderless-table.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/box-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/branches.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bug.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/build.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/bulb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/calculator.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/calendar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/car.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/caret-down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/caret-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/caret-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/caret-up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/carry-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/check.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/check-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/check-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/chrome.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ci.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ci-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/clear.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/clock-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/close.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/close-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/close-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/cloud-download.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/cloud-server.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/cloud-sync.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/cloud-upload.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/cluster.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/code.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/code-sandbox.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/codepen.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/codepen-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/coffee.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/column-height.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/column-width.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/comment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/compass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/compress.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/console-sql.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/contacts.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/container.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/control.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/copy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/copyright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/copyright-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/credit-card.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/crown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/customer-service.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dash.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dashboard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/database.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/delete-column.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/delete-row.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/delivered-procedure.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/deployment-unit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/desktop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/diff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dingding.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dingtalk.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/disconnect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/discord.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dislike.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/docker.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dollar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dollar-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dot-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dot-net.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/double-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/double-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/down-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/down-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/download.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/drag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dribbble.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dribbble-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/dropbox.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/edit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ellipsis.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/enter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/environment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/euro.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/euro-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/exception.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/exclamation-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/expand.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/expand-alt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/experiment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/export.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/eye.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/eye-invisible.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/facebook.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fall.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fast-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fast-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/field-binary.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/field-number.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/field-string.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/field-time.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-done.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-excel.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-gif.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-image.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-jpg.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-markdown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-pdf.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-ppt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-protect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-search.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-sync.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-text.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-unknown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-word.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/file-zip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/filter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fire.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/flag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/folder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/folder-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/folder-open.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/folder-view.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/font-colors.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/font-size.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fork.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/form.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/format-painter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/frown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fullscreen.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fullscreen-exit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/function.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fund.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fund-projection-screen.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/fund-view.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/funnel-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/gateway.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/gif.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/gift.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/github.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/gitlab.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/global.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/gold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/google.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/google-plus.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/group.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/harmony-o-s.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/harmony-os.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/hdd.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/heart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/heat-map.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/highlight.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/history.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/holder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/home.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/hourglass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/html5.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/idcard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ie.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/import.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/inbox.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/info.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/info-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/insert-row-above.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/insert-row-below.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/insert-row-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/insert-row-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/instagram.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/insurance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/interaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/issues-close.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/italic.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/java.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/java-script.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/key.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/kubernetes.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/laptop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/layout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/left-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/left-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/like.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/line.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/line-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/line-height.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/link.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/linkedin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/linux.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/loading.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/loading-3-quarters.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/lock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/login.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/logout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/mac-command.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/mail.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/man.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/medicine-box.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/medium.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/medium-workmark.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/meh.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/menu.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/menu-fold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/menu-unfold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/merge.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/merge-cells.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/message.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/minus.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/minus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/minus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/mobile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/money-collect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/monitor.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/moon.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/more.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/muted.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/node-collapse.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/node-expand.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/node-index.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/notification.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/number.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/one-to-one.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/open-a-i.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/open-ai.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ordered-list.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/paper-clip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/partition.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pause.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pause-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/percentage.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/phone.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pic-center.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pic-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pic-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/picture.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pie-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pinterest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/play-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/play-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/plus.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pound-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/poweroff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/printer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/product.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/profile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/project.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/property-safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pull-request.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/pushpin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/python.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/qq.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/qrcode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/question.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/question-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/radar-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/radius-bottomleft.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/radius-bottomright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/radius-setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/radius-upleft.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/radius-upright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/read.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/reconciliation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/red-envelope.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/reddit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/redo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/reload.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/rest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/retweet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/right-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/right-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/rise.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/robot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/rocket.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/rollback.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/rotate-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/rotate-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ruby.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/safety-certificate.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/save.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/schedule.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/scissor.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/search.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/security-scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/select.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/send.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/shake.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/share-alt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/shop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/shopping.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/shopping-cart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/shrink.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/signature.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sisternode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sketch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/skin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/skype.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/slack.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/slack-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sliders.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/small-dash.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/smile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/snippets.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/solution.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sort-ascending.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sort-descending.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/split-cells.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/spotify.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/star.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/step-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/step-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/stock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/stop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/strikethrough.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/subnode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sun.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/swap.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/swap-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/swap-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/switcher.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/sync.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/table.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/tablet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/tag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/tags.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/taobao.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/taobao-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/team.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/thunderbolt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/tik-tok.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/to-top.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/tool.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/trademark.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/trademark-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/transaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/translation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/trophy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/truck.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/twitch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/twitter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/underline.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/undo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/ungroup.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/unlock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/unordered-list.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/up-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/up-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/upload.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/usb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/user.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/user-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/user-delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/user-switch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/usergroup-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/usergroup-delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/verified.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/vertical-align-bottom.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/vertical-align-middle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/vertical-align-top.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/vertical-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/vertical-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/video-camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/video-camera-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/wallet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/warning.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/wechat.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/wechat-work.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/weibo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/weibo-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/weibo-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/whats-app.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/wifi.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/windows.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/woman.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/x.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/yahoo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/youtube.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/yuque.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/zhihu.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/zoom-in.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/outlined/zoom-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/account-book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/alert.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/api.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/appstore.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/audio.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/bank.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/bell.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/box-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/bug.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/build.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/bulb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/calculator.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/calendar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/car.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/carry-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/check-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/check-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/ci.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/ci-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/clock-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/close-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/close-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/code.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/compass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/contacts.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/container.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/control.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/copy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/copyright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/copyright-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/credit-card.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/crown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/customer-service.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/dashboard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/database.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/diff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/dislike.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/dollar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/dollar-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/down-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/down-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/edit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/environment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/euro.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/euro-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/exclamation-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/experiment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/eye.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/eye-invisible.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-excel.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-image.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-markdown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-pdf.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-ppt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-text.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-unknown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-word.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/file-zip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/filter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/fire.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/flag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/folder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/folder-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/folder-open.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/frown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/fund.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/funnel-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/gift.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/gold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/hdd.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/heart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/highlight.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/home.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/hourglass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/html5.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/idcard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/info-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/insurance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/interaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/layout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/left-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/left-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/like.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/lock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/mail.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/medicine-box.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/meh.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/message.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/minus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/minus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/mobile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/money-collect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/notification.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/pause-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/phone.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/picture.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/pie-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/play-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/play-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/pound-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/printer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/profile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/project.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/property-safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/pushpin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/question-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/reconciliation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/red-envelope.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/rest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/right-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/right-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/rocket.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/safety-certificate.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/save.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/schedule.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/security-scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/shop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/shopping.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/skin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/sliders.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/smile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/snippets.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/sound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/star.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/stop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/switcher.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/tablet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/tag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/tags.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/thunderbolt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/tool.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/trademark-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/trophy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/unlock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/up-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/up-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/usb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/video-camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/wallet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-namespaced-svg/twotone/warning.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/account-book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/alert.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/alipay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/alipay-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/aliwangwang.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/amazon-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/amazon-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/android.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/api.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/apple.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/appstore.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/audio.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/bank.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/behance-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/behance-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/bell.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/bilibili.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/box-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/bug.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/build.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/bulb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/calculator.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/calendar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/car.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/caret-down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/caret-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/caret-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/caret-up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/carry-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/check-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/check-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/chrome.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/ci-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/clock-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/close-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/close-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/code.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/code-sandbox-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/code-sandbox-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/codepen-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/codepen-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/compass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/contacts.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/container.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/control.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/copy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/copyright-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/credit-card.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/crown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/customer-service.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dashboard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/database.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/diff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dingtalk-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dingtalk-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/discord.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dislike.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dollar-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/down-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/down-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dribbble-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dribbble-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dropbox-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/dropbox-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/edit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/environment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/euro-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/exclamation-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/experiment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/eye.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/eye-invisible.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/facebook.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/fast-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/fast-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-excel.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-image.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-markdown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-pdf.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-ppt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-text.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-unknown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-word.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/file-zip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/filter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/fire.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/flag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/folder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/folder-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/folder-open.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/format-painter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/frown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/fund.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/funnel-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/gift.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/github.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/gitlab.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/gold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/golden.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/google-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/google-plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/google-plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/google-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/hdd.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/heart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/highlight.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/home.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/hourglass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/html5.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/idcard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/ie-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/ie-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/info-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/instagram.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/insurance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/interaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/layout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/left-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/left-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/like.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/linkedin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/lock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/mac-command.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/mail.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/medicine-box.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/medium-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/medium-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/meh.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/merge.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/message.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/minus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/minus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/mobile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/money-collect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/moon.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/muted.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/notification.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/open-a-i.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/pause-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/pay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/phone.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/picture.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/pie-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/pinterest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/play-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/play-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/pound-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/printer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/product.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/profile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/project.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/property-safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/pushpin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/qq-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/qq-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/question-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/read.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/reconciliation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/red-envelope.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/reddit-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/reddit-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/rest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/right-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/right-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/robot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/rocket.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/safety-certificate.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/save.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/schedule.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/security-scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/shop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/shopping.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/signal.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/signature.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/sketch-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/sketch-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/skin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/skype.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/slack-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/slack-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/sliders.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/smile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/snippets.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/sound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/spotify.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/star.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/step-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/step-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/stop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/sun.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/switcher.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/tablet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/tag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/tags.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/taobao-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/taobao-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/thunderbolt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/tik-tok.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/tool.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/trademark-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/trophy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/truck.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/twitch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/twitter-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/twitter-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/unlock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/up-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/up-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/usb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/video-camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/wallet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/warning.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/wechat.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/wechat-work.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/weibo-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/weibo-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/windows.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/x.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/yahoo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/youtube.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/yuque.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/zhihu-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/filled/zhihu-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/account-book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/aim.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/alert.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/alibaba.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/align-center.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/align-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/align-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/alipay.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/alipay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/aliwangwang.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/aliyun.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/amazon.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/android.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ant-cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ant-design.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/apartment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/api.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/apple.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/appstore.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/appstore-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/area-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/arrow-down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/arrow-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/arrow-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/arrow-up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/arrows-alt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/audio.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/audio-muted.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/audit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/baidu.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bank.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bar-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/barcode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bars.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/behance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/behance-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bell.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bg-colors.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bilibili.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/block.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-bottom.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-horizontal.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-inner.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-outer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-top.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/border-verticle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/borderless-table.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/box-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/branches.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bug.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/build.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/bulb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/calculator.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/calendar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/car.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/caret-down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/caret-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/caret-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/caret-up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/carry-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/check.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/check-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/check-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/chrome.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ci.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ci-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/clear.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/clock-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/close.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/close-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/close-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/cloud-download.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/cloud-server.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/cloud-sync.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/cloud-upload.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/cluster.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/code.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/code-sandbox.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/codepen.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/codepen-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/coffee.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/column-height.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/column-width.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/comment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/compass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/compress.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/console-sql.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/contacts.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/container.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/control.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/copy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/copyright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/copyright-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/credit-card.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/crown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/customer-service.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dash.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dashboard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/database.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/delete-column.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/delete-row.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/delivered-procedure.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/deployment-unit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/desktop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/diff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dingding.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dingtalk.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/disconnect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/discord.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dislike.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/docker.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dollar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dollar-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dot-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dot-net.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/double-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/double-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/down.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/down-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/down-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/download.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/drag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dribbble.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dribbble-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/dropbox.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/edit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ellipsis.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/enter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/environment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/euro.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/euro-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/exception.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/exclamation-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/expand.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/expand-alt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/experiment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/export.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/eye.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/eye-invisible.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/facebook.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fall.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fast-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fast-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/field-binary.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/field-number.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/field-string.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/field-time.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-done.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-excel.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-gif.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-image.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-jpg.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-markdown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-pdf.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-ppt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-protect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-search.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-sync.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-text.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-unknown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-word.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/file-zip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/filter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fire.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/flag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/folder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/folder-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/folder-open.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/folder-view.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/font-colors.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/font-size.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fork.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/form.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/format-painter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/frown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fullscreen.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fullscreen-exit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/function.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fund.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fund-projection-screen.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/fund-view.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/funnel-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/gateway.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/gif.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/gift.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/github.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/gitlab.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/global.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/gold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/google.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/google-plus.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/group.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/harmony-o-s.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/hdd.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/heart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/heat-map.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/highlight.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/history.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/holder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/home.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/hourglass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/html5.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/idcard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ie.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/import.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/inbox.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/info.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/info-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/insert-row-above.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/insert-row-below.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/insert-row-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/insert-row-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/instagram.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/insurance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/interaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/issues-close.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/italic.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/java.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/java-script.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/key.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/kubernetes.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/laptop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/layout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/left-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/left-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/like.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/line.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/line-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/line-height.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/link.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/linkedin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/linux.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/loading.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/loading-3-quarters.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/lock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/login.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/logout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/mac-command.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/mail.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/man.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/medicine-box.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/medium.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/medium-workmark.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/meh.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/menu.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/menu-fold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/menu-unfold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/merge.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/merge-cells.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/message.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/minus.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/minus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/minus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/mobile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/money-collect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/monitor.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/moon.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/more.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/muted.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/node-collapse.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/node-expand.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/node-index.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/notification.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/number.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/one-to-one.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/open-a-i.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ordered-list.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/paper-clip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/partition.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pause.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pause-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pay-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/percentage.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/phone.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pic-center.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pic-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pic-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/picture.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pie-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pinterest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/play-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/play-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/plus.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pound-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/poweroff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/printer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/product.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/profile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/project.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/property-safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pull-request.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/pushpin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/python.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/qq.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/qrcode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/question.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/question-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/radar-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/radius-bottomleft.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/radius-bottomright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/radius-setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/radius-upleft.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/radius-upright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/read.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/reconciliation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/red-envelope.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/reddit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/redo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/reload.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/rest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/retweet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/right-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/right-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/rise.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/robot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/rocket.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/rollback.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/rotate-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/rotate-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ruby.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/safety-certificate.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/save.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/schedule.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/scissor.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/search.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/security-scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/select.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/send.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/shake.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/share-alt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/shop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/shopping.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/shopping-cart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/shrink.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/signature.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sisternode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sketch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/skin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/skype.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/slack.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/slack-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sliders.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/small-dash.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/smile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/snippets.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/solution.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sort-ascending.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sort-descending.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/split-cells.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/spotify.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/star.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/step-backward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/step-forward.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/stock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/stop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/strikethrough.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/subnode.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sun.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/swap.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/swap-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/swap-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/switcher.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/sync.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/table.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/tablet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/tag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/tags.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/taobao.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/taobao-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/team.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/thunderbolt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/tik-tok.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/to-top.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/tool.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/trademark.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/trademark-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/transaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/translation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/trophy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/truck.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/twitch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/twitter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/underline.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/undo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/ungroup.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/unlock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/unordered-list.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/up.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/up-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/up-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/upload.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/usb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/user.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/user-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/user-delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/user-switch.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/usergroup-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/usergroup-delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/verified.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/vertical-align-bottom.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/vertical-align-middle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/vertical-align-top.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/vertical-left.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/vertical-right.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/video-camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/video-camera-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/wallet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/warning.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/wechat.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/wechat-work.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/weibo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/weibo-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/weibo-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/whats-app.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/wifi.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/windows.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/woman.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/x.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/yahoo.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/youtube.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/yuque.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/zhihu.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/zoom-in.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/outlined/zoom-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/account-book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/alert.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/api.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/appstore.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/audio.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/bank.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/bell.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/book.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/box-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/bug.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/build.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/bulb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/calculator.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/calendar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/car.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/carry-out.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/check-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/check-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/ci.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/ci-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/clock-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/close-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/close-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/cloud.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/code.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/compass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/contacts.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/container.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/control.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/copy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/copyright.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/copyright-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/credit-card.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/crown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/customer-service.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/dashboard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/database.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/delete.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/diff.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/dislike.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/dollar.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/dollar-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/down-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/down-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/edit.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/environment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/euro.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/euro-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/exclamation-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/experiment.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/eye.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/eye-invisible.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-excel.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-exclamation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-image.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-markdown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-pdf.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-ppt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-text.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-unknown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-word.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/file-zip.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/filter.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/fire.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/flag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/folder.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/folder-add.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/folder-open.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/frown.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/fund.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/funnel-plot.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/gift.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/gold.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/hdd.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/heart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/highlight.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/home.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/hourglass.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/html5.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/idcard.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/info-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/insurance.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/interaction.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/layout.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/left-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/left-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/like.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/lock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/mail.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/medicine-box.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/meh.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/message.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/minus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/minus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/mobile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/money-collect.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/notification.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/pause-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/phone.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/picture.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/pie-chart.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/play-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/play-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/plus-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/plus-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/pound-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/printer.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/profile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/project.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/property-safety.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/pushpin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/question-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/reconciliation.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/red-envelope.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/rest.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/right-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/right-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/rocket.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/safety-certificate.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/save.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/schedule.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/security-scan.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/setting.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/shop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/shopping.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/skin.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/sliders.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/smile.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/snippets.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/sound.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/star.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/stop.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/switcher.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/tablet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/tag.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/tags.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/thunderbolt.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/tool.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/trademark-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/trophy.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/unlock.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/up-circle.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/up-square.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/usb.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/video-camera.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/wallet.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/inline-svg/twotone/warning.svg
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AccountBookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AccountBookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AccountBookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AccountBookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AccountBookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AccountBookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AimOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AimOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlertFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlertFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlertOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlertOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlertTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlertTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlibabaOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlibabaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlignCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlignCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlignLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlignLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlignRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlignRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AlipaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AliwangwangFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AliwangwangFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AliwangwangOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AliwangwangOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AliyunOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AliyunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AmazonCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AmazonCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AmazonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AmazonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AmazonSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AmazonSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AndroidFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AndroidFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AndroidOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AndroidOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AntCloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AntCloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AntDesignOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AntDesignOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApartmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApartmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApiFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApiFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ApiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AppstoreTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AreaChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AreaChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowsAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowsAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ArrowUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioMutedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioMutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AudioTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AuditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/AuditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BaiduOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BaiduOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BankFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BankFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BankOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BankOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BankTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BankTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BarcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BarcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BarsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BarsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BehanceSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BellFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BellFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BellOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BellOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BellTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BellTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BgColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BgColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BilibiliFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BilibiliFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BilibiliOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BilibiliOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderHorizontalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderHorizontalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderInnerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderInnerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderlessTableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderlessTableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderOuterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderOuterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderVerticleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BorderVerticleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoxPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoxPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoxPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoxPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoxPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BoxPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BranchesOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BranchesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BugFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BugFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BugOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BugOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BugTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BugTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BuildFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BuildFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BuildOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BuildOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BuildTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BuildTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BulbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BulbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BulbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BulbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BulbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/BulbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalculatorFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalculatorFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalculatorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalculatorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalculatorTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalculatorTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalendarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalendarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalendarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalendarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalendarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CalendarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretDownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretDownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretLeftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretLeftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretRightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretRightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretUpFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretUpFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CaretUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarryOutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarryOutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarryOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarryOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarryOutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarryOutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CheckSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ChromeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ChromeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ChromeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ChromeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClearOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClearOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClockCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClockCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClockCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClockCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClockCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClockCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloseSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudDownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudDownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudServerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudServerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudUploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CloudUploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClusterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ClusterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodepenSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeSandboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeSandboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeSandboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeSandboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeSandboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeSandboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CodeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CoffeeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CoffeeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ColumnHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ColumnHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ColumnWidthOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ColumnWidthOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CommentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CommentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompressOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CompressOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ConsoleSqlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ConsoleSqlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContactsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContactsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContactsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContactsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContactsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContactsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContainerFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContainerFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContainerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContainerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContainerTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ContainerTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ControlFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ControlFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ControlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ControlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ControlTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ControlTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyrightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CopyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CreditCardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CreditCardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CreditCardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CreditCardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CreditCardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CreditCardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CustomerServiceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CustomerServiceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CustomerServiceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CustomerServiceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CustomerServiceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/CustomerServiceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashboardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashboardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashboardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashboardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashboardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashboardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DatabaseFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DatabaseFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DatabaseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DatabaseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DatabaseTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DatabaseTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteColumnOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteColumnOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteRowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteRowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeleteTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeliveredProcedureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeliveredProcedureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeploymentUnitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DeploymentUnitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DesktopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DesktopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiffFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiffFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiffTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiffTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingdingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingdingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingtalkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingtalkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingtalkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingtalkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingtalkSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DingtalkSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DisconnectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DisconnectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiscordFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiscordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiscordOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DiscordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DislikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DislikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DislikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DislikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DislikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DislikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DockerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DockerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DollarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DotChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DotChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DotNetOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DotNetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DoubleLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DoubleLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DoubleRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DoubleRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DownSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DragOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DragOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DribbbleSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DropboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DropboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DropboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DropboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DropboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/DropboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EditFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EditFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EditTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EditTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EllipsisOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EllipsisOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnvironmentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnvironmentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnvironmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnvironmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnvironmentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EnvironmentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EuroTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExceptionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExceptionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExpandAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExpandAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExperimentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExperimentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExperimentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExperimentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExperimentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExperimentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ExportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeInvisibleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeInvisibleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeInvisibleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeInvisibleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeInvisibleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeInvisibleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/EyeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FacebookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FacebookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FacebookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FacebookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FallOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FallOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FastForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldBinaryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldBinaryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldNumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldNumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldStringOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldStringOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldTimeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FieldTimeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileDoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileDoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExcelFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExcelFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExcelOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExcelOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExcelTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExcelTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExclamationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExclamationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExclamationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileExclamationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileGifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileGifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileImageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileImageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileImageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileImageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileImageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileImageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileJpgOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileJpgOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileMarkdownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileMarkdownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileMarkdownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileMarkdownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileMarkdownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileMarkdownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePdfFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePdfFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePdfOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePdfOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePdfTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePdfTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePptFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePptFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePptOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePptTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilePptTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileProtectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileProtectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileSearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileSearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTextFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTextFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTextOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTextOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTextTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTextTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileUnknownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileUnknownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileUnknownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileUnknownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileUnknownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileUnknownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileWordFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileWordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileWordOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileWordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileWordTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileWordTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileZipFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileZipFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileZipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileZipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileZipTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FileZipTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FilterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FireFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FireFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FireOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FireOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FireTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FireTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FlagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FlagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FlagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FlagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FlagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FlagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOpenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOpenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOpenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOpenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOpenTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOpenTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FolderViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FontColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FontColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FontSizeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FontSizeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ForkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ForkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FormatPainterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FormatPainterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FormatPainterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FormatPainterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FormOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FormOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FullscreenExitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FullscreenExitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FullscreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FullscreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunctionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunctionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundProjectionScreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundProjectionScreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FundViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunnelPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunnelPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunnelPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunnelPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunnelPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/FunnelPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GatewayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GatewayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GiftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GiftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GiftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GiftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GiftTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GiftTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GithubFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GithubFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GithubOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GithubOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GitlabFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GitlabFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GitlabOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GitlabOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GlobalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GlobalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoldTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoogleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoogleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoogleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoogleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GooglePlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GooglePlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GooglePlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GooglePlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GooglePlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GooglePlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoogleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GoogleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/GroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HarmonyOSOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HarmonyOSOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeatMapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HeatMapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HighlightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HighlightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HighlightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HighlightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HighlightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HighlightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HistoryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HistoryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HomeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HomeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HomeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HomeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HomeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HomeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HourglassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HourglassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HourglassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HourglassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HourglassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/HourglassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Html5Filled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Html5Filled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Html5Outlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Html5Outlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Html5TwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Html5TwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IdcardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IdcardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IdcardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IdcardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IdcardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IdcardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IeCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IeCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IeSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IeSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ImportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ImportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InfoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowAboveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowAboveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowBelowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowBelowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsertRowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InstagramFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InstagramFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InstagramOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InstagramOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsuranceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsuranceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsuranceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsuranceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsuranceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InsuranceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InteractionFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InteractionFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InteractionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InteractionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InteractionTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/InteractionTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IssuesCloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/IssuesCloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ItalicOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ItalicOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/JavaOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/JavaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/JavaScriptOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/JavaScriptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/KeyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/KeyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/KubernetesOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/KubernetesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LaptopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LaptopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LayoutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LayoutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LayoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LayoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LayoutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LayoutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LeftSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LineChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LineChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LineHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LineHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinkedinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinkedinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinkedinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinkedinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinuxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LinuxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Loading3QuartersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/Loading3QuartersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LoadingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LoadingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LoginOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LoginOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LogoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/LogoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MacCommandFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MacCommandFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MacCommandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MacCommandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MailFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MailFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MailOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MailOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MailTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MailTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ManOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ManOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MedicineBoxFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MedicineBoxFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MedicineBoxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MedicineBoxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MedicineBoxTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MedicineBoxTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumWorkmarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MediumWorkmarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MehFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MehFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MehOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MehOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MehTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MehTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MenuFoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MenuFoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MenuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MenuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MenuUnfoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MenuUnfoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MergeCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MergeCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MergeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MergeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MergeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MergeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MessageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MessageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MessageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MessageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MessageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MessageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MinusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MobileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MobileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MobileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MobileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MobileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MobileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoneyCollectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoneyCollectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoneyCollectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoneyCollectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoneyCollectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoneyCollectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MonitorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MonitorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoonFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoonFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MutedFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MutedFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MutedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/MutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NodeCollapseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NodeCollapseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NodeExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NodeExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NodeIndexOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NodeIndexOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NotificationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NotificationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NotificationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NotificationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NotificationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NotificationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/NumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OneToOneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OneToOneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OpenAIFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OpenAIFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OpenAIOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OpenAIOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OrderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/OrderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PaperClipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PaperClipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PartitionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PartitionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PauseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PercentageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PercentageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PhoneFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PhoneFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PhoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PhoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PhoneTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PhoneTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PicCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PicCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PicLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PicLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PicRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PicRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PictureFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PictureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PictureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PictureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PictureTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PictureTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PieChartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PieChartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PieChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PieChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PieChartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PieChartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PinterestFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PinterestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PinterestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PinterestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlayCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlayCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlaySquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlaySquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlaySquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlaySquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PlusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoweroffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PoweroffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PrinterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PrinterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PrinterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PrinterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PrinterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PrinterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProductFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProductFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProductOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProductOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProfileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProfileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProfileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProfileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProfileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProfileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProjectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProjectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProjectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProjectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProjectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ProjectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PropertySafetyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PropertySafetyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PropertySafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PropertySafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PropertySafetyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PropertySafetyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PullRequestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PullRequestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PushpinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PushpinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PushpinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PushpinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PushpinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PushpinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PythonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/PythonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QqCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QqCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QqOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QqOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QqSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QqSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QrcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QrcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/QuestionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusBottomleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusBottomleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusBottomrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusBottomrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusSettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusSettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusUpleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusUpleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusUprightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RadiusUprightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReadFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReadFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReconciliationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReconciliationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReconciliationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReconciliationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReconciliationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReconciliationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedditCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedditCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedditSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedditSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedEnvelopeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedEnvelopeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedEnvelopeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedEnvelopeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedEnvelopeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedEnvelopeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RedoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ReloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RestFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RestTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RestTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RetweetOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RetweetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RightSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RiseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RiseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RobotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RobotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RobotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RobotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RocketFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RocketFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RocketOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RocketOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RocketTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RocketTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RollbackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RollbackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RotateLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RotateLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RotateRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RotateRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RubyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/RubyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyCertificateFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyCertificateFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyCertificateOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyCertificateOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyCertificateTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyCertificateTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SaveFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SaveFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SaveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SaveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SaveTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SaveTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScheduleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScheduleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScheduleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScheduleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScheduleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScheduleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScissorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ScissorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SecurityScanFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SecurityScanFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SecurityScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SecurityScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SecurityScanTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SecurityScanTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SelectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SelectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SendOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SendOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SettingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SettingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SettingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SettingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShakeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShakeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShareAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShareAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingCartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingCartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShoppingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShrinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ShrinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SignalFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SignalFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SignatureFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SignatureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SignatureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SignatureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SisternodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SisternodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SketchCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SketchCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SketchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SketchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SketchSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SketchSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkypeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkypeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkypeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SkypeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlackSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlidersFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlidersFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlidersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlidersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlidersTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SlidersTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmallDashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmallDashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SmileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SnippetsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SnippetsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SnippetsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SnippetsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SnippetsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SnippetsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SolutionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SolutionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SortAscendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SortAscendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SortDescendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SortDescendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SoundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SoundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SoundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SoundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SplitCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SplitCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SpotifyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SpotifyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SpotifyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SpotifyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StepForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StrikethroughOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/StrikethroughOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SubnodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SubnodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SunFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SunFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SunOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwapLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwapLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwapRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwapRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwitcherFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwitcherFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwitcherOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwitcherOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwitcherTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SwitcherTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/SyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TabletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TabletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TabletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TabletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TabletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TabletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TaobaoSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TeamOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TeamOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ThunderboltFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ThunderboltFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ThunderboltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ThunderboltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ThunderboltTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ThunderboltTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TikTokFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TikTokFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TikTokOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TikTokOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToolFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToolFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToolOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToolOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToolTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToolTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ToTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrademarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TransactionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TransactionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TranslationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TranslationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrophyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrophyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrophyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrophyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrophyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TrophyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TruckFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TruckFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TruckOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TruckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitchFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitchFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitterCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitterCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitterSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/TwitterSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnderlineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnderlineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UndoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UndoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UngroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UngroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnlockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnlockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnlockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnlockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnorderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UnorderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UpSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsergroupAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsergroupAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsergroupDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UsergroupDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserSwitchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/UserSwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerifiedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerifiedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalAlignBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalAlignBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalAlignMiddleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalAlignMiddleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalAlignTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalAlignTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VerticalRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/VideoCameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WalletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WalletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WalletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WalletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WalletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WalletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WarningFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WarningFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WarningOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WarningOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WarningTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WarningTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatWorkFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatWorkFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatWorkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WechatWorkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WeiboSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WhatsAppOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WhatsAppOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WifiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WifiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WindowsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WindowsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WindowsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WindowsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WomanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/WomanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/XFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/XFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/XOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/XOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YahooFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YahooFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YahooOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YahooOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YoutubeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YoutubeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YoutubeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YoutubeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YuqueFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YuqueFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YuqueOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/YuqueOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZhihuCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZhihuCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZhihuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZhihuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZhihuSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZhihuSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZoomInOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZoomInOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZoomOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/asn/ZoomOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/helpers.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/helpers.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/index.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/index.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/types.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-svg/lib/types.js
+/frontend/dashboard/node_modules/@ant-design/icons-svg/package.json
+/frontend/dashboard/node_modules/@ant-design/icons-svg/ReadMe.md
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/AntdIcon.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/AntdIcon.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/Icon.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/Icon.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/IconBase.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/IconBase.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/IconFont.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/IconFont.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AccountBookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AccountBookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AccountBookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AimOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlertFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlertOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlertTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlibabaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlignCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlignLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlignRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlipayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlipayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlipayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AlipaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AliwangwangFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AliwangwangOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AliyunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AmazonCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AmazonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AmazonSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AndroidFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AndroidOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AntCloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AntDesignOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ApartmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ApiFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ApiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ApiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AppleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AppleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AppstoreAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AppstoreFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AppstoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AppstoreTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AreaChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ArrowDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ArrowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ArrowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ArrowsAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ArrowUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AudioFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AudioMutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AudioOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AudioTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/AuditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BankFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BankOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BankTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BarcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BarsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BehanceCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BehanceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BehanceSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BehanceSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BellFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BellOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BellTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BgColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderHorizontalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderInnerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderlessTableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderOuterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BorderVerticleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BoxPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BoxPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BoxPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BranchesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BugFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BugOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BugTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BuildFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BuildOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BuildTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BulbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BulbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/BulbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CalculatorFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CalculatorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CalculatorTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CalendarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CalendarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CalendarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretDownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretLeftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretRightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretUpFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CaretUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CarryOutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CarryOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CarryOutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CheckSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ChromeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ChromeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CiCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CiCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CiCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ClearOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ClockCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ClockCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ClockCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloseSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudDownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudServerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CloudUploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ClusterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodepenCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodepenCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodepenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodepenSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodeSandboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodeSandboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodeSandboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CodeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CoffeeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ColumnHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ColumnWidthOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CommentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CompassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CompassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CompassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CompressOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ConsoleSqlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ContactsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ContactsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ContactsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ContainerFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ContainerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ContainerTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ControlFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ControlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ControlTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyrightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyrightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyrightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyrightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CopyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CreditCardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CreditCardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CreditCardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CustomerServiceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CustomerServiceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/CustomerServiceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DashboardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DashboardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DashboardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DatabaseFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DatabaseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DatabaseTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeleteColumnOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeleteFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeleteRowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeleteTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeliveredProcedureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DeploymentUnitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DesktopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DiffFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DiffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DiffTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DingdingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DingtalkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DingtalkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DingtalkSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DisconnectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DislikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DislikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DislikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DollarCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DollarCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DollarCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DollarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DollarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DotChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DoubleLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DoubleRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DownSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DragOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DribbbleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DribbbleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DribbbleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DribbbleSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DropboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DropboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/DropboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EditFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EditTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EllipsisOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EnterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EnvironmentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EnvironmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EnvironmentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EuroCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EuroCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EuroCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EuroOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EuroTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExceptionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExclamationCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExclamationCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExclamationCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExpandAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExperimentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExperimentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExperimentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ExportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EyeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EyeInvisibleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EyeInvisibleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EyeInvisibleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EyeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/EyeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FacebookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FacebookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FallOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FastBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FastBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FastForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FastForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FieldBinaryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FieldNumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FieldStringOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FieldTimeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileDoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileExcelFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileExcelOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileExcelTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileExclamationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileExclamationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileGifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileImageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileImageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileImageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileJpgOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileMarkdownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileMarkdownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileMarkdownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilePdfFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilePdfOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilePdfTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilePptFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilePptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilePptTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileProtectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileSearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileTextFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileTextOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileTextTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileUnknownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileUnknownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileUnknownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileWordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileWordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileWordTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileZipFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileZipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FileZipTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FilterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FireFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FireOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FireTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FlagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FlagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FlagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderOpenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderOpenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderOpenTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FolderViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FontColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FontSizeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ForkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FormatPainterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FormatPainterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FormOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FullscreenExitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FullscreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FunctionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FundProjectionScreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FundViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FunnelPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FunnelPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/FunnelPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GatewayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GiftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GiftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GiftTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GithubFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GithubOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GitlabFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GitlabOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GlobalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoldenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoldFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoldTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoogleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoogleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GooglePlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GooglePlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GooglePlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GoogleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/GroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HeartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HeartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HeartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HeatMapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HighlightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HighlightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HighlightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HistoryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HomeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HomeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HomeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HourglassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HourglassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/HourglassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/Html5Filled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/Html5Outlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/Html5TwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IdcardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IdcardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IdcardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IeCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IeSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ImportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/index.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InfoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InfoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InfoCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InfoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsertRowAboveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsertRowBelowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsertRowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsertRowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InstagramFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InstagramOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsuranceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsuranceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InsuranceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InteractionFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InteractionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/InteractionTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/IssuesCloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ItalicOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/KeyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LaptopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LayoutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LayoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LayoutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LeftSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LineChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LineHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LinkedinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LinkedinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/Loading3QuartersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LoadingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LoginOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/LogoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MacCommandFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MacCommandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MailFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MailOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MailTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ManOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MedicineBoxFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MedicineBoxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MedicineBoxTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MediumCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MediumOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MediumSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MediumWorkmarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MehFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MehOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MehTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MenuFoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MenuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MenuUnfoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MergeCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MessageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MessageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MessageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MinusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MobileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MobileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MobileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MoneyCollectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MoneyCollectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MoneyCollectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MonitorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/MoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NodeCollapseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NodeExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NodeIndexOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NotificationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NotificationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NotificationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/NumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/OneToOneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/OrderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PaperClipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PartitionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PauseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PauseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PauseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PauseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PercentageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PhoneFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PhoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PhoneTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PicCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PicLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PicRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PictureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PictureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PictureTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PieChartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PieChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PieChartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlayCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlaySquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlaySquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PlusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PoundCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PoundCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PoundCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PoweroffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PrinterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PrinterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PrinterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ProfileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ProfileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ProfileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ProjectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ProjectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ProjectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PropertySafetyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PropertySafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PropertySafetyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PullRequestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PushpinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PushpinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/PushpinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QqCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QqOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QqSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QrcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QuestionCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QuestionCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QuestionCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/QuestionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RadarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RadiusBottomleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RadiusBottomrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RadiusSettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RadiusUpleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RadiusUprightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ReadFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ReadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ReconciliationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ReconciliationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ReconciliationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedditCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedditSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedEnvelopeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedEnvelopeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedEnvelopeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RedoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ReloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RestTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RetweetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RightSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RiseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RobotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RobotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RocketFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RocketOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RocketTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RollbackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RotateLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/RotateRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SafetyCertificateFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SafetyCertificateOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SafetyCertificateTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SaveFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SaveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SaveTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ScheduleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ScheduleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ScheduleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ScissorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SecurityScanFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SecurityScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SecurityScanTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SelectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SendOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SettingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SettingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShakeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShareAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShoppingCartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShoppingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShoppingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShoppingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ShrinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SignalFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SisternodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SketchCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SketchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SketchSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SkinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SkinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SkinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SkypeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SkypeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlackCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlackSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlackSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlidersFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlidersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SlidersTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SmallDashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SmileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SmileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SmileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SnippetsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SnippetsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SnippetsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SolutionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SortAscendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SortDescendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SoundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SoundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SplitCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StepBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StepBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StepForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StepForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/StrikethroughOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SubnodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SwapLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SwapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SwapRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SwitcherFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SwitcherOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SwitcherTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/SyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TabletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TabletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TabletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TagsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TagsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TagsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TaobaoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TaobaoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TaobaoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TaobaoSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TeamOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ThunderboltFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ThunderboltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ThunderboltTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ToolFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ToolOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ToolTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ToTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrademarkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrademarkCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrademarkCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrademarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TransactionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TranslationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrophyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrophyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TrophyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TwitterCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TwitterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/TwitterSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UnderlineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UndoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UngroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UnlockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UnlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UnlockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UnorderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UpSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UsbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UsbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UsbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UserAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UserDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UsergroupAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UsergroupDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UserOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/UserSwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VerifiedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VerticalAlignBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VerticalAlignMiddleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VerticalAlignTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VerticalLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VerticalRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VideoCameraAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VideoCameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VideoCameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/VideoCameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WalletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WalletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WalletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WarningFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WarningOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WarningTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WechatFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WechatOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WeiboCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WeiboCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WeiboOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WeiboSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WeiboSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WhatsAppOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WifiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WindowsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WindowsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/WomanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/YahooFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/YahooOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/YoutubeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/YoutubeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/YuqueFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/YuqueOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ZhihuCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ZhihuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ZhihuSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ZoomInOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/icons/ZoomOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/index.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/index.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/insert-css.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/insert-css.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/utils.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/es/utils.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/AntdIcon.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/AntdIcon.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/Icon.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/Icon.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/IconBase.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/IconBase.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/IconFont.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/IconFont.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/twoTonePrimaryColor.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/components/twoTonePrimaryColor.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AccountBookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AccountBookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AccountBookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AccountBookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AccountBookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AccountBookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AimOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AimOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlertFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlertFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlertOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlertOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlertTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlertTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlibabaOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlibabaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlignCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlignCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlignLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlignLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlignRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlignRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AlipaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AliwangwangFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AliwangwangFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AliwangwangOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AliwangwangOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AliyunOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AliyunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AmazonCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AmazonCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AmazonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AmazonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AmazonSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AmazonSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AndroidFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AndroidFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AndroidOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AndroidOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AntCloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AntCloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AntDesignOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AntDesignOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApartmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApartmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApiFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApiFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ApiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AppstoreTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AreaChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AreaChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowsAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowsAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ArrowUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioMutedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioMutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AudioTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AuditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/AuditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BankFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BankFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BankOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BankOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BankTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BankTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BarcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BarcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BarsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BarsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BehanceSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BellFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BellFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BellOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BellOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BellTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BellTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BgColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BgColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderHorizontalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderHorizontalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderInnerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderInnerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderlessTableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderlessTableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderOuterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderOuterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderVerticleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BorderVerticleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoxPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoxPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoxPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoxPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoxPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BoxPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BranchesOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BranchesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BugFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BugFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BugOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BugOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BugTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BugTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BuildFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BuildFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BuildOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BuildOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BuildTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BuildTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BulbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BulbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BulbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BulbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BulbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/BulbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalculatorFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalculatorFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalculatorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalculatorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalculatorTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalculatorTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalendarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalendarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalendarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalendarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalendarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CalendarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretDownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretDownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretLeftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretLeftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretRightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretRightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretUpFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretUpFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CaretUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarryOutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarryOutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarryOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarryOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarryOutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarryOutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CheckSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ChromeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ChromeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ChromeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ChromeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClearOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClearOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClockCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClockCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClockCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClockCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClockCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClockCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloseSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudDownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudDownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudServerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudServerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudUploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CloudUploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClusterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ClusterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodepenSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeSandboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeSandboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeSandboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeSandboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeSandboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeSandboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CodeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CoffeeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CoffeeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ColumnHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ColumnHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ColumnWidthOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ColumnWidthOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CommentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CommentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompressOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CompressOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ConsoleSqlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ConsoleSqlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContactsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContactsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContactsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContactsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContactsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContactsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContainerFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContainerFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContainerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContainerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContainerTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ContainerTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ControlFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ControlFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ControlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ControlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ControlTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ControlTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyrightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CopyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CreditCardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CreditCardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CreditCardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CreditCardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CreditCardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CreditCardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CustomerServiceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CustomerServiceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CustomerServiceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CustomerServiceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CustomerServiceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/CustomerServiceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashboardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashboardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashboardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashboardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashboardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashboardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DatabaseFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DatabaseFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DatabaseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DatabaseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DatabaseTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DatabaseTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteColumnOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteColumnOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteRowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteRowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeleteTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeliveredProcedureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeliveredProcedureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeploymentUnitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DeploymentUnitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DesktopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DesktopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DiffFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DiffFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DiffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DiffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DiffTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DiffTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingdingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingdingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingtalkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingtalkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingtalkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingtalkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingtalkSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DingtalkSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DisconnectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DisconnectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DislikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DislikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DislikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DislikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DislikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DislikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DollarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DotChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DotChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DoubleLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DoubleLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DoubleRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DoubleRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DownSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DragOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DragOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DribbbleSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DropboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DropboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DropboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DropboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DropboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/DropboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EditFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EditFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EditTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EditTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EllipsisOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EllipsisOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnvironmentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnvironmentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnvironmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnvironmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnvironmentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EnvironmentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EuroTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExceptionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExceptionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExpandAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExpandAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExperimentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExperimentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExperimentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExperimentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExperimentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExperimentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ExportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeInvisibleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeInvisibleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeInvisibleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeInvisibleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeInvisibleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeInvisibleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/EyeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FacebookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FacebookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FacebookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FacebookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FallOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FallOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FastForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldBinaryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldBinaryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldNumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldNumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldStringOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldStringOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldTimeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FieldTimeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileDoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileDoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExcelFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExcelFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExcelOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExcelOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExcelTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExcelTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExclamationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExclamationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExclamationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileExclamationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileGifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileGifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileImageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileImageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileImageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileImageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileImageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileImageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileJpgOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileJpgOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileMarkdownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileMarkdownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileMarkdownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileMarkdownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileMarkdownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileMarkdownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePdfFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePdfFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePdfOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePdfOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePdfTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePdfTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePptFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePptFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePptOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePptTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilePptTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileProtectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileProtectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileSearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileSearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTextFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTextFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTextOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTextOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTextTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTextTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileUnknownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileUnknownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileUnknownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileUnknownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileUnknownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileUnknownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileWordFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileWordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileWordOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileWordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileWordTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileWordTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileZipFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileZipFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileZipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileZipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileZipTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FileZipTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FilterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FireFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FireFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FireOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FireOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FireTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FireTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FlagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FlagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FlagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FlagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FlagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FlagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOpenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOpenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOpenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOpenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOpenTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOpenTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FolderViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FontColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FontColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FontSizeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FontSizeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ForkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ForkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FormatPainterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FormatPainterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FormatPainterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FormatPainterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FormOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FormOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FullscreenExitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FullscreenExitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FullscreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FullscreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunctionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunctionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundProjectionScreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundProjectionScreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FundViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunnelPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunnelPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunnelPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunnelPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunnelPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/FunnelPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GatewayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GatewayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GiftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GiftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GiftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GiftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GiftTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GiftTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GithubFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GithubFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GithubOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GithubOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GitlabFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GitlabFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GitlabOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GitlabOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GlobalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GlobalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoldTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoogleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoogleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoogleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoogleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GooglePlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GooglePlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GooglePlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GooglePlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GooglePlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GooglePlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoogleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GoogleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/GroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeatMapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HeatMapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HighlightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HighlightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HighlightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HighlightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HighlightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HighlightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HistoryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HistoryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HomeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HomeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HomeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HomeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HomeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HomeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HourglassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HourglassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HourglassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HourglassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HourglassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/HourglassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Html5Filled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Html5Filled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Html5Outlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Html5Outlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Html5TwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Html5TwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IdcardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IdcardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IdcardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IdcardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IdcardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IdcardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IeCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IeCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IeSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IeSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ImportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ImportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/index.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/index.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InfoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowAboveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowAboveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowBelowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowBelowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsertRowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InstagramFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InstagramFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InstagramOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InstagramOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsuranceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsuranceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsuranceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsuranceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsuranceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InsuranceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InteractionFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InteractionFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InteractionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InteractionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InteractionTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/InteractionTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IssuesCloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/IssuesCloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ItalicOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ItalicOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/KeyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/KeyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LaptopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LaptopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LayoutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LayoutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LayoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LayoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LayoutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LayoutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LeftSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LineChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LineChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LineHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LineHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LinkedinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LinkedinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LinkedinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LinkedinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Loading3QuartersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/Loading3QuartersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LoadingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LoadingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LoginOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LoginOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LogoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/LogoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MacCommandFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MacCommandFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MacCommandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MacCommandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MailFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MailFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MailOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MailOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MailTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MailTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ManOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ManOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MedicineBoxFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MedicineBoxFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MedicineBoxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MedicineBoxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MedicineBoxTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MedicineBoxTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumWorkmarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MediumWorkmarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MehFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MehFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MehOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MehOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MehTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MehTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MenuFoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MenuFoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MenuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MenuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MenuUnfoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MenuUnfoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MergeCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MergeCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MessageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MessageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MessageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MessageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MessageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MessageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MinusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MobileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MobileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MobileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MobileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MobileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MobileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoneyCollectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoneyCollectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoneyCollectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoneyCollectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoneyCollectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoneyCollectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MonitorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MonitorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/MoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NodeCollapseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NodeCollapseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NodeExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NodeExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NodeIndexOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NodeIndexOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NotificationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NotificationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NotificationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NotificationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NotificationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NotificationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/NumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/OneToOneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/OneToOneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/OrderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/OrderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PaperClipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PaperClipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PartitionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PartitionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PauseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PercentageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PercentageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PhoneFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PhoneFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PhoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PhoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PhoneTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PhoneTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PicCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PicCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PicLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PicLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PicRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PicRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PictureFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PictureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PictureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PictureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PictureTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PictureTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PieChartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PieChartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PieChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PieChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PieChartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PieChartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlayCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlayCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlaySquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlaySquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlaySquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlaySquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PlusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoweroffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PoweroffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PrinterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PrinterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PrinterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PrinterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PrinterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PrinterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProfileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProfileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProfileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProfileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProfileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProfileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProjectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProjectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProjectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProjectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProjectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ProjectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PropertySafetyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PropertySafetyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PropertySafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PropertySafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PropertySafetyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PropertySafetyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PullRequestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PullRequestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PushpinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PushpinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PushpinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PushpinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PushpinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/PushpinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QqCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QqCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QqOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QqOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QqSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QqSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QrcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QrcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/QuestionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusBottomleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusBottomleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusBottomrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusBottomrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusSettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusSettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusUpleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusUpleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusUprightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RadiusUprightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReadFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReadFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReconciliationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReconciliationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReconciliationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReconciliationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReconciliationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReconciliationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedditCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedditCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedditSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedditSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedEnvelopeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedEnvelopeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedEnvelopeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedEnvelopeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedEnvelopeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedEnvelopeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RedoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ReloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RestFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RestTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RestTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RetweetOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RetweetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RightSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RiseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RiseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RobotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RobotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RobotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RobotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RocketFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RocketFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RocketOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RocketOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RocketTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RocketTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RollbackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RollbackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RotateLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RotateLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RotateRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/RotateRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyCertificateFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyCertificateFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyCertificateOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyCertificateOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyCertificateTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyCertificateTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SaveFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SaveFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SaveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SaveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SaveTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SaveTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScheduleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScheduleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScheduleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScheduleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScheduleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScheduleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScissorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ScissorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SecurityScanFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SecurityScanFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SecurityScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SecurityScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SecurityScanTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SecurityScanTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SelectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SelectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SendOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SendOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SettingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SettingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SettingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SettingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShakeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShakeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShareAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShareAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingCartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingCartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShoppingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShrinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ShrinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SignalFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SignalFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SisternodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SisternodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SketchCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SketchCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SketchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SketchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SketchSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SketchSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkypeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkypeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkypeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SkypeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlackSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlidersFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlidersFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlidersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlidersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlidersTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SlidersTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmallDashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmallDashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SmileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SnippetsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SnippetsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SnippetsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SnippetsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SnippetsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SnippetsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SolutionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SolutionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SortAscendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SortAscendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SortDescendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SortDescendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SoundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SoundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SoundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SoundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SplitCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SplitCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StepForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StrikethroughOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/StrikethroughOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SubnodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SubnodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwapLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwapLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwapRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwapRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwitcherFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwitcherFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwitcherOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwitcherOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwitcherTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SwitcherTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/SyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TabletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TabletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TabletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TabletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TabletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TabletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TaobaoSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TeamOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TeamOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ThunderboltFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ThunderboltFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ThunderboltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ThunderboltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ThunderboltTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ThunderboltTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToolFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToolFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToolOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToolOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToolTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToolTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ToTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrademarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TransactionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TransactionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TranslationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TranslationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrophyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrophyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrophyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrophyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrophyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TrophyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TwitterCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TwitterCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TwitterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TwitterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TwitterSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/TwitterSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnderlineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnderlineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UndoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UndoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UngroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UngroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnlockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnlockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnlockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnlockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnorderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UnorderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UpSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsergroupAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsergroupAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsergroupDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UsergroupDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserSwitchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/UserSwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerifiedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerifiedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalAlignBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalAlignBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalAlignMiddleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalAlignMiddleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalAlignTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalAlignTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VerticalRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/VideoCameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WalletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WalletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WalletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WalletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WalletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WalletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WarningFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WarningFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WarningOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WarningOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WarningTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WarningTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WechatFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WechatFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WechatOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WechatOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WeiboSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WhatsAppOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WhatsAppOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WifiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WifiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WindowsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WindowsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WindowsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WindowsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WomanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/WomanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YahooFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YahooFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YahooOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YahooOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YoutubeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YoutubeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YoutubeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YoutubeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YuqueFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YuqueFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YuqueOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/YuqueOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZhihuCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZhihuCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZhihuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZhihuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZhihuSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZhihuSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZoomInOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZoomInOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZoomOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/icons/ZoomOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/index.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/index.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/insert-css.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/insert-css.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/utils.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/lib/utils.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/.babelrc
+/frontend/dashboard/node_modules/@ant-design/icons-vue/.prettierignore
+/frontend/dashboard/node_modules/@ant-design/icons-vue/.prettierrc
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AccountBookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AccountBookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AccountBookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AccountBookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AccountBookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AccountBookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AimOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AimOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlertFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlertFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlertOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlertOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlertTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlertTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlibabaOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlibabaOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlignCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlignCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlignLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlignLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlignRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlignRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AlipaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AliwangwangFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AliwangwangFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AliwangwangOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AliwangwangOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AliyunOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AliyunOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AmazonCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AmazonCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AmazonOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AmazonOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AmazonSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AmazonSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AndroidFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AndroidFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AndroidOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AndroidOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AntCloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AntCloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AntDesignOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AntDesignOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApartmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApartmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApiFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApiFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ApiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AppstoreTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AreaChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AreaChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowsAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowsAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ArrowUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioMutedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioMutedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AudioTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AuditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/AuditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BankFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BankFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BankOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BankOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BankTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BankTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BarcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BarcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BarsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BarsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BehanceSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BellFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BellFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BellOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BellOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BellTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BellTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BgColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BgColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BookTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BookTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderHorizontalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderHorizontalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderInnerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderInnerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderlessTableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderlessTableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderOuterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderOuterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderVerticleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BorderVerticleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoxPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoxPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoxPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoxPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoxPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BoxPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BranchesOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BranchesOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BugFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BugFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BugOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BugOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BugTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BugTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BuildFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BuildFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BuildOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BuildOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BuildTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BuildTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BulbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BulbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BulbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BulbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BulbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/BulbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalculatorFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalculatorFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalculatorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalculatorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalculatorTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalculatorTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalendarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalendarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalendarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalendarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalendarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CalendarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretDownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretDownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretDownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretDownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretLeftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretLeftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretRightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretRightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretUpFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretUpFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretUpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CaretUpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarryOutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarryOutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarryOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarryOutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarryOutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarryOutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CheckSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ChromeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ChromeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ChromeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ChromeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CiTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClearOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClearOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClockCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClockCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClockCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClockCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClockCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClockCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloseSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudDownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudDownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudServerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudServerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudUploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CloudUploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClusterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ClusterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodepenSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeSandboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeSandboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeSandboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeSandboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeSandboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeSandboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CodeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CoffeeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CoffeeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ColumnHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ColumnHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ColumnWidthOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ColumnWidthOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CommentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CommentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompressOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CompressOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ConsoleSqlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ConsoleSqlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContactsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContactsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContactsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContactsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContactsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContactsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContainerFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContainerFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContainerOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContainerOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContainerTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ContainerTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ControlFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ControlFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ControlOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ControlOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ControlTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ControlTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyrightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CopyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CreditCardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CreditCardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CreditCardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CreditCardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CreditCardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CreditCardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CustomerServiceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CustomerServiceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CustomerServiceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CustomerServiceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CustomerServiceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/CustomerServiceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashboardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashboardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashboardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashboardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashboardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashboardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DatabaseFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DatabaseFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DatabaseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DatabaseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DatabaseTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DatabaseTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteColumnOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteColumnOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteRowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteRowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeleteTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeliveredProcedureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeliveredProcedureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeploymentUnitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DeploymentUnitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DesktopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DesktopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DiffFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DiffFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DiffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DiffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DiffTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DiffTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingdingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingdingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingtalkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingtalkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingtalkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingtalkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingtalkSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DingtalkSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DisconnectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DisconnectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DislikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DislikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DislikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DislikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DislikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DislikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DollarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DotChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DotChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DoubleLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DoubleLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DoubleRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DoubleRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DownSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DragOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DragOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DribbbleSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DropboxCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DropboxCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DropboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DropboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DropboxSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/DropboxSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EditFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EditFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EditTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EditTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EllipsisOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EllipsisOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnvironmentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnvironmentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnvironmentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnvironmentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnvironmentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EnvironmentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EuroTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExceptionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExceptionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExpandAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExpandAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExperimentFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExperimentFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExperimentOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExperimentOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExperimentTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExperimentTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ExportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeInvisibleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeInvisibleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeInvisibleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeInvisibleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeInvisibleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeInvisibleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/EyeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FacebookFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FacebookFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FacebookOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FacebookOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FallOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FallOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FastForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldBinaryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldBinaryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldNumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldNumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldStringOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldStringOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldTimeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FieldTimeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileDoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileDoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExcelFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExcelFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExcelOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExcelOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExcelTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExcelTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExclamationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExclamationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExclamationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExclamationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExclamationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileExclamationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileGifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileGifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileImageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileImageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileImageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileImageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileImageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileImageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileJpgOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileJpgOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileMarkdownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileMarkdownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileMarkdownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileMarkdownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileMarkdownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileMarkdownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePdfFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePdfFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePdfOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePdfOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePdfTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePdfTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePptFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePptFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePptOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePptOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePptTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilePptTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileProtectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileProtectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileSearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileSearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileSyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileSyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTextFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTextFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTextOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTextOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTextTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTextTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileUnknownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileUnknownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileUnknownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileUnknownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileUnknownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileUnknownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileWordFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileWordFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileWordOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileWordOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileWordTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileWordTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileZipFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileZipFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileZipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileZipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileZipTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FileZipTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FilterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FireFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FireFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FireOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FireOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FireTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FireTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FlagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FlagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FlagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FlagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FlagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FlagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderAddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderAddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderAddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderAddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOpenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOpenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOpenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOpenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOpenTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOpenTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FolderViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FontColorsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FontColorsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FontSizeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FontSizeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ForkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ForkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FormatPainterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FormatPainterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FormatPainterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FormatPainterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FormOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FormOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FrownFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FrownFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FrownOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FrownOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FrownTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FrownTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FullscreenExitOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FullscreenExitOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FullscreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FullscreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunctionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunctionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundProjectionScreenOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundProjectionScreenOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundViewOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FundViewOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunnelPlotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunnelPlotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunnelPlotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunnelPlotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunnelPlotTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/FunnelPlotTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GatewayOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GatewayOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GifOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GifOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GiftFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GiftFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GiftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GiftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GiftTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GiftTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GithubFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GithubFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GithubOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GithubOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GitlabFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GitlabFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GitlabOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GitlabOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GlobalOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GlobalOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldenFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldenFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoldTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoogleCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoogleCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoogleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoogleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GooglePlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GooglePlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GooglePlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GooglePlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GooglePlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GooglePlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoogleSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GoogleSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/GroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HddFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HddFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HddTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HddTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeatMapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HeatMapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HighlightFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HighlightFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HighlightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HighlightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HighlightTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HighlightTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HistoryOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HistoryOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HolderOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HolderOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HomeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HomeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HomeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HomeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HomeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HomeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HourglassFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HourglassFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HourglassOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HourglassOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HourglassTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/HourglassTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Html5Filled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Html5Filled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Html5Outlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Html5Outlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Html5TwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Html5TwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IdcardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IdcardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IdcardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IdcardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IdcardTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IdcardTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IeCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IeCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IeSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IeSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ImportOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ImportOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InboxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InboxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InfoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowAboveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowAboveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowBelowOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowBelowOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsertRowRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InstagramFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InstagramFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InstagramOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InstagramOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsuranceFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsuranceFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsuranceOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsuranceOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsuranceTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InsuranceTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InteractionFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InteractionFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InteractionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InteractionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InteractionTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/InteractionTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IssuesCloseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/IssuesCloseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ItalicOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ItalicOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/KeyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/KeyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LaptopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LaptopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LayoutFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LayoutFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LayoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LayoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LayoutTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LayoutTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LeftSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LikeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LikeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LikeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LikeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LikeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LikeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LineChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LineChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LineHeightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LineHeightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LinkedinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LinkedinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LinkedinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LinkedinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Loading3QuartersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/Loading3QuartersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LoadingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LoadingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LoginOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LoginOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LogoutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/LogoutOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MacCommandFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MacCommandFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MacCommandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MacCommandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MailFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MailFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MailOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MailOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MailTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MailTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ManOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ManOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MedicineBoxFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MedicineBoxFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MedicineBoxOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MedicineBoxOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MedicineBoxTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MedicineBoxTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumWorkmarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MediumWorkmarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MehFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MehFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MehOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MehOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MehTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MehTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MenuFoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MenuFoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MenuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MenuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MenuUnfoldOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MenuUnfoldOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MergeCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MergeCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MessageFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MessageFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MessageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MessageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MessageTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MessageTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MinusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MobileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MobileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MobileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MobileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MobileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MobileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoneyCollectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoneyCollectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoneyCollectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoneyCollectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoneyCollectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoneyCollectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MonitorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MonitorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoreOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/MoreOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NodeCollapseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NodeCollapseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NodeExpandOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NodeExpandOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NodeIndexOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NodeIndexOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NotificationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NotificationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NotificationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NotificationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NotificationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NotificationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NumberOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/NumberOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/OneToOneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/OneToOneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/OrderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/OrderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/package.json
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PaperClipOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PaperClipOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PartitionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PartitionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PauseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PercentageOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PercentageOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PhoneFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PhoneFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PhoneOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PhoneOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PhoneTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PhoneTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PicCenterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PicCenterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PicLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PicLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PicRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PicRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PictureFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PictureFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PictureOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PictureOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PictureTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PictureTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PieChartFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PieChartFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PieChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PieChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PieChartTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PieChartTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlayCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlayCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlayCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlayCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlayCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlayCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlaySquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlaySquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlaySquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlaySquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlaySquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlaySquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PlusSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoweroffOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PoweroffOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PrinterFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PrinterFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PrinterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PrinterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PrinterTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PrinterTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProfileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProfileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProfileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProfileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProfileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProfileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProjectFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProjectFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProjectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProjectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProjectTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ProjectTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PropertySafetyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PropertySafetyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PropertySafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PropertySafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PropertySafetyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PropertySafetyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PullRequestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PullRequestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PushpinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PushpinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PushpinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PushpinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PushpinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/PushpinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QqCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QqCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QqOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QqOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QqSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QqSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QrcodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QrcodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/QuestionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadarChartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadarChartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusBottomleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusBottomleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusBottomrightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusBottomrightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusSettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusSettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusUpleftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusUpleftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusUprightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RadiusUprightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReadFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReadFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/README.md
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReconciliationFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReconciliationFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReconciliationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReconciliationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReconciliationTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReconciliationTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedditCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedditCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedditOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedditOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedditSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedditSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedEnvelopeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedEnvelopeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedEnvelopeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedEnvelopeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedEnvelopeTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedEnvelopeTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RedoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReloadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ReloadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RestFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RestFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RestOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RestOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RestTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RestTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RetweetOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RetweetOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RightSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RiseOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RiseOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RobotFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RobotFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RobotOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RobotOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RocketFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RocketFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RocketOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RocketOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RocketTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RocketTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RollbackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RollbackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RotateLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RotateLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RotateRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/RotateRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyCertificateFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyCertificateFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyCertificateOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyCertificateOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyCertificateTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyCertificateTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SafetyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SaveFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SaveFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SaveOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SaveOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SaveTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SaveTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScheduleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScheduleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScheduleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScheduleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScheduleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScheduleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScissorOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ScissorOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SearchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SearchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SecurityScanFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SecurityScanFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SecurityScanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SecurityScanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SecurityScanTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SecurityScanTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SelectOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SelectOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SendOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SendOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SettingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SettingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SettingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SettingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SettingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SettingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShakeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShakeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShareAltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShareAltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingCartOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingCartOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShoppingTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShrinkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ShrinkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SignalFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SignalFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SisternodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SisternodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SketchCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SketchCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SketchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SketchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SketchSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SketchSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkinFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkinFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkinOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkinOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkinTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkinTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkypeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkypeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkypeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SkypeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlackSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlidersFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlidersFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlidersOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlidersOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlidersTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SlidersTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmallDashOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmallDashOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmileFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmileFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmileOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmileOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmileTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SmileTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SnippetsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SnippetsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SnippetsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SnippetsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SnippetsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SnippetsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SolutionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SolutionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SortAscendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SortAscendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SortDescendingOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SortDescendingOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SoundFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SoundFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SoundOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SoundOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SoundTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SoundTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SplitCellsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SplitCellsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StarFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StarFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StarOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StarOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StarTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StarTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepBackwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepBackwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepBackwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepBackwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepForwardFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepForwardFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepForwardOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StepForwardOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StopFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StopFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StopTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StopTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StrikethroughOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/StrikethroughOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SubnodeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SubnodeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwapLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwapLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwapOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwapOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwapRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwapRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwitcherFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwitcherFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwitcherOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwitcherOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwitcherTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SwitcherTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SyncOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/SyncOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TableOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TableOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TabletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TabletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TabletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TabletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TabletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TabletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagsTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagsTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TagTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TaobaoSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TeamOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TeamOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ThunderboltFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ThunderboltFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ThunderboltOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ThunderboltOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ThunderboltTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ThunderboltTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToolFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToolFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToolOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToolOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToolTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToolTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ToTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrademarkOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TransactionOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TransactionOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TranslationOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TranslationOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrophyFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrophyFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrophyOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrophyOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrophyTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TrophyTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TwitterCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TwitterCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TwitterOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TwitterOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TwitterSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/TwitterSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnderlineOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnderlineOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UndoOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UndoOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UngroupOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UngroupOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnlockFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnlockFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnlockOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnlockOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnlockTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnlockTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnorderedListOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UnorderedListOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpCircleTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpCircleTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UploadOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UploadOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpSquareTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UpSquareTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsbFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsbFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsbOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsbOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsbTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsbTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsergroupAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsergroupAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsergroupDeleteOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UsergroupDeleteOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserSwitchOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/UserSwitchOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerifiedOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerifiedOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalAlignBottomOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalAlignBottomOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalAlignMiddleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalAlignMiddleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalAlignTopOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalAlignTopOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalLeftOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalLeftOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalRightOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VerticalRightOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraAddOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraAddOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/VideoCameraTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WalletFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WalletFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WalletOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WalletOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WalletTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WalletTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WarningFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WarningFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WarningOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WarningOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WarningTwoTone.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WarningTwoTone.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WechatFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WechatFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WechatOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WechatOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboCircleOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboCircleOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboSquareOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WeiboSquareOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WhatsAppOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WhatsAppOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WifiOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WifiOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WindowsFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WindowsFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WindowsOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WindowsOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WomanOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/WomanOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YahooFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YahooFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YahooOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YahooOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YoutubeFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YoutubeFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YoutubeOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YoutubeOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YuqueFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YuqueFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YuqueOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/YuqueOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZhihuCircleFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZhihuCircleFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZhihuOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZhihuOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZhihuSquareFilled.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZhihuSquareFilled.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZoomInOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZoomInOutlined.js
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZoomOutOutlined.d.ts
+/frontend/dashboard/node_modules/@ant-design/icons-vue/ZoomOutOutlined.js
+/frontend/dashboard/node_modules/@babel/helper-string-parser/lib/index.js
+/frontend/dashboard/node_modules/@babel/helper-string-parser/lib/index.js.map
+/frontend/dashboard/node_modules/@babel/helper-string-parser/LICENSE
+/frontend/dashboard/node_modules/@babel/helper-string-parser/package.json
+/frontend/dashboard/node_modules/@babel/helper-string-parser/README.md
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/lib/identifier.js
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/lib/index.js
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/lib/index.js.map
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/lib/keyword.js
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/LICENSE
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/package.json
+/frontend/dashboard/node_modules/@babel/helper-validator-identifier/README.md
+/frontend/dashboard/node_modules/@babel/parser/bin/babel-parser.js
+/frontend/dashboard/node_modules/@babel/parser/lib/index.js
+/frontend/dashboard/node_modules/@babel/parser/lib/index.js.map
+/frontend/dashboard/node_modules/@babel/parser/typings/babel-parser.d.ts
+/frontend/dashboard/node_modules/@babel/parser/CHANGELOG.md
+/frontend/dashboard/node_modules/@babel/parser/LICENSE
+/frontend/dashboard/node_modules/@babel/parser/package.json
+/frontend/dashboard/node_modules/@babel/parser/README.md
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecs.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/callSuper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/checkInRHS.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/construct.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/createClass.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/createSuper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/decorate.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/defaults.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/defineAccessor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/defineProperty.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/dispose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/extends.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/get.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/identity.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/inherits.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/instanceof.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/jsx.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/objectSpread.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/OverloadYield.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/package.json
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorAsync.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorAsyncGen.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorAsyncIterator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorDefine.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorKeys.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/regeneratorValues.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/set.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/setFunctionName.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/superPropBase.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/superPropGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/superPropSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/tdz.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/temporalRef.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/toArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/toSetter.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/tsRewriteRelativeImportExtensions.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/typeof.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/using.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/usingCtx.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecs.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecs2203.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecs2203R.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecs2301.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecs2305.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/applyDecs2311.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/arrayWithHoles.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/assertClassBrand.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/assertThisInitialized.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/asyncIterator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/asyncToGenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/AwaitValue.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/callSuper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/checkInRHS.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classCallCheck.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classNameTDZError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateGetter.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classPrivateSetter.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/construct.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/createClass.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/createSuper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/decorate.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/defaults.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/defineAccessor.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/defineProperty.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/dispose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/extends.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/get.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/getPrototypeOf.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/identity.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/importDeferProxy.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/inherits.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/inheritsLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/instanceof.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/interopRequireDefault.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/isNativeFunction.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/iterableToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/jsx.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/maybeArrayLike.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/newArrowCheck.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/nonIterableRest.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/nonIterableSpread.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/nullishReceiverError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/objectSpread.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/objectSpread2.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/OverloadYield.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/readOnlyError.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorAsync.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorDefine.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorKeys.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorRuntime.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/regeneratorValues.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/set.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/setFunctionName.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/setPrototypeOf.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/slicedToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/superPropBase.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/superPropGet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/superPropSet.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/tdz.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/temporalRef.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/temporalUndefined.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/toArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/toConsumableArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/toPrimitive.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/toPropertyKey.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/toSetter.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/tsRewriteRelativeImportExtensions.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/typeof.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/using.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/usingCtx.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/wrapRegExp.js
+/frontend/dashboard/node_modules/@babel/runtime/helpers/writeOnlyError.js
+/frontend/dashboard/node_modules/@babel/runtime/regenerator/index.js
+/frontend/dashboard/node_modules/@babel/runtime/LICENSE
+/frontend/dashboard/node_modules/@babel/runtime/package.json
+/frontend/dashboard/node_modules/@babel/runtime/README.md
+/frontend/dashboard/node_modules/@babel/types/lib/asserts/generated/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/asserts/generated/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/asserts/assertNode.js
+/frontend/dashboard/node_modules/@babel/types/lib/asserts/assertNode.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/ast-types/generated/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/ast-types/generated/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/generated/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/generated/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/generated/lowercase.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/generated/lowercase.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/generated/uppercase.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/generated/uppercase.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/react/buildChildren.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/react/buildChildren.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/productions.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/productions.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/builders/validateNode.js
+/frontend/dashboard/node_modules/@babel/types/lib/builders/validateNode.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/clone/clone.js
+/frontend/dashboard/node_modules/@babel/types/lib/clone/clone.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneDeep.js
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneDeep.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneNode.js
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneNode.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
+/frontend/dashboard/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/addComment.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/addComment.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/addComments.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/addComments.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritInnerComments.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritsComments.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritsComments.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/comments/removeComments.js
+/frontend/dashboard/node_modules/@babel/types/lib/comments/removeComments.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/constants/generated/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/constants/generated/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/constants/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/constants/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/ensureBlock.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/ensureBlock.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toBlock.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toBlock.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toComputedKey.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toComputedKey.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toExpression.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toExpression.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toIdentifier.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toIdentifier.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toKeyAlias.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toKeyAlias.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toSequenceExpression.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toStatement.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/toStatement.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/converters/valueToNode.js
+/frontend/dashboard/node_modules/@babel/types/lib/converters/valueToNode.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/core.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/core.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/deprecated-aliases.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/experimental.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/experimental.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/flow.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/flow.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/jsx.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/jsx.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/misc.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/misc.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/placeholders.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/placeholders.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/typescript.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/typescript.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/utils.js
+/frontend/dashboard/node_modules/@babel/types/lib/definitions/utils.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/inherits.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/inherits.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/removeProperties.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/removeProperties.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
+/frontend/dashboard/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getFunctionName.js
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
+/frontend/dashboard/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/traverse/traverse.js
+/frontend/dashboard/node_modules/@babel/types/lib/traverse/traverse.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/traverse/traverseFast.js
+/frontend/dashboard/node_modules/@babel/types/lib/traverse/traverseFast.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
+/frontend/dashboard/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/utils/deprecationWarning.js
+/frontend/dashboard/node_modules/@babel/types/lib/utils/deprecationWarning.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/utils/inherit.js
+/frontend/dashboard/node_modules/@babel/types/lib/utils/inherit.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/utils/shallowEqual.js
+/frontend/dashboard/node_modules/@babel/types/lib/utils/shallowEqual.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/generated/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/generated/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/react/isCompatTag.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/react/isReactComponent.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/is.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/is.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isBinding.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isBinding.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isBlockScoped.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isBlockScoped.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isImmutable.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isImmutable.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isLet.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isLet.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isNode.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isNode.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isPlaceholderType.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isReferenced.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isReferenced.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isScope.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isScope.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isType.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isType.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isValidIdentifier.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isVar.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/isVar.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/matchesPattern.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/matchesPattern.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/validators/validate.js
+/frontend/dashboard/node_modules/@babel/types/lib/validators/validate.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/index.d.ts
+/frontend/dashboard/node_modules/@babel/types/lib/index.js
+/frontend/dashboard/node_modules/@babel/types/lib/index.js.flow
+/frontend/dashboard/node_modules/@babel/types/lib/index.js.map
+/frontend/dashboard/node_modules/@babel/types/lib/index-legacy.d.ts
+/frontend/dashboard/node_modules/@babel/types/LICENSE
+/frontend/dashboard/node_modules/@babel/types/package.json
+/frontend/dashboard/node_modules/@babel/types/README.md
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/bundles/tinycolor.umd.min.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/bundles/tinycolor.umd.min.js.map
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/conversion.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/css-color-names.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/format-input.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/from-ratio.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/index.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/interfaces.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/public_api.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/random.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/readability.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/to-ms-filter.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/umd_api.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/module/util.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/conversion.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/conversion.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/css-color-names.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/css-color-names.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/format-input.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/format-input.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/from-ratio.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/from-ratio.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/index.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/index.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/interfaces.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/interfaces.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/public_api.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/public_api.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/random.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/random.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/readability.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/readability.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/to-ms-filter.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/to-ms-filter.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/umd_api.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/umd_api.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/util.d.ts
+/frontend/dashboard/node_modules/@ctrl/tinycolor/dist/util.js
+/frontend/dashboard/node_modules/@ctrl/tinycolor/LICENSE
+/frontend/dashboard/node_modules/@ctrl/tinycolor/package.json
+/frontend/dashboard/node_modules/@ctrl/tinycolor/README.md
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/build/plugin/exec.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/build/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/build/entry.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/build/index.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/deploy/plugin/ftp.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/deploy/plugin/nodeParams.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/deploy/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/deploy/index.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/dist/bezierCurve.map.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/dist/bezierCurve.min.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/exampleImgs/bezierCurve.png
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/exampleImgs/bezierCurveToPolyline.png
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/exampleImgs/polyline.png
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/exampleImgs/polylineToBezierCurve.png
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/exampleImgs/polylineToClosedBezierCurve.png
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/lib/core/bezierCurveToPolyline.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/lib/core/polylineToBezierCurve.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/lib/index.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/src/core/bezierCurveToPolyline.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/src/core/polylineToBezierCurve.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/src/index.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/test/index.js
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/test/mocha.opts
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/.babelrc
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/.travis.yml
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/CHANGELOG.md
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/LICENSE
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/package.json
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/README.md
+/frontend/dashboard/node_modules/@jiaminghi/bezier-curve/README_EN.md
+/frontend/dashboard/node_modules/@jiaminghi/c-render/build/plugin/exec.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/build/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/build/entry.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/build/index.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/deploy/plugin/ftp.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/deploy/plugin/nodeParams.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/deploy/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/deploy/index.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/dist/crender.map.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/dist/crender.min.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/class/crender.class.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/class/graph.class.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/class/style.class.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/config/graphs.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/plugin/canvas.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/plugin/util.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/lib/index.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/class/crender.class.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/class/graph.class.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/class/style.class.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/config/graphs.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/plugin/canvas.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/plugin/util.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/src/index.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/arc.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/bezierCurve.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/bezierCurveClosed.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/circle.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/clearArea.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/clone.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/delAllGraph.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/delGraph.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/drawAllGraph.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/ellipse.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/extendNewGraph.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/launchAnimation.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/polyline.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/polylineClosed.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/rect.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/regPolygon.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/ring.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/sector.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/smoothline.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/smoothlineClosed.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/funtion/text.html
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/unit/util.js
+/frontend/dashboard/node_modules/@jiaminghi/c-render/test/mocha.opts
+/frontend/dashboard/node_modules/@jiaminghi/c-render/.babelrc
+/frontend/dashboard/node_modules/@jiaminghi/c-render/.travis.yml
+/frontend/dashboard/node_modules/@jiaminghi/c-render/CHANGELOG.md
+/frontend/dashboard/node_modules/@jiaminghi/c-render/LICENSE
+/frontend/dashboard/node_modules/@jiaminghi/c-render/package.json
+/frontend/dashboard/node_modules/@jiaminghi/c-render/README.md
+/frontend/dashboard/node_modules/@jiaminghi/c-render/README_EN.md
+/frontend/dashboard/node_modules/@jiaminghi/charts/build/plugin/exec.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/build/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/build/entry.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/build/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/deploy/plugin/ftp.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/deploy/plugin/nodeParams.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/deploy/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/deploy/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/dist/charts.map.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/class/charts.class.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/class/updater.class.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/axis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/bar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/color.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/gauge.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/grid.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/legend.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/line.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/pie.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/radar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/radarAxis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/config/title.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/axis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/bar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/gauge.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/grid.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/legend.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/line.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/mergeColor.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/pie.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/radar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/radarAxis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/core/title.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/extend/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/util/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/lib/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/class/charts.class.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/class/updater.class.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/axis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/bar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/color.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/gauge.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/grid.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/legend.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/line.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/pie.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/radar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/radarAxis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/config/title.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/axis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/bar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/gauge.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/grid.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/legend.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/line.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/mergeColor.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/pie.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/radar.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/radarAxis.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/core/title.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/extend/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/util/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/src/index.js
+/frontend/dashboard/node_modules/@jiaminghi/charts/.babelrc
+/frontend/dashboard/node_modules/@jiaminghi/charts/CHANGELOG.md
+/frontend/dashboard/node_modules/@jiaminghi/charts/LICENSE
+/frontend/dashboard/node_modules/@jiaminghi/charts/package.json
+/frontend/dashboard/node_modules/@jiaminghi/charts/README.md
+/frontend/dashboard/node_modules/@jiaminghi/charts/README_EN.md
+/frontend/dashboard/node_modules/@jiaminghi/color/cjs/config/keywords.js
+/frontend/dashboard/node_modules/@jiaminghi/color/cjs/types/index.js
+/frontend/dashboard/node_modules/@jiaminghi/color/cjs/index.js
+/frontend/dashboard/node_modules/@jiaminghi/color/es/config/keywords.d.ts
+/frontend/dashboard/node_modules/@jiaminghi/color/es/config/keywords.mjs
+/frontend/dashboard/node_modules/@jiaminghi/color/es/types/index.d.ts
+/frontend/dashboard/node_modules/@jiaminghi/color/es/types/index.mjs
+/frontend/dashboard/node_modules/@jiaminghi/color/es/index.d.ts
+/frontend/dashboard/node_modules/@jiaminghi/color/es/index.mjs
+/frontend/dashboard/node_modules/@jiaminghi/color/umd/color.umd.js
+/frontend/dashboard/node_modules/@jiaminghi/color/umd/color.umd.js.map
+/frontend/dashboard/node_modules/@jiaminghi/color/LICENSE
+/frontend/dashboard/node_modules/@jiaminghi/color/package.json
+/frontend/dashboard/node_modules/@jiaminghi/color/README.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/.github/ISSUE_TEMPLATE/bug_report.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/.github/ISSUE_TEMPLATE/feature_request.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/.github/ISSUE_TEMPLATE/new_component_request.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/.github/PULL_REQUEST_TEMPLATE.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/build/plugin/exec.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/build/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/build/entry.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/build/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/build/rollup.config.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/build/rollup.terser.config.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/demoImg/construction-data.jpg
+/frontend/dashboard/node_modules/@jiaminghi/data-view/demoImg/electronic-file.jpg
+/frontend/dashboard/node_modules/@jiaminghi/data-view/demoImg/manage-desk.jpg
+/frontend/dashboard/node_modules/@jiaminghi/data-view/deploy/plugin/ftp.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/deploy/plugin/nodeParams.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/deploy/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/deploy/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/dist/datav.map.vue.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/dist/datav.min.vue.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/activeRingChart/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/activeRingChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/activeRingChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox1/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox1/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox1/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox2/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox2/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox2/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox3/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox3/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox3/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox4/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox4/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox4/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox5/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox5/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox5/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox6/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox6/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox6/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox7/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox7/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox7/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox8/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox8/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox8/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox9/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox9/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox9/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox10/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox10/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox10/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox11/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox11/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox11/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox12/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox12/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox12/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox13/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox13/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/borderBox13/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/capsuleChart/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/capsuleChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/capsuleChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/charts/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/charts/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/charts/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/conicalColumnChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration1/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration1/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration1/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration2/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration2/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration2/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration3/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration3/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration4/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration4/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration4/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration5/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration5/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration5/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration6/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration6/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration6/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration7/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration7/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration7/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration8/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration8/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration8/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration9/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration9/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration9/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration10/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration10/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration10/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration11/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration11/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration11/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration12/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration12/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/decoration12/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/digitalFlop/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/digitalFlop/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/digitalFlop/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/flylineChart/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/flylineChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/flylineChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/flylineChartEnhanced/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/fullScreenContainer/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/loading/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/loading/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/loading/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/percentPond/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/percentPond/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/percentPond/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/scrollBoard/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/scrollBoard/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/scrollBoard/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/scrollRankingBoard/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/src/main.css
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/components/waterLevelPond/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/mixin/autoResize.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/util/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/lib/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/activeRingChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/activeRingChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox1/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox1/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox2/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox2/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox3/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox3/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox4/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox4/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox5/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox5/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox6/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox6/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox7/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox7/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox8/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox8/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox9/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox9/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox10/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox10/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox11/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox11/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox12/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox12/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox13/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/borderBox13/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/capsuleChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/capsuleChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/charts/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/charts/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/conicalColumnChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/conicalColumnChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration1/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration1/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration2/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration2/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration3/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration3/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration4/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration4/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration5/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration5/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration6/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration6/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration7/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration7/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration8/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration8/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration9/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration9/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration10/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration10/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration11/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration11/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration12/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/decoration12/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/digitalFlop/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/digitalFlop/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/flylineChart/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/flylineChart/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/flylineChartEnhanced/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/flylineChartEnhanced/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/fullScreenContainer/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/fullScreenContainer/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/loading/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/loading/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/percentPond/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/percentPond/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/scrollBoard/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/scrollBoard/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/scrollRankingBoard/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/scrollRankingBoard/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/waterLevelPond/src/main.vue
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/components/waterLevelPond/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/mixin/autoResize.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/util/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/src/index.js
+/frontend/dashboard/node_modules/@jiaminghi/data-view/CHANGELOG.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/icon.png
+/frontend/dashboard/node_modules/@jiaminghi/data-view/LICENSE
+/frontend/dashboard/node_modules/@jiaminghi/data-view/package.json
+/frontend/dashboard/node_modules/@jiaminghi/data-view/QQGroup.png
+/frontend/dashboard/node_modules/@jiaminghi/data-view/README.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/README_EN.md
+/frontend/dashboard/node_modules/@jiaminghi/data-view/umdExample.html
+/frontend/dashboard/node_modules/@jiaminghi/transition/build/plugin/exec.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/build/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/build/entry.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/build/index.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/deploy/plugin/ftp.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/deploy/plugin/nodeParams.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/deploy/plugin/print.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/deploy/index.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/dist/transition.map.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/dist/transition.min.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInBack.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInBounce.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInCubic.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInElastic.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutBack.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutBounce.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutCubic.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutElastic.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutQuad.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutQuart.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutQuint.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInOutSine.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInQuad.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInQuart.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInQuint.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeInSine.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutBack.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutBounce.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutCubic.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutElastic.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutQuad.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutQuart.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutQuint.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/easeOutSine.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/exampleImg/linear.gif
+/frontend/dashboard/node_modules/@jiaminghi/transition/lib/config/curves.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/lib/index.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/src/config/curves.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/src/index.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/test/index.js
+/frontend/dashboard/node_modules/@jiaminghi/transition/test/mocha.opts
+/frontend/dashboard/node_modules/@jiaminghi/transition/.babelrc
+/frontend/dashboard/node_modules/@jiaminghi/transition/.travis.yml
+/frontend/dashboard/node_modules/@jiaminghi/transition/CHANGELOG.md
+/frontend/dashboard/node_modules/@jiaminghi/transition/LICENSE
+/frontend/dashboard/node_modules/@jiaminghi/transition/package.json
+/frontend/dashboard/node_modules/@jiaminghi/transition/README.md
+/frontend/dashboard/node_modules/@jiaminghi/transition/README_EN.md
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/src/scopes.ts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/src/strings.ts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/src/vlq.ts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/LICENSE
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/package.json
+/frontend/dashboard/node_modules/@jridgewell/sourcemap-codec/README.md
+/frontend/dashboard/node_modules/@simonwep/pickr/.github/ISSUE_TEMPLATE/bug_report.md
+/frontend/dashboard/node_modules/@simonwep/pickr/.github/ISSUE_TEMPLATE/misc.md
+/frontend/dashboard/node_modules/@simonwep/pickr/.github/ISSUE_TEMPLATE/question.md
+/frontend/dashboard/node_modules/@simonwep/pickr/.github/workflows/ci.yml
+/frontend/dashboard/node_modules/@simonwep/pickr/.github/CONTRIBUTING.md
+/frontend/dashboard/node_modules/@simonwep/pickr/.github/FUNDING.yml
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/themes/classic.min.css
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/themes/monolith.min.css
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/themes/nano.min.css
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/pickr.es5.min.js
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/pickr.es5.min.js.map
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/pickr.min.js
+/frontend/dashboard/node_modules/@simonwep/pickr/dist/pickr.min.js.map
+/frontend/dashboard/node_modules/@simonwep/pickr/scripts/build.js
+/frontend/dashboard/node_modules/@simonwep/pickr/scripts/bundles.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/libs/moveable.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/libs/selectable.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/utils/color.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/utils/hsvacolor.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/utils/utils.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/pickr.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/js/template.js
+/frontend/dashboard/node_modules/@simonwep/pickr/src/scss/lib/_mixins.scss
+/frontend/dashboard/node_modules/@simonwep/pickr/src/scss/lib/_variables.scss
+/frontend/dashboard/node_modules/@simonwep/pickr/src/scss/themes/classic.scss
+/frontend/dashboard/node_modules/@simonwep/pickr/src/scss/themes/monolith.scss
+/frontend/dashboard/node_modules/@simonwep/pickr/src/scss/themes/nano.scss
+/frontend/dashboard/node_modules/@simonwep/pickr/src/scss/base.scss
+/frontend/dashboard/node_modules/@simonwep/pickr/types/pickr.d.ts
+/frontend/dashboard/node_modules/@simonwep/pickr/www/favicon.png
+/frontend/dashboard/node_modules/@simonwep/pickr/www/index.css
+/frontend/dashboard/node_modules/@simonwep/pickr/www/index.js
+/frontend/dashboard/node_modules/@simonwep/pickr/.editorconfig
+/frontend/dashboard/node_modules/@simonwep/pickr/.eslintrc
+/frontend/dashboard/node_modules/@simonwep/pickr/.gitpod.yml
+/frontend/dashboard/node_modules/@simonwep/pickr/EXAMPLES.md
+/frontend/dashboard/node_modules/@simonwep/pickr/index.html
+/frontend/dashboard/node_modules/@simonwep/pickr/LICENSE
+/frontend/dashboard/node_modules/@simonwep/pickr/package.json
+/frontend/dashboard/node_modules/@simonwep/pickr/README.md
+/frontend/dashboard/node_modules/@simonwep/pickr/webpack.config.js
+/frontend/dashboard/node_modules/@types/node/assert/strict.d.ts
+/frontend/dashboard/node_modules/@types/node/compatibility/disposable.d.ts
+/frontend/dashboard/node_modules/@types/node/compatibility/index.d.ts
+/frontend/dashboard/node_modules/@types/node/compatibility/indexable.d.ts
+/frontend/dashboard/node_modules/@types/node/compatibility/iterators.d.ts
+/frontend/dashboard/node_modules/@types/node/dns/promises.d.ts
+/frontend/dashboard/node_modules/@types/node/fs/promises.d.ts
+/frontend/dashboard/node_modules/@types/node/readline/promises.d.ts
+/frontend/dashboard/node_modules/@types/node/stream/consumers.d.ts
+/frontend/dashboard/node_modules/@types/node/stream/promises.d.ts
+/frontend/dashboard/node_modules/@types/node/stream/web.d.ts
+/frontend/dashboard/node_modules/@types/node/timers/promises.d.ts
+/frontend/dashboard/node_modules/@types/node/ts5.6/buffer.buffer.d.ts
+/frontend/dashboard/node_modules/@types/node/ts5.6/globals.typedarray.d.ts
+/frontend/dashboard/node_modules/@types/node/ts5.6/index.d.ts
+/frontend/dashboard/node_modules/@types/node/assert.d.ts
+/frontend/dashboard/node_modules/@types/node/async_hooks.d.ts
+/frontend/dashboard/node_modules/@types/node/buffer.buffer.d.ts
+/frontend/dashboard/node_modules/@types/node/buffer.d.ts
+/frontend/dashboard/node_modules/@types/node/child_process.d.ts
+/frontend/dashboard/node_modules/@types/node/cluster.d.ts
+/frontend/dashboard/node_modules/@types/node/console.d.ts
+/frontend/dashboard/node_modules/@types/node/constants.d.ts
+/frontend/dashboard/node_modules/@types/node/crypto.d.ts
+/frontend/dashboard/node_modules/@types/node/dgram.d.ts
+/frontend/dashboard/node_modules/@types/node/diagnostics_channel.d.ts
+/frontend/dashboard/node_modules/@types/node/dns.d.ts
+/frontend/dashboard/node_modules/@types/node/dom-events.d.ts
+/frontend/dashboard/node_modules/@types/node/domain.d.ts
+/frontend/dashboard/node_modules/@types/node/events.d.ts
+/frontend/dashboard/node_modules/@types/node/fs.d.ts
+/frontend/dashboard/node_modules/@types/node/globals.d.ts
+/frontend/dashboard/node_modules/@types/node/globals.typedarray.d.ts
+/frontend/dashboard/node_modules/@types/node/http.d.ts
+/frontend/dashboard/node_modules/@types/node/http2.d.ts
+/frontend/dashboard/node_modules/@types/node/https.d.ts
+/frontend/dashboard/node_modules/@types/node/index.d.ts
+/frontend/dashboard/node_modules/@types/node/inspector.d.ts
+/frontend/dashboard/node_modules/@types/node/LICENSE
+/frontend/dashboard/node_modules/@types/node/module.d.ts
+/frontend/dashboard/node_modules/@types/node/net.d.ts
+/frontend/dashboard/node_modules/@types/node/os.d.ts
+/frontend/dashboard/node_modules/@types/node/package.json
+/frontend/dashboard/node_modules/@types/node/path.d.ts
+/frontend/dashboard/node_modules/@types/node/perf_hooks.d.ts
+/frontend/dashboard/node_modules/@types/node/process.d.ts
+/frontend/dashboard/node_modules/@types/node/punycode.d.ts
+/frontend/dashboard/node_modules/@types/node/querystring.d.ts
+/frontend/dashboard/node_modules/@types/node/readline.d.ts
+/frontend/dashboard/node_modules/@types/node/README.md
+/frontend/dashboard/node_modules/@types/node/repl.d.ts
+/frontend/dashboard/node_modules/@types/node/stream.d.ts
+/frontend/dashboard/node_modules/@types/node/string_decoder.d.ts
+/frontend/dashboard/node_modules/@types/node/test.d.ts
+/frontend/dashboard/node_modules/@types/node/timers.d.ts
+/frontend/dashboard/node_modules/@types/node/tls.d.ts
+/frontend/dashboard/node_modules/@types/node/trace_events.d.ts
+/frontend/dashboard/node_modules/@types/node/tty.d.ts
+/frontend/dashboard/node_modules/@types/node/url.d.ts
+/frontend/dashboard/node_modules/@types/node/util.d.ts
+/frontend/dashboard/node_modules/@types/node/v8.d.ts
+/frontend/dashboard/node_modules/@types/node/vm.d.ts
+/frontend/dashboard/node_modules/@types/node/wasi.d.ts
+/frontend/dashboard/node_modules/@types/node/worker_threads.d.ts
+/frontend/dashboard/node_modules/@types/node/zlib.d.ts
+/frontend/dashboard/node_modules/@vitejs/plugin-vue/dist/index.cjs
+/frontend/dashboard/node_modules/@vitejs/plugin-vue/dist/index.d.ts
+/frontend/dashboard/node_modules/@vitejs/plugin-vue/dist/index.mjs
+/frontend/dashboard/node_modules/@vitejs/plugin-vue/LICENSE
+/frontend/dashboard/node_modules/@vitejs/plugin-vue/package.json
+/frontend/dashboard/node_modules/@vitejs/plugin-vue/README.md
+/frontend/dashboard/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js
+/frontend/dashboard/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/compiler-core/dist/compiler-core.d.ts
+/frontend/dashboard/node_modules/@vue/compiler-core/dist/compiler-core.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/compiler-core/index.js
+/frontend/dashboard/node_modules/@vue/compiler-core/LICENSE
+/frontend/dashboard/node_modules/@vue/compiler-core/package.json
+/frontend/dashboard/node_modules/@vue/compiler-core/README.md
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-browser.prod.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.global.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/dist/compiler-dom.global.prod.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/index.js
+/frontend/dashboard/node_modules/@vue/compiler-dom/LICENSE
+/frontend/dashboard/node_modules/@vue/compiler-dom/package.json
+/frontend/dashboard/node_modules/@vue/compiler-dom/README.md
+/frontend/dashboard/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js
+/frontend/dashboard/node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts
+/frontend/dashboard/node_modules/@vue/compiler-sfc/dist/compiler-sfc.esm-browser.js
+/frontend/dashboard/node_modules/@vue/compiler-sfc/LICENSE
+/frontend/dashboard/node_modules/@vue/compiler-sfc/package.json
+/frontend/dashboard/node_modules/@vue/compiler-sfc/README.md
+/frontend/dashboard/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js
+/frontend/dashboard/node_modules/@vue/compiler-ssr/dist/compiler-ssr.d.ts
+/frontend/dashboard/node_modules/@vue/compiler-ssr/LICENSE
+/frontend/dashboard/node_modules/@vue/compiler-ssr/package.json
+/frontend/dashboard/node_modules/@vue/compiler-ssr/README.md
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/api.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/app.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/component.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/context.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/index.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/api/util.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/const.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/env.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/index.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/plugin.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/proxy.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/cjs/time.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/api.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/api.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/app.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/app.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/component.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/component.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/context.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/context.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/hooks.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/hooks.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/index.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/index.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/util.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/api/util.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/const.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/const.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/env.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/env.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/index.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/index.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/plugin.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/plugin.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/proxy.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/proxy.js
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/time.d.ts
+/frontend/dashboard/node_modules/@vue/devtools-api/lib/esm/time.js
+/frontend/dashboard/node_modules/@vue/devtools-api/package.json
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.cjs.js
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.d.ts
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.esm-browser.js
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.esm-browser.prod.js
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.global.js
+/frontend/dashboard/node_modules/@vue/reactivity/dist/reactivity.global.prod.js
+/frontend/dashboard/node_modules/@vue/reactivity/index.js
+/frontend/dashboard/node_modules/@vue/reactivity/LICENSE
+/frontend/dashboard/node_modules/@vue/reactivity/package.json
+/frontend/dashboard/node_modules/@vue/reactivity/README.md
+/frontend/dashboard/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js
+/frontend/dashboard/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/runtime-core/dist/runtime-core.d.ts
+/frontend/dashboard/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/runtime-core/index.js
+/frontend/dashboard/node_modules/@vue/runtime-core/LICENSE
+/frontend/dashboard/node_modules/@vue/runtime-core/package.json
+/frontend/dashboard/node_modules/@vue/runtime-core/README.md
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.prod.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.global.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/dist/runtime-dom.global.prod.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/index.js
+/frontend/dashboard/node_modules/@vue/runtime-dom/LICENSE
+/frontend/dashboard/node_modules/@vue/runtime-dom/package.json
+/frontend/dashboard/node_modules/@vue/runtime-dom/README.md
+/frontend/dashboard/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js
+/frontend/dashboard/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/server-renderer/dist/server-renderer.d.ts
+/frontend/dashboard/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.js
+/frontend/dashboard/node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.prod.js
+/frontend/dashboard/node_modules/@vue/server-renderer/dist/server-renderer.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/server-renderer/index.js
+/frontend/dashboard/node_modules/@vue/server-renderer/LICENSE
+/frontend/dashboard/node_modules/@vue/server-renderer/package.json
+/frontend/dashboard/node_modules/@vue/server-renderer/README.md
+/frontend/dashboard/node_modules/@vue/shared/dist/shared.cjs.js
+/frontend/dashboard/node_modules/@vue/shared/dist/shared.cjs.prod.js
+/frontend/dashboard/node_modules/@vue/shared/dist/shared.d.ts
+/frontend/dashboard/node_modules/@vue/shared/dist/shared.esm-bundler.js
+/frontend/dashboard/node_modules/@vue/shared/index.js
+/frontend/dashboard/node_modules/@vue/shared/LICENSE
+/frontend/dashboard/node_modules/@vue/shared/package.json
+/frontend/dashboard/node_modules/@vue/shared/README.md
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.compact.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.compact.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.compact.less
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.compact.min.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.compact.min.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.compact.min.js.LICENSE.txt
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.dark.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.dark.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.dark.less
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.dark.min.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.dark.min.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.dark.min.js.LICENSE.txt
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.js.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.less
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.min.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.min.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.min.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.min.js.LICENSE.txt
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.min.js.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.variable.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.variable.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.variable.less
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.variable.min.css
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.variable.min.css.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd.variable.min.js.LICENSE.txt
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd-with-locales.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd-with-locales.js.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd-with-locales.min.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd-with-locales.min.js.LICENSE.txt
+/frontend/dashboard/node_modules/ant-design-vue/dist/antd-with-locales.min.js.map
+/frontend/dashboard/node_modules/ant-design-vue/dist/compact-theme.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/dark-theme.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/default-theme.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/theme.js
+/frontend/dashboard/node_modules/ant-design-vue/dist/variable-theme.js
+/frontend/dashboard/node_modules/ant-design-vue/es/__tests__/util/domHook.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/__tests__/util/domHook.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/__mocks__/Portal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/__mocks__/Portal.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/copy-to-clipboard/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/copy-to-clipboard/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/copy-to-clipboard/toggle-selection.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/copy-to-clipboard/toggle-selection.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/css-animation/Event.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/css-animation/Event.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/css-animation/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/css-animation/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/_configurable.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/_configurable.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/is.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/is.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/resolveUnref.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/resolveUnref.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/tryOnMounted.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/tryOnMounted.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/tryOnScopeDispose.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/tryOnScopeDispose.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/types.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/types.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/unrefElement.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/unrefElement.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/useElementSize.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/useElementSize.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/useResizeObserver.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/useResizeObserver.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/useSupported.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/_vueuse/useSupported.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useBreakpoint.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useBreakpoint.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useConfigInject.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useConfigInject.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useDestroyed.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useDestroyed.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useFlexGapSupport.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useFlexGapSupport.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useLayoutState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useLayoutState.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useMemo.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useMemo.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useMergedState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useMergedState.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useRefs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useRefs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useSize.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useSize.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/hooks/useState.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/props-util/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/props-util/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/props-util/initDefaultProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/props-util/initDefaultProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/vue-types/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/vue-types/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/ActionButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/ActionButton.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/antInputDirective.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/antInputDirective.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/BaseInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/BaseInput.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/BaseMixin.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/BaseMixin.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/canUseDom.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/canUseDom.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/classNames.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/classNames.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/collapseMotion.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/collapseMotion.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/colors.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/colors.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/component-classes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/component-classes.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/createRef.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/createRef.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/debouncedWatch.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/debouncedWatch.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/eagerComputed.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/eagerComputed.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/easings.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/easings.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/env.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/env.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/EventInterface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/EventInterface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/firstNotUndefined.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/firstNotUndefined.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getLocale.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getLocale.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getRequestAnimationFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getRequestAnimationFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getScroll.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getScroll.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getScrollBarSize.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/getScrollBarSize.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isCssAnimationSupported.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isCssAnimationSupported.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isMobile.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isMobile.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isNumeric.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isNumeric.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isValid.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isValid.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isValidValue.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/isValidValue.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/json2mq.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/json2mq.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/KeyCode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/KeyCode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/omit.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/omit.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/pickAttrs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/pickAttrs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/Portal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/Portal.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/PortalWrapper.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/PortalWrapper.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/raf.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/raf.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/reactivePick.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/reactivePick.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/requestAnimationTimeout.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/requestAnimationTimeout.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/responsiveObserve.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/responsiveObserve.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/scrollTo.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/scrollTo.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/setStyle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/setStyle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/shallowequal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/shallowequal.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/styleChecker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/styleChecker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/supportsPassive.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/supportsPassive.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/switchScrollingEffect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/switchScrollingEffect.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/throttleByAnimationFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/throttleByAnimationFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/toReactive.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/toReactive.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/transButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/transButton.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/transition.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/transition.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/triggerEvent.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/triggerEvent.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/type.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/type.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/unreachableException.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/unreachableException.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/vnode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/vnode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/warning.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/warning.js
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/wave.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/_util/wave.js
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/affix/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/alert/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/Anchor.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/Anchor.js
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/AnchorLink.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/AnchorLink.js
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/anchor/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/OptGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/OptGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/Option.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/auto-complete/Option.js
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/group.less
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/Avatar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/Avatar.js
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/avatar/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/style/responsive.less
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/back-top/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/ribbon.less
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/Badge.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/Badge.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/Ribbon.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/Ribbon.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/ScrollNumber.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/ScrollNumber.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/SingleNumber.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/SingleNumber.js
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/badge/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/Breadcrumb.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/Breadcrumb.js
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/BreadcrumbItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/BreadcrumbItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/BreadcrumbSeparator.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/BreadcrumbSeparator.js
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/breadcrumb/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/es/button/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/button/button.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/button/button.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/button-group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/button/button-group.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/buttonTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/button/buttonTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/button/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/button/LoadingIcon.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/button/LoadingIcon.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/date-fns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/date-fns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/generateCalendar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/generateCalendar.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/Header.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/Header.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/calendar/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/card/style/size.less
+/frontend/dashboard/node_modules/ant-design-vue/es/card/Card.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/card/Card.js
+/frontend/dashboard/node_modules/ant-design-vue/es/card/Grid.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/card/Grid.js
+/frontend/dashboard/node_modules/ant-design-vue/es/card/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/card/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/card/Meta.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/card/Meta.js
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/carousel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/cascader/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/Checkbox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/Checkbox.js
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/checkbox/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/col/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/col/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/col/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/col/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/col/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/Collapse.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/Collapse.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/CollapsePanel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/CollapsePanel.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/commonProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/commonProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/PanelContent.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/collapse/PanelContent.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/ku_KU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/ku_KU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/ColorPicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/ColorPicker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/color-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/comment/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/cssVariables.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/cssVariables.js
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/renderEmpty.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/config-provider/renderEmpty.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/generateRangePicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/generateRangePicker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/generateSinglePicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/generateSinglePicker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/generatePicker/props.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/panel.less
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/date-fns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/date-fns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/PickerButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/PickerButton.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/PickerTag.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/PickerTag.js
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/date-picker/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/Cell.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/Cell.js
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/Row.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/descriptions/Row.js
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/divider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/drawer.less
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/drawer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/style/status.less
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/dropdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/dropdown.js
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/dropdown-button.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/dropdown-button.js
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/dropdown/props.js
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/empty.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/empty.js
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/simple.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/empty/simple.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/components.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/horizontal.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/inline.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/status.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/style/vertical.less
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/asyncUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/asyncUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/messages.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/messages.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/typeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/typeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/useDebounce.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/useDebounce.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/validateUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/validateUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/ErrorList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/ErrorList.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/Form.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/Form.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItemContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItemContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItemInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItemInput.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItemLabel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/FormItemLabel.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/form/useForm.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/form/useForm.js
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/Col.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/Col.js
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/Row.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/grid/Row.js
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/icon/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/image/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/image/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/image/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/image/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/image/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/image/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/image/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/image/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/image/PreviewGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/image/PreviewGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/affix.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/allow-clear.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/IE11.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/style/search-input.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input/calculateNodeHeight.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/calculateNodeHeight.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/ClearableLabeledInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/ClearableLabeledInput.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Input.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Input.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/inputProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/inputProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Password.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Password.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/ResizableTextArea.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/ResizableTextArea.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Search.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/Search.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/TextArea.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/TextArea.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/hooks/useCursor.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/hooks/useCursor.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/hooks/useFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/hooks/useFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/utils/MiniDecimal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/utils/MiniDecimal.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/utils/numberUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/utils/numberUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/utils/supportUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/utils/supportUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/InputNumber.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/InputNumber.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/StepHandler.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/src/StepHandler.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/affix.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/input-number/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/light.less
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/injectionKey.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/injectionKey.js
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/layout.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/layout.js
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/Sider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/layout/Sider.js
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/bordered.less
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/customize.less
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/responsive.less
+/frontend/dashboard/node_modules/ant-design-vue/es/list/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/list/contextKey.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/list/contextKey.js
+/frontend/dashboard/node_modules/ant-design-vue/es/list/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/list/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/list/Item.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/list/Item.js
+/frontend/dashboard/node_modules/ant-design-vue/es/list/ItemMeta.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/list/ItemMeta.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/default.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/default.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hy_AM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/hy_AM.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ku_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ku_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ne_NP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ne_NP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/zh_HK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/zh_HK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/default.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/default.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hy_AM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/hy_AM.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ku_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ku_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/LocaleReceiver.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/LocaleReceiver.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ne-NP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ne-NP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ne_NP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ne_NP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/locale-provider/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/mentions/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/hooks/useDirectionStyle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/hooks/useDirectionStyle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/hooks/useKeyPath.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/hooks/useKeyPath.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/hooks/useMenuContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/hooks/useMenuContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/Divider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/Divider.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/InlineSubMenuList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/InlineSubMenuList.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/ItemGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/ItemGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/Menu.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/Menu.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/MenuItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/MenuItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/PopupTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/PopupTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/SubMenu.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/SubMenu.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/SubMenuList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/src/SubMenuList.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/dark.less
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/light.less
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/style/status.less
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/menu/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/message/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/message/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/message/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/confirm.less
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/modal.less
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/confirm.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/confirm.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/ConfirmDialog.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/ConfirmDialog.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/locale.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/locale.js
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/Modal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/modal/Modal.js
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/notification/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/page-header/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/MiniSelect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/MiniSelect.js
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/Pagination.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/pagination/Pagination.js
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/popconfirm/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/popover/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/Circle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/Circle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/Line.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/Line.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/progress.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/progress.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/props.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/Steps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/Steps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/progress/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/Radio.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/Radio.js
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/RadioButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/radio/RadioButton.js
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/Star.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/Star.js
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/rate/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/result/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/result/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/result/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/result/noFound.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/result/noFound.js
+/frontend/dashboard/node_modules/ant-design-vue/es/result/serverError.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/result/serverError.js
+/frontend/dashboard/node_modules/ant-design-vue/es/result/unauthorized.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/result/unauthorized.js
+/frontend/dashboard/node_modules/ant-design-vue/es/row/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/row/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/row/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/row/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/row/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/multiple.less
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/select/style/single.less
+/frontend/dashboard/node_modules/ant-design-vue/es/select/utils/iconUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/select/utils/iconUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Avatar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Avatar.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Button.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Button.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Element.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Element.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Image.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Image.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Input.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Input.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Paragraph.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Paragraph.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Skeleton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Skeleton.js
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Title.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/skeleton/Title.js
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/SliderTooltip.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/slider/SliderTooltip.js
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/space/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/space/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/space/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/Spin.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/spin/Spin.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/Countdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/Countdown.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/Number.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/Number.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/Statistic.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/Statistic.js
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/statistic/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/custom-icon.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/label-placement.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/nav.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/progress.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/progress-dot.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/small.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/style/vertical.less
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/steps/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/style/color/bezierEasing.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/color/colorPalette.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/color/colors.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/color/tinyColor.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/motion/fade.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/motion/move.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/motion/other.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/motion/slide.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/motion/zoom.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/base.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/global.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/iconfont.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/core/motion.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/box.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/clearfix.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/compatibility.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/customize.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/iconfont.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/modal-mask.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/motion.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/operation-unit.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/reset.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/size.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/mixins/typography.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/themes/compact.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/themes/dark.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/themes/default.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/themes/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/themes/variable.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/compact.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/style/dark.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/default.css
+/frontend/dashboard/node_modules/ant-design-vue/es/style/default.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/style/variable.less
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/switch/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/FilterDropdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/FilterDropdown.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/FilterSearch.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/FilterSearch.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/FilterWrapper.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/FilterWrapper.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useFilter/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useColumns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useColumns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useLazyKVMap.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useLazyKVMap.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/usePagination.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/usePagination.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useSelection.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useSelection.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useSorter.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useSorter.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useTitleColumns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/hooks/useTitleColumns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/bordered.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/radius.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/resize.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/style/size.less
+/frontend/dashboard/node_modules/ant-design-vue/es/table/Column.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/Column.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/ColumnGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/ColumnGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/ExpandIcon.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/ExpandIcon.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/Table.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/Table.js
+/frontend/dashboard/node_modules/ant-design-vue/es/table/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/table/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useOffsets.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useOffsets.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useRaf.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useRaf.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useSyncState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useSyncState.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useTouchMove.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/hooks/useTouchMove.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/AddButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/AddButton.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/OperationNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/OperationNode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/TabNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabNavList/TabNode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabPanelList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabPanelList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabPanelList/TabPane.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabPanelList/TabPane.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/TabContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/Tabs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/src/Tabs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/card.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/dropdown.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/position.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/style/size.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tabs/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/CheckableTag.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/CheckableTag.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tag/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/date-fns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/date-fns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/time-picker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/time-picker/time-picker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/Timeline.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/Timeline.js
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/TimelineItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/timeline/TimelineItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/abstractTooltipProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/abstractTooltipProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/Tooltip.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tooltip/Tooltip.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/customize.less
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/list.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/list.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/ListBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/ListBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/ListItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/ListItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/operation.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/operation.js
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/search.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/transfer/search.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/directory.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/utils/dictUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/utils/dictUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/utils/dropIndicator.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/utils/dropIndicator.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/utils/iconUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/utils/iconUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/DirectoryTree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/DirectoryTree.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/Tree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree/Tree.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/tree-select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Base.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Base.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Editable.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Editable.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Link.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Link.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Paragraph.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Paragraph.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Text.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Text.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Title.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Title.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Typography.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/Typography.js
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/typography/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/UploadList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/UploadList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/UploadList/ListItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/UploadList/ListItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/Dragger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/Dragger.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/Upload.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/Upload.js
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/upload/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/hooks/useBuffer.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/hooks/useBuffer.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/Align.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/Align.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-align/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useDisplayValues.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useDisplayValues.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useEntities.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useEntities.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useMissingValues.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useMissingValues.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useSearchConfig.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useSearchConfig.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useSearchOptions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/hooks/useSearchOptions.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/Checkbox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/Checkbox.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/Column.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/Column.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/useActive.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/useActive.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/useKeyboard.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/OptionList/useKeyboard.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/utils/commonUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/utils/commonUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/utils/treeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/utils/treeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/Cascader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/Cascader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-cascader/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-checkbox/Checkbox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-checkbox/Checkbox.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/Content.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/Content.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/Dialog.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/Dialog.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/DialogWrap.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/DialogWrap.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/IDialogPropTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/IDialogPropTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/Mask.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/Mask.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dialog/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/DrawerChild.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/DrawerChild.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/DrawerWrapper.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/DrawerWrapper.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/IDrawerPropTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/IDrawerPropTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/src/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-drawer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dropdown/Dropdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dropdown/Dropdown.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dropdown/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dropdown/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dropdown/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-dropdown/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/hooks/useFrameSetState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/hooks/useFrameSetState.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/getFixScaleEleTransPosition.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/getFixScaleEleTransPosition.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/Image.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/Image.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/Preview.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/Preview.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/PreviewGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/src/PreviewGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-image/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/DropdownMenu.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/DropdownMenu.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/KeywordTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/KeywordTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/Mentions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/Mentions.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/MentionsContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/MentionsContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/mentionsProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/mentionsProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/Option.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/Option.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/src/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-mentions/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-notification/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-notification/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-notification/Notice.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-notification/Notice.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-notification/Notification.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-notification/Notification.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/Item.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/Item.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/Overflow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/Overflow.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/RawItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-overflow/RawItem.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/mm_MM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/mm_MM.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pa_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pa_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pb_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pb_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ug_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ug_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/KeyCode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/KeyCode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/Options.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/Options.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/Pager.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/Pager.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/Pagination.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-pagination/Pagination.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/dateFns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/dateFns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/generate/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useCellClassName.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useCellClassName.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useHoverValue.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useHoverValue.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useMergeProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useMergeProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/usePickerInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/usePickerInput.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useRangeDisabled.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useRangeDisabled.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useRangeViewDates.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useRangeViewDates.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useTextValueMapping.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useTextValueMapping.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useValueTexts.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/hooks/useValueTexts.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/es_MX.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/es_MX.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/mm_MM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/mm_MM.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ug_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ug_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/DateBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/DateBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/DateHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/DateHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatetimePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DatetimePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/DecadeHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/DecadePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/MonthBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/MonthBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/MonthHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/MonthPanel/MonthHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/QuarterPanel/QuarterHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeUnitColumn.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/TimePanel/TimeUnitColumn.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/WeekPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/WeekPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/YearBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/YearBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/YearHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/YearPanel/YearHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/Header.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/Header.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/PanelBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/panels/PanelBody.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/dateUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/dateUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/getExtraFooter.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/getExtraFooter.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/getRanges.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/getRanges.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/miscUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/miscUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/timeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/timeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/uiUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/uiUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/warnUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/utils/warnUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/PanelContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/PanelContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/Picker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/Picker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/PickerPanel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/PickerPanel.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/PickerTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/PickerTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/RangeContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/RangeContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/RangePicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-picker/RangePicker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/Circle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/Circle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/common.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/common.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/Line.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/Line.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/types.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/src/types.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-progress/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-resize-observer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-resize-observer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useBaseProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useBaseProps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useCache.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useCache.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useDelayReset.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useDelayReset.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useFilterOptions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useFilterOptions.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useId.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useId.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useLock.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useLock.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useOptions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useOptions.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useSelectTriggerControl.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/hooks/useSelectTriggerControl.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/Input.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/Input.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/MultipleSelector.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/MultipleSelector.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/SingleSelector.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Selector/SingleSelector.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/commonUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/commonUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/keyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/keyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/legacyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/legacyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/platformUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/platformUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/warningPropsUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/utils/warningPropsUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/BaseSelect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/BaseSelect.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/OptGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/OptGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Option.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Option.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/OptionList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/OptionList.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Select.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/Select.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/SelectContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/SelectContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/SelectTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/SelectTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/TransBtn.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-select/TransBtn.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/utils/innerSliderUtils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/utils/innerSliderUtils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/arrows.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/arrows.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/default-props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/default-props.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/dots.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/dots.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/initial-state.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/initial-state.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/inner-slider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/inner-slider.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/slider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/slider.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/track.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slick/track.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/createSlider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/createSlider.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/Marks.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/Marks.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/Steps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/Steps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/Track.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/common/Track.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/Handle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/Handle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/Range.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/Range.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/Slider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/Slider.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/src/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-slider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-steps/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-steps/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-steps/Step.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-steps/Step.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-steps/Steps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-steps/Steps.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/BodyRow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/BodyRow.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/ExpandedRow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/ExpandedRow.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/MeasureCell.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Body/MeasureCell.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Cell/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Cell/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/BodyContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/BodyContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/ExpandedRowContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/ExpandedRowContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/HoverContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/HoverContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/ResizeContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/ResizeContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/StickyContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/StickyContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/SummaryContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/SummaryContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/TableContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/context/TableContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/FixedHolder/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/FixedHolder/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/Cell.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/Cell.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/Row.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/Row.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/Summary.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Footer/Summary.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Header/DragHandle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Header/DragHandle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Header/Header.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Header/Header.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Header/HeaderRow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Header/HeaderRow.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useColumns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useColumns.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useFlattenRecords.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useFlattenRecords.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useSticky.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useSticky.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useStickyOffsets.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/hooks/useStickyOffsets.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Panel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Panel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/sugar/Column.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/sugar/Column.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/sugar/ColumnGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/sugar/ColumnGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/expandUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/expandUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/fixUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/fixUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/legacyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/legacyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/ColGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/ColGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/constant.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/constant.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/stickyScrollBar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/stickyScrollBar.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Table.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-table/Table.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/src/Content.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/src/Content.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/src/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/src/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/src/Tooltip.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/src/Tooltip.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tooltip/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/utils/conductUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/utils/conductUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/utils/diffUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/utils/diffUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/utils/treeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/utils/treeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/contextTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/contextTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/DropIndicator.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/DropIndicator.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/Indent.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/Indent.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/MotionTreeNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/MotionTreeNode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/NodeList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/NodeList.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/props.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/Tree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/Tree.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/TreeNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/TreeNode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/useMaxLevel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/useMaxLevel.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree/util.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useCache.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useCache.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useCheckedKeys.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useCheckedKeys.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useDataEntities.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useDataEntities.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useFilterTreeData.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useFilterTreeData.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useTreeData.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/hooks/useTreeData.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/legacyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/legacyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/strategyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/strategyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/warningPropsUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/utils/warningPropsUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/LegacyContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/LegacyContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/OptionList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/OptionList.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/TreeNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/TreeNode.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/TreeSelect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/TreeSelect.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/TreeSelectContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-tree-select/TreeSelectContext.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/Mask.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/Mask.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/MobilePopupInner.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/MobilePopupInner.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/PopupInner.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/PopupInner.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/useStretchStyle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/useStretchStyle.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/useVisibleStatus.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Popup/useVisibleStatus.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/utils/alignUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/utils/alignUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/utils/motionUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/utils/motionUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/context.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Trigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-trigger/Trigger.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/AjaxUploader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/AjaxUploader.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/attr-accept.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/attr-accept.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/request.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/request.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/traverseFileTree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/traverseFileTree.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/uid.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/uid.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/Upload.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-upload/Upload.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Children/toArray.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Children/toArray.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/addEventListener.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/addEventListener.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/class.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/class.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/contains.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/contains.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/css.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/dynamicCSS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/dynamicCSS.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/isVisible.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/isVisible.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/scrollLocker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/Dom/scrollLocker.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/devWarning.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/devWarning.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/get.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/get.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/isMobile.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/isMobile.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/set.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/set.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/warning.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-util/warning.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useFrameWheel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useFrameWheel.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useHeights.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useHeights.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useMobileTouchMove.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useMobileTouchMove.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useOriginScroll.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useOriginScroll.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useScrollTo.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/hooks/useScrollTo.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/utils/algorithmUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/utils/algorithmUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/utils/isFirefox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/utils/isFirefox.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/utils/itemUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/utils/itemUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/Filler.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/Filler.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/Item.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/Item.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/List.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/List.js
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/ScrollBar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/vc-virtual-list/ScrollBar.js
+/frontend/dashboard/node_modules/ant-design-vue/es/version/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/es/version/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/version/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/version/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/version/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/version/version.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/version/version.js
+/frontend/dashboard/node_modules/ant-design-vue/es/components.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/components.js
+/frontend/dashboard/node_modules/ant-design-vue/es/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/index.js
+/frontend/dashboard/node_modules/ant-design-vue/es/style.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/es/style.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/__tests__/util/domHook.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/__tests__/util/domHook.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/__mocks__/Portal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/__mocks__/Portal.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/copy-to-clipboard/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/copy-to-clipboard/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/copy-to-clipboard/toggle-selection.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/copy-to-clipboard/toggle-selection.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/css-animation/Event.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/css-animation/Event.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/css-animation/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/css-animation/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/_configurable.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/_configurable.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/is.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/is.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/resolveUnref.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/resolveUnref.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/tryOnMounted.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/tryOnMounted.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/tryOnScopeDispose.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/tryOnScopeDispose.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/types.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/types.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/unrefElement.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/unrefElement.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/useElementSize.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/useElementSize.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/useResizeObserver.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/useResizeObserver.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/useSupported.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/_vueuse/useSupported.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useBreakpoint.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useBreakpoint.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useConfigInject.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useConfigInject.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useDestroyed.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useDestroyed.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useFlexGapSupport.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useFlexGapSupport.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useLayoutState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useLayoutState.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useMemo.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useMemo.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useMergedState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useMergedState.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useRefs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useRefs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useSize.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useSize.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/hooks/useState.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/props-util/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/props-util/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/props-util/initDefaultProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/props-util/initDefaultProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/vue-types/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/vue-types/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/ActionButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/ActionButton.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/antInputDirective.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/antInputDirective.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/BaseInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/BaseInput.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/BaseMixin.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/BaseMixin.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/canUseDom.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/canUseDom.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/classNames.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/classNames.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/collapseMotion.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/collapseMotion.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/colors.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/colors.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/component-classes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/component-classes.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/createRef.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/createRef.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/debouncedWatch.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/debouncedWatch.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/eagerComputed.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/eagerComputed.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/easings.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/easings.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/env.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/env.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/EventInterface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/EventInterface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/firstNotUndefined.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/firstNotUndefined.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getLocale.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getLocale.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getRequestAnimationFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getRequestAnimationFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getScroll.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getScroll.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getScrollBarSize.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/getScrollBarSize.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isCssAnimationSupported.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isCssAnimationSupported.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isMobile.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isMobile.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isNumeric.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isNumeric.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isValid.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isValid.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isValidValue.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/isValidValue.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/json2mq.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/json2mq.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/KeyCode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/KeyCode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/omit.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/omit.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/pickAttrs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/pickAttrs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/Portal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/Portal.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/PortalWrapper.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/PortalWrapper.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/raf.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/raf.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/reactivePick.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/reactivePick.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/requestAnimationTimeout.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/requestAnimationTimeout.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/responsiveObserve.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/responsiveObserve.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/scrollTo.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/scrollTo.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/setStyle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/setStyle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/shallowequal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/shallowequal.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/styleChecker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/styleChecker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/supportsPassive.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/supportsPassive.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/switchScrollingEffect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/switchScrollingEffect.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/throttleByAnimationFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/throttleByAnimationFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/toReactive.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/toReactive.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/transButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/transButton.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/transition.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/transition.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/triggerEvent.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/triggerEvent.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/type.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/type.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/unreachableException.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/unreachableException.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/vnode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/vnode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/warning.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/warning.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/wave.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/_util/wave.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/affix/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/alert/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/Anchor.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/Anchor.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/AnchorLink.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/AnchorLink.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/anchor/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/OptGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/OptGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/Option.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/auto-complete/Option.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/group.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/Avatar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/Avatar.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/avatar/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/style/responsive.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/back-top/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/ribbon.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/Badge.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/Badge.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/Ribbon.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/Ribbon.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/ScrollNumber.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/ScrollNumber.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/SingleNumber.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/SingleNumber.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/badge/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/Breadcrumb.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/Breadcrumb.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/BreadcrumbItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/BreadcrumbItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/BreadcrumbSeparator.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/BreadcrumbSeparator.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/breadcrumb/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/button.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/button.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/button-group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/button-group.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/buttonTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/buttonTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/LoadingIcon.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/button/LoadingIcon.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/date-fns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/date-fns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/generateCalendar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/generateCalendar.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/Header.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/Header.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/calendar/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/style/size.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/Card.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/Card.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/Grid.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/Grid.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/Meta.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/card/Meta.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/carousel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/cascader/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/Checkbox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/Checkbox.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/checkbox/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/col/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/col/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/col/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/col/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/col/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/Collapse.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/Collapse.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/CollapsePanel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/CollapsePanel.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/commonProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/commonProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/PanelContent.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/collapse/PanelContent.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/ku_KU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/ku_KU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/ColorPicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/ColorPicker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/color-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/comment/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/cssVariables.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/cssVariables.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/renderEmpty.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/config-provider/renderEmpty.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/generateRangePicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/generateRangePicker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/generateSinglePicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/generateSinglePicker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/generatePicker/props.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/panel.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/date-fns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/date-fns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/PickerButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/PickerButton.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/PickerTag.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/PickerTag.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/date-picker/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/Cell.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/Cell.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/Row.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/descriptions/Row.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/divider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/drawer.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/drawer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/style/status.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/dropdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/dropdown.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/dropdown-button.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/dropdown-button.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/dropdown/props.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/empty.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/empty.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/simple.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/empty/simple.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/components.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/horizontal.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/inline.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/status.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/style/vertical.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/asyncUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/asyncUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/messages.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/messages.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/typeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/typeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/useDebounce.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/useDebounce.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/validateUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/validateUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/ErrorList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/ErrorList.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/Form.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/Form.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItemContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItemContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItemInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItemInput.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItemLabel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/FormItemLabel.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/useForm.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/form/useForm.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/Col.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/Col.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/Row.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/grid/Row.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/icon/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/PreviewGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/image/PreviewGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/affix.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/allow-clear.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/IE11.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/style/search-input.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/calculateNodeHeight.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/calculateNodeHeight.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/ClearableLabeledInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/ClearableLabeledInput.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Input.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Input.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/inputProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/inputProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Password.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Password.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/ResizableTextArea.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/ResizableTextArea.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Search.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/Search.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/TextArea.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/TextArea.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/hooks/useCursor.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/hooks/useCursor.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/hooks/useFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/hooks/useFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/utils/MiniDecimal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/utils/MiniDecimal.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/utils/numberUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/utils/numberUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/utils/supportUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/utils/supportUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/InputNumber.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/InputNumber.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/StepHandler.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/src/StepHandler.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/affix.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/input-number/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/light.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/injectionKey.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/injectionKey.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/layout.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/layout.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/Sider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/layout/Sider.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/bordered.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/customize.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/responsive.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/contextKey.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/contextKey.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/Item.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/Item.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/ItemMeta.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/list/ItemMeta.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/default.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/default.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hy_AM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/hy_AM.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ku_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ku_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ne_NP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ne_NP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/zh_HK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/zh_HK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/default.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/default.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hy_AM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/hy_AM.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ku_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ku_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/LocaleReceiver.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/LocaleReceiver.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ne-NP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ne-NP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ne_NP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ne_NP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/locale-provider/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/mentions/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/hooks/useDirectionStyle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/hooks/useDirectionStyle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/hooks/useKeyPath.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/hooks/useKeyPath.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/hooks/useMenuContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/hooks/useMenuContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/Divider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/Divider.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/InlineSubMenuList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/InlineSubMenuList.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/ItemGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/ItemGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/Menu.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/Menu.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/MenuItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/MenuItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/PopupTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/PopupTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/SubMenu.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/SubMenu.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/SubMenuList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/src/SubMenuList.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/dark.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/light.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/style/status.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/menu/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/message/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/confirm.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/modal.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/confirm.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/confirm.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/ConfirmDialog.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/ConfirmDialog.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/locale.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/locale.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/Modal.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/modal/Modal.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/notification/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/page-header/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/MiniSelect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/MiniSelect.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/Pagination.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/pagination/Pagination.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/popconfirm/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/popover/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/Circle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/Circle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/Line.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/Line.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/progress.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/progress.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/props.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/Steps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/Steps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/progress/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/Group.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/Group.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/Radio.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/Radio.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/RadioButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/radio/RadioButton.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/Star.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/Star.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/rate/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/noFound.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/noFound.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/serverError.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/serverError.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/unauthorized.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/result/unauthorized.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/row/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/row/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/row/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/row/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/row/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/multiple.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/style/single.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/utils/iconUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/utils/iconUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Avatar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Avatar.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Button.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Button.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Element.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Element.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Image.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Image.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Input.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Input.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Paragraph.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Paragraph.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Skeleton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Skeleton.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Title.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/skeleton/Title.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/SliderTooltip.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/slider/SliderTooltip.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/space/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/Spin.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/spin/Spin.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/Countdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/Countdown.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/Number.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/Number.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/Statistic.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/Statistic.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/statistic/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/custom-icon.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/label-placement.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/nav.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/progress.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/progress-dot.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/small.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/style/vertical.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/steps/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/color/bezierEasing.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/color/colorPalette.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/color/colors.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/color/tinyColor.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/motion/fade.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/motion/move.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/motion/other.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/motion/slide.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/motion/zoom.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/base.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/global.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/iconfont.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/core/motion.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/box.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/clearfix.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/compatibility.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/customize.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/iconfont.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/modal-mask.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/motion.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/operation-unit.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/reset.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/size.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/mixins/typography.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/themes/compact.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/themes/dark.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/themes/default.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/themes/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/themes/variable.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/compact.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/components.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/dark.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/default.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/default.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/style/variable.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/switch/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/FilterDropdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/FilterDropdown.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/FilterSearch.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/FilterSearch.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/FilterWrapper.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/FilterWrapper.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useFilter/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useColumns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useColumns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useLazyKVMap.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useLazyKVMap.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/usePagination.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/usePagination.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useSelection.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useSelection.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useSorter.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useSorter.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useTitleColumns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/hooks/useTitleColumns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/bordered.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/radius.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/resize.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/style/size.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/Column.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/Column.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/ColumnGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/ColumnGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/ExpandIcon.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/ExpandIcon.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/Table.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/Table.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/table/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useOffsets.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useOffsets.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useRaf.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useRaf.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useSyncState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useSyncState.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useTouchMove.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/hooks/useTouchMove.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/AddButton.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/AddButton.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/OperationNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/OperationNode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/TabNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabNavList/TabNode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabPanelList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabPanelList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabPanelList/TabPane.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabPanelList/TabPane.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/TabContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/Tabs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/src/Tabs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/card.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/dropdown.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/position.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/style/size.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tabs/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/CheckableTag.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/CheckableTag.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tag/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/date-fns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/date-fns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/time-picker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/time-picker/time-picker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/Timeline.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/Timeline.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/TimelineItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/timeline/TimelineItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/abstractTooltipProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/abstractTooltipProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/Tooltip.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tooltip/Tooltip.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/customize.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/list.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/list.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/ListBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/ListBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/ListItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/ListItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/operation.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/operation.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/search.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/transfer/search.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/directory.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/mixin.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/utils/dictUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/utils/dictUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/utils/dropIndicator.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/utils/dropIndicator.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/utils/iconUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/utils/iconUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/DirectoryTree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/DirectoryTree.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/Tree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree/Tree.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/tree-select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Base.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Base.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Editable.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Editable.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Link.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Link.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Paragraph.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Paragraph.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Text.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Text.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Title.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Title.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Typography.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/Typography.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/typography/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/index.css
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/index.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/index-pure.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/style/rtl.less
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/UploadList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/UploadList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/UploadList/ListItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/UploadList/ListItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/Dragger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/Dragger.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/Upload.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/Upload.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/upload/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/hooks/useBuffer.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/hooks/useBuffer.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/Align.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/Align.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-align/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useDisplayValues.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useDisplayValues.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useEntities.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useEntities.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useMissingValues.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useMissingValues.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useSearchConfig.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useSearchConfig.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useSearchOptions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/hooks/useSearchOptions.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/Checkbox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/Checkbox.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/Column.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/Column.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/useActive.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/useActive.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/useKeyboard.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/OptionList/useKeyboard.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/utils/commonUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/utils/commonUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/utils/treeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/utils/treeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/Cascader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/Cascader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-cascader/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-checkbox/Checkbox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-checkbox/Checkbox.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/Content.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/Content.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/Dialog.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/Dialog.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/DialogWrap.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/DialogWrap.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/IDialogPropTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/IDialogPropTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/Mask.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/Mask.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dialog/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/DrawerChild.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/DrawerChild.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/DrawerWrapper.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/DrawerWrapper.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/IDrawerPropTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/IDrawerPropTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/src/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-drawer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dropdown/Dropdown.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dropdown/Dropdown.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dropdown/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dropdown/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dropdown/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-dropdown/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/hooks/useFrameSetState.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/hooks/useFrameSetState.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/getFixScaleEleTransPosition.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/getFixScaleEleTransPosition.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/Image.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/Image.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/Preview.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/Preview.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/PreviewGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/src/PreviewGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-image/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/DropdownMenu.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/DropdownMenu.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/KeywordTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/KeywordTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/Mentions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/Mentions.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/MentionsContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/MentionsContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/mentionsProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/mentionsProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/Option.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/Option.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/src/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-mentions/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-notification/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-notification/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-notification/Notice.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-notification/Notice.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-notification/Notification.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-notification/Notification.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/Item.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/Item.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/Overflow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/Overflow.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/RawItem.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-overflow/RawItem.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/mm_MM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/mm_MM.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pa_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pa_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pb_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pb_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ug_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ug_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/KeyCode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/KeyCode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/Options.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/Options.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/Pager.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/Pager.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/Pagination.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-pagination/Pagination.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/dateFns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/dateFns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/dayjs.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/dayjs.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/moment.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/generate/moment.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useCellClassName.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useCellClassName.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useHoverValue.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useHoverValue.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useMergeProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useMergeProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/usePickerInput.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/usePickerInput.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useRangeDisabled.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useRangeDisabled.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useRangeViewDates.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useRangeViewDates.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useTextValueMapping.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useTextValueMapping.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useValueTexts.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/hooks/useValueTexts.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ar_EG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ar_EG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/az_AZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/az_AZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/bg_BG.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/bg_BG.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/bn_BD.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/bn_BD.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/by_BY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/by_BY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ca_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ca_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/cs_CZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/cs_CZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/da_DK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/da_DK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/de_DE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/de_DE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/el_GR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/el_GR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/en_GB.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/en_GB.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/en_US.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/en_US.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/es_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/es_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/es_MX.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/es_MX.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/et_EE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/et_EE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fa_IR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fa_IR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fi_FI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fi_FI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fr_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fr_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fr_CA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fr_CA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fr_FR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/fr_FR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ga_IE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ga_IE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/gl_ES.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/gl_ES.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/he_IL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/he_IL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/hi_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/hi_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/hr_HR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/hr_HR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/hu_HU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/hu_HU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/id_ID.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/id_ID.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/is_IS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/is_IS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/it_IT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/it_IT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ja_JP.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ja_JP.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ka_GE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ka_GE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/kk_KZ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/kk_KZ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/km_KH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/km_KH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/kmr_IQ.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/kmr_IQ.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/kn_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/kn_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ko_KR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ko_KR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/lt_LT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/lt_LT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/lv_LV.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/lv_LV.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/mk_MK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/mk_MK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ml_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ml_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/mm_MM.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/mm_MM.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/mn_MN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/mn_MN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ms_MY.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ms_MY.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/nb_NO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/nb_NO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/nl_BE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/nl_BE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/nl_NL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/nl_NL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/pl_PL.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/pl_PL.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/pt_BR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/pt_BR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/pt_PT.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/pt_PT.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ro_RO.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ro_RO.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ru_RU.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ru_RU.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sk_SK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sk_SK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sl_SI.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sl_SI.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sr_RS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sr_RS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sv_SE.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/sv_SE.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ta_IN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ta_IN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/th_TH.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/th_TH.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/tr_TR.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/tr_TR.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ug_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ug_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/uk_UA.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/uk_UA.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ur_PK.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/ur_PK.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/vi_VN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/vi_VN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/zh_CN.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/zh_CN.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/zh_TW.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/locale/zh_TW.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatePanel/DateBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatePanel/DateBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatePanel/DateHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatePanel/DateHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatetimePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DatetimePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DecadePanel/DecadeBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DecadePanel/DecadeBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DecadePanel/DecadeHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DecadePanel/DecadeHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DecadePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/DecadePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/MonthPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/MonthPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/MonthPanel/MonthBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/MonthPanel/MonthBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/MonthPanel/MonthHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/MonthPanel/MonthHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/QuarterPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/QuarterPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/QuarterPanel/QuarterBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/QuarterPanel/QuarterBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/QuarterPanel/QuarterHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/QuarterPanel/QuarterHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/TimeBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/TimeBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/TimeHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/TimeHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/TimeUnitColumn.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/TimePanel/TimeUnitColumn.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/WeekPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/WeekPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/YearPanel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/YearPanel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/YearPanel/YearBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/YearPanel/YearBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/YearPanel/YearHeader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/YearPanel/YearHeader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/Header.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/Header.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/PanelBody.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/panels/PanelBody.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/dateUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/dateUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/getExtraFooter.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/getExtraFooter.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/getRanges.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/getRanges.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/miscUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/miscUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/timeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/timeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/uiUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/uiUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/warnUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/utils/warnUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/PanelContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/PanelContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/Picker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/Picker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/PickerPanel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/PickerPanel.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/PickerTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/PickerTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/RangeContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/RangeContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/RangePicker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-picker/RangePicker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/Circle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/Circle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/common.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/common.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/Line.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/Line.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/types.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/src/types.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-progress/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-resize-observer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-resize-observer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useBaseProps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useBaseProps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useCache.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useCache.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useDelayReset.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useDelayReset.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useFilterOptions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useFilterOptions.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useId.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useId.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useLock.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useLock.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useOptions.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useOptions.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useSelectTriggerControl.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/hooks/useSelectTriggerControl.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/Input.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/Input.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/MultipleSelector.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/MultipleSelector.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/SingleSelector.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Selector/SingleSelector.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/commonUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/commonUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/keyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/keyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/legacyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/legacyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/platformUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/platformUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/warningPropsUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/utils/warningPropsUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/BaseSelect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/BaseSelect.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/OptGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/OptGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Option.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Option.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/OptionList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/OptionList.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Select.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/Select.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/SelectContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/SelectContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/SelectTrigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/SelectTrigger.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/TransBtn.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-select/TransBtn.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/utils/innerSliderUtils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/utils/innerSliderUtils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/arrows.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/arrows.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/default-props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/default-props.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/dots.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/dots.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/initial-state.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/initial-state.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/inner-slider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/inner-slider.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/slider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/slider.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/track.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slick/track.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/createSlider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/createSlider.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/Marks.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/Marks.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/Steps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/Steps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/Track.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/common/Track.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/Handle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/Handle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/Range.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/Range.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/Slider.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/Slider.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/utils.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/src/utils.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-slider/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-steps/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-steps/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-steps/Step.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-steps/Step.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-steps/Steps.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-steps/Steps.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/BodyRow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/BodyRow.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/ExpandedRow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/ExpandedRow.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/MeasureCell.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Body/MeasureCell.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Cell/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Cell/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/BodyContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/BodyContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/ExpandedRowContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/ExpandedRowContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/HoverContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/HoverContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/ResizeContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/ResizeContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/StickyContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/StickyContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/SummaryContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/SummaryContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/TableContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/context/TableContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/FixedHolder/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/FixedHolder/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/Cell.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/Cell.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/Row.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/Row.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/Summary.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Footer/Summary.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Header/DragHandle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Header/DragHandle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Header/Header.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Header/Header.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Header/HeaderRow.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Header/HeaderRow.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useColumns.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useColumns.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useFlattenRecords.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useFlattenRecords.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useFrame.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useFrame.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useSticky.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useSticky.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useStickyOffsets.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/hooks/useStickyOffsets.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Panel/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Panel/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/sugar/Column.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/sugar/Column.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/sugar/ColumnGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/sugar/ColumnGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/expandUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/expandUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/fixUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/fixUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/legacyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/legacyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/ColGroup.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/ColGroup.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/constant.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/constant.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/stickyScrollBar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/stickyScrollBar.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Table.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-table/Table.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/src/Content.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/src/Content.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/src/placements.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/src/placements.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/src/Tooltip.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/src/Tooltip.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tooltip/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/utils/conductUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/utils/conductUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/utils/diffUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/utils/diffUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/utils/treeUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/utils/treeUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/contextTypes.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/contextTypes.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/DropIndicator.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/DropIndicator.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/Indent.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/Indent.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/MotionTreeNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/MotionTreeNode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/NodeList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/NodeList.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/props.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/props.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/Tree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/Tree.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/TreeNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/TreeNode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/useMaxLevel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/useMaxLevel.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/util.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree/util.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useCache.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useCache.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useCheckedKeys.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useCheckedKeys.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useDataEntities.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useDataEntities.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useFilterTreeData.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useFilterTreeData.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useTreeData.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/hooks/useTreeData.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/legacyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/legacyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/strategyUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/strategyUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/valueUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/valueUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/warningPropsUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/utils/warningPropsUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/LegacyContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/LegacyContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/OptionList.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/OptionList.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/TreeNode.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/TreeNode.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/TreeSelect.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/TreeSelect.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/TreeSelectContext.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-tree-select/TreeSelectContext.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/Mask.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/Mask.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/MobilePopupInner.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/MobilePopupInner.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/PopupInner.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/PopupInner.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/useStretchStyle.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/useStretchStyle.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/useVisibleStatus.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Popup/useVisibleStatus.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/utils/alignUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/utils/alignUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/utils/motionUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/utils/motionUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/context.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/context.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Trigger.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-trigger/Trigger.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/AjaxUploader.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/AjaxUploader.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/attr-accept.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/attr-accept.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/request.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/request.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/traverseFileTree.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/traverseFileTree.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/uid.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/uid.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/Upload.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-upload/Upload.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Children/toArray.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Children/toArray.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/addEventListener.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/addEventListener.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/class.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/class.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/contains.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/contains.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/css.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/dynamicCSS.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/dynamicCSS.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/isVisible.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/isVisible.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/scrollLocker.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/Dom/scrollLocker.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/devWarning.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/devWarning.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/get.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/get.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/isMobile.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/isMobile.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/set.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/set.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/warning.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-util/warning.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useFrameWheel.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useFrameWheel.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useHeights.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useHeights.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useMobileTouchMove.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useMobileTouchMove.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useOriginScroll.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useOriginScroll.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useScrollTo.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/hooks/useScrollTo.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/utils/algorithmUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/utils/algorithmUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/utils/isFirefox.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/utils/isFirefox.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/utils/itemUtil.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/utils/itemUtil.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/Filler.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/Filler.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/interface.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/interface.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/Item.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/Item.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/List.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/List.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/ScrollBar.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/vc-virtual-list/ScrollBar.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/style/css.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/style/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/style/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/version.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/version/version.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/components.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/components.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/index.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/index.js
+/frontend/dashboard/node_modules/ant-design-vue/lib/style.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/lib/style.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/.npmrc.template
+/frontend/dashboard/node_modules/ant-design-vue/scripts/commitizen.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/compact-vars.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/css-variable-sync.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/dark-vars.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/default-vars.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/deploy-to-gh-pages.sh
+/frontend/dashboard/node_modules/ant-design-vue/scripts/generate-version.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/gulpfile.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/prepub.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/prettier.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/run.js
+/frontend/dashboard/node_modules/ant-design-vue/scripts/syncStyleFromAntd.js
+/frontend/dashboard/node_modules/ant-design-vue/typings/global.d.ts
+/frontend/dashboard/node_modules/ant-design-vue/vetur/attributes.json
+/frontend/dashboard/node_modules/ant-design-vue/vetur/tags.json
+/frontend/dashboard/node_modules/ant-design-vue/vetur/web-types.json
+/frontend/dashboard/node_modules/ant-design-vue/LICENSE
+/frontend/dashboard/node_modules/ant-design-vue/package.json
+/frontend/dashboard/node_modules/ant-design-vue/README.md
+/frontend/dashboard/node_modules/array-tree-filter/lib/index.js
+/frontend/dashboard/node_modules/array-tree-filter/index.d.ts
+/frontend/dashboard/node_modules/array-tree-filter/package.json
+/frontend/dashboard/node_modules/array-tree-filter/README.md
+/frontend/dashboard/node_modules/async-validator/dist-node/index.js
+/frontend/dashboard/node_modules/async-validator/dist-node/index.js.map
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/enum.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/index.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/pattern.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/range.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/required.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/type.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/url.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/rule/whitespace.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/any.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/array.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/boolean.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/date.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/enum.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/float.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/index.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/integer.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/method.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/number.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/object.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/pattern.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/regexp.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/required.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/string.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/validator/type.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/index.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/interface.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/messages.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-types/util.d.ts
+/frontend/dashboard/node_modules/async-validator/dist-web/index.js
+/frontend/dashboard/node_modules/async-validator/dist-web/index.js.map
+/frontend/dashboard/node_modules/async-validator/LICENSE.md
+/frontend/dashboard/node_modules/async-validator/package.json
+/frontend/dashboard/node_modules/async-validator/README.md
+/frontend/dashboard/node_modules/compute-scroll-into-view/dist/index.js
+/frontend/dashboard/node_modules/compute-scroll-into-view/dist/index.js.map
+/frontend/dashboard/node_modules/compute-scroll-into-view/dist/index.mjs
+/frontend/dashboard/node_modules/compute-scroll-into-view/dist/index.mjs.map
+/frontend/dashboard/node_modules/compute-scroll-into-view/typings/index.d.ts
+/frontend/dashboard/node_modules/compute-scroll-into-view/umd/compute-scroll-into-view.min.js
+/frontend/dashboard/node_modules/compute-scroll-into-view/umd/compute-scroll-into-view.min.js.map
+/frontend/dashboard/node_modules/compute-scroll-into-view/LICENSE
+/frontend/dashboard/node_modules/compute-scroll-into-view/package.json
+/frontend/dashboard/node_modules/compute-scroll-into-view/README.md
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/at.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/concat.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/copy-within.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/entries.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/every.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/fill.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/filter.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/find.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/find-index.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/find-last.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/find-last-index.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/flat.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/flat-map.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/group.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/group-by.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/group-to-map.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/index.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/index-of.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/join.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/keys.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/last-index-of.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/map.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/push.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/reduce.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/reduce-right.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/reverse.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/slice.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/some.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/sort.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/splice.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/to-reversed.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/to-sorted.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/to-spliced.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/unshift.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/values.js
+/frontend/dashboard/node_modules/core-js/actual/array/virtual/with.js
+/frontend/dashboard/node_modules/core-js/actual/array/at.js
+/frontend/dashboard/node_modules/core-js/actual/array/concat.js
+/frontend/dashboard/node_modules/core-js/actual/array/copy-within.js
+/frontend/dashboard/node_modules/core-js/actual/array/entries.js
+/frontend/dashboard/node_modules/core-js/actual/array/every.js
+/frontend/dashboard/node_modules/core-js/actual/array/fill.js
+/frontend/dashboard/node_modules/core-js/actual/array/filter.js
+/frontend/dashboard/node_modules/core-js/actual/array/find.js
+/frontend/dashboard/node_modules/core-js/actual/array/find-index.js
+/frontend/dashboard/node_modules/core-js/actual/array/find-last.js
+/frontend/dashboard/node_modules/core-js/actual/array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/actual/array/flat.js
+/frontend/dashboard/node_modules/core-js/actual/array/flat-map.js
+/frontend/dashboard/node_modules/core-js/actual/array/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/array/from.js
+/frontend/dashboard/node_modules/core-js/actual/array/from-async.js
+/frontend/dashboard/node_modules/core-js/actual/array/group.js
+/frontend/dashboard/node_modules/core-js/actual/array/group-by.js
+/frontend/dashboard/node_modules/core-js/actual/array/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/actual/array/group-to-map.js
+/frontend/dashboard/node_modules/core-js/actual/array/includes.js
+/frontend/dashboard/node_modules/core-js/actual/array/index.js
+/frontend/dashboard/node_modules/core-js/actual/array/index-of.js
+/frontend/dashboard/node_modules/core-js/actual/array/is-array.js
+/frontend/dashboard/node_modules/core-js/actual/array/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/array/join.js
+/frontend/dashboard/node_modules/core-js/actual/array/keys.js
+/frontend/dashboard/node_modules/core-js/actual/array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/actual/array/map.js
+/frontend/dashboard/node_modules/core-js/actual/array/of.js
+/frontend/dashboard/node_modules/core-js/actual/array/push.js
+/frontend/dashboard/node_modules/core-js/actual/array/reduce.js
+/frontend/dashboard/node_modules/core-js/actual/array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/actual/array/reverse.js
+/frontend/dashboard/node_modules/core-js/actual/array/slice.js
+/frontend/dashboard/node_modules/core-js/actual/array/some.js
+/frontend/dashboard/node_modules/core-js/actual/array/sort.js
+/frontend/dashboard/node_modules/core-js/actual/array/splice.js
+/frontend/dashboard/node_modules/core-js/actual/array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/actual/array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/actual/array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/actual/array/unshift.js
+/frontend/dashboard/node_modules/core-js/actual/array/values.js
+/frontend/dashboard/node_modules/core-js/actual/array/with.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/detached.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/index.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/is-view.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/slice.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/transfer.js
+/frontend/dashboard/node_modules/core-js/actual/array-buffer/transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/actual/async-disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/async-disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/async-dispose.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/drop.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/every.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/filter.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/find.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/from.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/index.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/map.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/some.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/take.js
+/frontend/dashboard/node_modules/core-js/actual/async-iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/actual/data-view/get-float16.js
+/frontend/dashboard/node_modules/core-js/actual/data-view/index.js
+/frontend/dashboard/node_modules/core-js/actual/data-view/set-float16.js
+/frontend/dashboard/node_modules/core-js/actual/date/get-year.js
+/frontend/dashboard/node_modules/core-js/actual/date/index.js
+/frontend/dashboard/node_modules/core-js/actual/date/now.js
+/frontend/dashboard/node_modules/core-js/actual/date/set-year.js
+/frontend/dashboard/node_modules/core-js/actual/date/to-gmt-string.js
+/frontend/dashboard/node_modules/core-js/actual/date/to-iso-string.js
+/frontend/dashboard/node_modules/core-js/actual/date/to-json.js
+/frontend/dashboard/node_modules/core-js/actual/date/to-primitive.js
+/frontend/dashboard/node_modules/core-js/actual/date/to-string.js
+/frontend/dashboard/node_modules/core-js/actual/disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/actual/dom-collections/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/dom-collections/index.js
+/frontend/dashboard/node_modules/core-js/actual/dom-collections/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/dom-exception/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/dom-exception/index.js
+/frontend/dashboard/node_modules/core-js/actual/dom-exception/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/actual/error/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/error/index.js
+/frontend/dashboard/node_modules/core-js/actual/error/is-error.js
+/frontend/dashboard/node_modules/core-js/actual/error/to-string.js
+/frontend/dashboard/node_modules/core-js/actual/function/virtual/bind.js
+/frontend/dashboard/node_modules/core-js/actual/function/virtual/index.js
+/frontend/dashboard/node_modules/core-js/actual/function/bind.js
+/frontend/dashboard/node_modules/core-js/actual/function/has-instance.js
+/frontend/dashboard/node_modules/core-js/actual/function/index.js
+/frontend/dashboard/node_modules/core-js/actual/function/metadata.js
+/frontend/dashboard/node_modules/core-js/actual/function/name.js
+/frontend/dashboard/node_modules/core-js/actual/instance/at.js
+/frontend/dashboard/node_modules/core-js/actual/instance/bind.js
+/frontend/dashboard/node_modules/core-js/actual/instance/code-point-at.js
+/frontend/dashboard/node_modules/core-js/actual/instance/concat.js
+/frontend/dashboard/node_modules/core-js/actual/instance/copy-within.js
+/frontend/dashboard/node_modules/core-js/actual/instance/ends-with.js
+/frontend/dashboard/node_modules/core-js/actual/instance/entries.js
+/frontend/dashboard/node_modules/core-js/actual/instance/every.js
+/frontend/dashboard/node_modules/core-js/actual/instance/fill.js
+/frontend/dashboard/node_modules/core-js/actual/instance/filter.js
+/frontend/dashboard/node_modules/core-js/actual/instance/find.js
+/frontend/dashboard/node_modules/core-js/actual/instance/find-index.js
+/frontend/dashboard/node_modules/core-js/actual/instance/find-last.js
+/frontend/dashboard/node_modules/core-js/actual/instance/find-last-index.js
+/frontend/dashboard/node_modules/core-js/actual/instance/flags.js
+/frontend/dashboard/node_modules/core-js/actual/instance/flat.js
+/frontend/dashboard/node_modules/core-js/actual/instance/flat-map.js
+/frontend/dashboard/node_modules/core-js/actual/instance/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/instance/group.js
+/frontend/dashboard/node_modules/core-js/actual/instance/group-by.js
+/frontend/dashboard/node_modules/core-js/actual/instance/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/actual/instance/group-to-map.js
+/frontend/dashboard/node_modules/core-js/actual/instance/includes.js
+/frontend/dashboard/node_modules/core-js/actual/instance/index-of.js
+/frontend/dashboard/node_modules/core-js/actual/instance/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/actual/instance/keys.js
+/frontend/dashboard/node_modules/core-js/actual/instance/last-index-of.js
+/frontend/dashboard/node_modules/core-js/actual/instance/map.js
+/frontend/dashboard/node_modules/core-js/actual/instance/match-all.js
+/frontend/dashboard/node_modules/core-js/actual/instance/pad-end.js
+/frontend/dashboard/node_modules/core-js/actual/instance/pad-start.js
+/frontend/dashboard/node_modules/core-js/actual/instance/push.js
+/frontend/dashboard/node_modules/core-js/actual/instance/reduce.js
+/frontend/dashboard/node_modules/core-js/actual/instance/reduce-right.js
+/frontend/dashboard/node_modules/core-js/actual/instance/repeat.js
+/frontend/dashboard/node_modules/core-js/actual/instance/replace-all.js
+/frontend/dashboard/node_modules/core-js/actual/instance/reverse.js
+/frontend/dashboard/node_modules/core-js/actual/instance/slice.js
+/frontend/dashboard/node_modules/core-js/actual/instance/some.js
+/frontend/dashboard/node_modules/core-js/actual/instance/sort.js
+/frontend/dashboard/node_modules/core-js/actual/instance/splice.js
+/frontend/dashboard/node_modules/core-js/actual/instance/starts-with.js
+/frontend/dashboard/node_modules/core-js/actual/instance/to-reversed.js
+/frontend/dashboard/node_modules/core-js/actual/instance/to-sorted.js
+/frontend/dashboard/node_modules/core-js/actual/instance/to-spliced.js
+/frontend/dashboard/node_modules/core-js/actual/instance/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/actual/instance/trim.js
+/frontend/dashboard/node_modules/core-js/actual/instance/trim-end.js
+/frontend/dashboard/node_modules/core-js/actual/instance/trim-left.js
+/frontend/dashboard/node_modules/core-js/actual/instance/trim-right.js
+/frontend/dashboard/node_modules/core-js/actual/instance/trim-start.js
+/frontend/dashboard/node_modules/core-js/actual/instance/unshift.js
+/frontend/dashboard/node_modules/core-js/actual/instance/values.js
+/frontend/dashboard/node_modules/core-js/actual/instance/with.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/concat.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/dispose.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/drop.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/every.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/filter.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/find.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/from.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/index.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/map.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/some.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/take.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/actual/iterator/to-async.js
+/frontend/dashboard/node_modules/core-js/actual/json/index.js
+/frontend/dashboard/node_modules/core-js/actual/json/is-raw-json.js
+/frontend/dashboard/node_modules/core-js/actual/json/parse.js
+/frontend/dashboard/node_modules/core-js/actual/json/raw-json.js
+/frontend/dashboard/node_modules/core-js/actual/json/stringify.js
+/frontend/dashboard/node_modules/core-js/actual/json/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/actual/map/get-or-insert.js
+/frontend/dashboard/node_modules/core-js/actual/map/get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/actual/map/group-by.js
+/frontend/dashboard/node_modules/core-js/actual/map/index.js
+/frontend/dashboard/node_modules/core-js/actual/math/acosh.js
+/frontend/dashboard/node_modules/core-js/actual/math/asinh.js
+/frontend/dashboard/node_modules/core-js/actual/math/atanh.js
+/frontend/dashboard/node_modules/core-js/actual/math/cbrt.js
+/frontend/dashboard/node_modules/core-js/actual/math/clz32.js
+/frontend/dashboard/node_modules/core-js/actual/math/cosh.js
+/frontend/dashboard/node_modules/core-js/actual/math/expm1.js
+/frontend/dashboard/node_modules/core-js/actual/math/f16round.js
+/frontend/dashboard/node_modules/core-js/actual/math/fround.js
+/frontend/dashboard/node_modules/core-js/actual/math/hypot.js
+/frontend/dashboard/node_modules/core-js/actual/math/imul.js
+/frontend/dashboard/node_modules/core-js/actual/math/index.js
+/frontend/dashboard/node_modules/core-js/actual/math/log1p.js
+/frontend/dashboard/node_modules/core-js/actual/math/log2.js
+/frontend/dashboard/node_modules/core-js/actual/math/log10.js
+/frontend/dashboard/node_modules/core-js/actual/math/sign.js
+/frontend/dashboard/node_modules/core-js/actual/math/sinh.js
+/frontend/dashboard/node_modules/core-js/actual/math/sum-precise.js
+/frontend/dashboard/node_modules/core-js/actual/math/tanh.js
+/frontend/dashboard/node_modules/core-js/actual/math/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/actual/math/trunc.js
+/frontend/dashboard/node_modules/core-js/actual/number/virtual/index.js
+/frontend/dashboard/node_modules/core-js/actual/number/virtual/to-exponential.js
+/frontend/dashboard/node_modules/core-js/actual/number/virtual/to-fixed.js
+/frontend/dashboard/node_modules/core-js/actual/number/virtual/to-precision.js
+/frontend/dashboard/node_modules/core-js/actual/number/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/number/epsilon.js
+/frontend/dashboard/node_modules/core-js/actual/number/index.js
+/frontend/dashboard/node_modules/core-js/actual/number/is-finite.js
+/frontend/dashboard/node_modules/core-js/actual/number/is-integer.js
+/frontend/dashboard/node_modules/core-js/actual/number/is-nan.js
+/frontend/dashboard/node_modules/core-js/actual/number/is-safe-integer.js
+/frontend/dashboard/node_modules/core-js/actual/number/max-safe-integer.js
+/frontend/dashboard/node_modules/core-js/actual/number/min-safe-integer.js
+/frontend/dashboard/node_modules/core-js/actual/number/parse-float.js
+/frontend/dashboard/node_modules/core-js/actual/number/parse-int.js
+/frontend/dashboard/node_modules/core-js/actual/number/to-exponential.js
+/frontend/dashboard/node_modules/core-js/actual/number/to-fixed.js
+/frontend/dashboard/node_modules/core-js/actual/number/to-precision.js
+/frontend/dashboard/node_modules/core-js/actual/object/assign.js
+/frontend/dashboard/node_modules/core-js/actual/object/create.js
+/frontend/dashboard/node_modules/core-js/actual/object/define-getter.js
+/frontend/dashboard/node_modules/core-js/actual/object/define-properties.js
+/frontend/dashboard/node_modules/core-js/actual/object/define-property.js
+/frontend/dashboard/node_modules/core-js/actual/object/define-setter.js
+/frontend/dashboard/node_modules/core-js/actual/object/entries.js
+/frontend/dashboard/node_modules/core-js/actual/object/freeze.js
+/frontend/dashboard/node_modules/core-js/actual/object/from-entries.js
+/frontend/dashboard/node_modules/core-js/actual/object/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/actual/object/get-own-property-descriptors.js
+/frontend/dashboard/node_modules/core-js/actual/object/get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/actual/object/get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/actual/object/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/actual/object/group-by.js
+/frontend/dashboard/node_modules/core-js/actual/object/has-own.js
+/frontend/dashboard/node_modules/core-js/actual/object/index.js
+/frontend/dashboard/node_modules/core-js/actual/object/is.js
+/frontend/dashboard/node_modules/core-js/actual/object/is-extensible.js
+/frontend/dashboard/node_modules/core-js/actual/object/is-frozen.js
+/frontend/dashboard/node_modules/core-js/actual/object/is-sealed.js
+/frontend/dashboard/node_modules/core-js/actual/object/keys.js
+/frontend/dashboard/node_modules/core-js/actual/object/lookup-getter.js
+/frontend/dashboard/node_modules/core-js/actual/object/lookup-setter.js
+/frontend/dashboard/node_modules/core-js/actual/object/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/actual/object/proto.js
+/frontend/dashboard/node_modules/core-js/actual/object/seal.js
+/frontend/dashboard/node_modules/core-js/actual/object/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/actual/object/to-string.js
+/frontend/dashboard/node_modules/core-js/actual/object/values.js
+/frontend/dashboard/node_modules/core-js/actual/promise/all-settled.js
+/frontend/dashboard/node_modules/core-js/actual/promise/any.js
+/frontend/dashboard/node_modules/core-js/actual/promise/finally.js
+/frontend/dashboard/node_modules/core-js/actual/promise/index.js
+/frontend/dashboard/node_modules/core-js/actual/promise/try.js
+/frontend/dashboard/node_modules/core-js/actual/promise/with-resolvers.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/apply.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/construct.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/define-property.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/delete-property.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/get.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/has.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/index.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/is-extensible.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/own-keys.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/set.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/actual/reflect/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/constructor.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/dot-all.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/escape.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/flags.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/index.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/match.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/replace.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/search.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/split.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/sticky.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/test.js
+/frontend/dashboard/node_modules/core-js/actual/regexp/to-string.js
+/frontend/dashboard/node_modules/core-js/actual/set/difference.js
+/frontend/dashboard/node_modules/core-js/actual/set/index.js
+/frontend/dashboard/node_modules/core-js/actual/set/intersection.js
+/frontend/dashboard/node_modules/core-js/actual/set/is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/actual/set/is-subset-of.js
+/frontend/dashboard/node_modules/core-js/actual/set/is-superset-of.js
+/frontend/dashboard/node_modules/core-js/actual/set/symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/actual/set/union.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/anchor.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/at.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/big.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/blink.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/bold.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/code-point-at.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/ends-with.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/fixed.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/fontcolor.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/fontsize.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/index.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/italics.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/link.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/match-all.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/pad-end.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/pad-start.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/repeat.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/replace-all.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/small.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/starts-with.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/strike.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/sub.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/substr.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/sup.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/trim.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/trim-end.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/trim-left.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/trim-right.js
+/frontend/dashboard/node_modules/core-js/actual/string/virtual/trim-start.js
+/frontend/dashboard/node_modules/core-js/actual/string/anchor.js
+/frontend/dashboard/node_modules/core-js/actual/string/at.js
+/frontend/dashboard/node_modules/core-js/actual/string/big.js
+/frontend/dashboard/node_modules/core-js/actual/string/blink.js
+/frontend/dashboard/node_modules/core-js/actual/string/bold.js
+/frontend/dashboard/node_modules/core-js/actual/string/code-point-at.js
+/frontend/dashboard/node_modules/core-js/actual/string/ends-with.js
+/frontend/dashboard/node_modules/core-js/actual/string/fixed.js
+/frontend/dashboard/node_modules/core-js/actual/string/fontcolor.js
+/frontend/dashboard/node_modules/core-js/actual/string/fontsize.js
+/frontend/dashboard/node_modules/core-js/actual/string/from-code-point.js
+/frontend/dashboard/node_modules/core-js/actual/string/includes.js
+/frontend/dashboard/node_modules/core-js/actual/string/index.js
+/frontend/dashboard/node_modules/core-js/actual/string/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/actual/string/italics.js
+/frontend/dashboard/node_modules/core-js/actual/string/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/string/link.js
+/frontend/dashboard/node_modules/core-js/actual/string/match.js
+/frontend/dashboard/node_modules/core-js/actual/string/match-all.js
+/frontend/dashboard/node_modules/core-js/actual/string/pad-end.js
+/frontend/dashboard/node_modules/core-js/actual/string/pad-start.js
+/frontend/dashboard/node_modules/core-js/actual/string/raw.js
+/frontend/dashboard/node_modules/core-js/actual/string/repeat.js
+/frontend/dashboard/node_modules/core-js/actual/string/replace.js
+/frontend/dashboard/node_modules/core-js/actual/string/replace-all.js
+/frontend/dashboard/node_modules/core-js/actual/string/search.js
+/frontend/dashboard/node_modules/core-js/actual/string/small.js
+/frontend/dashboard/node_modules/core-js/actual/string/split.js
+/frontend/dashboard/node_modules/core-js/actual/string/starts-with.js
+/frontend/dashboard/node_modules/core-js/actual/string/strike.js
+/frontend/dashboard/node_modules/core-js/actual/string/sub.js
+/frontend/dashboard/node_modules/core-js/actual/string/substr.js
+/frontend/dashboard/node_modules/core-js/actual/string/sup.js
+/frontend/dashboard/node_modules/core-js/actual/string/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/actual/string/trim.js
+/frontend/dashboard/node_modules/core-js/actual/string/trim-end.js
+/frontend/dashboard/node_modules/core-js/actual/string/trim-left.js
+/frontend/dashboard/node_modules/core-js/actual/string/trim-right.js
+/frontend/dashboard/node_modules/core-js/actual/string/trim-start.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/async-dispose.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/async-iterator.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/description.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/dispose.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/for.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/has-instance.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/index.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/is-concat-spreadable.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/key-for.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/match.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/match-all.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/metadata.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/replace.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/search.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/species.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/split.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/to-primitive.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/actual/symbol/unscopables.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/at.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/copy-within.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/entries.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/every.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/fill.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/filter.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/find.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/find-index.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/find-last.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/float32-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/float64-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/for-each.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/from.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/from-base64.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/from-hex.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/includes.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/index.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/index-of.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/int8-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/int16-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/int32-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/iterator.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/join.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/keys.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/map.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/methods.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/of.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/reduce.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/reverse.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/set.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/set-from-base64.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/set-from-hex.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/slice.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/some.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/sort.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/subarray.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-base64.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-hex.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-locale-string.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/to-string.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/uint8-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/uint8-clamped-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/uint16-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/uint32-array.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/values.js
+/frontend/dashboard/node_modules/core-js/actual/typed-array/with.js
+/frontend/dashboard/node_modules/core-js/actual/url/can-parse.js
+/frontend/dashboard/node_modules/core-js/actual/url/index.js
+/frontend/dashboard/node_modules/core-js/actual/url/parse.js
+/frontend/dashboard/node_modules/core-js/actual/url/to-json.js
+/frontend/dashboard/node_modules/core-js/actual/url-search-params/index.js
+/frontend/dashboard/node_modules/core-js/actual/weak-map/get-or-insert.js
+/frontend/dashboard/node_modules/core-js/actual/weak-map/get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/actual/weak-map/index.js
+/frontend/dashboard/node_modules/core-js/actual/weak-set/index.js
+/frontend/dashboard/node_modules/core-js/actual/aggregate-error.js
+/frontend/dashboard/node_modules/core-js/actual/atob.js
+/frontend/dashboard/node_modules/core-js/actual/btoa.js
+/frontend/dashboard/node_modules/core-js/actual/clear-immediate.js
+/frontend/dashboard/node_modules/core-js/actual/escape.js
+/frontend/dashboard/node_modules/core-js/actual/get-iterator.js
+/frontend/dashboard/node_modules/core-js/actual/get-iterator-method.js
+/frontend/dashboard/node_modules/core-js/actual/global-this.js
+/frontend/dashboard/node_modules/core-js/actual/index.js
+/frontend/dashboard/node_modules/core-js/actual/is-iterable.js
+/frontend/dashboard/node_modules/core-js/actual/parse-float.js
+/frontend/dashboard/node_modules/core-js/actual/parse-int.js
+/frontend/dashboard/node_modules/core-js/actual/queue-microtask.js
+/frontend/dashboard/node_modules/core-js/actual/README.md
+/frontend/dashboard/node_modules/core-js/actual/self.js
+/frontend/dashboard/node_modules/core-js/actual/set-immediate.js
+/frontend/dashboard/node_modules/core-js/actual/set-interval.js
+/frontend/dashboard/node_modules/core-js/actual/set-timeout.js
+/frontend/dashboard/node_modules/core-js/actual/structured-clone.js
+/frontend/dashboard/node_modules/core-js/actual/suppressed-error.js
+/frontend/dashboard/node_modules/core-js/actual/unescape.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/at.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/concat.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/copy-within.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/entries.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/every.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/fill.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/filter.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/find.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/find-index.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/find-last.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/find-last-index.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/flat.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/flat-map.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/for-each.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/index.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/index-of.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/join.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/keys.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/last-index-of.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/map.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/push.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/reduce.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/reduce-right.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/reverse.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/slice.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/some.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/sort.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/splice.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/to-reversed.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/to-sorted.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/to-spliced.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/unshift.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/values.js
+/frontend/dashboard/node_modules/core-js/es/array/virtual/with.js
+/frontend/dashboard/node_modules/core-js/es/array/at.js
+/frontend/dashboard/node_modules/core-js/es/array/concat.js
+/frontend/dashboard/node_modules/core-js/es/array/copy-within.js
+/frontend/dashboard/node_modules/core-js/es/array/entries.js
+/frontend/dashboard/node_modules/core-js/es/array/every.js
+/frontend/dashboard/node_modules/core-js/es/array/fill.js
+/frontend/dashboard/node_modules/core-js/es/array/filter.js
+/frontend/dashboard/node_modules/core-js/es/array/find.js
+/frontend/dashboard/node_modules/core-js/es/array/find-index.js
+/frontend/dashboard/node_modules/core-js/es/array/find-last.js
+/frontend/dashboard/node_modules/core-js/es/array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/es/array/flat.js
+/frontend/dashboard/node_modules/core-js/es/array/flat-map.js
+/frontend/dashboard/node_modules/core-js/es/array/for-each.js
+/frontend/dashboard/node_modules/core-js/es/array/from.js
+/frontend/dashboard/node_modules/core-js/es/array/from-async.js
+/frontend/dashboard/node_modules/core-js/es/array/includes.js
+/frontend/dashboard/node_modules/core-js/es/array/index.js
+/frontend/dashboard/node_modules/core-js/es/array/index-of.js
+/frontend/dashboard/node_modules/core-js/es/array/is-array.js
+/frontend/dashboard/node_modules/core-js/es/array/iterator.js
+/frontend/dashboard/node_modules/core-js/es/array/join.js
+/frontend/dashboard/node_modules/core-js/es/array/keys.js
+/frontend/dashboard/node_modules/core-js/es/array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/es/array/map.js
+/frontend/dashboard/node_modules/core-js/es/array/of.js
+/frontend/dashboard/node_modules/core-js/es/array/push.js
+/frontend/dashboard/node_modules/core-js/es/array/reduce.js
+/frontend/dashboard/node_modules/core-js/es/array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/es/array/reverse.js
+/frontend/dashboard/node_modules/core-js/es/array/slice.js
+/frontend/dashboard/node_modules/core-js/es/array/some.js
+/frontend/dashboard/node_modules/core-js/es/array/sort.js
+/frontend/dashboard/node_modules/core-js/es/array/splice.js
+/frontend/dashboard/node_modules/core-js/es/array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/es/array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/es/array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/es/array/unshift.js
+/frontend/dashboard/node_modules/core-js/es/array/values.js
+/frontend/dashboard/node_modules/core-js/es/array/with.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/constructor.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/detached.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/index.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/is-view.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/slice.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/transfer.js
+/frontend/dashboard/node_modules/core-js/es/array-buffer/transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/es/async-disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/es/async-disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/es/async-iterator/async-dispose.js
+/frontend/dashboard/node_modules/core-js/es/async-iterator/index.js
+/frontend/dashboard/node_modules/core-js/es/data-view/get-float16.js
+/frontend/dashboard/node_modules/core-js/es/data-view/index.js
+/frontend/dashboard/node_modules/core-js/es/data-view/set-float16.js
+/frontend/dashboard/node_modules/core-js/es/date/get-year.js
+/frontend/dashboard/node_modules/core-js/es/date/index.js
+/frontend/dashboard/node_modules/core-js/es/date/now.js
+/frontend/dashboard/node_modules/core-js/es/date/set-year.js
+/frontend/dashboard/node_modules/core-js/es/date/to-gmt-string.js
+/frontend/dashboard/node_modules/core-js/es/date/to-iso-string.js
+/frontend/dashboard/node_modules/core-js/es/date/to-json.js
+/frontend/dashboard/node_modules/core-js/es/date/to-primitive.js
+/frontend/dashboard/node_modules/core-js/es/date/to-string.js
+/frontend/dashboard/node_modules/core-js/es/disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/es/disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/es/error/constructor.js
+/frontend/dashboard/node_modules/core-js/es/error/index.js
+/frontend/dashboard/node_modules/core-js/es/error/is-error.js
+/frontend/dashboard/node_modules/core-js/es/error/to-string.js
+/frontend/dashboard/node_modules/core-js/es/function/virtual/bind.js
+/frontend/dashboard/node_modules/core-js/es/function/virtual/index.js
+/frontend/dashboard/node_modules/core-js/es/function/bind.js
+/frontend/dashboard/node_modules/core-js/es/function/has-instance.js
+/frontend/dashboard/node_modules/core-js/es/function/index.js
+/frontend/dashboard/node_modules/core-js/es/function/name.js
+/frontend/dashboard/node_modules/core-js/es/instance/at.js
+/frontend/dashboard/node_modules/core-js/es/instance/bind.js
+/frontend/dashboard/node_modules/core-js/es/instance/code-point-at.js
+/frontend/dashboard/node_modules/core-js/es/instance/concat.js
+/frontend/dashboard/node_modules/core-js/es/instance/copy-within.js
+/frontend/dashboard/node_modules/core-js/es/instance/ends-with.js
+/frontend/dashboard/node_modules/core-js/es/instance/entries.js
+/frontend/dashboard/node_modules/core-js/es/instance/every.js
+/frontend/dashboard/node_modules/core-js/es/instance/fill.js
+/frontend/dashboard/node_modules/core-js/es/instance/filter.js
+/frontend/dashboard/node_modules/core-js/es/instance/find.js
+/frontend/dashboard/node_modules/core-js/es/instance/find-index.js
+/frontend/dashboard/node_modules/core-js/es/instance/find-last.js
+/frontend/dashboard/node_modules/core-js/es/instance/find-last-index.js
+/frontend/dashboard/node_modules/core-js/es/instance/flags.js
+/frontend/dashboard/node_modules/core-js/es/instance/flat.js
+/frontend/dashboard/node_modules/core-js/es/instance/flat-map.js
+/frontend/dashboard/node_modules/core-js/es/instance/for-each.js
+/frontend/dashboard/node_modules/core-js/es/instance/includes.js
+/frontend/dashboard/node_modules/core-js/es/instance/index-of.js
+/frontend/dashboard/node_modules/core-js/es/instance/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/es/instance/keys.js
+/frontend/dashboard/node_modules/core-js/es/instance/last-index-of.js
+/frontend/dashboard/node_modules/core-js/es/instance/map.js
+/frontend/dashboard/node_modules/core-js/es/instance/match-all.js
+/frontend/dashboard/node_modules/core-js/es/instance/pad-end.js
+/frontend/dashboard/node_modules/core-js/es/instance/pad-start.js
+/frontend/dashboard/node_modules/core-js/es/instance/push.js
+/frontend/dashboard/node_modules/core-js/es/instance/reduce.js
+/frontend/dashboard/node_modules/core-js/es/instance/reduce-right.js
+/frontend/dashboard/node_modules/core-js/es/instance/repeat.js
+/frontend/dashboard/node_modules/core-js/es/instance/replace-all.js
+/frontend/dashboard/node_modules/core-js/es/instance/reverse.js
+/frontend/dashboard/node_modules/core-js/es/instance/slice.js
+/frontend/dashboard/node_modules/core-js/es/instance/some.js
+/frontend/dashboard/node_modules/core-js/es/instance/sort.js
+/frontend/dashboard/node_modules/core-js/es/instance/splice.js
+/frontend/dashboard/node_modules/core-js/es/instance/starts-with.js
+/frontend/dashboard/node_modules/core-js/es/instance/to-reversed.js
+/frontend/dashboard/node_modules/core-js/es/instance/to-sorted.js
+/frontend/dashboard/node_modules/core-js/es/instance/to-spliced.js
+/frontend/dashboard/node_modules/core-js/es/instance/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/es/instance/trim.js
+/frontend/dashboard/node_modules/core-js/es/instance/trim-end.js
+/frontend/dashboard/node_modules/core-js/es/instance/trim-left.js
+/frontend/dashboard/node_modules/core-js/es/instance/trim-right.js
+/frontend/dashboard/node_modules/core-js/es/instance/trim-start.js
+/frontend/dashboard/node_modules/core-js/es/instance/unshift.js
+/frontend/dashboard/node_modules/core-js/es/instance/values.js
+/frontend/dashboard/node_modules/core-js/es/instance/with.js
+/frontend/dashboard/node_modules/core-js/es/iterator/dispose.js
+/frontend/dashboard/node_modules/core-js/es/iterator/drop.js
+/frontend/dashboard/node_modules/core-js/es/iterator/every.js
+/frontend/dashboard/node_modules/core-js/es/iterator/filter.js
+/frontend/dashboard/node_modules/core-js/es/iterator/find.js
+/frontend/dashboard/node_modules/core-js/es/iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/es/iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/es/iterator/from.js
+/frontend/dashboard/node_modules/core-js/es/iterator/index.js
+/frontend/dashboard/node_modules/core-js/es/iterator/map.js
+/frontend/dashboard/node_modules/core-js/es/iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/es/iterator/some.js
+/frontend/dashboard/node_modules/core-js/es/iterator/take.js
+/frontend/dashboard/node_modules/core-js/es/iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/es/json/index.js
+/frontend/dashboard/node_modules/core-js/es/json/stringify.js
+/frontend/dashboard/node_modules/core-js/es/json/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/es/map/group-by.js
+/frontend/dashboard/node_modules/core-js/es/map/index.js
+/frontend/dashboard/node_modules/core-js/es/math/acosh.js
+/frontend/dashboard/node_modules/core-js/es/math/asinh.js
+/frontend/dashboard/node_modules/core-js/es/math/atanh.js
+/frontend/dashboard/node_modules/core-js/es/math/cbrt.js
+/frontend/dashboard/node_modules/core-js/es/math/clz32.js
+/frontend/dashboard/node_modules/core-js/es/math/cosh.js
+/frontend/dashboard/node_modules/core-js/es/math/expm1.js
+/frontend/dashboard/node_modules/core-js/es/math/f16round.js
+/frontend/dashboard/node_modules/core-js/es/math/fround.js
+/frontend/dashboard/node_modules/core-js/es/math/hypot.js
+/frontend/dashboard/node_modules/core-js/es/math/imul.js
+/frontend/dashboard/node_modules/core-js/es/math/index.js
+/frontend/dashboard/node_modules/core-js/es/math/log1p.js
+/frontend/dashboard/node_modules/core-js/es/math/log2.js
+/frontend/dashboard/node_modules/core-js/es/math/log10.js
+/frontend/dashboard/node_modules/core-js/es/math/sign.js
+/frontend/dashboard/node_modules/core-js/es/math/sinh.js
+/frontend/dashboard/node_modules/core-js/es/math/sum-precise.js
+/frontend/dashboard/node_modules/core-js/es/math/tanh.js
+/frontend/dashboard/node_modules/core-js/es/math/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/es/math/trunc.js
+/frontend/dashboard/node_modules/core-js/es/number/virtual/index.js
+/frontend/dashboard/node_modules/core-js/es/number/virtual/to-exponential.js
+/frontend/dashboard/node_modules/core-js/es/number/virtual/to-fixed.js
+/frontend/dashboard/node_modules/core-js/es/number/virtual/to-precision.js
+/frontend/dashboard/node_modules/core-js/es/number/constructor.js
+/frontend/dashboard/node_modules/core-js/es/number/epsilon.js
+/frontend/dashboard/node_modules/core-js/es/number/index.js
+/frontend/dashboard/node_modules/core-js/es/number/is-finite.js
+/frontend/dashboard/node_modules/core-js/es/number/is-integer.js
+/frontend/dashboard/node_modules/core-js/es/number/is-nan.js
+/frontend/dashboard/node_modules/core-js/es/number/is-safe-integer.js
+/frontend/dashboard/node_modules/core-js/es/number/max-safe-integer.js
+/frontend/dashboard/node_modules/core-js/es/number/min-safe-integer.js
+/frontend/dashboard/node_modules/core-js/es/number/parse-float.js
+/frontend/dashboard/node_modules/core-js/es/number/parse-int.js
+/frontend/dashboard/node_modules/core-js/es/number/to-exponential.js
+/frontend/dashboard/node_modules/core-js/es/number/to-fixed.js
+/frontend/dashboard/node_modules/core-js/es/number/to-precision.js
+/frontend/dashboard/node_modules/core-js/es/object/assign.js
+/frontend/dashboard/node_modules/core-js/es/object/create.js
+/frontend/dashboard/node_modules/core-js/es/object/define-getter.js
+/frontend/dashboard/node_modules/core-js/es/object/define-properties.js
+/frontend/dashboard/node_modules/core-js/es/object/define-property.js
+/frontend/dashboard/node_modules/core-js/es/object/define-setter.js
+/frontend/dashboard/node_modules/core-js/es/object/entries.js
+/frontend/dashboard/node_modules/core-js/es/object/freeze.js
+/frontend/dashboard/node_modules/core-js/es/object/from-entries.js
+/frontend/dashboard/node_modules/core-js/es/object/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/es/object/get-own-property-descriptors.js
+/frontend/dashboard/node_modules/core-js/es/object/get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/es/object/get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/es/object/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/es/object/group-by.js
+/frontend/dashboard/node_modules/core-js/es/object/has-own.js
+/frontend/dashboard/node_modules/core-js/es/object/index.js
+/frontend/dashboard/node_modules/core-js/es/object/is.js
+/frontend/dashboard/node_modules/core-js/es/object/is-extensible.js
+/frontend/dashboard/node_modules/core-js/es/object/is-frozen.js
+/frontend/dashboard/node_modules/core-js/es/object/is-sealed.js
+/frontend/dashboard/node_modules/core-js/es/object/keys.js
+/frontend/dashboard/node_modules/core-js/es/object/lookup-getter.js
+/frontend/dashboard/node_modules/core-js/es/object/lookup-setter.js
+/frontend/dashboard/node_modules/core-js/es/object/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/es/object/proto.js
+/frontend/dashboard/node_modules/core-js/es/object/seal.js
+/frontend/dashboard/node_modules/core-js/es/object/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/es/object/to-string.js
+/frontend/dashboard/node_modules/core-js/es/object/values.js
+/frontend/dashboard/node_modules/core-js/es/promise/all-settled.js
+/frontend/dashboard/node_modules/core-js/es/promise/any.js
+/frontend/dashboard/node_modules/core-js/es/promise/finally.js
+/frontend/dashboard/node_modules/core-js/es/promise/index.js
+/frontend/dashboard/node_modules/core-js/es/promise/try.js
+/frontend/dashboard/node_modules/core-js/es/promise/with-resolvers.js
+/frontend/dashboard/node_modules/core-js/es/reflect/apply.js
+/frontend/dashboard/node_modules/core-js/es/reflect/construct.js
+/frontend/dashboard/node_modules/core-js/es/reflect/define-property.js
+/frontend/dashboard/node_modules/core-js/es/reflect/delete-property.js
+/frontend/dashboard/node_modules/core-js/es/reflect/get.js
+/frontend/dashboard/node_modules/core-js/es/reflect/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/es/reflect/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/es/reflect/has.js
+/frontend/dashboard/node_modules/core-js/es/reflect/index.js
+/frontend/dashboard/node_modules/core-js/es/reflect/is-extensible.js
+/frontend/dashboard/node_modules/core-js/es/reflect/own-keys.js
+/frontend/dashboard/node_modules/core-js/es/reflect/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/es/reflect/set.js
+/frontend/dashboard/node_modules/core-js/es/reflect/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/es/reflect/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/es/regexp/constructor.js
+/frontend/dashboard/node_modules/core-js/es/regexp/dot-all.js
+/frontend/dashboard/node_modules/core-js/es/regexp/escape.js
+/frontend/dashboard/node_modules/core-js/es/regexp/flags.js
+/frontend/dashboard/node_modules/core-js/es/regexp/index.js
+/frontend/dashboard/node_modules/core-js/es/regexp/match.js
+/frontend/dashboard/node_modules/core-js/es/regexp/replace.js
+/frontend/dashboard/node_modules/core-js/es/regexp/search.js
+/frontend/dashboard/node_modules/core-js/es/regexp/split.js
+/frontend/dashboard/node_modules/core-js/es/regexp/sticky.js
+/frontend/dashboard/node_modules/core-js/es/regexp/test.js
+/frontend/dashboard/node_modules/core-js/es/regexp/to-string.js
+/frontend/dashboard/node_modules/core-js/es/set/difference.js
+/frontend/dashboard/node_modules/core-js/es/set/index.js
+/frontend/dashboard/node_modules/core-js/es/set/intersection.js
+/frontend/dashboard/node_modules/core-js/es/set/is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/es/set/is-subset-of.js
+/frontend/dashboard/node_modules/core-js/es/set/is-superset-of.js
+/frontend/dashboard/node_modules/core-js/es/set/symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/es/set/union.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/anchor.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/at.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/big.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/blink.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/bold.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/code-point-at.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/ends-with.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/fixed.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/fontcolor.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/fontsize.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/index.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/italics.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/link.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/match-all.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/pad-end.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/pad-start.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/repeat.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/replace-all.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/small.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/starts-with.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/strike.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/sub.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/substr.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/sup.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/trim.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/trim-end.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/trim-left.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/trim-right.js
+/frontend/dashboard/node_modules/core-js/es/string/virtual/trim-start.js
+/frontend/dashboard/node_modules/core-js/es/string/anchor.js
+/frontend/dashboard/node_modules/core-js/es/string/at.js
+/frontend/dashboard/node_modules/core-js/es/string/big.js
+/frontend/dashboard/node_modules/core-js/es/string/blink.js
+/frontend/dashboard/node_modules/core-js/es/string/bold.js
+/frontend/dashboard/node_modules/core-js/es/string/code-point-at.js
+/frontend/dashboard/node_modules/core-js/es/string/ends-with.js
+/frontend/dashboard/node_modules/core-js/es/string/fixed.js
+/frontend/dashboard/node_modules/core-js/es/string/fontcolor.js
+/frontend/dashboard/node_modules/core-js/es/string/fontsize.js
+/frontend/dashboard/node_modules/core-js/es/string/from-code-point.js
+/frontend/dashboard/node_modules/core-js/es/string/includes.js
+/frontend/dashboard/node_modules/core-js/es/string/index.js
+/frontend/dashboard/node_modules/core-js/es/string/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/es/string/italics.js
+/frontend/dashboard/node_modules/core-js/es/string/iterator.js
+/frontend/dashboard/node_modules/core-js/es/string/link.js
+/frontend/dashboard/node_modules/core-js/es/string/match.js
+/frontend/dashboard/node_modules/core-js/es/string/match-all.js
+/frontend/dashboard/node_modules/core-js/es/string/pad-end.js
+/frontend/dashboard/node_modules/core-js/es/string/pad-start.js
+/frontend/dashboard/node_modules/core-js/es/string/raw.js
+/frontend/dashboard/node_modules/core-js/es/string/repeat.js
+/frontend/dashboard/node_modules/core-js/es/string/replace.js
+/frontend/dashboard/node_modules/core-js/es/string/replace-all.js
+/frontend/dashboard/node_modules/core-js/es/string/search.js
+/frontend/dashboard/node_modules/core-js/es/string/small.js
+/frontend/dashboard/node_modules/core-js/es/string/split.js
+/frontend/dashboard/node_modules/core-js/es/string/starts-with.js
+/frontend/dashboard/node_modules/core-js/es/string/strike.js
+/frontend/dashboard/node_modules/core-js/es/string/sub.js
+/frontend/dashboard/node_modules/core-js/es/string/substr.js
+/frontend/dashboard/node_modules/core-js/es/string/sup.js
+/frontend/dashboard/node_modules/core-js/es/string/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/es/string/trim.js
+/frontend/dashboard/node_modules/core-js/es/string/trim-end.js
+/frontend/dashboard/node_modules/core-js/es/string/trim-left.js
+/frontend/dashboard/node_modules/core-js/es/string/trim-right.js
+/frontend/dashboard/node_modules/core-js/es/string/trim-start.js
+/frontend/dashboard/node_modules/core-js/es/symbol/async-dispose.js
+/frontend/dashboard/node_modules/core-js/es/symbol/async-iterator.js
+/frontend/dashboard/node_modules/core-js/es/symbol/description.js
+/frontend/dashboard/node_modules/core-js/es/symbol/dispose.js
+/frontend/dashboard/node_modules/core-js/es/symbol/for.js
+/frontend/dashboard/node_modules/core-js/es/symbol/has-instance.js
+/frontend/dashboard/node_modules/core-js/es/symbol/index.js
+/frontend/dashboard/node_modules/core-js/es/symbol/is-concat-spreadable.js
+/frontend/dashboard/node_modules/core-js/es/symbol/iterator.js
+/frontend/dashboard/node_modules/core-js/es/symbol/key-for.js
+/frontend/dashboard/node_modules/core-js/es/symbol/match.js
+/frontend/dashboard/node_modules/core-js/es/symbol/match-all.js
+/frontend/dashboard/node_modules/core-js/es/symbol/replace.js
+/frontend/dashboard/node_modules/core-js/es/symbol/search.js
+/frontend/dashboard/node_modules/core-js/es/symbol/species.js
+/frontend/dashboard/node_modules/core-js/es/symbol/split.js
+/frontend/dashboard/node_modules/core-js/es/symbol/to-primitive.js
+/frontend/dashboard/node_modules/core-js/es/symbol/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/es/symbol/unscopables.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/at.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/copy-within.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/entries.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/every.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/fill.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/filter.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/find.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/find-index.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/find-last.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/float32-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/float64-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/for-each.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/from.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/from-base64.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/from-hex.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/includes.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/index.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/index-of.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/int8-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/int16-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/int32-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/iterator.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/join.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/keys.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/map.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/methods.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/of.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/reduce.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/reverse.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/set.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/set-from-base64.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/set-from-hex.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/slice.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/some.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/sort.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/subarray.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/to-base64.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/to-hex.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/to-locale-string.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/to-string.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/uint8-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/uint8-clamped-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/uint16-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/uint32-array.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/values.js
+/frontend/dashboard/node_modules/core-js/es/typed-array/with.js
+/frontend/dashboard/node_modules/core-js/es/weak-map/index.js
+/frontend/dashboard/node_modules/core-js/es/weak-set/index.js
+/frontend/dashboard/node_modules/core-js/es/aggregate-error.js
+/frontend/dashboard/node_modules/core-js/es/escape.js
+/frontend/dashboard/node_modules/core-js/es/get-iterator.js
+/frontend/dashboard/node_modules/core-js/es/get-iterator-method.js
+/frontend/dashboard/node_modules/core-js/es/global-this.js
+/frontend/dashboard/node_modules/core-js/es/index.js
+/frontend/dashboard/node_modules/core-js/es/is-iterable.js
+/frontend/dashboard/node_modules/core-js/es/parse-float.js
+/frontend/dashboard/node_modules/core-js/es/parse-int.js
+/frontend/dashboard/node_modules/core-js/es/README.md
+/frontend/dashboard/node_modules/core-js/es/suppressed-error.js
+/frontend/dashboard/node_modules/core-js/es/unescape.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/at.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/concat.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/copy-within.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/entries.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/every.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/fill.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/filter.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/filter-out.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/filter-reject.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/find.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/find-index.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/find-last.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/find-last-index.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/flat.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/flat-map.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/for-each.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/group.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/group-by.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/group-to-map.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/index.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/index-of.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/join.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/keys.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/last-index-of.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/map.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/push.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/reduce.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/reduce-right.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/reverse.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/slice.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/some.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/sort.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/splice.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/to-reversed.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/to-sorted.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/to-spliced.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/unique-by.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/unshift.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/values.js
+/frontend/dashboard/node_modules/core-js/features/array/virtual/with.js
+/frontend/dashboard/node_modules/core-js/features/array/at.js
+/frontend/dashboard/node_modules/core-js/features/array/concat.js
+/frontend/dashboard/node_modules/core-js/features/array/copy-within.js
+/frontend/dashboard/node_modules/core-js/features/array/entries.js
+/frontend/dashboard/node_modules/core-js/features/array/every.js
+/frontend/dashboard/node_modules/core-js/features/array/fill.js
+/frontend/dashboard/node_modules/core-js/features/array/filter.js
+/frontend/dashboard/node_modules/core-js/features/array/filter-out.js
+/frontend/dashboard/node_modules/core-js/features/array/filter-reject.js
+/frontend/dashboard/node_modules/core-js/features/array/find.js
+/frontend/dashboard/node_modules/core-js/features/array/find-index.js
+/frontend/dashboard/node_modules/core-js/features/array/find-last.js
+/frontend/dashboard/node_modules/core-js/features/array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/features/array/flat.js
+/frontend/dashboard/node_modules/core-js/features/array/flat-map.js
+/frontend/dashboard/node_modules/core-js/features/array/for-each.js
+/frontend/dashboard/node_modules/core-js/features/array/from.js
+/frontend/dashboard/node_modules/core-js/features/array/from-async.js
+/frontend/dashboard/node_modules/core-js/features/array/group.js
+/frontend/dashboard/node_modules/core-js/features/array/group-by.js
+/frontend/dashboard/node_modules/core-js/features/array/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/features/array/group-to-map.js
+/frontend/dashboard/node_modules/core-js/features/array/includes.js
+/frontend/dashboard/node_modules/core-js/features/array/index.js
+/frontend/dashboard/node_modules/core-js/features/array/index-of.js
+/frontend/dashboard/node_modules/core-js/features/array/is-array.js
+/frontend/dashboard/node_modules/core-js/features/array/is-template-object.js
+/frontend/dashboard/node_modules/core-js/features/array/iterator.js
+/frontend/dashboard/node_modules/core-js/features/array/join.js
+/frontend/dashboard/node_modules/core-js/features/array/keys.js
+/frontend/dashboard/node_modules/core-js/features/array/last-index.js
+/frontend/dashboard/node_modules/core-js/features/array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/features/array/last-item.js
+/frontend/dashboard/node_modules/core-js/features/array/map.js
+/frontend/dashboard/node_modules/core-js/features/array/of.js
+/frontend/dashboard/node_modules/core-js/features/array/push.js
+/frontend/dashboard/node_modules/core-js/features/array/reduce.js
+/frontend/dashboard/node_modules/core-js/features/array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/features/array/reverse.js
+/frontend/dashboard/node_modules/core-js/features/array/slice.js
+/frontend/dashboard/node_modules/core-js/features/array/some.js
+/frontend/dashboard/node_modules/core-js/features/array/sort.js
+/frontend/dashboard/node_modules/core-js/features/array/splice.js
+/frontend/dashboard/node_modules/core-js/features/array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/features/array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/features/array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/features/array/unique-by.js
+/frontend/dashboard/node_modules/core-js/features/array/unshift.js
+/frontend/dashboard/node_modules/core-js/features/array/values.js
+/frontend/dashboard/node_modules/core-js/features/array/with.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/constructor.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/detached.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/index.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/is-view.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/slice.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/transfer.js
+/frontend/dashboard/node_modules/core-js/features/array-buffer/transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/features/async-disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/features/async-disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/as-indexed-pairs.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/async-dispose.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/drop.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/every.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/filter.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/find.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/from.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/index.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/indexed.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/map.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/some.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/take.js
+/frontend/dashboard/node_modules/core-js/features/async-iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/features/bigint/index.js
+/frontend/dashboard/node_modules/core-js/features/bigint/range.js
+/frontend/dashboard/node_modules/core-js/features/data-view/get-float16.js
+/frontend/dashboard/node_modules/core-js/features/data-view/get-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/features/data-view/index.js
+/frontend/dashboard/node_modules/core-js/features/data-view/set-float16.js
+/frontend/dashboard/node_modules/core-js/features/data-view/set-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/features/date/get-year.js
+/frontend/dashboard/node_modules/core-js/features/date/index.js
+/frontend/dashboard/node_modules/core-js/features/date/now.js
+/frontend/dashboard/node_modules/core-js/features/date/set-year.js
+/frontend/dashboard/node_modules/core-js/features/date/to-gmt-string.js
+/frontend/dashboard/node_modules/core-js/features/date/to-iso-string.js
+/frontend/dashboard/node_modules/core-js/features/date/to-json.js
+/frontend/dashboard/node_modules/core-js/features/date/to-primitive.js
+/frontend/dashboard/node_modules/core-js/features/date/to-string.js
+/frontend/dashboard/node_modules/core-js/features/disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/features/disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/features/dom-collections/for-each.js
+/frontend/dashboard/node_modules/core-js/features/dom-collections/index.js
+/frontend/dashboard/node_modules/core-js/features/dom-collections/iterator.js
+/frontend/dashboard/node_modules/core-js/features/dom-exception/constructor.js
+/frontend/dashboard/node_modules/core-js/features/dom-exception/index.js
+/frontend/dashboard/node_modules/core-js/features/dom-exception/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/features/error/constructor.js
+/frontend/dashboard/node_modules/core-js/features/error/index.js
+/frontend/dashboard/node_modules/core-js/features/error/is-error.js
+/frontend/dashboard/node_modules/core-js/features/error/to-string.js
+/frontend/dashboard/node_modules/core-js/features/function/virtual/bind.js
+/frontend/dashboard/node_modules/core-js/features/function/virtual/demethodize.js
+/frontend/dashboard/node_modules/core-js/features/function/virtual/index.js
+/frontend/dashboard/node_modules/core-js/features/function/virtual/un-this.js
+/frontend/dashboard/node_modules/core-js/features/function/bind.js
+/frontend/dashboard/node_modules/core-js/features/function/demethodize.js
+/frontend/dashboard/node_modules/core-js/features/function/has-instance.js
+/frontend/dashboard/node_modules/core-js/features/function/index.js
+/frontend/dashboard/node_modules/core-js/features/function/is-callable.js
+/frontend/dashboard/node_modules/core-js/features/function/is-constructor.js
+/frontend/dashboard/node_modules/core-js/features/function/metadata.js
+/frontend/dashboard/node_modules/core-js/features/function/name.js
+/frontend/dashboard/node_modules/core-js/features/function/un-this.js
+/frontend/dashboard/node_modules/core-js/features/instance/at.js
+/frontend/dashboard/node_modules/core-js/features/instance/bind.js
+/frontend/dashboard/node_modules/core-js/features/instance/clamp.js
+/frontend/dashboard/node_modules/core-js/features/instance/code-point-at.js
+/frontend/dashboard/node_modules/core-js/features/instance/code-points.js
+/frontend/dashboard/node_modules/core-js/features/instance/concat.js
+/frontend/dashboard/node_modules/core-js/features/instance/copy-within.js
+/frontend/dashboard/node_modules/core-js/features/instance/demethodize.js
+/frontend/dashboard/node_modules/core-js/features/instance/ends-with.js
+/frontend/dashboard/node_modules/core-js/features/instance/entries.js
+/frontend/dashboard/node_modules/core-js/features/instance/every.js
+/frontend/dashboard/node_modules/core-js/features/instance/fill.js
+/frontend/dashboard/node_modules/core-js/features/instance/filter.js
+/frontend/dashboard/node_modules/core-js/features/instance/filter-out.js
+/frontend/dashboard/node_modules/core-js/features/instance/filter-reject.js
+/frontend/dashboard/node_modules/core-js/features/instance/find.js
+/frontend/dashboard/node_modules/core-js/features/instance/find-index.js
+/frontend/dashboard/node_modules/core-js/features/instance/find-last.js
+/frontend/dashboard/node_modules/core-js/features/instance/find-last-index.js
+/frontend/dashboard/node_modules/core-js/features/instance/flags.js
+/frontend/dashboard/node_modules/core-js/features/instance/flat.js
+/frontend/dashboard/node_modules/core-js/features/instance/flat-map.js
+/frontend/dashboard/node_modules/core-js/features/instance/for-each.js
+/frontend/dashboard/node_modules/core-js/features/instance/group.js
+/frontend/dashboard/node_modules/core-js/features/instance/group-by.js
+/frontend/dashboard/node_modules/core-js/features/instance/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/features/instance/group-to-map.js
+/frontend/dashboard/node_modules/core-js/features/instance/includes.js
+/frontend/dashboard/node_modules/core-js/features/instance/index-of.js
+/frontend/dashboard/node_modules/core-js/features/instance/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/features/instance/keys.js
+/frontend/dashboard/node_modules/core-js/features/instance/last-index-of.js
+/frontend/dashboard/node_modules/core-js/features/instance/map.js
+/frontend/dashboard/node_modules/core-js/features/instance/match-all.js
+/frontend/dashboard/node_modules/core-js/features/instance/pad-end.js
+/frontend/dashboard/node_modules/core-js/features/instance/pad-start.js
+/frontend/dashboard/node_modules/core-js/features/instance/push.js
+/frontend/dashboard/node_modules/core-js/features/instance/reduce.js
+/frontend/dashboard/node_modules/core-js/features/instance/reduce-right.js
+/frontend/dashboard/node_modules/core-js/features/instance/repeat.js
+/frontend/dashboard/node_modules/core-js/features/instance/replace-all.js
+/frontend/dashboard/node_modules/core-js/features/instance/reverse.js
+/frontend/dashboard/node_modules/core-js/features/instance/slice.js
+/frontend/dashboard/node_modules/core-js/features/instance/some.js
+/frontend/dashboard/node_modules/core-js/features/instance/sort.js
+/frontend/dashboard/node_modules/core-js/features/instance/splice.js
+/frontend/dashboard/node_modules/core-js/features/instance/starts-with.js
+/frontend/dashboard/node_modules/core-js/features/instance/to-reversed.js
+/frontend/dashboard/node_modules/core-js/features/instance/to-sorted.js
+/frontend/dashboard/node_modules/core-js/features/instance/to-spliced.js
+/frontend/dashboard/node_modules/core-js/features/instance/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/features/instance/trim.js
+/frontend/dashboard/node_modules/core-js/features/instance/trim-end.js
+/frontend/dashboard/node_modules/core-js/features/instance/trim-left.js
+/frontend/dashboard/node_modules/core-js/features/instance/trim-right.js
+/frontend/dashboard/node_modules/core-js/features/instance/trim-start.js
+/frontend/dashboard/node_modules/core-js/features/instance/un-this.js
+/frontend/dashboard/node_modules/core-js/features/instance/unique-by.js
+/frontend/dashboard/node_modules/core-js/features/instance/unshift.js
+/frontend/dashboard/node_modules/core-js/features/instance/values.js
+/frontend/dashboard/node_modules/core-js/features/instance/with.js
+/frontend/dashboard/node_modules/core-js/features/iterator/as-indexed-pairs.js
+/frontend/dashboard/node_modules/core-js/features/iterator/chunks.js
+/frontend/dashboard/node_modules/core-js/features/iterator/concat.js
+/frontend/dashboard/node_modules/core-js/features/iterator/dispose.js
+/frontend/dashboard/node_modules/core-js/features/iterator/drop.js
+/frontend/dashboard/node_modules/core-js/features/iterator/every.js
+/frontend/dashboard/node_modules/core-js/features/iterator/filter.js
+/frontend/dashboard/node_modules/core-js/features/iterator/find.js
+/frontend/dashboard/node_modules/core-js/features/iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/features/iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/features/iterator/from.js
+/frontend/dashboard/node_modules/core-js/features/iterator/index.js
+/frontend/dashboard/node_modules/core-js/features/iterator/indexed.js
+/frontend/dashboard/node_modules/core-js/features/iterator/map.js
+/frontend/dashboard/node_modules/core-js/features/iterator/range.js
+/frontend/dashboard/node_modules/core-js/features/iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/features/iterator/sliding.js
+/frontend/dashboard/node_modules/core-js/features/iterator/some.js
+/frontend/dashboard/node_modules/core-js/features/iterator/take.js
+/frontend/dashboard/node_modules/core-js/features/iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/features/iterator/to-async.js
+/frontend/dashboard/node_modules/core-js/features/iterator/windows.js
+/frontend/dashboard/node_modules/core-js/features/iterator/zip.js
+/frontend/dashboard/node_modules/core-js/features/iterator/zip-keyed.js
+/frontend/dashboard/node_modules/core-js/features/json/index.js
+/frontend/dashboard/node_modules/core-js/features/json/is-raw-json.js
+/frontend/dashboard/node_modules/core-js/features/json/parse.js
+/frontend/dashboard/node_modules/core-js/features/json/raw-json.js
+/frontend/dashboard/node_modules/core-js/features/json/stringify.js
+/frontend/dashboard/node_modules/core-js/features/json/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/features/map/delete-all.js
+/frontend/dashboard/node_modules/core-js/features/map/emplace.js
+/frontend/dashboard/node_modules/core-js/features/map/every.js
+/frontend/dashboard/node_modules/core-js/features/map/filter.js
+/frontend/dashboard/node_modules/core-js/features/map/find.js
+/frontend/dashboard/node_modules/core-js/features/map/find-key.js
+/frontend/dashboard/node_modules/core-js/features/map/from.js
+/frontend/dashboard/node_modules/core-js/features/map/get-or-insert.js
+/frontend/dashboard/node_modules/core-js/features/map/get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/features/map/group-by.js
+/frontend/dashboard/node_modules/core-js/features/map/includes.js
+/frontend/dashboard/node_modules/core-js/features/map/index.js
+/frontend/dashboard/node_modules/core-js/features/map/key-by.js
+/frontend/dashboard/node_modules/core-js/features/map/key-of.js
+/frontend/dashboard/node_modules/core-js/features/map/map-keys.js
+/frontend/dashboard/node_modules/core-js/features/map/map-values.js
+/frontend/dashboard/node_modules/core-js/features/map/merge.js
+/frontend/dashboard/node_modules/core-js/features/map/of.js
+/frontend/dashboard/node_modules/core-js/features/map/reduce.js
+/frontend/dashboard/node_modules/core-js/features/map/some.js
+/frontend/dashboard/node_modules/core-js/features/map/update.js
+/frontend/dashboard/node_modules/core-js/features/map/update-or-insert.js
+/frontend/dashboard/node_modules/core-js/features/map/upsert.js
+/frontend/dashboard/node_modules/core-js/features/math/acosh.js
+/frontend/dashboard/node_modules/core-js/features/math/asinh.js
+/frontend/dashboard/node_modules/core-js/features/math/atanh.js
+/frontend/dashboard/node_modules/core-js/features/math/cbrt.js
+/frontend/dashboard/node_modules/core-js/features/math/clamp.js
+/frontend/dashboard/node_modules/core-js/features/math/clz32.js
+/frontend/dashboard/node_modules/core-js/features/math/cosh.js
+/frontend/dashboard/node_modules/core-js/features/math/deg-per-rad.js
+/frontend/dashboard/node_modules/core-js/features/math/degrees.js
+/frontend/dashboard/node_modules/core-js/features/math/expm1.js
+/frontend/dashboard/node_modules/core-js/features/math/f16round.js
+/frontend/dashboard/node_modules/core-js/features/math/fround.js
+/frontend/dashboard/node_modules/core-js/features/math/fscale.js
+/frontend/dashboard/node_modules/core-js/features/math/hypot.js
+/frontend/dashboard/node_modules/core-js/features/math/iaddh.js
+/frontend/dashboard/node_modules/core-js/features/math/imul.js
+/frontend/dashboard/node_modules/core-js/features/math/imulh.js
+/frontend/dashboard/node_modules/core-js/features/math/index.js
+/frontend/dashboard/node_modules/core-js/features/math/isubh.js
+/frontend/dashboard/node_modules/core-js/features/math/log1p.js
+/frontend/dashboard/node_modules/core-js/features/math/log2.js
+/frontend/dashboard/node_modules/core-js/features/math/log10.js
+/frontend/dashboard/node_modules/core-js/features/math/rad-per-deg.js
+/frontend/dashboard/node_modules/core-js/features/math/radians.js
+/frontend/dashboard/node_modules/core-js/features/math/scale.js
+/frontend/dashboard/node_modules/core-js/features/math/seeded-prng.js
+/frontend/dashboard/node_modules/core-js/features/math/sign.js
+/frontend/dashboard/node_modules/core-js/features/math/signbit.js
+/frontend/dashboard/node_modules/core-js/features/math/sinh.js
+/frontend/dashboard/node_modules/core-js/features/math/sum-precise.js
+/frontend/dashboard/node_modules/core-js/features/math/tanh.js
+/frontend/dashboard/node_modules/core-js/features/math/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/features/math/trunc.js
+/frontend/dashboard/node_modules/core-js/features/math/umulh.js
+/frontend/dashboard/node_modules/core-js/features/number/virtual/clamp.js
+/frontend/dashboard/node_modules/core-js/features/number/virtual/index.js
+/frontend/dashboard/node_modules/core-js/features/number/virtual/to-exponential.js
+/frontend/dashboard/node_modules/core-js/features/number/virtual/to-fixed.js
+/frontend/dashboard/node_modules/core-js/features/number/virtual/to-precision.js
+/frontend/dashboard/node_modules/core-js/features/number/clamp.js
+/frontend/dashboard/node_modules/core-js/features/number/constructor.js
+/frontend/dashboard/node_modules/core-js/features/number/epsilon.js
+/frontend/dashboard/node_modules/core-js/features/number/from-string.js
+/frontend/dashboard/node_modules/core-js/features/number/index.js
+/frontend/dashboard/node_modules/core-js/features/number/is-finite.js
+/frontend/dashboard/node_modules/core-js/features/number/is-integer.js
+/frontend/dashboard/node_modules/core-js/features/number/is-nan.js
+/frontend/dashboard/node_modules/core-js/features/number/is-safe-integer.js
+/frontend/dashboard/node_modules/core-js/features/number/max-safe-integer.js
+/frontend/dashboard/node_modules/core-js/features/number/min-safe-integer.js
+/frontend/dashboard/node_modules/core-js/features/number/parse-float.js
+/frontend/dashboard/node_modules/core-js/features/number/parse-int.js
+/frontend/dashboard/node_modules/core-js/features/number/range.js
+/frontend/dashboard/node_modules/core-js/features/number/to-exponential.js
+/frontend/dashboard/node_modules/core-js/features/number/to-fixed.js
+/frontend/dashboard/node_modules/core-js/features/number/to-precision.js
+/frontend/dashboard/node_modules/core-js/features/object/assign.js
+/frontend/dashboard/node_modules/core-js/features/object/create.js
+/frontend/dashboard/node_modules/core-js/features/object/define-getter.js
+/frontend/dashboard/node_modules/core-js/features/object/define-properties.js
+/frontend/dashboard/node_modules/core-js/features/object/define-property.js
+/frontend/dashboard/node_modules/core-js/features/object/define-setter.js
+/frontend/dashboard/node_modules/core-js/features/object/entries.js
+/frontend/dashboard/node_modules/core-js/features/object/freeze.js
+/frontend/dashboard/node_modules/core-js/features/object/from-entries.js
+/frontend/dashboard/node_modules/core-js/features/object/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/features/object/get-own-property-descriptors.js
+/frontend/dashboard/node_modules/core-js/features/object/get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/features/object/get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/features/object/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/features/object/group-by.js
+/frontend/dashboard/node_modules/core-js/features/object/has-own.js
+/frontend/dashboard/node_modules/core-js/features/object/index.js
+/frontend/dashboard/node_modules/core-js/features/object/is.js
+/frontend/dashboard/node_modules/core-js/features/object/is-extensible.js
+/frontend/dashboard/node_modules/core-js/features/object/is-frozen.js
+/frontend/dashboard/node_modules/core-js/features/object/is-sealed.js
+/frontend/dashboard/node_modules/core-js/features/object/iterate-entries.js
+/frontend/dashboard/node_modules/core-js/features/object/iterate-keys.js
+/frontend/dashboard/node_modules/core-js/features/object/iterate-values.js
+/frontend/dashboard/node_modules/core-js/features/object/keys.js
+/frontend/dashboard/node_modules/core-js/features/object/lookup-getter.js
+/frontend/dashboard/node_modules/core-js/features/object/lookup-setter.js
+/frontend/dashboard/node_modules/core-js/features/object/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/features/object/proto.js
+/frontend/dashboard/node_modules/core-js/features/object/seal.js
+/frontend/dashboard/node_modules/core-js/features/object/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/features/object/to-string.js
+/frontend/dashboard/node_modules/core-js/features/object/values.js
+/frontend/dashboard/node_modules/core-js/features/observable/index.js
+/frontend/dashboard/node_modules/core-js/features/promise/all-settled.js
+/frontend/dashboard/node_modules/core-js/features/promise/any.js
+/frontend/dashboard/node_modules/core-js/features/promise/finally.js
+/frontend/dashboard/node_modules/core-js/features/promise/index.js
+/frontend/dashboard/node_modules/core-js/features/promise/try.js
+/frontend/dashboard/node_modules/core-js/features/promise/with-resolvers.js
+/frontend/dashboard/node_modules/core-js/features/reflect/apply.js
+/frontend/dashboard/node_modules/core-js/features/reflect/construct.js
+/frontend/dashboard/node_modules/core-js/features/reflect/define-metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/define-property.js
+/frontend/dashboard/node_modules/core-js/features/reflect/delete-metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/delete-property.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get-metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get-metadata-keys.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get-own-metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get-own-metadata-keys.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/features/reflect/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/features/reflect/has.js
+/frontend/dashboard/node_modules/core-js/features/reflect/has-metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/has-own-metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/index.js
+/frontend/dashboard/node_modules/core-js/features/reflect/is-extensible.js
+/frontend/dashboard/node_modules/core-js/features/reflect/metadata.js
+/frontend/dashboard/node_modules/core-js/features/reflect/own-keys.js
+/frontend/dashboard/node_modules/core-js/features/reflect/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/features/reflect/set.js
+/frontend/dashboard/node_modules/core-js/features/reflect/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/features/reflect/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/features/regexp/constructor.js
+/frontend/dashboard/node_modules/core-js/features/regexp/dot-all.js
+/frontend/dashboard/node_modules/core-js/features/regexp/escape.js
+/frontend/dashboard/node_modules/core-js/features/regexp/flags.js
+/frontend/dashboard/node_modules/core-js/features/regexp/index.js
+/frontend/dashboard/node_modules/core-js/features/regexp/match.js
+/frontend/dashboard/node_modules/core-js/features/regexp/replace.js
+/frontend/dashboard/node_modules/core-js/features/regexp/search.js
+/frontend/dashboard/node_modules/core-js/features/regexp/split.js
+/frontend/dashboard/node_modules/core-js/features/regexp/sticky.js
+/frontend/dashboard/node_modules/core-js/features/regexp/test.js
+/frontend/dashboard/node_modules/core-js/features/regexp/to-string.js
+/frontend/dashboard/node_modules/core-js/features/set/add-all.js
+/frontend/dashboard/node_modules/core-js/features/set/delete-all.js
+/frontend/dashboard/node_modules/core-js/features/set/difference.js
+/frontend/dashboard/node_modules/core-js/features/set/every.js
+/frontend/dashboard/node_modules/core-js/features/set/filter.js
+/frontend/dashboard/node_modules/core-js/features/set/find.js
+/frontend/dashboard/node_modules/core-js/features/set/from.js
+/frontend/dashboard/node_modules/core-js/features/set/index.js
+/frontend/dashboard/node_modules/core-js/features/set/intersection.js
+/frontend/dashboard/node_modules/core-js/features/set/is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/features/set/is-subset-of.js
+/frontend/dashboard/node_modules/core-js/features/set/is-superset-of.js
+/frontend/dashboard/node_modules/core-js/features/set/join.js
+/frontend/dashboard/node_modules/core-js/features/set/map.js
+/frontend/dashboard/node_modules/core-js/features/set/of.js
+/frontend/dashboard/node_modules/core-js/features/set/reduce.js
+/frontend/dashboard/node_modules/core-js/features/set/some.js
+/frontend/dashboard/node_modules/core-js/features/set/symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/features/set/union.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/anchor.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/at.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/big.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/blink.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/bold.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/code-point-at.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/code-points.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/ends-with.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/fixed.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/fontcolor.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/fontsize.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/index.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/italics.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/link.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/match-all.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/pad-end.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/pad-start.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/repeat.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/replace-all.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/small.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/starts-with.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/strike.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/sub.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/substr.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/sup.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/trim.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/trim-end.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/trim-left.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/trim-right.js
+/frontend/dashboard/node_modules/core-js/features/string/virtual/trim-start.js
+/frontend/dashboard/node_modules/core-js/features/string/anchor.js
+/frontend/dashboard/node_modules/core-js/features/string/at.js
+/frontend/dashboard/node_modules/core-js/features/string/big.js
+/frontend/dashboard/node_modules/core-js/features/string/blink.js
+/frontend/dashboard/node_modules/core-js/features/string/bold.js
+/frontend/dashboard/node_modules/core-js/features/string/code-point-at.js
+/frontend/dashboard/node_modules/core-js/features/string/code-points.js
+/frontend/dashboard/node_modules/core-js/features/string/cooked.js
+/frontend/dashboard/node_modules/core-js/features/string/dedent.js
+/frontend/dashboard/node_modules/core-js/features/string/ends-with.js
+/frontend/dashboard/node_modules/core-js/features/string/fixed.js
+/frontend/dashboard/node_modules/core-js/features/string/fontcolor.js
+/frontend/dashboard/node_modules/core-js/features/string/fontsize.js
+/frontend/dashboard/node_modules/core-js/features/string/from-code-point.js
+/frontend/dashboard/node_modules/core-js/features/string/includes.js
+/frontend/dashboard/node_modules/core-js/features/string/index.js
+/frontend/dashboard/node_modules/core-js/features/string/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/features/string/italics.js
+/frontend/dashboard/node_modules/core-js/features/string/iterator.js
+/frontend/dashboard/node_modules/core-js/features/string/link.js
+/frontend/dashboard/node_modules/core-js/features/string/match.js
+/frontend/dashboard/node_modules/core-js/features/string/match-all.js
+/frontend/dashboard/node_modules/core-js/features/string/pad-end.js
+/frontend/dashboard/node_modules/core-js/features/string/pad-start.js
+/frontend/dashboard/node_modules/core-js/features/string/raw.js
+/frontend/dashboard/node_modules/core-js/features/string/repeat.js
+/frontend/dashboard/node_modules/core-js/features/string/replace.js
+/frontend/dashboard/node_modules/core-js/features/string/replace-all.js
+/frontend/dashboard/node_modules/core-js/features/string/search.js
+/frontend/dashboard/node_modules/core-js/features/string/small.js
+/frontend/dashboard/node_modules/core-js/features/string/split.js
+/frontend/dashboard/node_modules/core-js/features/string/starts-with.js
+/frontend/dashboard/node_modules/core-js/features/string/strike.js
+/frontend/dashboard/node_modules/core-js/features/string/sub.js
+/frontend/dashboard/node_modules/core-js/features/string/substr.js
+/frontend/dashboard/node_modules/core-js/features/string/sup.js
+/frontend/dashboard/node_modules/core-js/features/string/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/features/string/trim.js
+/frontend/dashboard/node_modules/core-js/features/string/trim-end.js
+/frontend/dashboard/node_modules/core-js/features/string/trim-left.js
+/frontend/dashboard/node_modules/core-js/features/string/trim-right.js
+/frontend/dashboard/node_modules/core-js/features/string/trim-start.js
+/frontend/dashboard/node_modules/core-js/features/symbol/async-dispose.js
+/frontend/dashboard/node_modules/core-js/features/symbol/async-iterator.js
+/frontend/dashboard/node_modules/core-js/features/symbol/custom-matcher.js
+/frontend/dashboard/node_modules/core-js/features/symbol/description.js
+/frontend/dashboard/node_modules/core-js/features/symbol/dispose.js
+/frontend/dashboard/node_modules/core-js/features/symbol/for.js
+/frontend/dashboard/node_modules/core-js/features/symbol/has-instance.js
+/frontend/dashboard/node_modules/core-js/features/symbol/index.js
+/frontend/dashboard/node_modules/core-js/features/symbol/is-concat-spreadable.js
+/frontend/dashboard/node_modules/core-js/features/symbol/is-registered.js
+/frontend/dashboard/node_modules/core-js/features/symbol/is-registered-symbol.js
+/frontend/dashboard/node_modules/core-js/features/symbol/is-well-known.js
+/frontend/dashboard/node_modules/core-js/features/symbol/is-well-known-symbol.js
+/frontend/dashboard/node_modules/core-js/features/symbol/iterator.js
+/frontend/dashboard/node_modules/core-js/features/symbol/key-for.js
+/frontend/dashboard/node_modules/core-js/features/symbol/match.js
+/frontend/dashboard/node_modules/core-js/features/symbol/match-all.js
+/frontend/dashboard/node_modules/core-js/features/symbol/matcher.js
+/frontend/dashboard/node_modules/core-js/features/symbol/metadata.js
+/frontend/dashboard/node_modules/core-js/features/symbol/metadata-key.js
+/frontend/dashboard/node_modules/core-js/features/symbol/observable.js
+/frontend/dashboard/node_modules/core-js/features/symbol/pattern-match.js
+/frontend/dashboard/node_modules/core-js/features/symbol/replace.js
+/frontend/dashboard/node_modules/core-js/features/symbol/replace-all.js
+/frontend/dashboard/node_modules/core-js/features/symbol/search.js
+/frontend/dashboard/node_modules/core-js/features/symbol/species.js
+/frontend/dashboard/node_modules/core-js/features/symbol/split.js
+/frontend/dashboard/node_modules/core-js/features/symbol/to-primitive.js
+/frontend/dashboard/node_modules/core-js/features/symbol/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/features/symbol/unscopables.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/at.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/copy-within.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/entries.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/every.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/fill.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/filter.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/filter-out.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/filter-reject.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/find.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/find-index.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/find-last.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/float32-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/float64-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/for-each.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/from.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/from-async.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/from-base64.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/from-hex.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/group-by.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/includes.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/index.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/index-of.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/int8-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/int16-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/int32-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/iterator.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/join.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/keys.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/map.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/methods.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/of.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/reduce.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/reverse.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/set.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/set-from-base64.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/set-from-hex.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/slice.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/some.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/sort.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/subarray.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-base64.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-hex.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-locale-string.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/to-string.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/uint8-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/uint8-clamped-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/uint16-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/uint32-array.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/unique-by.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/values.js
+/frontend/dashboard/node_modules/core-js/features/typed-array/with.js
+/frontend/dashboard/node_modules/core-js/features/url/can-parse.js
+/frontend/dashboard/node_modules/core-js/features/url/index.js
+/frontend/dashboard/node_modules/core-js/features/url/parse.js
+/frontend/dashboard/node_modules/core-js/features/url/to-json.js
+/frontend/dashboard/node_modules/core-js/features/url-search-params/index.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/delete-all.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/emplace.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/from.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/get-or-insert.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/index.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/of.js
+/frontend/dashboard/node_modules/core-js/features/weak-map/upsert.js
+/frontend/dashboard/node_modules/core-js/features/weak-set/add-all.js
+/frontend/dashboard/node_modules/core-js/features/weak-set/delete-all.js
+/frontend/dashboard/node_modules/core-js/features/weak-set/from.js
+/frontend/dashboard/node_modules/core-js/features/weak-set/index.js
+/frontend/dashboard/node_modules/core-js/features/weak-set/of.js
+/frontend/dashboard/node_modules/core-js/features/aggregate-error.js
+/frontend/dashboard/node_modules/core-js/features/atob.js
+/frontend/dashboard/node_modules/core-js/features/btoa.js
+/frontend/dashboard/node_modules/core-js/features/clear-immediate.js
+/frontend/dashboard/node_modules/core-js/features/composite-key.js
+/frontend/dashboard/node_modules/core-js/features/composite-symbol.js
+/frontend/dashboard/node_modules/core-js/features/escape.js
+/frontend/dashboard/node_modules/core-js/features/get-iterator.js
+/frontend/dashboard/node_modules/core-js/features/get-iterator-method.js
+/frontend/dashboard/node_modules/core-js/features/global-this.js
+/frontend/dashboard/node_modules/core-js/features/index.js
+/frontend/dashboard/node_modules/core-js/features/is-iterable.js
+/frontend/dashboard/node_modules/core-js/features/parse-float.js
+/frontend/dashboard/node_modules/core-js/features/parse-int.js
+/frontend/dashboard/node_modules/core-js/features/queue-microtask.js
+/frontend/dashboard/node_modules/core-js/features/self.js
+/frontend/dashboard/node_modules/core-js/features/set-immediate.js
+/frontend/dashboard/node_modules/core-js/features/set-interval.js
+/frontend/dashboard/node_modules/core-js/features/set-timeout.js
+/frontend/dashboard/node_modules/core-js/features/structured-clone.js
+/frontend/dashboard/node_modules/core-js/features/suppressed-error.js
+/frontend/dashboard/node_modules/core-js/features/unescape.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/at.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/concat.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/copy-within.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/entries.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/every.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/fill.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/filter.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/filter-out.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/filter-reject.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/find.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/find-index.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/find-last.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/find-last-index.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/flat.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/flat-map.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/for-each.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/group.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/group-by.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/group-to-map.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/index.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/index-of.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/join.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/keys.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/last-index-of.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/map.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/push.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/reduce.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/reduce-right.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/reverse.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/slice.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/some.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/sort.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/splice.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/to-reversed.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/to-sorted.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/to-spliced.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/unique-by.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/unshift.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/values.js
+/frontend/dashboard/node_modules/core-js/full/array/virtual/with.js
+/frontend/dashboard/node_modules/core-js/full/array/at.js
+/frontend/dashboard/node_modules/core-js/full/array/concat.js
+/frontend/dashboard/node_modules/core-js/full/array/copy-within.js
+/frontend/dashboard/node_modules/core-js/full/array/entries.js
+/frontend/dashboard/node_modules/core-js/full/array/every.js
+/frontend/dashboard/node_modules/core-js/full/array/fill.js
+/frontend/dashboard/node_modules/core-js/full/array/filter.js
+/frontend/dashboard/node_modules/core-js/full/array/filter-out.js
+/frontend/dashboard/node_modules/core-js/full/array/filter-reject.js
+/frontend/dashboard/node_modules/core-js/full/array/find.js
+/frontend/dashboard/node_modules/core-js/full/array/find-index.js
+/frontend/dashboard/node_modules/core-js/full/array/find-last.js
+/frontend/dashboard/node_modules/core-js/full/array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/full/array/flat.js
+/frontend/dashboard/node_modules/core-js/full/array/flat-map.js
+/frontend/dashboard/node_modules/core-js/full/array/for-each.js
+/frontend/dashboard/node_modules/core-js/full/array/from.js
+/frontend/dashboard/node_modules/core-js/full/array/from-async.js
+/frontend/dashboard/node_modules/core-js/full/array/group.js
+/frontend/dashboard/node_modules/core-js/full/array/group-by.js
+/frontend/dashboard/node_modules/core-js/full/array/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/full/array/group-to-map.js
+/frontend/dashboard/node_modules/core-js/full/array/includes.js
+/frontend/dashboard/node_modules/core-js/full/array/index.js
+/frontend/dashboard/node_modules/core-js/full/array/index-of.js
+/frontend/dashboard/node_modules/core-js/full/array/is-array.js
+/frontend/dashboard/node_modules/core-js/full/array/is-template-object.js
+/frontend/dashboard/node_modules/core-js/full/array/iterator.js
+/frontend/dashboard/node_modules/core-js/full/array/join.js
+/frontend/dashboard/node_modules/core-js/full/array/keys.js
+/frontend/dashboard/node_modules/core-js/full/array/last-index.js
+/frontend/dashboard/node_modules/core-js/full/array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/full/array/last-item.js
+/frontend/dashboard/node_modules/core-js/full/array/map.js
+/frontend/dashboard/node_modules/core-js/full/array/of.js
+/frontend/dashboard/node_modules/core-js/full/array/push.js
+/frontend/dashboard/node_modules/core-js/full/array/reduce.js
+/frontend/dashboard/node_modules/core-js/full/array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/full/array/reverse.js
+/frontend/dashboard/node_modules/core-js/full/array/slice.js
+/frontend/dashboard/node_modules/core-js/full/array/some.js
+/frontend/dashboard/node_modules/core-js/full/array/sort.js
+/frontend/dashboard/node_modules/core-js/full/array/splice.js
+/frontend/dashboard/node_modules/core-js/full/array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/full/array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/full/array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/full/array/unique-by.js
+/frontend/dashboard/node_modules/core-js/full/array/unshift.js
+/frontend/dashboard/node_modules/core-js/full/array/values.js
+/frontend/dashboard/node_modules/core-js/full/array/with.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/constructor.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/detached.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/index.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/is-view.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/slice.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/transfer.js
+/frontend/dashboard/node_modules/core-js/full/array-buffer/transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/full/async-disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/full/async-disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/as-indexed-pairs.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/async-dispose.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/drop.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/every.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/filter.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/find.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/from.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/index.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/indexed.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/map.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/some.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/take.js
+/frontend/dashboard/node_modules/core-js/full/async-iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/full/bigint/index.js
+/frontend/dashboard/node_modules/core-js/full/bigint/range.js
+/frontend/dashboard/node_modules/core-js/full/data-view/get-float16.js
+/frontend/dashboard/node_modules/core-js/full/data-view/get-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/full/data-view/index.js
+/frontend/dashboard/node_modules/core-js/full/data-view/set-float16.js
+/frontend/dashboard/node_modules/core-js/full/data-view/set-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/full/date/get-year.js
+/frontend/dashboard/node_modules/core-js/full/date/index.js
+/frontend/dashboard/node_modules/core-js/full/date/now.js
+/frontend/dashboard/node_modules/core-js/full/date/set-year.js
+/frontend/dashboard/node_modules/core-js/full/date/to-gmt-string.js
+/frontend/dashboard/node_modules/core-js/full/date/to-iso-string.js
+/frontend/dashboard/node_modules/core-js/full/date/to-json.js
+/frontend/dashboard/node_modules/core-js/full/date/to-primitive.js
+/frontend/dashboard/node_modules/core-js/full/date/to-string.js
+/frontend/dashboard/node_modules/core-js/full/disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/full/disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/full/dom-collections/for-each.js
+/frontend/dashboard/node_modules/core-js/full/dom-collections/index.js
+/frontend/dashboard/node_modules/core-js/full/dom-collections/iterator.js
+/frontend/dashboard/node_modules/core-js/full/dom-exception/constructor.js
+/frontend/dashboard/node_modules/core-js/full/dom-exception/index.js
+/frontend/dashboard/node_modules/core-js/full/dom-exception/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/full/error/constructor.js
+/frontend/dashboard/node_modules/core-js/full/error/index.js
+/frontend/dashboard/node_modules/core-js/full/error/is-error.js
+/frontend/dashboard/node_modules/core-js/full/error/to-string.js
+/frontend/dashboard/node_modules/core-js/full/function/virtual/bind.js
+/frontend/dashboard/node_modules/core-js/full/function/virtual/demethodize.js
+/frontend/dashboard/node_modules/core-js/full/function/virtual/index.js
+/frontend/dashboard/node_modules/core-js/full/function/virtual/un-this.js
+/frontend/dashboard/node_modules/core-js/full/function/bind.js
+/frontend/dashboard/node_modules/core-js/full/function/demethodize.js
+/frontend/dashboard/node_modules/core-js/full/function/has-instance.js
+/frontend/dashboard/node_modules/core-js/full/function/index.js
+/frontend/dashboard/node_modules/core-js/full/function/is-callable.js
+/frontend/dashboard/node_modules/core-js/full/function/is-constructor.js
+/frontend/dashboard/node_modules/core-js/full/function/metadata.js
+/frontend/dashboard/node_modules/core-js/full/function/name.js
+/frontend/dashboard/node_modules/core-js/full/function/un-this.js
+/frontend/dashboard/node_modules/core-js/full/instance/at.js
+/frontend/dashboard/node_modules/core-js/full/instance/bind.js
+/frontend/dashboard/node_modules/core-js/full/instance/clamp.js
+/frontend/dashboard/node_modules/core-js/full/instance/code-point-at.js
+/frontend/dashboard/node_modules/core-js/full/instance/code-points.js
+/frontend/dashboard/node_modules/core-js/full/instance/concat.js
+/frontend/dashboard/node_modules/core-js/full/instance/copy-within.js
+/frontend/dashboard/node_modules/core-js/full/instance/demethodize.js
+/frontend/dashboard/node_modules/core-js/full/instance/ends-with.js
+/frontend/dashboard/node_modules/core-js/full/instance/entries.js
+/frontend/dashboard/node_modules/core-js/full/instance/every.js
+/frontend/dashboard/node_modules/core-js/full/instance/fill.js
+/frontend/dashboard/node_modules/core-js/full/instance/filter.js
+/frontend/dashboard/node_modules/core-js/full/instance/filter-out.js
+/frontend/dashboard/node_modules/core-js/full/instance/filter-reject.js
+/frontend/dashboard/node_modules/core-js/full/instance/find.js
+/frontend/dashboard/node_modules/core-js/full/instance/find-index.js
+/frontend/dashboard/node_modules/core-js/full/instance/find-last.js
+/frontend/dashboard/node_modules/core-js/full/instance/find-last-index.js
+/frontend/dashboard/node_modules/core-js/full/instance/flags.js
+/frontend/dashboard/node_modules/core-js/full/instance/flat.js
+/frontend/dashboard/node_modules/core-js/full/instance/flat-map.js
+/frontend/dashboard/node_modules/core-js/full/instance/for-each.js
+/frontend/dashboard/node_modules/core-js/full/instance/group.js
+/frontend/dashboard/node_modules/core-js/full/instance/group-by.js
+/frontend/dashboard/node_modules/core-js/full/instance/group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/full/instance/group-to-map.js
+/frontend/dashboard/node_modules/core-js/full/instance/includes.js
+/frontend/dashboard/node_modules/core-js/full/instance/index-of.js
+/frontend/dashboard/node_modules/core-js/full/instance/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/full/instance/keys.js
+/frontend/dashboard/node_modules/core-js/full/instance/last-index-of.js
+/frontend/dashboard/node_modules/core-js/full/instance/map.js
+/frontend/dashboard/node_modules/core-js/full/instance/match-all.js
+/frontend/dashboard/node_modules/core-js/full/instance/pad-end.js
+/frontend/dashboard/node_modules/core-js/full/instance/pad-start.js
+/frontend/dashboard/node_modules/core-js/full/instance/push.js
+/frontend/dashboard/node_modules/core-js/full/instance/reduce.js
+/frontend/dashboard/node_modules/core-js/full/instance/reduce-right.js
+/frontend/dashboard/node_modules/core-js/full/instance/repeat.js
+/frontend/dashboard/node_modules/core-js/full/instance/replace-all.js
+/frontend/dashboard/node_modules/core-js/full/instance/reverse.js
+/frontend/dashboard/node_modules/core-js/full/instance/slice.js
+/frontend/dashboard/node_modules/core-js/full/instance/some.js
+/frontend/dashboard/node_modules/core-js/full/instance/sort.js
+/frontend/dashboard/node_modules/core-js/full/instance/splice.js
+/frontend/dashboard/node_modules/core-js/full/instance/starts-with.js
+/frontend/dashboard/node_modules/core-js/full/instance/to-reversed.js
+/frontend/dashboard/node_modules/core-js/full/instance/to-sorted.js
+/frontend/dashboard/node_modules/core-js/full/instance/to-spliced.js
+/frontend/dashboard/node_modules/core-js/full/instance/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/full/instance/trim.js
+/frontend/dashboard/node_modules/core-js/full/instance/trim-end.js
+/frontend/dashboard/node_modules/core-js/full/instance/trim-left.js
+/frontend/dashboard/node_modules/core-js/full/instance/trim-right.js
+/frontend/dashboard/node_modules/core-js/full/instance/trim-start.js
+/frontend/dashboard/node_modules/core-js/full/instance/un-this.js
+/frontend/dashboard/node_modules/core-js/full/instance/unique-by.js
+/frontend/dashboard/node_modules/core-js/full/instance/unshift.js
+/frontend/dashboard/node_modules/core-js/full/instance/values.js
+/frontend/dashboard/node_modules/core-js/full/instance/with.js
+/frontend/dashboard/node_modules/core-js/full/iterator/as-indexed-pairs.js
+/frontend/dashboard/node_modules/core-js/full/iterator/chunks.js
+/frontend/dashboard/node_modules/core-js/full/iterator/concat.js
+/frontend/dashboard/node_modules/core-js/full/iterator/dispose.js
+/frontend/dashboard/node_modules/core-js/full/iterator/drop.js
+/frontend/dashboard/node_modules/core-js/full/iterator/every.js
+/frontend/dashboard/node_modules/core-js/full/iterator/filter.js
+/frontend/dashboard/node_modules/core-js/full/iterator/find.js
+/frontend/dashboard/node_modules/core-js/full/iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/full/iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/full/iterator/from.js
+/frontend/dashboard/node_modules/core-js/full/iterator/index.js
+/frontend/dashboard/node_modules/core-js/full/iterator/indexed.js
+/frontend/dashboard/node_modules/core-js/full/iterator/map.js
+/frontend/dashboard/node_modules/core-js/full/iterator/range.js
+/frontend/dashboard/node_modules/core-js/full/iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/full/iterator/sliding.js
+/frontend/dashboard/node_modules/core-js/full/iterator/some.js
+/frontend/dashboard/node_modules/core-js/full/iterator/take.js
+/frontend/dashboard/node_modules/core-js/full/iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/full/iterator/to-async.js
+/frontend/dashboard/node_modules/core-js/full/iterator/windows.js
+/frontend/dashboard/node_modules/core-js/full/iterator/zip.js
+/frontend/dashboard/node_modules/core-js/full/iterator/zip-keyed.js
+/frontend/dashboard/node_modules/core-js/full/json/index.js
+/frontend/dashboard/node_modules/core-js/full/json/is-raw-json.js
+/frontend/dashboard/node_modules/core-js/full/json/parse.js
+/frontend/dashboard/node_modules/core-js/full/json/raw-json.js
+/frontend/dashboard/node_modules/core-js/full/json/stringify.js
+/frontend/dashboard/node_modules/core-js/full/json/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/full/map/delete-all.js
+/frontend/dashboard/node_modules/core-js/full/map/emplace.js
+/frontend/dashboard/node_modules/core-js/full/map/every.js
+/frontend/dashboard/node_modules/core-js/full/map/filter.js
+/frontend/dashboard/node_modules/core-js/full/map/find.js
+/frontend/dashboard/node_modules/core-js/full/map/find-key.js
+/frontend/dashboard/node_modules/core-js/full/map/from.js
+/frontend/dashboard/node_modules/core-js/full/map/get-or-insert.js
+/frontend/dashboard/node_modules/core-js/full/map/get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/full/map/group-by.js
+/frontend/dashboard/node_modules/core-js/full/map/includes.js
+/frontend/dashboard/node_modules/core-js/full/map/index.js
+/frontend/dashboard/node_modules/core-js/full/map/key-by.js
+/frontend/dashboard/node_modules/core-js/full/map/key-of.js
+/frontend/dashboard/node_modules/core-js/full/map/map-keys.js
+/frontend/dashboard/node_modules/core-js/full/map/map-values.js
+/frontend/dashboard/node_modules/core-js/full/map/merge.js
+/frontend/dashboard/node_modules/core-js/full/map/of.js
+/frontend/dashboard/node_modules/core-js/full/map/reduce.js
+/frontend/dashboard/node_modules/core-js/full/map/some.js
+/frontend/dashboard/node_modules/core-js/full/map/update.js
+/frontend/dashboard/node_modules/core-js/full/map/update-or-insert.js
+/frontend/dashboard/node_modules/core-js/full/map/upsert.js
+/frontend/dashboard/node_modules/core-js/full/math/acosh.js
+/frontend/dashboard/node_modules/core-js/full/math/asinh.js
+/frontend/dashboard/node_modules/core-js/full/math/atanh.js
+/frontend/dashboard/node_modules/core-js/full/math/cbrt.js
+/frontend/dashboard/node_modules/core-js/full/math/clamp.js
+/frontend/dashboard/node_modules/core-js/full/math/clz32.js
+/frontend/dashboard/node_modules/core-js/full/math/cosh.js
+/frontend/dashboard/node_modules/core-js/full/math/deg-per-rad.js
+/frontend/dashboard/node_modules/core-js/full/math/degrees.js
+/frontend/dashboard/node_modules/core-js/full/math/expm1.js
+/frontend/dashboard/node_modules/core-js/full/math/f16round.js
+/frontend/dashboard/node_modules/core-js/full/math/fround.js
+/frontend/dashboard/node_modules/core-js/full/math/fscale.js
+/frontend/dashboard/node_modules/core-js/full/math/hypot.js
+/frontend/dashboard/node_modules/core-js/full/math/iaddh.js
+/frontend/dashboard/node_modules/core-js/full/math/imul.js
+/frontend/dashboard/node_modules/core-js/full/math/imulh.js
+/frontend/dashboard/node_modules/core-js/full/math/index.js
+/frontend/dashboard/node_modules/core-js/full/math/isubh.js
+/frontend/dashboard/node_modules/core-js/full/math/log1p.js
+/frontend/dashboard/node_modules/core-js/full/math/log2.js
+/frontend/dashboard/node_modules/core-js/full/math/log10.js
+/frontend/dashboard/node_modules/core-js/full/math/rad-per-deg.js
+/frontend/dashboard/node_modules/core-js/full/math/radians.js
+/frontend/dashboard/node_modules/core-js/full/math/scale.js
+/frontend/dashboard/node_modules/core-js/full/math/seeded-prng.js
+/frontend/dashboard/node_modules/core-js/full/math/sign.js
+/frontend/dashboard/node_modules/core-js/full/math/signbit.js
+/frontend/dashboard/node_modules/core-js/full/math/sinh.js
+/frontend/dashboard/node_modules/core-js/full/math/sum-precise.js
+/frontend/dashboard/node_modules/core-js/full/math/tanh.js
+/frontend/dashboard/node_modules/core-js/full/math/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/full/math/trunc.js
+/frontend/dashboard/node_modules/core-js/full/math/umulh.js
+/frontend/dashboard/node_modules/core-js/full/number/virtual/clamp.js
+/frontend/dashboard/node_modules/core-js/full/number/virtual/index.js
+/frontend/dashboard/node_modules/core-js/full/number/virtual/to-exponential.js
+/frontend/dashboard/node_modules/core-js/full/number/virtual/to-fixed.js
+/frontend/dashboard/node_modules/core-js/full/number/virtual/to-precision.js
+/frontend/dashboard/node_modules/core-js/full/number/clamp.js
+/frontend/dashboard/node_modules/core-js/full/number/constructor.js
+/frontend/dashboard/node_modules/core-js/full/number/epsilon.js
+/frontend/dashboard/node_modules/core-js/full/number/from-string.js
+/frontend/dashboard/node_modules/core-js/full/number/index.js
+/frontend/dashboard/node_modules/core-js/full/number/is-finite.js
+/frontend/dashboard/node_modules/core-js/full/number/is-integer.js
+/frontend/dashboard/node_modules/core-js/full/number/is-nan.js
+/frontend/dashboard/node_modules/core-js/full/number/is-safe-integer.js
+/frontend/dashboard/node_modules/core-js/full/number/max-safe-integer.js
+/frontend/dashboard/node_modules/core-js/full/number/min-safe-integer.js
+/frontend/dashboard/node_modules/core-js/full/number/parse-float.js
+/frontend/dashboard/node_modules/core-js/full/number/parse-int.js
+/frontend/dashboard/node_modules/core-js/full/number/range.js
+/frontend/dashboard/node_modules/core-js/full/number/to-exponential.js
+/frontend/dashboard/node_modules/core-js/full/number/to-fixed.js
+/frontend/dashboard/node_modules/core-js/full/number/to-precision.js
+/frontend/dashboard/node_modules/core-js/full/object/assign.js
+/frontend/dashboard/node_modules/core-js/full/object/create.js
+/frontend/dashboard/node_modules/core-js/full/object/define-getter.js
+/frontend/dashboard/node_modules/core-js/full/object/define-properties.js
+/frontend/dashboard/node_modules/core-js/full/object/define-property.js
+/frontend/dashboard/node_modules/core-js/full/object/define-setter.js
+/frontend/dashboard/node_modules/core-js/full/object/entries.js
+/frontend/dashboard/node_modules/core-js/full/object/freeze.js
+/frontend/dashboard/node_modules/core-js/full/object/from-entries.js
+/frontend/dashboard/node_modules/core-js/full/object/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/full/object/get-own-property-descriptors.js
+/frontend/dashboard/node_modules/core-js/full/object/get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/full/object/get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/full/object/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/full/object/group-by.js
+/frontend/dashboard/node_modules/core-js/full/object/has-own.js
+/frontend/dashboard/node_modules/core-js/full/object/index.js
+/frontend/dashboard/node_modules/core-js/full/object/is.js
+/frontend/dashboard/node_modules/core-js/full/object/is-extensible.js
+/frontend/dashboard/node_modules/core-js/full/object/is-frozen.js
+/frontend/dashboard/node_modules/core-js/full/object/is-sealed.js
+/frontend/dashboard/node_modules/core-js/full/object/iterate-entries.js
+/frontend/dashboard/node_modules/core-js/full/object/iterate-keys.js
+/frontend/dashboard/node_modules/core-js/full/object/iterate-values.js
+/frontend/dashboard/node_modules/core-js/full/object/keys.js
+/frontend/dashboard/node_modules/core-js/full/object/lookup-getter.js
+/frontend/dashboard/node_modules/core-js/full/object/lookup-setter.js
+/frontend/dashboard/node_modules/core-js/full/object/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/full/object/proto.js
+/frontend/dashboard/node_modules/core-js/full/object/seal.js
+/frontend/dashboard/node_modules/core-js/full/object/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/full/object/to-string.js
+/frontend/dashboard/node_modules/core-js/full/object/values.js
+/frontend/dashboard/node_modules/core-js/full/observable/index.js
+/frontend/dashboard/node_modules/core-js/full/promise/all-settled.js
+/frontend/dashboard/node_modules/core-js/full/promise/any.js
+/frontend/dashboard/node_modules/core-js/full/promise/finally.js
+/frontend/dashboard/node_modules/core-js/full/promise/index.js
+/frontend/dashboard/node_modules/core-js/full/promise/try.js
+/frontend/dashboard/node_modules/core-js/full/promise/with-resolvers.js
+/frontend/dashboard/node_modules/core-js/full/reflect/apply.js
+/frontend/dashboard/node_modules/core-js/full/reflect/construct.js
+/frontend/dashboard/node_modules/core-js/full/reflect/define-metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/define-property.js
+/frontend/dashboard/node_modules/core-js/full/reflect/delete-metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/delete-property.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get-metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get-metadata-keys.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get-own-metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get-own-metadata-keys.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/full/reflect/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/full/reflect/has.js
+/frontend/dashboard/node_modules/core-js/full/reflect/has-metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/has-own-metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/index.js
+/frontend/dashboard/node_modules/core-js/full/reflect/is-extensible.js
+/frontend/dashboard/node_modules/core-js/full/reflect/metadata.js
+/frontend/dashboard/node_modules/core-js/full/reflect/own-keys.js
+/frontend/dashboard/node_modules/core-js/full/reflect/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/full/reflect/set.js
+/frontend/dashboard/node_modules/core-js/full/reflect/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/full/reflect/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/full/regexp/constructor.js
+/frontend/dashboard/node_modules/core-js/full/regexp/dot-all.js
+/frontend/dashboard/node_modules/core-js/full/regexp/escape.js
+/frontend/dashboard/node_modules/core-js/full/regexp/flags.js
+/frontend/dashboard/node_modules/core-js/full/regexp/index.js
+/frontend/dashboard/node_modules/core-js/full/regexp/match.js
+/frontend/dashboard/node_modules/core-js/full/regexp/replace.js
+/frontend/dashboard/node_modules/core-js/full/regexp/search.js
+/frontend/dashboard/node_modules/core-js/full/regexp/split.js
+/frontend/dashboard/node_modules/core-js/full/regexp/sticky.js
+/frontend/dashboard/node_modules/core-js/full/regexp/test.js
+/frontend/dashboard/node_modules/core-js/full/regexp/to-string.js
+/frontend/dashboard/node_modules/core-js/full/set/add-all.js
+/frontend/dashboard/node_modules/core-js/full/set/delete-all.js
+/frontend/dashboard/node_modules/core-js/full/set/difference.js
+/frontend/dashboard/node_modules/core-js/full/set/every.js
+/frontend/dashboard/node_modules/core-js/full/set/filter.js
+/frontend/dashboard/node_modules/core-js/full/set/find.js
+/frontend/dashboard/node_modules/core-js/full/set/from.js
+/frontend/dashboard/node_modules/core-js/full/set/index.js
+/frontend/dashboard/node_modules/core-js/full/set/intersection.js
+/frontend/dashboard/node_modules/core-js/full/set/is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/full/set/is-subset-of.js
+/frontend/dashboard/node_modules/core-js/full/set/is-superset-of.js
+/frontend/dashboard/node_modules/core-js/full/set/join.js
+/frontend/dashboard/node_modules/core-js/full/set/map.js
+/frontend/dashboard/node_modules/core-js/full/set/of.js
+/frontend/dashboard/node_modules/core-js/full/set/reduce.js
+/frontend/dashboard/node_modules/core-js/full/set/some.js
+/frontend/dashboard/node_modules/core-js/full/set/symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/full/set/union.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/anchor.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/at.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/big.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/blink.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/bold.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/code-point-at.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/code-points.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/ends-with.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/fixed.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/fontcolor.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/fontsize.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/index.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/italics.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/link.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/match-all.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/pad-end.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/pad-start.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/repeat.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/replace-all.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/small.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/starts-with.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/strike.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/sub.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/substr.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/sup.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/trim.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/trim-end.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/trim-left.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/trim-right.js
+/frontend/dashboard/node_modules/core-js/full/string/virtual/trim-start.js
+/frontend/dashboard/node_modules/core-js/full/string/anchor.js
+/frontend/dashboard/node_modules/core-js/full/string/at.js
+/frontend/dashboard/node_modules/core-js/full/string/big.js
+/frontend/dashboard/node_modules/core-js/full/string/blink.js
+/frontend/dashboard/node_modules/core-js/full/string/bold.js
+/frontend/dashboard/node_modules/core-js/full/string/code-point-at.js
+/frontend/dashboard/node_modules/core-js/full/string/code-points.js
+/frontend/dashboard/node_modules/core-js/full/string/cooked.js
+/frontend/dashboard/node_modules/core-js/full/string/dedent.js
+/frontend/dashboard/node_modules/core-js/full/string/ends-with.js
+/frontend/dashboard/node_modules/core-js/full/string/fixed.js
+/frontend/dashboard/node_modules/core-js/full/string/fontcolor.js
+/frontend/dashboard/node_modules/core-js/full/string/fontsize.js
+/frontend/dashboard/node_modules/core-js/full/string/from-code-point.js
+/frontend/dashboard/node_modules/core-js/full/string/includes.js
+/frontend/dashboard/node_modules/core-js/full/string/index.js
+/frontend/dashboard/node_modules/core-js/full/string/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/full/string/italics.js
+/frontend/dashboard/node_modules/core-js/full/string/iterator.js
+/frontend/dashboard/node_modules/core-js/full/string/link.js
+/frontend/dashboard/node_modules/core-js/full/string/match.js
+/frontend/dashboard/node_modules/core-js/full/string/match-all.js
+/frontend/dashboard/node_modules/core-js/full/string/pad-end.js
+/frontend/dashboard/node_modules/core-js/full/string/pad-start.js
+/frontend/dashboard/node_modules/core-js/full/string/raw.js
+/frontend/dashboard/node_modules/core-js/full/string/repeat.js
+/frontend/dashboard/node_modules/core-js/full/string/replace.js
+/frontend/dashboard/node_modules/core-js/full/string/replace-all.js
+/frontend/dashboard/node_modules/core-js/full/string/search.js
+/frontend/dashboard/node_modules/core-js/full/string/small.js
+/frontend/dashboard/node_modules/core-js/full/string/split.js
+/frontend/dashboard/node_modules/core-js/full/string/starts-with.js
+/frontend/dashboard/node_modules/core-js/full/string/strike.js
+/frontend/dashboard/node_modules/core-js/full/string/sub.js
+/frontend/dashboard/node_modules/core-js/full/string/substr.js
+/frontend/dashboard/node_modules/core-js/full/string/sup.js
+/frontend/dashboard/node_modules/core-js/full/string/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/full/string/trim.js
+/frontend/dashboard/node_modules/core-js/full/string/trim-end.js
+/frontend/dashboard/node_modules/core-js/full/string/trim-left.js
+/frontend/dashboard/node_modules/core-js/full/string/trim-right.js
+/frontend/dashboard/node_modules/core-js/full/string/trim-start.js
+/frontend/dashboard/node_modules/core-js/full/symbol/async-dispose.js
+/frontend/dashboard/node_modules/core-js/full/symbol/async-iterator.js
+/frontend/dashboard/node_modules/core-js/full/symbol/custom-matcher.js
+/frontend/dashboard/node_modules/core-js/full/symbol/description.js
+/frontend/dashboard/node_modules/core-js/full/symbol/dispose.js
+/frontend/dashboard/node_modules/core-js/full/symbol/for.js
+/frontend/dashboard/node_modules/core-js/full/symbol/has-instance.js
+/frontend/dashboard/node_modules/core-js/full/symbol/index.js
+/frontend/dashboard/node_modules/core-js/full/symbol/is-concat-spreadable.js
+/frontend/dashboard/node_modules/core-js/full/symbol/is-registered.js
+/frontend/dashboard/node_modules/core-js/full/symbol/is-registered-symbol.js
+/frontend/dashboard/node_modules/core-js/full/symbol/is-well-known.js
+/frontend/dashboard/node_modules/core-js/full/symbol/is-well-known-symbol.js
+/frontend/dashboard/node_modules/core-js/full/symbol/iterator.js
+/frontend/dashboard/node_modules/core-js/full/symbol/key-for.js
+/frontend/dashboard/node_modules/core-js/full/symbol/match.js
+/frontend/dashboard/node_modules/core-js/full/symbol/match-all.js
+/frontend/dashboard/node_modules/core-js/full/symbol/matcher.js
+/frontend/dashboard/node_modules/core-js/full/symbol/metadata.js
+/frontend/dashboard/node_modules/core-js/full/symbol/metadata-key.js
+/frontend/dashboard/node_modules/core-js/full/symbol/observable.js
+/frontend/dashboard/node_modules/core-js/full/symbol/pattern-match.js
+/frontend/dashboard/node_modules/core-js/full/symbol/replace.js
+/frontend/dashboard/node_modules/core-js/full/symbol/replace-all.js
+/frontend/dashboard/node_modules/core-js/full/symbol/search.js
+/frontend/dashboard/node_modules/core-js/full/symbol/species.js
+/frontend/dashboard/node_modules/core-js/full/symbol/split.js
+/frontend/dashboard/node_modules/core-js/full/symbol/to-primitive.js
+/frontend/dashboard/node_modules/core-js/full/symbol/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/full/symbol/unscopables.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/at.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/copy-within.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/entries.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/every.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/fill.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/filter.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/filter-out.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/filter-reject.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/find.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/find-index.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/find-last.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/float32-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/float64-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/for-each.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/from.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/from-async.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/from-base64.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/from-hex.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/group-by.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/includes.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/index.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/index-of.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/int8-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/int16-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/int32-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/iterator.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/join.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/keys.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/map.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/methods.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/of.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/reduce.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/reverse.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/set.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/set-from-base64.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/set-from-hex.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/slice.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/some.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/sort.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/subarray.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-base64.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-hex.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-locale-string.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/to-string.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/uint8-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/uint8-clamped-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/uint16-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/uint32-array.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/unique-by.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/values.js
+/frontend/dashboard/node_modules/core-js/full/typed-array/with.js
+/frontend/dashboard/node_modules/core-js/full/url/can-parse.js
+/frontend/dashboard/node_modules/core-js/full/url/index.js
+/frontend/dashboard/node_modules/core-js/full/url/parse.js
+/frontend/dashboard/node_modules/core-js/full/url/to-json.js
+/frontend/dashboard/node_modules/core-js/full/url-search-params/index.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/delete-all.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/emplace.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/from.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/get-or-insert.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/index.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/of.js
+/frontend/dashboard/node_modules/core-js/full/weak-map/upsert.js
+/frontend/dashboard/node_modules/core-js/full/weak-set/add-all.js
+/frontend/dashboard/node_modules/core-js/full/weak-set/delete-all.js
+/frontend/dashboard/node_modules/core-js/full/weak-set/from.js
+/frontend/dashboard/node_modules/core-js/full/weak-set/index.js
+/frontend/dashboard/node_modules/core-js/full/weak-set/of.js
+/frontend/dashboard/node_modules/core-js/full/aggregate-error.js
+/frontend/dashboard/node_modules/core-js/full/atob.js
+/frontend/dashboard/node_modules/core-js/full/btoa.js
+/frontend/dashboard/node_modules/core-js/full/clear-immediate.js
+/frontend/dashboard/node_modules/core-js/full/composite-key.js
+/frontend/dashboard/node_modules/core-js/full/composite-symbol.js
+/frontend/dashboard/node_modules/core-js/full/escape.js
+/frontend/dashboard/node_modules/core-js/full/get-iterator.js
+/frontend/dashboard/node_modules/core-js/full/get-iterator-method.js
+/frontend/dashboard/node_modules/core-js/full/global-this.js
+/frontend/dashboard/node_modules/core-js/full/index.js
+/frontend/dashboard/node_modules/core-js/full/is-iterable.js
+/frontend/dashboard/node_modules/core-js/full/parse-float.js
+/frontend/dashboard/node_modules/core-js/full/parse-int.js
+/frontend/dashboard/node_modules/core-js/full/queue-microtask.js
+/frontend/dashboard/node_modules/core-js/full/README.md
+/frontend/dashboard/node_modules/core-js/full/self.js
+/frontend/dashboard/node_modules/core-js/full/set-immediate.js
+/frontend/dashboard/node_modules/core-js/full/set-interval.js
+/frontend/dashboard/node_modules/core-js/full/set-timeout.js
+/frontend/dashboard/node_modules/core-js/full/structured-clone.js
+/frontend/dashboard/node_modules/core-js/full/suppressed-error.js
+/frontend/dashboard/node_modules/core-js/full/unescape.js
+/frontend/dashboard/node_modules/core-js/internals/a-callable.js
+/frontend/dashboard/node_modules/core-js/internals/a-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/a-data-view.js
+/frontend/dashboard/node_modules/core-js/internals/a-map.js
+/frontend/dashboard/node_modules/core-js/internals/a-number.js
+/frontend/dashboard/node_modules/core-js/internals/a-possible-prototype.js
+/frontend/dashboard/node_modules/core-js/internals/a-set.js
+/frontend/dashboard/node_modules/core-js/internals/a-string.js
+/frontend/dashboard/node_modules/core-js/internals/a-weak-key.js
+/frontend/dashboard/node_modules/core-js/internals/a-weak-map.js
+/frontend/dashboard/node_modules/core-js/internals/a-weak-set.js
+/frontend/dashboard/node_modules/core-js/internals/add-disposable-resource.js
+/frontend/dashboard/node_modules/core-js/internals/add-to-unscopables.js
+/frontend/dashboard/node_modules/core-js/internals/advance-string-index.js
+/frontend/dashboard/node_modules/core-js/internals/an-instance.js
+/frontend/dashboard/node_modules/core-js/internals/an-object.js
+/frontend/dashboard/node_modules/core-js/internals/an-object-or-undefined.js
+/frontend/dashboard/node_modules/core-js/internals/an-uint8-array.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-basic-detection.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-byte-length.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-is-detached.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-non-extensible.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-not-detached.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-transfer.js
+/frontend/dashboard/node_modules/core-js/internals/array-buffer-view-core.js
+/frontend/dashboard/node_modules/core-js/internals/array-copy-within.js
+/frontend/dashboard/node_modules/core-js/internals/array-fill.js
+/frontend/dashboard/node_modules/core-js/internals/array-for-each.js
+/frontend/dashboard/node_modules/core-js/internals/array-from.js
+/frontend/dashboard/node_modules/core-js/internals/array-from-async.js
+/frontend/dashboard/node_modules/core-js/internals/array-from-constructor-and-list.js
+/frontend/dashboard/node_modules/core-js/internals/array-group.js
+/frontend/dashboard/node_modules/core-js/internals/array-group-to-map.js
+/frontend/dashboard/node_modules/core-js/internals/array-includes.js
+/frontend/dashboard/node_modules/core-js/internals/array-iteration.js
+/frontend/dashboard/node_modules/core-js/internals/array-iteration-from-last.js
+/frontend/dashboard/node_modules/core-js/internals/array-last-index-of.js
+/frontend/dashboard/node_modules/core-js/internals/array-method-has-species-support.js
+/frontend/dashboard/node_modules/core-js/internals/array-method-is-strict.js
+/frontend/dashboard/node_modules/core-js/internals/array-reduce.js
+/frontend/dashboard/node_modules/core-js/internals/array-set-length.js
+/frontend/dashboard/node_modules/core-js/internals/array-slice.js
+/frontend/dashboard/node_modules/core-js/internals/array-sort.js
+/frontend/dashboard/node_modules/core-js/internals/array-species-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/array-species-create.js
+/frontend/dashboard/node_modules/core-js/internals/array-to-reversed.js
+/frontend/dashboard/node_modules/core-js/internals/array-unique-by.js
+/frontend/dashboard/node_modules/core-js/internals/array-with.js
+/frontend/dashboard/node_modules/core-js/internals/async-from-sync-iterator.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-close.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-create-proxy.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-indexed.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-iteration.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-map.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-prototype.js
+/frontend/dashboard/node_modules/core-js/internals/async-iterator-wrap.js
+/frontend/dashboard/node_modules/core-js/internals/base64-map.js
+/frontend/dashboard/node_modules/core-js/internals/call-with-safe-iteration-closing.js
+/frontend/dashboard/node_modules/core-js/internals/caller.js
+/frontend/dashboard/node_modules/core-js/internals/check-correctness-of-iteration.js
+/frontend/dashboard/node_modules/core-js/internals/classof.js
+/frontend/dashboard/node_modules/core-js/internals/classof-raw.js
+/frontend/dashboard/node_modules/core-js/internals/collection.js
+/frontend/dashboard/node_modules/core-js/internals/collection-from.js
+/frontend/dashboard/node_modules/core-js/internals/collection-of.js
+/frontend/dashboard/node_modules/core-js/internals/collection-strong.js
+/frontend/dashboard/node_modules/core-js/internals/collection-weak.js
+/frontend/dashboard/node_modules/core-js/internals/composite-key.js
+/frontend/dashboard/node_modules/core-js/internals/copy-constructor-properties.js
+/frontend/dashboard/node_modules/core-js/internals/correct-is-regexp-logic.js
+/frontend/dashboard/node_modules/core-js/internals/correct-prototype-getter.js
+/frontend/dashboard/node_modules/core-js/internals/create-html.js
+/frontend/dashboard/node_modules/core-js/internals/create-iter-result-object.js
+/frontend/dashboard/node_modules/core-js/internals/create-non-enumerable-property.js
+/frontend/dashboard/node_modules/core-js/internals/create-property.js
+/frontend/dashboard/node_modules/core-js/internals/create-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/internals/date-to-iso-string.js
+/frontend/dashboard/node_modules/core-js/internals/date-to-primitive.js
+/frontend/dashboard/node_modules/core-js/internals/define-built-in.js
+/frontend/dashboard/node_modules/core-js/internals/define-built-in-accessor.js
+/frontend/dashboard/node_modules/core-js/internals/define-built-ins.js
+/frontend/dashboard/node_modules/core-js/internals/define-global-property.js
+/frontend/dashboard/node_modules/core-js/internals/delete-property-or-throw.js
+/frontend/dashboard/node_modules/core-js/internals/descriptors.js
+/frontend/dashboard/node_modules/core-js/internals/detach-transferable.js
+/frontend/dashboard/node_modules/core-js/internals/document-create-element.js
+/frontend/dashboard/node_modules/core-js/internals/does-not-exceed-safe-integer.js
+/frontend/dashboard/node_modules/core-js/internals/dom-exception-constants.js
+/frontend/dashboard/node_modules/core-js/internals/dom-iterables.js
+/frontend/dashboard/node_modules/core-js/internals/dom-token-list-prototype.js
+/frontend/dashboard/node_modules/core-js/internals/entry-unbind.js
+/frontend/dashboard/node_modules/core-js/internals/entry-virtual.js
+/frontend/dashboard/node_modules/core-js/internals/enum-bug-keys.js
+/frontend/dashboard/node_modules/core-js/internals/environment.js
+/frontend/dashboard/node_modules/core-js/internals/environment-ff-version.js
+/frontend/dashboard/node_modules/core-js/internals/environment-is-ie-or-edge.js
+/frontend/dashboard/node_modules/core-js/internals/environment-is-ios.js
+/frontend/dashboard/node_modules/core-js/internals/environment-is-ios-pebble.js
+/frontend/dashboard/node_modules/core-js/internals/environment-is-node.js
+/frontend/dashboard/node_modules/core-js/internals/environment-is-webos-webkit.js
+/frontend/dashboard/node_modules/core-js/internals/environment-user-agent.js
+/frontend/dashboard/node_modules/core-js/internals/environment-v8-version.js
+/frontend/dashboard/node_modules/core-js/internals/environment-webkit-version.js
+/frontend/dashboard/node_modules/core-js/internals/error-stack-clear.js
+/frontend/dashboard/node_modules/core-js/internals/error-stack-install.js
+/frontend/dashboard/node_modules/core-js/internals/error-stack-installable.js
+/frontend/dashboard/node_modules/core-js/internals/error-to-string.js
+/frontend/dashboard/node_modules/core-js/internals/export.js
+/frontend/dashboard/node_modules/core-js/internals/fails.js
+/frontend/dashboard/node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js
+/frontend/dashboard/node_modules/core-js/internals/flatten-into-array.js
+/frontend/dashboard/node_modules/core-js/internals/freezing.js
+/frontend/dashboard/node_modules/core-js/internals/function-apply.js
+/frontend/dashboard/node_modules/core-js/internals/function-bind.js
+/frontend/dashboard/node_modules/core-js/internals/function-bind-context.js
+/frontend/dashboard/node_modules/core-js/internals/function-bind-native.js
+/frontend/dashboard/node_modules/core-js/internals/function-call.js
+/frontend/dashboard/node_modules/core-js/internals/function-demethodize.js
+/frontend/dashboard/node_modules/core-js/internals/function-name.js
+/frontend/dashboard/node_modules/core-js/internals/function-uncurry-this.js
+/frontend/dashboard/node_modules/core-js/internals/function-uncurry-this-accessor.js
+/frontend/dashboard/node_modules/core-js/internals/function-uncurry-this-clause.js
+/frontend/dashboard/node_modules/core-js/internals/get-alphabet-option.js
+/frontend/dashboard/node_modules/core-js/internals/get-async-iterator.js
+/frontend/dashboard/node_modules/core-js/internals/get-async-iterator-flattenable.js
+/frontend/dashboard/node_modules/core-js/internals/get-built-in.js
+/frontend/dashboard/node_modules/core-js/internals/get-built-in-node-module.js
+/frontend/dashboard/node_modules/core-js/internals/get-built-in-prototype-method.js
+/frontend/dashboard/node_modules/core-js/internals/get-iterator.js
+/frontend/dashboard/node_modules/core-js/internals/get-iterator-direct.js
+/frontend/dashboard/node_modules/core-js/internals/get-iterator-flattenable.js
+/frontend/dashboard/node_modules/core-js/internals/get-iterator-method.js
+/frontend/dashboard/node_modules/core-js/internals/get-iterator-record.js
+/frontend/dashboard/node_modules/core-js/internals/get-json-replacer-function.js
+/frontend/dashboard/node_modules/core-js/internals/get-method.js
+/frontend/dashboard/node_modules/core-js/internals/get-mode-option.js
+/frontend/dashboard/node_modules/core-js/internals/get-set-record.js
+/frontend/dashboard/node_modules/core-js/internals/get-substitution.js
+/frontend/dashboard/node_modules/core-js/internals/global-this.js
+/frontend/dashboard/node_modules/core-js/internals/has-own-property.js
+/frontend/dashboard/node_modules/core-js/internals/hidden-keys.js
+/frontend/dashboard/node_modules/core-js/internals/host-report-errors.js
+/frontend/dashboard/node_modules/core-js/internals/html.js
+/frontend/dashboard/node_modules/core-js/internals/ie8-dom-define.js
+/frontend/dashboard/node_modules/core-js/internals/ieee754.js
+/frontend/dashboard/node_modules/core-js/internals/indexed-object.js
+/frontend/dashboard/node_modules/core-js/internals/inherit-if-required.js
+/frontend/dashboard/node_modules/core-js/internals/inspect-source.js
+/frontend/dashboard/node_modules/core-js/internals/install-error-cause.js
+/frontend/dashboard/node_modules/core-js/internals/internal-metadata.js
+/frontend/dashboard/node_modules/core-js/internals/internal-state.js
+/frontend/dashboard/node_modules/core-js/internals/is-array.js
+/frontend/dashboard/node_modules/core-js/internals/is-array-iterator-method.js
+/frontend/dashboard/node_modules/core-js/internals/is-big-int-array.js
+/frontend/dashboard/node_modules/core-js/internals/is-callable.js
+/frontend/dashboard/node_modules/core-js/internals/is-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/is-data-descriptor.js
+/frontend/dashboard/node_modules/core-js/internals/is-forced.js
+/frontend/dashboard/node_modules/core-js/internals/is-integral-number.js
+/frontend/dashboard/node_modules/core-js/internals/is-iterable.js
+/frontend/dashboard/node_modules/core-js/internals/is-null-or-undefined.js
+/frontend/dashboard/node_modules/core-js/internals/is-object.js
+/frontend/dashboard/node_modules/core-js/internals/is-possible-prototype.js
+/frontend/dashboard/node_modules/core-js/internals/is-pure.js
+/frontend/dashboard/node_modules/core-js/internals/is-raw-json.js
+/frontend/dashboard/node_modules/core-js/internals/is-regexp.js
+/frontend/dashboard/node_modules/core-js/internals/is-symbol.js
+/frontend/dashboard/node_modules/core-js/internals/iterate.js
+/frontend/dashboard/node_modules/core-js/internals/iterate-simple.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-close.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-close-all.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-create-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-create-proxy.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-define.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-helper-throws-on-invalid-iterator.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-helper-without-closing-on-early-error.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-indexed.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-window.js
+/frontend/dashboard/node_modules/core-js/internals/iterator-zip.js
+/frontend/dashboard/node_modules/core-js/internals/iterators.js
+/frontend/dashboard/node_modules/core-js/internals/iterators-core.js
+/frontend/dashboard/node_modules/core-js/internals/length-of-array-like.js
+/frontend/dashboard/node_modules/core-js/internals/make-built-in.js
+/frontend/dashboard/node_modules/core-js/internals/map-helpers.js
+/frontend/dashboard/node_modules/core-js/internals/map-iterate.js
+/frontend/dashboard/node_modules/core-js/internals/map-upsert.js
+/frontend/dashboard/node_modules/core-js/internals/math-clamp.js
+/frontend/dashboard/node_modules/core-js/internals/math-expm1.js
+/frontend/dashboard/node_modules/core-js/internals/math-float-round.js
+/frontend/dashboard/node_modules/core-js/internals/math-fround.js
+/frontend/dashboard/node_modules/core-js/internals/math-log1p.js
+/frontend/dashboard/node_modules/core-js/internals/math-log2.js
+/frontend/dashboard/node_modules/core-js/internals/math-log10.js
+/frontend/dashboard/node_modules/core-js/internals/math-round-ties-to-even.js
+/frontend/dashboard/node_modules/core-js/internals/math-scale.js
+/frontend/dashboard/node_modules/core-js/internals/math-sign.js
+/frontend/dashboard/node_modules/core-js/internals/math-trunc.js
+/frontend/dashboard/node_modules/core-js/internals/microtask.js
+/frontend/dashboard/node_modules/core-js/internals/native-raw-json.js
+/frontend/dashboard/node_modules/core-js/internals/new-promise-capability.js
+/frontend/dashboard/node_modules/core-js/internals/normalize-string-argument.js
+/frontend/dashboard/node_modules/core-js/internals/not-a-nan.js
+/frontend/dashboard/node_modules/core-js/internals/not-a-regexp.js
+/frontend/dashboard/node_modules/core-js/internals/number-is-finite.js
+/frontend/dashboard/node_modules/core-js/internals/number-parse-float.js
+/frontend/dashboard/node_modules/core-js/internals/number-parse-int.js
+/frontend/dashboard/node_modules/core-js/internals/numeric-range-iterator.js
+/frontend/dashboard/node_modules/core-js/internals/object-assign.js
+/frontend/dashboard/node_modules/core-js/internals/object-create.js
+/frontend/dashboard/node_modules/core-js/internals/object-define-properties.js
+/frontend/dashboard/node_modules/core-js/internals/object-define-property.js
+/frontend/dashboard/node_modules/core-js/internals/object-get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/internals/object-get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/internals/object-get-own-property-names-external.js
+/frontend/dashboard/node_modules/core-js/internals/object-get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/internals/object-get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/internals/object-is-extensible.js
+/frontend/dashboard/node_modules/core-js/internals/object-is-prototype-of.js
+/frontend/dashboard/node_modules/core-js/internals/object-iterator.js
+/frontend/dashboard/node_modules/core-js/internals/object-keys.js
+/frontend/dashboard/node_modules/core-js/internals/object-keys-internal.js
+/frontend/dashboard/node_modules/core-js/internals/object-property-is-enumerable.js
+/frontend/dashboard/node_modules/core-js/internals/object-prototype-accessors-forced.js
+/frontend/dashboard/node_modules/core-js/internals/object-set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/internals/object-to-array.js
+/frontend/dashboard/node_modules/core-js/internals/object-to-string.js
+/frontend/dashboard/node_modules/core-js/internals/ordinary-to-primitive.js
+/frontend/dashboard/node_modules/core-js/internals/own-keys.js
+/frontend/dashboard/node_modules/core-js/internals/parse-json-string.js
+/frontend/dashboard/node_modules/core-js/internals/path.js
+/frontend/dashboard/node_modules/core-js/internals/perform.js
+/frontend/dashboard/node_modules/core-js/internals/promise-constructor-detection.js
+/frontend/dashboard/node_modules/core-js/internals/promise-native-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/promise-resolve.js
+/frontend/dashboard/node_modules/core-js/internals/promise-statics-incorrect-iteration.js
+/frontend/dashboard/node_modules/core-js/internals/proxy-accessor.js
+/frontend/dashboard/node_modules/core-js/internals/queue.js
+/frontend/dashboard/node_modules/core-js/internals/README.md
+/frontend/dashboard/node_modules/core-js/internals/reflect-metadata.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-exec.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-exec-abstract.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-flags.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-flags-detection.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-get-flags.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-sticky-helpers.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-unsupported-dot-all.js
+/frontend/dashboard/node_modules/core-js/internals/regexp-unsupported-ncg.js
+/frontend/dashboard/node_modules/core-js/internals/require-object-coercible.js
+/frontend/dashboard/node_modules/core-js/internals/safe-get-built-in.js
+/frontend/dashboard/node_modules/core-js/internals/same-value.js
+/frontend/dashboard/node_modules/core-js/internals/same-value-zero.js
+/frontend/dashboard/node_modules/core-js/internals/schedulers-fix.js
+/frontend/dashboard/node_modules/core-js/internals/set-clone.js
+/frontend/dashboard/node_modules/core-js/internals/set-difference.js
+/frontend/dashboard/node_modules/core-js/internals/set-helpers.js
+/frontend/dashboard/node_modules/core-js/internals/set-intersection.js
+/frontend/dashboard/node_modules/core-js/internals/set-is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/internals/set-is-subset-of.js
+/frontend/dashboard/node_modules/core-js/internals/set-is-superset-of.js
+/frontend/dashboard/node_modules/core-js/internals/set-iterate.js
+/frontend/dashboard/node_modules/core-js/internals/set-method-accept-set-like.js
+/frontend/dashboard/node_modules/core-js/internals/set-method-get-keys-before-cloning-detection.js
+/frontend/dashboard/node_modules/core-js/internals/set-size.js
+/frontend/dashboard/node_modules/core-js/internals/set-species.js
+/frontend/dashboard/node_modules/core-js/internals/set-symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/internals/set-to-string-tag.js
+/frontend/dashboard/node_modules/core-js/internals/set-union.js
+/frontend/dashboard/node_modules/core-js/internals/shared.js
+/frontend/dashboard/node_modules/core-js/internals/shared-key.js
+/frontend/dashboard/node_modules/core-js/internals/shared-store.js
+/frontend/dashboard/node_modules/core-js/internals/species-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/string-cooked.js
+/frontend/dashboard/node_modules/core-js/internals/string-html-forced.js
+/frontend/dashboard/node_modules/core-js/internals/string-multibyte.js
+/frontend/dashboard/node_modules/core-js/internals/string-pad.js
+/frontend/dashboard/node_modules/core-js/internals/string-pad-webkit-bug.js
+/frontend/dashboard/node_modules/core-js/internals/string-parse.js
+/frontend/dashboard/node_modules/core-js/internals/string-punycode-to-ascii.js
+/frontend/dashboard/node_modules/core-js/internals/string-repeat.js
+/frontend/dashboard/node_modules/core-js/internals/string-trim.js
+/frontend/dashboard/node_modules/core-js/internals/string-trim-end.js
+/frontend/dashboard/node_modules/core-js/internals/string-trim-forced.js
+/frontend/dashboard/node_modules/core-js/internals/string-trim-start.js
+/frontend/dashboard/node_modules/core-js/internals/structured-clone-proper-transfer.js
+/frontend/dashboard/node_modules/core-js/internals/symbol-constructor-detection.js
+/frontend/dashboard/node_modules/core-js/internals/symbol-define-to-primitive.js
+/frontend/dashboard/node_modules/core-js/internals/symbol-is-registered.js
+/frontend/dashboard/node_modules/core-js/internals/symbol-is-well-known.js
+/frontend/dashboard/node_modules/core-js/internals/symbol-registry-detection.js
+/frontend/dashboard/node_modules/core-js/internals/task.js
+/frontend/dashboard/node_modules/core-js/internals/this-number-value.js
+/frontend/dashboard/node_modules/core-js/internals/to-absolute-index.js
+/frontend/dashboard/node_modules/core-js/internals/to-big-int.js
+/frontend/dashboard/node_modules/core-js/internals/to-index.js
+/frontend/dashboard/node_modules/core-js/internals/to-indexed-object.js
+/frontend/dashboard/node_modules/core-js/internals/to-integer-or-infinity.js
+/frontend/dashboard/node_modules/core-js/internals/to-length.js
+/frontend/dashboard/node_modules/core-js/internals/to-object.js
+/frontend/dashboard/node_modules/core-js/internals/to-offset.js
+/frontend/dashboard/node_modules/core-js/internals/to-positive-integer.js
+/frontend/dashboard/node_modules/core-js/internals/to-primitive.js
+/frontend/dashboard/node_modules/core-js/internals/to-property-key.js
+/frontend/dashboard/node_modules/core-js/internals/to-set-like.js
+/frontend/dashboard/node_modules/core-js/internals/to-string.js
+/frontend/dashboard/node_modules/core-js/internals/to-string-tag-support.js
+/frontend/dashboard/node_modules/core-js/internals/to-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/internals/try-to-string.js
+/frontend/dashboard/node_modules/core-js/internals/typed-array-constructor.js
+/frontend/dashboard/node_modules/core-js/internals/typed-array-constructors-require-wrappers.js
+/frontend/dashboard/node_modules/core-js/internals/typed-array-from.js
+/frontend/dashboard/node_modules/core-js/internals/typed-array-from-same-type-and-list.js
+/frontend/dashboard/node_modules/core-js/internals/uid.js
+/frontend/dashboard/node_modules/core-js/internals/uint8-from-base64.js
+/frontend/dashboard/node_modules/core-js/internals/uint8-from-hex.js
+/frontend/dashboard/node_modules/core-js/internals/url-constructor-detection.js
+/frontend/dashboard/node_modules/core-js/internals/use-symbol-as-uid.js
+/frontend/dashboard/node_modules/core-js/internals/v8-prototype-define-bug.js
+/frontend/dashboard/node_modules/core-js/internals/validate-arguments-length.js
+/frontend/dashboard/node_modules/core-js/internals/weak-map-basic-detection.js
+/frontend/dashboard/node_modules/core-js/internals/weak-map-helpers.js
+/frontend/dashboard/node_modules/core-js/internals/weak-set-helpers.js
+/frontend/dashboard/node_modules/core-js/internals/well-known-symbol.js
+/frontend/dashboard/node_modules/core-js/internals/well-known-symbol-define.js
+/frontend/dashboard/node_modules/core-js/internals/well-known-symbol-wrapped.js
+/frontend/dashboard/node_modules/core-js/internals/whitespaces.js
+/frontend/dashboard/node_modules/core-js/internals/wrap-error-constructor-with-cause.js
+/frontend/dashboard/node_modules/core-js/modules/es.aggregate-error.cause.js
+/frontend/dashboard/node_modules/core-js/modules/es.aggregate-error.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.aggregate-error.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.at.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.concat.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.copy-within.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.every.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.fill.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.filter.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.find.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.find-index.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.find-last.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.find-last-index.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.flat.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.flat-map.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.for-each.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.from.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.from-async.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.includes.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.index-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.is-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.iterator.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.join.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.last-index-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.map.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.of.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.push.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.reduce-right.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.reverse.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.slice.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.some.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.sort.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.species.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.splice.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.to-reversed.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.to-sorted.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.to-spliced.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.unscopables.flat.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.unscopables.flat-map.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.unshift.js
+/frontend/dashboard/node_modules/core-js/modules/es.array.with.js
+/frontend/dashboard/node_modules/core-js/modules/es.array-buffer.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.array-buffer.detached.js
+/frontend/dashboard/node_modules/core-js/modules/es.array-buffer.is-view.js
+/frontend/dashboard/node_modules/core-js/modules/es.array-buffer.slice.js
+/frontend/dashboard/node_modules/core-js/modules/es.array-buffer.transfer.js
+/frontend/dashboard/node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/modules/es.async-disposable-stack.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.async-iterator.async-dispose.js
+/frontend/dashboard/node_modules/core-js/modules/es.data-view.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.data-view.get-float16.js
+/frontend/dashboard/node_modules/core-js/modules/es.data-view.js
+/frontend/dashboard/node_modules/core-js/modules/es.data-view.set-float16.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.get-year.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.now.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.set-year.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.to-gmt-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.to-iso-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.to-json.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.to-primitive.js
+/frontend/dashboard/node_modules/core-js/modules/es.date.to-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.disposable-stack.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.error.cause.js
+/frontend/dashboard/node_modules/core-js/modules/es.error.is-error.js
+/frontend/dashboard/node_modules/core-js/modules/es.error.to-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.escape.js
+/frontend/dashboard/node_modules/core-js/modules/es.function.bind.js
+/frontend/dashboard/node_modules/core-js/modules/es.function.has-instance.js
+/frontend/dashboard/node_modules/core-js/modules/es.function.name.js
+/frontend/dashboard/node_modules/core-js/modules/es.global-this.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.dispose.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.drop.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.every.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.filter.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.find.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.flat-map.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.for-each.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.from.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.map.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.some.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.take.js
+/frontend/dashboard/node_modules/core-js/modules/es.iterator.to-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.json.stringify.js
+/frontend/dashboard/node_modules/core-js/modules/es.json.to-string-tag.js
+/frontend/dashboard/node_modules/core-js/modules/es.map.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.map.group-by.js
+/frontend/dashboard/node_modules/core-js/modules/es.map.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.acosh.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.asinh.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.atanh.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.cbrt.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.clz32.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.cosh.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.expm1.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.f16round.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.fround.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.hypot.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.imul.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.log1p.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.log2.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.log10.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.sign.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.sinh.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.sum-precise.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.tanh.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.to-string-tag.js
+/frontend/dashboard/node_modules/core-js/modules/es.math.trunc.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.epsilon.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.is-finite.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.is-integer.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.is-nan.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.is-safe-integer.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.max-safe-integer.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.min-safe-integer.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.parse-float.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.parse-int.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.to-exponential.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.to-fixed.js
+/frontend/dashboard/node_modules/core-js/modules/es.number.to-precision.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.assign.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.create.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.define-getter.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.define-properties.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.define-property.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.define-setter.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.entries.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.freeze.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.from-entries.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.get-own-property-descriptors.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.group-by.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.has-own.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.is.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.is-extensible.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.is-frozen.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.is-sealed.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.keys.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.lookup-getter.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.lookup-setter.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.proto.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.seal.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.to-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.object.values.js
+/frontend/dashboard/node_modules/core-js/modules/es.parse-float.js
+/frontend/dashboard/node_modules/core-js/modules/es.parse-int.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.all.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.all-settled.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.any.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.catch.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.finally.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.race.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.reject.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.resolve.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.try.js
+/frontend/dashboard/node_modules/core-js/modules/es.promise.with-resolvers.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.apply.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.construct.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.define-property.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.delete-property.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.get.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.has.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.is-extensible.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.own-keys.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.set.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.reflect.to-string-tag.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.dot-all.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.escape.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.exec.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.flags.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.sticky.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.test.js
+/frontend/dashboard/node_modules/core-js/modules/es.regexp.to-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.difference.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.intersection.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.is-disjoint-from.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.is-subset-of.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.is-superset-of.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.symmetric-difference.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.set.union.v2.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.anchor.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.at-alternative.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.big.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.blink.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.bold.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.code-point-at.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.ends-with.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.fixed.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.fontcolor.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.fontsize.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.from-code-point.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.includes.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.is-well-formed.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.italics.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.iterator.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.link.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.match.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.match-all.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.pad-end.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.pad-start.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.raw.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.repeat.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.replace.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.replace-all.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.search.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.small.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.split.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.starts-with.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.strike.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.sub.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.substr.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.sup.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.to-well-formed.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.trim.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.trim-end.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.trim-left.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.trim-right.js
+/frontend/dashboard/node_modules/core-js/modules/es.string.trim-start.js
+/frontend/dashboard/node_modules/core-js/modules/es.suppressed-error.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.async-dispose.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.async-iterator.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.description.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.dispose.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.for.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.has-instance.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.is-concat-spreadable.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.iterator.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.key-for.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.match.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.match-all.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.replace.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.search.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.species.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.split.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.to-primitive.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.to-string-tag.js
+/frontend/dashboard/node_modules/core-js/modules/es.symbol.unscopables.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.at.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.copy-within.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.every.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.fill.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.filter.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.find.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.find-index.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.find-last.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.find-last-index.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.float32-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.float64-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.for-each.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.from.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.includes.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.index-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.int8-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.int16-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.int32-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.iterator.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.join.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.last-index-of.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.map.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.of.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.reduce-right.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.reverse.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.set.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.slice.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.some.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.sort.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.subarray.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.to-locale-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.to-reversed.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.to-sorted.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.to-string.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.uint8-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.uint8-clamped-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.uint16-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.uint32-array.js
+/frontend/dashboard/node_modules/core-js/modules/es.typed-array.with.js
+/frontend/dashboard/node_modules/core-js/modules/es.uint8-array.from-base64.js
+/frontend/dashboard/node_modules/core-js/modules/es.uint8-array.from-hex.js
+/frontend/dashboard/node_modules/core-js/modules/es.uint8-array.set-from-base64.js
+/frontend/dashboard/node_modules/core-js/modules/es.uint8-array.set-from-hex.js
+/frontend/dashboard/node_modules/core-js/modules/es.uint8-array.to-base64.js
+/frontend/dashboard/node_modules/core-js/modules/es.uint8-array.to-hex.js
+/frontend/dashboard/node_modules/core-js/modules/es.unescape.js
+/frontend/dashboard/node_modules/core-js/modules/es.weak-map.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.weak-map.js
+/frontend/dashboard/node_modules/core-js/modules/es.weak-set.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/es.weak-set.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.aggregate-error.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.at.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.filter-out.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.filter-reject.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.find-last.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.find-last-index.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.from-async.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.group.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.group-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.group-by-to-map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.group-to-map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.is-template-object.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.last-index.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.last-item.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.to-reversed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.to-sorted.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.to-spliced.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.unique-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array.with.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array-buffer.detached.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array-buffer.transfer.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.array-buffer.transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-disposable-stack.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.as-indexed-pairs.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.async-dispose.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.drop.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.every.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.filter.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.find.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.flat-map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.for-each.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.indexed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.some.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.take.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.async-iterator.to-array.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.bigint.range.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.composite-key.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.composite-symbol.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.data-view.get-float16.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.data-view.get-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.data-view.set-float16.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.data-view.set-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.disposable-stack.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.error.is-error.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.function.demethodize.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.function.is-callable.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.function.is-constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.function.metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.function.un-this.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.global-this.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.as-indexed-pairs.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.chunks.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.concat.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.dispose.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.drop.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.every.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.filter.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.find.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.flat-map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.for-each.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.indexed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.range.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.sliding.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.some.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.take.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.to-array.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.to-async.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.windows.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.zip.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.iterator.zip-keyed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.json.is-raw-json.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.json.parse.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.json.raw-json.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.delete-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.emplace.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.every.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.filter.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.find.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.find-key.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.get-or-insert.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.group-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.includes.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.key-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.key-of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.map-keys.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.map-values.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.merge.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.some.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.update.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.update-or-insert.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.map.upsert.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.clamp.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.deg-per-rad.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.degrees.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.f16round.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.fscale.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.iaddh.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.imulh.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.isubh.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.rad-per-deg.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.radians.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.scale.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.seeded-prng.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.signbit.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.sum-precise.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.math.umulh.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.number.clamp.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.number.from-string.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.number.range.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.object.group-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.object.has-own.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.object.iterate-entries.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.object.iterate-keys.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.object.iterate-values.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.observable.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.observable.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.observable.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.observable.of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.promise.all-settled.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.promise.any.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.promise.try.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.promise.with-resolvers.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.define-metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.delete-metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.get-metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.get-metadata-keys.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.get-own-metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.get-own-metadata-keys.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.has-metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.has-own-metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.reflect.metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.regexp.escape.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.add-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.delete-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.difference.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.difference.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.every.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.filter.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.find.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.intersection.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.intersection.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.is-disjoint-from.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.is-subset-of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.is-subset-of.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.is-superset-of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.is-superset-of.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.join.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.map.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.reduce.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.some.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.symmetric-difference.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.union.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.set.union.v2.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.at.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.at-alternative.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.code-points.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.cooked.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.dedent.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.is-well-formed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.match-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.replace-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.string.to-well-formed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.suppressed-error.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.async-dispose.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.custom-matcher.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.dispose.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.is-registered.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.is-registered-symbol.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.is-well-known.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.is-well-known-symbol.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.matcher.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.metadata.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.metadata-key.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.observable.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.pattern-match.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.symbol.replace-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.at.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.filter-out.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.filter-reject.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.find-last.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.find-last-index.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.from-async.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.group-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.to-reversed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.to-sorted.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.to-spliced.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.unique-by.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.typed-array.with.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.uint8-array.from-base64.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.uint8-array.from-hex.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.uint8-array.to-base64.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.uint8-array.to-hex.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.delete-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.emplace.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.get-or-insert.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.get-or-insert-computed.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.of.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-map.upsert.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-set.add-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-set.delete-all.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-set.from.js
+/frontend/dashboard/node_modules/core-js/modules/esnext.weak-set.of.js
+/frontend/dashboard/node_modules/core-js/modules/README.md
+/frontend/dashboard/node_modules/core-js/modules/web.atob.js
+/frontend/dashboard/node_modules/core-js/modules/web.btoa.js
+/frontend/dashboard/node_modules/core-js/modules/web.clear-immediate.js
+/frontend/dashboard/node_modules/core-js/modules/web.dom-collections.for-each.js
+/frontend/dashboard/node_modules/core-js/modules/web.dom-collections.iterator.js
+/frontend/dashboard/node_modules/core-js/modules/web.dom-exception.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/web.dom-exception.stack.js
+/frontend/dashboard/node_modules/core-js/modules/web.dom-exception.to-string-tag.js
+/frontend/dashboard/node_modules/core-js/modules/web.immediate.js
+/frontend/dashboard/node_modules/core-js/modules/web.queue-microtask.js
+/frontend/dashboard/node_modules/core-js/modules/web.self.js
+/frontend/dashboard/node_modules/core-js/modules/web.set-immediate.js
+/frontend/dashboard/node_modules/core-js/modules/web.set-interval.js
+/frontend/dashboard/node_modules/core-js/modules/web.set-timeout.js
+/frontend/dashboard/node_modules/core-js/modules/web.structured-clone.js
+/frontend/dashboard/node_modules/core-js/modules/web.timers.js
+/frontend/dashboard/node_modules/core-js/modules/web.url.can-parse.js
+/frontend/dashboard/node_modules/core-js/modules/web.url.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/web.url.js
+/frontend/dashboard/node_modules/core-js/modules/web.url.parse.js
+/frontend/dashboard/node_modules/core-js/modules/web.url.to-json.js
+/frontend/dashboard/node_modules/core-js/modules/web.url-search-params.constructor.js
+/frontend/dashboard/node_modules/core-js/modules/web.url-search-params.delete.js
+/frontend/dashboard/node_modules/core-js/modules/web.url-search-params.has.js
+/frontend/dashboard/node_modules/core-js/modules/web.url-search-params.js
+/frontend/dashboard/node_modules/core-js/modules/web.url-search-params.size.js
+/frontend/dashboard/node_modules/core-js/proposals/accessible-object-hasownproperty.js
+/frontend/dashboard/node_modules/core-js/proposals/array-buffer-base64.js
+/frontend/dashboard/node_modules/core-js/proposals/array-buffer-transfer.js
+/frontend/dashboard/node_modules/core-js/proposals/array-filtering.js
+/frontend/dashboard/node_modules/core-js/proposals/array-filtering-stage-1.js
+/frontend/dashboard/node_modules/core-js/proposals/array-find-from-last.js
+/frontend/dashboard/node_modules/core-js/proposals/array-flat-map.js
+/frontend/dashboard/node_modules/core-js/proposals/array-from-async.js
+/frontend/dashboard/node_modules/core-js/proposals/array-from-async-stage-2.js
+/frontend/dashboard/node_modules/core-js/proposals/array-grouping.js
+/frontend/dashboard/node_modules/core-js/proposals/array-grouping-stage-3.js
+/frontend/dashboard/node_modules/core-js/proposals/array-grouping-stage-3-2.js
+/frontend/dashboard/node_modules/core-js/proposals/array-grouping-v2.js
+/frontend/dashboard/node_modules/core-js/proposals/array-includes.js
+/frontend/dashboard/node_modules/core-js/proposals/array-is-template-object.js
+/frontend/dashboard/node_modules/core-js/proposals/array-last.js
+/frontend/dashboard/node_modules/core-js/proposals/array-unique.js
+/frontend/dashboard/node_modules/core-js/proposals/async-explicit-resource-management.js
+/frontend/dashboard/node_modules/core-js/proposals/async-iteration.js
+/frontend/dashboard/node_modules/core-js/proposals/async-iterator-helpers.js
+/frontend/dashboard/node_modules/core-js/proposals/change-array-by-copy.js
+/frontend/dashboard/node_modules/core-js/proposals/change-array-by-copy-stage-4.js
+/frontend/dashboard/node_modules/core-js/proposals/collection-methods.js
+/frontend/dashboard/node_modules/core-js/proposals/collection-of-from.js
+/frontend/dashboard/node_modules/core-js/proposals/data-view-get-set-uint8-clamped.js
+/frontend/dashboard/node_modules/core-js/proposals/decorator-metadata.js
+/frontend/dashboard/node_modules/core-js/proposals/decorator-metadata-v2.js
+/frontend/dashboard/node_modules/core-js/proposals/decorators.js
+/frontend/dashboard/node_modules/core-js/proposals/efficient-64-bit-arithmetic.js
+/frontend/dashboard/node_modules/core-js/proposals/error-cause.js
+/frontend/dashboard/node_modules/core-js/proposals/explicit-resource-management.js
+/frontend/dashboard/node_modules/core-js/proposals/extractors.js
+/frontend/dashboard/node_modules/core-js/proposals/float16.js
+/frontend/dashboard/node_modules/core-js/proposals/function-demethodize.js
+/frontend/dashboard/node_modules/core-js/proposals/function-is-callable-is-constructor.js
+/frontend/dashboard/node_modules/core-js/proposals/function-un-this.js
+/frontend/dashboard/node_modules/core-js/proposals/global-this.js
+/frontend/dashboard/node_modules/core-js/proposals/index.js
+/frontend/dashboard/node_modules/core-js/proposals/is-error.js
+/frontend/dashboard/node_modules/core-js/proposals/iterator-chunking.js
+/frontend/dashboard/node_modules/core-js/proposals/iterator-helpers.js
+/frontend/dashboard/node_modules/core-js/proposals/iterator-helpers-stage-3.js
+/frontend/dashboard/node_modules/core-js/proposals/iterator-helpers-stage-3-2.js
+/frontend/dashboard/node_modules/core-js/proposals/iterator-range.js
+/frontend/dashboard/node_modules/core-js/proposals/iterator-sequencing.js
+/frontend/dashboard/node_modules/core-js/proposals/joint-iteration.js
+/frontend/dashboard/node_modules/core-js/proposals/json-parse-with-source.js
+/frontend/dashboard/node_modules/core-js/proposals/keys-composition.js
+/frontend/dashboard/node_modules/core-js/proposals/map-update-or-insert.js
+/frontend/dashboard/node_modules/core-js/proposals/map-upsert.js
+/frontend/dashboard/node_modules/core-js/proposals/map-upsert-stage-2.js
+/frontend/dashboard/node_modules/core-js/proposals/map-upsert-v4.js
+/frontend/dashboard/node_modules/core-js/proposals/math-clamp.js
+/frontend/dashboard/node_modules/core-js/proposals/math-clamp-v2.js
+/frontend/dashboard/node_modules/core-js/proposals/math-extensions.js
+/frontend/dashboard/node_modules/core-js/proposals/math-signbit.js
+/frontend/dashboard/node_modules/core-js/proposals/math-sum.js
+/frontend/dashboard/node_modules/core-js/proposals/number-from-string.js
+/frontend/dashboard/node_modules/core-js/proposals/number-range.js
+/frontend/dashboard/node_modules/core-js/proposals/object-from-entries.js
+/frontend/dashboard/node_modules/core-js/proposals/object-getownpropertydescriptors.js
+/frontend/dashboard/node_modules/core-js/proposals/object-iteration.js
+/frontend/dashboard/node_modules/core-js/proposals/object-values-entries.js
+/frontend/dashboard/node_modules/core-js/proposals/observable.js
+/frontend/dashboard/node_modules/core-js/proposals/pattern-matching.js
+/frontend/dashboard/node_modules/core-js/proposals/pattern-matching-v2.js
+/frontend/dashboard/node_modules/core-js/proposals/promise-all-settled.js
+/frontend/dashboard/node_modules/core-js/proposals/promise-any.js
+/frontend/dashboard/node_modules/core-js/proposals/promise-finally.js
+/frontend/dashboard/node_modules/core-js/proposals/promise-try.js
+/frontend/dashboard/node_modules/core-js/proposals/promise-with-resolvers.js
+/frontend/dashboard/node_modules/core-js/proposals/reflect-metadata.js
+/frontend/dashboard/node_modules/core-js/proposals/regexp-dotall-flag.js
+/frontend/dashboard/node_modules/core-js/proposals/regexp-escaping.js
+/frontend/dashboard/node_modules/core-js/proposals/regexp-named-groups.js
+/frontend/dashboard/node_modules/core-js/proposals/relative-indexing-method.js
+/frontend/dashboard/node_modules/core-js/proposals/seeded-random.js
+/frontend/dashboard/node_modules/core-js/proposals/set-methods.js
+/frontend/dashboard/node_modules/core-js/proposals/set-methods-v2.js
+/frontend/dashboard/node_modules/core-js/proposals/string-at.js
+/frontend/dashboard/node_modules/core-js/proposals/string-code-points.js
+/frontend/dashboard/node_modules/core-js/proposals/string-cooked.js
+/frontend/dashboard/node_modules/core-js/proposals/string-dedent.js
+/frontend/dashboard/node_modules/core-js/proposals/string-left-right-trim.js
+/frontend/dashboard/node_modules/core-js/proposals/string-match-all.js
+/frontend/dashboard/node_modules/core-js/proposals/string-padding.js
+/frontend/dashboard/node_modules/core-js/proposals/string-replace-all.js
+/frontend/dashboard/node_modules/core-js/proposals/string-replace-all-stage-4.js
+/frontend/dashboard/node_modules/core-js/proposals/symbol-description.js
+/frontend/dashboard/node_modules/core-js/proposals/symbol-predicates.js
+/frontend/dashboard/node_modules/core-js/proposals/symbol-predicates-v2.js
+/frontend/dashboard/node_modules/core-js/proposals/url.js
+/frontend/dashboard/node_modules/core-js/proposals/using-statement.js
+/frontend/dashboard/node_modules/core-js/proposals/well-formed-stringify.js
+/frontend/dashboard/node_modules/core-js/proposals/well-formed-unicode-strings.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/at.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/concat.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/copy-within.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/entries.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/every.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/fill.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/filter.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/find.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/find-index.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/find-last.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/find-last-index.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/flat.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/flat-map.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/for-each.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/index.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/index-of.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/join.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/keys.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/last-index-of.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/map.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/push.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/reduce.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/reduce-right.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/reverse.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/slice.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/some.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/sort.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/splice.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/to-reversed.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/to-sorted.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/to-spliced.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/unshift.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/values.js
+/frontend/dashboard/node_modules/core-js/stable/array/virtual/with.js
+/frontend/dashboard/node_modules/core-js/stable/array/at.js
+/frontend/dashboard/node_modules/core-js/stable/array/concat.js
+/frontend/dashboard/node_modules/core-js/stable/array/copy-within.js
+/frontend/dashboard/node_modules/core-js/stable/array/entries.js
+/frontend/dashboard/node_modules/core-js/stable/array/every.js
+/frontend/dashboard/node_modules/core-js/stable/array/fill.js
+/frontend/dashboard/node_modules/core-js/stable/array/filter.js
+/frontend/dashboard/node_modules/core-js/stable/array/find.js
+/frontend/dashboard/node_modules/core-js/stable/array/find-index.js
+/frontend/dashboard/node_modules/core-js/stable/array/find-last.js
+/frontend/dashboard/node_modules/core-js/stable/array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/stable/array/flat.js
+/frontend/dashboard/node_modules/core-js/stable/array/flat-map.js
+/frontend/dashboard/node_modules/core-js/stable/array/for-each.js
+/frontend/dashboard/node_modules/core-js/stable/array/from.js
+/frontend/dashboard/node_modules/core-js/stable/array/from-async.js
+/frontend/dashboard/node_modules/core-js/stable/array/includes.js
+/frontend/dashboard/node_modules/core-js/stable/array/index.js
+/frontend/dashboard/node_modules/core-js/stable/array/index-of.js
+/frontend/dashboard/node_modules/core-js/stable/array/is-array.js
+/frontend/dashboard/node_modules/core-js/stable/array/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/array/join.js
+/frontend/dashboard/node_modules/core-js/stable/array/keys.js
+/frontend/dashboard/node_modules/core-js/stable/array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/stable/array/map.js
+/frontend/dashboard/node_modules/core-js/stable/array/of.js
+/frontend/dashboard/node_modules/core-js/stable/array/push.js
+/frontend/dashboard/node_modules/core-js/stable/array/reduce.js
+/frontend/dashboard/node_modules/core-js/stable/array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/stable/array/reverse.js
+/frontend/dashboard/node_modules/core-js/stable/array/slice.js
+/frontend/dashboard/node_modules/core-js/stable/array/some.js
+/frontend/dashboard/node_modules/core-js/stable/array/sort.js
+/frontend/dashboard/node_modules/core-js/stable/array/splice.js
+/frontend/dashboard/node_modules/core-js/stable/array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/stable/array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/stable/array/to-spliced.js
+/frontend/dashboard/node_modules/core-js/stable/array/unshift.js
+/frontend/dashboard/node_modules/core-js/stable/array/values.js
+/frontend/dashboard/node_modules/core-js/stable/array/with.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/detached.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/index.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/is-view.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/slice.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/transfer.js
+/frontend/dashboard/node_modules/core-js/stable/array-buffer/transfer-to-fixed-length.js
+/frontend/dashboard/node_modules/core-js/stable/async-disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/async-disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/stable/async-iterator/async-dispose.js
+/frontend/dashboard/node_modules/core-js/stable/async-iterator/index.js
+/frontend/dashboard/node_modules/core-js/stable/data-view/get-float16.js
+/frontend/dashboard/node_modules/core-js/stable/data-view/index.js
+/frontend/dashboard/node_modules/core-js/stable/data-view/set-float16.js
+/frontend/dashboard/node_modules/core-js/stable/date/get-year.js
+/frontend/dashboard/node_modules/core-js/stable/date/index.js
+/frontend/dashboard/node_modules/core-js/stable/date/now.js
+/frontend/dashboard/node_modules/core-js/stable/date/set-year.js
+/frontend/dashboard/node_modules/core-js/stable/date/to-gmt-string.js
+/frontend/dashboard/node_modules/core-js/stable/date/to-iso-string.js
+/frontend/dashboard/node_modules/core-js/stable/date/to-json.js
+/frontend/dashboard/node_modules/core-js/stable/date/to-primitive.js
+/frontend/dashboard/node_modules/core-js/stable/date/to-string.js
+/frontend/dashboard/node_modules/core-js/stable/disposable-stack/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/disposable-stack/index.js
+/frontend/dashboard/node_modules/core-js/stable/dom-collections/for-each.js
+/frontend/dashboard/node_modules/core-js/stable/dom-collections/index.js
+/frontend/dashboard/node_modules/core-js/stable/dom-collections/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/dom-exception/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/dom-exception/index.js
+/frontend/dashboard/node_modules/core-js/stable/dom-exception/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/stable/error/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/error/index.js
+/frontend/dashboard/node_modules/core-js/stable/error/is-error.js
+/frontend/dashboard/node_modules/core-js/stable/error/to-string.js
+/frontend/dashboard/node_modules/core-js/stable/function/virtual/bind.js
+/frontend/dashboard/node_modules/core-js/stable/function/virtual/index.js
+/frontend/dashboard/node_modules/core-js/stable/function/bind.js
+/frontend/dashboard/node_modules/core-js/stable/function/has-instance.js
+/frontend/dashboard/node_modules/core-js/stable/function/index.js
+/frontend/dashboard/node_modules/core-js/stable/function/name.js
+/frontend/dashboard/node_modules/core-js/stable/instance/at.js
+/frontend/dashboard/node_modules/core-js/stable/instance/bind.js
+/frontend/dashboard/node_modules/core-js/stable/instance/code-point-at.js
+/frontend/dashboard/node_modules/core-js/stable/instance/concat.js
+/frontend/dashboard/node_modules/core-js/stable/instance/copy-within.js
+/frontend/dashboard/node_modules/core-js/stable/instance/ends-with.js
+/frontend/dashboard/node_modules/core-js/stable/instance/entries.js
+/frontend/dashboard/node_modules/core-js/stable/instance/every.js
+/frontend/dashboard/node_modules/core-js/stable/instance/fill.js
+/frontend/dashboard/node_modules/core-js/stable/instance/filter.js
+/frontend/dashboard/node_modules/core-js/stable/instance/find.js
+/frontend/dashboard/node_modules/core-js/stable/instance/find-index.js
+/frontend/dashboard/node_modules/core-js/stable/instance/find-last.js
+/frontend/dashboard/node_modules/core-js/stable/instance/find-last-index.js
+/frontend/dashboard/node_modules/core-js/stable/instance/flags.js
+/frontend/dashboard/node_modules/core-js/stable/instance/flat.js
+/frontend/dashboard/node_modules/core-js/stable/instance/flat-map.js
+/frontend/dashboard/node_modules/core-js/stable/instance/for-each.js
+/frontend/dashboard/node_modules/core-js/stable/instance/includes.js
+/frontend/dashboard/node_modules/core-js/stable/instance/index-of.js
+/frontend/dashboard/node_modules/core-js/stable/instance/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/stable/instance/keys.js
+/frontend/dashboard/node_modules/core-js/stable/instance/last-index-of.js
+/frontend/dashboard/node_modules/core-js/stable/instance/map.js
+/frontend/dashboard/node_modules/core-js/stable/instance/match-all.js
+/frontend/dashboard/node_modules/core-js/stable/instance/pad-end.js
+/frontend/dashboard/node_modules/core-js/stable/instance/pad-start.js
+/frontend/dashboard/node_modules/core-js/stable/instance/push.js
+/frontend/dashboard/node_modules/core-js/stable/instance/reduce.js
+/frontend/dashboard/node_modules/core-js/stable/instance/reduce-right.js
+/frontend/dashboard/node_modules/core-js/stable/instance/repeat.js
+/frontend/dashboard/node_modules/core-js/stable/instance/replace-all.js
+/frontend/dashboard/node_modules/core-js/stable/instance/reverse.js
+/frontend/dashboard/node_modules/core-js/stable/instance/slice.js
+/frontend/dashboard/node_modules/core-js/stable/instance/some.js
+/frontend/dashboard/node_modules/core-js/stable/instance/sort.js
+/frontend/dashboard/node_modules/core-js/stable/instance/splice.js
+/frontend/dashboard/node_modules/core-js/stable/instance/starts-with.js
+/frontend/dashboard/node_modules/core-js/stable/instance/to-reversed.js
+/frontend/dashboard/node_modules/core-js/stable/instance/to-sorted.js
+/frontend/dashboard/node_modules/core-js/stable/instance/to-spliced.js
+/frontend/dashboard/node_modules/core-js/stable/instance/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/stable/instance/trim.js
+/frontend/dashboard/node_modules/core-js/stable/instance/trim-end.js
+/frontend/dashboard/node_modules/core-js/stable/instance/trim-left.js
+/frontend/dashboard/node_modules/core-js/stable/instance/trim-right.js
+/frontend/dashboard/node_modules/core-js/stable/instance/trim-start.js
+/frontend/dashboard/node_modules/core-js/stable/instance/unshift.js
+/frontend/dashboard/node_modules/core-js/stable/instance/values.js
+/frontend/dashboard/node_modules/core-js/stable/instance/with.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/dispose.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/drop.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/every.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/filter.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/find.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/flat-map.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/for-each.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/from.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/index.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/map.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/reduce.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/some.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/take.js
+/frontend/dashboard/node_modules/core-js/stable/iterator/to-array.js
+/frontend/dashboard/node_modules/core-js/stable/json/index.js
+/frontend/dashboard/node_modules/core-js/stable/json/stringify.js
+/frontend/dashboard/node_modules/core-js/stable/json/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/stable/map/group-by.js
+/frontend/dashboard/node_modules/core-js/stable/map/index.js
+/frontend/dashboard/node_modules/core-js/stable/math/acosh.js
+/frontend/dashboard/node_modules/core-js/stable/math/asinh.js
+/frontend/dashboard/node_modules/core-js/stable/math/atanh.js
+/frontend/dashboard/node_modules/core-js/stable/math/cbrt.js
+/frontend/dashboard/node_modules/core-js/stable/math/clz32.js
+/frontend/dashboard/node_modules/core-js/stable/math/cosh.js
+/frontend/dashboard/node_modules/core-js/stable/math/expm1.js
+/frontend/dashboard/node_modules/core-js/stable/math/f16round.js
+/frontend/dashboard/node_modules/core-js/stable/math/fround.js
+/frontend/dashboard/node_modules/core-js/stable/math/hypot.js
+/frontend/dashboard/node_modules/core-js/stable/math/imul.js
+/frontend/dashboard/node_modules/core-js/stable/math/index.js
+/frontend/dashboard/node_modules/core-js/stable/math/log1p.js
+/frontend/dashboard/node_modules/core-js/stable/math/log2.js
+/frontend/dashboard/node_modules/core-js/stable/math/log10.js
+/frontend/dashboard/node_modules/core-js/stable/math/sign.js
+/frontend/dashboard/node_modules/core-js/stable/math/sinh.js
+/frontend/dashboard/node_modules/core-js/stable/math/sum-precise.js
+/frontend/dashboard/node_modules/core-js/stable/math/tanh.js
+/frontend/dashboard/node_modules/core-js/stable/math/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/stable/math/trunc.js
+/frontend/dashboard/node_modules/core-js/stable/number/virtual/index.js
+/frontend/dashboard/node_modules/core-js/stable/number/virtual/to-exponential.js
+/frontend/dashboard/node_modules/core-js/stable/number/virtual/to-fixed.js
+/frontend/dashboard/node_modules/core-js/stable/number/virtual/to-precision.js
+/frontend/dashboard/node_modules/core-js/stable/number/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/number/epsilon.js
+/frontend/dashboard/node_modules/core-js/stable/number/index.js
+/frontend/dashboard/node_modules/core-js/stable/number/is-finite.js
+/frontend/dashboard/node_modules/core-js/stable/number/is-integer.js
+/frontend/dashboard/node_modules/core-js/stable/number/is-nan.js
+/frontend/dashboard/node_modules/core-js/stable/number/is-safe-integer.js
+/frontend/dashboard/node_modules/core-js/stable/number/max-safe-integer.js
+/frontend/dashboard/node_modules/core-js/stable/number/min-safe-integer.js
+/frontend/dashboard/node_modules/core-js/stable/number/parse-float.js
+/frontend/dashboard/node_modules/core-js/stable/number/parse-int.js
+/frontend/dashboard/node_modules/core-js/stable/number/to-exponential.js
+/frontend/dashboard/node_modules/core-js/stable/number/to-fixed.js
+/frontend/dashboard/node_modules/core-js/stable/number/to-precision.js
+/frontend/dashboard/node_modules/core-js/stable/object/assign.js
+/frontend/dashboard/node_modules/core-js/stable/object/create.js
+/frontend/dashboard/node_modules/core-js/stable/object/define-getter.js
+/frontend/dashboard/node_modules/core-js/stable/object/define-properties.js
+/frontend/dashboard/node_modules/core-js/stable/object/define-property.js
+/frontend/dashboard/node_modules/core-js/stable/object/define-setter.js
+/frontend/dashboard/node_modules/core-js/stable/object/entries.js
+/frontend/dashboard/node_modules/core-js/stable/object/freeze.js
+/frontend/dashboard/node_modules/core-js/stable/object/from-entries.js
+/frontend/dashboard/node_modules/core-js/stable/object/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/stable/object/get-own-property-descriptors.js
+/frontend/dashboard/node_modules/core-js/stable/object/get-own-property-names.js
+/frontend/dashboard/node_modules/core-js/stable/object/get-own-property-symbols.js
+/frontend/dashboard/node_modules/core-js/stable/object/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/stable/object/group-by.js
+/frontend/dashboard/node_modules/core-js/stable/object/has-own.js
+/frontend/dashboard/node_modules/core-js/stable/object/index.js
+/frontend/dashboard/node_modules/core-js/stable/object/is.js
+/frontend/dashboard/node_modules/core-js/stable/object/is-extensible.js
+/frontend/dashboard/node_modules/core-js/stable/object/is-frozen.js
+/frontend/dashboard/node_modules/core-js/stable/object/is-sealed.js
+/frontend/dashboard/node_modules/core-js/stable/object/keys.js
+/frontend/dashboard/node_modules/core-js/stable/object/lookup-getter.js
+/frontend/dashboard/node_modules/core-js/stable/object/lookup-setter.js
+/frontend/dashboard/node_modules/core-js/stable/object/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/stable/object/proto.js
+/frontend/dashboard/node_modules/core-js/stable/object/seal.js
+/frontend/dashboard/node_modules/core-js/stable/object/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/stable/object/to-string.js
+/frontend/dashboard/node_modules/core-js/stable/object/values.js
+/frontend/dashboard/node_modules/core-js/stable/promise/all-settled.js
+/frontend/dashboard/node_modules/core-js/stable/promise/any.js
+/frontend/dashboard/node_modules/core-js/stable/promise/finally.js
+/frontend/dashboard/node_modules/core-js/stable/promise/index.js
+/frontend/dashboard/node_modules/core-js/stable/promise/try.js
+/frontend/dashboard/node_modules/core-js/stable/promise/with-resolvers.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/apply.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/construct.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/define-property.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/delete-property.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/get.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/get-own-property-descriptor.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/get-prototype-of.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/has.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/index.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/is-extensible.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/own-keys.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/prevent-extensions.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/set.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/set-prototype-of.js
+/frontend/dashboard/node_modules/core-js/stable/reflect/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/constructor.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/dot-all.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/escape.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/flags.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/index.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/match.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/replace.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/search.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/split.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/sticky.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/test.js
+/frontend/dashboard/node_modules/core-js/stable/regexp/to-string.js
+/frontend/dashboard/node_modules/core-js/stable/set/difference.js
+/frontend/dashboard/node_modules/core-js/stable/set/index.js
+/frontend/dashboard/node_modules/core-js/stable/set/intersection.js
+/frontend/dashboard/node_modules/core-js/stable/set/is-disjoint-from.js
+/frontend/dashboard/node_modules/core-js/stable/set/is-subset-of.js
+/frontend/dashboard/node_modules/core-js/stable/set/is-superset-of.js
+/frontend/dashboard/node_modules/core-js/stable/set/symmetric-difference.js
+/frontend/dashboard/node_modules/core-js/stable/set/union.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/anchor.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/at.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/big.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/blink.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/bold.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/code-point-at.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/ends-with.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/fixed.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/fontcolor.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/fontsize.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/includes.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/index.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/italics.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/link.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/match-all.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/pad-end.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/pad-start.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/repeat.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/replace-all.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/small.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/starts-with.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/strike.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/sub.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/substr.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/sup.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/trim.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/trim-end.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/trim-left.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/trim-right.js
+/frontend/dashboard/node_modules/core-js/stable/string/virtual/trim-start.js
+/frontend/dashboard/node_modules/core-js/stable/string/anchor.js
+/frontend/dashboard/node_modules/core-js/stable/string/at.js
+/frontend/dashboard/node_modules/core-js/stable/string/big.js
+/frontend/dashboard/node_modules/core-js/stable/string/blink.js
+/frontend/dashboard/node_modules/core-js/stable/string/bold.js
+/frontend/dashboard/node_modules/core-js/stable/string/code-point-at.js
+/frontend/dashboard/node_modules/core-js/stable/string/ends-with.js
+/frontend/dashboard/node_modules/core-js/stable/string/fixed.js
+/frontend/dashboard/node_modules/core-js/stable/string/fontcolor.js
+/frontend/dashboard/node_modules/core-js/stable/string/fontsize.js
+/frontend/dashboard/node_modules/core-js/stable/string/from-code-point.js
+/frontend/dashboard/node_modules/core-js/stable/string/includes.js
+/frontend/dashboard/node_modules/core-js/stable/string/index.js
+/frontend/dashboard/node_modules/core-js/stable/string/is-well-formed.js
+/frontend/dashboard/node_modules/core-js/stable/string/italics.js
+/frontend/dashboard/node_modules/core-js/stable/string/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/string/link.js
+/frontend/dashboard/node_modules/core-js/stable/string/match.js
+/frontend/dashboard/node_modules/core-js/stable/string/match-all.js
+/frontend/dashboard/node_modules/core-js/stable/string/pad-end.js
+/frontend/dashboard/node_modules/core-js/stable/string/pad-start.js
+/frontend/dashboard/node_modules/core-js/stable/string/raw.js
+/frontend/dashboard/node_modules/core-js/stable/string/repeat.js
+/frontend/dashboard/node_modules/core-js/stable/string/replace.js
+/frontend/dashboard/node_modules/core-js/stable/string/replace-all.js
+/frontend/dashboard/node_modules/core-js/stable/string/search.js
+/frontend/dashboard/node_modules/core-js/stable/string/small.js
+/frontend/dashboard/node_modules/core-js/stable/string/split.js
+/frontend/dashboard/node_modules/core-js/stable/string/starts-with.js
+/frontend/dashboard/node_modules/core-js/stable/string/strike.js
+/frontend/dashboard/node_modules/core-js/stable/string/sub.js
+/frontend/dashboard/node_modules/core-js/stable/string/substr.js
+/frontend/dashboard/node_modules/core-js/stable/string/sup.js
+/frontend/dashboard/node_modules/core-js/stable/string/to-well-formed.js
+/frontend/dashboard/node_modules/core-js/stable/string/trim.js
+/frontend/dashboard/node_modules/core-js/stable/string/trim-end.js
+/frontend/dashboard/node_modules/core-js/stable/string/trim-left.js
+/frontend/dashboard/node_modules/core-js/stable/string/trim-right.js
+/frontend/dashboard/node_modules/core-js/stable/string/trim-start.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/async-dispose.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/async-iterator.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/description.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/dispose.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/for.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/has-instance.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/index.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/is-concat-spreadable.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/key-for.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/match.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/match-all.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/replace.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/search.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/species.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/split.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/to-primitive.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/to-string-tag.js
+/frontend/dashboard/node_modules/core-js/stable/symbol/unscopables.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/at.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/copy-within.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/entries.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/every.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/fill.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/filter.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/find.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/find-index.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/find-last.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/find-last-index.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/float32-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/float64-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/for-each.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/from.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/from-base64.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/from-hex.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/includes.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/index.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/index-of.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/int8-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/int16-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/int32-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/iterator.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/join.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/keys.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/last-index-of.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/map.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/methods.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/of.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/reduce.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/reduce-right.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/reverse.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/set.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/set-from-base64.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/set-from-hex.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/slice.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/some.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/sort.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/subarray.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/to-base64.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/to-hex.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/to-locale-string.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/to-reversed.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/to-sorted.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/to-string.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/uint8-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/uint8-clamped-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/uint16-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/uint32-array.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/values.js
+/frontend/dashboard/node_modules/core-js/stable/typed-array/with.js
+/frontend/dashboard/node_modules/core-js/stable/url/can-parse.js
+/frontend/dashboard/node_modules/core-js/stable/url/index.js
+/frontend/dashboard/node_modules/core-js/stable/url/parse.js
+/frontend/dashboard/node_modules/core-js/stable/url/to-json.js
+/frontend/dashboard/node_modules/core-js/stable/url-search-params/index.js
+/frontend/dashboard/node_modules/core-js/stable/weak-map/index.js
+/frontend/dashboard/node_modules/core-js/stable/weak-set/index.js
+/frontend/dashboard/node_modules/core-js/stable/aggregate-error.js
+/frontend/dashboard/node_modules/core-js/stable/atob.js
+/frontend/dashboard/node_modules/core-js/stable/btoa.js
+/frontend/dashboard/node_modules/core-js/stable/clear-immediate.js
+/frontend/dashboard/node_modules/core-js/stable/escape.js
+/frontend/dashboard/node_modules/core-js/stable/get-iterator.js
+/frontend/dashboard/node_modules/core-js/stable/get-iterator-method.js
+/frontend/dashboard/node_modules/core-js/stable/global-this.js
+/frontend/dashboard/node_modules/core-js/stable/index.js
+/frontend/dashboard/node_modules/core-js/stable/is-iterable.js
+/frontend/dashboard/node_modules/core-js/stable/parse-float.js
+/frontend/dashboard/node_modules/core-js/stable/parse-int.js
+/frontend/dashboard/node_modules/core-js/stable/queue-microtask.js
+/frontend/dashboard/node_modules/core-js/stable/README.md
+/frontend/dashboard/node_modules/core-js/stable/self.js
+/frontend/dashboard/node_modules/core-js/stable/set-immediate.js
+/frontend/dashboard/node_modules/core-js/stable/set-interval.js
+/frontend/dashboard/node_modules/core-js/stable/set-timeout.js
+/frontend/dashboard/node_modules/core-js/stable/structured-clone.js
+/frontend/dashboard/node_modules/core-js/stable/suppressed-error.js
+/frontend/dashboard/node_modules/core-js/stable/unescape.js
+/frontend/dashboard/node_modules/core-js/stage/0.js
+/frontend/dashboard/node_modules/core-js/stage/1.js
+/frontend/dashboard/node_modules/core-js/stage/2.7.js
+/frontend/dashboard/node_modules/core-js/stage/2.js
+/frontend/dashboard/node_modules/core-js/stage/3.js
+/frontend/dashboard/node_modules/core-js/stage/4.js
+/frontend/dashboard/node_modules/core-js/stage/index.js
+/frontend/dashboard/node_modules/core-js/stage/pre.js
+/frontend/dashboard/node_modules/core-js/stage/README.md
+/frontend/dashboard/node_modules/core-js/web/dom-collections.js
+/frontend/dashboard/node_modules/core-js/web/dom-exception.js
+/frontend/dashboard/node_modules/core-js/web/immediate.js
+/frontend/dashboard/node_modules/core-js/web/index.js
+/frontend/dashboard/node_modules/core-js/web/queue-microtask.js
+/frontend/dashboard/node_modules/core-js/web/README.md
+/frontend/dashboard/node_modules/core-js/web/structured-clone.js
+/frontend/dashboard/node_modules/core-js/web/timers.js
+/frontend/dashboard/node_modules/core-js/web/url.js
+/frontend/dashboard/node_modules/core-js/web/url-search-params.js
+/frontend/dashboard/node_modules/core-js/configurator.js
+/frontend/dashboard/node_modules/core-js/index.js
+/frontend/dashboard/node_modules/core-js/LICENSE
+/frontend/dashboard/node_modules/core-js/package.json
+/frontend/dashboard/node_modules/core-js/postinstall.js
+/frontend/dashboard/node_modules/core-js/README.md
+/frontend/dashboard/node_modules/csstype/index.d.ts
+/frontend/dashboard/node_modules/csstype/index.js.flow
+/frontend/dashboard/node_modules/csstype/LICENSE
+/frontend/dashboard/node_modules/csstype/package.json
+/frontend/dashboard/node_modules/csstype/README.md
+/frontend/dashboard/node_modules/dayjs/esm/locale/af.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/am.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-dz.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-iq.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-kw.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-ly.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-ma.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-sa.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ar-tn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/az.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/be.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bg.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bi.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bm.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bn-bd.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bo.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/br.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/bs.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ca.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/cs.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/cv.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/cy.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/da.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/de.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/de-at.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/de-ch.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/dv.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/el.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-au.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-ca.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-gb.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-ie.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-il.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-in.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-nz.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-sg.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/en-tt.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/eo.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/es.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/es-do.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/es-mx.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/es-pr.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/es-us.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/et.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/eu.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fa.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fi.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fo.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fr.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fr-ca.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fr-ch.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/fy.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ga.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/gd.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/gl.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/gom-latn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/gu.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/he.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/hi.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/hr.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ht.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/hu.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/hy-am.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/id.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/locale/is.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/it.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/it-ch.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ja.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/jv.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ka.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/kk.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/km.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/kn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ko.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ku.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ky.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/lb.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/lo.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/lt.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/lv.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/me.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/mi.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/mk.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ml.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/mn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/mr.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ms.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ms-my.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/mt.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/my.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/nb.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ne.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/nl.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/nl-be.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/nn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/oc-lnc.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/pa-in.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/pl.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/pt.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/pt-br.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/rn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ro.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ru.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/rw.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sd.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/se.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/si.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sk.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sl.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sq.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sr.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sr-cyrl.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ss.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sv.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sv-fi.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/sw.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ta.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/te.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tet.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tg.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/th.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tk.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tl-ph.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tlh.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tr.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/types.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/locale/tzl.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tzm.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/tzm-latn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ug-cn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/uk.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/ur.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/uz.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/uz-latn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/vi.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/x-pseudo.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/yo.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/zh.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/zh-cn.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/zh-hk.js
+/frontend/dashboard/node_modules/dayjs/esm/locale/zh-tw.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/advancedFormat/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/advancedFormat/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/arraySupport/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/arraySupport/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/badMutable/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/badMutable/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/bigIntSupport/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/bigIntSupport/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/buddhistEra/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/buddhistEra/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/calendar/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/calendar/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/customParseFormat/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/customParseFormat/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/dayOfYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/dayOfYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/devHelper/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/devHelper/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/duration/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/duration/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isBetween/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isBetween/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isLeapYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isLeapYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isMoment/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isMoment/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isoWeek/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isoWeek/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isoWeeksInYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isSameOrAfter/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isSameOrAfter/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isSameOrBefore/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isSameOrBefore/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isToday/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isToday/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isTomorrow/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isTomorrow/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isYesterday/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/isYesterday/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/localeData/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/localeData/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/localizedFormat/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/localizedFormat/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/localizedFormat/utils.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/minMax/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/minMax/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/negativeYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/negativeYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/objectSupport/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/objectSupport/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/pluralGetSet/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/pluralGetSet/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/preParsePostFormat/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/preParsePostFormat/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/quarterOfYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/quarterOfYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/relativeTime/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/relativeTime/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/timezone/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/timezone/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/toArray/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/toArray/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/toObject/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/toObject/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/updateLocale/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/updateLocale/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/utc/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/utc/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/weekday/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/weekday/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/weekOfYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/weekOfYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/plugin/weekYear/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/plugin/weekYear/index.js
+/frontend/dashboard/node_modules/dayjs/esm/constant.js
+/frontend/dashboard/node_modules/dayjs/esm/index.d.ts
+/frontend/dashboard/node_modules/dayjs/esm/index.js
+/frontend/dashboard/node_modules/dayjs/esm/utils.js
+/frontend/dashboard/node_modules/dayjs/locale/af.js
+/frontend/dashboard/node_modules/dayjs/locale/am.js
+/frontend/dashboard/node_modules/dayjs/locale/ar.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-dz.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-iq.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-kw.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-ly.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-ma.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-sa.js
+/frontend/dashboard/node_modules/dayjs/locale/ar-tn.js
+/frontend/dashboard/node_modules/dayjs/locale/az.js
+/frontend/dashboard/node_modules/dayjs/locale/be.js
+/frontend/dashboard/node_modules/dayjs/locale/bg.js
+/frontend/dashboard/node_modules/dayjs/locale/bi.js
+/frontend/dashboard/node_modules/dayjs/locale/bm.js
+/frontend/dashboard/node_modules/dayjs/locale/bn.js
+/frontend/dashboard/node_modules/dayjs/locale/bn-bd.js
+/frontend/dashboard/node_modules/dayjs/locale/bo.js
+/frontend/dashboard/node_modules/dayjs/locale/br.js
+/frontend/dashboard/node_modules/dayjs/locale/bs.js
+/frontend/dashboard/node_modules/dayjs/locale/ca.js
+/frontend/dashboard/node_modules/dayjs/locale/cs.js
+/frontend/dashboard/node_modules/dayjs/locale/cv.js
+/frontend/dashboard/node_modules/dayjs/locale/cy.js
+/frontend/dashboard/node_modules/dayjs/locale/da.js
+/frontend/dashboard/node_modules/dayjs/locale/de.js
+/frontend/dashboard/node_modules/dayjs/locale/de-at.js
+/frontend/dashboard/node_modules/dayjs/locale/de-ch.js
+/frontend/dashboard/node_modules/dayjs/locale/dv.js
+/frontend/dashboard/node_modules/dayjs/locale/el.js
+/frontend/dashboard/node_modules/dayjs/locale/en.js
+/frontend/dashboard/node_modules/dayjs/locale/en-au.js
+/frontend/dashboard/node_modules/dayjs/locale/en-ca.js
+/frontend/dashboard/node_modules/dayjs/locale/en-gb.js
+/frontend/dashboard/node_modules/dayjs/locale/en-ie.js
+/frontend/dashboard/node_modules/dayjs/locale/en-il.js
+/frontend/dashboard/node_modules/dayjs/locale/en-in.js
+/frontend/dashboard/node_modules/dayjs/locale/en-nz.js
+/frontend/dashboard/node_modules/dayjs/locale/en-sg.js
+/frontend/dashboard/node_modules/dayjs/locale/en-tt.js
+/frontend/dashboard/node_modules/dayjs/locale/eo.js
+/frontend/dashboard/node_modules/dayjs/locale/es.js
+/frontend/dashboard/node_modules/dayjs/locale/es-do.js
+/frontend/dashboard/node_modules/dayjs/locale/es-mx.js
+/frontend/dashboard/node_modules/dayjs/locale/es-pr.js
+/frontend/dashboard/node_modules/dayjs/locale/es-us.js
+/frontend/dashboard/node_modules/dayjs/locale/et.js
+/frontend/dashboard/node_modules/dayjs/locale/eu.js
+/frontend/dashboard/node_modules/dayjs/locale/fa.js
+/frontend/dashboard/node_modules/dayjs/locale/fi.js
+/frontend/dashboard/node_modules/dayjs/locale/fo.js
+/frontend/dashboard/node_modules/dayjs/locale/fr.js
+/frontend/dashboard/node_modules/dayjs/locale/fr-ca.js
+/frontend/dashboard/node_modules/dayjs/locale/fr-ch.js
+/frontend/dashboard/node_modules/dayjs/locale/fy.js
+/frontend/dashboard/node_modules/dayjs/locale/ga.js
+/frontend/dashboard/node_modules/dayjs/locale/gd.js
+/frontend/dashboard/node_modules/dayjs/locale/gl.js
+/frontend/dashboard/node_modules/dayjs/locale/gom-latn.js
+/frontend/dashboard/node_modules/dayjs/locale/gu.js
+/frontend/dashboard/node_modules/dayjs/locale/he.js
+/frontend/dashboard/node_modules/dayjs/locale/hi.js
+/frontend/dashboard/node_modules/dayjs/locale/hr.js
+/frontend/dashboard/node_modules/dayjs/locale/ht.js
+/frontend/dashboard/node_modules/dayjs/locale/hu.js
+/frontend/dashboard/node_modules/dayjs/locale/hy-am.js
+/frontend/dashboard/node_modules/dayjs/locale/id.js
+/frontend/dashboard/node_modules/dayjs/locale/index.d.ts
+/frontend/dashboard/node_modules/dayjs/locale/is.js
+/frontend/dashboard/node_modules/dayjs/locale/it.js
+/frontend/dashboard/node_modules/dayjs/locale/it-ch.js
+/frontend/dashboard/node_modules/dayjs/locale/ja.js
+/frontend/dashboard/node_modules/dayjs/locale/jv.js
+/frontend/dashboard/node_modules/dayjs/locale/ka.js
+/frontend/dashboard/node_modules/dayjs/locale/kk.js
+/frontend/dashboard/node_modules/dayjs/locale/km.js
+/frontend/dashboard/node_modules/dayjs/locale/kn.js
+/frontend/dashboard/node_modules/dayjs/locale/ko.js
+/frontend/dashboard/node_modules/dayjs/locale/ku.js
+/frontend/dashboard/node_modules/dayjs/locale/ky.js
+/frontend/dashboard/node_modules/dayjs/locale/lb.js
+/frontend/dashboard/node_modules/dayjs/locale/lo.js
+/frontend/dashboard/node_modules/dayjs/locale/lt.js
+/frontend/dashboard/node_modules/dayjs/locale/lv.js
+/frontend/dashboard/node_modules/dayjs/locale/me.js
+/frontend/dashboard/node_modules/dayjs/locale/mi.js
+/frontend/dashboard/node_modules/dayjs/locale/mk.js
+/frontend/dashboard/node_modules/dayjs/locale/ml.js
+/frontend/dashboard/node_modules/dayjs/locale/mn.js
+/frontend/dashboard/node_modules/dayjs/locale/mr.js
+/frontend/dashboard/node_modules/dayjs/locale/ms.js
+/frontend/dashboard/node_modules/dayjs/locale/ms-my.js
+/frontend/dashboard/node_modules/dayjs/locale/mt.js
+/frontend/dashboard/node_modules/dayjs/locale/my.js
+/frontend/dashboard/node_modules/dayjs/locale/nb.js
+/frontend/dashboard/node_modules/dayjs/locale/ne.js
+/frontend/dashboard/node_modules/dayjs/locale/nl.js
+/frontend/dashboard/node_modules/dayjs/locale/nl-be.js
+/frontend/dashboard/node_modules/dayjs/locale/nn.js
+/frontend/dashboard/node_modules/dayjs/locale/oc-lnc.js
+/frontend/dashboard/node_modules/dayjs/locale/pa-in.js
+/frontend/dashboard/node_modules/dayjs/locale/pl.js
+/frontend/dashboard/node_modules/dayjs/locale/pt.js
+/frontend/dashboard/node_modules/dayjs/locale/pt-br.js
+/frontend/dashboard/node_modules/dayjs/locale/rn.js
+/frontend/dashboard/node_modules/dayjs/locale/ro.js
+/frontend/dashboard/node_modules/dayjs/locale/ru.js
+/frontend/dashboard/node_modules/dayjs/locale/rw.js
+/frontend/dashboard/node_modules/dayjs/locale/sd.js
+/frontend/dashboard/node_modules/dayjs/locale/se.js
+/frontend/dashboard/node_modules/dayjs/locale/si.js
+/frontend/dashboard/node_modules/dayjs/locale/sk.js
+/frontend/dashboard/node_modules/dayjs/locale/sl.js
+/frontend/dashboard/node_modules/dayjs/locale/sq.js
+/frontend/dashboard/node_modules/dayjs/locale/sr.js
+/frontend/dashboard/node_modules/dayjs/locale/sr-cyrl.js
+/frontend/dashboard/node_modules/dayjs/locale/ss.js
+/frontend/dashboard/node_modules/dayjs/locale/sv.js
+/frontend/dashboard/node_modules/dayjs/locale/sv-fi.js
+/frontend/dashboard/node_modules/dayjs/locale/sw.js
+/frontend/dashboard/node_modules/dayjs/locale/ta.js
+/frontend/dashboard/node_modules/dayjs/locale/te.js
+/frontend/dashboard/node_modules/dayjs/locale/tet.js
+/frontend/dashboard/node_modules/dayjs/locale/tg.js
+/frontend/dashboard/node_modules/dayjs/locale/th.js
+/frontend/dashboard/node_modules/dayjs/locale/tk.js
+/frontend/dashboard/node_modules/dayjs/locale/tl-ph.js
+/frontend/dashboard/node_modules/dayjs/locale/tlh.js
+/frontend/dashboard/node_modules/dayjs/locale/tr.js
+/frontend/dashboard/node_modules/dayjs/locale/types.d.ts
+/frontend/dashboard/node_modules/dayjs/locale/tzl.js
+/frontend/dashboard/node_modules/dayjs/locale/tzm.js
+/frontend/dashboard/node_modules/dayjs/locale/tzm-latn.js
+/frontend/dashboard/node_modules/dayjs/locale/ug-cn.js
+/frontend/dashboard/node_modules/dayjs/locale/uk.js
+/frontend/dashboard/node_modules/dayjs/locale/ur.js
+/frontend/dashboard/node_modules/dayjs/locale/uz.js
+/frontend/dashboard/node_modules/dayjs/locale/uz-latn.js
+/frontend/dashboard/node_modules/dayjs/locale/vi.js
+/frontend/dashboard/node_modules/dayjs/locale/x-pseudo.js
+/frontend/dashboard/node_modules/dayjs/locale/yo.js
+/frontend/dashboard/node_modules/dayjs/locale/zh.js
+/frontend/dashboard/node_modules/dayjs/locale/zh-cn.js
+/frontend/dashboard/node_modules/dayjs/locale/zh-hk.js
+/frontend/dashboard/node_modules/dayjs/locale/zh-tw.js
+/frontend/dashboard/node_modules/dayjs/plugin/advancedFormat.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/advancedFormat.js
+/frontend/dashboard/node_modules/dayjs/plugin/arraySupport.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/arraySupport.js
+/frontend/dashboard/node_modules/dayjs/plugin/badMutable.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/badMutable.js
+/frontend/dashboard/node_modules/dayjs/plugin/bigIntSupport.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/bigIntSupport.js
+/frontend/dashboard/node_modules/dayjs/plugin/buddhistEra.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/buddhistEra.js
+/frontend/dashboard/node_modules/dayjs/plugin/calendar.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/calendar.js
+/frontend/dashboard/node_modules/dayjs/plugin/customParseFormat.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/customParseFormat.js
+/frontend/dashboard/node_modules/dayjs/plugin/dayOfYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/dayOfYear.js
+/frontend/dashboard/node_modules/dayjs/plugin/devHelper.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/devHelper.js
+/frontend/dashboard/node_modules/dayjs/plugin/duration.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/duration.js
+/frontend/dashboard/node_modules/dayjs/plugin/isBetween.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isBetween.js
+/frontend/dashboard/node_modules/dayjs/plugin/isLeapYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isLeapYear.js
+/frontend/dashboard/node_modules/dayjs/plugin/isMoment.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isMoment.js
+/frontend/dashboard/node_modules/dayjs/plugin/isoWeek.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isoWeek.js
+/frontend/dashboard/node_modules/dayjs/plugin/isoWeeksInYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isoWeeksInYear.js
+/frontend/dashboard/node_modules/dayjs/plugin/isSameOrAfter.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isSameOrAfter.js
+/frontend/dashboard/node_modules/dayjs/plugin/isSameOrBefore.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isSameOrBefore.js
+/frontend/dashboard/node_modules/dayjs/plugin/isToday.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isToday.js
+/frontend/dashboard/node_modules/dayjs/plugin/isTomorrow.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isTomorrow.js
+/frontend/dashboard/node_modules/dayjs/plugin/isYesterday.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/isYesterday.js
+/frontend/dashboard/node_modules/dayjs/plugin/localeData.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/localeData.js
+/frontend/dashboard/node_modules/dayjs/plugin/localizedFormat.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/localizedFormat.js
+/frontend/dashboard/node_modules/dayjs/plugin/minMax.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/minMax.js
+/frontend/dashboard/node_modules/dayjs/plugin/negativeYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/negativeYear.js
+/frontend/dashboard/node_modules/dayjs/plugin/objectSupport.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/objectSupport.js
+/frontend/dashboard/node_modules/dayjs/plugin/pluralGetSet.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/pluralGetSet.js
+/frontend/dashboard/node_modules/dayjs/plugin/preParsePostFormat.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/preParsePostFormat.js
+/frontend/dashboard/node_modules/dayjs/plugin/quarterOfYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/quarterOfYear.js
+/frontend/dashboard/node_modules/dayjs/plugin/relativeTime.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/relativeTime.js
+/frontend/dashboard/node_modules/dayjs/plugin/timezone.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/timezone.js
+/frontend/dashboard/node_modules/dayjs/plugin/toArray.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/toArray.js
+/frontend/dashboard/node_modules/dayjs/plugin/toObject.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/toObject.js
+/frontend/dashboard/node_modules/dayjs/plugin/updateLocale.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/updateLocale.js
+/frontend/dashboard/node_modules/dayjs/plugin/utc.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/utc.js
+/frontend/dashboard/node_modules/dayjs/plugin/weekday.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/weekday.js
+/frontend/dashboard/node_modules/dayjs/plugin/weekOfYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/weekOfYear.js
+/frontend/dashboard/node_modules/dayjs/plugin/weekYear.d.ts
+/frontend/dashboard/node_modules/dayjs/plugin/weekYear.js
+/frontend/dashboard/node_modules/dayjs/.editorconfig
+/frontend/dashboard/node_modules/dayjs/CHANGELOG.md
+/frontend/dashboard/node_modules/dayjs/dayjs.min.js
+/frontend/dashboard/node_modules/dayjs/index.d.ts
+/frontend/dashboard/node_modules/dayjs/LICENSE
+/frontend/dashboard/node_modules/dayjs/locale.json
+/frontend/dashboard/node_modules/dayjs/package.json
+/frontend/dashboard/node_modules/dayjs/README.md
+/frontend/dashboard/node_modules/dom-align/dist-node/index.js
+/frontend/dashboard/node_modules/dom-align/dist-node/index.js.map
+/frontend/dashboard/node_modules/dom-align/dist-types/index.d.ts
+/frontend/dashboard/node_modules/dom-align/dist-web/index.js
+/frontend/dashboard/node_modules/dom-align/dist-web/index.js.map
+/frontend/dashboard/node_modules/dom-align/LICENSE.md
+/frontend/dashboard/node_modules/dom-align/package.json
+/frontend/dashboard/node_modules/dom-align/README.md
+/frontend/dashboard/node_modules/dom-scroll-into-view/dist-node/index.js
+/frontend/dashboard/node_modules/dom-scroll-into-view/dist-node/index.js.map
+/frontend/dashboard/node_modules/dom-scroll-into-view/dist-src/index.js
+/frontend/dashboard/node_modules/dom-scroll-into-view/dist-src/util.js
+/frontend/dashboard/node_modules/dom-scroll-into-view/dist-web/index.js
+/frontend/dashboard/node_modules/dom-scroll-into-view/dist-web/index.js.map
+/frontend/dashboard/node_modules/dom-scroll-into-view/package.json
+/frontend/dashboard/node_modules/dom-scroll-into-view/README.md
+/frontend/dashboard/node_modules/echarts/asset/logo.png
+/frontend/dashboard/node_modules/echarts/dist/extension/bmap.js
+/frontend/dashboard/node_modules/echarts/dist/extension/bmap.js.map
+/frontend/dashboard/node_modules/echarts/dist/extension/bmap.min.js
+/frontend/dashboard/node_modules/echarts/dist/extension/dataTool.js
+/frontend/dashboard/node_modules/echarts/dist/extension/dataTool.js.map
+/frontend/dashboard/node_modules/echarts/dist/extension/dataTool.min.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.common.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.common.js.map
+/frontend/dashboard/node_modules/echarts/dist/echarts.common.min.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.esm.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.esm.js.map
+/frontend/dashboard/node_modules/echarts/dist/echarts.esm.min.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.esm.min.mjs
+/frontend/dashboard/node_modules/echarts/dist/echarts.esm.mjs
+/frontend/dashboard/node_modules/echarts/dist/echarts.esm.mjs.map
+/frontend/dashboard/node_modules/echarts/dist/echarts.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.js.map
+/frontend/dashboard/node_modules/echarts/dist/echarts.min.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.simple.js
+/frontend/dashboard/node_modules/echarts/dist/echarts.simple.js.map
+/frontend/dashboard/node_modules/echarts/dist/echarts.simple.min.js
+/frontend/dashboard/node_modules/echarts/dist/package.json
+/frontend/dashboard/node_modules/echarts/extension/bmap/bmap.js
+/frontend/dashboard/node_modules/echarts/extension/bmap/BMapCoordSys.js
+/frontend/dashboard/node_modules/echarts/extension/bmap/BMapModel.js
+/frontend/dashboard/node_modules/echarts/extension/bmap/BMapView.js
+/frontend/dashboard/node_modules/echarts/extension/dataTool/gexf.js
+/frontend/dashboard/node_modules/echarts/extension/dataTool/index.js
+/frontend/dashboard/node_modules/echarts/extension/dataTool/prepareBoxplotData.js
+/frontend/dashboard/node_modules/echarts/i18n/langAR.js
+/frontend/dashboard/node_modules/echarts/i18n/langAR-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langCS.js
+/frontend/dashboard/node_modules/echarts/i18n/langCS-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langDE.js
+/frontend/dashboard/node_modules/echarts/i18n/langDE-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langEN.js
+/frontend/dashboard/node_modules/echarts/i18n/langEN-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langES.js
+/frontend/dashboard/node_modules/echarts/i18n/langES-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langFA.js
+/frontend/dashboard/node_modules/echarts/i18n/langFA-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langFI.js
+/frontend/dashboard/node_modules/echarts/i18n/langFI-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langFR.js
+/frontend/dashboard/node_modules/echarts/i18n/langFR-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langHU.js
+/frontend/dashboard/node_modules/echarts/i18n/langHU-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langIT.js
+/frontend/dashboard/node_modules/echarts/i18n/langIT-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langJA.js
+/frontend/dashboard/node_modules/echarts/i18n/langJA-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langKO.js
+/frontend/dashboard/node_modules/echarts/i18n/langKO-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langNL.js
+/frontend/dashboard/node_modules/echarts/i18n/langNL-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langPL.js
+/frontend/dashboard/node_modules/echarts/i18n/langPL-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langPT-br.js
+/frontend/dashboard/node_modules/echarts/i18n/langPT-br-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langRO.js
+/frontend/dashboard/node_modules/echarts/i18n/langRO-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langRU.js
+/frontend/dashboard/node_modules/echarts/i18n/langRU-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langSI.js
+/frontend/dashboard/node_modules/echarts/i18n/langSI-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langSV.js
+/frontend/dashboard/node_modules/echarts/i18n/langSV-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langTH.js
+/frontend/dashboard/node_modules/echarts/i18n/langTH-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langTR.js
+/frontend/dashboard/node_modules/echarts/i18n/langTR-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langUK.js
+/frontend/dashboard/node_modules/echarts/i18n/langUK-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langVI.js
+/frontend/dashboard/node_modules/echarts/i18n/langVI-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/langZH.js
+/frontend/dashboard/node_modules/echarts/i18n/langZH-obj.js
+/frontend/dashboard/node_modules/echarts/i18n/package.json
+/frontend/dashboard/node_modules/echarts/lib/action/roamHelper.js
+/frontend/dashboard/node_modules/echarts/lib/animation/basicTransition.js
+/frontend/dashboard/node_modules/echarts/lib/animation/customGraphicKeyframeAnimation.js
+/frontend/dashboard/node_modules/echarts/lib/animation/customGraphicTransition.js
+/frontend/dashboard/node_modules/echarts/lib/animation/morphTransitionHelper.js
+/frontend/dashboard/node_modules/echarts/lib/animation/universalTransition.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/BarSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/BarView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/BaseBarSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/installPictorialBar.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/PictorialBarSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar/PictorialBarView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot/boxplotLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot/boxplotTransform.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot/BoxplotView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot/prepareBoxplotData.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick/candlestickLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick/CandlestickView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick/candlestickVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick/preprocessor.js
+/frontend/dashboard/node_modules/echarts/lib/chart/custom/CustomSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/custom/CustomView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/custom/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/effectScatter/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/funnel/funnelLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/funnel/FunnelSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/funnel/FunnelView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/funnel/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/gauge/GaugeSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/gauge/GaugeView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/gauge/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/gauge/PointerPath.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/adjustEdge.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/categoryFilter.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/categoryVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/circularLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/circularLayoutHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/createView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/edgeVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/forceHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/forceLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/graphHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/GraphSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/GraphView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/simpleLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js
+/frontend/dashboard/node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/heatmap/HeatmapView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/heatmap/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/createRenderPlanner.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/createSeriesData.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/EffectLine.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/EffectPolyline.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/EffectSymbol.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/enableAriaDecalForTree.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/labelHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/LargeLineDraw.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/Line.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/LineDraw.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/LinePath.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/Polyline.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/sectorHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/Symbol.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/SymbolDraw.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/treeHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line/helper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line/lineAnimationDiff.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line/LineSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line/LineView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line/poly.js
+/frontend/dashboard/node_modules/echarts/lib/chart/lines/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/lines/linesLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/lines/LinesSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/lines/LinesView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/lines/linesVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/map/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/map/mapDataStatistic.js
+/frontend/dashboard/node_modules/echarts/lib/chart/map/MapSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/map/mapSymbolLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/map/MapView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/parallel/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/parallel/ParallelSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/parallel/ParallelView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/parallel/parallelVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pie/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pie/labelLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pie/pieLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pie/PieSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pie/PieView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/radar/backwardCompat.js
+/frontend/dashboard/node_modules/echarts/lib/chart/radar/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/radar/radarLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/radar/RadarSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/radar/RadarView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sankey/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sankey/sankeyLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sankey/SankeySeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sankey/SankeyView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sankey/sankeyVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/scatter/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/scatter/ScatterSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/scatter/ScatterView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/sunburstAction.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/sunburstLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/SunburstPiece.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/SunburstSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/SunburstView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst/sunburstVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/themeRiver/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/layoutHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/traversalHelper.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/treeAction.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/treeLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/TreeSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/TreeView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree/treeVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/Breadcrumb.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/install.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/treemapAction.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/treemapLayout.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/TreemapSeries.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/TreemapView.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap/treemapVisual.js
+/frontend/dashboard/node_modules/echarts/lib/chart/bar.js
+/frontend/dashboard/node_modules/echarts/lib/chart/boxplot.js
+/frontend/dashboard/node_modules/echarts/lib/chart/candlestick.js
+/frontend/dashboard/node_modules/echarts/lib/chart/custom.js
+/frontend/dashboard/node_modules/echarts/lib/chart/effectScatter.js
+/frontend/dashboard/node_modules/echarts/lib/chart/funnel.js
+/frontend/dashboard/node_modules/echarts/lib/chart/gauge.js
+/frontend/dashboard/node_modules/echarts/lib/chart/graph.js
+/frontend/dashboard/node_modules/echarts/lib/chart/heatmap.js
+/frontend/dashboard/node_modules/echarts/lib/chart/line.js
+/frontend/dashboard/node_modules/echarts/lib/chart/lines.js
+/frontend/dashboard/node_modules/echarts/lib/chart/map.js
+/frontend/dashboard/node_modules/echarts/lib/chart/parallel.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pictorialBar.js
+/frontend/dashboard/node_modules/echarts/lib/chart/pie.js
+/frontend/dashboard/node_modules/echarts/lib/chart/radar.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sankey.js
+/frontend/dashboard/node_modules/echarts/lib/chart/scatter.js
+/frontend/dashboard/node_modules/echarts/lib/chart/sunburst.js
+/frontend/dashboard/node_modules/echarts/lib/chart/themeRiver.js
+/frontend/dashboard/node_modules/echarts/lib/chart/tree.js
+/frontend/dashboard/node_modules/echarts/lib/chart/treemap.js
+/frontend/dashboard/node_modules/echarts/lib/component/aria/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/aria/preprocessor.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/AngleAxisView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/AxisBuilder.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/axisSplitHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/AxisView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/CartesianAxisView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/parallelAxisAction.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/ParallelAxisView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/RadiusAxisView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axis/SingleAxisView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/AxisPointer.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/AxisPointerView.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/axisTrigger.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/globalListener.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/modelHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer/viewHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush/BrushModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush/BrushView.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush/preprocessor.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush/selector.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush/visualEncoding.js
+/frontend/dashboard/node_modules/echarts/lib/component/calendar/CalendarView.js
+/frontend/dashboard/node_modules/echarts/lib/component/calendar/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataset/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/AxisProxy.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/dataZoomAction.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/DataZoomModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/DataZoomView.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/helper.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/history.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/InsideZoomView.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/installCommon.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/installDataZoomInside.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/installDataZoomSelect.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/installDataZoomSlider.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/roams.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/SelectZoomView.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom/SliderZoomView.js
+/frontend/dashboard/node_modules/echarts/lib/component/geo/GeoView.js
+/frontend/dashboard/node_modules/echarts/lib/component/geo/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/graphic/GraphicModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/graphic/GraphicView.js
+/frontend/dashboard/node_modules/echarts/lib/component/graphic/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/grid/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/grid/installSimple.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/BrushController.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/brushHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/BrushTargetManager.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/cursorHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/interactionMutex.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/listComponent.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/MapDraw.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/RoamController.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/roamHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/helper/sliderMove.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/installLegendPlain.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/installLegendScroll.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/legendAction.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/legendFilter.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/LegendModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/LegendView.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/scrollableLegendAction.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/ScrollableLegendModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend/ScrollableLegendView.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/checkMarkerInSeries.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/installMarkArea.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/installMarkLine.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/installMarkPoint.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkAreaModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkAreaView.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/markerHelper.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkerModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkerView.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkLineModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkLineView.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkPointModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/marker/MarkPointView.js
+/frontend/dashboard/node_modules/echarts/lib/component/parallel/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/parallel/ParallelView.js
+/frontend/dashboard/node_modules/echarts/lib/component/polar/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/radar/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/radar/RadarView.js
+/frontend/dashboard/node_modules/echarts/lib/component/singleAxis/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/preprocessor.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/SliderTimelineModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/SliderTimelineView.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/timelineAction.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/TimelineAxis.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/TimelineModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline/TimelineView.js
+/frontend/dashboard/node_modules/echarts/lib/component/title/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/feature/Brush.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/feature/DataView.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/feature/DataZoom.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/feature/MagicType.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/feature/Restore.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/featureManager.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/ToolboxModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox/ToolboxView.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/helper.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/seriesFormatTooltip.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/TooltipHTMLContent.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/tooltipMarkup.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/TooltipModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/TooltipRichContent.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip/TooltipView.js
+/frontend/dashboard/node_modules/echarts/lib/component/transform/filterTransform.js
+/frontend/dashboard/node_modules/echarts/lib/component/transform/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/transform/sortTransform.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/ContinuousModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/ContinuousView.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/helper.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/install.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/installCommon.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/installVisualMapContinuous.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/installVisualMapPiecewise.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/PiecewiseModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/PiecewiseView.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/preprocessor.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/typeDefaulter.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/visualEncoding.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/visualMapAction.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/VisualMapModel.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap/VisualMapView.js
+/frontend/dashboard/node_modules/echarts/lib/component/aria.js
+/frontend/dashboard/node_modules/echarts/lib/component/axisPointer.js
+/frontend/dashboard/node_modules/echarts/lib/component/brush.js
+/frontend/dashboard/node_modules/echarts/lib/component/calendar.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataset.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoom.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoomInside.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoomSelect.js
+/frontend/dashboard/node_modules/echarts/lib/component/dataZoomSlider.js
+/frontend/dashboard/node_modules/echarts/lib/component/geo.js
+/frontend/dashboard/node_modules/echarts/lib/component/graphic.js
+/frontend/dashboard/node_modules/echarts/lib/component/grid.js
+/frontend/dashboard/node_modules/echarts/lib/component/gridSimple.js
+/frontend/dashboard/node_modules/echarts/lib/component/legend.js
+/frontend/dashboard/node_modules/echarts/lib/component/legendPlain.js
+/frontend/dashboard/node_modules/echarts/lib/component/legendScroll.js
+/frontend/dashboard/node_modules/echarts/lib/component/markArea.js
+/frontend/dashboard/node_modules/echarts/lib/component/markLine.js
+/frontend/dashboard/node_modules/echarts/lib/component/markPoint.js
+/frontend/dashboard/node_modules/echarts/lib/component/parallel.js
+/frontend/dashboard/node_modules/echarts/lib/component/polar.js
+/frontend/dashboard/node_modules/echarts/lib/component/radar.js
+/frontend/dashboard/node_modules/echarts/lib/component/singleAxis.js
+/frontend/dashboard/node_modules/echarts/lib/component/timeline.js
+/frontend/dashboard/node_modules/echarts/lib/component/title.js
+/frontend/dashboard/node_modules/echarts/lib/component/toolbox.js
+/frontend/dashboard/node_modules/echarts/lib/component/tooltip.js
+/frontend/dashboard/node_modules/echarts/lib/component/transform.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMap.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMapContinuous.js
+/frontend/dashboard/node_modules/echarts/lib/component/visualMapPiecewise.js
+/frontend/dashboard/node_modules/echarts/lib/coord/calendar/Calendar.js
+/frontend/dashboard/node_modules/echarts/lib/coord/calendar/CalendarModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/calendar/prepareCustom.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/Axis2D.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/AxisModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/Cartesian.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/Cartesian2D.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/defaultAxisExtentFromData.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/Grid.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/GridModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/cartesian/prepareCustom.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/fix/geoCoord.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/fix/nanhai.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/fix/textCoord.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/Geo.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/geoCreator.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/GeoJSONResource.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/GeoModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/geoSourceManager.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/GeoSVGResource.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/geoTypes.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/parseGeoJson.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/prepareCustom.js
+/frontend/dashboard/node_modules/echarts/lib/coord/geo/Region.js
+/frontend/dashboard/node_modules/echarts/lib/coord/parallel/AxisModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/parallel/Parallel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/parallel/ParallelAxis.js
+/frontend/dashboard/node_modules/echarts/lib/coord/parallel/parallelCreator.js
+/frontend/dashboard/node_modules/echarts/lib/coord/parallel/ParallelModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/AngleAxis.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/AxisModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/Polar.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/polarCreator.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/PolarModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/prepareCustom.js
+/frontend/dashboard/node_modules/echarts/lib/coord/polar/RadiusAxis.js
+/frontend/dashboard/node_modules/echarts/lib/coord/radar/IndicatorAxis.js
+/frontend/dashboard/node_modules/echarts/lib/coord/radar/Radar.js
+/frontend/dashboard/node_modules/echarts/lib/coord/radar/RadarModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/single/AxisModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/single/prepareCustom.js
+/frontend/dashboard/node_modules/echarts/lib/coord/single/Single.js
+/frontend/dashboard/node_modules/echarts/lib/coord/single/SingleAxis.js
+/frontend/dashboard/node_modules/echarts/lib/coord/single/singleAxisHelper.js
+/frontend/dashboard/node_modules/echarts/lib/coord/single/singleCreator.js
+/frontend/dashboard/node_modules/echarts/lib/coord/Axis.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisAlignTicks.js
+/frontend/dashboard/node_modules/echarts/lib/coord/AxisBaseModel.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisCommonTypes.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisDefault.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisHelper.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisModelCommonMixin.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisModelCreator.js
+/frontend/dashboard/node_modules/echarts/lib/coord/axisTickLabelBuilder.js
+/frontend/dashboard/node_modules/echarts/lib/coord/CoordinateSystem.js
+/frontend/dashboard/node_modules/echarts/lib/coord/scaleRawExtentInfo.js
+/frontend/dashboard/node_modules/echarts/lib/coord/View.js
+/frontend/dashboard/node_modules/echarts/lib/core/CoordinateSystem.js
+/frontend/dashboard/node_modules/echarts/lib/core/echarts.js
+/frontend/dashboard/node_modules/echarts/lib/core/ExtensionAPI.js
+/frontend/dashboard/node_modules/echarts/lib/core/impl.js
+/frontend/dashboard/node_modules/echarts/lib/core/lifecycle.js
+/frontend/dashboard/node_modules/echarts/lib/core/locale.js
+/frontend/dashboard/node_modules/echarts/lib/core/Scheduler.js
+/frontend/dashboard/node_modules/echarts/lib/core/task.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/createDimensions.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/dataProvider.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/dataStackHelper.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/dataValueHelper.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/dimensionHelper.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/linkList.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/linkSeriesData.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/SeriesDataSchema.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/sourceHelper.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/sourceManager.js
+/frontend/dashboard/node_modules/echarts/lib/data/helper/transform.js
+/frontend/dashboard/node_modules/echarts/lib/data/DataDiffer.js
+/frontend/dashboard/node_modules/echarts/lib/data/DataStore.js
+/frontend/dashboard/node_modules/echarts/lib/data/Graph.js
+/frontend/dashboard/node_modules/echarts/lib/data/OrdinalMeta.js
+/frontend/dashboard/node_modules/echarts/lib/data/SeriesData.js
+/frontend/dashboard/node_modules/echarts/lib/data/SeriesDimensionDefine.js
+/frontend/dashboard/node_modules/echarts/lib/data/Source.js
+/frontend/dashboard/node_modules/echarts/lib/data/Tree.js
+/frontend/dashboard/node_modules/echarts/lib/export/api/format.js
+/frontend/dashboard/node_modules/echarts/lib/export/api/graphic.js
+/frontend/dashboard/node_modules/echarts/lib/export/api/helper.js
+/frontend/dashboard/node_modules/echarts/lib/export/api/number.js
+/frontend/dashboard/node_modules/echarts/lib/export/api/time.js
+/frontend/dashboard/node_modules/echarts/lib/export/api/util.js
+/frontend/dashboard/node_modules/echarts/lib/export/all.js
+/frontend/dashboard/node_modules/echarts/lib/export/api.js
+/frontend/dashboard/node_modules/echarts/lib/export/charts.js
+/frontend/dashboard/node_modules/echarts/lib/export/components.js
+/frontend/dashboard/node_modules/echarts/lib/export/core.js
+/frontend/dashboard/node_modules/echarts/lib/export/features.js
+/frontend/dashboard/node_modules/echarts/lib/export/option.js
+/frontend/dashboard/node_modules/echarts/lib/export/renderers.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langAR.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langCS.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langDE.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langEN.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langES.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langFA.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langFI.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langFR.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langHU.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langIT.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langJA.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langKO.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langNL.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langPL.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langPT-br.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langRO.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langRU.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langSI.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langSV.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langTH.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langTR.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langUK.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langVI.js
+/frontend/dashboard/node_modules/echarts/lib/i18n/langZH.js
+/frontend/dashboard/node_modules/echarts/lib/label/installLabelLayout.js
+/frontend/dashboard/node_modules/echarts/lib/label/labelGuideHelper.js
+/frontend/dashboard/node_modules/echarts/lib/label/labelLayoutHelper.js
+/frontend/dashboard/node_modules/echarts/lib/label/LabelManager.js
+/frontend/dashboard/node_modules/echarts/lib/label/labelStyle.js
+/frontend/dashboard/node_modules/echarts/lib/label/sectorLabel.js
+/frontend/dashboard/node_modules/echarts/lib/layout/barGrid.js
+/frontend/dashboard/node_modules/echarts/lib/layout/barPolar.js
+/frontend/dashboard/node_modules/echarts/lib/layout/points.js
+/frontend/dashboard/node_modules/echarts/lib/legacy/dataSelectAction.js
+/frontend/dashboard/node_modules/echarts/lib/legacy/getTextRect.js
+/frontend/dashboard/node_modules/echarts/lib/loading/default.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/areaStyle.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/dataFormat.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/itemStyle.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/lineStyle.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/makeStyleMapper.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/palette.js
+/frontend/dashboard/node_modules/echarts/lib/model/mixin/textStyle.js
+/frontend/dashboard/node_modules/echarts/lib/model/Component.js
+/frontend/dashboard/node_modules/echarts/lib/model/Global.js
+/frontend/dashboard/node_modules/echarts/lib/model/globalDefault.js
+/frontend/dashboard/node_modules/echarts/lib/model/internalComponentCreator.js
+/frontend/dashboard/node_modules/echarts/lib/model/Model.js
+/frontend/dashboard/node_modules/echarts/lib/model/OptionManager.js
+/frontend/dashboard/node_modules/echarts/lib/model/referHelper.js
+/frontend/dashboard/node_modules/echarts/lib/model/Series.js
+/frontend/dashboard/node_modules/echarts/lib/preprocessor/helper/compatStyle.js
+/frontend/dashboard/node_modules/echarts/lib/preprocessor/backwardCompat.js
+/frontend/dashboard/node_modules/echarts/lib/processor/dataFilter.js
+/frontend/dashboard/node_modules/echarts/lib/processor/dataSample.js
+/frontend/dashboard/node_modules/echarts/lib/processor/dataStack.js
+/frontend/dashboard/node_modules/echarts/lib/processor/negativeDataFilter.js
+/frontend/dashboard/node_modules/echarts/lib/renderer/installCanvasRenderer.js
+/frontend/dashboard/node_modules/echarts/lib/renderer/installSVGRenderer.js
+/frontend/dashboard/node_modules/echarts/lib/scale/helper.js
+/frontend/dashboard/node_modules/echarts/lib/scale/Interval.js
+/frontend/dashboard/node_modules/echarts/lib/scale/Log.js
+/frontend/dashboard/node_modules/echarts/lib/scale/Ordinal.js
+/frontend/dashboard/node_modules/echarts/lib/scale/Scale.js
+/frontend/dashboard/node_modules/echarts/lib/scale/Time.js
+/frontend/dashboard/node_modules/echarts/lib/theme/dark.js
+/frontend/dashboard/node_modules/echarts/lib/theme/light.js
+/frontend/dashboard/node_modules/echarts/lib/util/shape/sausage.js
+/frontend/dashboard/node_modules/echarts/lib/util/animation.js
+/frontend/dashboard/node_modules/echarts/lib/util/clazz.js
+/frontend/dashboard/node_modules/echarts/lib/util/component.js
+/frontend/dashboard/node_modules/echarts/lib/util/conditionalExpression.js
+/frontend/dashboard/node_modules/echarts/lib/util/decal.js
+/frontend/dashboard/node_modules/echarts/lib/util/ECEventProcessor.js
+/frontend/dashboard/node_modules/echarts/lib/util/event.js
+/frontend/dashboard/node_modules/echarts/lib/util/format.js
+/frontend/dashboard/node_modules/echarts/lib/util/graphic.js
+/frontend/dashboard/node_modules/echarts/lib/util/innerStore.js
+/frontend/dashboard/node_modules/echarts/lib/util/KDTree.js
+/frontend/dashboard/node_modules/echarts/lib/util/layout.js
+/frontend/dashboard/node_modules/echarts/lib/util/log.js
+/frontend/dashboard/node_modules/echarts/lib/util/model.js
+/frontend/dashboard/node_modules/echarts/lib/util/number.js
+/frontend/dashboard/node_modules/echarts/lib/util/quickSelect.js
+/frontend/dashboard/node_modules/echarts/lib/util/states.js
+/frontend/dashboard/node_modules/echarts/lib/util/styleCompat.js
+/frontend/dashboard/node_modules/echarts/lib/util/symbol.js
+/frontend/dashboard/node_modules/echarts/lib/util/throttle.js
+/frontend/dashboard/node_modules/echarts/lib/util/time.js
+/frontend/dashboard/node_modules/echarts/lib/util/types.js
+/frontend/dashboard/node_modules/echarts/lib/util/vendor.js
+/frontend/dashboard/node_modules/echarts/lib/view/Chart.js
+/frontend/dashboard/node_modules/echarts/lib/view/Component.js
+/frontend/dashboard/node_modules/echarts/lib/visual/aria.js
+/frontend/dashboard/node_modules/echarts/lib/visual/commonVisualTypes.js
+/frontend/dashboard/node_modules/echarts/lib/visual/decal.js
+/frontend/dashboard/node_modules/echarts/lib/visual/helper.js
+/frontend/dashboard/node_modules/echarts/lib/visual/LegendVisualProvider.js
+/frontend/dashboard/node_modules/echarts/lib/visual/style.js
+/frontend/dashboard/node_modules/echarts/lib/visual/symbol.js
+/frontend/dashboard/node_modules/echarts/lib/visual/visualDefault.js
+/frontend/dashboard/node_modules/echarts/lib/visual/VisualMapping.js
+/frontend/dashboard/node_modules/echarts/lib/visual/visualSolution.js
+/frontend/dashboard/node_modules/echarts/lib/echarts.js
+/frontend/dashboard/node_modules/echarts/lib/extension.js
+/frontend/dashboard/node_modules/echarts/licenses/LICENSE-d3
+/frontend/dashboard/node_modules/echarts/ssr/client/dist/index.js
+/frontend/dashboard/node_modules/echarts/ssr/client/dist/index.js.map
+/frontend/dashboard/node_modules/echarts/ssr/client/dist/package.json
+/frontend/dashboard/node_modules/echarts/ssr/client/lib/index.js
+/frontend/dashboard/node_modules/echarts/ssr/client/types/index.d.ts
+/frontend/dashboard/node_modules/echarts/ssr/client/index.d.ts
+/frontend/dashboard/node_modules/echarts/ssr/client/index.js
+/frontend/dashboard/node_modules/echarts/theme/azul.js
+/frontend/dashboard/node_modules/echarts/theme/bee-inspired.js
+/frontend/dashboard/node_modules/echarts/theme/blue.js
+/frontend/dashboard/node_modules/echarts/theme/caravan.js
+/frontend/dashboard/node_modules/echarts/theme/carp.js
+/frontend/dashboard/node_modules/echarts/theme/cool.js
+/frontend/dashboard/node_modules/echarts/theme/dark.js
+/frontend/dashboard/node_modules/echarts/theme/dark-blue.js
+/frontend/dashboard/node_modules/echarts/theme/dark-bold.js
+/frontend/dashboard/node_modules/echarts/theme/dark-digerati.js
+/frontend/dashboard/node_modules/echarts/theme/dark-fresh-cut.js
+/frontend/dashboard/node_modules/echarts/theme/dark-mushroom.js
+/frontend/dashboard/node_modules/echarts/theme/eduardo.js
+/frontend/dashboard/node_modules/echarts/theme/forest.js
+/frontend/dashboard/node_modules/echarts/theme/fresh-cut.js
+/frontend/dashboard/node_modules/echarts/theme/fruit.js
+/frontend/dashboard/node_modules/echarts/theme/gray.js
+/frontend/dashboard/node_modules/echarts/theme/green.js
+/frontend/dashboard/node_modules/echarts/theme/helianthus.js
+/frontend/dashboard/node_modules/echarts/theme/infographic.js
+/frontend/dashboard/node_modules/echarts/theme/inspired.js
+/frontend/dashboard/node_modules/echarts/theme/jazz.js
+/frontend/dashboard/node_modules/echarts/theme/london.js
+/frontend/dashboard/node_modules/echarts/theme/macarons.js
+/frontend/dashboard/node_modules/echarts/theme/macarons2.js
+/frontend/dashboard/node_modules/echarts/theme/mint.js
+/frontend/dashboard/node_modules/echarts/theme/package.json
+/frontend/dashboard/node_modules/echarts/theme/red.js
+/frontend/dashboard/node_modules/echarts/theme/red-velvet.js
+/frontend/dashboard/node_modules/echarts/theme/roma.js
+/frontend/dashboard/node_modules/echarts/theme/royal.js
+/frontend/dashboard/node_modules/echarts/theme/sakura.js
+/frontend/dashboard/node_modules/echarts/theme/shine.js
+/frontend/dashboard/node_modules/echarts/theme/tech-blue.js
+/frontend/dashboard/node_modules/echarts/theme/vintage.js
+/frontend/dashboard/node_modules/echarts/types/dist/charts.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/components.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/core.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/echarts.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/features.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/option.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/renderers.d.ts
+/frontend/dashboard/node_modules/echarts/types/dist/shared.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/action/roamHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/animation/basicTransition.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/animation/customGraphicKeyframeAnimation.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/animation/customGraphicTransition.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/animation/morphTransitionHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/animation/universalTransition.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/BarSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/BarView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/BaseBarSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/installPictorialBar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/PictorialBarSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar/PictorialBarView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot/boxplotLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot/BoxplotSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot/boxplotTransform.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot/BoxplotView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot/prepareBoxplotData.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick/candlestickLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick/CandlestickSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick/CandlestickView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick/candlestickVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick/preprocessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/custom/CustomSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/custom/CustomView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/custom/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/effectScatter/EffectScatterSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/effectScatter/EffectScatterView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/effectScatter/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/funnel/funnelLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/funnel/FunnelSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/funnel/FunnelView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/funnel/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/gauge/GaugeSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/gauge/GaugeView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/gauge/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/gauge/PointerPath.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/adjustEdge.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/categoryFilter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/categoryVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/circularLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/circularLayoutHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/createView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/edgeVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/forceHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/forceLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/graphHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/GraphSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/GraphView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/simpleLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph/simpleLayoutHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/heatmap/HeatmapLayer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/heatmap/HeatmapSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/heatmap/HeatmapView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/heatmap/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/createClipPathFromCoordSys.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/createGraphFromNodeEdge.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/createRenderPlanner.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/createSeriesData.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/createSeriesDataSimply.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/EffectLine.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/EffectPolyline.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/EffectSymbol.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/enableAriaDecalForTree.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/labelHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/LargeLineDraw.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/LargeSymbolDraw.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/Line.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/LineDraw.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/LinePath.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/multipleGraphEdgeHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/Polyline.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/sectorHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/Symbol.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/SymbolDraw.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/treeHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/helper/whiskerBoxCommon.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line/lineAnimationDiff.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line/LineSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line/LineView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line/poly.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/lines/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/lines/linesLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/lines/LinesSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/lines/LinesView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/lines/linesVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/map/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/map/mapDataStatistic.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/map/MapSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/map/mapSymbolLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/map/MapView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/parallel/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/parallel/ParallelSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/parallel/ParallelView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/parallel/parallelVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pie/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pie/labelLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pie/pieLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pie/PieSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pie/PieView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/radar/backwardCompat.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/radar/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/radar/radarLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/radar/RadarSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/radar/RadarView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sankey/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sankey/sankeyLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sankey/SankeySeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sankey/SankeyView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sankey/sankeyVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/scatter/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/scatter/ScatterSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/scatter/ScatterView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/sunburstAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/sunburstLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/SunburstPiece.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/SunburstSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/SunburstView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst/sunburstVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/themeRiver/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/themeRiver/themeRiverLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/themeRiver/ThemeRiverSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/themeRiver/ThemeRiverView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/layoutHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/traversalHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/treeAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/treeLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/TreeSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/TreeView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree/treeVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/Breadcrumb.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/treemapAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/treemapLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/TreemapSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/TreemapView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap/treemapVisual.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/bar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/boxplot.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/candlestick.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/custom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/effectScatter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/funnel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/gauge.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/graph.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/heatmap.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/line.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/lines.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/map.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/parallel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pictorialBar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/pie.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/radar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sankey.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/scatter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/sunburst.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/themeRiver.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/tree.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/chart/treemap.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/aria/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/aria/preprocessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/AngleAxisView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/AxisBuilder.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/axisSplitHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/AxisView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/CartesianAxisView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/parallelAxisAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/ParallelAxisView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/RadiusAxisView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axis/SingleAxisView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/AxisPointer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/AxisPointerModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/AxisPointerView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/axisTrigger.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/BaseAxisPointer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/CartesianAxisPointer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/findPointFromSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/globalListener.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/modelHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/PolarAxisPointer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/SingleAxisPointer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer/viewHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush/BrushModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush/BrushView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush/preprocessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush/selector.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush/visualEncoding.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/calendar/CalendarView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/calendar/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataset/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/AxisProxy.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/dataZoomAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/DataZoomModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/dataZoomProcessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/DataZoomView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/history.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/InsideZoomModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/InsideZoomView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/installCommon.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/installDataZoomInside.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/installDataZoomSelect.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/installDataZoomSlider.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/roams.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/SelectZoomModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/SelectZoomView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/SliderZoomModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom/SliderZoomView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/geo/GeoView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/geo/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/graphic/GraphicModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/graphic/GraphicView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/graphic/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/grid/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/grid/installSimple.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/BrushController.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/brushHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/BrushTargetManager.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/cursorHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/interactionMutex.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/listComponent.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/MapDraw.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/RoamController.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/roamHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/helper/sliderMove.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/installLegendPlain.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/installLegendScroll.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/legendAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/legendFilter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/LegendModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/LegendView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/scrollableLegendAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/ScrollableLegendModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend/ScrollableLegendView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/checkMarkerInSeries.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/installMarkArea.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/installMarkLine.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/installMarkPoint.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkAreaModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkAreaView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/markerHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkerModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkerView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkLineModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkLineView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkPointModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/marker/MarkPointView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/parallel/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/parallel/ParallelView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/polar/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/radar/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/radar/RadarView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/singleAxis/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/preprocessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/SliderTimelineModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/SliderTimelineView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/timelineAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/TimelineAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/TimelineModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline/TimelineView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/title/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/feature/Brush.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/feature/DataView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/feature/DataZoom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/feature/MagicType.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/feature/Restore.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/feature/SaveAsImage.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/featureManager.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/ToolboxModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox/ToolboxView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/seriesFormatTooltip.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/TooltipHTMLContent.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/tooltipMarkup.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/TooltipModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/TooltipRichContent.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip/TooltipView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/transform/filterTransform.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/transform/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/transform/sortTransform.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/ContinuousModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/ContinuousView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/install.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/installCommon.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/installVisualMapContinuous.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/installVisualMapPiecewise.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/PiecewiseModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/PiecewiseView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/preprocessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/typeDefaulter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/visualEncoding.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/visualMapAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/VisualMapModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap/VisualMapView.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/aria.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/axisPointer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/brush.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/calendar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataset.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoomInside.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoomSelect.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/dataZoomSlider.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/geo.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/graphic.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/grid.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/gridSimple.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legend.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legendPlain.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/legendScroll.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/markArea.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/markLine.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/markPoint.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/parallel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/polar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/radar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/singleAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/timeline.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/title.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/toolbox.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/tooltip.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/transform.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMap.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMapContinuous.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/component/visualMapPiecewise.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/calendar/Calendar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/calendar/CalendarModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/calendar/prepareCustom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/Axis2D.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/AxisModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/Cartesian.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/Cartesian2D.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/cartesianAxisHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/defaultAxisExtentFromData.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/Grid.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/GridModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/cartesian/prepareCustom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/fix/diaoyuIsland.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/fix/geoCoord.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/fix/nanhai.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/fix/textCoord.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/Geo.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/geoCreator.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/GeoJSONResource.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/GeoModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/geoSourceManager.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/GeoSVGResource.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/geoTypes.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/parseGeoJson.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/prepareCustom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/geo/Region.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/parallel/AxisModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/parallel/Parallel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/parallel/ParallelAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/parallel/parallelCreator.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/parallel/ParallelModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/parallel/parallelPreprocessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/AngleAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/AxisModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/Polar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/polarCreator.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/PolarModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/prepareCustom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/polar/RadiusAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/radar/IndicatorAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/radar/Radar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/radar/RadarModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/single/AxisModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/single/prepareCustom.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/single/Single.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/single/SingleAxis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/single/singleAxisHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/single/singleCreator.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/Axis.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisAlignTicks.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/AxisBaseModel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisCommonTypes.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisDefault.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisModelCommonMixin.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisModelCreator.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/axisTickLabelBuilder.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/CoordinateSystem.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/scaleRawExtentInfo.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/coord/View.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/CoordinateSystem.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/echarts.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/ExtensionAPI.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/impl.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/lifecycle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/locale.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/Scheduler.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/core/task.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/createDimensions.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/dataProvider.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/dataStackHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/dataValueHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/dimensionHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/linkList.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/linkSeriesData.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/SeriesDataSchema.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/sourceHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/sourceManager.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/helper/transform.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/DataDiffer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/DataStore.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/Graph.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/OrdinalMeta.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/SeriesData.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/SeriesDimensionDefine.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/Source.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/data/Tree.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api/format.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api/graphic.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api/number.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api/time.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api/util.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/all.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/api.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/charts.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/components.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/core.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/features.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/option.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/export/renderers.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langAR.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langCS.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langDE.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langEN.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langES.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langFA.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langFI.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langFR.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langHU.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langIT.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langJA.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langKO.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langNL.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langPL.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langPT-br.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langRO.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langRU.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langSI.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langSV.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langTH.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langTR.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langUK.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langVI.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/i18n/langZH.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/label/installLabelLayout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/label/labelGuideHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/label/labelLayoutHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/label/LabelManager.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/label/labelStyle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/label/sectorLabel.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/layout/barGrid.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/layout/barPolar.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/layout/points.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/legacy/dataSelectAction.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/legacy/getTextRect.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/loading/default.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/areaStyle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/dataFormat.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/itemStyle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/lineStyle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/makeStyleMapper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/palette.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/mixin/textStyle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/Component.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/Global.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/globalDefault.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/internalComponentCreator.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/Model.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/OptionManager.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/referHelper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/model/Series.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/preprocessor/helper/compatStyle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/preprocessor/backwardCompat.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/processor/dataFilter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/processor/dataSample.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/processor/dataStack.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/processor/negativeDataFilter.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/renderer/installCanvasRenderer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/renderer/installSVGRenderer.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/scale/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/scale/Interval.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/scale/Log.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/scale/Ordinal.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/scale/Scale.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/scale/Time.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/theme/dark.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/theme/light.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/shape/sausage.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/animation.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/clazz.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/component.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/conditionalExpression.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/decal.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/ECEventProcessor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/event.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/format.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/graphic.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/innerStore.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/KDTree.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/layout.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/log.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/model.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/number.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/quickSelect.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/states.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/styleCompat.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/symbol.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/throttle.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/time.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/types.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/util/vendor.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/view/Chart.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/view/Component.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/aria.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/commonVisualTypes.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/decal.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/helper.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/LegendVisualProvider.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/style.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/symbol.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/visualDefault.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/VisualMapping.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/visual/visualSolution.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/echarts.all.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/echarts.blank.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/echarts.common.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/echarts.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/echarts.simple.d.ts
+/frontend/dashboard/node_modules/echarts/types/src/extension.d.ts
+/frontend/dashboard/node_modules/echarts/charts.d.ts
+/frontend/dashboard/node_modules/echarts/charts.js
+/frontend/dashboard/node_modules/echarts/components.d.ts
+/frontend/dashboard/node_modules/echarts/components.js
+/frontend/dashboard/node_modules/echarts/core.d.ts
+/frontend/dashboard/node_modules/echarts/core.js
+/frontend/dashboard/node_modules/echarts/features.d.ts
+/frontend/dashboard/node_modules/echarts/features.js
+/frontend/dashboard/node_modules/echarts/index.blank.js
+/frontend/dashboard/node_modules/echarts/index.common.js
+/frontend/dashboard/node_modules/echarts/index.d.ts
+/frontend/dashboard/node_modules/echarts/index.js
+/frontend/dashboard/node_modules/echarts/index.simple.js
+/frontend/dashboard/node_modules/echarts/KEYS
+/frontend/dashboard/node_modules/echarts/LICENSE
+/frontend/dashboard/node_modules/echarts/NOTICE
+/frontend/dashboard/node_modules/echarts/package.json
+/frontend/dashboard/node_modules/echarts/package.README.md
+/frontend/dashboard/node_modules/echarts/README.md
+/frontend/dashboard/node_modules/echarts/renderers.d.ts
+/frontend/dashboard/node_modules/echarts/renderers.js
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-html.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-html.js
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-html.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-xml.js
+/frontend/dashboard/node_modules/entities/lib/esm/generated/decode-data-xml.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/generated/encode-html.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/generated/encode-html.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/generated/encode-html.js
+/frontend/dashboard/node_modules/entities/lib/esm/generated/encode-html.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/decode.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/decode.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/decode.js
+/frontend/dashboard/node_modules/entities/lib/esm/decode.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/decode_codepoint.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/decode_codepoint.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/decode_codepoint.js
+/frontend/dashboard/node_modules/entities/lib/esm/decode_codepoint.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/encode.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/encode.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/encode.js
+/frontend/dashboard/node_modules/entities/lib/esm/encode.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/escape.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/escape.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/escape.js
+/frontend/dashboard/node_modules/entities/lib/esm/escape.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/index.d.ts
+/frontend/dashboard/node_modules/entities/lib/esm/index.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/esm/index.js
+/frontend/dashboard/node_modules/entities/lib/esm/index.js.map
+/frontend/dashboard/node_modules/entities/lib/esm/package.json
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-html.d.ts
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-html.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-html.js
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-html.js.map
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-xml.d.ts
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-xml.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-xml.js
+/frontend/dashboard/node_modules/entities/lib/generated/decode-data-xml.js.map
+/frontend/dashboard/node_modules/entities/lib/generated/encode-html.d.ts
+/frontend/dashboard/node_modules/entities/lib/generated/encode-html.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/generated/encode-html.js
+/frontend/dashboard/node_modules/entities/lib/generated/encode-html.js.map
+/frontend/dashboard/node_modules/entities/lib/decode.d.ts
+/frontend/dashboard/node_modules/entities/lib/decode.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/decode.js
+/frontend/dashboard/node_modules/entities/lib/decode.js.map
+/frontend/dashboard/node_modules/entities/lib/decode_codepoint.d.ts
+/frontend/dashboard/node_modules/entities/lib/decode_codepoint.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/decode_codepoint.js
+/frontend/dashboard/node_modules/entities/lib/decode_codepoint.js.map
+/frontend/dashboard/node_modules/entities/lib/encode.d.ts
+/frontend/dashboard/node_modules/entities/lib/encode.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/encode.js
+/frontend/dashboard/node_modules/entities/lib/encode.js.map
+/frontend/dashboard/node_modules/entities/lib/escape.d.ts
+/frontend/dashboard/node_modules/entities/lib/escape.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/escape.js
+/frontend/dashboard/node_modules/entities/lib/escape.js.map
+/frontend/dashboard/node_modules/entities/lib/index.d.ts
+/frontend/dashboard/node_modules/entities/lib/index.d.ts.map
+/frontend/dashboard/node_modules/entities/lib/index.js
+/frontend/dashboard/node_modules/entities/lib/index.js.map
+/frontend/dashboard/node_modules/entities/LICENSE
+/frontend/dashboard/node_modules/entities/package.json
+/frontend/dashboard/node_modules/entities/readme.md
+/frontend/dashboard/node_modules/esbuild/bin/esbuild
+/frontend/dashboard/node_modules/esbuild/lib/main.d.ts
+/frontend/dashboard/node_modules/esbuild/lib/main.js
+/frontend/dashboard/node_modules/esbuild/install.js
+/frontend/dashboard/node_modules/esbuild/LICENSE.md
+/frontend/dashboard/node_modules/esbuild/package.json
+/frontend/dashboard/node_modules/esbuild/README.md
+/frontend/dashboard/node_modules/esbuild-windows-64/bin/esbuild
+/frontend/dashboard/node_modules/esbuild-windows-64/esbuild.exe
+/frontend/dashboard/node_modules/esbuild-windows-64/package.json
+/frontend/dashboard/node_modules/esbuild-windows-64/README.md
+/frontend/dashboard/node_modules/estree-walker/dist/esm/estree-walker.js
+/frontend/dashboard/node_modules/estree-walker/dist/esm/package.json
+/frontend/dashboard/node_modules/estree-walker/dist/umd/estree-walker.js
+/frontend/dashboard/node_modules/estree-walker/src/async.js
+/frontend/dashboard/node_modules/estree-walker/src/index.js
+/frontend/dashboard/node_modules/estree-walker/src/package.json
+/frontend/dashboard/node_modules/estree-walker/src/sync.js
+/frontend/dashboard/node_modules/estree-walker/src/walker.js
+/frontend/dashboard/node_modules/estree-walker/types/async.d.ts
+/frontend/dashboard/node_modules/estree-walker/types/index.d.ts
+/frontend/dashboard/node_modules/estree-walker/types/sync.d.ts
+/frontend/dashboard/node_modules/estree-walker/types/tsconfig.tsbuildinfo
+/frontend/dashboard/node_modules/estree-walker/types/walker.d.ts
+/frontend/dashboard/node_modules/estree-walker/CHANGELOG.md
+/frontend/dashboard/node_modules/estree-walker/LICENSE
+/frontend/dashboard/node_modules/estree-walker/package.json
+/frontend/dashboard/node_modules/estree-walker/README.md
+/frontend/dashboard/node_modules/function-bind/.github/FUNDING.yml
+/frontend/dashboard/node_modules/function-bind/.github/SECURITY.md
+/frontend/dashboard/node_modules/function-bind/test/.eslintrc
+/frontend/dashboard/node_modules/function-bind/test/index.js
+/frontend/dashboard/node_modules/function-bind/.eslintrc
+/frontend/dashboard/node_modules/function-bind/.nycrc
+/frontend/dashboard/node_modules/function-bind/CHANGELOG.md
+/frontend/dashboard/node_modules/function-bind/implementation.js
+/frontend/dashboard/node_modules/function-bind/index.js
+/frontend/dashboard/node_modules/function-bind/LICENSE
+/frontend/dashboard/node_modules/function-bind/package.json
+/frontend/dashboard/node_modules/function-bind/README.md
+/frontend/dashboard/node_modules/hasown/.github/FUNDING.yml
+/frontend/dashboard/node_modules/hasown/.eslintrc
+/frontend/dashboard/node_modules/hasown/.nycrc
+/frontend/dashboard/node_modules/hasown/CHANGELOG.md
+/frontend/dashboard/node_modules/hasown/index.d.ts
+/frontend/dashboard/node_modules/hasown/index.js
+/frontend/dashboard/node_modules/hasown/LICENSE
+/frontend/dashboard/node_modules/hasown/package.json
+/frontend/dashboard/node_modules/hasown/README.md
+/frontend/dashboard/node_modules/hasown/tsconfig.json
+/frontend/dashboard/node_modules/is-core-module/test/index.js
+/frontend/dashboard/node_modules/is-core-module/.eslintrc
+/frontend/dashboard/node_modules/is-core-module/.nycrc
+/frontend/dashboard/node_modules/is-core-module/CHANGELOG.md
+/frontend/dashboard/node_modules/is-core-module/core.json
+/frontend/dashboard/node_modules/is-core-module/index.js
+/frontend/dashboard/node_modules/is-core-module/LICENSE
+/frontend/dashboard/node_modules/is-core-module/package.json
+/frontend/dashboard/node_modules/is-core-module/README.md
+/frontend/dashboard/node_modules/is-plain-object/index.cjs.js
+/frontend/dashboard/node_modules/is-plain-object/index.d.ts
+/frontend/dashboard/node_modules/is-plain-object/index.es.js
+/frontend/dashboard/node_modules/is-plain-object/LICENSE
+/frontend/dashboard/node_modules/is-plain-object/package.json
+/frontend/dashboard/node_modules/is-plain-object/README.md
+/frontend/dashboard/node_modules/js-tokens/CHANGELOG.md
+/frontend/dashboard/node_modules/js-tokens/index.js
+/frontend/dashboard/node_modules/js-tokens/LICENSE
+/frontend/dashboard/node_modules/js-tokens/package.json
+/frontend/dashboard/node_modules/js-tokens/README.md
+/frontend/dashboard/node_modules/lodash/fp/__.js
+/frontend/dashboard/node_modules/lodash/fp/_baseConvert.js
+/frontend/dashboard/node_modules/lodash/fp/_convertBrowser.js
+/frontend/dashboard/node_modules/lodash/fp/_falseOptions.js
+/frontend/dashboard/node_modules/lodash/fp/_mapping.js
+/frontend/dashboard/node_modules/lodash/fp/_util.js
+/frontend/dashboard/node_modules/lodash/fp/add.js
+/frontend/dashboard/node_modules/lodash/fp/after.js
+/frontend/dashboard/node_modules/lodash/fp/all.js
+/frontend/dashboard/node_modules/lodash/fp/allPass.js
+/frontend/dashboard/node_modules/lodash/fp/always.js
+/frontend/dashboard/node_modules/lodash/fp/any.js
+/frontend/dashboard/node_modules/lodash/fp/anyPass.js
+/frontend/dashboard/node_modules/lodash/fp/apply.js
+/frontend/dashboard/node_modules/lodash/fp/array.js
+/frontend/dashboard/node_modules/lodash/fp/ary.js
+/frontend/dashboard/node_modules/lodash/fp/assign.js
+/frontend/dashboard/node_modules/lodash/fp/assignAll.js
+/frontend/dashboard/node_modules/lodash/fp/assignAllWith.js
+/frontend/dashboard/node_modules/lodash/fp/assignIn.js
+/frontend/dashboard/node_modules/lodash/fp/assignInAll.js
+/frontend/dashboard/node_modules/lodash/fp/assignInAllWith.js
+/frontend/dashboard/node_modules/lodash/fp/assignInWith.js
+/frontend/dashboard/node_modules/lodash/fp/assignWith.js
+/frontend/dashboard/node_modules/lodash/fp/assoc.js
+/frontend/dashboard/node_modules/lodash/fp/assocPath.js
+/frontend/dashboard/node_modules/lodash/fp/at.js
+/frontend/dashboard/node_modules/lodash/fp/attempt.js
+/frontend/dashboard/node_modules/lodash/fp/before.js
+/frontend/dashboard/node_modules/lodash/fp/bind.js
+/frontend/dashboard/node_modules/lodash/fp/bindAll.js
+/frontend/dashboard/node_modules/lodash/fp/bindKey.js
+/frontend/dashboard/node_modules/lodash/fp/camelCase.js
+/frontend/dashboard/node_modules/lodash/fp/capitalize.js
+/frontend/dashboard/node_modules/lodash/fp/castArray.js
+/frontend/dashboard/node_modules/lodash/fp/ceil.js
+/frontend/dashboard/node_modules/lodash/fp/chain.js
+/frontend/dashboard/node_modules/lodash/fp/chunk.js
+/frontend/dashboard/node_modules/lodash/fp/clamp.js
+/frontend/dashboard/node_modules/lodash/fp/clone.js
+/frontend/dashboard/node_modules/lodash/fp/cloneDeep.js
+/frontend/dashboard/node_modules/lodash/fp/cloneDeepWith.js
+/frontend/dashboard/node_modules/lodash/fp/cloneWith.js
+/frontend/dashboard/node_modules/lodash/fp/collection.js
+/frontend/dashboard/node_modules/lodash/fp/commit.js
+/frontend/dashboard/node_modules/lodash/fp/compact.js
+/frontend/dashboard/node_modules/lodash/fp/complement.js
+/frontend/dashboard/node_modules/lodash/fp/compose.js
+/frontend/dashboard/node_modules/lodash/fp/concat.js
+/frontend/dashboard/node_modules/lodash/fp/cond.js
+/frontend/dashboard/node_modules/lodash/fp/conforms.js
+/frontend/dashboard/node_modules/lodash/fp/conformsTo.js
+/frontend/dashboard/node_modules/lodash/fp/constant.js
+/frontend/dashboard/node_modules/lodash/fp/contains.js
+/frontend/dashboard/node_modules/lodash/fp/convert.js
+/frontend/dashboard/node_modules/lodash/fp/countBy.js
+/frontend/dashboard/node_modules/lodash/fp/create.js
+/frontend/dashboard/node_modules/lodash/fp/curry.js
+/frontend/dashboard/node_modules/lodash/fp/curryN.js
+/frontend/dashboard/node_modules/lodash/fp/curryRight.js
+/frontend/dashboard/node_modules/lodash/fp/curryRightN.js
+/frontend/dashboard/node_modules/lodash/fp/date.js
+/frontend/dashboard/node_modules/lodash/fp/debounce.js
+/frontend/dashboard/node_modules/lodash/fp/deburr.js
+/frontend/dashboard/node_modules/lodash/fp/defaults.js
+/frontend/dashboard/node_modules/lodash/fp/defaultsAll.js
+/frontend/dashboard/node_modules/lodash/fp/defaultsDeep.js
+/frontend/dashboard/node_modules/lodash/fp/defaultsDeepAll.js
+/frontend/dashboard/node_modules/lodash/fp/defaultTo.js
+/frontend/dashboard/node_modules/lodash/fp/defer.js
+/frontend/dashboard/node_modules/lodash/fp/delay.js
+/frontend/dashboard/node_modules/lodash/fp/difference.js
+/frontend/dashboard/node_modules/lodash/fp/differenceBy.js
+/frontend/dashboard/node_modules/lodash/fp/differenceWith.js
+/frontend/dashboard/node_modules/lodash/fp/dissoc.js
+/frontend/dashboard/node_modules/lodash/fp/dissocPath.js
+/frontend/dashboard/node_modules/lodash/fp/divide.js
+/frontend/dashboard/node_modules/lodash/fp/drop.js
+/frontend/dashboard/node_modules/lodash/fp/dropLast.js
+/frontend/dashboard/node_modules/lodash/fp/dropLastWhile.js
+/frontend/dashboard/node_modules/lodash/fp/dropRight.js
+/frontend/dashboard/node_modules/lodash/fp/dropRightWhile.js
+/frontend/dashboard/node_modules/lodash/fp/dropWhile.js
+/frontend/dashboard/node_modules/lodash/fp/each.js
+/frontend/dashboard/node_modules/lodash/fp/eachRight.js
+/frontend/dashboard/node_modules/lodash/fp/endsWith.js
+/frontend/dashboard/node_modules/lodash/fp/entries.js
+/frontend/dashboard/node_modules/lodash/fp/entriesIn.js
+/frontend/dashboard/node_modules/lodash/fp/eq.js
+/frontend/dashboard/node_modules/lodash/fp/equals.js
+/frontend/dashboard/node_modules/lodash/fp/escape.js
+/frontend/dashboard/node_modules/lodash/fp/escapeRegExp.js
+/frontend/dashboard/node_modules/lodash/fp/every.js
+/frontend/dashboard/node_modules/lodash/fp/extend.js
+/frontend/dashboard/node_modules/lodash/fp/extendAll.js
+/frontend/dashboard/node_modules/lodash/fp/extendAllWith.js
+/frontend/dashboard/node_modules/lodash/fp/extendWith.js
+/frontend/dashboard/node_modules/lodash/fp/F.js
+/frontend/dashboard/node_modules/lodash/fp/fill.js
+/frontend/dashboard/node_modules/lodash/fp/filter.js
+/frontend/dashboard/node_modules/lodash/fp/find.js
+/frontend/dashboard/node_modules/lodash/fp/findFrom.js
+/frontend/dashboard/node_modules/lodash/fp/findIndex.js
+/frontend/dashboard/node_modules/lodash/fp/findIndexFrom.js
+/frontend/dashboard/node_modules/lodash/fp/findKey.js
+/frontend/dashboard/node_modules/lodash/fp/findLast.js
+/frontend/dashboard/node_modules/lodash/fp/findLastFrom.js
+/frontend/dashboard/node_modules/lodash/fp/findLastIndex.js
+/frontend/dashboard/node_modules/lodash/fp/findLastIndexFrom.js
+/frontend/dashboard/node_modules/lodash/fp/findLastKey.js
+/frontend/dashboard/node_modules/lodash/fp/first.js
+/frontend/dashboard/node_modules/lodash/fp/flatMap.js
+/frontend/dashboard/node_modules/lodash/fp/flatMapDeep.js
+/frontend/dashboard/node_modules/lodash/fp/flatMapDepth.js
+/frontend/dashboard/node_modules/lodash/fp/flatten.js
+/frontend/dashboard/node_modules/lodash/fp/flattenDeep.js
+/frontend/dashboard/node_modules/lodash/fp/flattenDepth.js
+/frontend/dashboard/node_modules/lodash/fp/flip.js
+/frontend/dashboard/node_modules/lodash/fp/floor.js
+/frontend/dashboard/node_modules/lodash/fp/flow.js
+/frontend/dashboard/node_modules/lodash/fp/flowRight.js
+/frontend/dashboard/node_modules/lodash/fp/forEach.js
+/frontend/dashboard/node_modules/lodash/fp/forEachRight.js
+/frontend/dashboard/node_modules/lodash/fp/forIn.js
+/frontend/dashboard/node_modules/lodash/fp/forInRight.js
+/frontend/dashboard/node_modules/lodash/fp/forOwn.js
+/frontend/dashboard/node_modules/lodash/fp/forOwnRight.js
+/frontend/dashboard/node_modules/lodash/fp/fromPairs.js
+/frontend/dashboard/node_modules/lodash/fp/function.js
+/frontend/dashboard/node_modules/lodash/fp/functions.js
+/frontend/dashboard/node_modules/lodash/fp/functionsIn.js
+/frontend/dashboard/node_modules/lodash/fp/get.js
+/frontend/dashboard/node_modules/lodash/fp/getOr.js
+/frontend/dashboard/node_modules/lodash/fp/groupBy.js
+/frontend/dashboard/node_modules/lodash/fp/gt.js
+/frontend/dashboard/node_modules/lodash/fp/gte.js
+/frontend/dashboard/node_modules/lodash/fp/has.js
+/frontend/dashboard/node_modules/lodash/fp/hasIn.js
+/frontend/dashboard/node_modules/lodash/fp/head.js
+/frontend/dashboard/node_modules/lodash/fp/identical.js
+/frontend/dashboard/node_modules/lodash/fp/identity.js
+/frontend/dashboard/node_modules/lodash/fp/includes.js
+/frontend/dashboard/node_modules/lodash/fp/includesFrom.js
+/frontend/dashboard/node_modules/lodash/fp/indexBy.js
+/frontend/dashboard/node_modules/lodash/fp/indexOf.js
+/frontend/dashboard/node_modules/lodash/fp/indexOfFrom.js
+/frontend/dashboard/node_modules/lodash/fp/init.js
+/frontend/dashboard/node_modules/lodash/fp/initial.js
+/frontend/dashboard/node_modules/lodash/fp/inRange.js
+/frontend/dashboard/node_modules/lodash/fp/intersection.js
+/frontend/dashboard/node_modules/lodash/fp/intersectionBy.js
+/frontend/dashboard/node_modules/lodash/fp/intersectionWith.js
+/frontend/dashboard/node_modules/lodash/fp/invert.js
+/frontend/dashboard/node_modules/lodash/fp/invertBy.js
+/frontend/dashboard/node_modules/lodash/fp/invertObj.js
+/frontend/dashboard/node_modules/lodash/fp/invoke.js
+/frontend/dashboard/node_modules/lodash/fp/invokeArgs.js
+/frontend/dashboard/node_modules/lodash/fp/invokeArgsMap.js
+/frontend/dashboard/node_modules/lodash/fp/invokeMap.js
+/frontend/dashboard/node_modules/lodash/fp/isArguments.js
+/frontend/dashboard/node_modules/lodash/fp/isArray.js
+/frontend/dashboard/node_modules/lodash/fp/isArrayBuffer.js
+/frontend/dashboard/node_modules/lodash/fp/isArrayLike.js
+/frontend/dashboard/node_modules/lodash/fp/isArrayLikeObject.js
+/frontend/dashboard/node_modules/lodash/fp/isBoolean.js
+/frontend/dashboard/node_modules/lodash/fp/isBuffer.js
+/frontend/dashboard/node_modules/lodash/fp/isDate.js
+/frontend/dashboard/node_modules/lodash/fp/isElement.js
+/frontend/dashboard/node_modules/lodash/fp/isEmpty.js
+/frontend/dashboard/node_modules/lodash/fp/isEqual.js
+/frontend/dashboard/node_modules/lodash/fp/isEqualWith.js
+/frontend/dashboard/node_modules/lodash/fp/isError.js
+/frontend/dashboard/node_modules/lodash/fp/isFinite.js
+/frontend/dashboard/node_modules/lodash/fp/isFunction.js
+/frontend/dashboard/node_modules/lodash/fp/isInteger.js
+/frontend/dashboard/node_modules/lodash/fp/isLength.js
+/frontend/dashboard/node_modules/lodash/fp/isMap.js
+/frontend/dashboard/node_modules/lodash/fp/isMatch.js
+/frontend/dashboard/node_modules/lodash/fp/isMatchWith.js
+/frontend/dashboard/node_modules/lodash/fp/isNaN.js
+/frontend/dashboard/node_modules/lodash/fp/isNative.js
+/frontend/dashboard/node_modules/lodash/fp/isNil.js
+/frontend/dashboard/node_modules/lodash/fp/isNull.js
+/frontend/dashboard/node_modules/lodash/fp/isNumber.js
+/frontend/dashboard/node_modules/lodash/fp/isObject.js
+/frontend/dashboard/node_modules/lodash/fp/isObjectLike.js
+/frontend/dashboard/node_modules/lodash/fp/isPlainObject.js
+/frontend/dashboard/node_modules/lodash/fp/isRegExp.js
+/frontend/dashboard/node_modules/lodash/fp/isSafeInteger.js
+/frontend/dashboard/node_modules/lodash/fp/isSet.js
+/frontend/dashboard/node_modules/lodash/fp/isString.js
+/frontend/dashboard/node_modules/lodash/fp/isSymbol.js
+/frontend/dashboard/node_modules/lodash/fp/isTypedArray.js
+/frontend/dashboard/node_modules/lodash/fp/isUndefined.js
+/frontend/dashboard/node_modules/lodash/fp/isWeakMap.js
+/frontend/dashboard/node_modules/lodash/fp/isWeakSet.js
+/frontend/dashboard/node_modules/lodash/fp/iteratee.js
+/frontend/dashboard/node_modules/lodash/fp/join.js
+/frontend/dashboard/node_modules/lodash/fp/juxt.js
+/frontend/dashboard/node_modules/lodash/fp/kebabCase.js
+/frontend/dashboard/node_modules/lodash/fp/keyBy.js
+/frontend/dashboard/node_modules/lodash/fp/keys.js
+/frontend/dashboard/node_modules/lodash/fp/keysIn.js
+/frontend/dashboard/node_modules/lodash/fp/lang.js
+/frontend/dashboard/node_modules/lodash/fp/last.js
+/frontend/dashboard/node_modules/lodash/fp/lastIndexOf.js
+/frontend/dashboard/node_modules/lodash/fp/lastIndexOfFrom.js
+/frontend/dashboard/node_modules/lodash/fp/lowerCase.js
+/frontend/dashboard/node_modules/lodash/fp/lowerFirst.js
+/frontend/dashboard/node_modules/lodash/fp/lt.js
+/frontend/dashboard/node_modules/lodash/fp/lte.js
+/frontend/dashboard/node_modules/lodash/fp/map.js
+/frontend/dashboard/node_modules/lodash/fp/mapKeys.js
+/frontend/dashboard/node_modules/lodash/fp/mapValues.js
+/frontend/dashboard/node_modules/lodash/fp/matches.js
+/frontend/dashboard/node_modules/lodash/fp/matchesProperty.js
+/frontend/dashboard/node_modules/lodash/fp/math.js
+/frontend/dashboard/node_modules/lodash/fp/max.js
+/frontend/dashboard/node_modules/lodash/fp/maxBy.js
+/frontend/dashboard/node_modules/lodash/fp/mean.js
+/frontend/dashboard/node_modules/lodash/fp/meanBy.js
+/frontend/dashboard/node_modules/lodash/fp/memoize.js
+/frontend/dashboard/node_modules/lodash/fp/merge.js
+/frontend/dashboard/node_modules/lodash/fp/mergeAll.js
+/frontend/dashboard/node_modules/lodash/fp/mergeAllWith.js
+/frontend/dashboard/node_modules/lodash/fp/mergeWith.js
+/frontend/dashboard/node_modules/lodash/fp/method.js
+/frontend/dashboard/node_modules/lodash/fp/methodOf.js
+/frontend/dashboard/node_modules/lodash/fp/min.js
+/frontend/dashboard/node_modules/lodash/fp/minBy.js
+/frontend/dashboard/node_modules/lodash/fp/mixin.js
+/frontend/dashboard/node_modules/lodash/fp/multiply.js
+/frontend/dashboard/node_modules/lodash/fp/nAry.js
+/frontend/dashboard/node_modules/lodash/fp/negate.js
+/frontend/dashboard/node_modules/lodash/fp/next.js
+/frontend/dashboard/node_modules/lodash/fp/noop.js
+/frontend/dashboard/node_modules/lodash/fp/now.js
+/frontend/dashboard/node_modules/lodash/fp/nth.js
+/frontend/dashboard/node_modules/lodash/fp/nthArg.js
+/frontend/dashboard/node_modules/lodash/fp/number.js
+/frontend/dashboard/node_modules/lodash/fp/object.js
+/frontend/dashboard/node_modules/lodash/fp/omit.js
+/frontend/dashboard/node_modules/lodash/fp/omitAll.js
+/frontend/dashboard/node_modules/lodash/fp/omitBy.js
+/frontend/dashboard/node_modules/lodash/fp/once.js
+/frontend/dashboard/node_modules/lodash/fp/orderBy.js
+/frontend/dashboard/node_modules/lodash/fp/over.js
+/frontend/dashboard/node_modules/lodash/fp/overArgs.js
+/frontend/dashboard/node_modules/lodash/fp/overEvery.js
+/frontend/dashboard/node_modules/lodash/fp/overSome.js
+/frontend/dashboard/node_modules/lodash/fp/pad.js
+/frontend/dashboard/node_modules/lodash/fp/padChars.js
+/frontend/dashboard/node_modules/lodash/fp/padCharsEnd.js
+/frontend/dashboard/node_modules/lodash/fp/padCharsStart.js
+/frontend/dashboard/node_modules/lodash/fp/padEnd.js
+/frontend/dashboard/node_modules/lodash/fp/padStart.js
+/frontend/dashboard/node_modules/lodash/fp/parseInt.js
+/frontend/dashboard/node_modules/lodash/fp/partial.js
+/frontend/dashboard/node_modules/lodash/fp/partialRight.js
+/frontend/dashboard/node_modules/lodash/fp/partition.js
+/frontend/dashboard/node_modules/lodash/fp/path.js
+/frontend/dashboard/node_modules/lodash/fp/pathEq.js
+/frontend/dashboard/node_modules/lodash/fp/pathOr.js
+/frontend/dashboard/node_modules/lodash/fp/paths.js
+/frontend/dashboard/node_modules/lodash/fp/pick.js
+/frontend/dashboard/node_modules/lodash/fp/pickAll.js
+/frontend/dashboard/node_modules/lodash/fp/pickBy.js
+/frontend/dashboard/node_modules/lodash/fp/pipe.js
+/frontend/dashboard/node_modules/lodash/fp/placeholder.js
+/frontend/dashboard/node_modules/lodash/fp/plant.js
+/frontend/dashboard/node_modules/lodash/fp/pluck.js
+/frontend/dashboard/node_modules/lodash/fp/prop.js
+/frontend/dashboard/node_modules/lodash/fp/propEq.js
+/frontend/dashboard/node_modules/lodash/fp/property.js
+/frontend/dashboard/node_modules/lodash/fp/propertyOf.js
+/frontend/dashboard/node_modules/lodash/fp/propOr.js
+/frontend/dashboard/node_modules/lodash/fp/props.js
+/frontend/dashboard/node_modules/lodash/fp/pull.js
+/frontend/dashboard/node_modules/lodash/fp/pullAll.js
+/frontend/dashboard/node_modules/lodash/fp/pullAllBy.js
+/frontend/dashboard/node_modules/lodash/fp/pullAllWith.js
+/frontend/dashboard/node_modules/lodash/fp/pullAt.js
+/frontend/dashboard/node_modules/lodash/fp/random.js
+/frontend/dashboard/node_modules/lodash/fp/range.js
+/frontend/dashboard/node_modules/lodash/fp/rangeRight.js
+/frontend/dashboard/node_modules/lodash/fp/rangeStep.js
+/frontend/dashboard/node_modules/lodash/fp/rangeStepRight.js
+/frontend/dashboard/node_modules/lodash/fp/rearg.js
+/frontend/dashboard/node_modules/lodash/fp/reduce.js
+/frontend/dashboard/node_modules/lodash/fp/reduceRight.js
+/frontend/dashboard/node_modules/lodash/fp/reject.js
+/frontend/dashboard/node_modules/lodash/fp/remove.js
+/frontend/dashboard/node_modules/lodash/fp/repeat.js
+/frontend/dashboard/node_modules/lodash/fp/replace.js
+/frontend/dashboard/node_modules/lodash/fp/rest.js
+/frontend/dashboard/node_modules/lodash/fp/restFrom.js
+/frontend/dashboard/node_modules/lodash/fp/result.js
+/frontend/dashboard/node_modules/lodash/fp/reverse.js
+/frontend/dashboard/node_modules/lodash/fp/round.js
+/frontend/dashboard/node_modules/lodash/fp/sample.js
+/frontend/dashboard/node_modules/lodash/fp/sampleSize.js
+/frontend/dashboard/node_modules/lodash/fp/seq.js
+/frontend/dashboard/node_modules/lodash/fp/set.js
+/frontend/dashboard/node_modules/lodash/fp/setWith.js
+/frontend/dashboard/node_modules/lodash/fp/shuffle.js
+/frontend/dashboard/node_modules/lodash/fp/size.js
+/frontend/dashboard/node_modules/lodash/fp/slice.js
+/frontend/dashboard/node_modules/lodash/fp/snakeCase.js
+/frontend/dashboard/node_modules/lodash/fp/some.js
+/frontend/dashboard/node_modules/lodash/fp/sortBy.js
+/frontend/dashboard/node_modules/lodash/fp/sortedIndex.js
+/frontend/dashboard/node_modules/lodash/fp/sortedIndexBy.js
+/frontend/dashboard/node_modules/lodash/fp/sortedIndexOf.js
+/frontend/dashboard/node_modules/lodash/fp/sortedLastIndex.js
+/frontend/dashboard/node_modules/lodash/fp/sortedLastIndexBy.js
+/frontend/dashboard/node_modules/lodash/fp/sortedLastIndexOf.js
+/frontend/dashboard/node_modules/lodash/fp/sortedUniq.js
+/frontend/dashboard/node_modules/lodash/fp/sortedUniqBy.js
+/frontend/dashboard/node_modules/lodash/fp/split.js
+/frontend/dashboard/node_modules/lodash/fp/spread.js
+/frontend/dashboard/node_modules/lodash/fp/spreadFrom.js
+/frontend/dashboard/node_modules/lodash/fp/startCase.js
+/frontend/dashboard/node_modules/lodash/fp/startsWith.js
+/frontend/dashboard/node_modules/lodash/fp/string.js
+/frontend/dashboard/node_modules/lodash/fp/stubArray.js
+/frontend/dashboard/node_modules/lodash/fp/stubFalse.js
+/frontend/dashboard/node_modules/lodash/fp/stubObject.js
+/frontend/dashboard/node_modules/lodash/fp/stubString.js
+/frontend/dashboard/node_modules/lodash/fp/stubTrue.js
+/frontend/dashboard/node_modules/lodash/fp/subtract.js
+/frontend/dashboard/node_modules/lodash/fp/sum.js
+/frontend/dashboard/node_modules/lodash/fp/sumBy.js
+/frontend/dashboard/node_modules/lodash/fp/symmetricDifference.js
+/frontend/dashboard/node_modules/lodash/fp/symmetricDifferenceBy.js
+/frontend/dashboard/node_modules/lodash/fp/symmetricDifferenceWith.js
+/frontend/dashboard/node_modules/lodash/fp/T.js
+/frontend/dashboard/node_modules/lodash/fp/tail.js
+/frontend/dashboard/node_modules/lodash/fp/take.js
+/frontend/dashboard/node_modules/lodash/fp/takeLast.js
+/frontend/dashboard/node_modules/lodash/fp/takeLastWhile.js
+/frontend/dashboard/node_modules/lodash/fp/takeRight.js
+/frontend/dashboard/node_modules/lodash/fp/takeRightWhile.js
+/frontend/dashboard/node_modules/lodash/fp/takeWhile.js
+/frontend/dashboard/node_modules/lodash/fp/tap.js
+/frontend/dashboard/node_modules/lodash/fp/template.js
+/frontend/dashboard/node_modules/lodash/fp/templateSettings.js
+/frontend/dashboard/node_modules/lodash/fp/throttle.js
+/frontend/dashboard/node_modules/lodash/fp/thru.js
+/frontend/dashboard/node_modules/lodash/fp/times.js
+/frontend/dashboard/node_modules/lodash/fp/toArray.js
+/frontend/dashboard/node_modules/lodash/fp/toFinite.js
+/frontend/dashboard/node_modules/lodash/fp/toInteger.js
+/frontend/dashboard/node_modules/lodash/fp/toIterator.js
+/frontend/dashboard/node_modules/lodash/fp/toJSON.js
+/frontend/dashboard/node_modules/lodash/fp/toLength.js
+/frontend/dashboard/node_modules/lodash/fp/toLower.js
+/frontend/dashboard/node_modules/lodash/fp/toNumber.js
+/frontend/dashboard/node_modules/lodash/fp/toPairs.js
+/frontend/dashboard/node_modules/lodash/fp/toPairsIn.js
+/frontend/dashboard/node_modules/lodash/fp/toPath.js
+/frontend/dashboard/node_modules/lodash/fp/toPlainObject.js
+/frontend/dashboard/node_modules/lodash/fp/toSafeInteger.js
+/frontend/dashboard/node_modules/lodash/fp/toString.js
+/frontend/dashboard/node_modules/lodash/fp/toUpper.js
+/frontend/dashboard/node_modules/lodash/fp/transform.js
+/frontend/dashboard/node_modules/lodash/fp/trim.js
+/frontend/dashboard/node_modules/lodash/fp/trimChars.js
+/frontend/dashboard/node_modules/lodash/fp/trimCharsEnd.js
+/frontend/dashboard/node_modules/lodash/fp/trimCharsStart.js
+/frontend/dashboard/node_modules/lodash/fp/trimEnd.js
+/frontend/dashboard/node_modules/lodash/fp/trimStart.js
+/frontend/dashboard/node_modules/lodash/fp/truncate.js
+/frontend/dashboard/node_modules/lodash/fp/unapply.js
+/frontend/dashboard/node_modules/lodash/fp/unary.js
+/frontend/dashboard/node_modules/lodash/fp/unescape.js
+/frontend/dashboard/node_modules/lodash/fp/union.js
+/frontend/dashboard/node_modules/lodash/fp/unionBy.js
+/frontend/dashboard/node_modules/lodash/fp/unionWith.js
+/frontend/dashboard/node_modules/lodash/fp/uniq.js
+/frontend/dashboard/node_modules/lodash/fp/uniqBy.js
+/frontend/dashboard/node_modules/lodash/fp/uniqueId.js
+/frontend/dashboard/node_modules/lodash/fp/uniqWith.js
+/frontend/dashboard/node_modules/lodash/fp/unnest.js
+/frontend/dashboard/node_modules/lodash/fp/unset.js
+/frontend/dashboard/node_modules/lodash/fp/unzip.js
+/frontend/dashboard/node_modules/lodash/fp/unzipWith.js
+/frontend/dashboard/node_modules/lodash/fp/update.js
+/frontend/dashboard/node_modules/lodash/fp/updateWith.js
+/frontend/dashboard/node_modules/lodash/fp/upperCase.js
+/frontend/dashboard/node_modules/lodash/fp/upperFirst.js
+/frontend/dashboard/node_modules/lodash/fp/useWith.js
+/frontend/dashboard/node_modules/lodash/fp/util.js
+/frontend/dashboard/node_modules/lodash/fp/value.js
+/frontend/dashboard/node_modules/lodash/fp/valueOf.js
+/frontend/dashboard/node_modules/lodash/fp/values.js
+/frontend/dashboard/node_modules/lodash/fp/valuesIn.js
+/frontend/dashboard/node_modules/lodash/fp/where.js
+/frontend/dashboard/node_modules/lodash/fp/whereEq.js
+/frontend/dashboard/node_modules/lodash/fp/without.js
+/frontend/dashboard/node_modules/lodash/fp/words.js
+/frontend/dashboard/node_modules/lodash/fp/wrap.js
+/frontend/dashboard/node_modules/lodash/fp/wrapperAt.js
+/frontend/dashboard/node_modules/lodash/fp/wrapperChain.js
+/frontend/dashboard/node_modules/lodash/fp/wrapperLodash.js
+/frontend/dashboard/node_modules/lodash/fp/wrapperReverse.js
+/frontend/dashboard/node_modules/lodash/fp/wrapperValue.js
+/frontend/dashboard/node_modules/lodash/fp/xor.js
+/frontend/dashboard/node_modules/lodash/fp/xorBy.js
+/frontend/dashboard/node_modules/lodash/fp/xorWith.js
+/frontend/dashboard/node_modules/lodash/fp/zip.js
+/frontend/dashboard/node_modules/lodash/fp/zipAll.js
+/frontend/dashboard/node_modules/lodash/fp/zipObj.js
+/frontend/dashboard/node_modules/lodash/fp/zipObject.js
+/frontend/dashboard/node_modules/lodash/fp/zipObjectDeep.js
+/frontend/dashboard/node_modules/lodash/fp/zipWith.js
+/frontend/dashboard/node_modules/lodash/_apply.js
+/frontend/dashboard/node_modules/lodash/_arrayAggregator.js
+/frontend/dashboard/node_modules/lodash/_arrayEach.js
+/frontend/dashboard/node_modules/lodash/_arrayEachRight.js
+/frontend/dashboard/node_modules/lodash/_arrayEvery.js
+/frontend/dashboard/node_modules/lodash/_arrayFilter.js
+/frontend/dashboard/node_modules/lodash/_arrayIncludes.js
+/frontend/dashboard/node_modules/lodash/_arrayIncludesWith.js
+/frontend/dashboard/node_modules/lodash/_arrayLikeKeys.js
+/frontend/dashboard/node_modules/lodash/_arrayMap.js
+/frontend/dashboard/node_modules/lodash/_arrayPush.js
+/frontend/dashboard/node_modules/lodash/_arrayReduce.js
+/frontend/dashboard/node_modules/lodash/_arrayReduceRight.js
+/frontend/dashboard/node_modules/lodash/_arraySample.js
+/frontend/dashboard/node_modules/lodash/_arraySampleSize.js
+/frontend/dashboard/node_modules/lodash/_arrayShuffle.js
+/frontend/dashboard/node_modules/lodash/_arraySome.js
+/frontend/dashboard/node_modules/lodash/_asciiSize.js
+/frontend/dashboard/node_modules/lodash/_asciiToArray.js
+/frontend/dashboard/node_modules/lodash/_asciiWords.js
+/frontend/dashboard/node_modules/lodash/_assignMergeValue.js
+/frontend/dashboard/node_modules/lodash/_assignValue.js
+/frontend/dashboard/node_modules/lodash/_assocIndexOf.js
+/frontend/dashboard/node_modules/lodash/_baseAggregator.js
+/frontend/dashboard/node_modules/lodash/_baseAssign.js
+/frontend/dashboard/node_modules/lodash/_baseAssignIn.js
+/frontend/dashboard/node_modules/lodash/_baseAssignValue.js
+/frontend/dashboard/node_modules/lodash/_baseAt.js
+/frontend/dashboard/node_modules/lodash/_baseClamp.js
+/frontend/dashboard/node_modules/lodash/_baseClone.js
+/frontend/dashboard/node_modules/lodash/_baseConforms.js
+/frontend/dashboard/node_modules/lodash/_baseConformsTo.js
+/frontend/dashboard/node_modules/lodash/_baseCreate.js
+/frontend/dashboard/node_modules/lodash/_baseDelay.js
+/frontend/dashboard/node_modules/lodash/_baseDifference.js
+/frontend/dashboard/node_modules/lodash/_baseEach.js
+/frontend/dashboard/node_modules/lodash/_baseEachRight.js
+/frontend/dashboard/node_modules/lodash/_baseEvery.js
+/frontend/dashboard/node_modules/lodash/_baseExtremum.js
+/frontend/dashboard/node_modules/lodash/_baseFill.js
+/frontend/dashboard/node_modules/lodash/_baseFilter.js
+/frontend/dashboard/node_modules/lodash/_baseFindIndex.js
+/frontend/dashboard/node_modules/lodash/_baseFindKey.js
+/frontend/dashboard/node_modules/lodash/_baseFlatten.js
+/frontend/dashboard/node_modules/lodash/_baseFor.js
+/frontend/dashboard/node_modules/lodash/_baseForOwn.js
+/frontend/dashboard/node_modules/lodash/_baseForOwnRight.js
+/frontend/dashboard/node_modules/lodash/_baseForRight.js
+/frontend/dashboard/node_modules/lodash/_baseFunctions.js
+/frontend/dashboard/node_modules/lodash/_baseGet.js
+/frontend/dashboard/node_modules/lodash/_baseGetAllKeys.js
+/frontend/dashboard/node_modules/lodash/_baseGetTag.js
+/frontend/dashboard/node_modules/lodash/_baseGt.js
+/frontend/dashboard/node_modules/lodash/_baseHas.js
+/frontend/dashboard/node_modules/lodash/_baseHasIn.js
+/frontend/dashboard/node_modules/lodash/_baseIndexOf.js
+/frontend/dashboard/node_modules/lodash/_baseIndexOfWith.js
+/frontend/dashboard/node_modules/lodash/_baseInRange.js
+/frontend/dashboard/node_modules/lodash/_baseIntersection.js
+/frontend/dashboard/node_modules/lodash/_baseInverter.js
+/frontend/dashboard/node_modules/lodash/_baseInvoke.js
+/frontend/dashboard/node_modules/lodash/_baseIsArguments.js
+/frontend/dashboard/node_modules/lodash/_baseIsArrayBuffer.js
+/frontend/dashboard/node_modules/lodash/_baseIsDate.js
+/frontend/dashboard/node_modules/lodash/_baseIsEqual.js
+/frontend/dashboard/node_modules/lodash/_baseIsEqualDeep.js
+/frontend/dashboard/node_modules/lodash/_baseIsMap.js
+/frontend/dashboard/node_modules/lodash/_baseIsMatch.js
+/frontend/dashboard/node_modules/lodash/_baseIsNaN.js
+/frontend/dashboard/node_modules/lodash/_baseIsNative.js
+/frontend/dashboard/node_modules/lodash/_baseIsRegExp.js
+/frontend/dashboard/node_modules/lodash/_baseIsSet.js
+/frontend/dashboard/node_modules/lodash/_baseIsTypedArray.js
+/frontend/dashboard/node_modules/lodash/_baseIteratee.js
+/frontend/dashboard/node_modules/lodash/_baseKeys.js
+/frontend/dashboard/node_modules/lodash/_baseKeysIn.js
+/frontend/dashboard/node_modules/lodash/_baseLodash.js
+/frontend/dashboard/node_modules/lodash/_baseLt.js
+/frontend/dashboard/node_modules/lodash/_baseMap.js
+/frontend/dashboard/node_modules/lodash/_baseMatches.js
+/frontend/dashboard/node_modules/lodash/_baseMatchesProperty.js
+/frontend/dashboard/node_modules/lodash/_baseMean.js
+/frontend/dashboard/node_modules/lodash/_baseMerge.js
+/frontend/dashboard/node_modules/lodash/_baseMergeDeep.js
+/frontend/dashboard/node_modules/lodash/_baseNth.js
+/frontend/dashboard/node_modules/lodash/_baseOrderBy.js
+/frontend/dashboard/node_modules/lodash/_basePick.js
+/frontend/dashboard/node_modules/lodash/_basePickBy.js
+/frontend/dashboard/node_modules/lodash/_baseProperty.js
+/frontend/dashboard/node_modules/lodash/_basePropertyDeep.js
+/frontend/dashboard/node_modules/lodash/_basePropertyOf.js
+/frontend/dashboard/node_modules/lodash/_basePullAll.js
+/frontend/dashboard/node_modules/lodash/_basePullAt.js
+/frontend/dashboard/node_modules/lodash/_baseRandom.js
+/frontend/dashboard/node_modules/lodash/_baseRange.js
+/frontend/dashboard/node_modules/lodash/_baseReduce.js
+/frontend/dashboard/node_modules/lodash/_baseRepeat.js
+/frontend/dashboard/node_modules/lodash/_baseRest.js
+/frontend/dashboard/node_modules/lodash/_baseSample.js
+/frontend/dashboard/node_modules/lodash/_baseSampleSize.js
+/frontend/dashboard/node_modules/lodash/_baseSet.js
+/frontend/dashboard/node_modules/lodash/_baseSetData.js
+/frontend/dashboard/node_modules/lodash/_baseSetToString.js
+/frontend/dashboard/node_modules/lodash/_baseShuffle.js
+/frontend/dashboard/node_modules/lodash/_baseSlice.js
+/frontend/dashboard/node_modules/lodash/_baseSome.js
+/frontend/dashboard/node_modules/lodash/_baseSortBy.js
+/frontend/dashboard/node_modules/lodash/_baseSortedIndex.js
+/frontend/dashboard/node_modules/lodash/_baseSortedIndexBy.js
+/frontend/dashboard/node_modules/lodash/_baseSortedUniq.js
+/frontend/dashboard/node_modules/lodash/_baseSum.js
+/frontend/dashboard/node_modules/lodash/_baseTimes.js
+/frontend/dashboard/node_modules/lodash/_baseToNumber.js
+/frontend/dashboard/node_modules/lodash/_baseToPairs.js
+/frontend/dashboard/node_modules/lodash/_baseToString.js
+/frontend/dashboard/node_modules/lodash/_baseTrim.js
+/frontend/dashboard/node_modules/lodash/_baseUnary.js
+/frontend/dashboard/node_modules/lodash/_baseUniq.js
+/frontend/dashboard/node_modules/lodash/_baseUnset.js
+/frontend/dashboard/node_modules/lodash/_baseUpdate.js
+/frontend/dashboard/node_modules/lodash/_baseValues.js
+/frontend/dashboard/node_modules/lodash/_baseWhile.js
+/frontend/dashboard/node_modules/lodash/_baseWrapperValue.js
+/frontend/dashboard/node_modules/lodash/_baseXor.js
+/frontend/dashboard/node_modules/lodash/_baseZipObject.js
+/frontend/dashboard/node_modules/lodash/_cacheHas.js
+/frontend/dashboard/node_modules/lodash/_castArrayLikeObject.js
+/frontend/dashboard/node_modules/lodash/_castFunction.js
+/frontend/dashboard/node_modules/lodash/_castPath.js
+/frontend/dashboard/node_modules/lodash/_castRest.js
+/frontend/dashboard/node_modules/lodash/_castSlice.js
+/frontend/dashboard/node_modules/lodash/_charsEndIndex.js
+/frontend/dashboard/node_modules/lodash/_charsStartIndex.js
+/frontend/dashboard/node_modules/lodash/_cloneArrayBuffer.js
+/frontend/dashboard/node_modules/lodash/_cloneBuffer.js
+/frontend/dashboard/node_modules/lodash/_cloneDataView.js
+/frontend/dashboard/node_modules/lodash/_cloneRegExp.js
+/frontend/dashboard/node_modules/lodash/_cloneSymbol.js
+/frontend/dashboard/node_modules/lodash/_cloneTypedArray.js
+/frontend/dashboard/node_modules/lodash/_compareAscending.js
+/frontend/dashboard/node_modules/lodash/_compareMultiple.js
+/frontend/dashboard/node_modules/lodash/_composeArgs.js
+/frontend/dashboard/node_modules/lodash/_composeArgsRight.js
+/frontend/dashboard/node_modules/lodash/_copyArray.js
+/frontend/dashboard/node_modules/lodash/_copyObject.js
+/frontend/dashboard/node_modules/lodash/_copySymbols.js
+/frontend/dashboard/node_modules/lodash/_copySymbolsIn.js
+/frontend/dashboard/node_modules/lodash/_coreJsData.js
+/frontend/dashboard/node_modules/lodash/_countHolders.js
+/frontend/dashboard/node_modules/lodash/_createAggregator.js
+/frontend/dashboard/node_modules/lodash/_createAssigner.js
+/frontend/dashboard/node_modules/lodash/_createBaseEach.js
+/frontend/dashboard/node_modules/lodash/_createBaseFor.js
+/frontend/dashboard/node_modules/lodash/_createBind.js
+/frontend/dashboard/node_modules/lodash/_createCaseFirst.js
+/frontend/dashboard/node_modules/lodash/_createCompounder.js
+/frontend/dashboard/node_modules/lodash/_createCtor.js
+/frontend/dashboard/node_modules/lodash/_createCurry.js
+/frontend/dashboard/node_modules/lodash/_createFind.js
+/frontend/dashboard/node_modules/lodash/_createFlow.js
+/frontend/dashboard/node_modules/lodash/_createHybrid.js
+/frontend/dashboard/node_modules/lodash/_createInverter.js
+/frontend/dashboard/node_modules/lodash/_createMathOperation.js
+/frontend/dashboard/node_modules/lodash/_createOver.js
+/frontend/dashboard/node_modules/lodash/_createPadding.js
+/frontend/dashboard/node_modules/lodash/_createPartial.js
+/frontend/dashboard/node_modules/lodash/_createRange.js
+/frontend/dashboard/node_modules/lodash/_createRecurry.js
+/frontend/dashboard/node_modules/lodash/_createRelationalOperation.js
+/frontend/dashboard/node_modules/lodash/_createRound.js
+/frontend/dashboard/node_modules/lodash/_createSet.js
+/frontend/dashboard/node_modules/lodash/_createToPairs.js
+/frontend/dashboard/node_modules/lodash/_createWrap.js
+/frontend/dashboard/node_modules/lodash/_customDefaultsAssignIn.js
+/frontend/dashboard/node_modules/lodash/_customDefaultsMerge.js
+/frontend/dashboard/node_modules/lodash/_customOmitClone.js
+/frontend/dashboard/node_modules/lodash/_DataView.js
+/frontend/dashboard/node_modules/lodash/_deburrLetter.js
+/frontend/dashboard/node_modules/lodash/_defineProperty.js
+/frontend/dashboard/node_modules/lodash/_equalArrays.js
+/frontend/dashboard/node_modules/lodash/_equalByTag.js
+/frontend/dashboard/node_modules/lodash/_equalObjects.js
+/frontend/dashboard/node_modules/lodash/_escapeHtmlChar.js
+/frontend/dashboard/node_modules/lodash/_escapeStringChar.js
+/frontend/dashboard/node_modules/lodash/_flatRest.js
+/frontend/dashboard/node_modules/lodash/_freeGlobal.js
+/frontend/dashboard/node_modules/lodash/_getAllKeys.js
+/frontend/dashboard/node_modules/lodash/_getAllKeysIn.js
+/frontend/dashboard/node_modules/lodash/_getData.js
+/frontend/dashboard/node_modules/lodash/_getFuncName.js
+/frontend/dashboard/node_modules/lodash/_getHolder.js
+/frontend/dashboard/node_modules/lodash/_getMapData.js
+/frontend/dashboard/node_modules/lodash/_getMatchData.js
+/frontend/dashboard/node_modules/lodash/_getNative.js
+/frontend/dashboard/node_modules/lodash/_getPrototype.js
+/frontend/dashboard/node_modules/lodash/_getRawTag.js
+/frontend/dashboard/node_modules/lodash/_getSymbols.js
+/frontend/dashboard/node_modules/lodash/_getSymbolsIn.js
+/frontend/dashboard/node_modules/lodash/_getTag.js
+/frontend/dashboard/node_modules/lodash/_getValue.js
+/frontend/dashboard/node_modules/lodash/_getView.js
+/frontend/dashboard/node_modules/lodash/_getWrapDetails.js
+/frontend/dashboard/node_modules/lodash/_Hash.js
+/frontend/dashboard/node_modules/lodash/_hashClear.js
+/frontend/dashboard/node_modules/lodash/_hashDelete.js
+/frontend/dashboard/node_modules/lodash/_hashGet.js
+/frontend/dashboard/node_modules/lodash/_hashHas.js
+/frontend/dashboard/node_modules/lodash/_hashSet.js
+/frontend/dashboard/node_modules/lodash/_hasPath.js
+/frontend/dashboard/node_modules/lodash/_hasUnicode.js
+/frontend/dashboard/node_modules/lodash/_hasUnicodeWord.js
+/frontend/dashboard/node_modules/lodash/_initCloneArray.js
+/frontend/dashboard/node_modules/lodash/_initCloneByTag.js
+/frontend/dashboard/node_modules/lodash/_initCloneObject.js
+/frontend/dashboard/node_modules/lodash/_insertWrapDetails.js
+/frontend/dashboard/node_modules/lodash/_isFlattenable.js
+/frontend/dashboard/node_modules/lodash/_isIndex.js
+/frontend/dashboard/node_modules/lodash/_isIterateeCall.js
+/frontend/dashboard/node_modules/lodash/_isKey.js
+/frontend/dashboard/node_modules/lodash/_isKeyable.js
+/frontend/dashboard/node_modules/lodash/_isLaziable.js
+/frontend/dashboard/node_modules/lodash/_isMaskable.js
+/frontend/dashboard/node_modules/lodash/_isMasked.js
+/frontend/dashboard/node_modules/lodash/_isPrototype.js
+/frontend/dashboard/node_modules/lodash/_isStrictComparable.js
+/frontend/dashboard/node_modules/lodash/_iteratorToArray.js
+/frontend/dashboard/node_modules/lodash/_lazyClone.js
+/frontend/dashboard/node_modules/lodash/_lazyReverse.js
+/frontend/dashboard/node_modules/lodash/_lazyValue.js
+/frontend/dashboard/node_modules/lodash/_LazyWrapper.js
+/frontend/dashboard/node_modules/lodash/_ListCache.js
+/frontend/dashboard/node_modules/lodash/_listCacheClear.js
+/frontend/dashboard/node_modules/lodash/_listCacheDelete.js
+/frontend/dashboard/node_modules/lodash/_listCacheGet.js
+/frontend/dashboard/node_modules/lodash/_listCacheHas.js
+/frontend/dashboard/node_modules/lodash/_listCacheSet.js
+/frontend/dashboard/node_modules/lodash/_LodashWrapper.js
+/frontend/dashboard/node_modules/lodash/_Map.js
+/frontend/dashboard/node_modules/lodash/_MapCache.js
+/frontend/dashboard/node_modules/lodash/_mapCacheClear.js
+/frontend/dashboard/node_modules/lodash/_mapCacheDelete.js
+/frontend/dashboard/node_modules/lodash/_mapCacheGet.js
+/frontend/dashboard/node_modules/lodash/_mapCacheHas.js
+/frontend/dashboard/node_modules/lodash/_mapCacheSet.js
+/frontend/dashboard/node_modules/lodash/_mapToArray.js
+/frontend/dashboard/node_modules/lodash/_matchesStrictComparable.js
+/frontend/dashboard/node_modules/lodash/_memoizeCapped.js
+/frontend/dashboard/node_modules/lodash/_mergeData.js
+/frontend/dashboard/node_modules/lodash/_metaMap.js
+/frontend/dashboard/node_modules/lodash/_nativeCreate.js
+/frontend/dashboard/node_modules/lodash/_nativeKeys.js
+/frontend/dashboard/node_modules/lodash/_nativeKeysIn.js
+/frontend/dashboard/node_modules/lodash/_nodeUtil.js
+/frontend/dashboard/node_modules/lodash/_objectToString.js
+/frontend/dashboard/node_modules/lodash/_overArg.js
+/frontend/dashboard/node_modules/lodash/_overRest.js
+/frontend/dashboard/node_modules/lodash/_parent.js
+/frontend/dashboard/node_modules/lodash/_Promise.js
+/frontend/dashboard/node_modules/lodash/_realNames.js
+/frontend/dashboard/node_modules/lodash/_reEscape.js
+/frontend/dashboard/node_modules/lodash/_reEvaluate.js
+/frontend/dashboard/node_modules/lodash/_reInterpolate.js
+/frontend/dashboard/node_modules/lodash/_reorder.js
+/frontend/dashboard/node_modules/lodash/_replaceHolders.js
+/frontend/dashboard/node_modules/lodash/_root.js
+/frontend/dashboard/node_modules/lodash/_safeGet.js
+/frontend/dashboard/node_modules/lodash/_Set.js
+/frontend/dashboard/node_modules/lodash/_SetCache.js
+/frontend/dashboard/node_modules/lodash/_setCacheAdd.js
+/frontend/dashboard/node_modules/lodash/_setCacheHas.js
+/frontend/dashboard/node_modules/lodash/_setData.js
+/frontend/dashboard/node_modules/lodash/_setToArray.js
+/frontend/dashboard/node_modules/lodash/_setToPairs.js
+/frontend/dashboard/node_modules/lodash/_setToString.js
+/frontend/dashboard/node_modules/lodash/_setWrapToString.js
+/frontend/dashboard/node_modules/lodash/_shortOut.js
+/frontend/dashboard/node_modules/lodash/_shuffleSelf.js
+/frontend/dashboard/node_modules/lodash/_Stack.js
+/frontend/dashboard/node_modules/lodash/_stackClear.js
+/frontend/dashboard/node_modules/lodash/_stackDelete.js
+/frontend/dashboard/node_modules/lodash/_stackGet.js
+/frontend/dashboard/node_modules/lodash/_stackHas.js
+/frontend/dashboard/node_modules/lodash/_stackSet.js
+/frontend/dashboard/node_modules/lodash/_strictIndexOf.js
+/frontend/dashboard/node_modules/lodash/_strictLastIndexOf.js
+/frontend/dashboard/node_modules/lodash/_stringSize.js
+/frontend/dashboard/node_modules/lodash/_stringToArray.js
+/frontend/dashboard/node_modules/lodash/_stringToPath.js
+/frontend/dashboard/node_modules/lodash/_Symbol.js
+/frontend/dashboard/node_modules/lodash/_toKey.js
+/frontend/dashboard/node_modules/lodash/_toSource.js
+/frontend/dashboard/node_modules/lodash/_trimmedEndIndex.js
+/frontend/dashboard/node_modules/lodash/_Uint8Array.js
+/frontend/dashboard/node_modules/lodash/_unescapeHtmlChar.js
+/frontend/dashboard/node_modules/lodash/_unicodeSize.js
+/frontend/dashboard/node_modules/lodash/_unicodeToArray.js
+/frontend/dashboard/node_modules/lodash/_unicodeWords.js
+/frontend/dashboard/node_modules/lodash/_updateWrapDetails.js
+/frontend/dashboard/node_modules/lodash/_WeakMap.js
+/frontend/dashboard/node_modules/lodash/_wrapperClone.js
+/frontend/dashboard/node_modules/lodash/add.js
+/frontend/dashboard/node_modules/lodash/after.js
+/frontend/dashboard/node_modules/lodash/array.js
+/frontend/dashboard/node_modules/lodash/ary.js
+/frontend/dashboard/node_modules/lodash/assign.js
+/frontend/dashboard/node_modules/lodash/assignIn.js
+/frontend/dashboard/node_modules/lodash/assignInWith.js
+/frontend/dashboard/node_modules/lodash/assignWith.js
+/frontend/dashboard/node_modules/lodash/at.js
+/frontend/dashboard/node_modules/lodash/attempt.js
+/frontend/dashboard/node_modules/lodash/before.js
+/frontend/dashboard/node_modules/lodash/bind.js
+/frontend/dashboard/node_modules/lodash/bindAll.js
+/frontend/dashboard/node_modules/lodash/bindKey.js
+/frontend/dashboard/node_modules/lodash/camelCase.js
+/frontend/dashboard/node_modules/lodash/capitalize.js
+/frontend/dashboard/node_modules/lodash/castArray.js
+/frontend/dashboard/node_modules/lodash/ceil.js
+/frontend/dashboard/node_modules/lodash/chain.js
+/frontend/dashboard/node_modules/lodash/chunk.js
+/frontend/dashboard/node_modules/lodash/clamp.js
+/frontend/dashboard/node_modules/lodash/clone.js
+/frontend/dashboard/node_modules/lodash/cloneDeep.js
+/frontend/dashboard/node_modules/lodash/cloneDeepWith.js
+/frontend/dashboard/node_modules/lodash/cloneWith.js
+/frontend/dashboard/node_modules/lodash/collection.js
+/frontend/dashboard/node_modules/lodash/commit.js
+/frontend/dashboard/node_modules/lodash/compact.js
+/frontend/dashboard/node_modules/lodash/concat.js
+/frontend/dashboard/node_modules/lodash/cond.js
+/frontend/dashboard/node_modules/lodash/conforms.js
+/frontend/dashboard/node_modules/lodash/conformsTo.js
+/frontend/dashboard/node_modules/lodash/constant.js
+/frontend/dashboard/node_modules/lodash/core.js
+/frontend/dashboard/node_modules/lodash/core.min.js
+/frontend/dashboard/node_modules/lodash/countBy.js
+/frontend/dashboard/node_modules/lodash/create.js
+/frontend/dashboard/node_modules/lodash/curry.js
+/frontend/dashboard/node_modules/lodash/curryRight.js
+/frontend/dashboard/node_modules/lodash/date.js
+/frontend/dashboard/node_modules/lodash/debounce.js
+/frontend/dashboard/node_modules/lodash/deburr.js
+/frontend/dashboard/node_modules/lodash/defaults.js
+/frontend/dashboard/node_modules/lodash/defaultsDeep.js
+/frontend/dashboard/node_modules/lodash/defaultTo.js
+/frontend/dashboard/node_modules/lodash/defer.js
+/frontend/dashboard/node_modules/lodash/delay.js
+/frontend/dashboard/node_modules/lodash/difference.js
+/frontend/dashboard/node_modules/lodash/differenceBy.js
+/frontend/dashboard/node_modules/lodash/differenceWith.js
+/frontend/dashboard/node_modules/lodash/divide.js
+/frontend/dashboard/node_modules/lodash/drop.js
+/frontend/dashboard/node_modules/lodash/dropRight.js
+/frontend/dashboard/node_modules/lodash/dropRightWhile.js
+/frontend/dashboard/node_modules/lodash/dropWhile.js
+/frontend/dashboard/node_modules/lodash/each.js
+/frontend/dashboard/node_modules/lodash/eachRight.js
+/frontend/dashboard/node_modules/lodash/endsWith.js
+/frontend/dashboard/node_modules/lodash/entries.js
+/frontend/dashboard/node_modules/lodash/entriesIn.js
+/frontend/dashboard/node_modules/lodash/eq.js
+/frontend/dashboard/node_modules/lodash/escape.js
+/frontend/dashboard/node_modules/lodash/escapeRegExp.js
+/frontend/dashboard/node_modules/lodash/every.js
+/frontend/dashboard/node_modules/lodash/extend.js
+/frontend/dashboard/node_modules/lodash/extendWith.js
+/frontend/dashboard/node_modules/lodash/fill.js
+/frontend/dashboard/node_modules/lodash/filter.js
+/frontend/dashboard/node_modules/lodash/find.js
+/frontend/dashboard/node_modules/lodash/findIndex.js
+/frontend/dashboard/node_modules/lodash/findKey.js
+/frontend/dashboard/node_modules/lodash/findLast.js
+/frontend/dashboard/node_modules/lodash/findLastIndex.js
+/frontend/dashboard/node_modules/lodash/findLastKey.js
+/frontend/dashboard/node_modules/lodash/first.js
+/frontend/dashboard/node_modules/lodash/flake.lock
+/frontend/dashboard/node_modules/lodash/flake.nix
+/frontend/dashboard/node_modules/lodash/flatMap.js
+/frontend/dashboard/node_modules/lodash/flatMapDeep.js
+/frontend/dashboard/node_modules/lodash/flatMapDepth.js
+/frontend/dashboard/node_modules/lodash/flatten.js
+/frontend/dashboard/node_modules/lodash/flattenDeep.js
+/frontend/dashboard/node_modules/lodash/flattenDepth.js
+/frontend/dashboard/node_modules/lodash/flip.js
+/frontend/dashboard/node_modules/lodash/floor.js
+/frontend/dashboard/node_modules/lodash/flow.js
+/frontend/dashboard/node_modules/lodash/flowRight.js
+/frontend/dashboard/node_modules/lodash/forEach.js
+/frontend/dashboard/node_modules/lodash/forEachRight.js
+/frontend/dashboard/node_modules/lodash/forIn.js
+/frontend/dashboard/node_modules/lodash/forInRight.js
+/frontend/dashboard/node_modules/lodash/forOwn.js
+/frontend/dashboard/node_modules/lodash/forOwnRight.js
+/frontend/dashboard/node_modules/lodash/fp.js
+/frontend/dashboard/node_modules/lodash/fromPairs.js
+/frontend/dashboard/node_modules/lodash/function.js
+/frontend/dashboard/node_modules/lodash/functions.js
+/frontend/dashboard/node_modules/lodash/functionsIn.js
+/frontend/dashboard/node_modules/lodash/get.js
+/frontend/dashboard/node_modules/lodash/groupBy.js
+/frontend/dashboard/node_modules/lodash/gt.js
+/frontend/dashboard/node_modules/lodash/gte.js
+/frontend/dashboard/node_modules/lodash/has.js
+/frontend/dashboard/node_modules/lodash/hasIn.js
+/frontend/dashboard/node_modules/lodash/head.js
+/frontend/dashboard/node_modules/lodash/identity.js
+/frontend/dashboard/node_modules/lodash/includes.js
+/frontend/dashboard/node_modules/lodash/index.js
+/frontend/dashboard/node_modules/lodash/indexOf.js
+/frontend/dashboard/node_modules/lodash/initial.js
+/frontend/dashboard/node_modules/lodash/inRange.js
+/frontend/dashboard/node_modules/lodash/intersection.js
+/frontend/dashboard/node_modules/lodash/intersectionBy.js
+/frontend/dashboard/node_modules/lodash/intersectionWith.js
+/frontend/dashboard/node_modules/lodash/invert.js
+/frontend/dashboard/node_modules/lodash/invertBy.js
+/frontend/dashboard/node_modules/lodash/invoke.js
+/frontend/dashboard/node_modules/lodash/invokeMap.js
+/frontend/dashboard/node_modules/lodash/isArguments.js
+/frontend/dashboard/node_modules/lodash/isArray.js
+/frontend/dashboard/node_modules/lodash/isArrayBuffer.js
+/frontend/dashboard/node_modules/lodash/isArrayLike.js
+/frontend/dashboard/node_modules/lodash/isArrayLikeObject.js
+/frontend/dashboard/node_modules/lodash/isBoolean.js
+/frontend/dashboard/node_modules/lodash/isBuffer.js
+/frontend/dashboard/node_modules/lodash/isDate.js
+/frontend/dashboard/node_modules/lodash/isElement.js
+/frontend/dashboard/node_modules/lodash/isEmpty.js
+/frontend/dashboard/node_modules/lodash/isEqual.js
+/frontend/dashboard/node_modules/lodash/isEqualWith.js
+/frontend/dashboard/node_modules/lodash/isError.js
+/frontend/dashboard/node_modules/lodash/isFinite.js
+/frontend/dashboard/node_modules/lodash/isFunction.js
+/frontend/dashboard/node_modules/lodash/isInteger.js
+/frontend/dashboard/node_modules/lodash/isLength.js
+/frontend/dashboard/node_modules/lodash/isMap.js
+/frontend/dashboard/node_modules/lodash/isMatch.js
+/frontend/dashboard/node_modules/lodash/isMatchWith.js
+/frontend/dashboard/node_modules/lodash/isNaN.js
+/frontend/dashboard/node_modules/lodash/isNative.js
+/frontend/dashboard/node_modules/lodash/isNil.js
+/frontend/dashboard/node_modules/lodash/isNull.js
+/frontend/dashboard/node_modules/lodash/isNumber.js
+/frontend/dashboard/node_modules/lodash/isObject.js
+/frontend/dashboard/node_modules/lodash/isObjectLike.js
+/frontend/dashboard/node_modules/lodash/isPlainObject.js
+/frontend/dashboard/node_modules/lodash/isRegExp.js
+/frontend/dashboard/node_modules/lodash/isSafeInteger.js
+/frontend/dashboard/node_modules/lodash/isSet.js
+/frontend/dashboard/node_modules/lodash/isString.js
+/frontend/dashboard/node_modules/lodash/isSymbol.js
+/frontend/dashboard/node_modules/lodash/isTypedArray.js
+/frontend/dashboard/node_modules/lodash/isUndefined.js
+/frontend/dashboard/node_modules/lodash/isWeakMap.js
+/frontend/dashboard/node_modules/lodash/isWeakSet.js
+/frontend/dashboard/node_modules/lodash/iteratee.js
+/frontend/dashboard/node_modules/lodash/join.js
+/frontend/dashboard/node_modules/lodash/kebabCase.js
+/frontend/dashboard/node_modules/lodash/keyBy.js
+/frontend/dashboard/node_modules/lodash/keys.js
+/frontend/dashboard/node_modules/lodash/keysIn.js
+/frontend/dashboard/node_modules/lodash/lang.js
+/frontend/dashboard/node_modules/lodash/last.js
+/frontend/dashboard/node_modules/lodash/lastIndexOf.js
+/frontend/dashboard/node_modules/lodash/LICENSE
+/frontend/dashboard/node_modules/lodash/lodash.js
+/frontend/dashboard/node_modules/lodash/lodash.min.js
+/frontend/dashboard/node_modules/lodash/lowerCase.js
+/frontend/dashboard/node_modules/lodash/lowerFirst.js
+/frontend/dashboard/node_modules/lodash/lt.js
+/frontend/dashboard/node_modules/lodash/lte.js
+/frontend/dashboard/node_modules/lodash/map.js
+/frontend/dashboard/node_modules/lodash/mapKeys.js
+/frontend/dashboard/node_modules/lodash/mapValues.js
+/frontend/dashboard/node_modules/lodash/matches.js
+/frontend/dashboard/node_modules/lodash/matchesProperty.js
+/frontend/dashboard/node_modules/lodash/math.js
+/frontend/dashboard/node_modules/lodash/max.js
+/frontend/dashboard/node_modules/lodash/maxBy.js
+/frontend/dashboard/node_modules/lodash/mean.js
+/frontend/dashboard/node_modules/lodash/meanBy.js
+/frontend/dashboard/node_modules/lodash/memoize.js
+/frontend/dashboard/node_modules/lodash/merge.js
+/frontend/dashboard/node_modules/lodash/mergeWith.js
+/frontend/dashboard/node_modules/lodash/method.js
+/frontend/dashboard/node_modules/lodash/methodOf.js
+/frontend/dashboard/node_modules/lodash/min.js
+/frontend/dashboard/node_modules/lodash/minBy.js
+/frontend/dashboard/node_modules/lodash/mixin.js
+/frontend/dashboard/node_modules/lodash/multiply.js
+/frontend/dashboard/node_modules/lodash/negate.js
+/frontend/dashboard/node_modules/lodash/next.js
+/frontend/dashboard/node_modules/lodash/noop.js
+/frontend/dashboard/node_modules/lodash/now.js
+/frontend/dashboard/node_modules/lodash/nth.js
+/frontend/dashboard/node_modules/lodash/nthArg.js
+/frontend/dashboard/node_modules/lodash/number.js
+/frontend/dashboard/node_modules/lodash/object.js
+/frontend/dashboard/node_modules/lodash/omit.js
+/frontend/dashboard/node_modules/lodash/omitBy.js
+/frontend/dashboard/node_modules/lodash/once.js
+/frontend/dashboard/node_modules/lodash/orderBy.js
+/frontend/dashboard/node_modules/lodash/over.js
+/frontend/dashboard/node_modules/lodash/overArgs.js
+/frontend/dashboard/node_modules/lodash/overEvery.js
+/frontend/dashboard/node_modules/lodash/overSome.js
+/frontend/dashboard/node_modules/lodash/package.json
+/frontend/dashboard/node_modules/lodash/pad.js
+/frontend/dashboard/node_modules/lodash/padEnd.js
+/frontend/dashboard/node_modules/lodash/padStart.js
+/frontend/dashboard/node_modules/lodash/parseInt.js
+/frontend/dashboard/node_modules/lodash/partial.js
+/frontend/dashboard/node_modules/lodash/partialRight.js
+/frontend/dashboard/node_modules/lodash/partition.js
+/frontend/dashboard/node_modules/lodash/pick.js
+/frontend/dashboard/node_modules/lodash/pickBy.js
+/frontend/dashboard/node_modules/lodash/plant.js
+/frontend/dashboard/node_modules/lodash/property.js
+/frontend/dashboard/node_modules/lodash/propertyOf.js
+/frontend/dashboard/node_modules/lodash/pull.js
+/frontend/dashboard/node_modules/lodash/pullAll.js
+/frontend/dashboard/node_modules/lodash/pullAllBy.js
+/frontend/dashboard/node_modules/lodash/pullAllWith.js
+/frontend/dashboard/node_modules/lodash/pullAt.js
+/frontend/dashboard/node_modules/lodash/random.js
+/frontend/dashboard/node_modules/lodash/range.js
+/frontend/dashboard/node_modules/lodash/rangeRight.js
+/frontend/dashboard/node_modules/lodash/README.md
+/frontend/dashboard/node_modules/lodash/rearg.js
+/frontend/dashboard/node_modules/lodash/reduce.js
+/frontend/dashboard/node_modules/lodash/reduceRight.js
+/frontend/dashboard/node_modules/lodash/reject.js
+/frontend/dashboard/node_modules/lodash/release.md
+/frontend/dashboard/node_modules/lodash/remove.js
+/frontend/dashboard/node_modules/lodash/repeat.js
+/frontend/dashboard/node_modules/lodash/replace.js
+/frontend/dashboard/node_modules/lodash/rest.js
+/frontend/dashboard/node_modules/lodash/result.js
+/frontend/dashboard/node_modules/lodash/reverse.js
+/frontend/dashboard/node_modules/lodash/round.js
+/frontend/dashboard/node_modules/lodash/sample.js
+/frontend/dashboard/node_modules/lodash/sampleSize.js
+/frontend/dashboard/node_modules/lodash/seq.js
+/frontend/dashboard/node_modules/lodash/set.js
+/frontend/dashboard/node_modules/lodash/setWith.js
+/frontend/dashboard/node_modules/lodash/shuffle.js
+/frontend/dashboard/node_modules/lodash/size.js
+/frontend/dashboard/node_modules/lodash/slice.js
+/frontend/dashboard/node_modules/lodash/snakeCase.js
+/frontend/dashboard/node_modules/lodash/some.js
+/frontend/dashboard/node_modules/lodash/sortBy.js
+/frontend/dashboard/node_modules/lodash/sortedIndex.js
+/frontend/dashboard/node_modules/lodash/sortedIndexBy.js
+/frontend/dashboard/node_modules/lodash/sortedIndexOf.js
+/frontend/dashboard/node_modules/lodash/sortedLastIndex.js
+/frontend/dashboard/node_modules/lodash/sortedLastIndexBy.js
+/frontend/dashboard/node_modules/lodash/sortedLastIndexOf.js
+/frontend/dashboard/node_modules/lodash/sortedUniq.js
+/frontend/dashboard/node_modules/lodash/sortedUniqBy.js
+/frontend/dashboard/node_modules/lodash/split.js
+/frontend/dashboard/node_modules/lodash/spread.js
+/frontend/dashboard/node_modules/lodash/startCase.js
+/frontend/dashboard/node_modules/lodash/startsWith.js
+/frontend/dashboard/node_modules/lodash/string.js
+/frontend/dashboard/node_modules/lodash/stubArray.js
+/frontend/dashboard/node_modules/lodash/stubFalse.js
+/frontend/dashboard/node_modules/lodash/stubObject.js
+/frontend/dashboard/node_modules/lodash/stubString.js
+/frontend/dashboard/node_modules/lodash/stubTrue.js
+/frontend/dashboard/node_modules/lodash/subtract.js
+/frontend/dashboard/node_modules/lodash/sum.js
+/frontend/dashboard/node_modules/lodash/sumBy.js
+/frontend/dashboard/node_modules/lodash/tail.js
+/frontend/dashboard/node_modules/lodash/take.js
+/frontend/dashboard/node_modules/lodash/takeRight.js
+/frontend/dashboard/node_modules/lodash/takeRightWhile.js
+/frontend/dashboard/node_modules/lodash/takeWhile.js
+/frontend/dashboard/node_modules/lodash/tap.js
+/frontend/dashboard/node_modules/lodash/template.js
+/frontend/dashboard/node_modules/lodash/templateSettings.js
+/frontend/dashboard/node_modules/lodash/throttle.js
+/frontend/dashboard/node_modules/lodash/thru.js
+/frontend/dashboard/node_modules/lodash/times.js
+/frontend/dashboard/node_modules/lodash/toArray.js
+/frontend/dashboard/node_modules/lodash/toFinite.js
+/frontend/dashboard/node_modules/lodash/toInteger.js
+/frontend/dashboard/node_modules/lodash/toIterator.js
+/frontend/dashboard/node_modules/lodash/toJSON.js
+/frontend/dashboard/node_modules/lodash/toLength.js
+/frontend/dashboard/node_modules/lodash/toLower.js
+/frontend/dashboard/node_modules/lodash/toNumber.js
+/frontend/dashboard/node_modules/lodash/toPairs.js
+/frontend/dashboard/node_modules/lodash/toPairsIn.js
+/frontend/dashboard/node_modules/lodash/toPath.js
+/frontend/dashboard/node_modules/lodash/toPlainObject.js
+/frontend/dashboard/node_modules/lodash/toSafeInteger.js
+/frontend/dashboard/node_modules/lodash/toString.js
+/frontend/dashboard/node_modules/lodash/toUpper.js
+/frontend/dashboard/node_modules/lodash/transform.js
+/frontend/dashboard/node_modules/lodash/trim.js
+/frontend/dashboard/node_modules/lodash/trimEnd.js
+/frontend/dashboard/node_modules/lodash/trimStart.js
+/frontend/dashboard/node_modules/lodash/truncate.js
+/frontend/dashboard/node_modules/lodash/unary.js
+/frontend/dashboard/node_modules/lodash/unescape.js
+/frontend/dashboard/node_modules/lodash/union.js
+/frontend/dashboard/node_modules/lodash/unionBy.js
+/frontend/dashboard/node_modules/lodash/unionWith.js
+/frontend/dashboard/node_modules/lodash/uniq.js
+/frontend/dashboard/node_modules/lodash/uniqBy.js
+/frontend/dashboard/node_modules/lodash/uniqueId.js
+/frontend/dashboard/node_modules/lodash/uniqWith.js
+/frontend/dashboard/node_modules/lodash/unset.js
+/frontend/dashboard/node_modules/lodash/unzip.js
+/frontend/dashboard/node_modules/lodash/unzipWith.js
+/frontend/dashboard/node_modules/lodash/update.js
+/frontend/dashboard/node_modules/lodash/updateWith.js
+/frontend/dashboard/node_modules/lodash/upperCase.js
+/frontend/dashboard/node_modules/lodash/upperFirst.js
+/frontend/dashboard/node_modules/lodash/util.js
+/frontend/dashboard/node_modules/lodash/value.js
+/frontend/dashboard/node_modules/lodash/valueOf.js
+/frontend/dashboard/node_modules/lodash/values.js
+/frontend/dashboard/node_modules/lodash/valuesIn.js
+/frontend/dashboard/node_modules/lodash/without.js
+/frontend/dashboard/node_modules/lodash/words.js
+/frontend/dashboard/node_modules/lodash/wrap.js
+/frontend/dashboard/node_modules/lodash/wrapperAt.js
+/frontend/dashboard/node_modules/lodash/wrapperChain.js
+/frontend/dashboard/node_modules/lodash/wrapperLodash.js
+/frontend/dashboard/node_modules/lodash/wrapperReverse.js
+/frontend/dashboard/node_modules/lodash/wrapperValue.js
+/frontend/dashboard/node_modules/lodash/xor.js
+/frontend/dashboard/node_modules/lodash/xorBy.js
+/frontend/dashboard/node_modules/lodash/xorWith.js
+/frontend/dashboard/node_modules/lodash/zip.js
+/frontend/dashboard/node_modules/lodash/zipObject.js
+/frontend/dashboard/node_modules/lodash/zipObjectDeep.js
+/frontend/dashboard/node_modules/lodash/zipWith.js
+/frontend/dashboard/node_modules/lodash-es/_addMapEntry.js
+/frontend/dashboard/node_modules/lodash-es/_addSetEntry.js
+/frontend/dashboard/node_modules/lodash-es/_apply.js
+/frontend/dashboard/node_modules/lodash-es/_arrayAggregator.js
+/frontend/dashboard/node_modules/lodash-es/_arrayEach.js
+/frontend/dashboard/node_modules/lodash-es/_arrayEachRight.js
+/frontend/dashboard/node_modules/lodash-es/_arrayEvery.js
+/frontend/dashboard/node_modules/lodash-es/_arrayFilter.js
+/frontend/dashboard/node_modules/lodash-es/_arrayIncludes.js
+/frontend/dashboard/node_modules/lodash-es/_arrayIncludesWith.js
+/frontend/dashboard/node_modules/lodash-es/_arrayLikeKeys.js
+/frontend/dashboard/node_modules/lodash-es/_arrayMap.js
+/frontend/dashboard/node_modules/lodash-es/_arrayPush.js
+/frontend/dashboard/node_modules/lodash-es/_arrayReduce.js
+/frontend/dashboard/node_modules/lodash-es/_arrayReduceRight.js
+/frontend/dashboard/node_modules/lodash-es/_arraySample.js
+/frontend/dashboard/node_modules/lodash-es/_arraySampleSize.js
+/frontend/dashboard/node_modules/lodash-es/_arrayShuffle.js
+/frontend/dashboard/node_modules/lodash-es/_arraySome.js
+/frontend/dashboard/node_modules/lodash-es/_asciiSize.js
+/frontend/dashboard/node_modules/lodash-es/_asciiToArray.js
+/frontend/dashboard/node_modules/lodash-es/_asciiWords.js
+/frontend/dashboard/node_modules/lodash-es/_assignMergeValue.js
+/frontend/dashboard/node_modules/lodash-es/_assignValue.js
+/frontend/dashboard/node_modules/lodash-es/_assocIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/_baseAggregator.js
+/frontend/dashboard/node_modules/lodash-es/_baseAssign.js
+/frontend/dashboard/node_modules/lodash-es/_baseAssignIn.js
+/frontend/dashboard/node_modules/lodash-es/_baseAssignValue.js
+/frontend/dashboard/node_modules/lodash-es/_baseAt.js
+/frontend/dashboard/node_modules/lodash-es/_baseClamp.js
+/frontend/dashboard/node_modules/lodash-es/_baseClone.js
+/frontend/dashboard/node_modules/lodash-es/_baseConforms.js
+/frontend/dashboard/node_modules/lodash-es/_baseConformsTo.js
+/frontend/dashboard/node_modules/lodash-es/_baseCreate.js
+/frontend/dashboard/node_modules/lodash-es/_baseDelay.js
+/frontend/dashboard/node_modules/lodash-es/_baseDifference.js
+/frontend/dashboard/node_modules/lodash-es/_baseEach.js
+/frontend/dashboard/node_modules/lodash-es/_baseEachRight.js
+/frontend/dashboard/node_modules/lodash-es/_baseEvery.js
+/frontend/dashboard/node_modules/lodash-es/_baseExtremum.js
+/frontend/dashboard/node_modules/lodash-es/_baseFill.js
+/frontend/dashboard/node_modules/lodash-es/_baseFilter.js
+/frontend/dashboard/node_modules/lodash-es/_baseFindIndex.js
+/frontend/dashboard/node_modules/lodash-es/_baseFindKey.js
+/frontend/dashboard/node_modules/lodash-es/_baseFlatten.js
+/frontend/dashboard/node_modules/lodash-es/_baseFor.js
+/frontend/dashboard/node_modules/lodash-es/_baseForOwn.js
+/frontend/dashboard/node_modules/lodash-es/_baseForOwnRight.js
+/frontend/dashboard/node_modules/lodash-es/_baseForRight.js
+/frontend/dashboard/node_modules/lodash-es/_baseFunctions.js
+/frontend/dashboard/node_modules/lodash-es/_baseGet.js
+/frontend/dashboard/node_modules/lodash-es/_baseGetAllKeys.js
+/frontend/dashboard/node_modules/lodash-es/_baseGetTag.js
+/frontend/dashboard/node_modules/lodash-es/_baseGt.js
+/frontend/dashboard/node_modules/lodash-es/_baseHas.js
+/frontend/dashboard/node_modules/lodash-es/_baseHasIn.js
+/frontend/dashboard/node_modules/lodash-es/_baseIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/_baseIndexOfWith.js
+/frontend/dashboard/node_modules/lodash-es/_baseInRange.js
+/frontend/dashboard/node_modules/lodash-es/_baseIntersection.js
+/frontend/dashboard/node_modules/lodash-es/_baseInverter.js
+/frontend/dashboard/node_modules/lodash-es/_baseInvoke.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsArguments.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsArrayBuffer.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsDate.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsEqual.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsEqualDeep.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsMap.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsMatch.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsNaN.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsNative.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsRegExp.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsSet.js
+/frontend/dashboard/node_modules/lodash-es/_baseIsTypedArray.js
+/frontend/dashboard/node_modules/lodash-es/_baseIteratee.js
+/frontend/dashboard/node_modules/lodash-es/_baseKeys.js
+/frontend/dashboard/node_modules/lodash-es/_baseKeysIn.js
+/frontend/dashboard/node_modules/lodash-es/_baseLodash.js
+/frontend/dashboard/node_modules/lodash-es/_baseLt.js
+/frontend/dashboard/node_modules/lodash-es/_baseMap.js
+/frontend/dashboard/node_modules/lodash-es/_baseMatches.js
+/frontend/dashboard/node_modules/lodash-es/_baseMatchesProperty.js
+/frontend/dashboard/node_modules/lodash-es/_baseMean.js
+/frontend/dashboard/node_modules/lodash-es/_baseMerge.js
+/frontend/dashboard/node_modules/lodash-es/_baseMergeDeep.js
+/frontend/dashboard/node_modules/lodash-es/_baseNth.js
+/frontend/dashboard/node_modules/lodash-es/_baseOrderBy.js
+/frontend/dashboard/node_modules/lodash-es/_basePick.js
+/frontend/dashboard/node_modules/lodash-es/_basePickBy.js
+/frontend/dashboard/node_modules/lodash-es/_baseProperty.js
+/frontend/dashboard/node_modules/lodash-es/_basePropertyDeep.js
+/frontend/dashboard/node_modules/lodash-es/_basePropertyOf.js
+/frontend/dashboard/node_modules/lodash-es/_basePullAll.js
+/frontend/dashboard/node_modules/lodash-es/_basePullAt.js
+/frontend/dashboard/node_modules/lodash-es/_baseRandom.js
+/frontend/dashboard/node_modules/lodash-es/_baseRange.js
+/frontend/dashboard/node_modules/lodash-es/_baseReduce.js
+/frontend/dashboard/node_modules/lodash-es/_baseRepeat.js
+/frontend/dashboard/node_modules/lodash-es/_baseRest.js
+/frontend/dashboard/node_modules/lodash-es/_baseSample.js
+/frontend/dashboard/node_modules/lodash-es/_baseSampleSize.js
+/frontend/dashboard/node_modules/lodash-es/_baseSet.js
+/frontend/dashboard/node_modules/lodash-es/_baseSetData.js
+/frontend/dashboard/node_modules/lodash-es/_baseSetToString.js
+/frontend/dashboard/node_modules/lodash-es/_baseShuffle.js
+/frontend/dashboard/node_modules/lodash-es/_baseSlice.js
+/frontend/dashboard/node_modules/lodash-es/_baseSome.js
+/frontend/dashboard/node_modules/lodash-es/_baseSortBy.js
+/frontend/dashboard/node_modules/lodash-es/_baseSortedIndex.js
+/frontend/dashboard/node_modules/lodash-es/_baseSortedIndexBy.js
+/frontend/dashboard/node_modules/lodash-es/_baseSortedUniq.js
+/frontend/dashboard/node_modules/lodash-es/_baseSum.js
+/frontend/dashboard/node_modules/lodash-es/_baseTimes.js
+/frontend/dashboard/node_modules/lodash-es/_baseToNumber.js
+/frontend/dashboard/node_modules/lodash-es/_baseToPairs.js
+/frontend/dashboard/node_modules/lodash-es/_baseToString.js
+/frontend/dashboard/node_modules/lodash-es/_baseTrim.js
+/frontend/dashboard/node_modules/lodash-es/_baseUnary.js
+/frontend/dashboard/node_modules/lodash-es/_baseUniq.js
+/frontend/dashboard/node_modules/lodash-es/_baseUnset.js
+/frontend/dashboard/node_modules/lodash-es/_baseUpdate.js
+/frontend/dashboard/node_modules/lodash-es/_baseValues.js
+/frontend/dashboard/node_modules/lodash-es/_baseWhile.js
+/frontend/dashboard/node_modules/lodash-es/_baseWrapperValue.js
+/frontend/dashboard/node_modules/lodash-es/_baseXor.js
+/frontend/dashboard/node_modules/lodash-es/_baseZipObject.js
+/frontend/dashboard/node_modules/lodash-es/_cacheHas.js
+/frontend/dashboard/node_modules/lodash-es/_castArrayLikeObject.js
+/frontend/dashboard/node_modules/lodash-es/_castFunction.js
+/frontend/dashboard/node_modules/lodash-es/_castPath.js
+/frontend/dashboard/node_modules/lodash-es/_castRest.js
+/frontend/dashboard/node_modules/lodash-es/_castSlice.js
+/frontend/dashboard/node_modules/lodash-es/_charsEndIndex.js
+/frontend/dashboard/node_modules/lodash-es/_charsStartIndex.js
+/frontend/dashboard/node_modules/lodash-es/_cloneArrayBuffer.js
+/frontend/dashboard/node_modules/lodash-es/_cloneBuffer.js
+/frontend/dashboard/node_modules/lodash-es/_cloneDataView.js
+/frontend/dashboard/node_modules/lodash-es/_cloneMap.js
+/frontend/dashboard/node_modules/lodash-es/_cloneRegExp.js
+/frontend/dashboard/node_modules/lodash-es/_cloneSet.js
+/frontend/dashboard/node_modules/lodash-es/_cloneSymbol.js
+/frontend/dashboard/node_modules/lodash-es/_cloneTypedArray.js
+/frontend/dashboard/node_modules/lodash-es/_compareAscending.js
+/frontend/dashboard/node_modules/lodash-es/_compareMultiple.js
+/frontend/dashboard/node_modules/lodash-es/_composeArgs.js
+/frontend/dashboard/node_modules/lodash-es/_composeArgsRight.js
+/frontend/dashboard/node_modules/lodash-es/_copyArray.js
+/frontend/dashboard/node_modules/lodash-es/_copyObject.js
+/frontend/dashboard/node_modules/lodash-es/_copySymbols.js
+/frontend/dashboard/node_modules/lodash-es/_copySymbolsIn.js
+/frontend/dashboard/node_modules/lodash-es/_coreJsData.js
+/frontend/dashboard/node_modules/lodash-es/_countHolders.js
+/frontend/dashboard/node_modules/lodash-es/_createAggregator.js
+/frontend/dashboard/node_modules/lodash-es/_createAssigner.js
+/frontend/dashboard/node_modules/lodash-es/_createBaseEach.js
+/frontend/dashboard/node_modules/lodash-es/_createBaseFor.js
+/frontend/dashboard/node_modules/lodash-es/_createBind.js
+/frontend/dashboard/node_modules/lodash-es/_createCaseFirst.js
+/frontend/dashboard/node_modules/lodash-es/_createCompounder.js
+/frontend/dashboard/node_modules/lodash-es/_createCtor.js
+/frontend/dashboard/node_modules/lodash-es/_createCurry.js
+/frontend/dashboard/node_modules/lodash-es/_createFind.js
+/frontend/dashboard/node_modules/lodash-es/_createFlow.js
+/frontend/dashboard/node_modules/lodash-es/_createHybrid.js
+/frontend/dashboard/node_modules/lodash-es/_createInverter.js
+/frontend/dashboard/node_modules/lodash-es/_createMathOperation.js
+/frontend/dashboard/node_modules/lodash-es/_createOver.js
+/frontend/dashboard/node_modules/lodash-es/_createPadding.js
+/frontend/dashboard/node_modules/lodash-es/_createPartial.js
+/frontend/dashboard/node_modules/lodash-es/_createRange.js
+/frontend/dashboard/node_modules/lodash-es/_createRecurry.js
+/frontend/dashboard/node_modules/lodash-es/_createRelationalOperation.js
+/frontend/dashboard/node_modules/lodash-es/_createRound.js
+/frontend/dashboard/node_modules/lodash-es/_createSet.js
+/frontend/dashboard/node_modules/lodash-es/_createToPairs.js
+/frontend/dashboard/node_modules/lodash-es/_createWrap.js
+/frontend/dashboard/node_modules/lodash-es/_customDefaultsAssignIn.js
+/frontend/dashboard/node_modules/lodash-es/_customDefaultsMerge.js
+/frontend/dashboard/node_modules/lodash-es/_customOmitClone.js
+/frontend/dashboard/node_modules/lodash-es/_DataView.js
+/frontend/dashboard/node_modules/lodash-es/_deburrLetter.js
+/frontend/dashboard/node_modules/lodash-es/_defineProperty.js
+/frontend/dashboard/node_modules/lodash-es/_equalArrays.js
+/frontend/dashboard/node_modules/lodash-es/_equalByTag.js
+/frontend/dashboard/node_modules/lodash-es/_equalObjects.js
+/frontend/dashboard/node_modules/lodash-es/_escapeHtmlChar.js
+/frontend/dashboard/node_modules/lodash-es/_escapeStringChar.js
+/frontend/dashboard/node_modules/lodash-es/_flatRest.js
+/frontend/dashboard/node_modules/lodash-es/_freeGlobal.js
+/frontend/dashboard/node_modules/lodash-es/_getAllKeys.js
+/frontend/dashboard/node_modules/lodash-es/_getAllKeysIn.js
+/frontend/dashboard/node_modules/lodash-es/_getData.js
+/frontend/dashboard/node_modules/lodash-es/_getFuncName.js
+/frontend/dashboard/node_modules/lodash-es/_getHolder.js
+/frontend/dashboard/node_modules/lodash-es/_getMapData.js
+/frontend/dashboard/node_modules/lodash-es/_getMatchData.js
+/frontend/dashboard/node_modules/lodash-es/_getNative.js
+/frontend/dashboard/node_modules/lodash-es/_getPrototype.js
+/frontend/dashboard/node_modules/lodash-es/_getRawTag.js
+/frontend/dashboard/node_modules/lodash-es/_getSymbols.js
+/frontend/dashboard/node_modules/lodash-es/_getSymbolsIn.js
+/frontend/dashboard/node_modules/lodash-es/_getTag.js
+/frontend/dashboard/node_modules/lodash-es/_getValue.js
+/frontend/dashboard/node_modules/lodash-es/_getView.js
+/frontend/dashboard/node_modules/lodash-es/_getWrapDetails.js
+/frontend/dashboard/node_modules/lodash-es/_Hash.js
+/frontend/dashboard/node_modules/lodash-es/_hashClear.js
+/frontend/dashboard/node_modules/lodash-es/_hashDelete.js
+/frontend/dashboard/node_modules/lodash-es/_hashGet.js
+/frontend/dashboard/node_modules/lodash-es/_hashHas.js
+/frontend/dashboard/node_modules/lodash-es/_hashSet.js
+/frontend/dashboard/node_modules/lodash-es/_hasPath.js
+/frontend/dashboard/node_modules/lodash-es/_hasUnicode.js
+/frontend/dashboard/node_modules/lodash-es/_hasUnicodeWord.js
+/frontend/dashboard/node_modules/lodash-es/_initCloneArray.js
+/frontend/dashboard/node_modules/lodash-es/_initCloneByTag.js
+/frontend/dashboard/node_modules/lodash-es/_initCloneObject.js
+/frontend/dashboard/node_modules/lodash-es/_insertWrapDetails.js
+/frontend/dashboard/node_modules/lodash-es/_isFlattenable.js
+/frontend/dashboard/node_modules/lodash-es/_isIndex.js
+/frontend/dashboard/node_modules/lodash-es/_isIterateeCall.js
+/frontend/dashboard/node_modules/lodash-es/_isKey.js
+/frontend/dashboard/node_modules/lodash-es/_isKeyable.js
+/frontend/dashboard/node_modules/lodash-es/_isLaziable.js
+/frontend/dashboard/node_modules/lodash-es/_isMaskable.js
+/frontend/dashboard/node_modules/lodash-es/_isMasked.js
+/frontend/dashboard/node_modules/lodash-es/_isPrototype.js
+/frontend/dashboard/node_modules/lodash-es/_isStrictComparable.js
+/frontend/dashboard/node_modules/lodash-es/_iteratorToArray.js
+/frontend/dashboard/node_modules/lodash-es/_lazyClone.js
+/frontend/dashboard/node_modules/lodash-es/_lazyReverse.js
+/frontend/dashboard/node_modules/lodash-es/_lazyValue.js
+/frontend/dashboard/node_modules/lodash-es/_LazyWrapper.js
+/frontend/dashboard/node_modules/lodash-es/_ListCache.js
+/frontend/dashboard/node_modules/lodash-es/_listCacheClear.js
+/frontend/dashboard/node_modules/lodash-es/_listCacheDelete.js
+/frontend/dashboard/node_modules/lodash-es/_listCacheGet.js
+/frontend/dashboard/node_modules/lodash-es/_listCacheHas.js
+/frontend/dashboard/node_modules/lodash-es/_listCacheSet.js
+/frontend/dashboard/node_modules/lodash-es/_LodashWrapper.js
+/frontend/dashboard/node_modules/lodash-es/_Map.js
+/frontend/dashboard/node_modules/lodash-es/_MapCache.js
+/frontend/dashboard/node_modules/lodash-es/_mapCacheClear.js
+/frontend/dashboard/node_modules/lodash-es/_mapCacheDelete.js
+/frontend/dashboard/node_modules/lodash-es/_mapCacheGet.js
+/frontend/dashboard/node_modules/lodash-es/_mapCacheHas.js
+/frontend/dashboard/node_modules/lodash-es/_mapCacheSet.js
+/frontend/dashboard/node_modules/lodash-es/_mapToArray.js
+/frontend/dashboard/node_modules/lodash-es/_matchesStrictComparable.js
+/frontend/dashboard/node_modules/lodash-es/_memoizeCapped.js
+/frontend/dashboard/node_modules/lodash-es/_mergeData.js
+/frontend/dashboard/node_modules/lodash-es/_metaMap.js
+/frontend/dashboard/node_modules/lodash-es/_nativeCreate.js
+/frontend/dashboard/node_modules/lodash-es/_nativeKeys.js
+/frontend/dashboard/node_modules/lodash-es/_nativeKeysIn.js
+/frontend/dashboard/node_modules/lodash-es/_nodeUtil.js
+/frontend/dashboard/node_modules/lodash-es/_objectToString.js
+/frontend/dashboard/node_modules/lodash-es/_overArg.js
+/frontend/dashboard/node_modules/lodash-es/_overRest.js
+/frontend/dashboard/node_modules/lodash-es/_parent.js
+/frontend/dashboard/node_modules/lodash-es/_Promise.js
+/frontend/dashboard/node_modules/lodash-es/_realNames.js
+/frontend/dashboard/node_modules/lodash-es/_reEscape.js
+/frontend/dashboard/node_modules/lodash-es/_reEvaluate.js
+/frontend/dashboard/node_modules/lodash-es/_reInterpolate.js
+/frontend/dashboard/node_modules/lodash-es/_reorder.js
+/frontend/dashboard/node_modules/lodash-es/_replaceHolders.js
+/frontend/dashboard/node_modules/lodash-es/_root.js
+/frontend/dashboard/node_modules/lodash-es/_safeGet.js
+/frontend/dashboard/node_modules/lodash-es/_Set.js
+/frontend/dashboard/node_modules/lodash-es/_SetCache.js
+/frontend/dashboard/node_modules/lodash-es/_setCacheAdd.js
+/frontend/dashboard/node_modules/lodash-es/_setCacheHas.js
+/frontend/dashboard/node_modules/lodash-es/_setData.js
+/frontend/dashboard/node_modules/lodash-es/_setToArray.js
+/frontend/dashboard/node_modules/lodash-es/_setToPairs.js
+/frontend/dashboard/node_modules/lodash-es/_setToString.js
+/frontend/dashboard/node_modules/lodash-es/_setWrapToString.js
+/frontend/dashboard/node_modules/lodash-es/_shortOut.js
+/frontend/dashboard/node_modules/lodash-es/_shuffleSelf.js
+/frontend/dashboard/node_modules/lodash-es/_Stack.js
+/frontend/dashboard/node_modules/lodash-es/_stackClear.js
+/frontend/dashboard/node_modules/lodash-es/_stackDelete.js
+/frontend/dashboard/node_modules/lodash-es/_stackGet.js
+/frontend/dashboard/node_modules/lodash-es/_stackHas.js
+/frontend/dashboard/node_modules/lodash-es/_stackSet.js
+/frontend/dashboard/node_modules/lodash-es/_strictIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/_strictLastIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/_stringSize.js
+/frontend/dashboard/node_modules/lodash-es/_stringToArray.js
+/frontend/dashboard/node_modules/lodash-es/_stringToPath.js
+/frontend/dashboard/node_modules/lodash-es/_Symbol.js
+/frontend/dashboard/node_modules/lodash-es/_toKey.js
+/frontend/dashboard/node_modules/lodash-es/_toSource.js
+/frontend/dashboard/node_modules/lodash-es/_trimmedEndIndex.js
+/frontend/dashboard/node_modules/lodash-es/_Uint8Array.js
+/frontend/dashboard/node_modules/lodash-es/_unescapeHtmlChar.js
+/frontend/dashboard/node_modules/lodash-es/_unicodeSize.js
+/frontend/dashboard/node_modules/lodash-es/_unicodeToArray.js
+/frontend/dashboard/node_modules/lodash-es/_unicodeWords.js
+/frontend/dashboard/node_modules/lodash-es/_updateWrapDetails.js
+/frontend/dashboard/node_modules/lodash-es/_WeakMap.js
+/frontend/dashboard/node_modules/lodash-es/_wrapperClone.js
+/frontend/dashboard/node_modules/lodash-es/add.js
+/frontend/dashboard/node_modules/lodash-es/after.js
+/frontend/dashboard/node_modules/lodash-es/array.default.js
+/frontend/dashboard/node_modules/lodash-es/array.js
+/frontend/dashboard/node_modules/lodash-es/ary.js
+/frontend/dashboard/node_modules/lodash-es/assign.js
+/frontend/dashboard/node_modules/lodash-es/assignIn.js
+/frontend/dashboard/node_modules/lodash-es/assignInWith.js
+/frontend/dashboard/node_modules/lodash-es/assignWith.js
+/frontend/dashboard/node_modules/lodash-es/at.js
+/frontend/dashboard/node_modules/lodash-es/attempt.js
+/frontend/dashboard/node_modules/lodash-es/before.js
+/frontend/dashboard/node_modules/lodash-es/bind.js
+/frontend/dashboard/node_modules/lodash-es/bindAll.js
+/frontend/dashboard/node_modules/lodash-es/bindKey.js
+/frontend/dashboard/node_modules/lodash-es/camelCase.js
+/frontend/dashboard/node_modules/lodash-es/capitalize.js
+/frontend/dashboard/node_modules/lodash-es/castArray.js
+/frontend/dashboard/node_modules/lodash-es/ceil.js
+/frontend/dashboard/node_modules/lodash-es/chain.js
+/frontend/dashboard/node_modules/lodash-es/chunk.js
+/frontend/dashboard/node_modules/lodash-es/clamp.js
+/frontend/dashboard/node_modules/lodash-es/clone.js
+/frontend/dashboard/node_modules/lodash-es/cloneDeep.js
+/frontend/dashboard/node_modules/lodash-es/cloneDeepWith.js
+/frontend/dashboard/node_modules/lodash-es/cloneWith.js
+/frontend/dashboard/node_modules/lodash-es/collection.default.js
+/frontend/dashboard/node_modules/lodash-es/collection.js
+/frontend/dashboard/node_modules/lodash-es/commit.js
+/frontend/dashboard/node_modules/lodash-es/compact.js
+/frontend/dashboard/node_modules/lodash-es/concat.js
+/frontend/dashboard/node_modules/lodash-es/cond.js
+/frontend/dashboard/node_modules/lodash-es/conforms.js
+/frontend/dashboard/node_modules/lodash-es/conformsTo.js
+/frontend/dashboard/node_modules/lodash-es/constant.js
+/frontend/dashboard/node_modules/lodash-es/countBy.js
+/frontend/dashboard/node_modules/lodash-es/create.js
+/frontend/dashboard/node_modules/lodash-es/curry.js
+/frontend/dashboard/node_modules/lodash-es/curryRight.js
+/frontend/dashboard/node_modules/lodash-es/date.default.js
+/frontend/dashboard/node_modules/lodash-es/date.js
+/frontend/dashboard/node_modules/lodash-es/debounce.js
+/frontend/dashboard/node_modules/lodash-es/deburr.js
+/frontend/dashboard/node_modules/lodash-es/defaults.js
+/frontend/dashboard/node_modules/lodash-es/defaultsDeep.js
+/frontend/dashboard/node_modules/lodash-es/defaultTo.js
+/frontend/dashboard/node_modules/lodash-es/defer.js
+/frontend/dashboard/node_modules/lodash-es/delay.js
+/frontend/dashboard/node_modules/lodash-es/difference.js
+/frontend/dashboard/node_modules/lodash-es/differenceBy.js
+/frontend/dashboard/node_modules/lodash-es/differenceWith.js
+/frontend/dashboard/node_modules/lodash-es/divide.js
+/frontend/dashboard/node_modules/lodash-es/drop.js
+/frontend/dashboard/node_modules/lodash-es/dropRight.js
+/frontend/dashboard/node_modules/lodash-es/dropRightWhile.js
+/frontend/dashboard/node_modules/lodash-es/dropWhile.js
+/frontend/dashboard/node_modules/lodash-es/each.js
+/frontend/dashboard/node_modules/lodash-es/eachRight.js
+/frontend/dashboard/node_modules/lodash-es/endsWith.js
+/frontend/dashboard/node_modules/lodash-es/entries.js
+/frontend/dashboard/node_modules/lodash-es/entriesIn.js
+/frontend/dashboard/node_modules/lodash-es/eq.js
+/frontend/dashboard/node_modules/lodash-es/escape.js
+/frontend/dashboard/node_modules/lodash-es/escapeRegExp.js
+/frontend/dashboard/node_modules/lodash-es/every.js
+/frontend/dashboard/node_modules/lodash-es/extend.js
+/frontend/dashboard/node_modules/lodash-es/extendWith.js
+/frontend/dashboard/node_modules/lodash-es/fill.js
+/frontend/dashboard/node_modules/lodash-es/filter.js
+/frontend/dashboard/node_modules/lodash-es/find.js
+/frontend/dashboard/node_modules/lodash-es/findIndex.js
+/frontend/dashboard/node_modules/lodash-es/findKey.js
+/frontend/dashboard/node_modules/lodash-es/findLast.js
+/frontend/dashboard/node_modules/lodash-es/findLastIndex.js
+/frontend/dashboard/node_modules/lodash-es/findLastKey.js
+/frontend/dashboard/node_modules/lodash-es/first.js
+/frontend/dashboard/node_modules/lodash-es/flake.lock
+/frontend/dashboard/node_modules/lodash-es/flake.nix
+/frontend/dashboard/node_modules/lodash-es/flatMap.js
+/frontend/dashboard/node_modules/lodash-es/flatMapDeep.js
+/frontend/dashboard/node_modules/lodash-es/flatMapDepth.js
+/frontend/dashboard/node_modules/lodash-es/flatten.js
+/frontend/dashboard/node_modules/lodash-es/flattenDeep.js
+/frontend/dashboard/node_modules/lodash-es/flattenDepth.js
+/frontend/dashboard/node_modules/lodash-es/flip.js
+/frontend/dashboard/node_modules/lodash-es/floor.js
+/frontend/dashboard/node_modules/lodash-es/flow.js
+/frontend/dashboard/node_modules/lodash-es/flowRight.js
+/frontend/dashboard/node_modules/lodash-es/forEach.js
+/frontend/dashboard/node_modules/lodash-es/forEachRight.js
+/frontend/dashboard/node_modules/lodash-es/forIn.js
+/frontend/dashboard/node_modules/lodash-es/forInRight.js
+/frontend/dashboard/node_modules/lodash-es/forOwn.js
+/frontend/dashboard/node_modules/lodash-es/forOwnRight.js
+/frontend/dashboard/node_modules/lodash-es/fromPairs.js
+/frontend/dashboard/node_modules/lodash-es/function.default.js
+/frontend/dashboard/node_modules/lodash-es/function.js
+/frontend/dashboard/node_modules/lodash-es/functions.js
+/frontend/dashboard/node_modules/lodash-es/functionsIn.js
+/frontend/dashboard/node_modules/lodash-es/get.js
+/frontend/dashboard/node_modules/lodash-es/groupBy.js
+/frontend/dashboard/node_modules/lodash-es/gt.js
+/frontend/dashboard/node_modules/lodash-es/gte.js
+/frontend/dashboard/node_modules/lodash-es/has.js
+/frontend/dashboard/node_modules/lodash-es/hasIn.js
+/frontend/dashboard/node_modules/lodash-es/head.js
+/frontend/dashboard/node_modules/lodash-es/identity.js
+/frontend/dashboard/node_modules/lodash-es/includes.js
+/frontend/dashboard/node_modules/lodash-es/indexOf.js
+/frontend/dashboard/node_modules/lodash-es/initial.js
+/frontend/dashboard/node_modules/lodash-es/inRange.js
+/frontend/dashboard/node_modules/lodash-es/intersection.js
+/frontend/dashboard/node_modules/lodash-es/intersectionBy.js
+/frontend/dashboard/node_modules/lodash-es/intersectionWith.js
+/frontend/dashboard/node_modules/lodash-es/invert.js
+/frontend/dashboard/node_modules/lodash-es/invertBy.js
+/frontend/dashboard/node_modules/lodash-es/invoke.js
+/frontend/dashboard/node_modules/lodash-es/invokeMap.js
+/frontend/dashboard/node_modules/lodash-es/isArguments.js
+/frontend/dashboard/node_modules/lodash-es/isArray.js
+/frontend/dashboard/node_modules/lodash-es/isArrayBuffer.js
+/frontend/dashboard/node_modules/lodash-es/isArrayLike.js
+/frontend/dashboard/node_modules/lodash-es/isArrayLikeObject.js
+/frontend/dashboard/node_modules/lodash-es/isBoolean.js
+/frontend/dashboard/node_modules/lodash-es/isBuffer.js
+/frontend/dashboard/node_modules/lodash-es/isDate.js
+/frontend/dashboard/node_modules/lodash-es/isElement.js
+/frontend/dashboard/node_modules/lodash-es/isEmpty.js
+/frontend/dashboard/node_modules/lodash-es/isEqual.js
+/frontend/dashboard/node_modules/lodash-es/isEqualWith.js
+/frontend/dashboard/node_modules/lodash-es/isError.js
+/frontend/dashboard/node_modules/lodash-es/isFinite.js
+/frontend/dashboard/node_modules/lodash-es/isFunction.js
+/frontend/dashboard/node_modules/lodash-es/isInteger.js
+/frontend/dashboard/node_modules/lodash-es/isLength.js
+/frontend/dashboard/node_modules/lodash-es/isMap.js
+/frontend/dashboard/node_modules/lodash-es/isMatch.js
+/frontend/dashboard/node_modules/lodash-es/isMatchWith.js
+/frontend/dashboard/node_modules/lodash-es/isNaN.js
+/frontend/dashboard/node_modules/lodash-es/isNative.js
+/frontend/dashboard/node_modules/lodash-es/isNil.js
+/frontend/dashboard/node_modules/lodash-es/isNull.js
+/frontend/dashboard/node_modules/lodash-es/isNumber.js
+/frontend/dashboard/node_modules/lodash-es/isObject.js
+/frontend/dashboard/node_modules/lodash-es/isObjectLike.js
+/frontend/dashboard/node_modules/lodash-es/isPlainObject.js
+/frontend/dashboard/node_modules/lodash-es/isRegExp.js
+/frontend/dashboard/node_modules/lodash-es/isSafeInteger.js
+/frontend/dashboard/node_modules/lodash-es/isSet.js
+/frontend/dashboard/node_modules/lodash-es/isString.js
+/frontend/dashboard/node_modules/lodash-es/isSymbol.js
+/frontend/dashboard/node_modules/lodash-es/isTypedArray.js
+/frontend/dashboard/node_modules/lodash-es/isUndefined.js
+/frontend/dashboard/node_modules/lodash-es/isWeakMap.js
+/frontend/dashboard/node_modules/lodash-es/isWeakSet.js
+/frontend/dashboard/node_modules/lodash-es/iteratee.js
+/frontend/dashboard/node_modules/lodash-es/join.js
+/frontend/dashboard/node_modules/lodash-es/kebabCase.js
+/frontend/dashboard/node_modules/lodash-es/keyBy.js
+/frontend/dashboard/node_modules/lodash-es/keys.js
+/frontend/dashboard/node_modules/lodash-es/keysIn.js
+/frontend/dashboard/node_modules/lodash-es/lang.default.js
+/frontend/dashboard/node_modules/lodash-es/lang.js
+/frontend/dashboard/node_modules/lodash-es/last.js
+/frontend/dashboard/node_modules/lodash-es/lastIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/LICENSE
+/frontend/dashboard/node_modules/lodash-es/lodash.default.js
+/frontend/dashboard/node_modules/lodash-es/lodash.js
+/frontend/dashboard/node_modules/lodash-es/lowerCase.js
+/frontend/dashboard/node_modules/lodash-es/lowerFirst.js
+/frontend/dashboard/node_modules/lodash-es/lt.js
+/frontend/dashboard/node_modules/lodash-es/lte.js
+/frontend/dashboard/node_modules/lodash-es/map.js
+/frontend/dashboard/node_modules/lodash-es/mapKeys.js
+/frontend/dashboard/node_modules/lodash-es/mapValues.js
+/frontend/dashboard/node_modules/lodash-es/matches.js
+/frontend/dashboard/node_modules/lodash-es/matchesProperty.js
+/frontend/dashboard/node_modules/lodash-es/math.default.js
+/frontend/dashboard/node_modules/lodash-es/math.js
+/frontend/dashboard/node_modules/lodash-es/max.js
+/frontend/dashboard/node_modules/lodash-es/maxBy.js
+/frontend/dashboard/node_modules/lodash-es/mean.js
+/frontend/dashboard/node_modules/lodash-es/meanBy.js
+/frontend/dashboard/node_modules/lodash-es/memoize.js
+/frontend/dashboard/node_modules/lodash-es/merge.js
+/frontend/dashboard/node_modules/lodash-es/mergeWith.js
+/frontend/dashboard/node_modules/lodash-es/method.js
+/frontend/dashboard/node_modules/lodash-es/methodOf.js
+/frontend/dashboard/node_modules/lodash-es/min.js
+/frontend/dashboard/node_modules/lodash-es/minBy.js
+/frontend/dashboard/node_modules/lodash-es/mixin.js
+/frontend/dashboard/node_modules/lodash-es/multiply.js
+/frontend/dashboard/node_modules/lodash-es/negate.js
+/frontend/dashboard/node_modules/lodash-es/next.js
+/frontend/dashboard/node_modules/lodash-es/noop.js
+/frontend/dashboard/node_modules/lodash-es/now.js
+/frontend/dashboard/node_modules/lodash-es/nth.js
+/frontend/dashboard/node_modules/lodash-es/nthArg.js
+/frontend/dashboard/node_modules/lodash-es/number.default.js
+/frontend/dashboard/node_modules/lodash-es/number.js
+/frontend/dashboard/node_modules/lodash-es/object.default.js
+/frontend/dashboard/node_modules/lodash-es/object.js
+/frontend/dashboard/node_modules/lodash-es/omit.js
+/frontend/dashboard/node_modules/lodash-es/omitBy.js
+/frontend/dashboard/node_modules/lodash-es/once.js
+/frontend/dashboard/node_modules/lodash-es/orderBy.js
+/frontend/dashboard/node_modules/lodash-es/over.js
+/frontend/dashboard/node_modules/lodash-es/overArgs.js
+/frontend/dashboard/node_modules/lodash-es/overEvery.js
+/frontend/dashboard/node_modules/lodash-es/overSome.js
+/frontend/dashboard/node_modules/lodash-es/package.json
+/frontend/dashboard/node_modules/lodash-es/pad.js
+/frontend/dashboard/node_modules/lodash-es/padEnd.js
+/frontend/dashboard/node_modules/lodash-es/padStart.js
+/frontend/dashboard/node_modules/lodash-es/parseInt.js
+/frontend/dashboard/node_modules/lodash-es/partial.js
+/frontend/dashboard/node_modules/lodash-es/partialRight.js
+/frontend/dashboard/node_modules/lodash-es/partition.js
+/frontend/dashboard/node_modules/lodash-es/pick.js
+/frontend/dashboard/node_modules/lodash-es/pickBy.js
+/frontend/dashboard/node_modules/lodash-es/plant.js
+/frontend/dashboard/node_modules/lodash-es/property.js
+/frontend/dashboard/node_modules/lodash-es/propertyOf.js
+/frontend/dashboard/node_modules/lodash-es/pull.js
+/frontend/dashboard/node_modules/lodash-es/pullAll.js
+/frontend/dashboard/node_modules/lodash-es/pullAllBy.js
+/frontend/dashboard/node_modules/lodash-es/pullAllWith.js
+/frontend/dashboard/node_modules/lodash-es/pullAt.js
+/frontend/dashboard/node_modules/lodash-es/random.js
+/frontend/dashboard/node_modules/lodash-es/range.js
+/frontend/dashboard/node_modules/lodash-es/rangeRight.js
+/frontend/dashboard/node_modules/lodash-es/README.md
+/frontend/dashboard/node_modules/lodash-es/rearg.js
+/frontend/dashboard/node_modules/lodash-es/reduce.js
+/frontend/dashboard/node_modules/lodash-es/reduceRight.js
+/frontend/dashboard/node_modules/lodash-es/reject.js
+/frontend/dashboard/node_modules/lodash-es/release.md
+/frontend/dashboard/node_modules/lodash-es/remove.js
+/frontend/dashboard/node_modules/lodash-es/repeat.js
+/frontend/dashboard/node_modules/lodash-es/replace.js
+/frontend/dashboard/node_modules/lodash-es/rest.js
+/frontend/dashboard/node_modules/lodash-es/result.js
+/frontend/dashboard/node_modules/lodash-es/reverse.js
+/frontend/dashboard/node_modules/lodash-es/round.js
+/frontend/dashboard/node_modules/lodash-es/sample.js
+/frontend/dashboard/node_modules/lodash-es/sampleSize.js
+/frontend/dashboard/node_modules/lodash-es/seq.default.js
+/frontend/dashboard/node_modules/lodash-es/seq.js
+/frontend/dashboard/node_modules/lodash-es/set.js
+/frontend/dashboard/node_modules/lodash-es/setWith.js
+/frontend/dashboard/node_modules/lodash-es/shuffle.js
+/frontend/dashboard/node_modules/lodash-es/size.js
+/frontend/dashboard/node_modules/lodash-es/slice.js
+/frontend/dashboard/node_modules/lodash-es/snakeCase.js
+/frontend/dashboard/node_modules/lodash-es/some.js
+/frontend/dashboard/node_modules/lodash-es/sortBy.js
+/frontend/dashboard/node_modules/lodash-es/sortedIndex.js
+/frontend/dashboard/node_modules/lodash-es/sortedIndexBy.js
+/frontend/dashboard/node_modules/lodash-es/sortedIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/sortedLastIndex.js
+/frontend/dashboard/node_modules/lodash-es/sortedLastIndexBy.js
+/frontend/dashboard/node_modules/lodash-es/sortedLastIndexOf.js
+/frontend/dashboard/node_modules/lodash-es/sortedUniq.js
+/frontend/dashboard/node_modules/lodash-es/sortedUniqBy.js
+/frontend/dashboard/node_modules/lodash-es/split.js
+/frontend/dashboard/node_modules/lodash-es/spread.js
+/frontend/dashboard/node_modules/lodash-es/startCase.js
+/frontend/dashboard/node_modules/lodash-es/startsWith.js
+/frontend/dashboard/node_modules/lodash-es/string.default.js
+/frontend/dashboard/node_modules/lodash-es/string.js
+/frontend/dashboard/node_modules/lodash-es/stubArray.js
+/frontend/dashboard/node_modules/lodash-es/stubFalse.js
+/frontend/dashboard/node_modules/lodash-es/stubObject.js
+/frontend/dashboard/node_modules/lodash-es/stubString.js
+/frontend/dashboard/node_modules/lodash-es/stubTrue.js
+/frontend/dashboard/node_modules/lodash-es/subtract.js
+/frontend/dashboard/node_modules/lodash-es/sum.js
+/frontend/dashboard/node_modules/lodash-es/sumBy.js
+/frontend/dashboard/node_modules/lodash-es/tail.js
+/frontend/dashboard/node_modules/lodash-es/take.js
+/frontend/dashboard/node_modules/lodash-es/takeRight.js
+/frontend/dashboard/node_modules/lodash-es/takeRightWhile.js
+/frontend/dashboard/node_modules/lodash-es/takeWhile.js
+/frontend/dashboard/node_modules/lodash-es/tap.js
+/frontend/dashboard/node_modules/lodash-es/template.js
+/frontend/dashboard/node_modules/lodash-es/templateSettings.js
+/frontend/dashboard/node_modules/lodash-es/throttle.js
+/frontend/dashboard/node_modules/lodash-es/thru.js
+/frontend/dashboard/node_modules/lodash-es/times.js
+/frontend/dashboard/node_modules/lodash-es/toArray.js
+/frontend/dashboard/node_modules/lodash-es/toFinite.js
+/frontend/dashboard/node_modules/lodash-es/toInteger.js
+/frontend/dashboard/node_modules/lodash-es/toIterator.js
+/frontend/dashboard/node_modules/lodash-es/toJSON.js
+/frontend/dashboard/node_modules/lodash-es/toLength.js
+/frontend/dashboard/node_modules/lodash-es/toLower.js
+/frontend/dashboard/node_modules/lodash-es/toNumber.js
+/frontend/dashboard/node_modules/lodash-es/toPairs.js
+/frontend/dashboard/node_modules/lodash-es/toPairsIn.js
+/frontend/dashboard/node_modules/lodash-es/toPath.js
+/frontend/dashboard/node_modules/lodash-es/toPlainObject.js
+/frontend/dashboard/node_modules/lodash-es/toSafeInteger.js
+/frontend/dashboard/node_modules/lodash-es/toString.js
+/frontend/dashboard/node_modules/lodash-es/toUpper.js
+/frontend/dashboard/node_modules/lodash-es/transform.js
+/frontend/dashboard/node_modules/lodash-es/trim.js
+/frontend/dashboard/node_modules/lodash-es/trimEnd.js
+/frontend/dashboard/node_modules/lodash-es/trimStart.js
+/frontend/dashboard/node_modules/lodash-es/truncate.js
+/frontend/dashboard/node_modules/lodash-es/unary.js
+/frontend/dashboard/node_modules/lodash-es/unescape.js
+/frontend/dashboard/node_modules/lodash-es/union.js
+/frontend/dashboard/node_modules/lodash-es/unionBy.js
+/frontend/dashboard/node_modules/lodash-es/unionWith.js
+/frontend/dashboard/node_modules/lodash-es/uniq.js
+/frontend/dashboard/node_modules/lodash-es/uniqBy.js
+/frontend/dashboard/node_modules/lodash-es/uniqueId.js
+/frontend/dashboard/node_modules/lodash-es/uniqWith.js
+/frontend/dashboard/node_modules/lodash-es/unset.js
+/frontend/dashboard/node_modules/lodash-es/unzip.js
+/frontend/dashboard/node_modules/lodash-es/unzipWith.js
+/frontend/dashboard/node_modules/lodash-es/update.js
+/frontend/dashboard/node_modules/lodash-es/updateWith.js
+/frontend/dashboard/node_modules/lodash-es/upperCase.js
+/frontend/dashboard/node_modules/lodash-es/upperFirst.js
+/frontend/dashboard/node_modules/lodash-es/util.default.js
+/frontend/dashboard/node_modules/lodash-es/util.js
+/frontend/dashboard/node_modules/lodash-es/value.js
+/frontend/dashboard/node_modules/lodash-es/valueOf.js
+/frontend/dashboard/node_modules/lodash-es/values.js
+/frontend/dashboard/node_modules/lodash-es/valuesIn.js
+/frontend/dashboard/node_modules/lodash-es/without.js
+/frontend/dashboard/node_modules/lodash-es/words.js
+/frontend/dashboard/node_modules/lodash-es/wrap.js
+/frontend/dashboard/node_modules/lodash-es/wrapperAt.js
+/frontend/dashboard/node_modules/lodash-es/wrapperChain.js
+/frontend/dashboard/node_modules/lodash-es/wrapperLodash.js
+/frontend/dashboard/node_modules/lodash-es/wrapperReverse.js
+/frontend/dashboard/node_modules/lodash-es/wrapperValue.js
+/frontend/dashboard/node_modules/lodash-es/xor.js
+/frontend/dashboard/node_modules/lodash-es/xorBy.js
+/frontend/dashboard/node_modules/lodash-es/xorWith.js
+/frontend/dashboard/node_modules/lodash-es/zip.js
+/frontend/dashboard/node_modules/lodash-es/zipObject.js
+/frontend/dashboard/node_modules/lodash-es/zipObjectDeep.js
+/frontend/dashboard/node_modules/lodash-es/zipWith.js
+/frontend/dashboard/node_modules/loose-envify/cli.js
+/frontend/dashboard/node_modules/loose-envify/custom.js
+/frontend/dashboard/node_modules/loose-envify/index.js
+/frontend/dashboard/node_modules/loose-envify/LICENSE
+/frontend/dashboard/node_modules/loose-envify/loose-envify.js
+/frontend/dashboard/node_modules/loose-envify/package.json
+/frontend/dashboard/node_modules/loose-envify/README.md
+/frontend/dashboard/node_modules/loose-envify/replace.js
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.cjs.d.ts
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.cjs.js
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.cjs.js.map
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.es.d.mts
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.es.mjs
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.es.mjs.map
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.umd.js
+/frontend/dashboard/node_modules/magic-string/dist/magic-string.umd.js.map
+/frontend/dashboard/node_modules/magic-string/LICENSE
+/frontend/dashboard/node_modules/magic-string/package.json
+/frontend/dashboard/node_modules/magic-string/README.md
+/frontend/dashboard/node_modules/nanoid/async/index.browser.cjs
+/frontend/dashboard/node_modules/nanoid/async/index.browser.js
+/frontend/dashboard/node_modules/nanoid/async/index.cjs
+/frontend/dashboard/node_modules/nanoid/async/index.d.ts
+/frontend/dashboard/node_modules/nanoid/async/index.js
+/frontend/dashboard/node_modules/nanoid/async/index.native.js
+/frontend/dashboard/node_modules/nanoid/async/package.json
+/frontend/dashboard/node_modules/nanoid/bin/nanoid.cjs
+/frontend/dashboard/node_modules/nanoid/non-secure/index.cjs
+/frontend/dashboard/node_modules/nanoid/non-secure/index.d.ts
+/frontend/dashboard/node_modules/nanoid/non-secure/index.js
+/frontend/dashboard/node_modules/nanoid/non-secure/package.json
+/frontend/dashboard/node_modules/nanoid/url-alphabet/index.cjs
+/frontend/dashboard/node_modules/nanoid/url-alphabet/index.js
+/frontend/dashboard/node_modules/nanoid/url-alphabet/package.json
+/frontend/dashboard/node_modules/nanoid/index.browser.cjs
+/frontend/dashboard/node_modules/nanoid/index.browser.js
+/frontend/dashboard/node_modules/nanoid/index.cjs
+/frontend/dashboard/node_modules/nanoid/index.d.cts
+/frontend/dashboard/node_modules/nanoid/index.d.ts
+/frontend/dashboard/node_modules/nanoid/index.js
+/frontend/dashboard/node_modules/nanoid/LICENSE
+/frontend/dashboard/node_modules/nanoid/nanoid.js
+/frontend/dashboard/node_modules/nanoid/package.json
+/frontend/dashboard/node_modules/nanoid/README.md
+/frontend/dashboard/node_modules/nanopop/dist/src/index.d.ts
+/frontend/dashboard/node_modules/nanopop/dist/tests/arrow.spec.d.ts
+/frontend/dashboard/node_modules/nanopop/dist/tests/basic.spec.d.ts
+/frontend/dashboard/node_modules/nanopop/dist/tests/container.spec.d.ts
+/frontend/dashboard/node_modules/nanopop/dist/tests/repositioning.spec.d.ts
+/frontend/dashboard/node_modules/nanopop/dist/tests/utils.d.ts
+/frontend/dashboard/node_modules/nanopop/dist/nanopop.mjs
+/frontend/dashboard/node_modules/nanopop/dist/nanopop.mjs.map
+/frontend/dashboard/node_modules/nanopop/dist/nanopop.umd.js
+/frontend/dashboard/node_modules/nanopop/dist/nanopop.umd.js.map
+/frontend/dashboard/node_modules/nanopop/src/index.ts
+/frontend/dashboard/node_modules/nanopop/src/typings.d.ts
+/frontend/dashboard/node_modules/nanopop/LICENSE
+/frontend/dashboard/node_modules/nanopop/package.json
+/frontend/dashboard/node_modules/nanopop/README.md
+/frontend/dashboard/node_modules/path-parse/index.js
+/frontend/dashboard/node_modules/path-parse/LICENSE
+/frontend/dashboard/node_modules/path-parse/package.json
+/frontend/dashboard/node_modules/path-parse/README.md
+/frontend/dashboard/node_modules/picocolors/LICENSE
+/frontend/dashboard/node_modules/picocolors/package.json
+/frontend/dashboard/node_modules/picocolors/picocolors.browser.js
+/frontend/dashboard/node_modules/picocolors/picocolors.d.ts
+/frontend/dashboard/node_modules/picocolors/picocolors.js
+/frontend/dashboard/node_modules/picocolors/README.md
+/frontend/dashboard/node_modules/picocolors/types.d.ts
+/frontend/dashboard/node_modules/pinia/dist/pinia.cjs
+/frontend/dashboard/node_modules/pinia/dist/pinia.d.ts
+/frontend/dashboard/node_modules/pinia/dist/pinia.esm-browser.js
+/frontend/dashboard/node_modules/pinia/dist/pinia.iife.js
+/frontend/dashboard/node_modules/pinia/dist/pinia.iife.prod.js
+/frontend/dashboard/node_modules/pinia/dist/pinia.mjs
+/frontend/dashboard/node_modules/pinia/dist/pinia.prod.cjs
+/frontend/dashboard/node_modules/pinia/index.cjs
+/frontend/dashboard/node_modules/pinia/index.js
+/frontend/dashboard/node_modules/pinia/LICENSE
+/frontend/dashboard/node_modules/pinia/package.json
+/frontend/dashboard/node_modules/pinia/README.md
+/frontend/dashboard/node_modules/postcss/lib/at-rule.d.ts
+/frontend/dashboard/node_modules/postcss/lib/at-rule.js
+/frontend/dashboard/node_modules/postcss/lib/comment.d.ts
+/frontend/dashboard/node_modules/postcss/lib/comment.js
+/frontend/dashboard/node_modules/postcss/lib/container.d.ts
+/frontend/dashboard/node_modules/postcss/lib/container.js
+/frontend/dashboard/node_modules/postcss/lib/css-syntax-error.d.ts
+/frontend/dashboard/node_modules/postcss/lib/css-syntax-error.js
+/frontend/dashboard/node_modules/postcss/lib/declaration.d.ts
+/frontend/dashboard/node_modules/postcss/lib/declaration.js
+/frontend/dashboard/node_modules/postcss/lib/document.d.ts
+/frontend/dashboard/node_modules/postcss/lib/document.js
+/frontend/dashboard/node_modules/postcss/lib/fromJSON.d.ts
+/frontend/dashboard/node_modules/postcss/lib/fromJSON.js
+/frontend/dashboard/node_modules/postcss/lib/input.d.ts
+/frontend/dashboard/node_modules/postcss/lib/input.js
+/frontend/dashboard/node_modules/postcss/lib/lazy-result.d.ts
+/frontend/dashboard/node_modules/postcss/lib/lazy-result.js
+/frontend/dashboard/node_modules/postcss/lib/list.d.ts
+/frontend/dashboard/node_modules/postcss/lib/list.js
+/frontend/dashboard/node_modules/postcss/lib/map-generator.js
+/frontend/dashboard/node_modules/postcss/lib/no-work-result.d.ts
+/frontend/dashboard/node_modules/postcss/lib/no-work-result.js
+/frontend/dashboard/node_modules/postcss/lib/node.d.ts
+/frontend/dashboard/node_modules/postcss/lib/node.js
+/frontend/dashboard/node_modules/postcss/lib/parse.d.ts
+/frontend/dashboard/node_modules/postcss/lib/parse.js
+/frontend/dashboard/node_modules/postcss/lib/parser.js
+/frontend/dashboard/node_modules/postcss/lib/postcss.d.mts
+/frontend/dashboard/node_modules/postcss/lib/postcss.d.ts
+/frontend/dashboard/node_modules/postcss/lib/postcss.js
+/frontend/dashboard/node_modules/postcss/lib/postcss.mjs
+/frontend/dashboard/node_modules/postcss/lib/previous-map.d.ts
+/frontend/dashboard/node_modules/postcss/lib/previous-map.js
+/frontend/dashboard/node_modules/postcss/lib/processor.d.ts
+/frontend/dashboard/node_modules/postcss/lib/processor.js
+/frontend/dashboard/node_modules/postcss/lib/result.d.ts
+/frontend/dashboard/node_modules/postcss/lib/result.js
+/frontend/dashboard/node_modules/postcss/lib/root.d.ts
+/frontend/dashboard/node_modules/postcss/lib/root.js
+/frontend/dashboard/node_modules/postcss/lib/rule.d.ts
+/frontend/dashboard/node_modules/postcss/lib/rule.js
+/frontend/dashboard/node_modules/postcss/lib/stringifier.d.ts
+/frontend/dashboard/node_modules/postcss/lib/stringifier.js
+/frontend/dashboard/node_modules/postcss/lib/stringify.d.ts
+/frontend/dashboard/node_modules/postcss/lib/stringify.js
+/frontend/dashboard/node_modules/postcss/lib/symbols.js
+/frontend/dashboard/node_modules/postcss/lib/terminal-highlight.js
+/frontend/dashboard/node_modules/postcss/lib/tokenize.js
+/frontend/dashboard/node_modules/postcss/lib/warn-once.js
+/frontend/dashboard/node_modules/postcss/lib/warning.d.ts
+/frontend/dashboard/node_modules/postcss/lib/warning.js
+/frontend/dashboard/node_modules/postcss/LICENSE
+/frontend/dashboard/node_modules/postcss/package.json
+/frontend/dashboard/node_modules/postcss/README.md
+/frontend/dashboard/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/dist/ResizeObserver.global.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/dist/ResizeObserver.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/dist/ResizeObserver.js.flow
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/shims/es6-collections.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/shims/global.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/shims/requestAnimationFrame.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/utils/defineConfigurable.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/utils/geometry.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/utils/getWindowOf.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/utils/isBrowser.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/utils/throttle.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/index.d.ts
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/index.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/index.js.flow
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/ResizeObservation.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/ResizeObserver.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/ResizeObserverController.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/ResizeObserverEntry.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/src/ResizeObserverSPI.js
+/frontend/dashboard/node_modules/resize-observer-polyfill/LICENSE
+/frontend/dashboard/node_modules/resize-observer-polyfill/package.json
+/frontend/dashboard/node_modules/resize-observer-polyfill/README.md
+/frontend/dashboard/node_modules/resolve/.github/FUNDING.yml
+/frontend/dashboard/node_modules/resolve/bin/resolve
+/frontend/dashboard/node_modules/resolve/example/async.js
+/frontend/dashboard/node_modules/resolve/example/sync.js
+/frontend/dashboard/node_modules/resolve/lib/async.js
+/frontend/dashboard/node_modules/resolve/lib/caller.js
+/frontend/dashboard/node_modules/resolve/lib/core.js
+/frontend/dashboard/node_modules/resolve/lib/core.json
+/frontend/dashboard/node_modules/resolve/lib/homedir.js
+/frontend/dashboard/node_modules/resolve/lib/is-core.js
+/frontend/dashboard/node_modules/resolve/lib/node-modules-paths.js
+/frontend/dashboard/node_modules/resolve/lib/normalize-options.js
+/frontend/dashboard/node_modules/resolve/lib/sync.js
+/frontend/dashboard/node_modules/resolve/test/dotdot/abc/index.js
+/frontend/dashboard/node_modules/resolve/test/dotdot/index.js
+/frontend/dashboard/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
+/frontend/dashboard/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
+/frontend/dashboard/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
+/frontend/dashboard/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
+/frontend/dashboard/node_modules/resolve/test/node_path/x/aaa/index.js
+/frontend/dashboard/node_modules/resolve/test/node_path/x/ccc/index.js
+/frontend/dashboard/node_modules/resolve/test/node_path/y/bbb/index.js
+/frontend/dashboard/node_modules/resolve/test/node_path/y/ccc/index.js
+/frontend/dashboard/node_modules/resolve/test/pathfilter/deep_ref/main.js
+/frontend/dashboard/node_modules/resolve/test/precedence/aaa/index.js
+/frontend/dashboard/node_modules/resolve/test/precedence/aaa/main.js
+/frontend/dashboard/node_modules/resolve/test/precedence/bbb/main.js
+/frontend/dashboard/node_modules/resolve/test/precedence/aaa.js
+/frontend/dashboard/node_modules/resolve/test/precedence/bbb.js
+/frontend/dashboard/node_modules/resolve/test/resolver/baz/doom.js
+/frontend/dashboard/node_modules/resolve/test/resolver/baz/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/baz/quux.js
+/frontend/dashboard/node_modules/resolve/test/resolver/browser_field/a.js
+/frontend/dashboard/node_modules/resolve/test/resolver/browser_field/b.js
+/frontend/dashboard/node_modules/resolve/test/resolver/browser_field/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/dot_main/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/dot_main/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/dot_slash_main/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/dot_slash_main/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/false_main/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/false_main/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/incorrect_main/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/incorrect_main/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/invalid_main/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/multirepo/lerna.json
+/frontend/dashboard/node_modules/resolve/test/resolver/multirepo/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js
+/frontend/dashboard/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js
+/frontend/dashboard/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
+/frontend/dashboard/node_modules/resolve/test/resolver/other_path/root.js
+/frontend/dashboard/node_modules/resolve/test/resolver/quux/foo/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/same_names/foo/index.js
+/frontend/dashboard/node_modules/resolve/test/resolver/same_names/foo.js
+/frontend/dashboard/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js
+/frontend/dashboard/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep
+/frontend/dashboard/node_modules/resolve/test/resolver/symlinked/package/bar.js
+/frontend/dashboard/node_modules/resolve/test/resolver/symlinked/package/package.json
+/frontend/dashboard/node_modules/resolve/test/resolver/without_basedir/main.js
+/frontend/dashboard/node_modules/resolve/test/resolver/cup.coffee
+/frontend/dashboard/node_modules/resolve/test/resolver/foo.js
+/frontend/dashboard/node_modules/resolve/test/resolver/mug.coffee
+/frontend/dashboard/node_modules/resolve/test/resolver/mug.js
+/frontend/dashboard/node_modules/resolve/test/shadowed_core/node_modules/util/index.js
+/frontend/dashboard/node_modules/resolve/test/core.js
+/frontend/dashboard/node_modules/resolve/test/dotdot.js
+/frontend/dashboard/node_modules/resolve/test/faulty_basedir.js
+/frontend/dashboard/node_modules/resolve/test/filter.js
+/frontend/dashboard/node_modules/resolve/test/filter_sync.js
+/frontend/dashboard/node_modules/resolve/test/home_paths.js
+/frontend/dashboard/node_modules/resolve/test/home_paths_sync.js
+/frontend/dashboard/node_modules/resolve/test/mock.js
+/frontend/dashboard/node_modules/resolve/test/mock_sync.js
+/frontend/dashboard/node_modules/resolve/test/module_dir.js
+/frontend/dashboard/node_modules/resolve/test/node-modules-paths.js
+/frontend/dashboard/node_modules/resolve/test/node_path.js
+/frontend/dashboard/node_modules/resolve/test/nonstring.js
+/frontend/dashboard/node_modules/resolve/test/pathfilter.js
+/frontend/dashboard/node_modules/resolve/test/precedence.js
+/frontend/dashboard/node_modules/resolve/test/resolver.js
+/frontend/dashboard/node_modules/resolve/test/resolver_sync.js
+/frontend/dashboard/node_modules/resolve/test/shadowed_core.js
+/frontend/dashboard/node_modules/resolve/test/subdirs.js
+/frontend/dashboard/node_modules/resolve/test/symlinks.js
+/frontend/dashboard/node_modules/resolve/.editorconfig
+/frontend/dashboard/node_modules/resolve/.eslintrc
+/frontend/dashboard/node_modules/resolve/async.js
+/frontend/dashboard/node_modules/resolve/index.js
+/frontend/dashboard/node_modules/resolve/LICENSE
+/frontend/dashboard/node_modules/resolve/package.json
+/frontend/dashboard/node_modules/resolve/readme.markdown
+/frontend/dashboard/node_modules/resolve/SECURITY.md
+/frontend/dashboard/node_modules/resolve/sync.js
+/frontend/dashboard/node_modules/rollup/dist/bin/rollup
+/frontend/dashboard/node_modules/rollup/dist/es/shared/rollup.js
+/frontend/dashboard/node_modules/rollup/dist/es/shared/watch.js
+/frontend/dashboard/node_modules/rollup/dist/es/package.json
+/frontend/dashboard/node_modules/rollup/dist/es/rollup.browser.js
+/frontend/dashboard/node_modules/rollup/dist/es/rollup.js
+/frontend/dashboard/node_modules/rollup/dist/shared/index.js
+/frontend/dashboard/node_modules/rollup/dist/shared/loadConfigFile.js
+/frontend/dashboard/node_modules/rollup/dist/shared/mergeOptions.js
+/frontend/dashboard/node_modules/rollup/dist/shared/rollup.js
+/frontend/dashboard/node_modules/rollup/dist/shared/watch.js
+/frontend/dashboard/node_modules/rollup/dist/shared/watch-cli.js
+/frontend/dashboard/node_modules/rollup/dist/loadConfigFile.js
+/frontend/dashboard/node_modules/rollup/dist/rollup.browser.js
+/frontend/dashboard/node_modules/rollup/dist/rollup.browser.js.map
+/frontend/dashboard/node_modules/rollup/dist/rollup.d.ts
+/frontend/dashboard/node_modules/rollup/dist/rollup.js
+/frontend/dashboard/node_modules/rollup/LICENSE.md
+/frontend/dashboard/node_modules/rollup/package.json
+/frontend/dashboard/node_modules/rollup/README.md
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/es/index.js
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/es/types.js
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/typings/index.d.ts
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/typings/types.d.ts
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/umd/scroll-into-view-if-needed.js
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/umd/scroll-into-view-if-needed.min.js
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/index.js
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/LICENSE
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/package.json
+/frontend/dashboard/node_modules/scroll-into-view-if-needed/README.md
+/frontend/dashboard/node_modules/shallow-equal/arrays/index.js
+/frontend/dashboard/node_modules/shallow-equal/dist/index.cjs.js
+/frontend/dashboard/node_modules/shallow-equal/dist/index.esm.js
+/frontend/dashboard/node_modules/shallow-equal/objects/index.js
+/frontend/dashboard/node_modules/shallow-equal/LICENSE
+/frontend/dashboard/node_modules/shallow-equal/package.json
+/frontend/dashboard/node_modules/shallow-equal/README.md
+/frontend/dashboard/node_modules/source-map-js/lib/array-set.js
+/frontend/dashboard/node_modules/source-map-js/lib/base64.js
+/frontend/dashboard/node_modules/source-map-js/lib/base64-vlq.js
+/frontend/dashboard/node_modules/source-map-js/lib/binary-search.js
+/frontend/dashboard/node_modules/source-map-js/lib/mapping-list.js
+/frontend/dashboard/node_modules/source-map-js/lib/quick-sort.js
+/frontend/dashboard/node_modules/source-map-js/lib/source-map-consumer.d.ts
+/frontend/dashboard/node_modules/source-map-js/lib/source-map-consumer.js
+/frontend/dashboard/node_modules/source-map-js/lib/source-map-generator.d.ts
+/frontend/dashboard/node_modules/source-map-js/lib/source-map-generator.js
+/frontend/dashboard/node_modules/source-map-js/lib/source-node.d.ts
+/frontend/dashboard/node_modules/source-map-js/lib/source-node.js
+/frontend/dashboard/node_modules/source-map-js/lib/util.js
+/frontend/dashboard/node_modules/source-map-js/LICENSE
+/frontend/dashboard/node_modules/source-map-js/package.json
+/frontend/dashboard/node_modules/source-map-js/README.md
+/frontend/dashboard/node_modules/source-map-js/source-map.d.ts
+/frontend/dashboard/node_modules/source-map-js/source-map.js
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/.github/FUNDING.yml
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/test/index.js
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/.eslintrc
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/.nycrc
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/browser.js
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/CHANGELOG.md
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/index.js
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/LICENSE
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/package.json
+/frontend/dashboard/node_modules/supports-preserve-symlinks-flag/README.md
+/frontend/dashboard/node_modules/tslib/modules/index.js
+/frontend/dashboard/node_modules/tslib/modules/package.json
+/frontend/dashboard/node_modules/tslib/CopyrightNotice.txt
+/frontend/dashboard/node_modules/tslib/LICENSE.txt
+/frontend/dashboard/node_modules/tslib/package.json
+/frontend/dashboard/node_modules/tslib/README.md
+/frontend/dashboard/node_modules/tslib/tslib.d.ts
+/frontend/dashboard/node_modules/tslib/tslib.es6.html
+/frontend/dashboard/node_modules/tslib/tslib.es6.js
+/frontend/dashboard/node_modules/tslib/tslib.html
+/frontend/dashboard/node_modules/tslib/tslib.js
+/frontend/dashboard/node_modules/typescript/bin/tsc
+/frontend/dashboard/node_modules/typescript/bin/tsserver
+/frontend/dashboard/node_modules/typescript/lib/cs/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/de/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/es/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/fr/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/it/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/ja/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/ko/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/pl/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/ru/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/tr/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json
+/frontend/dashboard/node_modules/typescript/lib/cancellationToken.js
+/frontend/dashboard/node_modules/typescript/lib/dynamicImportCompat.js
+/frontend/dashboard/node_modules/typescript/lib/lib.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.dom.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.dom.iterable.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es5.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es6.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.collection.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.core.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.generator.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.iterable.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.promise.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.proxy.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.reflect.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.symbol.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2016.array.include.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2016.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2016.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.object.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.string.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.promise.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2018.regexp.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.array.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.object.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.string.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2019.symbol.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.bigint.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.date.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.number.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.promise.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.string.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2021.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2021.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2021.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2021.promise.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2021.string.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2021.weakref.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.array.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.error.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.object.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.es2022.string.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.esnext.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.esnext.full.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.esnext.intl.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.esnext.promise.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.esnext.string.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.esnext.weakref.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.scripthost.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.webworker.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.webworker.importscripts.d.ts
+/frontend/dashboard/node_modules/typescript/lib/lib.webworker.iterable.d.ts
+/frontend/dashboard/node_modules/typescript/lib/protocol.d.ts
+/frontend/dashboard/node_modules/typescript/lib/README.md
+/frontend/dashboard/node_modules/typescript/lib/tsc.js
+/frontend/dashboard/node_modules/typescript/lib/tsserver.js
+/frontend/dashboard/node_modules/typescript/lib/tsserverlibrary.d.ts
+/frontend/dashboard/node_modules/typescript/lib/tsserverlibrary.js
+/frontend/dashboard/node_modules/typescript/lib/typescript.d.ts
+/frontend/dashboard/node_modules/typescript/lib/typescript.js
+/frontend/dashboard/node_modules/typescript/lib/typescriptServices.d.ts
+/frontend/dashboard/node_modules/typescript/lib/typescriptServices.js
+/frontend/dashboard/node_modules/typescript/lib/typesMap.json
+/frontend/dashboard/node_modules/typescript/lib/typingsInstaller.js
+/frontend/dashboard/node_modules/typescript/lib/watchGuard.js
+/frontend/dashboard/node_modules/typescript/LICENSE.txt
+/frontend/dashboard/node_modules/typescript/package.json
+/frontend/dashboard/node_modules/typescript/README.md
+/frontend/dashboard/node_modules/typescript/SECURITY.md
+/frontend/dashboard/node_modules/typescript/ThirdPartyNoticeText.txt
+/frontend/dashboard/node_modules/undici-types/agent.d.ts
+/frontend/dashboard/node_modules/undici-types/api.d.ts
+/frontend/dashboard/node_modules/undici-types/balanced-pool.d.ts
+/frontend/dashboard/node_modules/undici-types/cache.d.ts
+/frontend/dashboard/node_modules/undici-types/client.d.ts
+/frontend/dashboard/node_modules/undici-types/connector.d.ts
+/frontend/dashboard/node_modules/undici-types/content-type.d.ts
+/frontend/dashboard/node_modules/undici-types/cookies.d.ts
+/frontend/dashboard/node_modules/undici-types/diagnostics-channel.d.ts
+/frontend/dashboard/node_modules/undici-types/dispatcher.d.ts
+/frontend/dashboard/node_modules/undici-types/errors.d.ts
+/frontend/dashboard/node_modules/undici-types/fetch.d.ts
+/frontend/dashboard/node_modules/undici-types/file.d.ts
+/frontend/dashboard/node_modules/undici-types/filereader.d.ts
+/frontend/dashboard/node_modules/undici-types/formdata.d.ts
+/frontend/dashboard/node_modules/undici-types/global-dispatcher.d.ts
+/frontend/dashboard/node_modules/undici-types/global-origin.d.ts
+/frontend/dashboard/node_modules/undici-types/handlers.d.ts
+/frontend/dashboard/node_modules/undici-types/header.d.ts
+/frontend/dashboard/node_modules/undici-types/index.d.ts
+/frontend/dashboard/node_modules/undici-types/interceptors.d.ts
+/frontend/dashboard/node_modules/undici-types/mock-agent.d.ts
+/frontend/dashboard/node_modules/undici-types/mock-client.d.ts
+/frontend/dashboard/node_modules/undici-types/mock-errors.d.ts
+/frontend/dashboard/node_modules/undici-types/mock-interceptor.d.ts
+/frontend/dashboard/node_modules/undici-types/mock-pool.d.ts
+/frontend/dashboard/node_modules/undici-types/package.json
+/frontend/dashboard/node_modules/undici-types/patch.d.ts
+/frontend/dashboard/node_modules/undici-types/pool.d.ts
+/frontend/dashboard/node_modules/undici-types/pool-stats.d.ts
+/frontend/dashboard/node_modules/undici-types/proxy-agent.d.ts
+/frontend/dashboard/node_modules/undici-types/readable.d.ts
+/frontend/dashboard/node_modules/undici-types/README.md
+/frontend/dashboard/node_modules/undici-types/webidl.d.ts
+/frontend/dashboard/node_modules/undici-types/websocket.d.ts
+/frontend/dashboard/node_modules/vite/bin/openChrome.applescript
+/frontend/dashboard/node_modules/vite/bin/vite.js
+/frontend/dashboard/node_modules/vite/dist/client/client.mjs
+/frontend/dashboard/node_modules/vite/dist/client/client.mjs.map
+/frontend/dashboard/node_modules/vite/dist/client/env.mjs
+/frontend/dashboard/node_modules/vite/dist/client/env.mjs.map
+/frontend/dashboard/node_modules/vite/dist/node/chunks/dep-3e87c7b2.js
+/frontend/dashboard/node_modules/vite/dist/node/chunks/dep-07a79996.js
+/frontend/dashboard/node_modules/vite/dist/node/chunks/dep-9deb2354.js
+/frontend/dashboard/node_modules/vite/dist/node/chunks/dep-19c40c50.js
+/frontend/dashboard/node_modules/vite/dist/node/chunks/dep-cedec504.js
+/frontend/dashboard/node_modules/vite/dist/node/cli.js
+/frontend/dashboard/node_modules/vite/dist/node/constants.js
+/frontend/dashboard/node_modules/vite/dist/node/index.d.ts
+/frontend/dashboard/node_modules/vite/dist/node/index.js
+/frontend/dashboard/node_modules/vite/dist/node-cjs/publicUtils.cjs
+/frontend/dashboard/node_modules/vite/types/alias.d.ts
+/frontend/dashboard/node_modules/vite/types/anymatch.d.ts
+/frontend/dashboard/node_modules/vite/types/chokidar.d.ts
+/frontend/dashboard/node_modules/vite/types/commonjs.d.ts
+/frontend/dashboard/node_modules/vite/types/connect.d.ts
+/frontend/dashboard/node_modules/vite/types/customEvent.d.ts
+/frontend/dashboard/node_modules/vite/types/dynamicImportVars.d.ts
+/frontend/dashboard/node_modules/vite/types/hmrPayload.d.ts
+/frontend/dashboard/node_modules/vite/types/hot.d.ts
+/frontend/dashboard/node_modules/vite/types/http-proxy.d.ts
+/frontend/dashboard/node_modules/vite/types/importGlob.d.ts
+/frontend/dashboard/node_modules/vite/types/importMeta.d.ts
+/frontend/dashboard/node_modules/vite/types/package.json
+/frontend/dashboard/node_modules/vite/types/terser.d.ts
+/frontend/dashboard/node_modules/vite/types/ws.d.ts
+/frontend/dashboard/node_modules/vite/client.d.ts
+/frontend/dashboard/node_modules/vite/index.cjs
+/frontend/dashboard/node_modules/vite/LICENSE.md
+/frontend/dashboard/node_modules/vite/package.json
+/frontend/dashboard/node_modules/vite/README.md
+/frontend/dashboard/node_modules/vue/compiler-sfc/index.browser.js
+/frontend/dashboard/node_modules/vue/compiler-sfc/index.browser.mjs
+/frontend/dashboard/node_modules/vue/compiler-sfc/index.d.mts
+/frontend/dashboard/node_modules/vue/compiler-sfc/index.d.ts
+/frontend/dashboard/node_modules/vue/compiler-sfc/index.js
+/frontend/dashboard/node_modules/vue/compiler-sfc/index.mjs
+/frontend/dashboard/node_modules/vue/compiler-sfc/package.json
+/frontend/dashboard/node_modules/vue/compiler-sfc/register-ts.js
+/frontend/dashboard/node_modules/vue/dist/vue.cjs.js
+/frontend/dashboard/node_modules/vue/dist/vue.cjs.prod.js
+/frontend/dashboard/node_modules/vue/dist/vue.d.mts
+/frontend/dashboard/node_modules/vue/dist/vue.d.ts
+/frontend/dashboard/node_modules/vue/dist/vue.esm-browser.js
+/frontend/dashboard/node_modules/vue/dist/vue.esm-browser.prod.js
+/frontend/dashboard/node_modules/vue/dist/vue.esm-bundler.js
+/frontend/dashboard/node_modules/vue/dist/vue.global.js
+/frontend/dashboard/node_modules/vue/dist/vue.global.prod.js
+/frontend/dashboard/node_modules/vue/dist/vue.runtime.esm-browser.js
+/frontend/dashboard/node_modules/vue/dist/vue.runtime.esm-browser.prod.js
+/frontend/dashboard/node_modules/vue/dist/vue.runtime.esm-bundler.js
+/frontend/dashboard/node_modules/vue/dist/vue.runtime.global.js
+/frontend/dashboard/node_modules/vue/dist/vue.runtime.global.prod.js
+/frontend/dashboard/node_modules/vue/jsx-runtime/index.d.ts
+/frontend/dashboard/node_modules/vue/jsx-runtime/index.js
+/frontend/dashboard/node_modules/vue/jsx-runtime/index.mjs
+/frontend/dashboard/node_modules/vue/jsx-runtime/package.json
+/frontend/dashboard/node_modules/vue/server-renderer/index.d.mts
+/frontend/dashboard/node_modules/vue/server-renderer/index.d.ts
+/frontend/dashboard/node_modules/vue/server-renderer/index.js
+/frontend/dashboard/node_modules/vue/server-renderer/index.mjs
+/frontend/dashboard/node_modules/vue/server-renderer/package.json
+/frontend/dashboard/node_modules/vue/index.js
+/frontend/dashboard/node_modules/vue/index.mjs
+/frontend/dashboard/node_modules/vue/jsx.d.ts
+/frontend/dashboard/node_modules/vue/LICENSE
+/frontend/dashboard/node_modules/vue/package.json
+/frontend/dashboard/node_modules/vue/README.md
+/frontend/dashboard/node_modules/vue-demi/bin/vue-demi-fix.js
+/frontend/dashboard/node_modules/vue-demi/bin/vue-demi-switch.js
+/frontend/dashboard/node_modules/vue-demi/lib/v2/index.cjs
+/frontend/dashboard/node_modules/vue-demi/lib/v2/index.d.ts
+/frontend/dashboard/node_modules/vue-demi/lib/v2/index.mjs
+/frontend/dashboard/node_modules/vue-demi/lib/v2.7/index.cjs
+/frontend/dashboard/node_modules/vue-demi/lib/v2.7/index.d.ts
+/frontend/dashboard/node_modules/vue-demi/lib/v2.7/index.mjs
+/frontend/dashboard/node_modules/vue-demi/lib/v3/index.cjs
+/frontend/dashboard/node_modules/vue-demi/lib/v3/index.d.ts
+/frontend/dashboard/node_modules/vue-demi/lib/v3/index.mjs
+/frontend/dashboard/node_modules/vue-demi/lib/index.cjs
+/frontend/dashboard/node_modules/vue-demi/lib/index.d.ts
+/frontend/dashboard/node_modules/vue-demi/lib/index.iife.js
+/frontend/dashboard/node_modules/vue-demi/lib/index.mjs
+/frontend/dashboard/node_modules/vue-demi/scripts/postinstall.js
+/frontend/dashboard/node_modules/vue-demi/scripts/switch-cli.js
+/frontend/dashboard/node_modules/vue-demi/scripts/utils.js
+/frontend/dashboard/node_modules/vue-demi/LICENSE
+/frontend/dashboard/node_modules/vue-demi/package.json
+/frontend/dashboard/node_modules/vue-demi/README.md
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.cjs
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.cjs.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.cjs.prod.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.d.ts
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.esm-browser.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.esm-browser.prod.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.esm-bundler.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.global.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.global.prod.js
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.mjs
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.node.mjs
+/frontend/dashboard/node_modules/vue-router/dist/vue-router.prod.cjs
+/frontend/dashboard/node_modules/vue-router/vetur/attributes.json
+/frontend/dashboard/node_modules/vue-router/vetur/tags.json
+/frontend/dashboard/node_modules/vue-router/index.js
+/frontend/dashboard/node_modules/vue-router/LICENSE
+/frontend/dashboard/node_modules/vue-router/package.json
+/frontend/dashboard/node_modules/vue-router/vue-router-auto.d.ts
+/frontend/dashboard/node_modules/vue-router/vue-router-auto-routes.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/arrayof.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/custom.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/instanceof.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/native.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/objectof.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/oneof.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/oneoftype.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/validators/shape.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/index.cjs.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/index.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/sensibles.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/shim.cjs.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/shim.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/shim.js
+/frontend/dashboard/node_modules/vue-types/dist/shim.js.map
+/frontend/dashboard/node_modules/vue-types/dist/shim.m.js
+/frontend/dashboard/node_modules/vue-types/dist/shim.m.js.map
+/frontend/dashboard/node_modules/vue-types/dist/shim.modern.js
+/frontend/dashboard/node_modules/vue-types/dist/shim.modern.js.map
+/frontend/dashboard/node_modules/vue-types/dist/shim.umd.js
+/frontend/dashboard/node_modules/vue-types/dist/shim.umd.js.map
+/frontend/dashboard/node_modules/vue-types/dist/types.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/utils.d.ts
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.js
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.js.map
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.m.js
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.m.js.map
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.modern.js
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.modern.js.map
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.umd.js
+/frontend/dashboard/node_modules/vue-types/dist/vue-types.umd.js.map
+/frontend/dashboard/node_modules/vue-types/src/validators/arrayof.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/custom.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/instanceof.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/native.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/objectof.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/oneof.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/oneoftype.ts
+/frontend/dashboard/node_modules/vue-types/src/validators/shape.ts
+/frontend/dashboard/node_modules/vue-types/src/.eslintrc.json
+/frontend/dashboard/node_modules/vue-types/src/index.cjs.ts
+/frontend/dashboard/node_modules/vue-types/src/index.ts
+/frontend/dashboard/node_modules/vue-types/src/sensibles.ts
+/frontend/dashboard/node_modules/vue-types/src/shim.cjs.ts
+/frontend/dashboard/node_modules/vue-types/src/shim.ts
+/frontend/dashboard/node_modules/vue-types/src/types.d.ts
+/frontend/dashboard/node_modules/vue-types/src/utils.ts
+/frontend/dashboard/node_modules/vue-types/LICENSE
+/frontend/dashboard/node_modules/vue-types/package.json
+/frontend/dashboard/node_modules/vue-types/README.md
+/frontend/dashboard/node_modules/warning/CHANGELOG.md
+/frontend/dashboard/node_modules/warning/LICENSE.md
+/frontend/dashboard/node_modules/warning/package.json
+/frontend/dashboard/node_modules/warning/README.md
+/frontend/dashboard/node_modules/warning/warning.js
+/frontend/dashboard/node_modules/zrender/build/build.js
+/frontend/dashboard/node_modules/zrender/build/package.json
+/frontend/dashboard/node_modules/zrender/build/prepareNightly.js
+/frontend/dashboard/node_modules/zrender/build/prepublish.js
+/frontend/dashboard/node_modules/zrender/build/processLib.js
+/frontend/dashboard/node_modules/zrender/build/progress.js
+/frontend/dashboard/node_modules/zrender/build/transformImport.js
+/frontend/dashboard/node_modules/zrender/dist/package.json
+/frontend/dashboard/node_modules/zrender/dist/zrender.js
+/frontend/dashboard/node_modules/zrender/dist/zrender.js.map
+/frontend/dashboard/node_modules/zrender/dist/zrender.min.js
+/frontend/dashboard/node_modules/zrender/lib/animation/Animation.d.ts
+/frontend/dashboard/node_modules/zrender/lib/animation/Animation.js
+/frontend/dashboard/node_modules/zrender/lib/animation/Animator.d.ts
+/frontend/dashboard/node_modules/zrender/lib/animation/Animator.js
+/frontend/dashboard/node_modules/zrender/lib/animation/Clip.d.ts
+/frontend/dashboard/node_modules/zrender/lib/animation/Clip.js
+/frontend/dashboard/node_modules/zrender/lib/animation/cubicEasing.d.ts
+/frontend/dashboard/node_modules/zrender/lib/animation/cubicEasing.js
+/frontend/dashboard/node_modules/zrender/lib/animation/easing.d.ts
+/frontend/dashboard/node_modules/zrender/lib/animation/easing.js
+/frontend/dashboard/node_modules/zrender/lib/animation/requestAnimationFrame.d.ts
+/frontend/dashboard/node_modules/zrender/lib/animation/requestAnimationFrame.js
+/frontend/dashboard/node_modules/zrender/lib/canvas/canvas.d.ts
+/frontend/dashboard/node_modules/zrender/lib/canvas/canvas.js
+/frontend/dashboard/node_modules/zrender/lib/canvas/dashStyle.d.ts
+/frontend/dashboard/node_modules/zrender/lib/canvas/dashStyle.js
+/frontend/dashboard/node_modules/zrender/lib/canvas/graphic.d.ts
+/frontend/dashboard/node_modules/zrender/lib/canvas/graphic.js
+/frontend/dashboard/node_modules/zrender/lib/canvas/helper.d.ts
+/frontend/dashboard/node_modules/zrender/lib/canvas/helper.js
+/frontend/dashboard/node_modules/zrender/lib/canvas/Layer.d.ts
+/frontend/dashboard/node_modules/zrender/lib/canvas/Layer.js
+/frontend/dashboard/node_modules/zrender/lib/canvas/Painter.d.ts
+/frontend/dashboard/node_modules/zrender/lib/canvas/Painter.js
+/frontend/dashboard/node_modules/zrender/lib/contain/arc.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/arc.js
+/frontend/dashboard/node_modules/zrender/lib/contain/cubic.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/cubic.js
+/frontend/dashboard/node_modules/zrender/lib/contain/line.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/line.js
+/frontend/dashboard/node_modules/zrender/lib/contain/path.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/path.js
+/frontend/dashboard/node_modules/zrender/lib/contain/polygon.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/polygon.js
+/frontend/dashboard/node_modules/zrender/lib/contain/quadratic.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/quadratic.js
+/frontend/dashboard/node_modules/zrender/lib/contain/text.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/text.js
+/frontend/dashboard/node_modules/zrender/lib/contain/util.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/util.js
+/frontend/dashboard/node_modules/zrender/lib/contain/windingLine.d.ts
+/frontend/dashboard/node_modules/zrender/lib/contain/windingLine.js
+/frontend/dashboard/node_modules/zrender/lib/core/arrayDiff.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/arrayDiff.js
+/frontend/dashboard/node_modules/zrender/lib/core/bbox.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/bbox.js
+/frontend/dashboard/node_modules/zrender/lib/core/BoundingRect.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/BoundingRect.js
+/frontend/dashboard/node_modules/zrender/lib/core/curve.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/curve.js
+/frontend/dashboard/node_modules/zrender/lib/core/dom.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/dom.js
+/frontend/dashboard/node_modules/zrender/lib/core/env.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/env.js
+/frontend/dashboard/node_modules/zrender/lib/core/event.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/event.js
+/frontend/dashboard/node_modules/zrender/lib/core/Eventful.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/Eventful.js
+/frontend/dashboard/node_modules/zrender/lib/core/fourPointsTransform.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/fourPointsTransform.js
+/frontend/dashboard/node_modules/zrender/lib/core/GestureMgr.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/GestureMgr.js
+/frontend/dashboard/node_modules/zrender/lib/core/LRU.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/LRU.js
+/frontend/dashboard/node_modules/zrender/lib/core/matrix.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/matrix.js
+/frontend/dashboard/node_modules/zrender/lib/core/OrientedBoundingRect.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/OrientedBoundingRect.js
+/frontend/dashboard/node_modules/zrender/lib/core/PathProxy.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/PathProxy.js
+/frontend/dashboard/node_modules/zrender/lib/core/platform.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/platform.js
+/frontend/dashboard/node_modules/zrender/lib/core/Point.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/Point.js
+/frontend/dashboard/node_modules/zrender/lib/core/timsort.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/timsort.js
+/frontend/dashboard/node_modules/zrender/lib/core/Transformable.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/Transformable.js
+/frontend/dashboard/node_modules/zrender/lib/core/types.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/types.js
+/frontend/dashboard/node_modules/zrender/lib/core/util.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/util.js
+/frontend/dashboard/node_modules/zrender/lib/core/vector.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/vector.js
+/frontend/dashboard/node_modules/zrender/lib/core/WeakMap.d.ts
+/frontend/dashboard/node_modules/zrender/lib/core/WeakMap.js
+/frontend/dashboard/node_modules/zrender/lib/debug/showDebugDirtyRect.d.ts
+/frontend/dashboard/node_modules/zrender/lib/debug/showDebugDirtyRect.js
+/frontend/dashboard/node_modules/zrender/lib/dom/HandlerProxy.d.ts
+/frontend/dashboard/node_modules/zrender/lib/dom/HandlerProxy.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/image.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/image.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/parseText.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/parseText.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/poly.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/poly.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/roundRect.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/roundRect.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/roundSector.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/roundSector.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/smoothBezier.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/smoothBezier.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/smoothSpline.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/smoothSpline.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/subPixelOptimize.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/helper/subPixelOptimize.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Arc.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Arc.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/BezierCurve.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/BezierCurve.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Circle.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Circle.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Droplet.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Droplet.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Ellipse.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Ellipse.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Heart.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Heart.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Isogon.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Isogon.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Line.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Line.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Polygon.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Polygon.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Polyline.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Polyline.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Rect.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Rect.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Ring.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Ring.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Rose.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Rose.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Sector.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Sector.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Star.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Star.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Trochoid.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/shape/Trochoid.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/CompoundPath.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/CompoundPath.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/constants.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/constants.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Displayable.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Displayable.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Gradient.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Gradient.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Group.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Group.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Image.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Image.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/IncrementalDisplayable.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/IncrementalDisplayable.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/LinearGradient.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/LinearGradient.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Path.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Path.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Pattern.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Pattern.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/RadialGradient.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/RadialGradient.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/Text.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/Text.js
+/frontend/dashboard/node_modules/zrender/lib/graphic/TSpan.d.ts
+/frontend/dashboard/node_modules/zrender/lib/graphic/TSpan.js
+/frontend/dashboard/node_modules/zrender/lib/mixin/Draggable.d.ts
+/frontend/dashboard/node_modules/zrender/lib/mixin/Draggable.js
+/frontend/dashboard/node_modules/zrender/lib/svg/core.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/core.js
+/frontend/dashboard/node_modules/zrender/lib/svg/cssAnimation.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/cssAnimation.js
+/frontend/dashboard/node_modules/zrender/lib/svg/cssClassId.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/cssClassId.js
+/frontend/dashboard/node_modules/zrender/lib/svg/cssEmphasis.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/cssEmphasis.js
+/frontend/dashboard/node_modules/zrender/lib/svg/domapi.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/domapi.js
+/frontend/dashboard/node_modules/zrender/lib/svg/graphic.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/graphic.js
+/frontend/dashboard/node_modules/zrender/lib/svg/helper.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/helper.js
+/frontend/dashboard/node_modules/zrender/lib/svg/mapStyleToAttrs.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/mapStyleToAttrs.js
+/frontend/dashboard/node_modules/zrender/lib/svg/Painter.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/Painter.js
+/frontend/dashboard/node_modules/zrender/lib/svg/patch.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/patch.js
+/frontend/dashboard/node_modules/zrender/lib/svg/svg.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/svg.js
+/frontend/dashboard/node_modules/zrender/lib/svg/SVGPathRebuilder.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg/SVGPathRebuilder.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/ClippathManager.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/ClippathManager.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/Definable.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/Definable.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/GradientManager.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/GradientManager.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/PatternManager.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/PatternManager.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/ShadowManager.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/helper/ShadowManager.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/graphic.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/graphic.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/Painter.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/Painter.js
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/svg-legacy.d.ts
+/frontend/dashboard/node_modules/zrender/lib/svg-legacy/svg-legacy.js
+/frontend/dashboard/node_modules/zrender/lib/tool/color.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/color.js
+/frontend/dashboard/node_modules/zrender/lib/tool/convertPath.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/convertPath.js
+/frontend/dashboard/node_modules/zrender/lib/tool/dividePath.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/dividePath.js
+/frontend/dashboard/node_modules/zrender/lib/tool/morphPath.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/morphPath.js
+/frontend/dashboard/node_modules/zrender/lib/tool/parseSVG.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/parseSVG.js
+/frontend/dashboard/node_modules/zrender/lib/tool/parseXML.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/parseXML.js
+/frontend/dashboard/node_modules/zrender/lib/tool/path.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/path.js
+/frontend/dashboard/node_modules/zrender/lib/tool/transformPath.d.ts
+/frontend/dashboard/node_modules/zrender/lib/tool/transformPath.js
+/frontend/dashboard/node_modules/zrender/lib/all.d.ts
+/frontend/dashboard/node_modules/zrender/lib/all.js
+/frontend/dashboard/node_modules/zrender/lib/config.d.ts
+/frontend/dashboard/node_modules/zrender/lib/config.js
+/frontend/dashboard/node_modules/zrender/lib/Element.d.ts
+/frontend/dashboard/node_modules/zrender/lib/Element.js
+/frontend/dashboard/node_modules/zrender/lib/export.d.ts
+/frontend/dashboard/node_modules/zrender/lib/export.js
+/frontend/dashboard/node_modules/zrender/lib/Handler.d.ts
+/frontend/dashboard/node_modules/zrender/lib/Handler.js
+/frontend/dashboard/node_modules/zrender/lib/PainterBase.d.ts
+/frontend/dashboard/node_modules/zrender/lib/PainterBase.js
+/frontend/dashboard/node_modules/zrender/lib/Storage.d.ts
+/frontend/dashboard/node_modules/zrender/lib/Storage.js
+/frontend/dashboard/node_modules/zrender/lib/zrender.d.ts
+/frontend/dashboard/node_modules/zrender/lib/zrender.js
+/frontend/dashboard/node_modules/zrender/src/animation/Animation.ts
+/frontend/dashboard/node_modules/zrender/src/animation/Animator.ts
+/frontend/dashboard/node_modules/zrender/src/animation/Clip.ts
+/frontend/dashboard/node_modules/zrender/src/animation/cubicEasing.ts
+/frontend/dashboard/node_modules/zrender/src/animation/easing.ts
+/frontend/dashboard/node_modules/zrender/src/animation/requestAnimationFrame.ts
+/frontend/dashboard/node_modules/zrender/src/canvas/canvas.ts
+/frontend/dashboard/node_modules/zrender/src/canvas/dashStyle.ts
+/frontend/dashboard/node_modules/zrender/src/canvas/graphic.ts
+/frontend/dashboard/node_modules/zrender/src/canvas/helper.ts
+/frontend/dashboard/node_modules/zrender/src/canvas/Layer.ts
+/frontend/dashboard/node_modules/zrender/src/canvas/Painter.ts
+/frontend/dashboard/node_modules/zrender/src/contain/arc.ts
+/frontend/dashboard/node_modules/zrender/src/contain/cubic.ts
+/frontend/dashboard/node_modules/zrender/src/contain/line.ts
+/frontend/dashboard/node_modules/zrender/src/contain/path.ts
+/frontend/dashboard/node_modules/zrender/src/contain/polygon.ts
+/frontend/dashboard/node_modules/zrender/src/contain/quadratic.ts
+/frontend/dashboard/node_modules/zrender/src/contain/text.ts
+/frontend/dashboard/node_modules/zrender/src/contain/util.ts
+/frontend/dashboard/node_modules/zrender/src/contain/windingLine.ts
+/frontend/dashboard/node_modules/zrender/src/core/arrayDiff.ts
+/frontend/dashboard/node_modules/zrender/src/core/bbox.ts
+/frontend/dashboard/node_modules/zrender/src/core/BoundingRect.ts
+/frontend/dashboard/node_modules/zrender/src/core/curve.ts
+/frontend/dashboard/node_modules/zrender/src/core/dom.ts
+/frontend/dashboard/node_modules/zrender/src/core/env.ts
+/frontend/dashboard/node_modules/zrender/src/core/event.ts
+/frontend/dashboard/node_modules/zrender/src/core/Eventful.ts
+/frontend/dashboard/node_modules/zrender/src/core/fourPointsTransform.ts
+/frontend/dashboard/node_modules/zrender/src/core/GestureMgr.ts
+/frontend/dashboard/node_modules/zrender/src/core/LRU.ts
+/frontend/dashboard/node_modules/zrender/src/core/matrix.ts
+/frontend/dashboard/node_modules/zrender/src/core/OrientedBoundingRect.ts
+/frontend/dashboard/node_modules/zrender/src/core/PathProxy.ts
+/frontend/dashboard/node_modules/zrender/src/core/platform.ts
+/frontend/dashboard/node_modules/zrender/src/core/Point.ts
+/frontend/dashboard/node_modules/zrender/src/core/timsort.ts
+/frontend/dashboard/node_modules/zrender/src/core/Transformable.ts
+/frontend/dashboard/node_modules/zrender/src/core/types.ts
+/frontend/dashboard/node_modules/zrender/src/core/util.ts
+/frontend/dashboard/node_modules/zrender/src/core/vector.ts
+/frontend/dashboard/node_modules/zrender/src/core/WeakMap.ts
+/frontend/dashboard/node_modules/zrender/src/debug/showDebugDirtyRect.ts
+/frontend/dashboard/node_modules/zrender/src/dom/HandlerProxy.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/image.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/parseText.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/poly.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/roundRect.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/roundSector.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/smoothBezier.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/smoothSpline.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/helper/subPixelOptimize.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Arc.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/BezierCurve.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Circle.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Droplet.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Ellipse.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Heart.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Isogon.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Line.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Polygon.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Polyline.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Rect.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Ring.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Rose.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Sector.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Star.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/shape/Trochoid.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/CompoundPath.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/constants.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Displayable.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Gradient.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Group.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Image.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/IncrementalDisplayable.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/LinearGradient.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Path.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Pattern.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/RadialGradient.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/Text.ts
+/frontend/dashboard/node_modules/zrender/src/graphic/TSpan.ts
+/frontend/dashboard/node_modules/zrender/src/mixin/Draggable.ts
+/frontend/dashboard/node_modules/zrender/src/svg/core.ts
+/frontend/dashboard/node_modules/zrender/src/svg/cssAnimation.ts
+/frontend/dashboard/node_modules/zrender/src/svg/cssClassId.ts
+/frontend/dashboard/node_modules/zrender/src/svg/cssEmphasis.ts
+/frontend/dashboard/node_modules/zrender/src/svg/domapi.ts
+/frontend/dashboard/node_modules/zrender/src/svg/graphic.ts
+/frontend/dashboard/node_modules/zrender/src/svg/helper.ts
+/frontend/dashboard/node_modules/zrender/src/svg/mapStyleToAttrs.ts
+/frontend/dashboard/node_modules/zrender/src/svg/Painter.ts
+/frontend/dashboard/node_modules/zrender/src/svg/patch.ts
+/frontend/dashboard/node_modules/zrender/src/svg/svg.ts
+/frontend/dashboard/node_modules/zrender/src/svg/SVGPathRebuilder.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/helper/ClippathManager.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/helper/Definable.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/helper/GradientManager.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/helper/PatternManager.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/helper/ShadowManager.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/graphic.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/Painter.ts
+/frontend/dashboard/node_modules/zrender/src/svg-legacy/svg-legacy.ts
+/frontend/dashboard/node_modules/zrender/src/tool/color.ts
+/frontend/dashboard/node_modules/zrender/src/tool/convertPath.ts
+/frontend/dashboard/node_modules/zrender/src/tool/dividePath.ts
+/frontend/dashboard/node_modules/zrender/src/tool/morphPath.ts
+/frontend/dashboard/node_modules/zrender/src/tool/parseSVG.ts
+/frontend/dashboard/node_modules/zrender/src/tool/parseXML.ts
+/frontend/dashboard/node_modules/zrender/src/tool/path.ts
+/frontend/dashboard/node_modules/zrender/src/tool/transformPath.ts
+/frontend/dashboard/node_modules/zrender/src/all.ts
+/frontend/dashboard/node_modules/zrender/src/config.ts
+/frontend/dashboard/node_modules/zrender/src/Element.ts
+/frontend/dashboard/node_modules/zrender/src/export.ts
+/frontend/dashboard/node_modules/zrender/src/global.d.ts
+/frontend/dashboard/node_modules/zrender/src/Handler.ts
+/frontend/dashboard/node_modules/zrender/src/PainterBase.ts
+/frontend/dashboard/node_modules/zrender/src/Storage.ts
+/frontend/dashboard/node_modules/zrender/src/zrender.ts
+/frontend/dashboard/node_modules/zrender/index.d.ts
+/frontend/dashboard/node_modules/zrender/index.js
+/frontend/dashboard/node_modules/zrender/index.ts
+/frontend/dashboard/node_modules/zrender/LICENSE
+/frontend/dashboard/node_modules/zrender/package.json
+/frontend/dashboard/node_modules/zrender/package.README.md
+/frontend/dashboard/node_modules/zrender/README.md
+/frontend/dashboard/node_modules/.package-lock.json
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..513329d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,94 @@
+# xlxumu - 锡林郭勒盟地区养殖产业平台
+
+## 项目概述
+
+本项目是一个综合性的畜牧业数字化管理平台,主要面向锡林郭勒盟地区的养殖产业,包含官网展示、后台管理、移动端小程序、大屏可视化等多个子系统。平台集成了养殖管理、金融服务(银行监管、保险监管)、政府监管、牛只交易、牛肉商城、数据分析等功能模块,旨在通过数字化手段提升整个产业链的管理效率和透明度。
+
+## 项目结构
+
+```
+.
+├── frontend/ # 前端项目
+│ ├── website/ # 官网首页
+│ ├── farming-management/ # 养殖管理系统
+│ ├── bank-supervision/ # 银行监管系统
+│ ├── insurance-supervision/ # 保险监管系统
+│ ├── government-platform/ # 政府监管平台
+│ ├── cattle-trading/ # 活牛交易系统
+│ ├── mall-management/ # 商城管理系统
+│ ├── dashboard/ # 大屏可视化系统
+│ └── mini-programs/ # 微信小程序矩阵
+│ ├── beef-mall/ # 牛肉商城小程序
+│ ├── farming-manager/ # 养殖管理小程序
+│ ├── bank-supervision/ # 银行监管小程序
+│ ├── insurance-supervision/ # 保险监管小程序
+│ ├── cattle-trading/ # 活牛交易小程序
+│ ├── gov-supervision/ # 政府监管小程序
+│ ├── data-platform/ # 数据中台小程序
+│ └── ai-capabilities/ # AI能力小程序
+├── backend/ # 后端项目
+│ ├── api/ # API服务
+│ │ ├── farming/ # 养殖管理API
+│ │ ├── finance/ # 金融服务API
+│ │ ├── government/ # 政府监管API
+│ │ ├── trade/ # 交易管理API
+│ │ ├── mall/ # 商城管理API
+│ │ ├── data-platform/ # 数据中台API
+│ │ ├── ai/ # AI能力API
+│ │ └── user-center/ # 用户中心API
+│ ├── services/ # 微服务模块
+│ │ ├── farming-service/ # 养殖管理服务
+│ │ ├── finance-service/ # 金融服务
+│ │ ├── government-service/ # 政府监管服务
+│ │ ├── trade-service/ # 交易管理服务
+│ │ ├── mall-service/ # 商城管理服务
+│ │ ├── data-platform-service/ # 数据中台服务
+│ │ ├── ai-service/ # AI能力服务
+│ │ └── user-center-service/ # 用户中心服务
+│ ├── database/ # 数据库脚本
+│ └── utils/ # 工具函数
+├── docs/ # 文档
+│ ├── design/ # 设计文档
+│ ├── requirements/ # 需求文档
+│ └── development_plans/ # 开发计划文档
+└── deployment/ # 部署相关配置
+```
+
+## 文档目录
+
+详细文档请参见 [docs/README.md](file:///E:/vue/xlxumu/docs/README.md) 文件,其中包含所有系统文档的完整列表和链接。
+
+## 技术栈
+
+### 前端技术栈
+- **官网首页**: HTML5 + CSS3 + JavaScript
+- **后台管理系统**: Vue.js 3 + TypeScript + Ant Design Vue + Pinia
+- **大屏可视化系统**: Vue.js 3 + ECharts + 自定义可视化组件
+- **微信小程序矩阵**: 微信小程序原生开发 + uni-app
+
+### 后端技术栈
+- **API服务**: Node.js + Express.js + TypeScript + RESTful API
+- **数据库**: MySQL
+- **缓存系统**: Redis
+- **消息队列**: RabbitMQ(用于异步处理)
+- **文件存储**: 腾讯云对象存储
+- **实时通信**: WebSocket(用于大屏数据推送和实时通知)
+
+## 部署说明
+
+详细的部署说明请参考 [deployment/README.md](file:///E:/vue/xlxumu/deployment/README.md) 文件。
+
+## 开发说明
+
+1. 前端项目使用 Vite 构建
+2. 后端项目基于 Node.js 和 Express.js
+3. 各个子系统可以独立开发和部署
+4. 微服务架构便于扩展和维护
+
+## 项目特点
+
+1. **模块化设计**: 前后端分离,模块化设计便于团队协作
+2. **微服务架构**: 后端采用微服务架构,提高系统可扩展性
+3. **多端支持**: 支持PC端、移动端、微信小程序和大屏展示
+4. **数据驱动**: 集成数据分析和可视化展示
+5. **安全可靠**: 完善的权限管理和数据安全保障
\ No newline at end of file
diff --git a/REQUIREMENTS.md b/REQUIREMENTS.md
deleted file mode 100644
index d290d7a..0000000
--- a/REQUIREMENTS.md
+++ /dev/null
@@ -1,279 +0,0 @@
-# 详细需求文档
-
-## 1. 项目概述
-
-### 1.1 项目名称
-xlxumu - 锡林郭勒盟安格斯牛数字化管理平台
-
-### 1.2 项目背景
-本项目是面向锡林郭勒盟地区安格斯牛养殖产业的综合性数字化管理平台。通过整合物联网、大数据分析等现代信息技术,构建覆盖养殖、监管、交易、运输、销售全链条的数字化管理体系,提升畜牧业管理效率和透明度。
-
-### 1.3 项目目标
-- 构建完整的畜牧业数字化管理生态系统
-- 实现养殖过程可视化、监管实时化、交易透明化
-- 提升产业链协同效率
-- 促进锡林郭勒盟安格斯牛品牌建设
-
-## 2. 功能需求
-
-### 2.1 前端系统
-
-#### 2.1.1 官网首页系统
-- 响应式设计,适配PC、平板、手机等多种设备
-- 突出锡林郭勒盟草原绿色主题和蒙古族文化特色
-- 展示安格斯牛品牌信息和产业优势
-- 提供平台功能导航入口
-
-#### 2.1.2 专业管理系统(Vue.js 3 + Ant Design Vue)
-
-##### 养殖管理系统
-- 牛只档案管理(品种、年龄、健康状况等)
-- 饲养记录管理(饲料、疫苗、治疗等)
-- 繁殖管理(配种、产犊等记录)
-- 环境监测数据展示(温湿度、空气质量等)
-- 生产计划制定和执行跟踪
-
-##### 银行监管系统
-- 贷款申请和审批流程管理
-- 质押物(牛只)状态监控
-- 还款计划跟踪
-- 风险评估数据展示
-- 财务报表生成
-
-##### 保险监管系统
-- 保险投保管理
-- 理赔申请和处理流程
-- 风险评估和预警
-- 保险记录查询
-- 数据统计分析
-
-##### 政府监管平台
-- 产业数据总览
-- 各类监管数据汇总
-- 政策发布和通知
-- 合规性检查
-- 统计报表生成
-
-##### 活牛交易系统
-- 牛只信息发布和展示
-- 在线交易撮合
-- 合同管理
-- 支付流程管理
-- 交易记录查询
-
-##### 商城管理系统
-- 商品信息管理
-- 库存管理
-- 订单处理
-- 物流跟踪
-- 售后服务管理
-
-#### 2.1.3 微信小程序矩阵
-
-##### 牛肉商城小程序(消费者端)
-- 商品浏览和搜索
-- 在线下单和支付
-- 订单查询和跟踪
-- 售后服务申请
-- 评价和反馈
-- **认养功能**:用户可以认养特定牛只,跟踪其成长过程
-
-##### 养殖管理小程序(牧民端)
-- 移动端牛只档案查看
-- 饲养记录录入
-- 健康状况上报
-- 通知消息接收
-- 数据统计查看
-
-##### 银行监管小程序(银行端)
-- 移动端贷款审批
-- 质押物状态查看
-- 风险数据监控
-- 移动办公支持
-
-##### 保险监管小程序(保险端)
-- 移动端保险处理
-- 理赔流程管理
-- 风险评估查看
-- 移动查勘支持
-
-##### 活牛交易小程序(交易员端)
-- 活牛信息发布
-- 在线交易撮合
-- 合同查看和管理
-- 交易记录查询
-- 支付状态跟踪
-
-### 2.2 后端系统
-
-#### 2.2.1 API服务
-- 用户认证和权限管理接口
-- 各业务模块数据接口
-- 文件上传和下载接口
-- 实时数据推送接口
-- 第三方服务集成接口
-
-#### 2.2.2 数据库设计
-- 用户和权限管理数据表
-- 牛只档案和饲养记录表
-- 交易和合同管理表
-- 运输和物流跟踪表
-- 商城和订单管理表
-
-#### 2.2.3 文件存储
-- 牛只图片和视频存储
-- 文档和合同文件存储
-- 用户上传文件管理
-- 腾讯云存储集成
-
-### 2.3 数据分析系统
-
-#### 2.3.1 实时数据采集
-- IoT设备数据接入
-- 用户行为数据采集
-- 业务操作日志收集
-
-#### 2.3.2 大数据分析引擎
-- 数据清洗和预处理
-- 统计分析模型
-- 预测分析算法
-
-#### 2.3.3 智能预警系统
-- 异常数据检测
-- 风险预警机制
-- 预警消息推送
-
-#### 2.3.4 可视化展示平台
-- 数据图表展示
-- 仪表盘设计
-- 报表生成和导出
-
-## 3. 非功能需求
-
-### 3.1 性能需求
-- 首页加载时间不超过2秒
-- 后台管理系统页面切换响应时间不超过1秒
-- 支持1000+并发用户访问
-- 实时数据更新延迟不超过5秒
-
-### 3.2 兼容性需求
-- 官网首页兼容所有主流浏览器
-- 后台管理系统支持Chrome、Firefox、Safari、Edge最新版本
-- 微信小程序符合微信平台规范
-- 移动端适配iOS和Android系统
-
-### 3.3 安全需求
-- 用户密码加密存储(BCrypt等)
-- JWT Token安全传输
-- 敏感数据传输加密(HTTPS)
-- 防止SQL注入和XSS攻击
-- CSRF防护机制
-- API接口限流和防护
-- 数据备份和恢复机制
-
-### 3.4 可用性需求
-- 系统全年可用性达到99.9%
-- 提供友好的错误提示信息
-- 实现异常处理和恢复机制
-- 支持多端数据同步
-
-### 3.5 可维护性需求
-- 微服务架构设计,降低模块间耦合
-- 完善的日志记录和监控
-- 支持灰度发布和热更新
-- 容器化部署支持
-
-## 4. 用户界面需求
-
-### 4.1 设计风格
-- 突出锡林郭勒盟草原绿色主题
-- 融入蒙古族文化元素
-- 简洁、现代的设计风格
-- 统一的色彩搭配方案
-
-### 4.2 响应式设计
-- 支持PC端大屏显示
-- 适配平板设备
-- 支持手机端浏览
-- 自适应不同分辨率
-
-### 4.3 交互体验
-- 提供操作反馈(加载状态、成功/失败提示)
-- 实现页面过渡动画
-- 支持键盘快捷操作
-- 提供搜索和筛选功能
-
-## 5. 数据需求
-
-### 5.1 数据完整性
-- 实现数据校验机制
-- 提供数据备份和恢复功能
-- 确保多端数据一致性
-
-### 5.2 数据安全性
-- 敏感数据加密存储
-- 实现数据访问权限控制
-- 提供数据审计功能
-- 符合相关法规要求
-
-## 6. 部署需求
-
-### 6.1 部署环境
-- 支持Docker容器化部署
-- 支持云平台部署(腾讯云)
-- 支持负载均衡部署
-- 提供部署文档和脚本
-
-### 6.2 监控需求
-- 实现系统运行状态监控
-- 提供性能监控指标
-- 支持异常告警功能
-- 日志收集和分析
-
-## 7. 特色需求
-
-### 7.1 地域文化特色
-- 界面设计融入蒙古族文化元素
-- 突出锡林郭勒盟草原特色
-- 体现当地畜牧业传统和现代结合
-
-### 7.2 品牌专业化
-- 突出安格斯牛品牌特色
-- 专门的安格斯牛管理和交易模块
-- 品牌化展示和推广
-
-### 7.3 生态理念
-- 绿色发展理念贯穿整个系统
-- 可持续畜牧业理念体现
-- 环保数据监控和展示
-
-## 8. 测试需求
-
-### 8.1 单元测试
-- 核心功能模块单元测试覆盖率不低于80%
-- 提供自动化测试脚本
-
-### 8.2 集成测试
-- 实现主要业务流程的集成测试
-- 提供测试用例文档
-
-### 8.3 用户验收测试
-- 提供用户验收测试计划
-- 收集用户反馈并优化
-
-## 9. 运维需求
-
-### 9.1 日志管理
-- 记录系统运行日志
-- 提供日志查询和分析功能
-- 实现日志轮转和清理
-
-### 9.2 性能监控
-- 监控系统资源使用情况
-- 提供性能分析报告
-- 实现性能瓶颈预警
-
-### 9.3 故障处理
-- 提供故障诊断工具
-- 实现自动故障恢复机制
-- 提供故障处理文档
\ No newline at end of file
diff --git a/backend/api/server.js b/backend/api/server.js
index 3c66a89..49b2bc9 100644
--- a/backend/api/server.js
+++ b/backend/api/server.js
@@ -28,7 +28,7 @@ app.use(limiter);
// 基础路由
app.get('/', (req, res) => {
res.json({
- message: '欢迎使用锡林郭勒盟安格斯牛数字化管理平台API服务',
+ message: '欢迎使用锡林郭勒盟地区养殖产业平台API服务',
version: '1.0.0'
});
});
diff --git a/backend/database/DESIGN.md b/backend/database/DESIGN.md
index b9eb6a9..41c2880 100644
--- a/backend/database/DESIGN.md
+++ b/backend/database/DESIGN.md
@@ -6,14 +6,138 @@
## 数据库设计规范
-1. 使用InnoDB存储引擎
-2. 字符集使用utf8mb4
-3. 所有表都有创建时间和更新时间字段
-4. 主键使用自增ID
-5. 外键约束用于保证数据一致性
-6. 表名使用复数形式,以下划线分隔单词
-7. 字段名使用下划线分隔单词
-8. 所有表都包含`created_at`和`updated_at`时间戳字段
+### 1. 基础规范
+| 条目 | 规范说明 |
+|---------------------|--------------------------------------------------------------------------|
+| 存储引擎 | InnoDB(支持事务和行级锁) |
+| 字符集 | utf8mb4(支持完整Unicode,包括emoji) |
+| 主键设计 | 自增BIGINT UNSIGNED(禁止使用业务字段) |
+| 时间字段 | 必须包含`created_at`(DEFAULT CURRENT_TIMESTAMP)和`updated_at`(ON UPDATE)|
+| 命名规则 | 表名复数形式(users),字段名下划线分隔(user_name) |
+
+### 2. API映射规范
+| API字段类型 | 数据库实现 |
+|---------------------|--------------------------------------------------------------------------|
+| 字符串 | VARCHAR(长度根据API校验规则定义) |
+| 枚举值 | ENUM类型或TINYINT+注释说明 |
+| 嵌套对象 | JSON类型或关联表 |
+| 文件资源 | 存储OSS路径(VARCHAR(255)) |
+
+### 3. 安全规范
+| 数据类型 | 处理方式 |
+|---------------------|--------------------------------------------------------------------------|
+| 密码 | BCrypt哈希存储 |
+| 身份证号 | AES-256加密 |
+| 手机号 | 脱敏存储(保留前3后4) |
+| 审计字段 | 必须包含操作人ID和IP地址 |
+
+### 4. 性能规范
+| 场景 | 优化策略 | 适用API端点示例 |
+|---------------------|--------------------------------------------------------------------------|-------------------------|
+| 高频查询 | 组合索引覆盖查询路径 | GET /api/v1/orders |
+| 大文本 | 单独分表+OSS存储(如`product_descriptions`) | POST /api/v1/products |
+| 状态字段 | 使用TINYINT+状态字典表(便于索引和扩展) | PUT /api/v1/orders/{id} |
+| 批量操作 | 提供`batch_`前缀的专用表+异步处理机制 | POST /api/v1/batch |
+| 分页查询 | 基于游标的分页(避免OFFSET性能问题) | GET /api/v1/history |
+
+### 5. API字段映射规范
+| API字段 | 数据库字段 | 类型 | 校验规则 | 备注 |
+|--------------------|------------------|------------|-----------------------------------|-------------------------------|
+| user.name | user_name | VARCHAR(50)| 必填,中文2-20字符 | 显示名 |
+| user.phone | phone | VARCHAR(20)| 必填,正则校验^1[3-9]\d{9}$ | AES加密存储 |
+| order.status | status | TINYINT | 1-5枚举值 | 关联status_dict表 |
+| product.detail | detail_text | TEXT | 可选,≤2000字符 | 存OSS链接时此字段为空 |
+
+### 6. 状态机设计
+| 业务模块 | 状态流转规则 | 触发API |
+|----------------|------------------------------------------------------------------------------|-----------------------|
+| 订单系统 | 待支付→已支付→配送中→已完成(不可逆) | PUT /api/v1/orders |
+| 审批流程 | 草稿→审批中→已通过/已驳回(可重新提交) | POST /api/v1/approvals|
+| 养殖档案 | 未认证→认证中→已认证(管理员可重置) | PATCH /api/v1/farms |
+
+## 分库分表策略
+
+### 1. 垂直分库
+| 业务模块 | 数据库实例 | 分库依据 |
+|----------------|------------|-----------------------|
+| 用户中心 | db_user | 所有用户相关表 |
+| 交易系统 | db_trade | 订单/支付/物流相关表 |
+| 政府监管 | db_gov | 防疫/补贴/检疫相关表 |
+
+### 2. 水平分表
+- **触发条件**:单表数据量 ≥ 500万行
+- **分表规则**:
+ - 用户表:按用户ID取模(16张)
+ - 订单表:按创建月份分表(按月归档)
+- **路由策略**:ShardingSphere中间件
+
+### 3. 扩容预案
+- **垂直扩容**:升级服务器配置(CPU/内存)
+- **水平扩容**:增加分片数量(需停服迁移)
+
+## 读写分离设计
+
+### 1. 节点角色
+| 节点类型 | 数量 | 作用域 | 同步方式 |
+|---------|-----|---------------------|------------------|
+| 主库 | 1 | 全业务写操作 | 半同步复制 |
+| 从库1 | 2 | 交易业务读查询 | 异步复制 |
+| 从库2 | 1 | 数据分析类查询 | 延迟复制(1小时) |
+
+### 2. 故障转移
+- **主库宕机**:VIP漂移+从库升主(30秒内完成)
+- **从库延迟**:自动路由到低延迟节点
+
+## 数据生命周期管理
+
+### 1. 冷热分离
+- **热数据**:当前业务周期数据(保留6个月)
+- **冷数据**:历史数据(OSS归档存储)
+
+### 2. 归档规则
+- **触发条件**:数据创建时间 ≥ 1年
+- **归档方式**:
+ - 结构化数据:Parquet格式压缩
+ - 图片/文件:OSS低频访问存储
+
+## 性能优化
+
+### 1. 缓存策略
+- **查询缓存**:Redis集群(LRU淘汰策略)
+- **更新机制**:
+ - 写穿透(Write-Through)
+ - 缓存失效(Cache Aside)
+
+### 2. 连接池配置
+- **最大连接数**:CPU核心数 × 2 + 有效磁盘数
+- **验证查询**:`SELECT 1`(每5分钟)
+
+## 灾备方案
+
+### 1. 跨机房同步
+- **拓扑结构**:主-备-灾备(三机房部署)
+- **同步延迟**:≤ 5分钟(专线保障)
+
+### 2. 恢复SLA
+| 故障级别 | RTO | RPO |
+|---------|-----------|-----------|
+| P0 | ≤ 15分钟 | ≤ 1分钟 |
+| P1 | ≤ 1小时 | ≤ 5分钟 |
+
+## 监控指标
+
+### 1. 性能看板
+- **QPS/TPS**:Prometheus + Grafana
+- **慢查询**:每10分钟采样分析
+
+### 2. 容量预测
+- **增长模型**:线性回归(基于历史数据)
+- **预警阈值**:存储使用率 ≥ 75%
+
+## 索引优化建议
+- 高频查询字段必须加索引
+- 联合索引遵循最左匹配原则
+- 定期使用`EXPLAIN`分析慢查询
## 核心数据表设计
@@ -23,18 +147,268 @@
```sql
CREATE TABLE users (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
- username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
- email VARCHAR(100) UNIQUE COMMENT '邮箱',
- phone VARCHAR(20) UNIQUE COMMENT '手机号',
- password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希值',
- real_name VARCHAR(50) COMMENT '真实姓名',
- avatar_url VARCHAR(255) COMMENT '头像URL',
- user_type ENUM('farmer', 'banker', 'insurer', 'government', 'trader', 'admin') NOT NULL COMMENT '用户类型',
- status TINYINT DEFAULT 1 COMMENT '状态: 1-正常, 0-禁用',
- last_login TIMESTAMP NULL COMMENT '最后登录时间',
+ username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名(用于登录)',
+ email VARCHAR(100) UNIQUE COMMENT '邮箱(用于通知和找回密码)',
+ phone VARCHAR(20) UNIQUE COMMENT '手机号(实名认证用)',
+ password_hash VARCHAR(255) NOT NULL COMMENT '密码哈希值(BCrypt加密)',
+ real_name VARCHAR(50) COMMENT '真实姓名(需与身份证一致)',
+ avatar_url VARCHAR(255) COMMENT '头像URL(OSS存储路径)',
+ user_type ENUM('farmer', 'banker', 'insurer', 'government', 'trader', 'admin') NOT NULL COMMENT '用户类型:牧民/银行职员/保险员/政府人员/交易员/管理员',
+ status TINYINT DEFAULT 1 COMMENT '状态: 1-正常, 0-禁用(禁用用户无法登录)',
+ last_login TIMESTAMP NULL COMMENT '最后登录时间(用于活跃度分析)',
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间(不可修改)',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间(自动维护)',
+ INDEX idx_user_type (user_type) COMMENT '按用户类型加速查询'
+```
+
+### 2. 金融业务表
+
+#### 2.1 贷款申请表 (loan_applications)
+```sql
+CREATE TABLE loan_applications (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ farmer_id BIGINT UNSIGNED NOT NULL COMMENT '牧户ID',
+ loan_amount DECIMAL(15,2) NOT NULL COMMENT '申请金额',
+ risk_score TINYINT COMMENT '风控评分(1-100)',
+ collateral_type ENUM('cattle', 'land', 'equipment') COMMENT '抵押物类型',
+ status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
+ FOREIGN KEY (farmer_id) REFERENCES users(id),
+ INDEX idx_status (status)
+);
+```
+
+#### 2.2 保险保单表 (insurance_policies)
+```sql
+CREATE TABLE insurance_policies (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ cattle_id BIGINT UNSIGNED NOT NULL COMMENT '牛只ID',
+ disaster_type ENUM('drought', 'blizzard', 'epidemic') NOT NULL,
+ coverage_amount DECIMAL(15,2) NOT NULL,
+ start_date DATE NOT NULL,
+ end_date DATE NOT NULL,
+ INDEX idx_coverage (coverage_amount)
+);
+```
+
+### 3. 政府监管表
+
+#### 3.1 防疫任务表 (quarantine_tasks)
+```sql
+CREATE TABLE quarantine_tasks (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ location POINT NOT NULL COMMENT 'GPS坐标',
+ inspector_id BIGINT UNSIGNED NOT NULL COMMENT '检疫员ID',
+ completion_status BOOLEAN DEFAULT FALSE,
+ SPATIAL INDEX (location),
+ FOREIGN KEY (inspector_id) REFERENCES users(id)
+);
+```
+
+#### 3.2 补贴发放表 (subsidies)
+```sql
+CREATE TABLE subsidies (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ farmer_id BIGINT UNSIGNED NOT NULL,
+ balance_score TINYINT NOT NULL COMMENT '草畜平衡评分(1-100)',
+ amount DECIMAL(15,2) NOT NULL,
+ payment_date DATE NOT NULL,
+ FOREIGN KEY (farmer_id) REFERENCES users(id)
+);
+```
+
+### 4. 数据中台表
+
+#### 4.1 数据血缘表 (data_lineage)
+```sql
+CREATE TABLE data_lineage (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ source_table VARCHAR(100) NOT NULL,
+ source_field VARCHAR(100) NOT NULL,
+ target_table VARCHAR(100) NOT NULL,
+ target_field VARCHAR(100) NOT NULL,
+ transformation_rule TEXT COMMENT '转换规则SQL片段',
+ UNIQUE KEY (source_table, source_field, target_table, target_field)
+);
+```
+
+#### 4.2 接口审计表 (api_audit_logs)
+```sql
+CREATE TABLE api_audit_logs (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ user_id BIGINT UNSIGNED,
+ endpoint VARCHAR(255) NOT NULL,
+ request_params JSON,
+ sensitive_data BOOLEAN DEFAULT FALSE,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
+ FOREIGN KEY (user_id) REFERENCES users(id)
+);
+```
+
+### 5. AI模型表
+
+#### 5.1 体况评分表 (body_condition_scores)
+```sql
+CREATE TABLE body_condition_scores (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ cattle_id BIGINT UNSIGNED NOT NULL,
+ score TINYINT NOT NULL COMMENT '体况评分(1-5)',
+ muscle_score TINYINT COMMENT '肌肉发育评分',
+ fat_score TINYINT COMMENT '脂肪覆盖评分',
+ photo_url VARCHAR(255) COMMENT '评分照片URL',
+ FOREIGN KEY (cattle_id) REFERENCES cattle(id)
+);
+```
+
+#### 5.2 饲料配方表 (feed_formulas)
+```sql
+CREATE TABLE feed_formulas (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
+ version VARCHAR(50) NOT NULL COMMENT '配方版本',
+ stage ENUM('calf', 'growing', 'fattening') NOT NULL,
+ ingredients JSON NOT NULL COMMENT '原料配比',
+ cost_per_kg DECIMAL(10,2) NOT NULL,
+ is_active BOOLEAN DEFAULT TRUE COMMENT '是否当前使用版本',
+ UNIQUE KEY (version, stage)
+);
+);
+
+-- 常用查询示例:
+-- 1. 按用户类型统计数量
+-- SELECT user_type, COUNT(*) FROM users GROUP BY user_type;
+-- 2. 查询最近登录的活跃用户
+-- SELECT * FROM users WHERE last_login > DATE_SUB(NOW(), INTERVAL 7 DAY);
+
+### 2. 贷款申请表 (loan_applications)
+存储贷款申请信息,包括申请人、贷款金额、用途等。
+
+```sql
+CREATE TABLE loan_applications (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '申请ID',
+ user_id BIGINT UNSIGNED NOT NULL COMMENT '申请人ID(关联users表)',
+ amount DECIMAL(15,2) NOT NULL COMMENT '贷款金额(单位:元,精确到分)',
+ purpose VARCHAR(255) NOT NULL COMMENT '贷款用途(如:购买饲料、扩建牛舍)',
+ status ENUM('pending', 'approved', 'rejected', 'disbursed') DEFAULT 'pending' COMMENT '状态:待审批/已通过/已拒绝/已放款',
+ application_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '申请日期(自动记录)',
+ approval_date TIMESTAMP NULL COMMENT '审批日期(审批通过时更新)',
+ FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE COMMENT '级联删除用户时同步清理',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
-
+ INDEX idx_status (status) COMMENT '加速状态筛选',
+ INDEX idx_user_id (user_id) COMMENT '加速申请人查询'
+);
+
+-- 常用查询示例:
+-- 1. 按状态统计贷款申请
+-- SELECT status, COUNT(*) FROM loan_applications GROUP BY status;
+-- 2. 查询某用户的贷款历史
+-- SELECT * FROM loan_applications WHERE user_id = 123 ORDER BY application_date DESC;
+
+### 3. 质押物监控表 (collateral_monitoring)
+存储质押物(牛只)的状态监控信息。
+
+```sql
+CREATE TABLE collateral_monitoring (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '监控ID',
+ loan_id BIGINT UNSIGNED NOT NULL COMMENT '关联贷款ID',
+ cattle_id BIGINT UNSIGNED NOT NULL COMMENT '质押牛只ID',
+ health_status VARCHAR(100) NOT NULL COMMENT '健康状况',
+ location VARCHAR(255) NOT NULL COMMENT '当前位置',
+ last_check_date TIMESTAMP NULL COMMENT '最后检查日期',
+ FOREIGN KEY (loan_id) REFERENCES loan_applications(id),
+ FOREIGN KEY (cattle_id) REFERENCES cattle(id),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
+);
+```
+
+### 4. 还款计划表 (repayment_schedules)
+存储贷款的还款计划信息。
+
+```sql
+CREATE TABLE repayment_schedules (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '计划ID',
+ loan_id BIGINT UNSIGNED NOT NULL COMMENT '关联贷款ID',
+ due_date TIMESTAMP NOT NULL COMMENT '还款日期',
+ amount DECIMAL(15,2) NOT NULL COMMENT '还款金额',
+ status ENUM('pending', 'paid', 'overdue') DEFAULT 'pending' COMMENT '状态',
+ payment_date TIMESTAMP NULL COMMENT '实际还款日期',
+ FOREIGN KEY (loan_id) REFERENCES loan_applications(id),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
+);
+```
+
+### 5. 保险申请表 (insurance_applications)
+存储保险申请信息。
+
+```sql
+CREATE TABLE insurance_applications (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '申请ID',
+ user_id BIGINT UNSIGNED NOT NULL COMMENT '申请人ID',
+ cattle_id BIGINT UNSIGNED NOT NULL COMMENT '投保牛只ID',
+ coverage_amount DECIMAL(15,2) NOT NULL COMMENT '保额',
+ premium DECIMAL(15,2) NOT NULL COMMENT '保费',
+ start_date TIMESTAMP NOT NULL COMMENT '保险开始日期',
+ end_date TIMESTAMP NOT NULL COMMENT '保险结束日期',
+ status ENUM('pending', 'approved', 'rejected', 'active', 'expired') DEFAULT 'pending' COMMENT '状态',
+ FOREIGN KEY (user_id) REFERENCES users(id),
+ FOREIGN KEY (cattle_id) REFERENCES cattle(id),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
+);
+```
+
+### 6. 理赔记录表 (claim_records)
+存储保险理赔记录。
+
+```sql
+CREATE TABLE claim_records (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '理赔ID',
+ insurance_id BIGINT UNSIGNED NOT NULL COMMENT '关联保险ID',
+ claim_amount DECIMAL(15,2) NOT NULL COMMENT '理赔金额',
+ claim_reason VARCHAR(255) NOT NULL COMMENT '理赔原因',
+ status ENUM('pending', 'approved', 'rejected', 'paid') DEFAULT 'pending' COMMENT '状态',
+ approval_date TIMESTAMP NULL COMMENT '审批日期',
+ payment_date TIMESTAMP NULL COMMENT '支付日期',
+ FOREIGN KEY (insurance_id) REFERENCES insurance_applications(id),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
+);
+```
+
+### 7. 风险评估表 (risk_assessments)
+存储保险风险评估信息。
+
+```sql
+CREATE TABLE risk_assessments (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '评估ID',
+ insurance_id BIGINT UNSIGNED NOT NULL COMMENT '关联保险ID',
+ risk_level ENUM('low', 'medium', 'high') NOT NULL COMMENT '风险等级',
+ assessment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '评估日期',
+ notes TEXT COMMENT '评估备注',
+ FOREIGN KEY (insurance_id) REFERENCES insurance_applications(id),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
+);
+```
+
+### 8. 监管记录表 (supervision_records)
+存储政府监管记录。
+
+```sql
+CREATE TABLE supervision_records (
+ id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
+ user_id BIGINT UNSIGNED NOT NULL COMMENT '监管人员ID',
+ cattle_id BIGINT UNSIGNED NOT NULL COMMENT '监管牛只ID',
+ inspection_date TIMESTAMP NOT NULL COMMENT '检查日期',
+ findings TEXT NOT NULL COMMENT '检查结果',
+ actions_taken TEXT COMMENT '采取的措施',
+ FOREIGN KEY (user_id) REFERENCES users(id),
+ FOREIGN KEY (cattle_id) REFERENCES cattle(id),
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
+);
+```
INDEX idx_username (username),
INDEX idx_email (email),
INDEX idx_phone (phone),
diff --git a/backend/database/README.md b/backend/database/README.md
index 3be5800..772246c 100644
--- a/backend/database/README.md
+++ b/backend/database/README.md
@@ -12,6 +12,15 @@
4. 主键使用自增ID
5. 外键约束用于保证数据一致性
+## 备份与恢复策略
+- **每日全量备份**: 通过`mysqldump`导出数据
+- **Binlog增量备份**: 实时同步到备份服务器
+- **恢复测试**: 每月验证备份文件可用性
+
+## 数据迁移工具
+- 使用Flyway管理数据库版本变更
+- 迁移脚本存放在`/migrations`目录
+
## 核心数据表
### 1. 用户表 (users)
diff --git a/backend/services/README.md b/backend/services/README.md
new file mode 100644
index 0000000..625873b
--- /dev/null
+++ b/backend/services/README.md
@@ -0,0 +1,70 @@
+# 后端服务模块
+
+## 概述
+
+本目录包含系统的所有微服务模块,每个模块对应一个业务领域,实现系统的分布式架构。
+
+## 服务模块列表
+
+### 1. 养殖管理服务 (farming-service)
+- 牛只档案管理
+- 饲养记录管理
+- 繁殖管理
+- 环境监测数据处理
+
+### 2. 金融服务 (finance-service)
+- 银行贷款服务
+- 保险服务
+- 风控管理
+
+### 3. 政府监管服务 (government-service)
+- 防疫监管
+- 补贴管理
+- 政策信息发布
+
+### 4. 交易管理服务 (trade-service)
+- 活牛交易管理
+- 合同管理
+- 支付流程管理
+
+### 5. 商城管理服务 (mall-service)
+- 商品信息管理
+- 库存管理
+- 订单处理
+
+### 6. 数据中台服务 (data-platform-service)
+- 数据查询服务
+- 数据共享服务
+- 统计分析服务
+
+### 7. AI能力服务 (ai-service)
+- 体况评估服务
+- 配方推荐服务
+- 智能诊断服务
+
+### 8. 用户中心服务 (user-center-service)
+- 用户管理
+- 权限管理
+- 认证服务
+
+## 微服务架构说明
+
+每个服务模块都是独立的,具有自己的数据库和业务逻辑,通过API网关进行统一访问和管理。服务之间通过RESTful API或消息队列进行通信。
+
+## 部署说明
+
+每个服务模块都可以独立部署,支持容器化部署(Docker)和云原生部署。
+
+## 目录结构
+
+```
+services/
+├── farming-service/ # 养殖管理服务
+├── finance-service/ # 金融服务
+├── government-service/ # 政府监管服务
+├── trade-service/ # 交易管理服务
+├── mall-service/ # 商城管理服务
+├── data-platform-service/ # 数据中台服务
+├── ai-service/ # AI能力服务
+└── user-center-service/ # 用户中心服务
+```
\ No newline at end of file
diff --git a/deployment/README.md b/deployment/README.md
index 6448fb2..642f97b 100644
--- a/deployment/README.md
+++ b/deployment/README.md
@@ -18,6 +18,21 @@
└─────────────────────────────────────────────────────────────────────┘
```
+## 硬件配置
+- **Web服务器**: 4核CPU / 8GB内存 / 100GB SSD
+- **数据库服务器**: 8核CPU / 16GB内存 / 500GB SSD(主从配置)
+- **缓存服务器**: 2核CPU / 4GB内存 / 50GB SSD(Redis)
+
+## CI/CD流程
+1. **代码提交**: 触发GitHub Actions
+2. **自动化测试**: 运行单元测试和集成测试
+3. **构建镜像**: 使用Docker构建前后端镜像
+4. **部署**: 通过Kubernetes滚动更新到生产环境
+
+## 监控与日志
+- **监控工具**: Prometheus + Grafana
+- **日志收集**: ELK Stack(Elasticsearch, Logstash, Kibana)
+
## 环境要求
### 服务器要求
diff --git a/docs/README.md b/docs/README.md
index 110b3d5..4f29071 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -7,22 +7,70 @@
## 文档列表
### 1. 架构文档
-- [系统架构文档](../ARCHITECTURE.md) - 系统整体架构设计
-- [详细需求文档](../REQUIREMENTS.md) - 功能和非功能需求说明
-- [开发计划文档](../DEVELOPMENT_PLAN.md) - 项目开发计划和时间安排
+- [系统架构文档](./design/ARCHITECTURE.md) - 系统整体架构设计,包含技术栈、系统架构图、前端系统架构、后端系统架构、用户权限管理架构、大屏可视化系统架构、系统集成架构、性能优化策略和部署架构
+- [开发计划文档](./design/DEVELOPMENT_PLAN.md) - 项目开发计划和时间安排
-### 2. 技术文档
-- API接口文档 (待编写)
-- 数据库设计文档 (位于[backend/database](file:///Users/ainongkeji/code/vue/xlxumu/backend/database)目录)
+### 2. 需求文档
+- [系统需求文档](./requirements/SYSTEM_REQUIREMENTS.md) - 系统非功能性需求
+- [养殖管理系统需求文档](./requirements/FARMING_MANAGEMENT_REQUIREMENTS.md) - 养殖管理系统的功能性需求
+- [金融服务系统需求文档](./requirements/FINANCIAL_SERVICES_REQUIREMENTS.md) - 金融服务系统的功能性需求
+- [政府监管系统需求文档](./requirements/GOVERNMENT_SUPERVISION_REQUIREMENTS.md) - 政府监管系统的功能性需求
+- [市场交易系统需求文档](./requirements/MARKET_TRADING_REQUIREMENTS.md) - 市场交易系统的功能性需求
+- [商城管理系统需求文档](./requirements/MALL_MANAGEMENT_REQUIREMENTS.md) - 商城管理系统的功能性需求
+- [数据中台系统需求文档](./requirements/DATA_PLATFORM_REQUIREMENTS.md) - 数据中台系统的功能性需求
+- [AI能力系统需求文档](./requirements/AI_CAPABILITIES_REQUIREMENTS.md) - AI能力系统的功能性需求
+- [大屏可视化系统需求文档](./requirements/dashboard_requirements.md) - 大屏可视化系统的功能性需求
+- [系统集成需求文档](./requirements/SYSTEM_INTEGRATION_REQUIREMENTS.md) - 系统集成需求
+- 微信小程序需求文档:
+ - [养殖户小程序需求文档](./requirements/farming_app_requirements.md) - 养殖户小程序的功能性需求
+ - [金融服务小程序需求文档](./requirements/finance_app_requirements.md) - 金融服务小程序的功能性需求
+ - [政府监管小程序需求文档](./requirements/gov_app_requirements.md) - 政府监管小程序的功能性需求
+ - [市场交易小程序需求文档](./requirements/trading_app_requirements.md) - 市场交易小程序的功能性需求
+ - [数据中台小程序需求文档](./requirements/data_platform_app_requirements.md) - 数据中台小程序的功能性需求
+ - [AI能力小程序需求文档](./requirements/ai_app_requirements.md) - AI能力小程序的功能性需求
+ - [牛肉商城小程序需求文档](./requirements/mall_app_requirements.md) - 牛肉商城小程序的功能性需求
+
+### 3. 设计文档
+- [养殖管理API](./design/api/farming.md) - 养殖管理相关接口
+- [金融服务API](./design/api/finance.md) - 金融服务相关接口
+- [政府监管API](./design/api/government.md) - 政府监管相关接口
+- [市场交易API](./design/api/trade.md) - 市场交易相关接口
+- [数据中台API](./design/api/data-platform.md) - 数据中台相关接口
+- [用户中心API](./design/api/user-center.md) - 用户中心相关接口
+- 微信小程序API:
+ - [养殖户小程序API](./design/api/miniprograms/farming-app.md) - 养殖户小程序相关接口
+ - [政务人员小程序API](./design/api/miniprograms/gov-app.md) - 政务人员小程序相关接口
+ - [商户小程序API](./design/api/miniprograms/merchant-app.md) - 商户小程序相关接口
+ - [普通用户小程序API](./design/api/miniprograms/user-app.md) - 普通用户小程序相关接口
+
+### 4. 技术文档
+- 数据库设计文档 (位于[backend/database](file:///E:/vue/xlxumu/backend/database)目录)
- 前端组件文档 (各前端项目中)
-- 部署文档 ([deployment/README.md](file:///Users/ainongkeji/code/vue/xlxumu/deployment/README.md))
+- 部署文档 ([deployment/README.md](file:///E:/vue/xlxumu/deployment/README.md))
-### 3. 用户文档
+### 5. 各系统详细开发计划
+- [养殖管理系统开发计划](./development_plans/farming_management_development_plan.md) - 养殖管理系统的详细开发计划
+- [银行监管系统开发计划](./development_plans/bank_supervision_development_plan.md) - 银行监管系统的详细开发计划
+- [保险监管系统开发计划](./development_plans/insurance_supervision_development_plan.md) - 保险监管系统的详细开发计划
+- [政府监管平台开发计划](./development_plans/government_platform_development_plan.md) - 政府监管平台的详细开发计划
+- [活牛交易系统开发计划](./development_plans/cattle_trading_development_plan.md) - 活牛交易系统的详细开发计划
+- [商城管理系统开发计划](./development_plans/mall_management_development_plan.md) - 商城管理系统的详细开发计划
+- [后端API服务开发计划](./development_plans/backend_api_development_plan.md) - 后端API服务的详细开发计划
+- [大屏可视化系统开发计划](./development_plans/dashboard_development_plan.md) - 大屏可视化系统的详细开发计划
+
+### 6. 微信小程序详细开发计划
+- [牛肉商城小程序开发计划](./development_plans/miniprograms/beef_mall_miniprogram_development_plan.md) - 牛肉商城小程序的详细开发计划
+- [养殖管理小程序开发计划](./development_plans/miniprograms/farming_management_miniprogram_development_plan.md) - 养殖管理小程序的详细开发计划
+- [银行监管小程序开发计划](./development_plans/miniprograms/bank_supervision_miniprogram_development_plan.md) - 银行监管小程序的详细开发计划
+- [保险监管小程序开发计划](./development_plans/miniprograms/insurance_supervision_miniprogram_development_plan.md) - 保险监管小程序的详细开发计划
+- [活牛交易小程序开发计划](./development_plans/miniprograms/cattle_trading_miniprogram_development_plan.md) - 活牛交易小程序的详细开发计划
+
+### 7. 用户文档
- 用户手册 (待编写)
- 管理员手册 (待编写)
- 操作指南 (待编写)
-### 4. 其他文档
+### 8. 其他文档
- 测试报告 (待编写)
- 项目总结报告 (待编写)
diff --git a/ARCHITECTURE.md b/docs/design/ARCHITECTURE.md
similarity index 52%
rename from ARCHITECTURE.md
rename to docs/design/ARCHITECTURE.md
index 132ee0d..73f57c4 100644
--- a/ARCHITECTURE.md
+++ b/docs/design/ARCHITECTURE.md
@@ -2,28 +2,52 @@
## 1. 概述
-本项目是一个综合性的畜牧业数字化管理平台,主要面向锡林郭勒盟地区的安格斯牛养殖产业,包含官网展示、后台管理、移动端小程序等多个子系统。平台集成了养殖管理、银行监管、保险监管、牛只交易、运输管理、牛肉商城等功能模块,旨在通过数字化手段提升整个产业链的管理效率和透明度。
+本项目是一个综合性的畜牧业数字化管理平台,主要面向锡林郭勒盟地区的养殖产业,包含官网展示、后台管理、移动端小程序、大屏可视化等多个子系统。平台集成了养殖管理、金融服务(银行监管、保险监管)、政府监管、牛只交易、牛肉商城、数据分析等功能模块,旨在通过数字化手段提升整个产业链的管理效率和透明度。
## 2. 技术栈
### 2.1 前端技术栈
- **官网首页**: HTML5 + CSS3 + JavaScript
- **后台管理系统**: Vue.js 3 + TypeScript + Ant Design Vue + Pinia
+- **大屏可视化系统**: Vue.js 3 + ECharts + 自定义可视化组件
- **微信小程序矩阵**: 微信小程序原生开发 + uni-app
### 2.2 后端技术栈
-- **API服务**: Node.js + Express.js + TypeScript
+- **API服务**: Node.js + Express.js + TypeScript + RESTful API
- **数据库**: MySQL
-- **文件存储**: 腾讯云存储
+- **缓存系统**: Redis
+- **消息队列**: RabbitMQ(用于异步处理)
+- **文件存储**: 腾讯云对象存储
+- **实时通信**: WebSocket(用于大屏数据推送和实时通知)
-### 2.3 安全架构
+### 2.3 数据库配置
+
+#### 2.3.1 测试环境
+- **主机**: `192.168.0.240` (MySQL主机地址)
+- **端口**: `3306` (MySQL端口)
+- **用户名**: `root`
+- **密码**: `aiot$Aiot123`
+- **数据库**: `xlxumudata`
+
+#### 2.3.2 生产环境
+- **主机**: `129.211.213.226`
+- **端口**: `9527`(端口号)
+- **用户名**: `root`
+- **密码**: `aiotAiot123!`
+- **数据库**: `xlxumudata`
+
+### 2.4 安全架构
- **身份认证**: JWT (JSON Web Tokens)
- **权限管理**: 基于角色的访问控制 (RBAC)
- **数据传输**: HTTPS 加密传输
- **API防护**: 接口限流、参数校验、防SQL注入等
+- **密码安全**: BCrypt加密存储
+- **操作审计**: 用户操作日志记录和审计
-### 2.4 数据架构
+### 2.5 数据架构
- **实时数据采集**: IoT设备数据接入
+- **数据处理**: ETL数据处理流程
+- **数据存储**: 分层数据存储(操作数据、历史数据、统计数据)
- **大数据分析**: 数据分析引擎
- **智能预警**: 基于规则的预警系统
- **可视化展示**: 图表化数据展示平台
@@ -31,35 +55,39 @@
## 3. 系统架构图
```
-┌─────────────────────────────────────────────────────────────────────┐
-│ 用户端接入层 │
-├─────────────────┬───────────────────────────────────────────────────┤
-│ 官网首页 │ 专业管理系统 │
-│ (HTML5展示) ├───────────────────────────────────────────────────┤
-│ │ - 养殖管理系统 (Vue.js 3 + Ant) │
-│ │ - 银行监管系统 (Vue.js 3 + Ant) │
-│ │ - 保险监管系统 (Vue.js 3 + Ant) │
-│ │ - 政府监管平台 (Vue.js 3 + Ant) │
-│ │ - 活牛交易系统 (Vue.js 3 + Ant) │
-│ │ - 商城管理系统 (Vue.js 3 + Ant) │
-├─────────────────┼───────────────────────────────────────────────────┤
-│ 微信小程序矩阵 │
-│ - 牛肉商城小程序 │
-│ - 养殖管理小程序 │
-│ - 银行监管小程序 │
-│ - 保险监管小程序 │
-│ - 活牛交易小程序 │
-├─────────────────┴───────────────────────────────────────────────────┤
-│ API服务层 (Node.js) │
-├─────────────────────────────────────────────────────────────────────┤
-│ 数据层 │
-├─────────────────────────────────────────────────────────────────────┤
-│ 关系数据库(MySQL) │ 文件存储(腾讯云) │ 缓存系统(Redis) │
-├─────────────────────────────────────────────────────────────────────┤
-│ 数据分析层 │
-├─────────────────────────────────────────────────────────────────────┤
-│ 大数据分析引擎 │ 智能预警系统 │ 可视化平台 │
-└─────────────────────────────────────────────────────────────────────┘
+┌─────────────────────────────────────────────────────────────────────────────────────────────┐
+│ 用户端接入层 │
+├─────────────────┬─────────────────────────────────────────────────────────────────────────┤
+│ 官网首页 │ 专业管理系统 │
+│ (HTML5展示) ├─────────────────────────────────────────────────────────────────────────┤
+│ │ - 养殖管理系统 (Vue.js 3 + Ant) │
+│ │ - 银行监管系统 (Vue.js 3 + Ant) │
+│ │ - 保险监管系统 (Vue.js 3 + Ant) │
+│ │ - 政府监管平台 (Vue.js 3 + Ant) │
+│ │ - 活牛交易系统 (Vue.js 3 + Ant) │
+│ │ - 商城管理系统 (Vue.js 3 + Ant) │
+│ │ - 大屏可视化系统 (Vue.js 3 + ECharts) │
+├─────────────────┼─────────────────────────────────────────────────────────────────────────┤
+│ 微信小程序矩阵 │
+│ - 牛肉商城小程序 │
+│ - 养殖管理小程序 │
+│ - 银行监管小程序 │
+│ - 保险监管小程序 │
+│ - 活牛交易小程序 │
+│ - 政府监管小程序 │
+│ - 数据中台小程序 │
+│ - AI能力小程序 │
+├─────────────────┴─────────────────────────────────────────────────────────────────────────┤
+│ API服务层 (Node.js) │
+├─────────────────────────────────────────────────────────────────────────────────────────────┤
+│ 数据处理与存储层 │
+├─────────────────────────────────────────────────────────────────────────────────────────────┤
+│ 关系数据库(MySQL) │ 缓存系统(Redis) │ 消息队列(RabbitMQ) │ 文件存储(腾讯云) │
+├─────────────────────────────────────────────────────────────────────────────────────────────┤
+│ 数据分析与展示层 │
+├─────────────────────────────────────────────────────────────────────────────────────────────┤
+│ 大数据分析引擎 │ 智能预警系统 │ 可视化平台 │ 实时数据推送 │
+└─────────────────────────────────────────────────────────────────────────────────────────────┘
```
## 4. 前端系统架构
@@ -83,7 +111,8 @@
2. 饲养记录管理
3. 繁殖管理
4. 环境监测数据展示
-5. 生产计划制定和执行跟踪
+5. 健康监测管理
+6. 生产计划制定和执行跟踪
#### 4.2.2 银行监管系统
- 基于Vue.js 3 Composition API
@@ -97,6 +126,7 @@
3. 还款计划跟踪
4. 风险评估数据展示
5. 财务报表生成
+6. 风控管理
#### 4.2.3 保险监管系统
- 基于Vue.js 3 Composition API
@@ -123,6 +153,8 @@
3. 政策发布和通知
4. 合规性检查
5. 统计报表生成
+6. 用户管理(集中式用户权限管理)
+7. 系统配置管理
#### 4.2.5 活牛交易系统
- 基于Vue.js 3 Composition API
@@ -136,6 +168,8 @@
3. 合同管理
4. 支付流程管理
5. 交易记录查询
+6. 商户管理
+7. 行情管理
#### 4.2.6 商城管理系统
- 基于Vue.js 3 Composition API
@@ -149,11 +183,29 @@
3. 订单处理
4. 物流跟踪
5. 售后服务管理
+6. 营销管理
+
+#### 4.2.7 大屏可视化系统
+- 基于Vue.js 3 Composition API
+- 使用ECharts和自定义可视化组件
+- 状态管理采用Pinia
+- TypeScript增强代码可维护性
+- WebSocket实现实时数据推送
+
+##### 功能模块
+1. 产业概览
+2. 养殖监控
+3. 金融服务
+4. 交易统计
+5. 运输跟踪
+6. 风险预警
+7. 生态指标
+8. 政府监管
### 4.3 微信小程序矩阵
- 使用微信小程序原生开发框架
- 跨平台支持采用uni-app
-- 包含5个专门的小程序应用
+- 包含8个专门的小程序应用
#### 4.3.1 牛肉商城小程序(消费者端)
- 商品浏览和搜索
@@ -188,6 +240,22 @@
- 交易记录查询
- 支付状态跟踪
+#### 4.3.6 政府监管小程序(监管人员端)
+- 防疫任务执行
+- 补贴申请审核
+- 政策信息查看
+- 监管数据上报
+
+#### 4.3.7 数据中台小程序(数据人员端)
+- 数据查询和导出
+- 统计报表查看
+- 数据服务申请
+
+#### 4.3.8 AI能力小程序(养殖户/兽医端)
+- 牛只体况评估
+- 饲料配方推荐
+- 智能诊断辅助
+
## 5. 后端系统架构
### 5.1 API服务层
@@ -195,20 +263,25 @@
- 使用TypeScript增强代码健壮性
- RESTful API设计风格
- JWT身份认证机制
+- 微服务架构设计(按业务模块划分)
### 5.2 数据存储层
- 主数据库:MySQL关系型数据库
+- 缓存系统:Redis(用于会话缓存、数据缓存)
+- 消息队列:RabbitMQ(用于异步任务处理)
- 文件存储:腾讯云对象存储服务
-- 缓存系统:Redis(可选)
+- 日志存储:Elasticsearch(用于日志分析)
### 5.3 安全架构
- 基于JWT的无状态认证
-- RBAC角色权限管理系统
+- RBAC角色权限管理系统(集中式用户管理)
- HTTPS加密传输
- API接口安全防护(限流、防注入等)
+- 数据加密存储(BCrypt等)
+- 操作日志审计
### 5.4 数据分析层
-- 实时数据采集系统
+- 实时数据采集系统(IoT设备数据、用户行为数据)
- 大数据分析引擎
- 智能预警系统
- 数据可视化展示平台
@@ -231,80 +304,122 @@
│ ├── farming-manager/ # 养殖管理小程序
│ ├── bank-supervision/ # 银行监管小程序
│ ├── insurance-supervision/ # 保险监管小程序
-│ └── cattle-trading/ # 活牛交易小程序
+│ ├── cattle-trading/ # 活牛交易小程序
+│ ├── gov-supervision/ # 政府监管小程序
+│ ├── data-platform/ # 数据中台小程序
+│ └── ai-capabilities/ # AI能力小程序
├── backend/ # 后端项目
│ ├── api/ # API服务
+│ │ ├── farming/ # 养殖管理API
+│ │ ├── finance/ # 金融服务API
+│ │ ├── government/ # 政府监管API
+│ │ ├── trade/ # 交易管理API
+│ │ ├── mall/ # 商城管理API
+│ │ ├── data-platform/ # 数据中台API
+│ │ ├── ai/ # AI能力API
+│ │ └── user-center/ # 用户中心API
│ ├── database/ # 数据库脚本
-│ └── utils/ # 工具函数
+│ ├── utils/ # 工具函数
+│ └── services/ # 微服务模块
├── docs/ # 文档
└── deployment/ # 部署相关配置
```
-## 7. 大屏可视化系统
+## 7. 用户权限管理架构
-### 7.1 系统概述
+### 7.1 集中式用户管理
+- 所有用户信息统一在政府监管平台进行管理
+- 各子系统仅负责登录验证和部分权限校验
+- 实现统一的RBAC权限模型
+
+### 7.2 权限体系
+- 基于角色的访问控制(RBAC)
+- 支持多角色分配
+- 细粒度权限控制(菜单权限、操作权限、数据权限)
+- 权限继承机制
+
+### 7.3 用户角色
+1. 超级管理员
+2. 政府监管员
+3. 银行信贷员
+4. 保险专员
+5. 交易管理员
+6. 商城管理员
+7. 养殖户
+8. 普通用户
+9. 数据分析师
+10. 系统审计员
+
+## 8. 大屏可视化系统架构
+
+### 8.1 系统概述
大屏可视化系统是本项目的重要组成部分,主要用于展示锡林郭勒盟安格斯牛养殖产业的整体数据、实时监控信息和分析结果。通过直观的图表和数据可视化方式,为管理者提供全面的产业洞察。
-### 7.2 技术实现
-- **前端框架**: Vue.js 3 + ECharts/DataV
+### 8.2 技术实现
+- **前端框架**: Vue.js 3 + ECharts + 自定义可视化组件
- **可视化库**: Apache ECharts + D3.js
- **响应式设计**: 支持多种大屏比例(16:9, 4:3等)
- **实时数据**: WebSocket实时数据推送
+- **性能优化**: 虚拟滚动、数据分页等技术
-### 7.3 功能模块
+### 8.3 功能模块
1. **产业概览**: 展示整体产业规模、产值、增长率等关键指标
2. **养殖监控**: 实时展示各牧场的养殖情况、环境数据
-3. **交易统计**: 牛只交易量、价格趋势、区域分布等数据
-4. **运输跟踪**: 牛只运输实时状态和路径展示
-5. **风险预警**: 风险事件展示和预警信息推送
-6. **生态指标**: 环保数据、可持续发展指标展示
+3. **金融服务**: 展示贷款、保险等金融服务数据
+4. **交易统计**: 牛只交易量、价格趋势、区域分布等数据
+5. **运输跟踪**: 牛只运输实时状态和路径展示
+6. **风险预警**: 风险事件展示和预警信息推送
+7. **生态指标**: 环保数据、可持续发展指标展示
+8. **政府监管**: 展示政府监管相关数据和政策执行效果
-### 7.4 设计特色
+### 8.4 设计特色
- 融入锡林郭勒盟草原绿色主题
- 采用蒙古族文化元素的UI设计
- 突出安格斯牛品牌形象
- 支持多维度数据钻取和交互
-## 8. 设计特色
+## 9. 系统集成架构
-### 8.1 地域文化特色
-- 锡林郭勒盟草原绿色主题设计
-- 融入蒙古族文化元素
-- 体现当地畜牧业特色
+### 9.1 外部系统集成
+1. 银行系统对接
+2. 政府监管平台对接
+3. 第三方系统集成(LDAP/AD、OAuth2.0等)
+4. 物联网设备集成(MQTT/CoAP协议)
+5. 云服务集成(腾讯云COS、短信服务等)
-### 8.2 品牌专业化
-- 突出安格斯牛品牌特色
-- 专门的安格斯牛管理和交易模块
-- 品牌化展示和推广
+### 9.2 数据交换机制
+- RESTful API接口
+- 消息队列异步处理
+- 文件传输
+- 数据库同步
-### 8.3 生态理念
-- 绿色发展理念贯穿整个系统
-- 可持续畜牧业理念体现
-- 环保数据监控和展示
+## 10. 性能优化策略
-## 9. 性能优化策略
-
-### 9.1 前端优化
+### 10.1 前端优化
- 代码分割和按需加载
- 图片懒加载和压缩
- CDN加速静态资源
- 浏览器缓存策略
+- 虚拟滚动处理大数据量展示
-### 9.2 后端优化
+### 10.2 后端优化
- 数据库索引优化
-- API响应缓存
+- API响应缓存(Redis)
- 数据库连接池
- 负载均衡部署
+- 异步任务处理(RabbitMQ)
-## 10. 部署架构
+## 11. 部署架构
-### 10.1 开发环境
+### 11.1 开发环境
- 本地开发服务器
- 热重载功能
- 代理配置解决跨域问题
-### 10.2 生产环境
+### 11.2 生产环境
- Nginx反向代理服务器
- 负载均衡配置
- SSL证书配置
-- 日志收集和监控系统
\ No newline at end of file
+- 日志收集和监控系统
+- 容器化部署(Docker)
+- 自动化部署(CI/CD)
\ No newline at end of file
diff --git a/DEVELOPMENT_PLAN.md b/docs/design/DEVELOPMENT_PLAN.md
similarity index 53%
rename from DEVELOPMENT_PLAN.md
rename to docs/design/DEVELOPMENT_PLAN.md
index 560a99e..a460050 100644
--- a/DEVELOPMENT_PLAN.md
+++ b/docs/design/DEVELOPMENT_PLAN.md
@@ -2,7 +2,7 @@
## 1. 项目概述
-本项目是面向锡林郭勒盟地区安格斯牛养殖产业的综合性数字化管理平台,包含官网展示、多个专业管理系统(养殖管理、银行监管、保险监管、政府监管、活牛交易、商城管理)、大屏可视化系统、移动端小程序等多个子系统。平台旨在通过数字化手段提升整个产业链的管理效率和透明度。
+本项目是面向锡林郭勒盟地区养殖产业的综合性数字化管理平台,包含官网展示、多个专业管理系统(养殖管理、银行监管、保险监管、政府监管、活牛交易、商城管理)、大屏可视化系统、移动端小程序等多个子系统。平台旨在通过数字化手段提升整个产业链的管理效率和透明度。
## 2. 技术选型
@@ -13,13 +13,26 @@
- **微信小程序矩阵**: 微信小程序原生开发 + uni-app
### 2.2 后端技术栈
-- **API服务**: Node.js + Express.js + TypeScript
+- **API服务**: Node.js + Express.js + RESTful API
- **数据库**: MySQL
+- **缓存**: Redis(用于会话管理和高频数据缓存)
+- **消息队列**: RabbitMQ(用于异步任务处理)
- **API文档**: Swagger
-- **安全**: JWT认证
+- **安全**: JWT认证 + 数据加密
- **文件存储**: 腾讯云存储
-### 2.3 开发工具
+### 2.3 开发优先级
+1. **第一阶段(2025-09-01至2025-10-31)**: 核心功能(养殖管理、银行监管)
+2. **第二阶段(2025-11-01至2025-12-31)**: 扩展功能(保险监管、政府监管)
+3. **第三阶段(2026-01-01至2026-02-28)**: 交易和商城功能
+
+### 2.4 技术风险与应对
+- **风险1**: 高并发场景下的数据库性能瓶颈
+ - **应对**: 引入读写分离和分库分表策略
+- **风险2**: 第三方服务(如微信支付)的集成稳定性
+ - **应对**: 设计降级方案和本地Mock服务
+
+### 2.5 开发工具
- VS Code (推荐IDE)
- Git (版本控制)
- ESLint + Prettier (代码规范)
@@ -68,30 +81,34 @@
- 响应式设计适配
#### 3.7 养殖管理系统 (2周)
-- 牛只档案管理
-- 饲养记录管理
-- 繁殖管理功能
-- 环境监测数据展示
+- 牛只档案管理(耳标二维码管理、全生命周期记录)
+- 饲养记录管理(饲料库存预警、每日投喂量记录)
+- 繁殖管理(基因谱系分析、产犊预测模型)
+- 环境监测数据展示(物联网设备接入、异常环境自动告警)
#### 3.8 银行监管系统 (1周)
- 贷款申请和审批流程管理
- 质押物(牛只)状态监控
- 还款计划跟踪
+- 风险评估和预警
#### 3.9 保险监管系统 (1周)
- 保险投保管理
- 理赔申请和处理流程
- 风险评估和预警
+- 保险记录查询
#### 3.10 政府监管平台 (1周)
- 产业数据总览
- 各类监管数据汇总
- 政策发布和通知
+- 合规性检查
#### 3.11 活牛交易系统 (1周)
- 牛只信息发布和展示
- 在线交易撮合
- 合同管理
+- 支付流程管理
### 阶段三:商城和小程序开发 (4周)
@@ -106,11 +123,13 @@
- 在线下单和支付
- 订单查询和跟踪
- 认养功能实现
+- 售后服务申请
#### 3.14 养殖管理小程序 (1周)
- 移动端牛只档案查看
- 饲养记录录入
- 健康状况上报
+- 通知消息接收
#### 3.15 银行和保险监管小程序 (1周)
- 银行监管小程序功能开发
@@ -124,9 +143,9 @@
### 阶段四:数据系统和特色功能 (3周)
#### 3.17 数据分析系统 (1周)
-- 实时数据采集
-- 大数据分析引擎
-- 智能预警系统
+- 实时数据采集(IoT设备数据接入、用户行为数据采集)
+- 大数据分析引擎(数据清洗和预处理、统计分析模型)
+- 智能预警系统(异常数据检测、风险预警机制)
#### 3.18 大屏可视化系统 (1周)
- 数据图表展示
@@ -138,25 +157,30 @@
- 蒙古族文化特色设计
- 安格斯牛品牌突出展示
-### 阶段五:测试与部署 (2周)
+### 阶段五:系统集成与测试 (2周)
-#### 3.20 测试用例编写 (3天)
-- 单元测试编写
+#### 3.20 系统集成 (3天)
+- 内蒙古畜牧云对接(数据同步、接口规范)
+- 金融机构API对接(银行接口、保险接口)
+- 第三方服务集成
+
+#### 3.21 测试用例编写 (3天)
+- 单元测试编写(核心功能模块单元测试覆盖率不低于80%)
- 集成测试实现
- E2E测试配置
-#### 3.21 Bug修复与优化 (3天)
+#### 3.22 Bug修复与优化 (3天)
- 功能测试与Bug修复
-- 性能调优
+- 性能调优(关键操作响应时间<2秒)
- 用户体验优化
-#### 3.22 部署准备 (3天)
+#### 3.23 部署准备 (3天)
- 生产环境配置
- 构建脚本优化
- 部署文档编写
- Docker配置
-#### 3.23 项目验收与交付 (1天)
+#### 3.24 项目验收与交付 (1天)
- 用户验收测试
- 项目文档完善
- 代码交接
@@ -185,104 +209,40 @@
### 4.4 测试团队
- 测试工程师(2名):负责测试用例编写和执行
-### 4.5 项目管理
-- 项目经理(1名):负责进度管理和协调沟通
-- 产品经理(1名):负责需求分析和产品设计
+## 5. 质量保障
-## 5. 风险评估与应对措施
+### 5.1 代码质量控制
+- 使用ESLint和Prettier统一代码风格
+- 通过Code Review确保代码质量
+- 使用TypeScript增强代码可维护性
-### 5.1 技术风险
-- **风险**:新技术学习成本高,可能影响开发进度
-- **应对措施**:提前进行技术预研,安排技术培训
+### 5.2 测试策略
+- 单元测试:核心功能模块单元测试覆盖率不低于80%
+- 集成测试:实现主要业务流程的集成测试
+- E2E测试:关键用户路径的端到端测试
+- 性能测试:确保系统支持500+并发用户
-### 5.2 人员风险
-- **风险**:关键人员流失可能影响项目进度
-- **应对措施**:建立知识共享机制,确保文档完整
+### 5.3 安全保障
+- 数据传输加密(HTTPS)
+- 敏感数据脱敏存储
+- 防止SQL注入和XSS攻击
+- CSRF防护机制
+- API接口限流和防护
-### 5.3 需求变更风险
-- **风险**:需求频繁变更导致返工
-- **应对措施**:建立需求变更控制流程,定期评审需求
+## 6. 部署与运维
-### 5.4 进度风险
-- **风险**:某个模块开发延期影响整体进度
-- **应对措施**:设置里程碑检查点,及时调整资源分配
+### 6.1 部署方案
+- 支持Docker容器化部署
+- 支持云平台部署(腾讯云)
+- 支持负载均衡部署
-### 5.5 第三方服务风险
-- **风险**:腾讯云服务异常或变更可能影响文件存储功能
-- **应对措施**:设计抽象层,便于切换云服务提供商
+### 6.2 监控体系
+- 系统运行状态监控
+- 性能监控指标
+- 异常告警功能
+- 日志收集和分析
-## 6. 质量保证措施
-
-### 6.1 代码质量控制
-- 代码审查制度
-- ESLint静态检查
-- 单元测试覆盖率要求(>80%)
-- TypeScript类型检查
-
-### 6.2 文档管理
-- 实时更新技术文档
-- 维护API文档
-- 编写用户手册
-- 完善部署文档
-
-### 6.3 版本管理
-- Git分支管理策略
-- 版本发布流程
-- 回滚机制
-- 变更日志记录
-
-## 7. 交付物清单
-
-### 7.1 源代码
-- 官网首页源代码
-- 6个专业管理系统源代码(养殖管理、银行监管、保险监管、政府监管、活牛交易、商城管理)
-- 大屏可视化系统源代码
-- 5个微信小程序源代码
-- 后端API服务源代码
-- 数据库脚本
-
-### 7.2 文档
-- 系统架构文档
-- API接口文档
-- 部署文档
-- 用户手册
-- 开发规范文档
-- 测试报告
-
-### 7.3 配置和脚本
-- 构建脚本
-- 部署脚本
-- Docker配置文件
-- 环境配置文件
-
-## 8. 时间安排总览
-
-| 阶段 | 时间 | 任务 |
-|------|------|------|
-| 阶段一 | 第1-2周 | 项目初始化与基础架构搭建 |
-| 阶段二 | 第3-10周 | 核心功能开发 |
-| 阶段三 | 第11-14周 | 商城和小程序开发 |
-| 阶段四 | 第15-17周 | 数据系统和特色功能 |
-| 阶段五 | 第18-19周 | 测试与部署 |
-
-## 9. 里程碑计划
-
-### 9.1 第一里程碑 (第2周末)
-- 完成项目基础架构搭建
-- 实现基础的用户认证和权限系统
-
-### 9.2 第二里程碑 (第10周末)
-- 完成所有专业管理系统核心功能开发
-- 实现养殖管理、银行监管、保险监管、政府监管、活牛交易等核心功能
-
-### 9.3 第三里程碑 (第14周末)
-- 完成商城管理系统和所有小程序开发
-- 实现牛肉商城(含认养功能)、养殖管理、银行监管、保险监管、活牛交易小程序
-
-### 9.4 第四里程碑 (第17周末)
-- 完成数据分析系统和大屏可视化系统
-- 实现数据可视化和地域文化特色
-
-### 9.5 第五里程碑 (第19周末)
-- 完成测试和部署
-- 项目正式交付
\ No newline at end of file
+### 6.3 故障处理
+- 提供故障诊断工具
+- 实现自动故障恢复机制
+- 提供故障处理文档
\ No newline at end of file
diff --git a/docs/design/api/data-platform.md b/docs/design/api/data-platform.md
new file mode 100644
index 0000000..6017cf1
--- /dev/null
+++ b/docs/design/api/data-platform.md
@@ -0,0 +1,32 @@
+# 数据中台系统 API 文档
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 数据血缘追踪
+- 接口调用分析
+- 数据质量监控
+
+### 1.2 基础路径
+`/api/v1/data`
+
+## 2. 接口明细
+
+### 2.1 数据血缘查询
+```
+GET /lineage
+```
+
+| 参数 | 类型 | 必填 | 说明 |
+|-------------|--------|------|--------------------|
+| source | string | 否 | 源表名 |
+| target | string | 否 | 目标表名 |
+
+### 2.2 接口审计
+```
+GET /audit-logs
+```
+
+## 3. 性能指标
+- 血缘查询响应时间 < 500ms
+- 审计日志保留至少180天
\ No newline at end of file
diff --git a/docs/design/api/farming.md b/docs/design/api/farming.md
new file mode 100644
index 0000000..cd031df
--- /dev/null
+++ b/docs/design/api/farming.md
@@ -0,0 +1,57 @@
+# 养殖管理系统 API 文档 (v1.1.0)
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 牛只档案管理
+- 饲喂记录
+- 防疫管理
+- 繁殖管理
+
+### 1.2 基础路径
+`/api/v1/farming`
+
+## 2. 接口明细
+
+### 2.1 添加牛只
+```
+POST /cattles
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| ear_tag | string | 是 | 耳标号(唯一) |
+| breed | string | 是 | 品种 |
+| birth_date | string | 是 | 出生日期(YYYY-MM-DD)|
+| gender | string | 是 | 性别(公/母) |
+| weight | number | 否 | 体重(kg) |
+
+### 2.2 批量导入牛只
+```
+POST /cattles/batch
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| file | file | 是 | Excel文件 |
+
+### 2.3 防疫记录
+```
+POST /vaccinations
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| cattle_id | string | 是 | 牛只ID |
+| vaccine_type | string | 是 | 疫苗类型 |
+| date | string | 是 | 接种日期(YYYY-MM-DD)|
+
+## 3. 数据规范
+- 耳标号格式:省简称+6位数字(如NM000001)
+- 疫苗记录保留至少5年
+- 敏感数据需RSA加密传输
+
+## 4. 权限控制
+- 添加牛只:养殖管理员
+- 批量导入:系统管理员
+- 防疫记录:兽医
\ No newline at end of file
diff --git a/docs/design/api/finance.md b/docs/design/api/finance.md
new file mode 100644
index 0000000..99ed277
--- /dev/null
+++ b/docs/design/api/finance.md
@@ -0,0 +1,54 @@
+# 金融业务系统 API 文档 (v1.1.0)
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 贷款申请
+- 保险购买
+- 理赔处理
+- 贷款审批
+
+### 1.2 基础路径
+`/api/v1/finance`
+
+## 2. 接口明细
+
+### 2.1 贷款申请
+```
+POST /loans
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|-----------------|---------|------|--------------------|
+| farmer_id | number | 是 | 牧户ID |
+| amount | number | 是 | 申请金额(元) |
+| collateral_type | string | 是 | 抵押物类型 |
+| term | number | 是 | 贷款期限(月) |
+| interest_rate | number | 是 | 年利率(%) |
+
+### 2.2 贷款审批状态查询
+```
+GET /loans/:id/status
+```
+
+### 2.3 保险购买
+```
+POST /insurances
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|-----------------|---------|------|--------------------|
+| farmer_id | number | 是 | 牧户ID |
+| cattle_id | string | 是 | 牛只ID |
+| insurance_type | string | 是 | 保险类型 |
+| premium | number | 是 | 保费(元) |
+
+## 3. 风控规则
+- 单笔贷款金额 ≤ 牧户资产总额的50%
+- 理赔申请需在灾害发生后30天内提交
+- 敏感数据需RSA加密传输
+
+## 4. 权限控制
+- 贷款申请:牧户
+- 贷款审批:银行管理员
+- 保险购买:牧户
\ No newline at end of file
diff --git a/docs/design/api/government.md b/docs/design/api/government.md
new file mode 100644
index 0000000..788bad3
--- /dev/null
+++ b/docs/design/api/government.md
@@ -0,0 +1,52 @@
+# 政府监管系统 API 文档 (v1.1.0)
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 防疫任务下发
+- 补贴发放
+- 检疫监管
+- 任务状态跟踪
+
+### 1.2 基础路径
+`/api/v1/gov`
+
+## 2. 接口明细
+
+### 2.1 创建防疫任务
+```
+POST /quarantines
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|---------------|--------|------|--------------------|
+| location | string | 是 | GPS坐标(纬度,经度)|
+| inspector_id | number | 是 | 检疫员ID |
+| deadline | string | 是 | 截止日期(YYYY-MM-DD)|
+| task_type | string | 是 | 任务类型(常规/紧急)|
+| priority | number | 否 | 优先级(1-5) |
+
+### 2.2 防疫任务状态查询
+```
+GET /quarantines/:id/status
+```
+
+### 2.3 检疫监管
+```
+POST /inspections
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|---------------|--------|------|--------------------|
+| cattle_id | string | 是 | 牛只ID |
+| inspector_id | number | 是 | 检疫员ID |
+| result | string | 是 | 检疫结果(合格/不合格)|
+
+## 3. 审计要求
+- 所有操作记录操作人IP和时间
+- 敏感数据需RSA加密传输
+
+## 4. 权限控制
+- 防疫任务下发:政府管理员
+- 检疫监管:检疫员
+- 补贴发放:财务人员
\ No newline at end of file
diff --git a/docs/design/api/miniprograms/farming-app.md b/docs/design/api/miniprograms/farming-app.md
new file mode 100644
index 0000000..0062300
--- /dev/null
+++ b/docs/design/api/miniprograms/farming-app.md
@@ -0,0 +1,33 @@
+# 养殖助手小程序 API 文档
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 养殖记录
+- 饲喂提醒
+- 防疫上报
+
+### 1.2 基础路径
+`/api/mini/farming`
+
+## 2. 接口明细
+
+### 2.1 添加饲喂记录
+```
+POST /feedings
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| cattle_id | number | 是 | 牛只ID |
+| feed_type | string | 是 | 饲料类型 |
+| amount | number | 是 | 投喂量(kg) |
+
+### 2.2 防疫上报
+```
+POST /vaccinations
+```
+
+## 3. 数据规范
+- 时间字段格式: YYYY-MM-DD HH:mm:ss
+- 数量单位统一使用kg
\ No newline at end of file
diff --git a/docs/design/api/miniprograms/gov-app.md b/docs/design/api/miniprograms/gov-app.md
new file mode 100644
index 0000000..76c6b4e
--- /dev/null
+++ b/docs/design/api/miniprograms/gov-app.md
@@ -0,0 +1,33 @@
+# 政府监管小程序 API 文档
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 防疫检查
+- 补贴发放
+- 违规上报
+
+### 1.2 基础路径
+`/api/mini/gov`
+
+## 2. 接口明细
+
+### 2.1 提交检查报告
+```
+POST /inspections
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|---------------|--------|------|--------------------|
+| farm_id | number | 是 | 养殖场ID |
+| result | string | 是 | 检查结果 |
+| photos | array | 是 | 现场照片URL数组 |
+
+### 2.2 查看补贴名单
+```
+GET /subsidies
+```
+
+## 3. 安全要求
+- 所有接口需政府专线VPN接入
+- 照片数据需加密存储
\ No newline at end of file
diff --git a/docs/design/api/miniprograms/merchant-app.md b/docs/design/api/miniprograms/merchant-app.md
new file mode 100644
index 0000000..17ed03a
--- /dev/null
+++ b/docs/design/api/miniprograms/merchant-app.md
@@ -0,0 +1,35 @@
+# 商户小程序 API 文档
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 商品管理
+- 订单处理
+- 数据统计
+
+### 1.2 基础路径
+`/api/mini/merchant`
+
+## 2. 接口明细
+
+### 2.1 添加商品
+```
+POST /products
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| name | string | 是 | 商品名称 |
+| price | number | 是 | 价格(元) |
+| stock | number | 是 | 库存数量 |
+
+### 2.2 处理订单
+```
+PUT /orders/{id}
+```
+
+## 3. 错误码规范
+| 代码 | 说明 |
+|------|----------------|
+| 4001 | 库存不足 |
+| 4002 | 订单已过期 |
\ No newline at end of file
diff --git a/docs/design/api/miniprograms/user-app.md b/docs/design/api/miniprograms/user-app.md
new file mode 100644
index 0000000..49f10db
--- /dev/null
+++ b/docs/design/api/miniprograms/user-app.md
@@ -0,0 +1,34 @@
+# 用户小程序 API 文档
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 用户登录/注册
+- 商品浏览/购买
+- 订单查询
+- 个人中心
+
+### 1.2 基础路径
+`/api/mini/user`
+
+## 2. 接口明细
+
+### 2.1 微信登录
+```
+POST /login
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|------------|--------|------|----------------|
+| code | string | 是 | 微信登录code |
+| encryptedData | string | 是 | 加密用户数据 |
+| iv | string | 是 | 加密算法的初始向量 |
+
+### 2.2 获取商品列表
+```
+GET /products
+```
+
+## 3. 权限控制
+- 所有接口需携带`access_token`
+- 敏感接口需二次验证(如支付密码)
\ No newline at end of file
diff --git a/docs/design/api/trade.md b/docs/design/api/trade.md
new file mode 100644
index 0000000..94afee2
--- /dev/null
+++ b/docs/design/api/trade.md
@@ -0,0 +1,62 @@
+# 交易系统 API 文档 (v1.1.0)
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 商品发布/下架
+- 订单创建/支付
+- 物流跟踪
+- 订单状态查询
+
+### 1.2 基础路径
+`/api/v1/trades`
+
+## 2. 接口明细
+
+### 2.1 商品发布
+```
+POST /products
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| name | string | 是 | 商品名称 |
+| price | number | 是 | 价格(元) |
+| stock | number | 是 | 库存数量 |
+| category | string | 是 | 商品分类 |
+
+### 2.2 创建订单
+```
+POST /orders
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|--------------|--------|------|--------------------|
+| product_id | number | 是 | 商品ID |
+| quantity | number | 是 | 购买数量 |
+| address_id | number | 是 | 收货地址ID |
+| payment_method | string | 是 | 支付方式(微信/支付宝)|
+| coupon_code | string | 否 | 优惠券码 |
+
+### 2.3 物流跟踪
+```
+GET /logistics/:order_id
+```
+
+## 3. 状态流转
+```mermaid
+stateDiagram
+ [*] --> 待支付
+ 待支付 --> 已支付: 支付成功
+ 已支付 --> 配送中: 商家发货
+ 配送中 --> 已完成: 确认收货
+```
+
+## 4. 安全要求
+- 支付接口需HTTPS加密
+- 敏感数据需RSA加密传输
+
+## 5. 权限控制
+- 商品发布:商户
+- 订单创建:用户
+- 物流跟踪:用户/商户
\ No newline at end of file
diff --git a/docs/design/api/user-center.md b/docs/design/api/user-center.md
new file mode 100644
index 0000000..8682dcb
--- /dev/null
+++ b/docs/design/api/user-center.md
@@ -0,0 +1,36 @@
+# 用户中心系统 API 文档
+
+## 1. 接口概述
+
+### 1.1 功能范围
+- 用户注册/登录/注销
+- 个人信息管理
+- 权限控制
+
+### 1.2 基础路径
+`/api/v1/users`
+
+## 2. 接口明细
+
+### 2.1 用户注册
+```
+POST /register
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|------------|--------|------|----------------|
+| username | string | 是 | 4-20位字母数字 |
+| password | string | 是 | 6-20位含大小写 |
+| phone | string | 是 | 11位手机号 |
+
+### 2.2 用户登录
+```
+POST /login
+```
+
+## 3. 状态码规范
+| 代码 | 说明 |
+|------|----------------|
+| 200 | 成功 |
+| 400 | 参数校验失败 |
+| 401 | 认证失败 |
\ No newline at end of file
diff --git a/docs/development_plans/backend_api_development_plan.md b/docs/development_plans/backend_api_development_plan.md
new file mode 100644
index 0000000..2aa9e2b
--- /dev/null
+++ b/docs/development_plans/backend_api_development_plan.md
@@ -0,0 +1,157 @@
+# 后端API服务开发计划
+
+## 1. 系统概述
+
+后端API服务是整个平台的数据中枢,基于Node.js和Express.js构建,提供RESTful API接口,负责处理所有业务逻辑、数据存储和第三方服务集成。
+
+## 2. 技术架构
+
+- **运行环境**: Node.js
+- **Web框架**: Express.js
+- **API风格**: RESTful API
+- **数据库**: MySQL
+- **ORM**: Sequelize / TypeORM
+- **认证机制**: JWT
+- **安全防护**: Helmet, CORS, Rate Limiting
+- **日志管理**: Winston
+- **测试框架**: Jest
+- **API文档**: Swagger
+
+## 3. 功能模块详细计划
+
+### 3.1 用户认证和权限模块 (3天)
+- 第1天:
+ - 用户注册/登录接口实现
+ - JWT Token生成和验证机制
+- 第2天:
+ - 角色权限管理接口
+ - RBAC权限控制实现
+- 第3天:
+ - 用户信息管理接口
+ - 密码重置和安全机制
+
+### 3.2 牛只档案管理模块 (2天)
+- 第1天:
+ - 牛只档案增删改查接口
+ - 耳标二维码管理接口
+- 第2天:
+ - 牛只生命周期记录接口
+ - 牛只档案查询和筛选接口
+
+### 3.3 饲养记录管理模块 (1天)
+- 第1天:
+ - 饲料库存管理接口
+ - 每日投喂量记录接口
+ - 饲料库存预警接口
+
+### 3.4 繁殖管理模块 (1天)
+- 第1天:
+ - 繁殖记录管理接口
+ - 基因谱系分析接口
+ - 产犊预测接口
+
+### 3.5 环境监测模块 (1天)
+- 第1天:
+ - 物联网设备数据接入接口
+ - 环境数据存储和查询接口
+ - 异常环境告警接口
+
+### 3.6 贷款管理模块 (2天)
+- 第1天:
+ - 贷款申请和审批接口
+ - 质押物状态监控接口
+- 第2天:
+ - 还款计划跟踪接口
+ - 风险评估数据接口
+
+### 3.7 保险管理模块 (2天)
+- 第1天:
+ - 保险投保管理接口
+ - 保单状态跟踪接口
+- 第2天:
+ - 理赔申请和处理接口
+ - 风险评估和预警接口
+
+### 3.8 政府监管模块 (1天)
+- 第1天:
+ - 产业数据总览接口
+ - 监管数据汇总接口
+ - 政策发布接口
+
+### 3.9 交易管理模块 (2天)
+- 第1天:
+ - 牛只信息发布接口
+ - 在线交易撮合接口
+- 第2天:
+ - 合同管理接口
+ - 支付流程管理接口
+
+### 3.10 商城管理模块 (2天)
+- 第1天:
+ - 商品信息管理接口
+ - 库存管理接口
+- 第2天:
+ - 订单处理接口
+ - 物流跟踪接口
+
+### 3.11 数据分析模块 (2天)
+- 第1天:
+ - 实时数据采集接口
+ - 大数据分析引擎接口
+- 第2天:
+ - 智能预警系统接口
+ - 数据可视化接口
+
+## 4. 技术实现要点
+
+- 实现基于JWT的无状态认证
+- 使用RBAC角色权限管理系统
+- HTTPS加密传输
+- API接口安全防护(限流、防注入等)
+- 数据库连接池管理
+- 缓存机制优化性能(Redis)
+- 异步任务处理(RabbitMQ)
+- 文件存储服务集成(腾讯云)
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (3天)
+- 项目初始化和环境配置
+- Express.js框架搭建
+- 数据库连接配置
+- JWT认证机制实现
+- 基础中间件集成(日志、安全、错误处理等)
+
+### 5.2 阶段二:核心功能开发 (15天)
+- 用户认证和权限模块开发
+- 养殖管理相关模块开发
+- 金融服务相关模块开发
+- 政府监管模块开发
+- 交易管理模块开发
+- 商城管理模块开发
+- 数据分析模块开发
+
+### 5.3 阶段三:系统集成与测试 (4天)
+- 第三方服务集成(银行、保险、腾讯云等)
+- API接口测试和优化
+- 性能测试和调优
+- 安全测试和漏洞修复
+- API文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 接口测试确保API稳定性
+- 性能测试确保支持500+并发用户
+- 安全测试防止SQL注入、XSS等攻击
+- 代码审查机制确保代码质量
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署(腾讯云)
+- 支持负载均衡部署
+- 系统运行状态监控
+- 性能监控指标
+- 异常告警功能
+- 日志收集和分析
\ No newline at end of file
diff --git a/docs/development_plans/bank_supervision_development_plan.md b/docs/development_plans/bank_supervision_development_plan.md
new file mode 100644
index 0000000..574541e
--- /dev/null
+++ b/docs/development_plans/bank_supervision_development_plan.md
@@ -0,0 +1,92 @@
+# 银行监管系统开发计划
+
+## 1. 系统概述
+
+银行监管系统用于银行对养殖户贷款申请的审批、质押物监控和还款计划跟踪。系统采用Vue.js 3 + TypeScript + Ant Design Vue + Pinia技术栈。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3 Composition API
+- **UI组件库**: Ant Design Vue
+- **状态管理**: Pinia
+- **编程语言**: TypeScript
+- **构建工具**: Vite
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 贷款管理模块 (3天)
+- 第1天:
+ - 贷款申请列表展示
+ - 贷款申请详情查看
+- 第2天:
+ - 贷款审批流程实现
+ - 审批意见填写功能
+- 第3天:
+ - 贷款状态更新机制
+ - 贷款记录查询功能
+
+### 3.2 质押物监控模块 (2天)
+- 第1天:
+ - 质押牛只状态展示
+ - 质押物价值评估功能
+- 第2天:
+ - 质押物异常告警机制
+ - 质押物状态历史记录
+
+### 3.3 还款计划模块 (2天)
+- 第1天:
+ - 还款计划生成和展示
+ - 还款记录管理
+- 第2天:
+ - 还款提醒功能
+ - 提前还款和延期申请处理
+
+### 3.4 风险评估模块 (1天)
+- 第1天:
+ - 风险评估模型实现
+ - 风险评分展示
+ - 风险预警机制
+
+## 4. 技术实现要点
+
+- 与银行系统API对接实现数据同步
+- 实现审批流程的权限控制
+- 采用图表展示贷款和还款统计数据
+- 使用Pinia进行状态管理,确保数据一致性
+- 实现响应式设计,适配不同屏幕尺寸
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (2天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (5天)
+- 贷款管理模块开发
+- 质押物监控模块开发
+- 还款计划模块开发
+- 风险评估模块开发
+
+### 5.3 阶段三:集成测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/bank_supervision_miniprogram_development_plan.md b/docs/development_plans/bank_supervision_miniprogram_development_plan.md
new file mode 100644
index 0000000..309c6cd
--- /dev/null
+++ b/docs/development_plans/bank_supervision_miniprogram_development_plan.md
@@ -0,0 +1,79 @@
+# 银行监管小程序开发计划
+
+## 1. 系统概述
+
+银行监管小程序是面向银行工作人员的微信小程序,提供贷款审批、质押物监控、风险数据查看等功能。使用微信小程序原生开发框架和uni-app跨平台支持。
+
+## 2. 技术架构
+
+- **开发框架**: 微信小程序原生开发框架
+- **跨平台支持**: uni-app
+- **状态管理**: Vuex(uni-app)/原生状态管理
+- **UI组件库**: WeUI / Vant Weapp
+- **构建工具**: 微信开发者工具
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Jest
+
+## 3. 功能模块详细计划
+
+### 3.1 贷款审批模块 (2天)
+- 第1天:
+ - 贷款申请查看
+ - 申请详情展示
+- 第2天:
+ - 移动端审批功能
+ - 审批意见填写
+
+### 3.2 质押物监控模块 (1天)
+- 第1天:
+ - 质押物状态查看
+ - 质押物价值评估
+ - 异常情况提醒
+
+### 3.3 风险数据模块 (1天)
+- 第1天:
+ - 风险数据查看
+ - 风险评估报告
+ - 风险趋势分析
+
+## 4. 技术实现要点
+
+- 确保数据安全性
+- 实现审批流程的权限控制
+- 优化移动办公体验
+- 实现数据加密存储和传输
+- 支持手势操作提升用户体验
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (1天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (3天)
+- 贷款审批模块开发
+- 质押物监控模块开发
+- 风险数据模块开发
+
+### 5.3 阶段三:安全测试与优化 (2天)
+- 安全性测试和加固
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+- 安全专项测试
+
+## 7. 部署与运维
+
+- 通过微信开发者工具进行构建和发布
+- 支持灰度发布和版本管理
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/beef_mall_miniprogram_development_plan.md b/docs/development_plans/beef_mall_miniprogram_development_plan.md
new file mode 100644
index 0000000..e7bb47d
--- /dev/null
+++ b/docs/development_plans/beef_mall_miniprogram_development_plan.md
@@ -0,0 +1,96 @@
+# 牛肉商城小程序开发计划
+
+## 1. 系统概述
+
+牛肉商城小程序是面向消费者的微信小程序,提供商品浏览、购物车、订单管理、认养功能等服务。使用微信小程序原生开发框架和uni-app跨平台支持。
+
+## 2. 技术架构
+
+- **开发框架**: 微信小程序原生开发框架
+- **跨平台支持**: uni-app
+- **状态管理**: Vuex(uni-app)/原生状态管理
+- **UI组件库**: WeUI / Vant Weapp
+- **构建工具**: 微信开发者工具
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Jest
+
+## 3. 功能模块详细计划
+
+### 3.1 商品浏览模块 (2天)
+- 第1天:
+ - 商品分类展示
+ - 商品搜索功能
+- 第2天:
+ - 商品详情页面
+ - 商品评价展示
+
+### 3.2 购物车模块 (1天)
+- 第1天:
+ - 商品添加和删除
+ - 数量修改功能
+ - 结算功能
+
+### 3.3 订单模块 (2天)
+- 第1天:
+ - 订单提交功能
+ - 订单支付功能
+- 第2天:
+ - 订单查询功能
+ - 订单状态跟踪
+
+### 3.4 认养功能模块 (2天)
+- 第1天:
+ - 牛只认养功能
+ - 认养进度跟踪
+- 第2天:
+ - 认养记录管理
+ - 认养收益展示
+
+### 3.5 用户中心模块 (1天)
+- 第1天:
+ - 个人信息管理
+ - 收货地址管理
+ - 售后服务申请
+
+## 4. 技术实现要点
+
+- 使用微信小程序原生开发框架
+- 集成微信支付功能
+- 实现消息推送功能
+- 优化移动端用户体验
+- 实现本地数据缓存提升访问速度
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (1天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (6天)
+- 商品浏览模块开发
+- 购物车模块开发
+- 订单模块开发
+- 认养功能模块开发
+- 用户中心模块开发
+
+### 5.3 阶段三:测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 通过微信开发者工具进行构建和发布
+- 支持灰度发布和版本管理
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/cattle_trading_development_plan.md b/docs/development_plans/cattle_trading_development_plan.md
new file mode 100644
index 0000000..c719613
--- /dev/null
+++ b/docs/development_plans/cattle_trading_development_plan.md
@@ -0,0 +1,88 @@
+# 活牛交易系统开发计划
+
+## 1. 系统概述
+
+活牛交易系统用于养殖户之间的活牛在线交易撮合、合同管理和支付流程管理。系统采用Vue.js 3 + TypeScript + Ant Design Vue + Pinia技术栈。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3 Composition API
+- **UI组件库**: Ant Design Vue
+- **状态管理**: Pinia
+- **编程语言**: TypeScript
+- **构建工具**: Vite
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 信息发布模块 (2天)
+- 第1天:
+ - 活牛信息发布功能
+ - 活牛信息编辑功能
+- 第2天:
+ - 活牛信息展示和搜索功能
+ - 活牛信息详情页面
+
+### 3.2 交易撮合模块 (2天)
+- 第1天:
+ - 在线交易撮合机制
+ - 交易意向管理功能
+- 第2天:
+ - 交易价格谈判功能
+ - 交易记录管理
+
+### 3.3 合同管理模块 (2天)
+- 第1天:
+ - 电子合同生成功能
+ - 合同签署流程实现
+- 第2天:
+ - 合同状态跟踪功能
+ - 合同查询和导出功能
+
+### 3.4 支付管理模块 (1天)
+- 第1天:
+ - 支付流程管理
+ - 支付状态跟踪功能
+
+## 4. 技术实现要点
+
+- 集成第三方支付接口
+- 实现交易纠纷处理机制
+- 采用区块链技术确保合同存证
+- 使用Pinia进行状态管理,确保数据一致性
+- 实现响应式设计,适配不同屏幕尺寸
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (2天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (5天)
+- 信息发布模块开发
+- 交易撮合模块开发
+- 合同管理模块开发
+- 支付管理模块开发
+
+### 5.3 阶段三:集成测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/cattle_trading_miniprogram_development_plan.md b/docs/development_plans/cattle_trading_miniprogram_development_plan.md
new file mode 100644
index 0000000..15dc74d
--- /dev/null
+++ b/docs/development_plans/cattle_trading_miniprogram_development_plan.md
@@ -0,0 +1,77 @@
+# 活牛交易小程序开发计划
+
+## 1. 系统概述
+
+活牛交易小程序是面向交易员的微信小程序,提供活牛信息发布、交易撮合、合同管理等功能。使用微信小程序原生开发框架和uni-app跨平台支持。
+
+## 2. 技术架构
+
+- **开发框架**: 微信小程序原生开发框架
+- **跨平台支持**: uni-app
+- **状态管理**: Vuex(uni-app)/原生状态管理
+- **UI组件库**: WeUI / Vant Weapp
+- **构建工具**: 微信开发者工具
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Jest
+
+## 3. 功能模块详细计划
+
+### 3.1 信息发布模块 (1天)
+- 第1天:
+ - 活牛信息发布
+ - 信息编辑功能
+ - 信息状态管理
+
+### 3.2 交易撮合模块 (1天)
+- 第1天:
+ - 交易撮合功能
+ - 意向管理
+ - 价格谈判支持
+
+### 3.3 合同管理模块 (1天)
+- 第1天:
+ - 合同查看功能
+ - 合同状态跟踪
+ - 电子签名支持
+
+## 4. 技术实现要点
+
+- 实现即时通讯功能
+- 优化交易撮合体验
+- 确保交易数据安全
+- 支持实时消息推送
+- 实现交易过程可视化
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (1天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (3天)
+- 信息发布模块开发
+- 交易撮合模块开发
+- 合同管理模块开发
+
+### 5.3 阶段三:测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+- 实时通信功能专项测试
+
+## 7. 部署与运维
+
+- 通过微信开发者工具进行构建和发布
+- 支持灰度发布和版本管理
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/dashboard_development_plan.md b/docs/development_plans/dashboard_development_plan.md
new file mode 100644
index 0000000..4cba48b
--- /dev/null
+++ b/docs/development_plans/dashboard_development_plan.md
@@ -0,0 +1,309 @@
+# 大屏可视化系统开发计划
+
+## 1. 系统概述
+
+大屏可视化系统是本项目的重要组成部分,主要用于展示锡林郭勒盟安格斯牛养殖产业的整体数据、实时监控信息和分析结果。通过直观的图表和数据可视化方式,为管理者提供全面的产业洞察。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3
+- **可视化库**: ECharts + 自定义Vue 3兼容组件(替代DataV)
+- **构建工具**: Vite
+- **状态管理**: Pinia
+- **响应式设计**: 支持多种大屏比例(16:9, 4:3等)
+- **实时数据**: WebSocket实时数据推送
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 产业概览模块 (3天)
+- 第1天:
+ - 整体产业规模展示(牛只总数、牧场数量等关键指标)
+ - 产值和增长率关键指标(年度产值、增长率趋势图)
+- 第2天:
+ - 数据可视化图表实现(饼图展示品种分布、柱状图展示区域分布)
+ - 实时数据更新机制(WebSocket连接建立)
+- 第3天:
+ - 数据钻取功能实现(点击图表可查看详细数据)
+ - 多维度数据展示(按时间、区域、品种等维度筛选)
+
+### 3.2 养殖监控模块 (3天)
+- 第1天:
+ - 各牧场养殖情况展示(地图展示各牧场位置和规模)
+ - 环境数据实时监控(温湿度、氨气浓度等传感器数据)
+- 第2天:
+ - 异常情况告警展示(环境异常、健康异常等告警信息)
+ - 历史数据趋势分析(环境数据历史趋势图)
+- 第3天:
+ - 牛只健康状态监控(健康、亚健康、患病牛只数量统计)
+ - 饲养记录统计(饲料消耗、投喂量趋势)
+
+### 3.3 金融服务模块 (2天)
+- 第1天:
+ - 贷款统计展示(贷款申请数、放款总额、还款情况)
+ - 保险统计展示(投保数量、保费总额、理赔情况)
+- 第2天:
+ - 风险数据展示(高风险贷款、理赔率高的牧场等)
+ - 金融服务趋势分析(贷款和保险业务增长趋势)
+
+### 3.4 交易统计模块 (2天)
+- 第1天:
+ - 牛只交易量统计(日交易量、月交易量、年度交易量)
+ - 价格趋势和区域分布展示(价格热力图、区域价格对比)
+- 第2天:
+ - 交易类型分析(活牛交易、牛肉制品销售等)
+ - 交易排行榜(热门牧场、活跃交易员等)
+
+### 3.5 运输跟踪模块 (2天)
+- 第1天:
+ - 牛只运输实时状态展示(运输路线、当前位置、预计到达时间)
+ - 运输车辆监控(车辆状态、司机信息等)
+- 第2天:
+ - 运输异常告警(延误、偏离路线等异常情况)
+ - 运输效率分析(运输时间、成本等统计)
+
+### 3.6 风险预警模块 (2天)
+- 第1天:
+ - 风险事件展示(疫病风险、市场风险、自然灾害风险等)
+ - 预警信息推送和展示(不同级别预警的分类展示)
+- 第2天:
+ - 风险趋势分析(各类风险的历史趋势和预测)
+ - 风险地图(按区域展示风险分布)
+
+### 3.7 生态指标模块 (2天)
+- 第1天:
+ - 环保数据展示(碳排放、水资源使用、饲料消耗等)
+ - 可持续发展指标展示(草畜平衡、生态效益等)
+- 第2天:
+ - 环保趋势分析(环保指标的历史变化趋势)
+ - 生态效益评估(经济效益与生态效益的平衡分析)
+
+### 3.8 政府监管模块 (2天)
+- 第1天:
+ - 监管数据总览(防疫完成率、补贴发放情况等)
+ - 合规性检查结果展示(合规牧场比例、违规事件统计等)
+- 第2天:
+ - 政策执行效果分析(政策实施后的数据变化)
+ - 监管报告生成和展示(自动生成的监管报告可视化)
+
+## 4. 技术实现要点
+
+- 使用自定义全屏容器组件实现自适应全屏显示
+- 开发装饰组件(如边框、装饰线等)增强视觉效果
+- 采用合理的布局结构(如三栏布局)分布数据展示区域
+- 开发排名轮播组件展示动态数据
+- 采用深色科技风格背景,搭配主题色系(如绿色渐变)体现业务特色
+- 添加实时时间显示等实用功能
+- 结合ECharts图表实现丰富的数据可视化
+- 使用自适应容器确保不同分辨率下的正常显示
+- 添加窗口大小改变时的重绘功能
+- 实现WebSocket实时数据推送机制
+- 针对大数据量渲染进行性能优化
+
+## 5. 数据接口对接
+
+### 5.1 API接口对接计划
+- 对接养殖管理相关接口:
+ - 牛只档案数据接口(获取牛只总数、品种分布等)
+ - 环境监测数据接口(获取实时环境数据)
+ - 饲养记录数据接口(获取饲料消耗、投喂量等数据)
+
+- 对接金融服务相关接口:
+ - 贷款申请数据接口(获取贷款申请数、放款总额等)
+ - 保险保单数据接口(获取投保数量、保费总额等)
+ - 理赔数据接口(获取理赔情况)
+
+- 对接交易相关接口:
+ - 活牛交易数据接口(获取交易量、价格等数据)
+ - 商城订单数据接口(获取销售数据、热门商品等)
+
+- 对接政府监管相关接口:
+ - 防疫数据接口(获取防疫完成率等数据)
+ - 补贴发放数据接口(获取补贴发放情况)
+
+- 对接数据分析相关接口:
+ - 预警信息接口(获取各类风险预警信息)
+ - 分析报告接口(获取各类分析报告数据)
+
+### 5.2 数据更新机制
+- 实时数据:通过WebSocket推送机制实现实时更新
+- 定时数据:通过定时轮询机制定期更新(如每5分钟)
+- 手动刷新:提供手动刷新按钮供用户主动刷新数据
+
+## 6. 开发阶段规划
+
+### 6.1 阶段一:基础框架搭建 (4天)
+- 第1天:
+ - 项目初始化和环境配置
+ - 移除DataV依赖,搭建Vue 3兼容的基础组件库
+- 第2天:
+ - 开发基础可视化组件(边框、装饰线等)
+ - 实现全屏适配方案
+- 第3天:
+ - 开发排名轮播组件
+ - 实现WebSocket连接机制
+- 第4天:
+ - 基础数据获取服务封装
+ - 开发基础布局组件
+
+### 6.2 阶段二:核心功能开发 (18天)
+- 第1-3天:
+ - 产业概览模块开发
+- 第4-6天:
+ - 养殖监控模块开发
+- 第7-8天:
+ - 金融服务模块开发
+- 第9-10天:
+ - 交易统计模块开发
+- 第11-12天:
+ - 运输跟踪模块开发
+- 第13-14天:
+ - 风险预警模块开发
+- 第15-16天:
+ - 生态指标模块开发
+- 第17-18天:
+ - 政府监管模块开发
+
+### 6.3 阶段三:集成测试与优化 (4天)
+- 第1天:
+ - 功能测试和Bug修复
+- 第2天:
+ - 性能优化(大数据量渲染优化)
+- 第3天:
+ - 视觉效果优化
+- 第4天:
+ - 响应式适配测试和部署准备
+
+## 7. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+- 多种分辨率适配测试
+- 实时数据推送功能专项测试
+- 大屏设备兼容性测试
+
+## 8. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
+- 大屏设备适配和部署指导
+- 实时数据推送服务监控
+- 性能监控和优化建议
+
+## 9. 风险与应对措施
+
+### 9.1 技术风险
+- **Vue 3与DataV兼容性问题**:
+ - 风险:DataV是为Vue 2设计的,在Vue 3中存在兼容性问题
+ - 应对:完全移除DataV依赖,使用原生Vue 3组件和ECharts实现可视化功能
+
+### 9.2 性能风险
+- **大数据量渲染性能问题**:
+ - 风险:大屏系统需要展示大量数据,可能导致页面卡顿
+ - 应对:采用虚拟滚动、数据分页、懒加载等技术优化性能
+
+### 9.3 数据风险
+- **实时数据推送稳定性问题**:
+ - 风险:WebSocket连接可能中断,导致数据更新不及时
+ - 应对:实现断线重连机制,提供数据手动刷新功能
+
+## 10. 验收标准
+
+- 所有功能模块按计划完成并正常运行
+- 系统能够在不同分辨率的大屏设备上正常显示
+- 实时数据推送功能稳定可靠
+- 系统响应时间小于2秒
+- 通过所有测试用例,包括功能测试、性能测试和兼容性测试
+- 用户界面美观,符合设计要求
+
+## 11. 自定义组件开发计划
+
+### 11.1 核心可视化组件 (3天)
+- 第1天:
+ - 开发全屏容器组件
+ - 实现基础边框组件
+- 第2天:
+ - 开发装饰线组件
+ - 实现动态数字组件
+- 第3天:
+ - 开发排名轮播组件
+ - 实现水球图组件
+
+### 11.2 布局组件 (2天)
+- 第1天:
+ - 开发栅格布局组件
+ - 实现响应式容器组件
+- 第2天:
+ - 开发卡片组件
+ - 实现折叠面板组件
+
+### 11.3 工具组件 (1天)
+- 第1天:
+ - 开发时间显示组件
+ - 实现加载状态组件
+ - 开发提示信息组件
+
+## 12. 性能优化策略
+
+### 12.1 前端性能优化
+- 使用虚拟滚动技术处理大量数据展示
+- 实施组件懒加载减少初始加载时间
+- 采用图片懒加载和压缩优化视觉效果
+- 利用localStorage缓存部分非敏感数据减少请求
+
+### 12.2 数据处理优化
+- 对大量数据进行分页处理
+- 实现数据缓存机制减少重复请求
+- 使用防抖和节流技术优化高频操作
+- 对复杂计算采用Web Worker处理
+
+### 12.3 网络优化
+- 实施WebSocket心跳机制保持连接稳定
+- 使用gzip压缩减少数据传输量
+- 实现请求合并减少网络请求次数
+- 设置合理的缓存策略提高响应速度
+
+## 13. 可视化设计规范
+
+### 13.1 色彩规范
+- 主色调:草原绿色系(#4CAF50, #8BC34A)
+- 辅助色:科技蓝(#2196F3)、警示红(#F44336)
+- 背景色:深灰(#1e1e1e)营造科技感
+- 文字色:白色(#FFFFFF)和浅灰(#E0E0E0)
+
+### 13.2 字体规范
+- 主要字体:Microsoft YaHei, sans-serif
+- 数字字体:DIN Pro(用于关键数据展示)
+- 字号规范:
+ - 标题:24-32px
+ - 正文:14-18px
+ - 辅助文字:12-14px
+ - 数据展示:16-24px
+
+### 13.3 图表规范
+- 使用ECharts作为主要图表库
+- 统一图表配色方案
+- 保持图表风格一致性
+- 提供图表交互功能(tooltip、legend等)
+
+## 14. 安全性考虑
+
+### 14.1 数据安全
+- 对敏感数据进行加密传输
+- 实施访问权限控制
+- 对用户操作进行日志记录
+
+### 14.2 网络安全
+- 使用HTTPS协议保障数据传输安全
+- 实施CSRF防护措施
+- 对输入数据进行验证和过滤
+
+### 14.3 系统安全
+- 定期更新依赖库修复安全漏洞
+- 实施CORS策略防止跨站攻击
+- 对WebSocket连接进行身份验证
\ No newline at end of file
diff --git a/docs/development_plans/farming_management_development_plan.md b/docs/development_plans/farming_management_development_plan.md
new file mode 100644
index 0000000..6c78ffd
--- /dev/null
+++ b/docs/development_plans/farming_management_development_plan.md
@@ -0,0 +1,91 @@
+# 养殖管理系统开发计划
+
+## 1. 系统概述
+
+养殖管理系统是整个平台的核心模块之一,主要用于管理牛只档案、饲养记录、繁殖信息和环境监测数据。系统采用Vue.js 3 + TypeScript + Ant Design Vue + Pinia技术栈。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3 Composition API
+- **UI组件库**: Ant Design Vue
+- **状态管理**: Pinia
+- **编程语言**: TypeScript
+- **构建工具**: Vite
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 牛只档案管理模块 (2周)
+- 第1周:
+ - 耳标二维码生成和管理功能
+ - 牛只基本信息录入和编辑界面
+ - 牛只照片上传功能
+- 第2周:
+ - 牛只全生命周期记录(出生、转栏、淘汰、死亡)
+ - 牛只档案查询和筛选功能
+ - 牛只档案导出功能
+
+### 3.2 饲养记录管理模块 (1周)
+- 第1周:
+ - 饲料库存管理功能
+ - 饲料库存预警机制
+ - 每日投喂量记录功能
+ - 投喂记录与牛群增重数据关联分析
+
+### 3.3 繁殖管理模块 (1周)
+- 第1周:
+ - 繁殖记录管理功能
+ - 基因谱系分析功能
+ - 产犊预测模型实现
+ - 繁殖数据统计报表
+
+### 3.4 环境监测模块 (1周)
+- 第1周:
+ - 物联网设备接入接口
+ - 棚舍温湿度数据展示
+ - 氨气浓度监测功能
+ - 异常环境自动告警机制
+
+## 4. 技术实现要点
+
+- 使用WebSocket实现实时数据推送
+- 采用ECharts实现数据可视化展示
+- 集成腾讯云存储服务用于图片和文件存储
+- 实现数据权限控制,确保数据安全
+- 使用Pinia进行状态管理,确保数据一致性
+- 实现响应式设计,适配不同屏幕尺寸
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (3天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (5天)
+- 牛只档案管理模块开发
+- 饲养记录管理模块开发
+- 繁殖管理模块开发
+- 环境监测模块开发
+
+### 5.3 阶段三:集成测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/farming_management_miniprogram_development_plan.md b/docs/development_plans/farming_management_miniprogram_development_plan.md
new file mode 100644
index 0000000..93b4aeb
--- /dev/null
+++ b/docs/development_plans/farming_management_miniprogram_development_plan.md
@@ -0,0 +1,84 @@
+# 养殖管理小程序开发计划
+
+## 1. 系统概述
+
+养殖管理小程序是面向牧民的微信小程序,提供牛只档案查看、饲养记录录入、健康状况上报等功能。使用微信小程序原生开发框架和uni-app跨平台支持。
+
+## 2. 技术架构
+
+- **开发框架**: 微信小程序原生开发框架
+- **跨平台支持**: uni-app
+- **状态管理**: Vuex(uni-app)/原生状态管理
+- **UI组件库**: WeUI / Vant Weapp
+- **构建工具**: 微信开发者工具
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Jest
+
+## 3. 功能模块详细计划
+
+### 3.1 牛只档案模块 (1天)
+- 第1天:
+ - 牛只档案查看功能
+ - 牛只信息查询功能
+ - 牛只照片展示
+
+### 3.2 饲养记录模块 (1天)
+- 第1天:
+ - 饲养记录录入功能
+ - 饲料投喂记录
+ - 饲料库存查看
+
+### 3.3 健康状况模块 (1天)
+- 第1天:
+ - 健康状况上报功能
+ - 异常情况报告
+ - 疫苗接种记录
+
+### 3.4 消息通知模块 (1天)
+- 第1天:
+ - 系统通知接收
+ - 预警信息推送
+ - 消息分类管理
+
+## 4. 技术实现要点
+
+- 优化移动端用户体验
+- 实现离线数据存储
+- 集成扫码功能用于耳标识别
+- 实现数据同步机制(在线/离线切换)
+- 使用本地存储提升访问速度
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (1天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (4天)
+- 牛只档案模块开发
+- 饲养记录模块开发
+- 健康状况模块开发
+- 消息通知模块开发
+
+### 5.3 阶段三:测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化(特别是离线存储性能)
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+- 离线功能专项测试
+
+## 7. 部署与运维
+
+- 通过微信开发者工具进行构建和发布
+- 支持灰度发布和版本管理
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/government_platform_development_plan.md b/docs/development_plans/government_platform_development_plan.md
new file mode 100644
index 0000000..94c45d0
--- /dev/null
+++ b/docs/development_plans/government_platform_development_plan.md
@@ -0,0 +1,80 @@
+# 政府监管平台开发计划
+
+## 1. 系统概述
+
+政府监管平台用于政府部门对养殖产业的数据监管、政策发布和合规性检查。系统采用Vue.js 3 + TypeScript + Ant Design Vue + Pinia技术栈。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3 Composition API
+- **UI组件库**: Ant Design Vue
+- **状态管理**: Pinia
+- **编程语言**: TypeScript
+- **构建工具**: Vite
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 数据监管模块 (2天)
+- 第1天:
+ - 产业数据总览界面
+ - 各类监管数据汇总展示
+- 第2天:
+ - 数据上报功能实现
+ - 监管检查记录管理
+
+### 3.2 政策管理模块 (2天)
+- 第1天:
+ - 政策发布功能
+ - 政策列表展示
+- 第2天:
+ - 政策解读功能
+ - 政策落实跟踪机制
+
+### 3.3 合规检查模块 (1天)
+- 第1天:
+ - 合规性检查功能
+ - 合规报告生成
+ - 整改任务跟踪机制
+
+## 4. 技术实现要点
+
+- 与内蒙古畜牧云平台对接实现数据同步
+- 实现数据权限分级管理
+- 采用数据可视化技术展示统计报表
+- 使用Pinia进行状态管理,确保数据一致性
+- 实现响应式设计,适配不同屏幕尺寸
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (2天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (3天)
+- 数据监管模块开发
+- 政策管理模块开发
+- 合规检查模块开发
+
+### 5.3 阶段三:集成测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/insurance_supervision_development_plan.md b/docs/development_plans/insurance_supervision_development_plan.md
new file mode 100644
index 0000000..c704ae8
--- /dev/null
+++ b/docs/development_plans/insurance_supervision_development_plan.md
@@ -0,0 +1,80 @@
+# 保险监管系统开发计划
+
+## 1. 系统概述
+
+保险监管系统用于保险公司对养殖户保险投保、理赔处理和风险评估管理。系统采用Vue.js 3 + TypeScript + Ant Design Vue + Pinia技术栈。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3 Composition API
+- **UI组件库**: Ant Design Vue
+- **状态管理**: Pinia
+- **编程语言**: TypeScript
+- **构建工具**: Vite
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 保险管理模块 (2天)
+- 第1天:
+ - 保险投保申请列表
+ - 保险产品信息展示
+- 第2天:
+ - 保单状态跟踪功能
+ - 保险记录查询功能
+
+### 3.2 理赔管理模块 (2天)
+- 第1天:
+ - 理赔申请提交功能
+ - 理赔申请列表展示
+- 第2天:
+ - 理赔审核流程实现
+ - 理赔进度查询功能
+
+### 3.3 风险预警模块 (1天)
+- 第1天:
+ - 养殖风险预警功能
+ - 高风险牛只标记机制
+ - 风险数据可视化展示
+
+## 4. 技术实现要点
+
+- 与保险系统API对接实现数据同步
+- 实现理赔流程的多级审核机制
+- 集成天气数据API实现天气指数保险功能
+- 使用Pinia进行状态管理,确保数据一致性
+- 实现响应式设计,适配不同屏幕尺寸
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (2天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (3天)
+- 保险管理模块开发
+- 理赔管理模块开发
+- 风险预警模块开发
+
+### 5.3 阶段三:集成测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/insurance_supervision_miniprogram_development_plan.md b/docs/development_plans/insurance_supervision_miniprogram_development_plan.md
new file mode 100644
index 0000000..d3f932f
--- /dev/null
+++ b/docs/development_plans/insurance_supervision_miniprogram_development_plan.md
@@ -0,0 +1,79 @@
+# 保险监管小程序开发计划
+
+## 1. 系统概述
+
+保险监管小程序是面向保险工作人员的微信小程序,提供保险处理、理赔管理、风险评估等功能。使用微信小程序原生开发框架和uni-app跨平台支持。
+
+## 2. 技术架构
+
+- **开发框架**: 微信小程序原生开发框架
+- **跨平台支持**: uni-app
+- **状态管理**: Vuex(uni-app)/原生状态管理
+- **UI组件库**: WeUI / Vant Weapp
+- **构建工具**: 微信开发者工具
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Jest
+
+## 3. 功能模块详细计划
+
+### 3.1 保险处理模块 (1天)
+- 第1天:
+ - 保险投保处理
+ - 保单信息查看
+ - 保单状态跟踪
+
+### 3.2 理赔管理模块 (2天)
+- 第1天:
+ - 理赔申请处理
+ - 理赔材料审核
+- 第2天:
+ - 理赔进度跟踪
+ - 理赔结果通知
+
+### 3.3 风险评估模块 (1天)
+- 第1天:
+ - 风险数据查看
+ - 风险评估报告
+ - 风险等级划分
+
+## 4. 技术实现要点
+
+- 实现移动端查勘功能
+- 集成图片上传功能
+- 确保数据传输安全
+- 支持离线填写理赔信息
+- 实现多媒体内容展示
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (1天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (3天)
+- 保险处理模块开发
+- 理赔管理模块开发
+- 风险评估模块开发
+
+### 5.3 阶段三:测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+- 图片上传和处理功能专项测试
+
+## 7. 部署与运维
+
+- 通过微信开发者工具进行构建和发布
+- 支持灰度发布和版本管理
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/development_plans/mall_management_development_plan.md b/docs/development_plans/mall_management_development_plan.md
new file mode 100644
index 0000000..e630ccd
--- /dev/null
+++ b/docs/development_plans/mall_management_development_plan.md
@@ -0,0 +1,85 @@
+# 商城管理系统开发计划
+
+## 1. 系统概述
+
+商城管理系统用于牛肉及相关产品的在线销售管理,包括商品信息、库存、订单和物流管理。系统采用Vue.js 3 + TypeScript + Ant Design Vue + Pinia技术栈。
+
+## 2. 技术架构
+
+- **前端框架**: Vue.js 3 Composition API
+- **UI组件库**: Ant Design Vue
+- **状态管理**: Pinia
+- **编程语言**: TypeScript
+- **构建工具**: Vite
+- **代码规范**: ESLint + Prettier
+- **单元测试**: Vitest
+
+## 3. 功能模块详细计划
+
+### 3.1 商品管理模块 (2天)
+- 第1天:
+ - 商品信息管理功能
+ - 商品分类管理
+- 第2天:
+ - 商品上架和下架功能
+ - 商品详情编辑功能
+
+### 3.2 库存管理模块 (1天)
+- 第1天:
+ - 库存数量管理
+ - 库存预警机制
+
+### 3.3 订单管理模块 (2天)
+- 第1天:
+ - 订单列表展示
+ - 订单详情查看
+- 第2天:
+ - 订单状态管理
+ - 订单处理流程
+
+### 3.4 物流管理模块 (1天)
+- 第1天:
+ - 物流信息跟踪功能
+ - 物流状态更新机制
+
+## 4. 技术实现要点
+
+- 集成物流API实现物流跟踪
+- 实现促销活动管理功能
+- 采用消息队列处理订单异步任务
+- 使用Pinia进行状态管理,确保数据一致性
+- 实现响应式设计,适配不同屏幕尺寸
+
+## 5. 开发阶段规划
+
+### 5.1 阶段一:基础框架搭建 (2天)
+- 项目初始化和环境配置
+- 基础组件和布局搭建
+- 路由配置和导航菜单实现
+- UI组件库集成和基础样式设置
+
+### 5.2 阶段二:核心功能开发 (4天)
+- 商品管理模块开发
+- 库存管理模块开发
+- 订单管理模块开发
+- 物流管理模块开发
+
+### 5.3 阶段三:集成测试与优化 (2天)
+- 功能测试和Bug修复
+- 性能优化
+- 用户体验优化
+- 代码审查和文档完善
+
+## 6. 质量保障措施
+
+- 单元测试覆盖率达到80%以上
+- 代码审查机制确保代码质量
+- 自动化测试保障功能稳定性
+- 性能测试确保系统响应速度(<2秒)
+
+## 7. 部署与运维
+
+- 支持Docker容器化部署
+- 支持云平台部署
+- 日志收集和分析
+- 系统监控和告警机制
\ No newline at end of file
diff --git a/docs/requirements/AI_CAPABILITIES_REQUIREMENTS.md b/docs/requirements/AI_CAPABILITIES_REQUIREMENTS.md
new file mode 100644
index 0000000..6633282
--- /dev/null
+++ b/docs/requirements/AI_CAPABILITIES_REQUIREMENTS.md
@@ -0,0 +1,76 @@
+# AI能力系统详细需求文档
+
+## 1. 系统概述
+
+AI能力系统是锡林郭勒盟地区养殖产业平台的智能化支撑系统,主要用于提供各类人工智能服务,包括模型训练、算法配置、体况评估、配方推荐等功能。该系统通过AI技术提升养殖效率和管理水平。
+
+## 2. 功能需求
+
+### 2.1 模型训练
+- **训练数据版本管理**:管理模型训练数据的版本
+- **模型性能监控看板**:提供模型性能监控看板
+- **模型训练任务管理**:管理模型训练任务
+- **模型评估和优化**:对模型进行评估和优化
+
+### 2.2 算法配置
+- **评分阈值调整**:调整算法评分阈值
+- **配方优化权重设置**:设置配方优化算法权重
+- **算法参数配置**:配置算法相关参数
+- **算法效果评估**:评估算法效果
+
+### 2.3 体况评估
+- **多角度拍照引导**:引导用户从多角度拍照
+- **评分历史对比**:对比历史评分数据
+- **体况趋势分析**:分析体况变化趋势
+- **改善建议推送**:推送体况改善建议
+
+### 2.4 配方推荐
+- **原料库存联动**:与原料库存数据联动
+- **成本估算模拟**:模拟不同配方的成本
+- **配方优化建议**:提供配方优化建议
+- **饲喂效果跟踪**:跟踪饲喂效果
+
+### 2.5 智能诊断
+- **症状描述引导**:引导用户描述症状
+- **疾病概率预测**:预测疾病发生概率
+- **治疗方案推荐**:推荐治疗方案
+- **就医指导建议**:提供就医指导建议
+
+## 3. 用户角色与权限
+
+### 3.1 AI系统管理员
+- 可以管理模型和算法
+- 可以配置算法参数
+- 可以查看模型性能监控
+- 可以管理训练数据
+
+### 3.2 养殖户
+- 可以使用体况评估功能
+- 可以使用配方推荐功能
+- 可以使用智能诊断功能
+- 可以查看相关建议和报告
+
+### 3.3 兽医
+- 可以使用智能诊断功能
+- 可以查看疾病预测结果
+- 可以查看治疗方案推荐
+- 可以提供专业诊断意见
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 图像识别响应时间不超过2秒
+- 算法计算响应时间不超过1秒
+- 系统支持50+并发AI服务调用
+
+### 4.2 安全需求
+- 模型数据安全保护
+- 用户隐私数据保护
+- 操作日志记录和审计
+- 算法使用权限控制
+
+### 4.3 可用性需求
+- 提供友好的AI服务使用界面
+- 提供详细的操作指引和帮助文档
+- 支持移动端操作
+- 提供准确的AI分析结果
\ No newline at end of file
diff --git a/docs/requirements/DATA_PLATFORM_REQUIREMENTS.md b/docs/requirements/DATA_PLATFORM_REQUIREMENTS.md
new file mode 100644
index 0000000..1d6e1d6
--- /dev/null
+++ b/docs/requirements/DATA_PLATFORM_REQUIREMENTS.md
@@ -0,0 +1,63 @@
+# 数据中台系统详细需求文档
+
+## 1. 系统概述
+
+数据中台系统是锡林郭勒盟地区养殖产业平台的数据管理中心,主要用于整合各业务系统的数据,提供数据资产管理、数据共享、数据分析等功能。该系统为各业务系统提供统一的数据服务,支持数据驱动的决策分析。
+
+## 2. 功能需求
+
+### 2.1 数据资产管理
+- **数据血缘关系可视化**:可视化展示数据的来源和流转关系
+- **敏感字段自动标记**:自动识别和标记敏感数据字段
+- **数据质量监控**:监控数据质量并生成报告
+- **数据标准管理**:管理数据标准和规范
+
+### 2.2 数据共享管理
+- **数据接口调用审计**:审计数据接口的调用情况
+- **脱敏策略配置**:配置数据脱敏策略
+- **数据访问权限管理**:管理数据访问权限
+- **数据服务目录管理**:管理数据服务目录
+
+### 2.3 数据分析管理
+- **分析模型管理**:管理数据分析模型
+- **数据挖掘任务配置**:配置数据挖掘任务
+- **分析报告模板管理**:管理分析报告模板
+- **可视化图表配置**:配置数据可视化图表
+
+## 3. 用户角色与权限
+
+### 3.1 数据管理员
+- 可以管理数据资产
+- 可以配置数据共享策略
+- 可以管理数据分析模型
+- 可以查看数据质量报告
+
+### 3.2 数据分析师
+- 可以使用数据服务
+- 可以配置数据分析任务
+- 可以查看分析报告
+- 可以配置可视化图表
+
+### 3.3 业务系统管理员
+- 可以申请数据接口访问权限
+- 可以查看数据使用情况
+- 可以查看相关分析报告
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 数据查询响应时间不超过1秒
+- 数据同步延迟不超过5分钟
+- 系统支持100+并发数据服务调用
+
+### 4.2 安全需求
+- 数据传输加密
+- 敏感数据脱敏处理
+- 操作日志记录和审计
+- 访问权限控制
+
+### 4.3 可用性需求
+- 提供友好的数据服务管理界面
+- 提供详细的操作指引和帮助文档
+- 支持API方式访问数据服务
+- 提供数据质量监控和告警功能
\ No newline at end of file
diff --git a/docs/requirements/FARMING_MANAGEMENT_REQUIREMENTS.md b/docs/requirements/FARMING_MANAGEMENT_REQUIREMENTS.md
new file mode 100644
index 0000000..d28f2d4
--- /dev/null
+++ b/docs/requirements/FARMING_MANAGEMENT_REQUIREMENTS.md
@@ -0,0 +1,74 @@
+# 养殖管理系统详细需求文档
+
+## 1. 系统概述
+
+养殖管理系统是锡林郭勒盟地区养殖产业平台的重要组成部分,主要用于管理牛只档案、饲喂记录、环境监测和繁殖管理等核心养殖业务。通过该系统,养殖户和监管人员可以全面掌握牛只的生长状况和养殖环境情况。
+
+## 2. 功能需求
+
+### 2.1 牛只档案管理
+- **耳标二维码生成与打印**:为每只牛生成唯一标识二维码,支持打印功能
+- **疫苗接种计划自动提醒**:根据预设计划自动提醒接种时间
+- **牛只生命周期记录管理**:记录牛只的出生、转栏、淘汰、死亡等全生命周期事件
+- **牛只照片和视频资料管理**:支持上传和管理牛只的照片和视频资料
+
+### 2.2 饲喂管理
+- **饲料库存多维度分析**:按仓库、品种等维度分析饲料库存情况
+- **投喂量异常波动预警**:当投喂量出现异常波动时自动发出预警
+- **饲料消耗统计和成本分析**:统计饲料消耗情况并进行成本分析
+- **饲喂计划制定和执行跟踪**:制定饲喂计划并跟踪执行情况
+
+### 2.3 环境监测
+- **物联网设备状态监控**:实时监控各类环境监测设备的运行状态
+- **历史环境数据趋势分析**:分析历史环境数据的变化趋势
+- **环境异常自动告警**:当环境数据异常时通过短信/邮件自动告警
+- **环境数据报表生成**:自动生成环境数据统计报表
+
+### 2.4 繁殖管理
+- **繁殖计划制定和跟踪**:制定繁殖计划并跟踪执行情况
+- **配种记录管理**:记录配种相关信息
+- **妊娠检查记录**:记录妊娠检查结果
+- **分娩记录管理**:记录分娩相关信息
+- **犊牛档案自动生成**:分娩后自动生成犊牛档案
+
+### 2.5 健康监测
+- **疾病记录管理**:记录牛只疾病相关信息
+- **免疫记录管理**:记录牛只免疫相关信息
+- **药物使用记录**:记录药物使用情况
+- **健康状况统计分析**:对牛只健康状况进行统计分析
+
+## 3. 用户角色与权限
+
+### 3.1 养殖户
+- 可以查看和管理自己名下的牛只档案
+- 可以录入饲喂记录和环境数据
+- 可以查看繁殖计划和记录
+- 可以录入健康相关信息
+
+### 3.2 养殖场管理员
+- 拥有养殖户的所有权限
+- 可以查看和管理整个养殖场的牛只信息
+- 可以配置饲喂计划和繁殖计划
+- 可以查看和分析统计数据
+
+### 3.3 政府监管员
+- 可以查看辖区内所有养殖场的养殖数据
+- 可以查看和审核养殖场提交的各类记录
+- 可以查看统计数据和分析报告
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 页面响应时间不超过2秒
+- 数据查询响应时间不超过500ms
+- 支持同时管理10000+头牛只的数据
+
+### 4.2 安全需求
+- 牛只信息访问权限控制
+- 操作日志记录和审计
+- 数据传输加密
+
+### 4.3 可用性需求
+- 界面简洁易用,符合养殖户操作习惯
+- 提供详细的操作指引和帮助文档
+- 支持移动端操作
\ No newline at end of file
diff --git a/docs/requirements/FINANCIAL_SERVICES_REQUIREMENTS.md b/docs/requirements/FINANCIAL_SERVICES_REQUIREMENTS.md
new file mode 100644
index 0000000..4871ad9
--- /dev/null
+++ b/docs/requirements/FINANCIAL_SERVICES_REQUIREMENTS.md
@@ -0,0 +1,75 @@
+# 金融服务系统详细需求文档
+
+## 1. 系统概述
+
+金融服务系统是锡林郭勒盟地区养殖产业平台的重要组成部分,主要包括贷款服务和保险服务两大模块。该系统为养殖户提供便捷的金融支持,为银行和保险公司提供高效的业务管理平台。
+
+## 2. 功能需求
+
+### 2.1 贷款管理
+- **多级审批流程配置**:支持配置多级贷款审批流程
+- **还款计划自动生成**:根据贷款金额和期限自动生成还款计划
+- **贷款合同模板管理**:提供贷款合同模板的管理和维护功能
+- **贷款风险评估模型配置**:支持配置贷款风险评估模型
+- **贷款逾期提醒和催收管理**:自动提醒逾期贷款并支持催收管理
+
+### 2.2 保险管理
+- **保单模板自定义**:支持自定义保险保单模板
+- **理赔材料智能预审**:对理赔材料进行智能预审
+- **保险产品管理**:管理各类保险产品信息
+- **保险费率配置**:配置不同保险产品的费率
+- **理赔进度跟踪**:跟踪理赔处理进度
+
+### 2.3 风控管理
+- **风险评估模型管理**:管理各类风险评估模型
+- **风险预警规则配置**:配置风险预警规则
+- **风险事件记录和分析**:记录和分析风险事件
+- **风险报告生成**:自动生成风险分析报告
+
+## 3. 用户角色与权限
+
+### 3.1 养殖户
+- 可以提交贷款申请
+- 可以查看贷款审批进度
+- 可以查看还款计划
+- 可以提交保险投保申请
+- 可以查看保单信息和理赔进度
+
+### 3.2 银行信贷员
+- 可以查看贷款申请
+- 可以进行贷款审批操作
+- 可以查看贷款合同
+- 可以查看还款记录
+- 可以进行催收管理
+
+### 3.3 保险专员
+- 可以查看保险投保申请
+- 可以进行保险审批操作
+- 可以查看保单信息
+- 可以处理理赔申请
+- 可以查看理赔进度
+
+### 3.4 风控管理员
+- 可以配置风险评估模型
+- 可以配置风险预警规则
+- 可以查看风险事件记录
+- 可以查看风险分析报告
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 贷款审批流程处理时间不超过1个工作日
+- 保险理赔处理时间不超过3个工作日
+- 系统支持100+并发用户同时操作
+
+### 4.2 安全需求
+- 金融数据传输加密(国密SM4)
+- 敏感字段脱敏处理
+- 操作日志审计跟踪
+- 用户身份认证和权限控制
+
+### 4.3 可用性需求
+- 界面设计符合金融行业规范
+- 提供详细的操作指引和帮助文档
+- 支持移动端操作
+- 提供数据统计和分析功能
\ No newline at end of file
diff --git a/docs/requirements/GOVERNMENT_SUPERVISION_REQUIREMENTS.md b/docs/requirements/GOVERNMENT_SUPERVISION_REQUIREMENTS.md
new file mode 100644
index 0000000..ef66273
--- /dev/null
+++ b/docs/requirements/GOVERNMENT_SUPERVISION_REQUIREMENTS.md
@@ -0,0 +1,69 @@
+# 政府监管系统详细需求文档
+
+## 1. 系统概述
+
+政府监管系统是锡林郭勒盟地区养殖产业平台的核心组成部分,主要用于政府相关部门对养殖产业进行监管和管理。该系统集成了防疫监管、补贴管理、用户管理等功能,为政府提供全面的监管工具。
+
+## 2. 功能需求
+
+### 2.1 防疫监管
+- **防疫任务派发与跟踪**:向下级单位派发防疫任务并跟踪执行情况
+- **检疫证明电子验签**:支持检疫证明的电子验签功能
+- **疫苗使用记录管理**:记录和管理疫苗使用情况
+- **疫病监测和报告**:监测疫病发生情况并生成报告
+
+### 2.2 补贴管理
+- **补贴规则动态配置**:支持动态配置各类补贴规则
+- **资金发放电子回执**:生成资金发放的电子回执
+- **补贴申请审核**:审核养殖户提交的补贴申请
+- **补贴发放记录查询**:查询历史补贴发放记录
+
+### 2.3 用户管理
+- **用户信息维护**:对系统用户进行增删改查操作
+- **角色权限分配**:为用户分配相应的角色和权限
+- **组织架构管理**:管理系统的组织架构信息
+- **用户状态管理**:管理用户的状态(启用/禁用)
+
+### 2.4 系统配置
+- **参数配置管理**:管理系统各类参数配置
+- **字典数据维护**:维护系统字典数据
+- **系统日志查看**:查看系统操作日志
+- **政策信息发布和管理**:发布和管理相关政策信息
+
+## 3. 用户角色与权限
+
+### 3.1 超级管理员
+- 拥有系统的全部权限
+- 可以管理所有用户和角色
+- 可以配置系统参数和字典数据
+- 可以查看所有系统日志
+
+### 3.2 政府监管员
+- 可以查看和管理防疫监管数据
+- 可以审核补贴申请
+- 可以查看政策信息
+- 可以生成监管报表
+
+### 3.3 下级监管人员
+- 可以执行具体的防疫任务
+- 可以录入防疫相关数据
+- 可以查看相关政策信息
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 系统支持1000+并发用户访问
+- 数据查询响应时间不超过500ms
+- 报表生成时间不超过10秒
+
+### 4.2 安全需求
+- 用户身份认证和权限控制
+- 操作日志记录和审计
+- 数据传输加密
+- 符合政府信息安全规范
+
+### 4.3 可用性需求
+- 界面设计符合政府办公系统规范
+- 提供详细的操作指引和帮助文档
+- 支持多级审批流程
+- 提供数据统计和分析功能
\ No newline at end of file
diff --git a/docs/requirements/MALL_MANAGEMENT_REQUIREMENTS.md b/docs/requirements/MALL_MANAGEMENT_REQUIREMENTS.md
new file mode 100644
index 0000000..ec16073
--- /dev/null
+++ b/docs/requirements/MALL_MANAGEMENT_REQUIREMENTS.md
@@ -0,0 +1,70 @@
+# 商城管理系统详细需求文档
+
+## 1. 系统概述
+
+商城管理系统是锡林郭勒盟地区养殖产业平台的重要组成部分,主要用于牛肉及相关产品的在线销售。该系统为消费者提供商品浏览、下单购买、支付等服务,为商家提供商品管理、订单处理、库存管理等功能。
+
+## 2. 功能需求
+
+### 2.1 商品管理
+- **商品信息维护**:维护商品基本信息
+- **商品分类管理**:管理商品分类信息
+- **商品属性配置**:配置商品属性信息
+- **商品审核管理**:审核商家提交的商品信息
+
+### 2.2 订单管理
+- **订单状态跟踪**:跟踪订单处理状态
+- **订单异常处理**:处理异常订单
+- **退换货处理**:处理退换货申请
+- **订单统计分析**:统计和分析订单数据
+
+### 2.3 库存管理
+- **库存预警设置**:设置库存预警阈值
+- **库存调拨管理**:管理库存调拨操作
+- **盘点记录管理**:记录库存盘点信息
+- **库存成本核算**:核算库存成本
+
+### 2.4 营销管理
+- **促销活动管理**:管理各类促销活动
+- **优惠券管理**:管理优惠券信息
+- **积分规则配置**:配置积分规则
+- **广告位管理**:管理广告位信息
+
+## 3. 用户角色与权限
+
+### 3.1 商城管理员
+- 可以管理商品信息
+- 可以处理订单
+- 可以管理库存
+- 可以配置营销活动
+
+### 3.2 商家
+- 可以发布和管理商品信息
+- 可以处理订单
+- 可以管理库存
+- 可以参与营销活动
+
+### 3.3 消费者
+- 可以浏览商品
+- 可以下单购买
+- 可以查看订单状态
+- 可以参与营销活动
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 商品浏览响应时间不超过1秒
+- 订单处理响应时间不超过1秒
+- 系统支持1000+并发用户同时访问
+
+### 4.2 安全需求
+- 支付数据传输加密
+- 用户信息保护
+- 操作日志记录和审计
+- 防止恶意刷单行为
+
+### 4.3 可用性需求
+- 界面设计符合电商平台规范
+- 提供详细的操作指引和帮助文档
+- 支持移动端操作
+- 提供数据统计和分析功能
\ No newline at end of file
diff --git a/docs/requirements/MARKET_TRADING_REQUIREMENTS.md b/docs/requirements/MARKET_TRADING_REQUIREMENTS.md
new file mode 100644
index 0000000..960a440
--- /dev/null
+++ b/docs/requirements/MARKET_TRADING_REQUIREMENTS.md
@@ -0,0 +1,67 @@
+# 市场交易系统详细需求文档
+
+## 1. 系统概述
+
+市场交易系统是锡林郭勒盟地区养殖产业平台的重要组成部分,主要用于活牛交易和相关市场服务。该系统为买卖双方提供在线交易平台,支持活牛信息发布、在线交易撮合、合同管理等功能。
+
+## 2. 功能需求
+
+### 2.1 交易管理
+- **保证金冻结/释放操作**:支持交易保证金的冻结和释放操作
+- **纠纷仲裁记录**:记录和管理交易纠纷仲裁信息
+- **交易合同模板管理**:管理交易合同模板
+- **交易规则配置**:配置交易相关规则
+
+### 2.2 行情管理
+- **价格数据人工校准**:支持人工校准价格数据
+- **行情报告自动生成**:自动生成行情分析报告
+- **价格指数计算和发布**:计算并发布价格指数
+- **市场趋势分析**:分析市场趋势并生成报告
+
+### 2.3 商户管理
+- **商户资质审核**:审核商户资质信息
+- **商户信用评级**:对商户进行信用评级
+- **商户交易统计**:统计商户交易数据
+- **商户违规处理**:处理商户违规行为
+
+## 3. 用户角色与权限
+
+### 3.1 交易管理员
+- 可以管理交易规则和合同模板
+- 可以处理交易纠纷
+- 可以查看和分析交易数据
+- 可以管理商户信息
+
+### 3.2 商户
+- 可以发布活牛交易信息
+- 可以查看交易行情
+- 可以参与在线交易
+- 可以查看交易合同和记录
+
+### 3.3 普通用户
+- 可以查看交易信息和行情
+- 可以关注感兴趣的交易
+
+### 3.4 政府监管员
+- 可以查看交易数据
+- 可以监督交易过程
+- 可以处理违规交易
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 交易撮合响应时间不超过1秒
+- 行情数据更新延迟不超过5秒
+- 系统支持500+并发用户同时交易
+
+### 4.2 安全需求
+- 交易数据传输加密
+- 资金操作安全保护
+- 操作日志记录和审计
+- 防止交易欺诈行为
+
+### 4.3 可用性需求
+- 界面设计符合电商平台规范
+- 提供详细的操作指引和帮助文档
+- 支持移动端操作
+- 提供数据统计和分析功能
\ No newline at end of file
diff --git a/docs/requirements/SYSTEM_INTEGRATION_REQUIREMENTS.md b/docs/requirements/SYSTEM_INTEGRATION_REQUIREMENTS.md
new file mode 100644
index 0000000..4b22aa4
--- /dev/null
+++ b/docs/requirements/SYSTEM_INTEGRATION_REQUIREMENTS.md
@@ -0,0 +1,151 @@
+# 系统集成需求文档
+
+## 1. 系统概述
+
+系统集成是锡林郭勒盟地区养殖产业平台的重要组成部分,主要用于实现平台与外部系统的数据交换和业务协同。通过系统集成,平台可以与银行系统、政府监管平台、第三方系统、物联网设备和云服务等进行有效对接。
+
+## 2. 集成需求
+
+### 2.1 银行系统对接
+- **数据接口**:
+ - 贷款申请状态实时同步
+ - 还款记录自动对账
+ - 质押物状态实时更新
+ - 风险评估数据共享
+- **安全规范**:
+ - 金融数据传输加密(国密SM4)
+ - 敏感字段脱敏处理
+ - 接口访问权限控制
+ - 操作日志审计跟踪
+- **用户权限**:
+ - 银行用户权限同步
+ - 跨系统操作权限控制
+ - 银行内部系统集成
+
+### 2.2 政府监管平台对接
+- **数据交换**:
+ - 防疫数据自动上报(JSON格式)
+ - 补贴名单批量导入
+ - 监管报表自动推送
+ - 政策信息实时同步
+- **协议规范**:
+ - 基于HTTPS的双向认证
+ - 数据签名验签机制
+ - 数据格式标准化
+ - 接口调用频率限制
+- **权限集成**:
+ - 政府用户身份互认
+ - 跨平台权限映射
+ - 统一权限管理接口
+ - 政府内部系统集成
+
+### 2.3 第三方系统集成
+- **认证集成**:
+ - 支持LDAP/AD集成
+ - OAuth2.0认证集成
+ - CAS单点登录集成
+ - 微信认证集成
+- **权限同步**:
+ - 外部系统角色映射
+ - 权限变更实时同步
+ - 用户状态统一管理
+ - 组织架构同步
+- **数据共享**:
+ - 标准化API接口
+ - 数据访问权限控制
+ - 数据使用审计跟踪
+ - 数据质量保障机制
+
+### 2.4 物联网设备集成
+- **设备接入**:
+ - 传感器设备接入协议(MQTT/CoAP)
+ - 设备状态监控和管理
+ - 设备故障告警机制
+ - 设备固件远程升级
+- **数据采集**:
+ - 实时数据采集和处理
+ - 数据质量检测和清洗
+ - 异常数据识别和处理
+ - 数据存储和备份
+
+### 2.5 云服务集成
+- **对象存储**:
+ - 腾讯云COS集成
+ - 文件上传和下载
+ - 存储空间管理和监控
+ - 访问权限控制
+- **消息服务**:
+ - 短信服务集成
+ - 邮件服务集成
+ - 推送通知服务
+ - 消息模板管理
+
+## 3. 集成架构
+
+### 3.1 集成方式
+- API接口集成
+- 消息队列集成
+- 文件传输集成
+- 数据库同步集成
+
+### 3.2 集成协议
+- RESTful API
+- SOAP
+- MQTT
+- FTP/SFTP
+
+### 3.3 数据格式
+- JSON
+- XML
+- CSV
+- 二进制数据
+
+## 4. 安全要求
+
+### 4.1 认证与授权
+- 支持多种认证方式(API Key、OAuth2.0、JWT等)
+- 实现细粒度权限控制
+- 支持角色和权限映射
+
+### 4.2 数据安全
+- 敏感数据传输加密
+- 数据存储加密
+- 数据脱敏处理
+- 数据完整性保护
+
+### 4.3 通信安全
+- HTTPS加密传输
+- 支持双向SSL认证
+- 防止重放攻击
+- 防止中间人攻击
+
+## 5. 性能要求
+
+### 5.1 响应时间
+- API接口响应时间不超过1秒
+- 批量数据处理时间不超过10分钟
+- 实时数据传输延迟不超过5秒
+
+### 5.2 并发处理
+- 支持1000+并发接口调用
+- 支持100+并发数据同步任务
+- 支持50+并发文件传输
+
+### 5.3 可靠性
+- 接口可用性达到99.9%
+- 数据传输成功率99.9%
+- 支持故障自动恢复
+
+## 6. 监控与运维
+
+### 6.1 监控要求
+- 接口调用监控
+- 数据传输监控
+- 错误日志监控
+- 性能指标监控
+
+### 6.2 运维要求
+- 支持灰度发布
+- 支持版本管理
+- 支持配置管理
+- 支持故障排查
\ No newline at end of file
diff --git a/docs/requirements/SYSTEM_REQUIREMENTS.md b/docs/requirements/SYSTEM_REQUIREMENTS.md
new file mode 100644
index 0000000..5b52186
--- /dev/null
+++ b/docs/requirements/SYSTEM_REQUIREMENTS.md
@@ -0,0 +1,120 @@
+# 系统需求文档
+
+## 1. 项目概述
+
+### 1.1 项目名称
+xlxumu - 锡林郭勒盟地区养殖产业平台
+
+### 1.2 项目背景
+本项目是面向锡林郭勒盟地区养殖产业的综合性数字化管理平台。通过整合物联网、大数据分析等现代信息技术,构建覆盖养殖、监管、交易、运输、销售全链条的数字化管理体系,提升畜牧业管理效率和透明度。
+
+### 1.3 项目目标
+- 构建完整的畜牧业数字化管理生态系统
+- 实现养殖过程可视化、监管实时化、交易透明化
+- 提升产业链协同效率
+- 促进锡林郭勒盟安格斯牛品牌建设
+
+## 2. 非功能需求
+
+### 2.1 性能需求
+- 首页加载时间不超过2秒
+- 后台管理系统页面切换响应时间不超过1秒
+- 支持1000+并发用户访问
+- 实时数据更新延迟不超过5秒
+- API接口响应时间不超过500ms
+- 大文件上传速度不低于1MB/s
+- 数据库查询响应时间不超过200ms
+
+### 2.2 兼容性需求
+- 官网首页兼容所有主流浏览器(Chrome、Firefox、Safari、Edge)
+- 后台管理系统支持Chrome、Firefox、Safari、Edge最新版本
+- 微信小程序符合微信平台规范(基础库版本2.0以上)
+- 移动端适配iOS 12+和Android 8.0+系统
+- 支持不同分辨率屏幕(1366x768至4K)
+- 支持横向和纵向屏幕显示
+
+### 2.3 安全需求
+- 用户密码加密存储(BCrypt等)
+- JWT Token安全传输
+- 敏感数据传输加密(HTTPS)
+- 防止SQL注入和XSS攻击
+- CSRF防护机制
+- API接口限流和防护
+- 数据备份和恢复机制
+- 定期安全漏洞扫描
+- 用户操作日志审计
+
+### 2.4 可用性需求
+- 系统全年可用性达到99.9%
+- 提供友好的错误提示信息
+- 实现异常处理和恢复机制
+- 支持多端数据同步
+- 提供系统维护窗口通知
+- 支持故障自动切换
+- 提供健康检查接口
+
+### 2.5 可维护性需求
+- 微服务架构设计,降低模块间耦合
+- 完善的日志记录和监控
+- 支持灰度发布和热更新
+- 容器化部署支持
+- 配置文件与代码分离
+- 自动化测试覆盖率达到80%以上
+- 提供完善的API文档
+
+### 2.6 可扩展性需求
+- 支持水平扩展和垂直扩展
+- 模块化设计,支持功能插件化
+- 数据库支持分库分表
+- 支持多语言扩展
+- 支持多主题扩展
+- 支持第三方服务集成
+
+### 2.7 国际化需求
+- 支持中英文切换
+- 支持蒙古语显示
+- 日期时间格式本地化
+- 数字和货币格式本地化
+- 文本方向适配(LTR/RTL)
+
+## 3. 用户界面需求
+
+### 3.1 设计风格
+- 突出锡林郭勒盟草原绿色主题
+- 融入蒙古族文化元素
+- 简洁、现代的设计风格
+- 统一的色彩搭配方案
+- 一致的图标和按钮风格
+- 清晰的信息层级结构
+
+### 3.2 响应式设计
+- 支持PC端大屏显示(1920x1080及以上)
+- 适配平板设备(768x1024至1024x1366)
+- 支持手机端浏览(320x480至414x896)
+- 自适应不同分辨率
+- 支持横竖屏切换
+- 触控友好设计
+
+### 3.3 交互体验
+- 提供操作反馈(加载状态、成功/失败提示)
+- 实现页面过渡动画
+- 支持键盘快捷操作
+- 提供搜索和筛选功能
+- 支持拖拽操作
+- 提供撤销/重做功能
+- 支持多选操作
+
+### 3.4 可访问性需求
+- 支持屏幕阅读器
+- 提供高对比度模式
+- 支持键盘导航
+- 图片提供alt文本
+- 视频提供字幕
+- 表单提供标签关联
+
+### 3.5 移动端适配
+- 手势操作支持(滑动、缩放等)
+- 移动端专用控件(底部导航、浮动按钮等)
+- 离线功能支持
+- 推送通知集成
+- 设备传感器集成(摄像头、GPS等)
\ No newline at end of file
diff --git a/docs/requirements/ai_app_requirements.md b/docs/requirements/ai_app_requirements.md
new file mode 100644
index 0000000..87355e0
--- /dev/null
+++ b/docs/requirements/ai_app_requirements.md
@@ -0,0 +1,64 @@
+# AI能力小程序需求文档
+
+## 1. 系统概述
+
+AI能力小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向希望通过人工智能技术提升养殖效率和管理水平的用户。通过该小程序,用户可以进行牛只体况评估、获取饲料配方推荐和使用智能诊断功能。
+
+## 2. 功能需求
+
+### 2.1 体况评估
+- **多角度拍照引导**:引导用户从多个角度拍摄牛只照片
+- **评分历史对比**:对比历史体况评分数据
+- **体况趋势分析**:分析牛只体况变化趋势
+- **改善建议推送**:推送体况改善建议
+
+### 2.2 配方推荐
+- **原料库存联动**:与原料库存数据联动
+- **成本估算模拟**:模拟不同配方的成本
+- **配方优化建议**:提供配方优化建议
+- **饲喂效果跟踪**:跟踪饲喂效果
+
+### 2.3 智能诊断
+- **症状描述引导**:引导用户描述牛只症状
+- **疾病概率预测**:预测可能的疾病及其概率
+- **治疗方案推荐**:推荐相应的治疗方案
+- **就医指导建议**:提供就医指导建议
+
+## 3. 用户角色与权限
+
+### 3.1 养殖户
+- 可以使用体况评估功能
+- 可以使用配方推荐功能
+- 可以使用智能诊断功能
+
+### 3.2 兽医
+- 可以使用智能诊断功能
+- 可以查看疾病预测结果
+- 可以查看治疗方案推荐
+- 可以提供专业诊断意见
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 图像识别响应时间不超过2秒
+- 算法计算响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+- 支持摄像头功能
+
+### 4.3 安全需求
+- 用户信息保护
+- 图片数据安全处理
+- 数据传输加密
+- 符合微信小程序安全规范
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 操作流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/docs/requirements/dashboard_requirements.md b/docs/requirements/dashboard_requirements.md
new file mode 100644
index 0000000..4f884f3
--- /dev/null
+++ b/docs/requirements/dashboard_requirements.md
@@ -0,0 +1,158 @@
+# 大屏可视化系统需求文档
+
+## 1. 系统概述
+
+大屏可视化系统是锡林郭勒盟安格斯牛养殖产业平台的重要组成部分,主要用于展示锡林郭勒盟地区安格斯牛养殖产业的整体数据、实时监控信息和分析结果。通过直观的图表和数据可视化方式,为管理者提供全面的产业洞察,支持决策制定。
+
+## 2. 功能需求
+
+### 2.1 产业概览模块
+- **整体产业规模展示**:展示牛只总数、牧场数量等关键指标
+- **产值和增长率关键指标**:展示年度产值、增长率趋势图
+- **数据可视化图表**:通过饼图展示品种分布、柱状图展示区域分布
+- **实时数据更新机制**:通过WebSocket实现数据实时更新
+- **数据钻取功能**:支持点击图表查看详细数据
+- **多维度数据展示**:支持按时间、区域、品种等维度筛选
+
+### 2.2 养殖监控模块
+- **各牧场养殖情况展示**:通过地图展示各牧场位置和规模
+- **环境数据实时监控**:展示温湿度、氨气浓度等传感器数据
+- **异常情况告警展示**:展示环境异常、健康异常等告警信息
+- **历史数据趋势分析**:展示环境数据历史趋势图
+- **牛只健康状态监控**:展示健康、亚健康、患病牛只数量统计
+- **饲养记录统计**:展示饲料消耗、投喂量趋势
+
+### 2.3 金融服务模块
+- **贷款统计展示**:展示贷款申请数、放款总额、还款情况
+- **保险统计展示**:展示投保数量、保费总额、理赔情况
+- **风险数据展示**:展示高风险贷款、理赔率高的牧场等
+- **金融服务趋势分析**:展示贷款和保险业务增长趋势
+
+### 2.4 交易统计模块
+- **牛只交易量统计**:展示日交易量、月交易量、年度交易量
+- **价格趋势和区域分布展示**:展示价格热力图、区域价格对比
+- **交易类型分析**:分析活牛交易、牛肉制品销售等
+- **交易排行榜**:展示热门牧场、活跃交易员等
+
+### 2.5 运输跟踪模块
+- **牛只运输实时状态展示**:展示运输路线、当前位置、预计到达时间
+- **运输车辆监控**:展示车辆状态、司机信息等
+- **运输异常告警**:展示延误、偏离路线等异常情况
+- **运输效率分析**:展示运输时间、成本等统计
+
+### 2.6 风险预警模块
+- **风险事件展示**:展示疫病风险、市场风险、自然灾害风险等
+- **预警信息推送和展示**:分类展示不同级别预警
+- **风险趋势分析**:展示各类风险的历史趋势和预测
+- **风险地图**:按区域展示风险分布
+
+### 2.7 生态指标模块
+- **环保数据展示**:展示碳排放、水资源使用、饲料消耗等
+- **可持续发展指标展示**:展示草畜平衡、生态效益等
+- **环保趋势分析**:展示环保指标的历史变化趋势
+- **生态效益评估**:展示经济效益与生态效益的平衡分析
+
+### 2.8 政府监管模块
+- **监管数据总览**:展示防疫完成率、补贴发放情况等
+- **合规性检查结果展示**:展示合规牧场比例、违规事件统计等
+- **政策执行效果分析**:展示政策实施后的数据变化
+- **监管报告生成和展示**:展示自动生成的监管报告可视化
+
+## 3. 用户角色与权限
+
+### 3.1 政府监管人员
+- 可以查看所有模块的数据和图表
+- 可以导出数据报告
+- 可以配置部分展示参数
+
+### 3.2 系统管理员
+- 拥有所有功能权限
+- 可以配置系统参数
+- 可以管理用户权限
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 系统响应时间小于2秒
+- 数据更新延迟不超过5秒
+- 支持同时展示多个数据图表
+- 大数据量渲染优化,确保流畅显示
+
+### 4.2 兼容性需求
+- 支持多种大屏比例(16:9, 4:3等)
+- 适配不同分辨率的大屏设备
+- 支持主流浏览器(Chrome、Firefox、Safari、Edge)
+
+### 4.3 安全需求
+- 用户身份认证和权限控制
+- 数据传输加密(HTTPS)
+- 操作日志记录和审计
+- 防止SQL注入和XSS攻击
+
+### 4.4 可用性需求
+- 系统全年可用性达到99.9%
+- 提供友好的错误提示信息
+- 实现异常处理和恢复机制
+- 支持全屏显示模式
+
+### 4.5 可维护性需求
+- 微服务架构设计,降低模块间耦合
+- 完善的日志记录和监控
+- 支持配置文件与代码分离
+- 提供完善的API文档
+
+## 5. 技术要求
+
+### 5.1 前端技术栈
+- **框架**:Vue.js 3
+- **可视化库**:ECharts
+- **构建工具**:Vite
+- **状态管理**:Pinia
+- **响应式设计**:支持多种大屏比例
+
+### 5.2 实时数据
+- **数据推送**:WebSocket实时数据推送
+- **数据更新**:支持实时、定时和手动刷新
+
+### 5.3 设计规范
+- **主题风格**:深色科技风格背景
+- **色彩搭配**:草原绿色系为主,科技蓝为辅
+- **字体规范**:清晰易读的字体设计
+- **布局结构**:合理的数据展示区域分布
+
+## 6. 数据接口需求
+
+### 6.1 养殖管理相关接口
+- 牛只档案数据接口(获取牛只总数、品种分布等)
+- 环境监测数据接口(获取实时环境数据)
+- 饲养记录数据接口(获取饲料消耗、投喂量等数据)
+
+### 6.2 金融服务相关接口
+- 贷款申请数据接口(获取贷款申请数、放款总额等)
+- 保险保单数据接口(获取投保数量、保费总额等)
+- 理赔数据接口(获取理赔情况)
+
+### 6.3 交易相关接口
+- 活牛交易数据接口(获取交易量、价格等数据)
+- 商城订单数据接口(获取销售数据、热门商品等)
+
+### 6.4 政府监管相关接口
+- 防疫数据接口(获取防疫完成率等数据)
+- 补贴发放数据接口(获取补贴发放情况)
+
+### 6.5 数据分析相关接口
+- 预警信息接口(获取各类风险预警信息)
+- 分析报告接口(获取各类分析报告数据)
+
+## 7. 部署要求
+
+### 7.1 部署环境
+- 支持Docker容器化部署
+- 支持云平台部署
+- 支持本地服务器部署
+
+### 7.2 监控需求
+- 实现系统运行状态监控
+- 提供性能监控指标
+- 支持异常告警功能
+- 日志收集和分析
\ No newline at end of file
diff --git a/docs/requirements/data_platform_app_requirements.md b/docs/requirements/data_platform_app_requirements.md
new file mode 100644
index 0000000..8d10ee7
--- /dev/null
+++ b/docs/requirements/data_platform_app_requirements.md
@@ -0,0 +1,54 @@
+# 数据中台小程序需求文档
+
+## 1. 系统概述
+
+数据中台小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向需要查询和使用平台数据的各类用户。通过该小程序,用户可以方便地查询养殖档案、申请数据导出、查看统计报表和使用数据共享服务。
+
+## 2. 功能需求
+
+### 2.1 数据查询
+- **养殖档案模糊搜索**:通过关键词模糊搜索养殖档案
+- **数据导出申请提交**:提交数据导出申请
+- **统计报表查看**:查看各类统计报表
+- **数据趋势分析**:查看数据趋势分析结果
+
+### 2.2 共享服务
+- **接口调用记录查询**:查询已调用的数据接口记录
+- **数据使用报告生成**:生成数据使用情况报告
+- **数据申请审批**:审批数据使用申请
+- **数据服务目录浏览**:浏览可用的数据服务目录
+
+## 3. 用户角色与权限
+
+### 3.1 数据使用人员
+- 可以查询和申请所需数据
+- 可以查看统计报表和分析结果
+
+### 3.2 数据管理人员
+- 可以审批数据使用申请
+- 可以管理数据服务目录
+- 可以查看数据使用情况报告
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 接口调用响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+
+### 4.3 安全需求
+- 用户信息保护
+- 数据传输加密
+- 敏感数据脱敏处理
+- 符合微信小程序安全规范
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 操作流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/docs/requirements/farming_app_requirements.md b/docs/requirements/farming_app_requirements.md
new file mode 100644
index 0000000..5915ff9
--- /dev/null
+++ b/docs/requirements/farming_app_requirements.md
@@ -0,0 +1,67 @@
+# 养殖户小程序需求文档
+
+## 1. 系统概述
+
+养殖户小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向参与养殖的牧民用户。通过该小程序,养殖户可以随时随地管理牛只档案、记录饲喂情况、监控环境数据、管理繁殖信息和跟踪牛只健康状况。
+
+## 2. 功能需求
+
+### 2.1 档案管理
+- **耳标扫码快速建档**:通过扫描耳标二维码快速创建牛只档案
+- **疫苗记录拍照上传**:拍照上传疫苗接种记录
+- **牛只照片和视频上传**:上传牛只的照片和视频资料
+- **档案信息查看和更新**:查看和更新牛只档案信息
+
+### 2.2 饲喂助手
+- **库存不足推送提醒**:当饲料库存不足时推送提醒消息
+- **投喂量快捷登记**:快速登记每日投喂量
+- **饲喂计划查看**:查看饲喂计划
+- **饲料消耗统计**:统计饲料消耗情况
+
+### 2.3 环境监控
+- **棚舍实时数据图表**:以图表形式展示棚舍实时环境数据
+- **异常环境震动提醒**:当环境数据异常时通过震动提醒用户
+- **环境历史数据查询**:查询历史环境数据
+- **环境趋势分析**:分析环境数据变化趋势
+
+### 2.4 繁殖管理
+- **配种计划提醒**:提醒用户配种计划
+- **妊娠检查记录**:记录妊娠检查信息
+- **分娩信息登记**:登记分娩相关信息
+- **犊牛信息录入**:录入新生犊牛信息
+
+### 2.5 健康管理
+- **疾病症状记录**:记录牛只疾病症状
+- **用药记录登记**:登记用药记录
+- **免疫计划提醒**:提醒用户免疫计划
+- **健康状况查询**:查询牛只健康状况
+
+## 3. 用户角色与权限
+
+### 3.1 养殖户
+- 可以使用小程序的所有功能
+- 可以查看和管理自己名下的牛只信息
+- 可以接收系统推送的通知和提醒
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 接口调用响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+
+### 4.3 安全需求
+- 用户信息保护
+- 数据传输加密
+- 符合微信小程序安全规范
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 操作流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/docs/requirements/finance_app_requirements.md b/docs/requirements/finance_app_requirements.md
new file mode 100644
index 0000000..e12b4d1
--- /dev/null
+++ b/docs/requirements/finance_app_requirements.md
@@ -0,0 +1,64 @@
+# 金融服务小程序需求文档
+
+## 1. 系统概述
+
+金融服务小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向需要贷款和保险服务的养殖户以及银行、保险公司的工作人员。通过该小程序,用户可以便捷地申请贷款、投保保险、查看进度和处理相关业务。
+
+## 2. 功能需求
+
+### 2.1 贷款服务
+- **申请材料手机拍摄**:通过手机拍照上传贷款申请材料
+- **电子合同在线签署**:在线签署电子贷款合同
+- **贷款进度实时查询**:实时查询贷款申请进度
+- **还款计划查看**:查看贷款还款计划
+- **还款提醒设置**:设置还款提醒功能
+
+### 2.2 保险服务
+- **灾害预警消息订阅**:订阅灾害预警消息
+- **理赔进度实时推送**:实时推送理赔进度信息
+- **保险产品浏览**:浏览可投保的保险产品
+- **在线投保申请**:在线提交投保申请
+- **保单信息查询**:查询保单详细信息
+
+## 3. 用户角色与权限
+
+### 3.1 养殖户
+- 可以提交贷款申请
+- 可以查看贷款进度和还款计划
+- 可以投保保险和查看保单信息
+- 可以查看理赔进度
+
+### 3.2 银行工作人员
+- 可以处理贷款审批业务
+- 可以查看相关贷款数据
+- 可以与客户进行业务沟通
+
+### 3.3 保险工作人员
+- 可以处理保险投保和理赔业务
+- 可以查看相关保险数据
+- 可以与客户进行业务沟通
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 接口调用响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+
+### 4.3 安全需求
+- 用户信息保护
+- 支付安全保护
+- 数据传输加密
+- 符合微信小程序安全规范
+- 金融数据传输加密(国密SM4)
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 操作流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/docs/requirements/gov_app_requirements.md b/docs/requirements/gov_app_requirements.md
new file mode 100644
index 0000000..2271e7a
--- /dev/null
+++ b/docs/requirements/gov_app_requirements.md
@@ -0,0 +1,56 @@
+# 政府监管小程序需求文档
+
+## 1. 系统概述
+
+政府监管小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向政府相关部门的监管人员。通过该小程序,监管人员可以随时随地执行防疫任务、处理补贴申请、查看政策信息和进行相关监管工作。
+
+## 2. 功能需求
+
+### 2.1 防疫助手
+- **免疫记录GPS定位**:记录免疫操作时的GPS位置信息
+- **检疫证明手机亮证**:通过手机展示检疫证明
+- **疫苗使用记录**:记录疫苗使用情况
+- **疫病上报功能**:上报发现的疫病情况
+
+### 2.2 补贴服务
+- **申领条件智能匹配**:智能匹配用户是否符合补贴申领条件
+- **到账短信自动触发**:补贴到账后自动发送短信通知
+- **补贴申请进度查询**:查询补贴申请处理进度
+- **补贴政策查看**:查看相关补贴政策信息
+
+### 2.3 政策资讯
+- **最新政策推送**:推送最新发布的政策信息
+- **政策解读查看**:查看政策解读内容
+- **通知公告浏览**:浏览相关通知公告
+- **政策咨询反馈**:提交政策咨询和反馈意见
+
+## 3. 用户角色与权限
+
+### 3.1 政府监管人员
+- 可以使用小程序的所有功能
+- 可以查看和处理辖区内的监管业务
+- 可以接收系统推送的通知和提醒
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 接口调用响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+
+### 4.3 安全需求
+- 用户信息保护
+- 数据传输加密
+- 符合微信小程序安全规范
+- 政府数据安全保护
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 操作流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/docs/requirements/mall_app_requirements.md b/docs/requirements/mall_app_requirements.md
new file mode 100644
index 0000000..fbac65b
--- /dev/null
+++ b/docs/requirements/mall_app_requirements.md
@@ -0,0 +1,63 @@
+# 牛肉商城小程序需求文档
+
+## 1. 系统概述
+
+牛肉商城小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向购买牛肉及相关产品的消费者。通过该小程序,用户可以方便地浏览商品、下单购买、查看订单和参与牛只认养等活动。
+
+## 2. 功能需求
+
+### 2.1 商品浏览
+- **商品分类浏览**:按分类浏览商品
+- **商品详情查看**:查看商品详细信息
+- **商品评价查看**:查看其他用户对商品的评价
+- **商品搜索和筛选**:通过关键词搜索和条件筛选商品
+
+### 2.2 购物功能
+- **商品加入购物车**:将商品加入购物车
+- **在线下单和支付**:在线提交订单并通过微信支付
+- **优惠券使用**:在下单时使用优惠券
+- **积分抵扣**:使用积分抵扣部分订单金额
+
+### 2.3 订单服务
+- **订单查询和跟踪**:查询订单状态并跟踪物流信息
+- **售后服务申请**:申请售后服务
+- **退换货处理**:处理退换货申请
+- **订单评价**:对已完成的订单进行评价
+
+### 2.4 认养服务
+- **牛只认养申请**:申请认养特定牛只
+- **认养进度跟踪**:跟踪认养牛只的成长进度
+- **成长过程查看**:查看认养牛只的成长过程记录
+- **认养收益分享**:分享认养收益相关信息
+
+## 3. 用户角色与权限
+
+### 3.1 消费者
+- 可以浏览商品和下单购买
+- 可以查看和管理自己的订单
+- 可以参与牛只认养活动
+- 可以使用优惠券和积分
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 支付接口调用响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+
+### 4.3 安全需求
+- 用户信息保护
+- 支付安全保护
+- 数据传输加密
+- 符合微信小程序安全规范
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 购物流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/docs/requirements/trading_app_requirements.md b/docs/requirements/trading_app_requirements.md
new file mode 100644
index 0000000..c7d0056
--- /dev/null
+++ b/docs/requirements/trading_app_requirements.md
@@ -0,0 +1,57 @@
+# 市场交易小程序需求文档
+
+## 1. 系统概述
+
+市场交易小程序是锡林郭勒盟地区养殖产业平台在微信生态中的重要组成部分,主要面向参与活牛交易的交易员和商户。通过该小程序,用户可以方便地参与活牛交易、查看行情信息、管理交易订单和跟踪交易状态。
+
+## 2. 功能需求
+
+### 2.1 交易中心
+- **出价记录实时刷新**:实时刷新出价记录信息
+- **保证金微信支付**:通过微信支付交易保证金
+- **交易合同查看**:查看交易合同详情
+- **交易状态跟踪**:跟踪交易状态变化
+
+### 2.2 行情工具
+- **价格走势收藏夹**:收藏关注的价格走势信息
+- **区域价差地图模式**:以地图形式展示区域价格差异
+- **价格预警设置**:设置价格预警条件
+- **行情资讯浏览**:浏览最新的行情资讯
+
+### 2.3 订单管理
+- **订单状态查看**:查看订单当前状态
+- **物流信息跟踪**:跟踪订单物流信息
+- **退换货申请**:提交退换货申请
+- **评价和反馈**:对交易进行评价和反馈
+
+## 3. 用户角色与权限
+
+### 3.1 交易员
+- 可以使用小程序的所有功能
+- 可以参与活牛交易和查看交易信息
+- 可以管理自己的交易订单
+
+## 4. 非功能需求
+
+### 4.1 性能需求
+- 小程序页面加载时间不超过3秒
+- 接口调用响应时间不超过1秒
+- 符合微信小程序性能规范
+
+### 4.2 兼容性需求
+- 支持微信最新版本
+- 兼容iOS和Android系统
+- 适配不同屏幕尺寸
+
+### 4.3 安全需求
+- 用户信息保护
+- 支付安全保护
+- 数据传输加密
+- 符合微信小程序安全规范
+- 交易数据安全保护
+
+### 4.4 可用性需求
+- 界面设计符合微信小程序设计规范
+- 操作流程简洁明了
+- 提供操作指引和帮助信息
+- 支持离线部分功能
\ No newline at end of file
diff --git a/frontend/dashboard/node_modules/.vite/deps/echarts.js b/frontend/dashboard/node_modules/.vite/deps/echarts.js
new file mode 100644
index 0000000..c5f8135
--- /dev/null
+++ b/frontend/dashboard/node_modules/.vite/deps/echarts.js
@@ -0,0 +1,73670 @@
+import {
+ __export
+} from "./chunk-HUBM7RA2.js";
+
+// node_modules/tslib/tslib.es6.js
+var extendStatics = function(d, b) {
+ extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) {
+ d2.__proto__ = b2;
+ } || function(d2, b2) {
+ for (var p in b2)
+ if (Object.prototype.hasOwnProperty.call(b2, p))
+ d2[p] = b2[p];
+ };
+ return extendStatics(d, b);
+};
+function __extends(d, b) {
+ if (typeof b !== "function" && b !== null)
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
+ extendStatics(d, b);
+ function __() {
+ this.constructor = d;
+ }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+
+// node_modules/zrender/lib/zrender.js
+var zrender_exports = {};
+__export(zrender_exports, {
+ dispose: () => dispose,
+ disposeAll: () => disposeAll,
+ getElementSSRData: () => getElementSSRData,
+ getInstance: () => getInstance,
+ init: () => init,
+ registerPainter: () => registerPainter,
+ registerSSRDataGetter: () => registerSSRDataGetter,
+ version: () => version
+});
+
+// node_modules/zrender/lib/core/env.js
+var Browser = function() {
+ function Browser2() {
+ this.firefox = false;
+ this.ie = false;
+ this.edge = false;
+ this.newEdge = false;
+ this.weChat = false;
+ }
+ return Browser2;
+}();
+var Env = function() {
+ function Env2() {
+ this.browser = new Browser();
+ this.node = false;
+ this.wxa = false;
+ this.worker = false;
+ this.svgSupported = false;
+ this.touchEventsSupported = false;
+ this.pointerEventsSupported = false;
+ this.domSupported = false;
+ this.transformSupported = false;
+ this.transform3dSupported = false;
+ this.hasGlobalWindow = typeof window !== "undefined";
+ }
+ return Env2;
+}();
+var env = new Env();
+if (typeof wx === "object" && typeof wx.getSystemInfoSync === "function") {
+ env.wxa = true;
+ env.touchEventsSupported = true;
+} else if (typeof document === "undefined" && typeof self !== "undefined") {
+ env.worker = true;
+} else if (!env.hasGlobalWindow || "Deno" in window) {
+ env.node = true;
+ env.svgSupported = true;
+} else {
+ detect(navigator.userAgent, env);
+}
+function detect(ua, env2) {
+ var browser = env2.browser;
+ var firefox = ua.match(/Firefox\/([\d.]+)/);
+ var ie = ua.match(/MSIE\s([\d.]+)/) || ua.match(/Trident\/.+?rv:(([\d.]+))/);
+ var edge = ua.match(/Edge?\/([\d.]+)/);
+ var weChat = /micromessenger/i.test(ua);
+ if (firefox) {
+ browser.firefox = true;
+ browser.version = firefox[1];
+ }
+ if (ie) {
+ browser.ie = true;
+ browser.version = ie[1];
+ }
+ if (edge) {
+ browser.edge = true;
+ browser.version = edge[1];
+ browser.newEdge = +edge[1].split(".")[0] > 18;
+ }
+ if (weChat) {
+ browser.weChat = true;
+ }
+ env2.svgSupported = typeof SVGRect !== "undefined";
+ env2.touchEventsSupported = "ontouchstart" in window && !browser.ie && !browser.edge;
+ env2.pointerEventsSupported = "onpointerdown" in window && (browser.edge || browser.ie && +browser.version >= 11);
+ env2.domSupported = typeof document !== "undefined";
+ var style = document.documentElement.style;
+ env2.transform3dSupported = (browser.ie && "transition" in style || browser.edge || "WebKitCSSMatrix" in window && "m11" in new WebKitCSSMatrix() || "MozPerspective" in style) && !("OTransition" in style);
+ env2.transformSupported = env2.transform3dSupported || browser.ie && +browser.version >= 9;
+}
+var env_default = env;
+
+// node_modules/zrender/lib/core/util.js
+var util_exports = {};
+__export(util_exports, {
+ HashMap: () => HashMap,
+ RADIAN_TO_DEGREE: () => RADIAN_TO_DEGREE,
+ assert: () => assert,
+ bind: () => bind,
+ clone: () => clone,
+ concatArray: () => concatArray,
+ createCanvas: () => createCanvas,
+ createHashMap: () => createHashMap,
+ createObject: () => createObject,
+ curry: () => curry,
+ defaults: () => defaults,
+ disableUserSelect: () => disableUserSelect,
+ each: () => each,
+ eqNaN: () => eqNaN,
+ extend: () => extend,
+ filter: () => filter,
+ find: () => find,
+ guid: () => guid,
+ hasOwn: () => hasOwn,
+ indexOf: () => indexOf,
+ inherits: () => inherits,
+ isArray: () => isArray,
+ isArrayLike: () => isArrayLike,
+ isBuiltInObject: () => isBuiltInObject,
+ isDom: () => isDom,
+ isFunction: () => isFunction,
+ isGradientObject: () => isGradientObject,
+ isImagePatternObject: () => isImagePatternObject,
+ isNumber: () => isNumber,
+ isObject: () => isObject,
+ isPrimitive: () => isPrimitive,
+ isRegExp: () => isRegExp,
+ isString: () => isString,
+ isStringSafe: () => isStringSafe,
+ isTypedArray: () => isTypedArray,
+ keys: () => keys,
+ logError: () => logError,
+ map: () => map,
+ merge: () => merge,
+ mergeAll: () => mergeAll,
+ mixin: () => mixin,
+ noop: () => noop,
+ normalizeCssArray: () => normalizeCssArray,
+ reduce: () => reduce,
+ retrieve: () => retrieve,
+ retrieve2: () => retrieve2,
+ retrieve3: () => retrieve3,
+ setAsPrimitive: () => setAsPrimitive,
+ slice: () => slice,
+ trim: () => trim
+});
+
+// node_modules/zrender/lib/core/platform.js
+var DEFAULT_FONT_SIZE = 12;
+var DEFAULT_FONT_FAMILY = "sans-serif";
+var DEFAULT_FONT = DEFAULT_FONT_SIZE + "px " + DEFAULT_FONT_FAMILY;
+var OFFSET = 20;
+var SCALE = 100;
+var defaultWidthMapStr = "007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";
+function getTextWidthMap(mapStr) {
+ var map3 = {};
+ if (typeof JSON === "undefined") {
+ return map3;
+ }
+ for (var i = 0; i < mapStr.length; i++) {
+ var char = String.fromCharCode(i + 32);
+ var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE;
+ map3[char] = size;
+ }
+ return map3;
+}
+var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr);
+var platformApi = {
+ createCanvas: function() {
+ return typeof document !== "undefined" && document.createElement("canvas");
+ },
+ measureText: function() {
+ var _ctx;
+ var _cachedFont;
+ return function(text, font) {
+ if (!_ctx) {
+ var canvas = platformApi.createCanvas();
+ _ctx = canvas && canvas.getContext("2d");
+ }
+ if (_ctx) {
+ if (_cachedFont !== font) {
+ _cachedFont = _ctx.font = font || DEFAULT_FONT;
+ }
+ return _ctx.measureText(text);
+ } else {
+ text = text || "";
+ font = font || DEFAULT_FONT;
+ var res = /((?:\d+)?\.?\d*)px/.exec(font);
+ var fontSize = res && +res[1] || DEFAULT_FONT_SIZE;
+ var width = 0;
+ if (font.indexOf("mono") >= 0) {
+ width = fontSize * text.length;
+ } else {
+ for (var i = 0; i < text.length; i++) {
+ var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]];
+ width += preCalcWidth == null ? fontSize : preCalcWidth * fontSize;
+ }
+ }
+ return { width };
+ }
+ };
+ }(),
+ loadImage: function(src, onload, onerror) {
+ var image = new Image();
+ image.onload = onload;
+ image.onerror = onerror;
+ image.src = src;
+ return image;
+ }
+};
+function setPlatformAPI(newPlatformApis) {
+ for (var key in platformApi) {
+ if (newPlatformApis[key]) {
+ platformApi[key] = newPlatformApis[key];
+ }
+ }
+}
+
+// node_modules/zrender/lib/core/util.js
+var BUILTIN_OBJECT = reduce([
+ "Function",
+ "RegExp",
+ "Date",
+ "Error",
+ "CanvasGradient",
+ "CanvasPattern",
+ "Image",
+ "Canvas"
+], function(obj, val) {
+ obj["[object " + val + "]"] = true;
+ return obj;
+}, {});
+var TYPED_ARRAY = reduce([
+ "Int8",
+ "Uint8",
+ "Uint8Clamped",
+ "Int16",
+ "Uint16",
+ "Int32",
+ "Uint32",
+ "Float32",
+ "Float64"
+], function(obj, val) {
+ obj["[object " + val + "Array]"] = true;
+ return obj;
+}, {});
+var objToString = Object.prototype.toString;
+var arrayProto = Array.prototype;
+var nativeForEach = arrayProto.forEach;
+var nativeFilter = arrayProto.filter;
+var nativeSlice = arrayProto.slice;
+var nativeMap = arrayProto.map;
+var ctorFunction = function() {
+}.constructor;
+var protoFunction = ctorFunction ? ctorFunction.prototype : null;
+var protoKey = "__proto__";
+var idStart = 2311;
+function guid() {
+ return idStart++;
+}
+function logError() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (typeof console !== "undefined") {
+ console.error.apply(console, args);
+ }
+}
+function clone(source) {
+ if (source == null || typeof source !== "object") {
+ return source;
+ }
+ var result = source;
+ var typeStr = objToString.call(source);
+ if (typeStr === "[object Array]") {
+ if (!isPrimitive(source)) {
+ result = [];
+ for (var i = 0, len2 = source.length; i < len2; i++) {
+ result[i] = clone(source[i]);
+ }
+ }
+ } else if (TYPED_ARRAY[typeStr]) {
+ if (!isPrimitive(source)) {
+ var Ctor = source.constructor;
+ if (Ctor.from) {
+ result = Ctor.from(source);
+ } else {
+ result = new Ctor(source.length);
+ for (var i = 0, len2 = source.length; i < len2; i++) {
+ result[i] = source[i];
+ }
+ }
+ }
+ } else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {
+ result = {};
+ for (var key in source) {
+ if (source.hasOwnProperty(key) && key !== protoKey) {
+ result[key] = clone(source[key]);
+ }
+ }
+ }
+ return result;
+}
+function merge(target, source, overwrite) {
+ if (!isObject(source) || !isObject(target)) {
+ return overwrite ? clone(source) : target;
+ }
+ for (var key in source) {
+ if (source.hasOwnProperty(key) && key !== protoKey) {
+ var targetProp = target[key];
+ var sourceProp = source[key];
+ if (isObject(sourceProp) && isObject(targetProp) && !isArray(sourceProp) && !isArray(targetProp) && !isDom(sourceProp) && !isDom(targetProp) && !isBuiltInObject(sourceProp) && !isBuiltInObject(targetProp) && !isPrimitive(sourceProp) && !isPrimitive(targetProp)) {
+ merge(targetProp, sourceProp, overwrite);
+ } else if (overwrite || !(key in target)) {
+ target[key] = clone(source[key]);
+ }
+ }
+ }
+ return target;
+}
+function mergeAll(targetAndSources, overwrite) {
+ var result = targetAndSources[0];
+ for (var i = 1, len2 = targetAndSources.length; i < len2; i++) {
+ result = merge(result, targetAndSources[i], overwrite);
+ }
+ return result;
+}
+function extend(target, source) {
+ if (Object.assign) {
+ Object.assign(target, source);
+ } else {
+ for (var key in source) {
+ if (source.hasOwnProperty(key) && key !== protoKey) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+}
+function defaults(target, source, overlay) {
+ var keysArr = keys(source);
+ for (var i = 0, len2 = keysArr.length; i < len2; i++) {
+ var key = keysArr[i];
+ if (overlay ? source[key] != null : target[key] == null) {
+ target[key] = source[key];
+ }
+ }
+ return target;
+}
+var createCanvas = platformApi.createCanvas;
+function indexOf(array, value) {
+ if (array) {
+ if (array.indexOf) {
+ return array.indexOf(value);
+ }
+ for (var i = 0, len2 = array.length; i < len2; i++) {
+ if (array[i] === value) {
+ return i;
+ }
+ }
+ }
+ return -1;
+}
+function inherits(clazz, baseClazz) {
+ var clazzPrototype = clazz.prototype;
+ function F() {
+ }
+ F.prototype = baseClazz.prototype;
+ clazz.prototype = new F();
+ for (var prop in clazzPrototype) {
+ if (clazzPrototype.hasOwnProperty(prop)) {
+ clazz.prototype[prop] = clazzPrototype[prop];
+ }
+ }
+ clazz.prototype.constructor = clazz;
+ clazz.superClass = baseClazz;
+}
+function mixin(target, source, override) {
+ target = "prototype" in target ? target.prototype : target;
+ source = "prototype" in source ? source.prototype : source;
+ if (Object.getOwnPropertyNames) {
+ var keyList = Object.getOwnPropertyNames(source);
+ for (var i = 0; i < keyList.length; i++) {
+ var key = keyList[i];
+ if (key !== "constructor") {
+ if (override ? source[key] != null : target[key] == null) {
+ target[key] = source[key];
+ }
+ }
+ }
+ } else {
+ defaults(target, source, override);
+ }
+}
+function isArrayLike(data) {
+ if (!data) {
+ return false;
+ }
+ if (typeof data === "string") {
+ return false;
+ }
+ return typeof data.length === "number";
+}
+function each(arr, cb, context) {
+ if (!(arr && cb)) {
+ return;
+ }
+ if (arr.forEach && arr.forEach === nativeForEach) {
+ arr.forEach(cb, context);
+ } else if (arr.length === +arr.length) {
+ for (var i = 0, len2 = arr.length; i < len2; i++) {
+ cb.call(context, arr[i], i, arr);
+ }
+ } else {
+ for (var key in arr) {
+ if (arr.hasOwnProperty(key)) {
+ cb.call(context, arr[key], key, arr);
+ }
+ }
+ }
+}
+function map(arr, cb, context) {
+ if (!arr) {
+ return [];
+ }
+ if (!cb) {
+ return slice(arr);
+ }
+ if (arr.map && arr.map === nativeMap) {
+ return arr.map(cb, context);
+ } else {
+ var result = [];
+ for (var i = 0, len2 = arr.length; i < len2; i++) {
+ result.push(cb.call(context, arr[i], i, arr));
+ }
+ return result;
+ }
+}
+function reduce(arr, cb, memo, context) {
+ if (!(arr && cb)) {
+ return;
+ }
+ for (var i = 0, len2 = arr.length; i < len2; i++) {
+ memo = cb.call(context, memo, arr[i], i, arr);
+ }
+ return memo;
+}
+function filter(arr, cb, context) {
+ if (!arr) {
+ return [];
+ }
+ if (!cb) {
+ return slice(arr);
+ }
+ if (arr.filter && arr.filter === nativeFilter) {
+ return arr.filter(cb, context);
+ } else {
+ var result = [];
+ for (var i = 0, len2 = arr.length; i < len2; i++) {
+ if (cb.call(context, arr[i], i, arr)) {
+ result.push(arr[i]);
+ }
+ }
+ return result;
+ }
+}
+function find(arr, cb, context) {
+ if (!(arr && cb)) {
+ return;
+ }
+ for (var i = 0, len2 = arr.length; i < len2; i++) {
+ if (cb.call(context, arr[i], i, arr)) {
+ return arr[i];
+ }
+ }
+}
+function keys(obj) {
+ if (!obj) {
+ return [];
+ }
+ if (Object.keys) {
+ return Object.keys(obj);
+ }
+ var keyList = [];
+ for (var key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ keyList.push(key);
+ }
+ }
+ return keyList;
+}
+function bindPolyfill(func, context) {
+ var args = [];
+ for (var _i = 2; _i < arguments.length; _i++) {
+ args[_i - 2] = arguments[_i];
+ }
+ return function() {
+ return func.apply(context, args.concat(nativeSlice.call(arguments)));
+ };
+}
+var bind = protoFunction && isFunction(protoFunction.bind) ? protoFunction.call.bind(protoFunction.bind) : bindPolyfill;
+function curry(func) {
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ return function() {
+ return func.apply(this, args.concat(nativeSlice.call(arguments)));
+ };
+}
+function isArray(value) {
+ if (Array.isArray) {
+ return Array.isArray(value);
+ }
+ return objToString.call(value) === "[object Array]";
+}
+function isFunction(value) {
+ return typeof value === "function";
+}
+function isString(value) {
+ return typeof value === "string";
+}
+function isStringSafe(value) {
+ return objToString.call(value) === "[object String]";
+}
+function isNumber(value) {
+ return typeof value === "number";
+}
+function isObject(value) {
+ var type = typeof value;
+ return type === "function" || !!value && type === "object";
+}
+function isBuiltInObject(value) {
+ return !!BUILTIN_OBJECT[objToString.call(value)];
+}
+function isTypedArray(value) {
+ return !!TYPED_ARRAY[objToString.call(value)];
+}
+function isDom(value) {
+ return typeof value === "object" && typeof value.nodeType === "number" && typeof value.ownerDocument === "object";
+}
+function isGradientObject(value) {
+ return value.colorStops != null;
+}
+function isImagePatternObject(value) {
+ return value.image != null;
+}
+function isRegExp(value) {
+ return objToString.call(value) === "[object RegExp]";
+}
+function eqNaN(value) {
+ return value !== value;
+}
+function retrieve() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ for (var i = 0, len2 = args.length; i < len2; i++) {
+ if (args[i] != null) {
+ return args[i];
+ }
+ }
+}
+function retrieve2(value0, value1) {
+ return value0 != null ? value0 : value1;
+}
+function retrieve3(value0, value1, value2) {
+ return value0 != null ? value0 : value1 != null ? value1 : value2;
+}
+function slice(arr) {
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ return nativeSlice.apply(arr, args);
+}
+function normalizeCssArray(val) {
+ if (typeof val === "number") {
+ return [val, val, val, val];
+ }
+ var len2 = val.length;
+ if (len2 === 2) {
+ return [val[0], val[1], val[0], val[1]];
+ } else if (len2 === 3) {
+ return [val[0], val[1], val[2], val[1]];
+ }
+ return val;
+}
+function assert(condition, message) {
+ if (!condition) {
+ throw new Error(message);
+ }
+}
+function trim(str) {
+ if (str == null) {
+ return null;
+ } else if (typeof str.trim === "function") {
+ return str.trim();
+ } else {
+ return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
+ }
+}
+var primitiveKey = "__ec_primitive__";
+function setAsPrimitive(obj) {
+ obj[primitiveKey] = true;
+}
+function isPrimitive(obj) {
+ return obj[primitiveKey];
+}
+var MapPolyfill = function() {
+ function MapPolyfill2() {
+ this.data = {};
+ }
+ MapPolyfill2.prototype["delete"] = function(key) {
+ var existed = this.has(key);
+ if (existed) {
+ delete this.data[key];
+ }
+ return existed;
+ };
+ MapPolyfill2.prototype.has = function(key) {
+ return this.data.hasOwnProperty(key);
+ };
+ MapPolyfill2.prototype.get = function(key) {
+ return this.data[key];
+ };
+ MapPolyfill2.prototype.set = function(key, value) {
+ this.data[key] = value;
+ return this;
+ };
+ MapPolyfill2.prototype.keys = function() {
+ return keys(this.data);
+ };
+ MapPolyfill2.prototype.forEach = function(callback) {
+ var data = this.data;
+ for (var key in data) {
+ if (data.hasOwnProperty(key)) {
+ callback(data[key], key);
+ }
+ }
+ };
+ return MapPolyfill2;
+}();
+var isNativeMapSupported = typeof Map === "function";
+function maybeNativeMap() {
+ return isNativeMapSupported ? /* @__PURE__ */ new Map() : new MapPolyfill();
+}
+var HashMap = function() {
+ function HashMap2(obj) {
+ var isArr = isArray(obj);
+ this.data = maybeNativeMap();
+ var thisMap = this;
+ obj instanceof HashMap2 ? obj.each(visit) : obj && each(obj, visit);
+ function visit(value, key) {
+ isArr ? thisMap.set(value, key) : thisMap.set(key, value);
+ }
+ }
+ HashMap2.prototype.hasKey = function(key) {
+ return this.data.has(key);
+ };
+ HashMap2.prototype.get = function(key) {
+ return this.data.get(key);
+ };
+ HashMap2.prototype.set = function(key, value) {
+ this.data.set(key, value);
+ return value;
+ };
+ HashMap2.prototype.each = function(cb, context) {
+ this.data.forEach(function(value, key) {
+ cb.call(context, value, key);
+ });
+ };
+ HashMap2.prototype.keys = function() {
+ var keys2 = this.data.keys();
+ return isNativeMapSupported ? Array.from(keys2) : keys2;
+ };
+ HashMap2.prototype.removeKey = function(key) {
+ this.data["delete"](key);
+ };
+ return HashMap2;
+}();
+function createHashMap(obj) {
+ return new HashMap(obj);
+}
+function concatArray(a, b) {
+ var newArray = new a.constructor(a.length + b.length);
+ for (var i = 0; i < a.length; i++) {
+ newArray[i] = a[i];
+ }
+ var offset = a.length;
+ for (var i = 0; i < b.length; i++) {
+ newArray[i + offset] = b[i];
+ }
+ return newArray;
+}
+function createObject(proto2, properties) {
+ var obj;
+ if (Object.create) {
+ obj = Object.create(proto2);
+ } else {
+ var StyleCtor = function() {
+ };
+ StyleCtor.prototype = proto2;
+ obj = new StyleCtor();
+ }
+ if (properties) {
+ extend(obj, properties);
+ }
+ return obj;
+}
+function disableUserSelect(dom) {
+ var domStyle = dom.style;
+ domStyle.webkitUserSelect = "none";
+ domStyle.userSelect = "none";
+ domStyle.webkitTapHighlightColor = "rgba(0,0,0,0)";
+ domStyle["-webkit-touch-callout"] = "none";
+}
+function hasOwn(own, prop) {
+ return own.hasOwnProperty(prop);
+}
+function noop() {
+}
+var RADIAN_TO_DEGREE = 180 / Math.PI;
+
+// node_modules/zrender/lib/core/vector.js
+var vector_exports = {};
+__export(vector_exports, {
+ add: () => add,
+ applyTransform: () => applyTransform,
+ clone: () => clone2,
+ copy: () => copy,
+ create: () => create,
+ dist: () => dist,
+ distSquare: () => distSquare,
+ distance: () => distance,
+ distanceSquare: () => distanceSquare,
+ div: () => div,
+ dot: () => dot,
+ len: () => len,
+ lenSquare: () => lenSquare,
+ length: () => length,
+ lengthSquare: () => lengthSquare,
+ lerp: () => lerp,
+ max: () => max,
+ min: () => min,
+ mul: () => mul,
+ negate: () => negate,
+ normalize: () => normalize,
+ scale: () => scale,
+ scaleAndAdd: () => scaleAndAdd,
+ set: () => set,
+ sub: () => sub
+});
+function create(x, y) {
+ if (x == null) {
+ x = 0;
+ }
+ if (y == null) {
+ y = 0;
+ }
+ return [x, y];
+}
+function copy(out2, v) {
+ out2[0] = v[0];
+ out2[1] = v[1];
+ return out2;
+}
+function clone2(v) {
+ return [v[0], v[1]];
+}
+function set(out2, a, b) {
+ out2[0] = a;
+ out2[1] = b;
+ return out2;
+}
+function add(out2, v12, v22) {
+ out2[0] = v12[0] + v22[0];
+ out2[1] = v12[1] + v22[1];
+ return out2;
+}
+function scaleAndAdd(out2, v12, v22, a) {
+ out2[0] = v12[0] + v22[0] * a;
+ out2[1] = v12[1] + v22[1] * a;
+ return out2;
+}
+function sub(out2, v12, v22) {
+ out2[0] = v12[0] - v22[0];
+ out2[1] = v12[1] - v22[1];
+ return out2;
+}
+function len(v) {
+ return Math.sqrt(lenSquare(v));
+}
+var length = len;
+function lenSquare(v) {
+ return v[0] * v[0] + v[1] * v[1];
+}
+var lengthSquare = lenSquare;
+function mul(out2, v12, v22) {
+ out2[0] = v12[0] * v22[0];
+ out2[1] = v12[1] * v22[1];
+ return out2;
+}
+function div(out2, v12, v22) {
+ out2[0] = v12[0] / v22[0];
+ out2[1] = v12[1] / v22[1];
+ return out2;
+}
+function dot(v12, v22) {
+ return v12[0] * v22[0] + v12[1] * v22[1];
+}
+function scale(out2, v, s) {
+ out2[0] = v[0] * s;
+ out2[1] = v[1] * s;
+ return out2;
+}
+function normalize(out2, v) {
+ var d = len(v);
+ if (d === 0) {
+ out2[0] = 0;
+ out2[1] = 0;
+ } else {
+ out2[0] = v[0] / d;
+ out2[1] = v[1] / d;
+ }
+ return out2;
+}
+function distance(v12, v22) {
+ return Math.sqrt((v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1]));
+}
+var dist = distance;
+function distanceSquare(v12, v22) {
+ return (v12[0] - v22[0]) * (v12[0] - v22[0]) + (v12[1] - v22[1]) * (v12[1] - v22[1]);
+}
+var distSquare = distanceSquare;
+function negate(out2, v) {
+ out2[0] = -v[0];
+ out2[1] = -v[1];
+ return out2;
+}
+function lerp(out2, v12, v22, t) {
+ out2[0] = v12[0] + t * (v22[0] - v12[0]);
+ out2[1] = v12[1] + t * (v22[1] - v12[1]);
+ return out2;
+}
+function applyTransform(out2, v, m2) {
+ var x = v[0];
+ var y = v[1];
+ out2[0] = m2[0] * x + m2[2] * y + m2[4];
+ out2[1] = m2[1] * x + m2[3] * y + m2[5];
+ return out2;
+}
+function min(out2, v12, v22) {
+ out2[0] = Math.min(v12[0], v22[0]);
+ out2[1] = Math.min(v12[1], v22[1]);
+ return out2;
+}
+function max(out2, v12, v22) {
+ out2[0] = Math.max(v12[0], v22[0]);
+ out2[1] = Math.max(v12[1], v22[1]);
+ return out2;
+}
+
+// node_modules/zrender/lib/mixin/Draggable.js
+var Param = function() {
+ function Param2(target, e2) {
+ this.target = target;
+ this.topTarget = e2 && e2.topTarget;
+ }
+ return Param2;
+}();
+var Draggable = function() {
+ function Draggable2(handler) {
+ this.handler = handler;
+ handler.on("mousedown", this._dragStart, this);
+ handler.on("mousemove", this._drag, this);
+ handler.on("mouseup", this._dragEnd, this);
+ }
+ Draggable2.prototype._dragStart = function(e2) {
+ var draggingTarget = e2.target;
+ while (draggingTarget && !draggingTarget.draggable) {
+ draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget;
+ }
+ if (draggingTarget) {
+ this._draggingTarget = draggingTarget;
+ draggingTarget.dragging = true;
+ this._x = e2.offsetX;
+ this._y = e2.offsetY;
+ this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragstart", e2.event);
+ }
+ };
+ Draggable2.prototype._drag = function(e2) {
+ var draggingTarget = this._draggingTarget;
+ if (draggingTarget) {
+ var x = e2.offsetX;
+ var y = e2.offsetY;
+ var dx = x - this._x;
+ var dy = y - this._y;
+ this._x = x;
+ this._y = y;
+ draggingTarget.drift(dx, dy, e2);
+ this.handler.dispatchToElement(new Param(draggingTarget, e2), "drag", e2.event);
+ var dropTarget = this.handler.findHover(x, y, draggingTarget).target;
+ var lastDropTarget = this._dropTarget;
+ this._dropTarget = dropTarget;
+ if (draggingTarget !== dropTarget) {
+ if (lastDropTarget && dropTarget !== lastDropTarget) {
+ this.handler.dispatchToElement(new Param(lastDropTarget, e2), "dragleave", e2.event);
+ }
+ if (dropTarget && dropTarget !== lastDropTarget) {
+ this.handler.dispatchToElement(new Param(dropTarget, e2), "dragenter", e2.event);
+ }
+ }
+ }
+ };
+ Draggable2.prototype._dragEnd = function(e2) {
+ var draggingTarget = this._draggingTarget;
+ if (draggingTarget) {
+ draggingTarget.dragging = false;
+ }
+ this.handler.dispatchToElement(new Param(draggingTarget, e2), "dragend", e2.event);
+ if (this._dropTarget) {
+ this.handler.dispatchToElement(new Param(this._dropTarget, e2), "drop", e2.event);
+ }
+ this._draggingTarget = null;
+ this._dropTarget = null;
+ };
+ return Draggable2;
+}();
+var Draggable_default = Draggable;
+
+// node_modules/zrender/lib/core/Eventful.js
+var Eventful = function() {
+ function Eventful2(eventProcessors) {
+ if (eventProcessors) {
+ this._$eventProcessor = eventProcessors;
+ }
+ }
+ Eventful2.prototype.on = function(event, query, handler, context) {
+ if (!this._$handlers) {
+ this._$handlers = {};
+ }
+ var _h = this._$handlers;
+ if (typeof query === "function") {
+ context = handler;
+ handler = query;
+ query = null;
+ }
+ if (!handler || !event) {
+ return this;
+ }
+ var eventProcessor = this._$eventProcessor;
+ if (query != null && eventProcessor && eventProcessor.normalizeQuery) {
+ query = eventProcessor.normalizeQuery(query);
+ }
+ if (!_h[event]) {
+ _h[event] = [];
+ }
+ for (var i = 0; i < _h[event].length; i++) {
+ if (_h[event][i].h === handler) {
+ return this;
+ }
+ }
+ var wrap = {
+ h: handler,
+ query,
+ ctx: context || this,
+ callAtLast: handler.zrEventfulCallAtLast
+ };
+ var lastIndex = _h[event].length - 1;
+ var lastWrap = _h[event][lastIndex];
+ lastWrap && lastWrap.callAtLast ? _h[event].splice(lastIndex, 0, wrap) : _h[event].push(wrap);
+ return this;
+ };
+ Eventful2.prototype.isSilent = function(eventName) {
+ var _h = this._$handlers;
+ return !_h || !_h[eventName] || !_h[eventName].length;
+ };
+ Eventful2.prototype.off = function(eventType, handler) {
+ var _h = this._$handlers;
+ if (!_h) {
+ return this;
+ }
+ if (!eventType) {
+ this._$handlers = {};
+ return this;
+ }
+ if (handler) {
+ if (_h[eventType]) {
+ var newList = [];
+ for (var i = 0, l = _h[eventType].length; i < l; i++) {
+ if (_h[eventType][i].h !== handler) {
+ newList.push(_h[eventType][i]);
+ }
+ }
+ _h[eventType] = newList;
+ }
+ if (_h[eventType] && _h[eventType].length === 0) {
+ delete _h[eventType];
+ }
+ } else {
+ delete _h[eventType];
+ }
+ return this;
+ };
+ Eventful2.prototype.trigger = function(eventType) {
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ if (!this._$handlers) {
+ return this;
+ }
+ var _h = this._$handlers[eventType];
+ var eventProcessor = this._$eventProcessor;
+ if (_h) {
+ var argLen = args.length;
+ var len2 = _h.length;
+ for (var i = 0; i < len2; i++) {
+ var hItem = _h[i];
+ if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(eventType, hItem.query)) {
+ continue;
+ }
+ switch (argLen) {
+ case 0:
+ hItem.h.call(hItem.ctx);
+ break;
+ case 1:
+ hItem.h.call(hItem.ctx, args[0]);
+ break;
+ case 2:
+ hItem.h.call(hItem.ctx, args[0], args[1]);
+ break;
+ default:
+ hItem.h.apply(hItem.ctx, args);
+ break;
+ }
+ }
+ }
+ eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(eventType);
+ return this;
+ };
+ Eventful2.prototype.triggerWithContext = function(type) {
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ if (!this._$handlers) {
+ return this;
+ }
+ var _h = this._$handlers[type];
+ var eventProcessor = this._$eventProcessor;
+ if (_h) {
+ var argLen = args.length;
+ var ctx = args[argLen - 1];
+ var len2 = _h.length;
+ for (var i = 0; i < len2; i++) {
+ var hItem = _h[i];
+ if (eventProcessor && eventProcessor.filter && hItem.query != null && !eventProcessor.filter(type, hItem.query)) {
+ continue;
+ }
+ switch (argLen) {
+ case 0:
+ hItem.h.call(ctx);
+ break;
+ case 1:
+ hItem.h.call(ctx, args[0]);
+ break;
+ case 2:
+ hItem.h.call(ctx, args[0], args[1]);
+ break;
+ default:
+ hItem.h.apply(ctx, args.slice(1, argLen - 1));
+ break;
+ }
+ }
+ }
+ eventProcessor && eventProcessor.afterTrigger && eventProcessor.afterTrigger(type);
+ return this;
+ };
+ return Eventful2;
+}();
+var Eventful_default = Eventful;
+
+// node_modules/zrender/lib/core/fourPointsTransform.js
+var LN2 = Math.log(2);
+function determinant(rows, rank, rowStart, rowMask, colMask, detCache) {
+ var cacheKey = rowMask + "-" + colMask;
+ var fullRank = rows.length;
+ if (detCache.hasOwnProperty(cacheKey)) {
+ return detCache[cacheKey];
+ }
+ if (rank === 1) {
+ var colStart = Math.round(Math.log((1 << fullRank) - 1 & ~colMask) / LN2);
+ return rows[rowStart][colStart];
+ }
+ var subRowMask = rowMask | 1 << rowStart;
+ var subRowStart = rowStart + 1;
+ while (rowMask & 1 << subRowStart) {
+ subRowStart++;
+ }
+ var sum2 = 0;
+ for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {
+ var colTag = 1 << j;
+ if (!(colTag & colMask)) {
+ sum2 += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j] * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);
+ colLocalIdx++;
+ }
+ }
+ detCache[cacheKey] = sum2;
+ return sum2;
+}
+function buildTransformer(src, dest) {
+ var mA = [
+ [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],
+ [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],
+ [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],
+ [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],
+ [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],
+ [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],
+ [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],
+ [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]
+ ];
+ var detCache = {};
+ var det = determinant(mA, 8, 0, 0, 0, detCache);
+ if (det === 0) {
+ return;
+ }
+ var vh = [];
+ for (var i = 0; i < 8; i++) {
+ for (var j = 0; j < 8; j++) {
+ vh[j] == null && (vh[j] = 0);
+ vh[j] += ((i + j) % 2 ? -1 : 1) * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache) / det * dest[i];
+ }
+ }
+ return function(out2, srcPointX, srcPointY) {
+ var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;
+ out2[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;
+ out2[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;
+ };
+}
+
+// node_modules/zrender/lib/core/dom.js
+var EVENT_SAVED_PROP = "___zrEVENTSAVED";
+var _calcOut = [];
+function transformLocalCoord(out2, elFrom, elTarget, inX, inY) {
+ return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true) && transformCoordWithViewport(out2, elTarget, _calcOut[0], _calcOut[1]);
+}
+function transformCoordWithViewport(out2, el, inX, inY, inverse) {
+ if (el.getBoundingClientRect && env_default.domSupported && !isCanvasEl(el)) {
+ var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});
+ var markers = prepareCoordMarkers(el, saved);
+ var transformer = preparePointerTransformer(markers, saved, inverse);
+ if (transformer) {
+ transformer(out2, inX, inY);
+ return true;
+ }
+ }
+ return false;
+}
+function prepareCoordMarkers(el, saved) {
+ var markers = saved.markers;
+ if (markers) {
+ return markers;
+ }
+ markers = saved.markers = [];
+ var propLR = ["left", "right"];
+ var propTB = ["top", "bottom"];
+ for (var i = 0; i < 4; i++) {
+ var marker = document.createElement("div");
+ var stl = marker.style;
+ var idxLR = i % 2;
+ var idxTB = (i >> 1) % 2;
+ stl.cssText = [
+ "position: absolute",
+ "visibility: hidden",
+ "padding: 0",
+ "margin: 0",
+ "border-width: 0",
+ "user-select: none",
+ "width:0",
+ "height:0",
+ propLR[idxLR] + ":0",
+ propTB[idxTB] + ":0",
+ propLR[1 - idxLR] + ":auto",
+ propTB[1 - idxTB] + ":auto",
+ ""
+ ].join("!important;");
+ el.appendChild(marker);
+ markers.push(marker);
+ }
+ return markers;
+}
+function preparePointerTransformer(markers, saved, inverse) {
+ var transformerName = inverse ? "invTrans" : "trans";
+ var transformer = saved[transformerName];
+ var oldSrcCoords = saved.srcCoords;
+ var srcCoords = [];
+ var destCoords = [];
+ var oldCoordTheSame = true;
+ for (var i = 0; i < 4; i++) {
+ var rect = markers[i].getBoundingClientRect();
+ var ii = 2 * i;
+ var x = rect.left;
+ var y = rect.top;
+ srcCoords.push(x, y);
+ oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];
+ destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);
+ }
+ return oldCoordTheSame && transformer ? transformer : (saved.srcCoords = srcCoords, saved[transformerName] = inverse ? buildTransformer(destCoords, srcCoords) : buildTransformer(srcCoords, destCoords));
+}
+function isCanvasEl(el) {
+ return el.nodeName.toUpperCase() === "CANVAS";
+}
+var replaceReg = /([&<>"'])/g;
+var replaceMap = {
+ "&": "&",
+ "<": "<",
+ ">": ">",
+ '"': """,
+ "'": "'"
+};
+function encodeHTML(source) {
+ return source == null ? "" : (source + "").replace(replaceReg, function(str, c) {
+ return replaceMap[c];
+ });
+}
+
+// node_modules/zrender/lib/core/event.js
+var MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;
+var _calcOut2 = [];
+var firefoxNotSupportOffsetXY = env_default.browser.firefox && +env_default.browser.version.split(".")[0] < 39;
+function clientToLocal(el, e2, out2, calculate) {
+ out2 = out2 || {};
+ if (calculate) {
+ calculateZrXY(el, e2, out2);
+ } else if (firefoxNotSupportOffsetXY && e2.layerX != null && e2.layerX !== e2.offsetX) {
+ out2.zrX = e2.layerX;
+ out2.zrY = e2.layerY;
+ } else if (e2.offsetX != null) {
+ out2.zrX = e2.offsetX;
+ out2.zrY = e2.offsetY;
+ } else {
+ calculateZrXY(el, e2, out2);
+ }
+ return out2;
+}
+function calculateZrXY(el, e2, out2) {
+ if (env_default.domSupported && el.getBoundingClientRect) {
+ var ex = e2.clientX;
+ var ey = e2.clientY;
+ if (isCanvasEl(el)) {
+ var box2 = el.getBoundingClientRect();
+ out2.zrX = ex - box2.left;
+ out2.zrY = ey - box2.top;
+ return;
+ } else {
+ if (transformCoordWithViewport(_calcOut2, el, ex, ey)) {
+ out2.zrX = _calcOut2[0];
+ out2.zrY = _calcOut2[1];
+ return;
+ }
+ }
+ }
+ out2.zrX = out2.zrY = 0;
+}
+function getNativeEvent(e2) {
+ return e2 || window.event;
+}
+function normalizeEvent(el, e2, calculate) {
+ e2 = getNativeEvent(e2);
+ if (e2.zrX != null) {
+ return e2;
+ }
+ var eventType = e2.type;
+ var isTouch = eventType && eventType.indexOf("touch") >= 0;
+ if (!isTouch) {
+ clientToLocal(el, e2, e2, calculate);
+ var wheelDelta = getWheelDeltaMayPolyfill(e2);
+ e2.zrDelta = wheelDelta ? wheelDelta / 120 : -(e2.detail || 0) / 3;
+ } else {
+ var touch = eventType !== "touchend" ? e2.targetTouches[0] : e2.changedTouches[0];
+ touch && clientToLocal(el, touch, e2, calculate);
+ }
+ var button = e2.button;
+ if (e2.which == null && button !== void 0 && MOUSE_EVENT_REG.test(e2.type)) {
+ e2.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;
+ }
+ return e2;
+}
+function getWheelDeltaMayPolyfill(e2) {
+ var rawWheelDelta = e2.wheelDelta;
+ if (rawWheelDelta) {
+ return rawWheelDelta;
+ }
+ var deltaX = e2.deltaX;
+ var deltaY = e2.deltaY;
+ if (deltaX == null || deltaY == null) {
+ return rawWheelDelta;
+ }
+ var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);
+ var sign = deltaY > 0 ? -1 : deltaY < 0 ? 1 : deltaX > 0 ? -1 : 1;
+ return 3 * delta * sign;
+}
+function addEventListener(el, name, handler, opt) {
+ el.addEventListener(name, handler, opt);
+}
+function removeEventListener(el, name, handler, opt) {
+ el.removeEventListener(name, handler, opt);
+}
+var stop = function(e2) {
+ e2.preventDefault();
+ e2.stopPropagation();
+ e2.cancelBubble = true;
+};
+function isMiddleOrRightButtonOnMouseUpDown(e2) {
+ return e2.which === 2 || e2.which === 3;
+}
+
+// node_modules/zrender/lib/core/GestureMgr.js
+var GestureMgr = function() {
+ function GestureMgr2() {
+ this._track = [];
+ }
+ GestureMgr2.prototype.recognize = function(event, target, root) {
+ this._doTrack(event, target, root);
+ return this._recognize(event);
+ };
+ GestureMgr2.prototype.clear = function() {
+ this._track.length = 0;
+ return this;
+ };
+ GestureMgr2.prototype._doTrack = function(event, target, root) {
+ var touches = event.touches;
+ if (!touches) {
+ return;
+ }
+ var trackItem = {
+ points: [],
+ touches: [],
+ target,
+ event
+ };
+ for (var i = 0, len2 = touches.length; i < len2; i++) {
+ var touch = touches[i];
+ var pos = clientToLocal(root, touch, {});
+ trackItem.points.push([pos.zrX, pos.zrY]);
+ trackItem.touches.push(touch);
+ }
+ this._track.push(trackItem);
+ };
+ GestureMgr2.prototype._recognize = function(event) {
+ for (var eventName in recognizers) {
+ if (recognizers.hasOwnProperty(eventName)) {
+ var gestureInfo = recognizers[eventName](this._track, event);
+ if (gestureInfo) {
+ return gestureInfo;
+ }
+ }
+ }
+ };
+ return GestureMgr2;
+}();
+function dist2(pointPair) {
+ var dx = pointPair[1][0] - pointPair[0][0];
+ var dy = pointPair[1][1] - pointPair[0][1];
+ return Math.sqrt(dx * dx + dy * dy);
+}
+function center(pointPair) {
+ return [
+ (pointPair[0][0] + pointPair[1][0]) / 2,
+ (pointPair[0][1] + pointPair[1][1]) / 2
+ ];
+}
+var recognizers = {
+ pinch: function(tracks, event) {
+ var trackLen = tracks.length;
+ if (!trackLen) {
+ return;
+ }
+ var pinchEnd = (tracks[trackLen - 1] || {}).points;
+ var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;
+ if (pinchPre && pinchPre.length > 1 && pinchEnd && pinchEnd.length > 1) {
+ var pinchScale = dist2(pinchEnd) / dist2(pinchPre);
+ !isFinite(pinchScale) && (pinchScale = 1);
+ event.pinchScale = pinchScale;
+ var pinchCenter = center(pinchEnd);
+ event.pinchX = pinchCenter[0];
+ event.pinchY = pinchCenter[1];
+ return {
+ type: "pinch",
+ target: tracks[0].target,
+ event
+ };
+ }
+ }
+};
+
+// node_modules/zrender/lib/core/matrix.js
+var matrix_exports = {};
+__export(matrix_exports, {
+ clone: () => clone3,
+ copy: () => copy2,
+ create: () => create2,
+ identity: () => identity,
+ invert: () => invert,
+ mul: () => mul2,
+ rotate: () => rotate,
+ scale: () => scale2,
+ translate: () => translate
+});
+function create2() {
+ return [1, 0, 0, 1, 0, 0];
+}
+function identity(out2) {
+ out2[0] = 1;
+ out2[1] = 0;
+ out2[2] = 0;
+ out2[3] = 1;
+ out2[4] = 0;
+ out2[5] = 0;
+ return out2;
+}
+function copy2(out2, m2) {
+ out2[0] = m2[0];
+ out2[1] = m2[1];
+ out2[2] = m2[2];
+ out2[3] = m2[3];
+ out2[4] = m2[4];
+ out2[5] = m2[5];
+ return out2;
+}
+function mul2(out2, m1, m2) {
+ var out0 = m1[0] * m2[0] + m1[2] * m2[1];
+ var out1 = m1[1] * m2[0] + m1[3] * m2[1];
+ var out22 = m1[0] * m2[2] + m1[2] * m2[3];
+ var out3 = m1[1] * m2[2] + m1[3] * m2[3];
+ var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];
+ var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];
+ out2[0] = out0;
+ out2[1] = out1;
+ out2[2] = out22;
+ out2[3] = out3;
+ out2[4] = out4;
+ out2[5] = out5;
+ return out2;
+}
+function translate(out2, a, v) {
+ out2[0] = a[0];
+ out2[1] = a[1];
+ out2[2] = a[2];
+ out2[3] = a[3];
+ out2[4] = a[4] + v[0];
+ out2[5] = a[5] + v[1];
+ return out2;
+}
+function rotate(out2, a, rad, pivot) {
+ if (pivot === void 0) {
+ pivot = [0, 0];
+ }
+ var aa = a[0];
+ var ac = a[2];
+ var atx = a[4];
+ var ab = a[1];
+ var ad = a[3];
+ var aty = a[5];
+ var st = Math.sin(rad);
+ var ct = Math.cos(rad);
+ out2[0] = aa * ct + ab * st;
+ out2[1] = -aa * st + ab * ct;
+ out2[2] = ac * ct + ad * st;
+ out2[3] = -ac * st + ct * ad;
+ out2[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0];
+ out2[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1];
+ return out2;
+}
+function scale2(out2, a, v) {
+ var vx = v[0];
+ var vy = v[1];
+ out2[0] = a[0] * vx;
+ out2[1] = a[1] * vy;
+ out2[2] = a[2] * vx;
+ out2[3] = a[3] * vy;
+ out2[4] = a[4] * vx;
+ out2[5] = a[5] * vy;
+ return out2;
+}
+function invert(out2, a) {
+ var aa = a[0];
+ var ac = a[2];
+ var atx = a[4];
+ var ab = a[1];
+ var ad = a[3];
+ var aty = a[5];
+ var det = aa * ad - ab * ac;
+ if (!det) {
+ return null;
+ }
+ det = 1 / det;
+ out2[0] = ad * det;
+ out2[1] = -ab * det;
+ out2[2] = -ac * det;
+ out2[3] = aa * det;
+ out2[4] = (ac * aty - ad * atx) * det;
+ out2[5] = (ab * atx - aa * aty) * det;
+ return out2;
+}
+function clone3(a) {
+ var b = create2();
+ copy2(b, a);
+ return b;
+}
+
+// node_modules/zrender/lib/core/Point.js
+var Point = function() {
+ function Point2(x, y) {
+ this.x = x || 0;
+ this.y = y || 0;
+ }
+ Point2.prototype.copy = function(other) {
+ this.x = other.x;
+ this.y = other.y;
+ return this;
+ };
+ Point2.prototype.clone = function() {
+ return new Point2(this.x, this.y);
+ };
+ Point2.prototype.set = function(x, y) {
+ this.x = x;
+ this.y = y;
+ return this;
+ };
+ Point2.prototype.equal = function(other) {
+ return other.x === this.x && other.y === this.y;
+ };
+ Point2.prototype.add = function(other) {
+ this.x += other.x;
+ this.y += other.y;
+ return this;
+ };
+ Point2.prototype.scale = function(scalar) {
+ this.x *= scalar;
+ this.y *= scalar;
+ };
+ Point2.prototype.scaleAndAdd = function(other, scalar) {
+ this.x += other.x * scalar;
+ this.y += other.y * scalar;
+ };
+ Point2.prototype.sub = function(other) {
+ this.x -= other.x;
+ this.y -= other.y;
+ return this;
+ };
+ Point2.prototype.dot = function(other) {
+ return this.x * other.x + this.y * other.y;
+ };
+ Point2.prototype.len = function() {
+ return Math.sqrt(this.x * this.x + this.y * this.y);
+ };
+ Point2.prototype.lenSquare = function() {
+ return this.x * this.x + this.y * this.y;
+ };
+ Point2.prototype.normalize = function() {
+ var len2 = this.len();
+ this.x /= len2;
+ this.y /= len2;
+ return this;
+ };
+ Point2.prototype.distance = function(other) {
+ var dx = this.x - other.x;
+ var dy = this.y - other.y;
+ return Math.sqrt(dx * dx + dy * dy);
+ };
+ Point2.prototype.distanceSquare = function(other) {
+ var dx = this.x - other.x;
+ var dy = this.y - other.y;
+ return dx * dx + dy * dy;
+ };
+ Point2.prototype.negate = function() {
+ this.x = -this.x;
+ this.y = -this.y;
+ return this;
+ };
+ Point2.prototype.transform = function(m2) {
+ if (!m2) {
+ return;
+ }
+ var x = this.x;
+ var y = this.y;
+ this.x = m2[0] * x + m2[2] * y + m2[4];
+ this.y = m2[1] * x + m2[3] * y + m2[5];
+ return this;
+ };
+ Point2.prototype.toArray = function(out2) {
+ out2[0] = this.x;
+ out2[1] = this.y;
+ return out2;
+ };
+ Point2.prototype.fromArray = function(input) {
+ this.x = input[0];
+ this.y = input[1];
+ };
+ Point2.set = function(p, x, y) {
+ p.x = x;
+ p.y = y;
+ };
+ Point2.copy = function(p, p2) {
+ p.x = p2.x;
+ p.y = p2.y;
+ };
+ Point2.len = function(p) {
+ return Math.sqrt(p.x * p.x + p.y * p.y);
+ };
+ Point2.lenSquare = function(p) {
+ return p.x * p.x + p.y * p.y;
+ };
+ Point2.dot = function(p0, p1) {
+ return p0.x * p1.x + p0.y * p1.y;
+ };
+ Point2.add = function(out2, p0, p1) {
+ out2.x = p0.x + p1.x;
+ out2.y = p0.y + p1.y;
+ };
+ Point2.sub = function(out2, p0, p1) {
+ out2.x = p0.x - p1.x;
+ out2.y = p0.y - p1.y;
+ };
+ Point2.scale = function(out2, p0, scalar) {
+ out2.x = p0.x * scalar;
+ out2.y = p0.y * scalar;
+ };
+ Point2.scaleAndAdd = function(out2, p0, p1, scalar) {
+ out2.x = p0.x + p1.x * scalar;
+ out2.y = p0.y + p1.y * scalar;
+ };
+ Point2.lerp = function(out2, p0, p1, t) {
+ var onet = 1 - t;
+ out2.x = onet * p0.x + t * p1.x;
+ out2.y = onet * p0.y + t * p1.y;
+ };
+ return Point2;
+}();
+var Point_default = Point;
+
+// node_modules/zrender/lib/core/BoundingRect.js
+var mathMin = Math.min;
+var mathMax = Math.max;
+var lt = new Point_default();
+var rb = new Point_default();
+var lb = new Point_default();
+var rt = new Point_default();
+var minTv = new Point_default();
+var maxTv = new Point_default();
+var BoundingRect = function() {
+ function BoundingRect2(x, y, width, height) {
+ if (width < 0) {
+ x = x + width;
+ width = -width;
+ }
+ if (height < 0) {
+ y = y + height;
+ height = -height;
+ }
+ this.x = x;
+ this.y = y;
+ this.width = width;
+ this.height = height;
+ }
+ BoundingRect2.prototype.union = function(other) {
+ var x = mathMin(other.x, this.x);
+ var y = mathMin(other.y, this.y);
+ if (isFinite(this.x) && isFinite(this.width)) {
+ this.width = mathMax(other.x + other.width, this.x + this.width) - x;
+ } else {
+ this.width = other.width;
+ }
+ if (isFinite(this.y) && isFinite(this.height)) {
+ this.height = mathMax(other.y + other.height, this.y + this.height) - y;
+ } else {
+ this.height = other.height;
+ }
+ this.x = x;
+ this.y = y;
+ };
+ BoundingRect2.prototype.applyTransform = function(m2) {
+ BoundingRect2.applyTransform(this, this, m2);
+ };
+ BoundingRect2.prototype.calculateTransform = function(b) {
+ var a = this;
+ var sx = b.width / a.width;
+ var sy = b.height / a.height;
+ var m2 = create2();
+ translate(m2, m2, [-a.x, -a.y]);
+ scale2(m2, m2, [sx, sy]);
+ translate(m2, m2, [b.x, b.y]);
+ return m2;
+ };
+ BoundingRect2.prototype.intersect = function(b, mtv) {
+ if (!b) {
+ return false;
+ }
+ if (!(b instanceof BoundingRect2)) {
+ b = BoundingRect2.create(b);
+ }
+ var a = this;
+ var ax0 = a.x;
+ var ax1 = a.x + a.width;
+ var ay0 = a.y;
+ var ay1 = a.y + a.height;
+ var bx0 = b.x;
+ var bx1 = b.x + b.width;
+ var by0 = b.y;
+ var by1 = b.y + b.height;
+ var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);
+ if (mtv) {
+ var dMin = Infinity;
+ var dMax = 0;
+ var d0 = Math.abs(ax1 - bx0);
+ var d1 = Math.abs(bx1 - ax0);
+ var d2 = Math.abs(ay1 - by0);
+ var d3 = Math.abs(by1 - ay0);
+ var dx = Math.min(d0, d1);
+ var dy = Math.min(d2, d3);
+ if (ax1 < bx0 || bx1 < ax0) {
+ if (dx > dMax) {
+ dMax = dx;
+ if (d0 < d1) {
+ Point_default.set(maxTv, -d0, 0);
+ } else {
+ Point_default.set(maxTv, d1, 0);
+ }
+ }
+ } else {
+ if (dx < dMin) {
+ dMin = dx;
+ if (d0 < d1) {
+ Point_default.set(minTv, d0, 0);
+ } else {
+ Point_default.set(minTv, -d1, 0);
+ }
+ }
+ }
+ if (ay1 < by0 || by1 < ay0) {
+ if (dy > dMax) {
+ dMax = dy;
+ if (d2 < d3) {
+ Point_default.set(maxTv, 0, -d2);
+ } else {
+ Point_default.set(maxTv, 0, d3);
+ }
+ }
+ } else {
+ if (dx < dMin) {
+ dMin = dx;
+ if (d2 < d3) {
+ Point_default.set(minTv, 0, d2);
+ } else {
+ Point_default.set(minTv, 0, -d3);
+ }
+ }
+ }
+ }
+ if (mtv) {
+ Point_default.copy(mtv, overlap ? minTv : maxTv);
+ }
+ return overlap;
+ };
+ BoundingRect2.prototype.contain = function(x, y) {
+ var rect = this;
+ return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;
+ };
+ BoundingRect2.prototype.clone = function() {
+ return new BoundingRect2(this.x, this.y, this.width, this.height);
+ };
+ BoundingRect2.prototype.copy = function(other) {
+ BoundingRect2.copy(this, other);
+ };
+ BoundingRect2.prototype.plain = function() {
+ return {
+ x: this.x,
+ y: this.y,
+ width: this.width,
+ height: this.height
+ };
+ };
+ BoundingRect2.prototype.isFinite = function() {
+ return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);
+ };
+ BoundingRect2.prototype.isZero = function() {
+ return this.width === 0 || this.height === 0;
+ };
+ BoundingRect2.create = function(rect) {
+ return new BoundingRect2(rect.x, rect.y, rect.width, rect.height);
+ };
+ BoundingRect2.copy = function(target, source) {
+ target.x = source.x;
+ target.y = source.y;
+ target.width = source.width;
+ target.height = source.height;
+ };
+ BoundingRect2.applyTransform = function(target, source, m2) {
+ if (!m2) {
+ if (target !== source) {
+ BoundingRect2.copy(target, source);
+ }
+ return;
+ }
+ if (m2[1] < 1e-5 && m2[1] > -1e-5 && m2[2] < 1e-5 && m2[2] > -1e-5) {
+ var sx = m2[0];
+ var sy = m2[3];
+ var tx = m2[4];
+ var ty = m2[5];
+ target.x = source.x * sx + tx;
+ target.y = source.y * sy + ty;
+ target.width = source.width * sx;
+ target.height = source.height * sy;
+ if (target.width < 0) {
+ target.x += target.width;
+ target.width = -target.width;
+ }
+ if (target.height < 0) {
+ target.y += target.height;
+ target.height = -target.height;
+ }
+ return;
+ }
+ lt.x = lb.x = source.x;
+ lt.y = rt.y = source.y;
+ rb.x = rt.x = source.x + source.width;
+ rb.y = lb.y = source.y + source.height;
+ lt.transform(m2);
+ rt.transform(m2);
+ rb.transform(m2);
+ lb.transform(m2);
+ target.x = mathMin(lt.x, rb.x, lb.x, rt.x);
+ target.y = mathMin(lt.y, rb.y, lb.y, rt.y);
+ var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);
+ var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);
+ target.width = maxX - target.x;
+ target.height = maxY - target.y;
+ };
+ return BoundingRect2;
+}();
+var BoundingRect_default = BoundingRect;
+
+// node_modules/zrender/lib/Handler.js
+var SILENT = "silent";
+function makeEventPacket(eveType, targetInfo, event) {
+ return {
+ type: eveType,
+ event,
+ target: targetInfo.target,
+ topTarget: targetInfo.topTarget,
+ cancelBubble: false,
+ offsetX: event.zrX,
+ offsetY: event.zrY,
+ gestureEvent: event.gestureEvent,
+ pinchX: event.pinchX,
+ pinchY: event.pinchY,
+ pinchScale: event.pinchScale,
+ wheelDelta: event.zrDelta,
+ zrByTouch: event.zrByTouch,
+ which: event.which,
+ stop: stopEvent
+ };
+}
+function stopEvent() {
+ stop(this.event);
+}
+var EmptyProxy = function(_super) {
+ __extends(EmptyProxy2, _super);
+ function EmptyProxy2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.handler = null;
+ return _this;
+ }
+ EmptyProxy2.prototype.dispose = function() {
+ };
+ EmptyProxy2.prototype.setCursor = function() {
+ };
+ return EmptyProxy2;
+}(Eventful_default);
+var HoveredResult = function() {
+ function HoveredResult2(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+ return HoveredResult2;
+}();
+var handlerNames = [
+ "click",
+ "dblclick",
+ "mousewheel",
+ "mouseout",
+ "mouseup",
+ "mousedown",
+ "mousemove",
+ "contextmenu"
+];
+var tmpRect = new BoundingRect_default(0, 0, 0, 0);
+var Handler = function(_super) {
+ __extends(Handler2, _super);
+ function Handler2(storage2, painter, proxy, painterRoot, pointerSize) {
+ var _this = _super.call(this) || this;
+ _this._hovered = new HoveredResult(0, 0);
+ _this.storage = storage2;
+ _this.painter = painter;
+ _this.painterRoot = painterRoot;
+ _this._pointerSize = pointerSize;
+ proxy = proxy || new EmptyProxy();
+ _this.proxy = null;
+ _this.setHandlerProxy(proxy);
+ _this._draggingMgr = new Draggable_default(_this);
+ return _this;
+ }
+ Handler2.prototype.setHandlerProxy = function(proxy) {
+ if (this.proxy) {
+ this.proxy.dispose();
+ }
+ if (proxy) {
+ each(handlerNames, function(name) {
+ proxy.on && proxy.on(name, this[name], this);
+ }, this);
+ proxy.handler = this;
+ }
+ this.proxy = proxy;
+ };
+ Handler2.prototype.mousemove = function(event) {
+ var x = event.zrX;
+ var y = event.zrY;
+ var isOutside = isOutsideBoundary(this, x, y);
+ var lastHovered = this._hovered;
+ var lastHoveredTarget = lastHovered.target;
+ if (lastHoveredTarget && !lastHoveredTarget.__zr) {
+ lastHovered = this.findHover(lastHovered.x, lastHovered.y);
+ lastHoveredTarget = lastHovered.target;
+ }
+ var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);
+ var hoveredTarget = hovered.target;
+ var proxy = this.proxy;
+ proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : "default");
+ if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {
+ this.dispatchToElement(lastHovered, "mouseout", event);
+ }
+ this.dispatchToElement(hovered, "mousemove", event);
+ if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {
+ this.dispatchToElement(hovered, "mouseover", event);
+ }
+ };
+ Handler2.prototype.mouseout = function(event) {
+ var eventControl = event.zrEventControl;
+ if (eventControl !== "only_globalout") {
+ this.dispatchToElement(this._hovered, "mouseout", event);
+ }
+ if (eventControl !== "no_globalout") {
+ this.trigger("globalout", { type: "globalout", event });
+ }
+ };
+ Handler2.prototype.resize = function() {
+ this._hovered = new HoveredResult(0, 0);
+ };
+ Handler2.prototype.dispatch = function(eventName, eventArgs) {
+ var handler = this[eventName];
+ handler && handler.call(this, eventArgs);
+ };
+ Handler2.prototype.dispose = function() {
+ this.proxy.dispose();
+ this.storage = null;
+ this.proxy = null;
+ this.painter = null;
+ };
+ Handler2.prototype.setCursorStyle = function(cursorStyle) {
+ var proxy = this.proxy;
+ proxy.setCursor && proxy.setCursor(cursorStyle);
+ };
+ Handler2.prototype.dispatchToElement = function(targetInfo, eventName, event) {
+ targetInfo = targetInfo || {};
+ var el = targetInfo.target;
+ if (el && el.silent) {
+ return;
+ }
+ var eventKey = "on" + eventName;
+ var eventPacket = makeEventPacket(eventName, targetInfo, event);
+ while (el) {
+ el[eventKey] && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));
+ el.trigger(eventName, eventPacket);
+ el = el.__hostTarget ? el.__hostTarget : el.parent;
+ if (eventPacket.cancelBubble) {
+ break;
+ }
+ }
+ if (!eventPacket.cancelBubble) {
+ this.trigger(eventName, eventPacket);
+ if (this.painter && this.painter.eachOtherLayer) {
+ this.painter.eachOtherLayer(function(layer) {
+ if (typeof layer[eventKey] === "function") {
+ layer[eventKey].call(layer, eventPacket);
+ }
+ if (layer.trigger) {
+ layer.trigger(eventName, eventPacket);
+ }
+ });
+ }
+ }
+ };
+ Handler2.prototype.findHover = function(x, y, exclude) {
+ var list = this.storage.getDisplayList();
+ var out2 = new HoveredResult(x, y);
+ setHoverTarget(list, out2, x, y, exclude);
+ if (this._pointerSize && !out2.target) {
+ var candidates = [];
+ var pointerSize = this._pointerSize;
+ var targetSizeHalf = pointerSize / 2;
+ var pointerRect = new BoundingRect_default(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize);
+ for (var i = list.length - 1; i >= 0; i--) {
+ var el = list[i];
+ if (el !== exclude && !el.ignore && !el.ignoreCoarsePointer && (!el.parent || !el.parent.ignoreCoarsePointer)) {
+ tmpRect.copy(el.getBoundingRect());
+ if (el.transform) {
+ tmpRect.applyTransform(el.transform);
+ }
+ if (tmpRect.intersect(pointerRect)) {
+ candidates.push(el);
+ }
+ }
+ }
+ if (candidates.length) {
+ var rStep = 4;
+ var thetaStep = Math.PI / 12;
+ var PI210 = Math.PI * 2;
+ for (var r = 0; r < targetSizeHalf; r += rStep) {
+ for (var theta = 0; theta < PI210; theta += thetaStep) {
+ var x1 = x + r * Math.cos(theta);
+ var y1 = y + r * Math.sin(theta);
+ setHoverTarget(candidates, out2, x1, y1, exclude);
+ if (out2.target) {
+ return out2;
+ }
+ }
+ }
+ }
+ }
+ return out2;
+ };
+ Handler2.prototype.processGesture = function(event, stage) {
+ if (!this._gestureMgr) {
+ this._gestureMgr = new GestureMgr();
+ }
+ var gestureMgr = this._gestureMgr;
+ stage === "start" && gestureMgr.clear();
+ var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);
+ stage === "end" && gestureMgr.clear();
+ if (gestureInfo) {
+ var type = gestureInfo.type;
+ event.gestureEvent = type;
+ var res = new HoveredResult();
+ res.target = gestureInfo.target;
+ this.dispatchToElement(res, type, gestureInfo.event);
+ }
+ };
+ return Handler2;
+}(Eventful_default);
+each(["click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu"], function(name) {
+ Handler.prototype[name] = function(event) {
+ var x = event.zrX;
+ var y = event.zrY;
+ var isOutside = isOutsideBoundary(this, x, y);
+ var hovered;
+ var hoveredTarget;
+ if (name !== "mouseup" || !isOutside) {
+ hovered = this.findHover(x, y);
+ hoveredTarget = hovered.target;
+ }
+ if (name === "mousedown") {
+ this._downEl = hoveredTarget;
+ this._downPoint = [event.zrX, event.zrY];
+ this._upEl = hoveredTarget;
+ } else if (name === "mouseup") {
+ this._upEl = hoveredTarget;
+ } else if (name === "click") {
+ if (this._downEl !== this._upEl || !this._downPoint || dist(this._downPoint, [event.zrX, event.zrY]) > 4) {
+ return;
+ }
+ this._downPoint = null;
+ }
+ this.dispatchToElement(hovered, name, event);
+ };
+});
+function isHover(displayable, x, y) {
+ if (displayable[displayable.rectHover ? "rectContain" : "contain"](x, y)) {
+ var el = displayable;
+ var isSilent = void 0;
+ var ignoreClip = false;
+ while (el) {
+ if (el.ignoreClip) {
+ ignoreClip = true;
+ }
+ if (!ignoreClip) {
+ var clipPath = el.getClipPath();
+ if (clipPath && !clipPath.contain(x, y)) {
+ return false;
+ }
+ }
+ if (el.silent) {
+ isSilent = true;
+ }
+ var hostEl = el.__hostTarget;
+ el = hostEl ? hostEl : el.parent;
+ }
+ return isSilent ? SILENT : true;
+ }
+ return false;
+}
+function setHoverTarget(list, out2, x, y, exclude) {
+ for (var i = list.length - 1; i >= 0; i--) {
+ var el = list[i];
+ var hoverCheckResult = void 0;
+ if (el !== exclude && !el.ignore && (hoverCheckResult = isHover(el, x, y))) {
+ !out2.topTarget && (out2.topTarget = el);
+ if (hoverCheckResult !== SILENT) {
+ out2.target = el;
+ break;
+ }
+ }
+ }
+}
+function isOutsideBoundary(handlerInstance, x, y) {
+ var painter = handlerInstance.painter;
+ return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();
+}
+var Handler_default = Handler;
+
+// node_modules/zrender/lib/core/timsort.js
+var DEFAULT_MIN_MERGE = 32;
+var DEFAULT_MIN_GALLOPING = 7;
+function minRunLength(n) {
+ var r = 0;
+ while (n >= DEFAULT_MIN_MERGE) {
+ r |= n & 1;
+ n >>= 1;
+ }
+ return n + r;
+}
+function makeAscendingRun(array, lo, hi, compare2) {
+ var runHi = lo + 1;
+ if (runHi === hi) {
+ return 1;
+ }
+ if (compare2(array[runHi++], array[lo]) < 0) {
+ while (runHi < hi && compare2(array[runHi], array[runHi - 1]) < 0) {
+ runHi++;
+ }
+ reverseRun(array, lo, runHi);
+ } else {
+ while (runHi < hi && compare2(array[runHi], array[runHi - 1]) >= 0) {
+ runHi++;
+ }
+ }
+ return runHi - lo;
+}
+function reverseRun(array, lo, hi) {
+ hi--;
+ while (lo < hi) {
+ var t = array[lo];
+ array[lo++] = array[hi];
+ array[hi--] = t;
+ }
+}
+function binaryInsertionSort(array, lo, hi, start2, compare2) {
+ if (start2 === lo) {
+ start2++;
+ }
+ for (; start2 < hi; start2++) {
+ var pivot = array[start2];
+ var left = lo;
+ var right = start2;
+ var mid;
+ while (left < right) {
+ mid = left + right >>> 1;
+ if (compare2(pivot, array[mid]) < 0) {
+ right = mid;
+ } else {
+ left = mid + 1;
+ }
+ }
+ var n = start2 - left;
+ switch (n) {
+ case 3:
+ array[left + 3] = array[left + 2];
+ case 2:
+ array[left + 2] = array[left + 1];
+ case 1:
+ array[left + 1] = array[left];
+ break;
+ default:
+ while (n > 0) {
+ array[left + n] = array[left + n - 1];
+ n--;
+ }
+ }
+ array[left] = pivot;
+ }
+}
+function gallopLeft(value, array, start2, length2, hint, compare2) {
+ var lastOffset = 0;
+ var maxOffset = 0;
+ var offset = 1;
+ if (compare2(value, array[start2 + hint]) > 0) {
+ maxOffset = length2 - hint;
+ while (offset < maxOffset && compare2(value, array[start2 + hint + offset]) > 0) {
+ lastOffset = offset;
+ offset = (offset << 1) + 1;
+ if (offset <= 0) {
+ offset = maxOffset;
+ }
+ }
+ if (offset > maxOffset) {
+ offset = maxOffset;
+ }
+ lastOffset += hint;
+ offset += hint;
+ } else {
+ maxOffset = hint + 1;
+ while (offset < maxOffset && compare2(value, array[start2 + hint - offset]) <= 0) {
+ lastOffset = offset;
+ offset = (offset << 1) + 1;
+ if (offset <= 0) {
+ offset = maxOffset;
+ }
+ }
+ if (offset > maxOffset) {
+ offset = maxOffset;
+ }
+ var tmp = lastOffset;
+ lastOffset = hint - offset;
+ offset = hint - tmp;
+ }
+ lastOffset++;
+ while (lastOffset < offset) {
+ var m2 = lastOffset + (offset - lastOffset >>> 1);
+ if (compare2(value, array[start2 + m2]) > 0) {
+ lastOffset = m2 + 1;
+ } else {
+ offset = m2;
+ }
+ }
+ return offset;
+}
+function gallopRight(value, array, start2, length2, hint, compare2) {
+ var lastOffset = 0;
+ var maxOffset = 0;
+ var offset = 1;
+ if (compare2(value, array[start2 + hint]) < 0) {
+ maxOffset = hint + 1;
+ while (offset < maxOffset && compare2(value, array[start2 + hint - offset]) < 0) {
+ lastOffset = offset;
+ offset = (offset << 1) + 1;
+ if (offset <= 0) {
+ offset = maxOffset;
+ }
+ }
+ if (offset > maxOffset) {
+ offset = maxOffset;
+ }
+ var tmp = lastOffset;
+ lastOffset = hint - offset;
+ offset = hint - tmp;
+ } else {
+ maxOffset = length2 - hint;
+ while (offset < maxOffset && compare2(value, array[start2 + hint + offset]) >= 0) {
+ lastOffset = offset;
+ offset = (offset << 1) + 1;
+ if (offset <= 0) {
+ offset = maxOffset;
+ }
+ }
+ if (offset > maxOffset) {
+ offset = maxOffset;
+ }
+ lastOffset += hint;
+ offset += hint;
+ }
+ lastOffset++;
+ while (lastOffset < offset) {
+ var m2 = lastOffset + (offset - lastOffset >>> 1);
+ if (compare2(value, array[start2 + m2]) < 0) {
+ offset = m2;
+ } else {
+ lastOffset = m2 + 1;
+ }
+ }
+ return offset;
+}
+function TimSort(array, compare2) {
+ var minGallop = DEFAULT_MIN_GALLOPING;
+ var runStart;
+ var runLength;
+ var stackSize = 0;
+ var tmp = [];
+ runStart = [];
+ runLength = [];
+ function pushRun(_runStart, _runLength) {
+ runStart[stackSize] = _runStart;
+ runLength[stackSize] = _runLength;
+ stackSize += 1;
+ }
+ function mergeRuns() {
+ while (stackSize > 1) {
+ var n = stackSize - 2;
+ if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {
+ if (runLength[n - 1] < runLength[n + 1]) {
+ n--;
+ }
+ } else if (runLength[n] > runLength[n + 1]) {
+ break;
+ }
+ mergeAt(n);
+ }
+ }
+ function forceMergeRuns() {
+ while (stackSize > 1) {
+ var n = stackSize - 2;
+ if (n > 0 && runLength[n - 1] < runLength[n + 1]) {
+ n--;
+ }
+ mergeAt(n);
+ }
+ }
+ function mergeAt(i) {
+ var start1 = runStart[i];
+ var length1 = runLength[i];
+ var start2 = runStart[i + 1];
+ var length2 = runLength[i + 1];
+ runLength[i] = length1 + length2;
+ if (i === stackSize - 3) {
+ runStart[i + 1] = runStart[i + 2];
+ runLength[i + 1] = runLength[i + 2];
+ }
+ stackSize--;
+ var k = gallopRight(array[start2], array, start1, length1, 0, compare2);
+ start1 += k;
+ length1 -= k;
+ if (length1 === 0) {
+ return;
+ }
+ length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare2);
+ if (length2 === 0) {
+ return;
+ }
+ if (length1 <= length2) {
+ mergeLow(start1, length1, start2, length2);
+ } else {
+ mergeHigh(start1, length1, start2, length2);
+ }
+ }
+ function mergeLow(start1, length1, start2, length2) {
+ var i = 0;
+ for (i = 0; i < length1; i++) {
+ tmp[i] = array[start1 + i];
+ }
+ var cursor1 = 0;
+ var cursor2 = start2;
+ var dest = start1;
+ array[dest++] = array[cursor2++];
+ if (--length2 === 0) {
+ for (i = 0; i < length1; i++) {
+ array[dest + i] = tmp[cursor1 + i];
+ }
+ return;
+ }
+ if (length1 === 1) {
+ for (i = 0; i < length2; i++) {
+ array[dest + i] = array[cursor2 + i];
+ }
+ array[dest + length2] = tmp[cursor1];
+ return;
+ }
+ var _minGallop = minGallop;
+ var count1;
+ var count2;
+ var exit;
+ while (1) {
+ count1 = 0;
+ count2 = 0;
+ exit = false;
+ do {
+ if (compare2(array[cursor2], tmp[cursor1]) < 0) {
+ array[dest++] = array[cursor2++];
+ count2++;
+ count1 = 0;
+ if (--length2 === 0) {
+ exit = true;
+ break;
+ }
+ } else {
+ array[dest++] = tmp[cursor1++];
+ count1++;
+ count2 = 0;
+ if (--length1 === 1) {
+ exit = true;
+ break;
+ }
+ }
+ } while ((count1 | count2) < _minGallop);
+ if (exit) {
+ break;
+ }
+ do {
+ count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare2);
+ if (count1 !== 0) {
+ for (i = 0; i < count1; i++) {
+ array[dest + i] = tmp[cursor1 + i];
+ }
+ dest += count1;
+ cursor1 += count1;
+ length1 -= count1;
+ if (length1 <= 1) {
+ exit = true;
+ break;
+ }
+ }
+ array[dest++] = array[cursor2++];
+ if (--length2 === 0) {
+ exit = true;
+ break;
+ }
+ count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare2);
+ if (count2 !== 0) {
+ for (i = 0; i < count2; i++) {
+ array[dest + i] = array[cursor2 + i];
+ }
+ dest += count2;
+ cursor2 += count2;
+ length2 -= count2;
+ if (length2 === 0) {
+ exit = true;
+ break;
+ }
+ }
+ array[dest++] = tmp[cursor1++];
+ if (--length1 === 1) {
+ exit = true;
+ break;
+ }
+ _minGallop--;
+ } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);
+ if (exit) {
+ break;
+ }
+ if (_minGallop < 0) {
+ _minGallop = 0;
+ }
+ _minGallop += 2;
+ }
+ minGallop = _minGallop;
+ minGallop < 1 && (minGallop = 1);
+ if (length1 === 1) {
+ for (i = 0; i < length2; i++) {
+ array[dest + i] = array[cursor2 + i];
+ }
+ array[dest + length2] = tmp[cursor1];
+ } else if (length1 === 0) {
+ throw new Error();
+ } else {
+ for (i = 0; i < length1; i++) {
+ array[dest + i] = tmp[cursor1 + i];
+ }
+ }
+ }
+ function mergeHigh(start1, length1, start2, length2) {
+ var i = 0;
+ for (i = 0; i < length2; i++) {
+ tmp[i] = array[start2 + i];
+ }
+ var cursor1 = start1 + length1 - 1;
+ var cursor2 = length2 - 1;
+ var dest = start2 + length2 - 1;
+ var customCursor = 0;
+ var customDest = 0;
+ array[dest--] = array[cursor1--];
+ if (--length1 === 0) {
+ customCursor = dest - (length2 - 1);
+ for (i = 0; i < length2; i++) {
+ array[customCursor + i] = tmp[i];
+ }
+ return;
+ }
+ if (length2 === 1) {
+ dest -= length1;
+ cursor1 -= length1;
+ customDest = dest + 1;
+ customCursor = cursor1 + 1;
+ for (i = length1 - 1; i >= 0; i--) {
+ array[customDest + i] = array[customCursor + i];
+ }
+ array[dest] = tmp[cursor2];
+ return;
+ }
+ var _minGallop = minGallop;
+ while (true) {
+ var count1 = 0;
+ var count2 = 0;
+ var exit = false;
+ do {
+ if (compare2(tmp[cursor2], array[cursor1]) < 0) {
+ array[dest--] = array[cursor1--];
+ count1++;
+ count2 = 0;
+ if (--length1 === 0) {
+ exit = true;
+ break;
+ }
+ } else {
+ array[dest--] = tmp[cursor2--];
+ count2++;
+ count1 = 0;
+ if (--length2 === 1) {
+ exit = true;
+ break;
+ }
+ }
+ } while ((count1 | count2) < _minGallop);
+ if (exit) {
+ break;
+ }
+ do {
+ count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare2);
+ if (count1 !== 0) {
+ dest -= count1;
+ cursor1 -= count1;
+ length1 -= count1;
+ customDest = dest + 1;
+ customCursor = cursor1 + 1;
+ for (i = count1 - 1; i >= 0; i--) {
+ array[customDest + i] = array[customCursor + i];
+ }
+ if (length1 === 0) {
+ exit = true;
+ break;
+ }
+ }
+ array[dest--] = tmp[cursor2--];
+ if (--length2 === 1) {
+ exit = true;
+ break;
+ }
+ count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare2);
+ if (count2 !== 0) {
+ dest -= count2;
+ cursor2 -= count2;
+ length2 -= count2;
+ customDest = dest + 1;
+ customCursor = cursor2 + 1;
+ for (i = 0; i < count2; i++) {
+ array[customDest + i] = tmp[customCursor + i];
+ }
+ if (length2 <= 1) {
+ exit = true;
+ break;
+ }
+ }
+ array[dest--] = array[cursor1--];
+ if (--length1 === 0) {
+ exit = true;
+ break;
+ }
+ _minGallop--;
+ } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);
+ if (exit) {
+ break;
+ }
+ if (_minGallop < 0) {
+ _minGallop = 0;
+ }
+ _minGallop += 2;
+ }
+ minGallop = _minGallop;
+ if (minGallop < 1) {
+ minGallop = 1;
+ }
+ if (length2 === 1) {
+ dest -= length1;
+ cursor1 -= length1;
+ customDest = dest + 1;
+ customCursor = cursor1 + 1;
+ for (i = length1 - 1; i >= 0; i--) {
+ array[customDest + i] = array[customCursor + i];
+ }
+ array[dest] = tmp[cursor2];
+ } else if (length2 === 0) {
+ throw new Error();
+ } else {
+ customCursor = dest - (length2 - 1);
+ for (i = 0; i < length2; i++) {
+ array[customCursor + i] = tmp[i];
+ }
+ }
+ }
+ return {
+ mergeRuns,
+ forceMergeRuns,
+ pushRun
+ };
+}
+function sort(array, compare2, lo, hi) {
+ if (!lo) {
+ lo = 0;
+ }
+ if (!hi) {
+ hi = array.length;
+ }
+ var remaining = hi - lo;
+ if (remaining < 2) {
+ return;
+ }
+ var runLength = 0;
+ if (remaining < DEFAULT_MIN_MERGE) {
+ runLength = makeAscendingRun(array, lo, hi, compare2);
+ binaryInsertionSort(array, lo, hi, lo + runLength, compare2);
+ return;
+ }
+ var ts = TimSort(array, compare2);
+ var minRun = minRunLength(remaining);
+ do {
+ runLength = makeAscendingRun(array, lo, hi, compare2);
+ if (runLength < minRun) {
+ var force = remaining;
+ if (force > minRun) {
+ force = minRun;
+ }
+ binaryInsertionSort(array, lo, lo + force, lo + runLength, compare2);
+ runLength = force;
+ }
+ ts.pushRun(lo, runLength);
+ ts.mergeRuns();
+ remaining -= runLength;
+ lo += runLength;
+ } while (remaining !== 0);
+ ts.forceMergeRuns();
+}
+
+// node_modules/zrender/lib/graphic/constants.js
+var REDRAW_BIT = 1;
+var STYLE_CHANGED_BIT = 2;
+var SHAPE_CHANGED_BIT = 4;
+
+// node_modules/zrender/lib/Storage.js
+var invalidZErrorLogged = false;
+function logInvalidZError() {
+ if (invalidZErrorLogged) {
+ return;
+ }
+ invalidZErrorLogged = true;
+ console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors");
+}
+function shapeCompareFunc(a, b) {
+ if (a.zlevel === b.zlevel) {
+ if (a.z === b.z) {
+ return a.z2 - b.z2;
+ }
+ return a.z - b.z;
+ }
+ return a.zlevel - b.zlevel;
+}
+var Storage = function() {
+ function Storage2() {
+ this._roots = [];
+ this._displayList = [];
+ this._displayListLen = 0;
+ this.displayableSortFunc = shapeCompareFunc;
+ }
+ Storage2.prototype.traverse = function(cb, context) {
+ for (var i = 0; i < this._roots.length; i++) {
+ this._roots[i].traverse(cb, context);
+ }
+ };
+ Storage2.prototype.getDisplayList = function(update, includeIgnore) {
+ includeIgnore = includeIgnore || false;
+ var displayList = this._displayList;
+ if (update || !displayList.length) {
+ this.updateDisplayList(includeIgnore);
+ }
+ return displayList;
+ };
+ Storage2.prototype.updateDisplayList = function(includeIgnore) {
+ this._displayListLen = 0;
+ var roots2 = this._roots;
+ var displayList = this._displayList;
+ for (var i = 0, len2 = roots2.length; i < len2; i++) {
+ this._updateAndAddDisplayable(roots2[i], null, includeIgnore);
+ }
+ displayList.length = this._displayListLen;
+ sort(displayList, shapeCompareFunc);
+ };
+ Storage2.prototype._updateAndAddDisplayable = function(el, clipPaths, includeIgnore) {
+ if (el.ignore && !includeIgnore) {
+ return;
+ }
+ el.beforeUpdate();
+ el.update();
+ el.afterUpdate();
+ var userSetClipPath = el.getClipPath();
+ if (el.ignoreClip) {
+ clipPaths = null;
+ } else if (userSetClipPath) {
+ if (clipPaths) {
+ clipPaths = clipPaths.slice();
+ } else {
+ clipPaths = [];
+ }
+ var currentClipPath = userSetClipPath;
+ var parentClipPath = el;
+ while (currentClipPath) {
+ currentClipPath.parent = parentClipPath;
+ currentClipPath.updateTransform();
+ clipPaths.push(currentClipPath);
+ parentClipPath = currentClipPath;
+ currentClipPath = currentClipPath.getClipPath();
+ }
+ }
+ if (el.childrenRef) {
+ var children = el.childrenRef();
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ if (el.__dirty) {
+ child.__dirty |= REDRAW_BIT;
+ }
+ this._updateAndAddDisplayable(child, clipPaths, includeIgnore);
+ }
+ el.__dirty = 0;
+ } else {
+ var disp = el;
+ if (clipPaths && clipPaths.length) {
+ disp.__clipPaths = clipPaths;
+ } else if (disp.__clipPaths && disp.__clipPaths.length > 0) {
+ disp.__clipPaths = [];
+ }
+ if (isNaN(disp.z)) {
+ logInvalidZError();
+ disp.z = 0;
+ }
+ if (isNaN(disp.z2)) {
+ logInvalidZError();
+ disp.z2 = 0;
+ }
+ if (isNaN(disp.zlevel)) {
+ logInvalidZError();
+ disp.zlevel = 0;
+ }
+ this._displayList[this._displayListLen++] = disp;
+ }
+ var decalEl = el.getDecalElement && el.getDecalElement();
+ if (decalEl) {
+ this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);
+ }
+ var textGuide = el.getTextGuideLine();
+ if (textGuide) {
+ this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);
+ }
+ var textEl = el.getTextContent();
+ if (textEl) {
+ this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);
+ }
+ };
+ Storage2.prototype.addRoot = function(el) {
+ if (el.__zr && el.__zr.storage === this) {
+ return;
+ }
+ this._roots.push(el);
+ };
+ Storage2.prototype.delRoot = function(el) {
+ if (el instanceof Array) {
+ for (var i = 0, l = el.length; i < l; i++) {
+ this.delRoot(el[i]);
+ }
+ return;
+ }
+ var idx = indexOf(this._roots, el);
+ if (idx >= 0) {
+ this._roots.splice(idx, 1);
+ }
+ };
+ Storage2.prototype.delAllRoots = function() {
+ this._roots = [];
+ this._displayList = [];
+ this._displayListLen = 0;
+ return;
+ };
+ Storage2.prototype.getRoots = function() {
+ return this._roots;
+ };
+ Storage2.prototype.dispose = function() {
+ this._displayList = null;
+ this._roots = null;
+ };
+ return Storage2;
+}();
+var Storage_default = Storage;
+
+// node_modules/zrender/lib/animation/requestAnimationFrame.js
+var requestAnimationFrame;
+requestAnimationFrame = env_default.hasGlobalWindow && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(func) {
+ return setTimeout(func, 16);
+};
+var requestAnimationFrame_default = requestAnimationFrame;
+
+// node_modules/zrender/lib/animation/easing.js
+var easingFuncs = {
+ linear: function(k) {
+ return k;
+ },
+ quadraticIn: function(k) {
+ return k * k;
+ },
+ quadraticOut: function(k) {
+ return k * (2 - k);
+ },
+ quadraticInOut: function(k) {
+ if ((k *= 2) < 1) {
+ return 0.5 * k * k;
+ }
+ return -0.5 * (--k * (k - 2) - 1);
+ },
+ cubicIn: function(k) {
+ return k * k * k;
+ },
+ cubicOut: function(k) {
+ return --k * k * k + 1;
+ },
+ cubicInOut: function(k) {
+ if ((k *= 2) < 1) {
+ return 0.5 * k * k * k;
+ }
+ return 0.5 * ((k -= 2) * k * k + 2);
+ },
+ quarticIn: function(k) {
+ return k * k * k * k;
+ },
+ quarticOut: function(k) {
+ return 1 - --k * k * k * k;
+ },
+ quarticInOut: function(k) {
+ if ((k *= 2) < 1) {
+ return 0.5 * k * k * k * k;
+ }
+ return -0.5 * ((k -= 2) * k * k * k - 2);
+ },
+ quinticIn: function(k) {
+ return k * k * k * k * k;
+ },
+ quinticOut: function(k) {
+ return --k * k * k * k * k + 1;
+ },
+ quinticInOut: function(k) {
+ if ((k *= 2) < 1) {
+ return 0.5 * k * k * k * k * k;
+ }
+ return 0.5 * ((k -= 2) * k * k * k * k + 2);
+ },
+ sinusoidalIn: function(k) {
+ return 1 - Math.cos(k * Math.PI / 2);
+ },
+ sinusoidalOut: function(k) {
+ return Math.sin(k * Math.PI / 2);
+ },
+ sinusoidalInOut: function(k) {
+ return 0.5 * (1 - Math.cos(Math.PI * k));
+ },
+ exponentialIn: function(k) {
+ return k === 0 ? 0 : Math.pow(1024, k - 1);
+ },
+ exponentialOut: function(k) {
+ return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);
+ },
+ exponentialInOut: function(k) {
+ if (k === 0) {
+ return 0;
+ }
+ if (k === 1) {
+ return 1;
+ }
+ if ((k *= 2) < 1) {
+ return 0.5 * Math.pow(1024, k - 1);
+ }
+ return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);
+ },
+ circularIn: function(k) {
+ return 1 - Math.sqrt(1 - k * k);
+ },
+ circularOut: function(k) {
+ return Math.sqrt(1 - --k * k);
+ },
+ circularInOut: function(k) {
+ if ((k *= 2) < 1) {
+ return -0.5 * (Math.sqrt(1 - k * k) - 1);
+ }
+ return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);
+ },
+ elasticIn: function(k) {
+ var s;
+ var a = 0.1;
+ var p = 0.4;
+ if (k === 0) {
+ return 0;
+ }
+ if (k === 1) {
+ return 1;
+ }
+ if (!a || a < 1) {
+ a = 1;
+ s = p / 4;
+ } else {
+ s = p * Math.asin(1 / a) / (2 * Math.PI);
+ }
+ return -(a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
+ },
+ elasticOut: function(k) {
+ var s;
+ var a = 0.1;
+ var p = 0.4;
+ if (k === 0) {
+ return 0;
+ }
+ if (k === 1) {
+ return 1;
+ }
+ if (!a || a < 1) {
+ a = 1;
+ s = p / 4;
+ } else {
+ s = p * Math.asin(1 / a) / (2 * Math.PI);
+ }
+ return a * Math.pow(2, -10 * k) * Math.sin((k - s) * (2 * Math.PI) / p) + 1;
+ },
+ elasticInOut: function(k) {
+ var s;
+ var a = 0.1;
+ var p = 0.4;
+ if (k === 0) {
+ return 0;
+ }
+ if (k === 1) {
+ return 1;
+ }
+ if (!a || a < 1) {
+ a = 1;
+ s = p / 4;
+ } else {
+ s = p * Math.asin(1 / a) / (2 * Math.PI);
+ }
+ if ((k *= 2) < 1) {
+ return -0.5 * (a * Math.pow(2, 10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p));
+ }
+ return a * Math.pow(2, -10 * (k -= 1)) * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;
+ },
+ backIn: function(k) {
+ var s = 1.70158;
+ return k * k * ((s + 1) * k - s);
+ },
+ backOut: function(k) {
+ var s = 1.70158;
+ return --k * k * ((s + 1) * k + s) + 1;
+ },
+ backInOut: function(k) {
+ var s = 1.70158 * 1.525;
+ if ((k *= 2) < 1) {
+ return 0.5 * (k * k * ((s + 1) * k - s));
+ }
+ return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);
+ },
+ bounceIn: function(k) {
+ return 1 - easingFuncs.bounceOut(1 - k);
+ },
+ bounceOut: function(k) {
+ if (k < 1 / 2.75) {
+ return 7.5625 * k * k;
+ } else if (k < 2 / 2.75) {
+ return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75;
+ } else if (k < 2.5 / 2.75) {
+ return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375;
+ } else {
+ return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375;
+ }
+ },
+ bounceInOut: function(k) {
+ if (k < 0.5) {
+ return easingFuncs.bounceIn(k * 2) * 0.5;
+ }
+ return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5;
+ }
+};
+var easing_default = easingFuncs;
+
+// node_modules/zrender/lib/core/curve.js
+var mathPow = Math.pow;
+var mathSqrt = Math.sqrt;
+var EPSILON = 1e-8;
+var EPSILON_NUMERIC = 1e-4;
+var THREE_SQRT = mathSqrt(3);
+var ONE_THIRD = 1 / 3;
+var _v0 = create();
+var _v1 = create();
+var _v2 = create();
+function isAroundZero(val) {
+ return val > -EPSILON && val < EPSILON;
+}
+function isNotAroundZero(val) {
+ return val > EPSILON || val < -EPSILON;
+}
+function cubicAt(p0, p1, p2, p3, t) {
+ var onet = 1 - t;
+ return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);
+}
+function cubicDerivativeAt(p0, p1, p2, p3, t) {
+ var onet = 1 - t;
+ return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);
+}
+function cubicRootAt(p0, p1, p2, p3, val, roots2) {
+ var a = p3 + 3 * (p1 - p2) - p0;
+ var b = 3 * (p2 - p1 * 2 + p0);
+ var c = 3 * (p1 - p0);
+ var d = p0 - val;
+ var A = b * b - 3 * a * c;
+ var B = b * c - 9 * a * d;
+ var C = c * c - 3 * b * d;
+ var n = 0;
+ if (isAroundZero(A) && isAroundZero(B)) {
+ if (isAroundZero(b)) {
+ roots2[0] = 0;
+ } else {
+ var t1 = -c / b;
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ }
+ } else {
+ var disc = B * B - 4 * A * C;
+ if (isAroundZero(disc)) {
+ var K = B / A;
+ var t1 = -b / a + K;
+ var t2 = -K / 2;
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ if (t2 >= 0 && t2 <= 1) {
+ roots2[n++] = t2;
+ }
+ } else if (disc > 0) {
+ var discSqrt = mathSqrt(disc);
+ var Y1 = A * b + 1.5 * a * (-B + discSqrt);
+ var Y2 = A * b + 1.5 * a * (-B - discSqrt);
+ if (Y1 < 0) {
+ Y1 = -mathPow(-Y1, ONE_THIRD);
+ } else {
+ Y1 = mathPow(Y1, ONE_THIRD);
+ }
+ if (Y2 < 0) {
+ Y2 = -mathPow(-Y2, ONE_THIRD);
+ } else {
+ Y2 = mathPow(Y2, ONE_THIRD);
+ }
+ var t1 = (-b - (Y1 + Y2)) / (3 * a);
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ } else {
+ var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));
+ var theta = Math.acos(T) / 3;
+ var ASqrt = mathSqrt(A);
+ var tmp = Math.cos(theta);
+ var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);
+ var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);
+ var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ if (t2 >= 0 && t2 <= 1) {
+ roots2[n++] = t2;
+ }
+ if (t3 >= 0 && t3 <= 1) {
+ roots2[n++] = t3;
+ }
+ }
+ }
+ return n;
+}
+function cubicExtrema(p0, p1, p2, p3, extrema2) {
+ var b = 6 * p2 - 12 * p1 + 6 * p0;
+ var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;
+ var c = 3 * p1 - 3 * p0;
+ var n = 0;
+ if (isAroundZero(a)) {
+ if (isNotAroundZero(b)) {
+ var t1 = -c / b;
+ if (t1 >= 0 && t1 <= 1) {
+ extrema2[n++] = t1;
+ }
+ }
+ } else {
+ var disc = b * b - 4 * a * c;
+ if (isAroundZero(disc)) {
+ extrema2[0] = -b / (2 * a);
+ } else if (disc > 0) {
+ var discSqrt = mathSqrt(disc);
+ var t1 = (-b + discSqrt) / (2 * a);
+ var t2 = (-b - discSqrt) / (2 * a);
+ if (t1 >= 0 && t1 <= 1) {
+ extrema2[n++] = t1;
+ }
+ if (t2 >= 0 && t2 <= 1) {
+ extrema2[n++] = t2;
+ }
+ }
+ }
+ return n;
+}
+function cubicSubdivide(p0, p1, p2, p3, t, out2) {
+ var p01 = (p1 - p0) * t + p0;
+ var p12 = (p2 - p1) * t + p1;
+ var p23 = (p3 - p2) * t + p2;
+ var p012 = (p12 - p01) * t + p01;
+ var p123 = (p23 - p12) * t + p12;
+ var p0123 = (p123 - p012) * t + p012;
+ out2[0] = p0;
+ out2[1] = p01;
+ out2[2] = p012;
+ out2[3] = p0123;
+ out2[4] = p0123;
+ out2[5] = p123;
+ out2[6] = p23;
+ out2[7] = p3;
+}
+function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out2) {
+ var t;
+ var interval = 5e-3;
+ var d = Infinity;
+ var prev;
+ var next;
+ var d1;
+ var d2;
+ _v0[0] = x;
+ _v0[1] = y;
+ for (var _t = 0; _t < 1; _t += 0.05) {
+ _v1[0] = cubicAt(x0, x1, x2, x3, _t);
+ _v1[1] = cubicAt(y0, y1, y2, y3, _t);
+ d1 = distSquare(_v0, _v1);
+ if (d1 < d) {
+ t = _t;
+ d = d1;
+ }
+ }
+ d = Infinity;
+ for (var i = 0; i < 32; i++) {
+ if (interval < EPSILON_NUMERIC) {
+ break;
+ }
+ prev = t - interval;
+ next = t + interval;
+ _v1[0] = cubicAt(x0, x1, x2, x3, prev);
+ _v1[1] = cubicAt(y0, y1, y2, y3, prev);
+ d1 = distSquare(_v1, _v0);
+ if (prev >= 0 && d1 < d) {
+ t = prev;
+ d = d1;
+ } else {
+ _v2[0] = cubicAt(x0, x1, x2, x3, next);
+ _v2[1] = cubicAt(y0, y1, y2, y3, next);
+ d2 = distSquare(_v2, _v0);
+ if (next <= 1 && d2 < d) {
+ t = next;
+ d = d2;
+ } else {
+ interval *= 0.5;
+ }
+ }
+ }
+ if (out2) {
+ out2[0] = cubicAt(x0, x1, x2, x3, t);
+ out2[1] = cubicAt(y0, y1, y2, y3, t);
+ }
+ return mathSqrt(d);
+}
+function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {
+ var px = x0;
+ var py = y0;
+ var d = 0;
+ var step = 1 / iteration;
+ for (var i = 1; i <= iteration; i++) {
+ var t = i * step;
+ var x = cubicAt(x0, x1, x2, x3, t);
+ var y = cubicAt(y0, y1, y2, y3, t);
+ var dx = x - px;
+ var dy = y - py;
+ d += Math.sqrt(dx * dx + dy * dy);
+ px = x;
+ py = y;
+ }
+ return d;
+}
+function quadraticAt(p0, p1, p2, t) {
+ var onet = 1 - t;
+ return onet * (onet * p0 + 2 * t * p1) + t * t * p2;
+}
+function quadraticDerivativeAt(p0, p1, p2, t) {
+ return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));
+}
+function quadraticRootAt(p0, p1, p2, val, roots2) {
+ var a = p0 - 2 * p1 + p2;
+ var b = 2 * (p1 - p0);
+ var c = p0 - val;
+ var n = 0;
+ if (isAroundZero(a)) {
+ if (isNotAroundZero(b)) {
+ var t1 = -c / b;
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ }
+ } else {
+ var disc = b * b - 4 * a * c;
+ if (isAroundZero(disc)) {
+ var t1 = -b / (2 * a);
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ } else if (disc > 0) {
+ var discSqrt = mathSqrt(disc);
+ var t1 = (-b + discSqrt) / (2 * a);
+ var t2 = (-b - discSqrt) / (2 * a);
+ if (t1 >= 0 && t1 <= 1) {
+ roots2[n++] = t1;
+ }
+ if (t2 >= 0 && t2 <= 1) {
+ roots2[n++] = t2;
+ }
+ }
+ }
+ return n;
+}
+function quadraticExtremum(p0, p1, p2) {
+ var divider = p0 + p2 - 2 * p1;
+ if (divider === 0) {
+ return 0.5;
+ } else {
+ return (p0 - p1) / divider;
+ }
+}
+function quadraticSubdivide(p0, p1, p2, t, out2) {
+ var p01 = (p1 - p0) * t + p0;
+ var p12 = (p2 - p1) * t + p1;
+ var p012 = (p12 - p01) * t + p01;
+ out2[0] = p0;
+ out2[1] = p01;
+ out2[2] = p012;
+ out2[3] = p012;
+ out2[4] = p12;
+ out2[5] = p2;
+}
+function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out2) {
+ var t;
+ var interval = 5e-3;
+ var d = Infinity;
+ _v0[0] = x;
+ _v0[1] = y;
+ for (var _t = 0; _t < 1; _t += 0.05) {
+ _v1[0] = quadraticAt(x0, x1, x2, _t);
+ _v1[1] = quadraticAt(y0, y1, y2, _t);
+ var d1 = distSquare(_v0, _v1);
+ if (d1 < d) {
+ t = _t;
+ d = d1;
+ }
+ }
+ d = Infinity;
+ for (var i = 0; i < 32; i++) {
+ if (interval < EPSILON_NUMERIC) {
+ break;
+ }
+ var prev = t - interval;
+ var next = t + interval;
+ _v1[0] = quadraticAt(x0, x1, x2, prev);
+ _v1[1] = quadraticAt(y0, y1, y2, prev);
+ var d1 = distSquare(_v1, _v0);
+ if (prev >= 0 && d1 < d) {
+ t = prev;
+ d = d1;
+ } else {
+ _v2[0] = quadraticAt(x0, x1, x2, next);
+ _v2[1] = quadraticAt(y0, y1, y2, next);
+ var d2 = distSquare(_v2, _v0);
+ if (next <= 1 && d2 < d) {
+ t = next;
+ d = d2;
+ } else {
+ interval *= 0.5;
+ }
+ }
+ }
+ if (out2) {
+ out2[0] = quadraticAt(x0, x1, x2, t);
+ out2[1] = quadraticAt(y0, y1, y2, t);
+ }
+ return mathSqrt(d);
+}
+function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {
+ var px = x0;
+ var py = y0;
+ var d = 0;
+ var step = 1 / iteration;
+ for (var i = 1; i <= iteration; i++) {
+ var t = i * step;
+ var x = quadraticAt(x0, x1, x2, t);
+ var y = quadraticAt(y0, y1, y2, t);
+ var dx = x - px;
+ var dy = y - py;
+ d += Math.sqrt(dx * dx + dy * dy);
+ px = x;
+ py = y;
+ }
+ return d;
+}
+
+// node_modules/zrender/lib/animation/cubicEasing.js
+var regexp = /cubic-bezier\(([0-9,\.e ]+)\)/;
+function createCubicEasingFunc(cubicEasingStr) {
+ var cubic = cubicEasingStr && regexp.exec(cubicEasingStr);
+ if (cubic) {
+ var points4 = cubic[1].split(",");
+ var a_1 = +trim(points4[0]);
+ var b_1 = +trim(points4[1]);
+ var c_1 = +trim(points4[2]);
+ var d_1 = +trim(points4[3]);
+ if (isNaN(a_1 + b_1 + c_1 + d_1)) {
+ return;
+ }
+ var roots_1 = [];
+ return function(p) {
+ return p <= 0 ? 0 : p >= 1 ? 1 : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]);
+ };
+ }
+}
+
+// node_modules/zrender/lib/animation/Clip.js
+var Clip = function() {
+ function Clip2(opts) {
+ this._inited = false;
+ this._startTime = 0;
+ this._pausedTime = 0;
+ this._paused = false;
+ this._life = opts.life || 1e3;
+ this._delay = opts.delay || 0;
+ this.loop = opts.loop || false;
+ this.onframe = opts.onframe || noop;
+ this.ondestroy = opts.ondestroy || noop;
+ this.onrestart = opts.onrestart || noop;
+ opts.easing && this.setEasing(opts.easing);
+ }
+ Clip2.prototype.step = function(globalTime, deltaTime) {
+ if (!this._inited) {
+ this._startTime = globalTime + this._delay;
+ this._inited = true;
+ }
+ if (this._paused) {
+ this._pausedTime += deltaTime;
+ return;
+ }
+ var life = this._life;
+ var elapsedTime = globalTime - this._startTime - this._pausedTime;
+ var percent = elapsedTime / life;
+ if (percent < 0) {
+ percent = 0;
+ }
+ percent = Math.min(percent, 1);
+ var easingFunc = this.easingFunc;
+ var schedule = easingFunc ? easingFunc(percent) : percent;
+ this.onframe(schedule);
+ if (percent === 1) {
+ if (this.loop) {
+ var remainder = elapsedTime % life;
+ this._startTime = globalTime - remainder;
+ this._pausedTime = 0;
+ this.onrestart();
+ } else {
+ return true;
+ }
+ }
+ return false;
+ };
+ Clip2.prototype.pause = function() {
+ this._paused = true;
+ };
+ Clip2.prototype.resume = function() {
+ this._paused = false;
+ };
+ Clip2.prototype.setEasing = function(easing) {
+ this.easing = easing;
+ this.easingFunc = isFunction(easing) ? easing : easing_default[easing] || createCubicEasingFunc(easing);
+ };
+ return Clip2;
+}();
+var Clip_default = Clip;
+
+// node_modules/zrender/lib/tool/color.js
+var color_exports = {};
+__export(color_exports, {
+ fastLerp: () => fastLerp,
+ fastMapToColor: () => fastMapToColor,
+ lerp: () => lerp2,
+ lift: () => lift,
+ liftColor: () => liftColor,
+ lum: () => lum,
+ mapToColor: () => mapToColor,
+ modifyAlpha: () => modifyAlpha,
+ modifyHSL: () => modifyHSL,
+ parse: () => parse,
+ random: () => random,
+ stringify: () => stringify,
+ toHex: () => toHex
+});
+
+// node_modules/zrender/lib/core/LRU.js
+var Entry = function() {
+ function Entry2(val) {
+ this.value = val;
+ }
+ return Entry2;
+}();
+var LinkedList = function() {
+ function LinkedList2() {
+ this._len = 0;
+ }
+ LinkedList2.prototype.insert = function(val) {
+ var entry = new Entry(val);
+ this.insertEntry(entry);
+ return entry;
+ };
+ LinkedList2.prototype.insertEntry = function(entry) {
+ if (!this.head) {
+ this.head = this.tail = entry;
+ } else {
+ this.tail.next = entry;
+ entry.prev = this.tail;
+ entry.next = null;
+ this.tail = entry;
+ }
+ this._len++;
+ };
+ LinkedList2.prototype.remove = function(entry) {
+ var prev = entry.prev;
+ var next = entry.next;
+ if (prev) {
+ prev.next = next;
+ } else {
+ this.head = next;
+ }
+ if (next) {
+ next.prev = prev;
+ } else {
+ this.tail = prev;
+ }
+ entry.next = entry.prev = null;
+ this._len--;
+ };
+ LinkedList2.prototype.len = function() {
+ return this._len;
+ };
+ LinkedList2.prototype.clear = function() {
+ this.head = this.tail = null;
+ this._len = 0;
+ };
+ return LinkedList2;
+}();
+var LRU = function() {
+ function LRU2(maxSize) {
+ this._list = new LinkedList();
+ this._maxSize = 10;
+ this._map = {};
+ this._maxSize = maxSize;
+ }
+ LRU2.prototype.put = function(key, value) {
+ var list = this._list;
+ var map3 = this._map;
+ var removed = null;
+ if (map3[key] == null) {
+ var len2 = list.len();
+ var entry = this._lastRemovedEntry;
+ if (len2 >= this._maxSize && len2 > 0) {
+ var leastUsedEntry = list.head;
+ list.remove(leastUsedEntry);
+ delete map3[leastUsedEntry.key];
+ removed = leastUsedEntry.value;
+ this._lastRemovedEntry = leastUsedEntry;
+ }
+ if (entry) {
+ entry.value = value;
+ } else {
+ entry = new Entry(value);
+ }
+ entry.key = key;
+ list.insertEntry(entry);
+ map3[key] = entry;
+ }
+ return removed;
+ };
+ LRU2.prototype.get = function(key) {
+ var entry = this._map[key];
+ var list = this._list;
+ if (entry != null) {
+ if (entry !== list.tail) {
+ list.remove(entry);
+ list.insertEntry(entry);
+ }
+ return entry.value;
+ }
+ };
+ LRU2.prototype.clear = function() {
+ this._list.clear();
+ this._map = {};
+ };
+ LRU2.prototype.len = function() {
+ return this._list.len();
+ };
+ return LRU2;
+}();
+var LRU_default = LRU;
+
+// node_modules/zrender/lib/tool/color.js
+var kCSSColorTable = {
+ "transparent": [0, 0, 0, 0],
+ "aliceblue": [240, 248, 255, 1],
+ "antiquewhite": [250, 235, 215, 1],
+ "aqua": [0, 255, 255, 1],
+ "aquamarine": [127, 255, 212, 1],
+ "azure": [240, 255, 255, 1],
+ "beige": [245, 245, 220, 1],
+ "bisque": [255, 228, 196, 1],
+ "black": [0, 0, 0, 1],
+ "blanchedalmond": [255, 235, 205, 1],
+ "blue": [0, 0, 255, 1],
+ "blueviolet": [138, 43, 226, 1],
+ "brown": [165, 42, 42, 1],
+ "burlywood": [222, 184, 135, 1],
+ "cadetblue": [95, 158, 160, 1],
+ "chartreuse": [127, 255, 0, 1],
+ "chocolate": [210, 105, 30, 1],
+ "coral": [255, 127, 80, 1],
+ "cornflowerblue": [100, 149, 237, 1],
+ "cornsilk": [255, 248, 220, 1],
+ "crimson": [220, 20, 60, 1],
+ "cyan": [0, 255, 255, 1],
+ "darkblue": [0, 0, 139, 1],
+ "darkcyan": [0, 139, 139, 1],
+ "darkgoldenrod": [184, 134, 11, 1],
+ "darkgray": [169, 169, 169, 1],
+ "darkgreen": [0, 100, 0, 1],
+ "darkgrey": [169, 169, 169, 1],
+ "darkkhaki": [189, 183, 107, 1],
+ "darkmagenta": [139, 0, 139, 1],
+ "darkolivegreen": [85, 107, 47, 1],
+ "darkorange": [255, 140, 0, 1],
+ "darkorchid": [153, 50, 204, 1],
+ "darkred": [139, 0, 0, 1],
+ "darksalmon": [233, 150, 122, 1],
+ "darkseagreen": [143, 188, 143, 1],
+ "darkslateblue": [72, 61, 139, 1],
+ "darkslategray": [47, 79, 79, 1],
+ "darkslategrey": [47, 79, 79, 1],
+ "darkturquoise": [0, 206, 209, 1],
+ "darkviolet": [148, 0, 211, 1],
+ "deeppink": [255, 20, 147, 1],
+ "deepskyblue": [0, 191, 255, 1],
+ "dimgray": [105, 105, 105, 1],
+ "dimgrey": [105, 105, 105, 1],
+ "dodgerblue": [30, 144, 255, 1],
+ "firebrick": [178, 34, 34, 1],
+ "floralwhite": [255, 250, 240, 1],
+ "forestgreen": [34, 139, 34, 1],
+ "fuchsia": [255, 0, 255, 1],
+ "gainsboro": [220, 220, 220, 1],
+ "ghostwhite": [248, 248, 255, 1],
+ "gold": [255, 215, 0, 1],
+ "goldenrod": [218, 165, 32, 1],
+ "gray": [128, 128, 128, 1],
+ "green": [0, 128, 0, 1],
+ "greenyellow": [173, 255, 47, 1],
+ "grey": [128, 128, 128, 1],
+ "honeydew": [240, 255, 240, 1],
+ "hotpink": [255, 105, 180, 1],
+ "indianred": [205, 92, 92, 1],
+ "indigo": [75, 0, 130, 1],
+ "ivory": [255, 255, 240, 1],
+ "khaki": [240, 230, 140, 1],
+ "lavender": [230, 230, 250, 1],
+ "lavenderblush": [255, 240, 245, 1],
+ "lawngreen": [124, 252, 0, 1],
+ "lemonchiffon": [255, 250, 205, 1],
+ "lightblue": [173, 216, 230, 1],
+ "lightcoral": [240, 128, 128, 1],
+ "lightcyan": [224, 255, 255, 1],
+ "lightgoldenrodyellow": [250, 250, 210, 1],
+ "lightgray": [211, 211, 211, 1],
+ "lightgreen": [144, 238, 144, 1],
+ "lightgrey": [211, 211, 211, 1],
+ "lightpink": [255, 182, 193, 1],
+ "lightsalmon": [255, 160, 122, 1],
+ "lightseagreen": [32, 178, 170, 1],
+ "lightskyblue": [135, 206, 250, 1],
+ "lightslategray": [119, 136, 153, 1],
+ "lightslategrey": [119, 136, 153, 1],
+ "lightsteelblue": [176, 196, 222, 1],
+ "lightyellow": [255, 255, 224, 1],
+ "lime": [0, 255, 0, 1],
+ "limegreen": [50, 205, 50, 1],
+ "linen": [250, 240, 230, 1],
+ "magenta": [255, 0, 255, 1],
+ "maroon": [128, 0, 0, 1],
+ "mediumaquamarine": [102, 205, 170, 1],
+ "mediumblue": [0, 0, 205, 1],
+ "mediumorchid": [186, 85, 211, 1],
+ "mediumpurple": [147, 112, 219, 1],
+ "mediumseagreen": [60, 179, 113, 1],
+ "mediumslateblue": [123, 104, 238, 1],
+ "mediumspringgreen": [0, 250, 154, 1],
+ "mediumturquoise": [72, 209, 204, 1],
+ "mediumvioletred": [199, 21, 133, 1],
+ "midnightblue": [25, 25, 112, 1],
+ "mintcream": [245, 255, 250, 1],
+ "mistyrose": [255, 228, 225, 1],
+ "moccasin": [255, 228, 181, 1],
+ "navajowhite": [255, 222, 173, 1],
+ "navy": [0, 0, 128, 1],
+ "oldlace": [253, 245, 230, 1],
+ "olive": [128, 128, 0, 1],
+ "olivedrab": [107, 142, 35, 1],
+ "orange": [255, 165, 0, 1],
+ "orangered": [255, 69, 0, 1],
+ "orchid": [218, 112, 214, 1],
+ "palegoldenrod": [238, 232, 170, 1],
+ "palegreen": [152, 251, 152, 1],
+ "paleturquoise": [175, 238, 238, 1],
+ "palevioletred": [219, 112, 147, 1],
+ "papayawhip": [255, 239, 213, 1],
+ "peachpuff": [255, 218, 185, 1],
+ "peru": [205, 133, 63, 1],
+ "pink": [255, 192, 203, 1],
+ "plum": [221, 160, 221, 1],
+ "powderblue": [176, 224, 230, 1],
+ "purple": [128, 0, 128, 1],
+ "red": [255, 0, 0, 1],
+ "rosybrown": [188, 143, 143, 1],
+ "royalblue": [65, 105, 225, 1],
+ "saddlebrown": [139, 69, 19, 1],
+ "salmon": [250, 128, 114, 1],
+ "sandybrown": [244, 164, 96, 1],
+ "seagreen": [46, 139, 87, 1],
+ "seashell": [255, 245, 238, 1],
+ "sienna": [160, 82, 45, 1],
+ "silver": [192, 192, 192, 1],
+ "skyblue": [135, 206, 235, 1],
+ "slateblue": [106, 90, 205, 1],
+ "slategray": [112, 128, 144, 1],
+ "slategrey": [112, 128, 144, 1],
+ "snow": [255, 250, 250, 1],
+ "springgreen": [0, 255, 127, 1],
+ "steelblue": [70, 130, 180, 1],
+ "tan": [210, 180, 140, 1],
+ "teal": [0, 128, 128, 1],
+ "thistle": [216, 191, 216, 1],
+ "tomato": [255, 99, 71, 1],
+ "turquoise": [64, 224, 208, 1],
+ "violet": [238, 130, 238, 1],
+ "wheat": [245, 222, 179, 1],
+ "white": [255, 255, 255, 1],
+ "whitesmoke": [245, 245, 245, 1],
+ "yellow": [255, 255, 0, 1],
+ "yellowgreen": [154, 205, 50, 1]
+};
+function clampCssByte(i) {
+ i = Math.round(i);
+ return i < 0 ? 0 : i > 255 ? 255 : i;
+}
+function clampCssAngle(i) {
+ i = Math.round(i);
+ return i < 0 ? 0 : i > 360 ? 360 : i;
+}
+function clampCssFloat(f) {
+ return f < 0 ? 0 : f > 1 ? 1 : f;
+}
+function parseCssInt(val) {
+ var str = val;
+ if (str.length && str.charAt(str.length - 1) === "%") {
+ return clampCssByte(parseFloat(str) / 100 * 255);
+ }
+ return clampCssByte(parseInt(str, 10));
+}
+function parseCssFloat(val) {
+ var str = val;
+ if (str.length && str.charAt(str.length - 1) === "%") {
+ return clampCssFloat(parseFloat(str) / 100);
+ }
+ return clampCssFloat(parseFloat(str));
+}
+function cssHueToRgb(m1, m2, h) {
+ if (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ if (h * 6 < 1) {
+ return m1 + (m2 - m1) * h * 6;
+ }
+ if (h * 2 < 1) {
+ return m2;
+ }
+ if (h * 3 < 2) {
+ return m1 + (m2 - m1) * (2 / 3 - h) * 6;
+ }
+ return m1;
+}
+function lerpNumber(a, b, p) {
+ return a + (b - a) * p;
+}
+function setRgba(out2, r, g, b, a) {
+ out2[0] = r;
+ out2[1] = g;
+ out2[2] = b;
+ out2[3] = a;
+ return out2;
+}
+function copyRgba(out2, a) {
+ out2[0] = a[0];
+ out2[1] = a[1];
+ out2[2] = a[2];
+ out2[3] = a[3];
+ return out2;
+}
+var colorCache = new LRU_default(20);
+var lastRemovedArr = null;
+function putToCache(colorStr, rgbaArr) {
+ if (lastRemovedArr) {
+ copyRgba(lastRemovedArr, rgbaArr);
+ }
+ lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || rgbaArr.slice());
+}
+function parse(colorStr, rgbaArr) {
+ if (!colorStr) {
+ return;
+ }
+ rgbaArr = rgbaArr || [];
+ var cached = colorCache.get(colorStr);
+ if (cached) {
+ return copyRgba(rgbaArr, cached);
+ }
+ colorStr = colorStr + "";
+ var str = colorStr.replace(/ /g, "").toLowerCase();
+ if (str in kCSSColorTable) {
+ copyRgba(rgbaArr, kCSSColorTable[str]);
+ putToCache(colorStr, rgbaArr);
+ return rgbaArr;
+ }
+ var strLen = str.length;
+ if (str.charAt(0) === "#") {
+ if (strLen === 4 || strLen === 5) {
+ var iv = parseInt(str.slice(1, 4), 16);
+ if (!(iv >= 0 && iv <= 4095)) {
+ setRgba(rgbaArr, 0, 0, 0, 1);
+ return;
+ }
+ setRgba(rgbaArr, (iv & 3840) >> 4 | (iv & 3840) >> 8, iv & 240 | (iv & 240) >> 4, iv & 15 | (iv & 15) << 4, strLen === 5 ? parseInt(str.slice(4), 16) / 15 : 1);
+ putToCache(colorStr, rgbaArr);
+ return rgbaArr;
+ } else if (strLen === 7 || strLen === 9) {
+ var iv = parseInt(str.slice(1, 7), 16);
+ if (!(iv >= 0 && iv <= 16777215)) {
+ setRgba(rgbaArr, 0, 0, 0, 1);
+ return;
+ }
+ setRgba(rgbaArr, (iv & 16711680) >> 16, (iv & 65280) >> 8, iv & 255, strLen === 9 ? parseInt(str.slice(7), 16) / 255 : 1);
+ putToCache(colorStr, rgbaArr);
+ return rgbaArr;
+ }
+ return;
+ }
+ var op = str.indexOf("(");
+ var ep = str.indexOf(")");
+ if (op !== -1 && ep + 1 === strLen) {
+ var fname = str.substr(0, op);
+ var params = str.substr(op + 1, ep - (op + 1)).split(",");
+ var alpha = 1;
+ switch (fname) {
+ case "rgba":
+ if (params.length !== 4) {
+ return params.length === 3 ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1) : setRgba(rgbaArr, 0, 0, 0, 1);
+ }
+ alpha = parseCssFloat(params.pop());
+ case "rgb":
+ if (params.length >= 3) {
+ setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3]));
+ putToCache(colorStr, rgbaArr);
+ return rgbaArr;
+ } else {
+ setRgba(rgbaArr, 0, 0, 0, 1);
+ return;
+ }
+ case "hsla":
+ if (params.length !== 4) {
+ setRgba(rgbaArr, 0, 0, 0, 1);
+ return;
+ }
+ params[3] = parseCssFloat(params[3]);
+ hsla2rgba(params, rgbaArr);
+ putToCache(colorStr, rgbaArr);
+ return rgbaArr;
+ case "hsl":
+ if (params.length !== 3) {
+ setRgba(rgbaArr, 0, 0, 0, 1);
+ return;
+ }
+ hsla2rgba(params, rgbaArr);
+ putToCache(colorStr, rgbaArr);
+ return rgbaArr;
+ default:
+ return;
+ }
+ }
+ setRgba(rgbaArr, 0, 0, 0, 1);
+ return;
+}
+function hsla2rgba(hsla, rgba) {
+ var h = (parseFloat(hsla[0]) % 360 + 360) % 360 / 360;
+ var s = parseCssFloat(hsla[1]);
+ var l = parseCssFloat(hsla[2]);
+ var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
+ var m1 = l * 2 - m2;
+ rgba = rgba || [];
+ setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);
+ if (hsla.length === 4) {
+ rgba[3] = hsla[3];
+ }
+ return rgba;
+}
+function rgba2hsla(rgba) {
+ if (!rgba) {
+ return;
+ }
+ var R = rgba[0] / 255;
+ var G = rgba[1] / 255;
+ var B = rgba[2] / 255;
+ var vMin = Math.min(R, G, B);
+ var vMax = Math.max(R, G, B);
+ var delta = vMax - vMin;
+ var L = (vMax + vMin) / 2;
+ var H;
+ var S;
+ if (delta === 0) {
+ H = 0;
+ S = 0;
+ } else {
+ if (L < 0.5) {
+ S = delta / (vMax + vMin);
+ } else {
+ S = delta / (2 - vMax - vMin);
+ }
+ var deltaR = ((vMax - R) / 6 + delta / 2) / delta;
+ var deltaG = ((vMax - G) / 6 + delta / 2) / delta;
+ var deltaB = ((vMax - B) / 6 + delta / 2) / delta;
+ if (R === vMax) {
+ H = deltaB - deltaG;
+ } else if (G === vMax) {
+ H = 1 / 3 + deltaR - deltaB;
+ } else if (B === vMax) {
+ H = 2 / 3 + deltaG - deltaR;
+ }
+ if (H < 0) {
+ H += 1;
+ }
+ if (H > 1) {
+ H -= 1;
+ }
+ }
+ var hsla = [H * 360, S, L];
+ if (rgba[3] != null) {
+ hsla.push(rgba[3]);
+ }
+ return hsla;
+}
+function lift(color, level) {
+ var colorArr = parse(color);
+ if (colorArr) {
+ for (var i = 0; i < 3; i++) {
+ if (level < 0) {
+ colorArr[i] = colorArr[i] * (1 - level) | 0;
+ } else {
+ colorArr[i] = (255 - colorArr[i]) * level + colorArr[i] | 0;
+ }
+ if (colorArr[i] > 255) {
+ colorArr[i] = 255;
+ } else if (colorArr[i] < 0) {
+ colorArr[i] = 0;
+ }
+ }
+ return stringify(colorArr, colorArr.length === 4 ? "rgba" : "rgb");
+ }
+}
+function toHex(color) {
+ var colorArr = parse(color);
+ if (colorArr) {
+ return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + +colorArr[2]).toString(16).slice(1);
+ }
+}
+function fastLerp(normalizedValue, colors, out2) {
+ if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {
+ return;
+ }
+ out2 = out2 || [];
+ var value = normalizedValue * (colors.length - 1);
+ var leftIndex = Math.floor(value);
+ var rightIndex = Math.ceil(value);
+ var leftColor = colors[leftIndex];
+ var rightColor = colors[rightIndex];
+ var dv = value - leftIndex;
+ out2[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));
+ out2[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));
+ out2[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));
+ out2[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));
+ return out2;
+}
+var fastMapToColor = fastLerp;
+function lerp2(normalizedValue, colors, fullOutput) {
+ if (!(colors && colors.length) || !(normalizedValue >= 0 && normalizedValue <= 1)) {
+ return;
+ }
+ var value = normalizedValue * (colors.length - 1);
+ var leftIndex = Math.floor(value);
+ var rightIndex = Math.ceil(value);
+ var leftColor = parse(colors[leftIndex]);
+ var rightColor = parse(colors[rightIndex]);
+ var dv = value - leftIndex;
+ var color = stringify([
+ clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),
+ clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),
+ clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),
+ clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))
+ ], "rgba");
+ return fullOutput ? {
+ color,
+ leftIndex,
+ rightIndex,
+ value
+ } : color;
+}
+var mapToColor = lerp2;
+function modifyHSL(color, h, s, l) {
+ var colorArr = parse(color);
+ if (color) {
+ colorArr = rgba2hsla(colorArr);
+ h != null && (colorArr[0] = clampCssAngle(h));
+ s != null && (colorArr[1] = parseCssFloat(s));
+ l != null && (colorArr[2] = parseCssFloat(l));
+ return stringify(hsla2rgba(colorArr), "rgba");
+ }
+}
+function modifyAlpha(color, alpha) {
+ var colorArr = parse(color);
+ if (colorArr && alpha != null) {
+ colorArr[3] = clampCssFloat(alpha);
+ return stringify(colorArr, "rgba");
+ }
+}
+function stringify(arrColor, type) {
+ if (!arrColor || !arrColor.length) {
+ return;
+ }
+ var colorStr = arrColor[0] + "," + arrColor[1] + "," + arrColor[2];
+ if (type === "rgba" || type === "hsva" || type === "hsla") {
+ colorStr += "," + arrColor[3];
+ }
+ return type + "(" + colorStr + ")";
+}
+function lum(color, backgroundLum) {
+ var arr = parse(color);
+ return arr ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255 + (1 - arr[3]) * backgroundLum : 0;
+}
+function random() {
+ return stringify([
+ Math.round(Math.random() * 255),
+ Math.round(Math.random() * 255),
+ Math.round(Math.random() * 255)
+ ], "rgb");
+}
+var liftedColorCache = new LRU_default(100);
+function liftColor(color) {
+ if (isString(color)) {
+ var liftedColor = liftedColorCache.get(color);
+ if (!liftedColor) {
+ liftedColor = lift(color, -0.1);
+ liftedColorCache.put(color, liftedColor);
+ }
+ return liftedColor;
+ } else if (isGradientObject(color)) {
+ var ret = extend({}, color);
+ ret.colorStops = map(color.colorStops, function(stop2) {
+ return {
+ offset: stop2.offset,
+ color: lift(stop2.color, -0.1)
+ };
+ });
+ return ret;
+ }
+ return color;
+}
+
+// node_modules/zrender/lib/svg/helper.js
+var mathRound = Math.round;
+function normalizeColor(color) {
+ var opacity;
+ if (!color || color === "transparent") {
+ color = "none";
+ } else if (typeof color === "string" && color.indexOf("rgba") > -1) {
+ var arr = parse(color);
+ if (arr) {
+ color = "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")";
+ opacity = arr[3];
+ }
+ }
+ return {
+ color,
+ opacity: opacity == null ? 1 : opacity
+ };
+}
+var EPSILON2 = 1e-4;
+function isAroundZero2(transform2) {
+ return transform2 < EPSILON2 && transform2 > -EPSILON2;
+}
+function round3(transform2) {
+ return mathRound(transform2 * 1e3) / 1e3;
+}
+function round4(transform2) {
+ return mathRound(transform2 * 1e4) / 1e4;
+}
+function getMatrixStr(m2) {
+ return "matrix(" + round3(m2[0]) + "," + round3(m2[1]) + "," + round3(m2[2]) + "," + round3(m2[3]) + "," + round4(m2[4]) + "," + round4(m2[5]) + ")";
+}
+var TEXT_ALIGN_TO_ANCHOR = {
+ left: "start",
+ right: "end",
+ center: "middle",
+ middle: "middle"
+};
+function adjustTextY(y, lineHeight, textBaseline) {
+ if (textBaseline === "top") {
+ y += lineHeight / 2;
+ } else if (textBaseline === "bottom") {
+ y -= lineHeight / 2;
+ }
+ return y;
+}
+function hasShadow(style) {
+ return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);
+}
+function getShadowKey(displayable) {
+ var style = displayable.style;
+ var globalScale = displayable.getGlobalScale();
+ return [
+ style.shadowColor,
+ (style.shadowBlur || 0).toFixed(2),
+ (style.shadowOffsetX || 0).toFixed(2),
+ (style.shadowOffsetY || 0).toFixed(2),
+ globalScale[0],
+ globalScale[1]
+ ].join(",");
+}
+function isImagePattern(val) {
+ return val && !!val.image;
+}
+function isSVGPattern(val) {
+ return val && !!val.svgElement;
+}
+function isPattern(val) {
+ return isImagePattern(val) || isSVGPattern(val);
+}
+function isLinearGradient(val) {
+ return val.type === "linear";
+}
+function isRadialGradient(val) {
+ return val.type === "radial";
+}
+function isGradient(val) {
+ return val && (val.type === "linear" || val.type === "radial");
+}
+function getIdURL(id) {
+ return "url(#" + id + ")";
+}
+function getPathPrecision(el) {
+ var scale4 = el.getGlobalScale();
+ var size = Math.max(scale4[0], scale4[1]);
+ return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1);
+}
+function getSRTTransformString(transform2) {
+ var x = transform2.x || 0;
+ var y = transform2.y || 0;
+ var rotation = (transform2.rotation || 0) * RADIAN_TO_DEGREE;
+ var scaleX = retrieve2(transform2.scaleX, 1);
+ var scaleY = retrieve2(transform2.scaleY, 1);
+ var skewX = transform2.skewX || 0;
+ var skewY = transform2.skewY || 0;
+ var res = [];
+ if (x || y) {
+ res.push("translate(" + x + "px," + y + "px)");
+ }
+ if (rotation) {
+ res.push("rotate(" + rotation + ")");
+ }
+ if (scaleX !== 1 || scaleY !== 1) {
+ res.push("scale(" + scaleX + "," + scaleY + ")");
+ }
+ if (skewX || skewY) {
+ res.push("skew(" + mathRound(skewX * RADIAN_TO_DEGREE) + "deg, " + mathRound(skewY * RADIAN_TO_DEGREE) + "deg)");
+ }
+ return res.join(" ");
+}
+var encodeBase64 = function() {
+ if (env_default.hasGlobalWindow && isFunction(window.btoa)) {
+ return function(str) {
+ return window.btoa(unescape(encodeURIComponent(str)));
+ };
+ }
+ if (typeof Buffer !== "undefined") {
+ return function(str) {
+ return Buffer.from(str).toString("base64");
+ };
+ }
+ return function(str) {
+ if (true) {
+ logError("Base64 isn't natively supported in the current environment.");
+ }
+ return null;
+ };
+}();
+
+// node_modules/zrender/lib/animation/Animator.js
+var arraySlice = Array.prototype.slice;
+function interpolateNumber(p0, p1, percent) {
+ return (p1 - p0) * percent + p0;
+}
+function interpolate1DArray(out2, p0, p1, percent) {
+ var len2 = p0.length;
+ for (var i = 0; i < len2; i++) {
+ out2[i] = interpolateNumber(p0[i], p1[i], percent);
+ }
+ return out2;
+}
+function interpolate2DArray(out2, p0, p1, percent) {
+ var len2 = p0.length;
+ var len22 = len2 && p0[0].length;
+ for (var i = 0; i < len2; i++) {
+ if (!out2[i]) {
+ out2[i] = [];
+ }
+ for (var j = 0; j < len22; j++) {
+ out2[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);
+ }
+ }
+ return out2;
+}
+function add1DArray(out2, p0, p1, sign) {
+ var len2 = p0.length;
+ for (var i = 0; i < len2; i++) {
+ out2[i] = p0[i] + p1[i] * sign;
+ }
+ return out2;
+}
+function add2DArray(out2, p0, p1, sign) {
+ var len2 = p0.length;
+ var len22 = len2 && p0[0].length;
+ for (var i = 0; i < len2; i++) {
+ if (!out2[i]) {
+ out2[i] = [];
+ }
+ for (var j = 0; j < len22; j++) {
+ out2[i][j] = p0[i][j] + p1[i][j] * sign;
+ }
+ }
+ return out2;
+}
+function fillColorStops(val0, val1) {
+ var len0 = val0.length;
+ var len1 = val1.length;
+ var shorterArr = len0 > len1 ? val1 : val0;
+ var shorterLen = Math.min(len0, len1);
+ var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 };
+ for (var i = shorterLen; i < Math.max(len0, len1); i++) {
+ shorterArr.push({
+ offset: last.offset,
+ color: last.color.slice()
+ });
+ }
+}
+function fillArray(val0, val1, arrDim) {
+ var arr0 = val0;
+ var arr1 = val1;
+ if (!arr0.push || !arr1.push) {
+ return;
+ }
+ var arr0Len = arr0.length;
+ var arr1Len = arr1.length;
+ if (arr0Len !== arr1Len) {
+ var isPreviousLarger = arr0Len > arr1Len;
+ if (isPreviousLarger) {
+ arr0.length = arr1Len;
+ } else {
+ for (var i = arr0Len; i < arr1Len; i++) {
+ arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));
+ }
+ }
+ }
+ var len2 = arr0[0] && arr0[0].length;
+ for (var i = 0; i < arr0.length; i++) {
+ if (arrDim === 1) {
+ if (isNaN(arr0[i])) {
+ arr0[i] = arr1[i];
+ }
+ } else {
+ for (var j = 0; j < len2; j++) {
+ if (isNaN(arr0[i][j])) {
+ arr0[i][j] = arr1[i][j];
+ }
+ }
+ }
+ }
+}
+function cloneValue(value) {
+ if (isArrayLike(value)) {
+ var len2 = value.length;
+ if (isArrayLike(value[0])) {
+ var ret = [];
+ for (var i = 0; i < len2; i++) {
+ ret.push(arraySlice.call(value[i]));
+ }
+ return ret;
+ }
+ return arraySlice.call(value);
+ }
+ return value;
+}
+function rgba2String(rgba) {
+ rgba[0] = Math.floor(rgba[0]) || 0;
+ rgba[1] = Math.floor(rgba[1]) || 0;
+ rgba[2] = Math.floor(rgba[2]) || 0;
+ rgba[3] = rgba[3] == null ? 1 : rgba[3];
+ return "rgba(" + rgba.join(",") + ")";
+}
+function guessArrayDim(value) {
+ return isArrayLike(value && value[0]) ? 2 : 1;
+}
+var VALUE_TYPE_NUMBER = 0;
+var VALUE_TYPE_1D_ARRAY = 1;
+var VALUE_TYPE_2D_ARRAY = 2;
+var VALUE_TYPE_COLOR = 3;
+var VALUE_TYPE_LINEAR_GRADIENT = 4;
+var VALUE_TYPE_RADIAL_GRADIENT = 5;
+var VALUE_TYPE_UNKOWN = 6;
+function isGradientValueType(valType) {
+ return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT;
+}
+function isArrayValueType(valType) {
+ return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY;
+}
+var tmpRgba = [0, 0, 0, 0];
+var Track = function() {
+ function Track2(propName) {
+ this.keyframes = [];
+ this.discrete = false;
+ this._invalid = false;
+ this._needsSort = false;
+ this._lastFr = 0;
+ this._lastFrP = 0;
+ this.propName = propName;
+ }
+ Track2.prototype.isFinished = function() {
+ return this._finished;
+ };
+ Track2.prototype.setFinished = function() {
+ this._finished = true;
+ if (this._additiveTrack) {
+ this._additiveTrack.setFinished();
+ }
+ };
+ Track2.prototype.needsAnimate = function() {
+ return this.keyframes.length >= 1;
+ };
+ Track2.prototype.getAdditiveTrack = function() {
+ return this._additiveTrack;
+ };
+ Track2.prototype.addKeyframe = function(time, rawValue, easing) {
+ this._needsSort = true;
+ var keyframes = this.keyframes;
+ var len2 = keyframes.length;
+ var discrete = false;
+ var valType = VALUE_TYPE_UNKOWN;
+ var value = rawValue;
+ if (isArrayLike(rawValue)) {
+ var arrayDim = guessArrayDim(rawValue);
+ valType = arrayDim;
+ if (arrayDim === 1 && !isNumber(rawValue[0]) || arrayDim === 2 && !isNumber(rawValue[0][0])) {
+ discrete = true;
+ }
+ } else {
+ if (isNumber(rawValue) && !eqNaN(rawValue)) {
+ valType = VALUE_TYPE_NUMBER;
+ } else if (isString(rawValue)) {
+ if (!isNaN(+rawValue)) {
+ valType = VALUE_TYPE_NUMBER;
+ } else {
+ var colorArray = parse(rawValue);
+ if (colorArray) {
+ value = colorArray;
+ valType = VALUE_TYPE_COLOR;
+ }
+ }
+ } else if (isGradientObject(rawValue)) {
+ var parsedGradient = extend({}, value);
+ parsedGradient.colorStops = map(rawValue.colorStops, function(colorStop) {
+ return {
+ offset: colorStop.offset,
+ color: parse(colorStop.color)
+ };
+ });
+ if (isLinearGradient(rawValue)) {
+ valType = VALUE_TYPE_LINEAR_GRADIENT;
+ } else if (isRadialGradient(rawValue)) {
+ valType = VALUE_TYPE_RADIAL_GRADIENT;
+ }
+ value = parsedGradient;
+ }
+ }
+ if (len2 === 0) {
+ this.valType = valType;
+ } else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {
+ discrete = true;
+ }
+ this.discrete = this.discrete || discrete;
+ var kf = {
+ time,
+ value,
+ rawValue,
+ percent: 0
+ };
+ if (easing) {
+ kf.easing = easing;
+ kf.easingFunc = isFunction(easing) ? easing : easing_default[easing] || createCubicEasingFunc(easing);
+ }
+ keyframes.push(kf);
+ return kf;
+ };
+ Track2.prototype.prepare = function(maxTime, additiveTrack) {
+ var kfs = this.keyframes;
+ if (this._needsSort) {
+ kfs.sort(function(a, b) {
+ return a.time - b.time;
+ });
+ }
+ var valType = this.valType;
+ var kfsLen = kfs.length;
+ var lastKf = kfs[kfsLen - 1];
+ var isDiscrete = this.discrete;
+ var isArr = isArrayValueType(valType);
+ var isGradient2 = isGradientValueType(valType);
+ for (var i = 0; i < kfsLen; i++) {
+ var kf = kfs[i];
+ var value = kf.value;
+ var lastValue = lastKf.value;
+ kf.percent = kf.time / maxTime;
+ if (!isDiscrete) {
+ if (isArr && i !== kfsLen - 1) {
+ fillArray(value, lastValue, valType);
+ } else if (isGradient2) {
+ fillColorStops(value.colorStops, lastValue.colorStops);
+ }
+ }
+ }
+ if (!isDiscrete && valType !== VALUE_TYPE_RADIAL_GRADIENT && additiveTrack && this.needsAnimate() && additiveTrack.needsAnimate() && valType === additiveTrack.valType && !additiveTrack._finished) {
+ this._additiveTrack = additiveTrack;
+ var startValue = kfs[0].value;
+ for (var i = 0; i < kfsLen; i++) {
+ if (valType === VALUE_TYPE_NUMBER) {
+ kfs[i].additiveValue = kfs[i].value - startValue;
+ } else if (valType === VALUE_TYPE_COLOR) {
+ kfs[i].additiveValue = add1DArray([], kfs[i].value, startValue, -1);
+ } else if (isArrayValueType(valType)) {
+ kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY ? add1DArray([], kfs[i].value, startValue, -1) : add2DArray([], kfs[i].value, startValue, -1);
+ }
+ }
+ }
+ };
+ Track2.prototype.step = function(target, percent) {
+ if (this._finished) {
+ return;
+ }
+ if (this._additiveTrack && this._additiveTrack._finished) {
+ this._additiveTrack = null;
+ }
+ var isAdditive = this._additiveTrack != null;
+ var valueKey = isAdditive ? "additiveValue" : "value";
+ var valType = this.valType;
+ var keyframes = this.keyframes;
+ var kfsNum = keyframes.length;
+ var propName = this.propName;
+ var isValueColor = valType === VALUE_TYPE_COLOR;
+ var frameIdx;
+ var lastFrame = this._lastFr;
+ var mathMin12 = Math.min;
+ var frame;
+ var nextFrame;
+ if (kfsNum === 1) {
+ frame = nextFrame = keyframes[0];
+ } else {
+ if (percent < 0) {
+ frameIdx = 0;
+ } else if (percent < this._lastFrP) {
+ var start2 = mathMin12(lastFrame + 1, kfsNum - 1);
+ for (frameIdx = start2; frameIdx >= 0; frameIdx--) {
+ if (keyframes[frameIdx].percent <= percent) {
+ break;
+ }
+ }
+ frameIdx = mathMin12(frameIdx, kfsNum - 2);
+ } else {
+ for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {
+ if (keyframes[frameIdx].percent > percent) {
+ break;
+ }
+ }
+ frameIdx = mathMin12(frameIdx - 1, kfsNum - 2);
+ }
+ nextFrame = keyframes[frameIdx + 1];
+ frame = keyframes[frameIdx];
+ }
+ if (!(frame && nextFrame)) {
+ return;
+ }
+ this._lastFr = frameIdx;
+ this._lastFrP = percent;
+ var interval = nextFrame.percent - frame.percent;
+ var w = interval === 0 ? 1 : mathMin12((percent - frame.percent) / interval, 1);
+ if (nextFrame.easingFunc) {
+ w = nextFrame.easingFunc(w);
+ }
+ var targetArr = isAdditive ? this._additiveValue : isValueColor ? tmpRgba : target[propName];
+ if ((isArrayValueType(valType) || isValueColor) && !targetArr) {
+ targetArr = this._additiveValue = [];
+ }
+ if (this.discrete) {
+ target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue;
+ } else if (isArrayValueType(valType)) {
+ valType === VALUE_TYPE_1D_ARRAY ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w) : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);
+ } else if (isGradientValueType(valType)) {
+ var val = frame[valueKey];
+ var nextVal_1 = nextFrame[valueKey];
+ var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT;
+ target[propName] = {
+ type: isLinearGradient_1 ? "linear" : "radial",
+ x: interpolateNumber(val.x, nextVal_1.x, w),
+ y: interpolateNumber(val.y, nextVal_1.y, w),
+ colorStops: map(val.colorStops, function(colorStop, idx) {
+ var nextColorStop = nextVal_1.colorStops[idx];
+ return {
+ offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w),
+ color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w))
+ };
+ }),
+ global: nextVal_1.global
+ };
+ if (isLinearGradient_1) {
+ target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w);
+ target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w);
+ } else {
+ target[propName].r = interpolateNumber(val.r, nextVal_1.r, w);
+ }
+ } else if (isValueColor) {
+ interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);
+ if (!isAdditive) {
+ target[propName] = rgba2String(targetArr);
+ }
+ } else {
+ var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);
+ if (isAdditive) {
+ this._additiveValue = value;
+ } else {
+ target[propName] = value;
+ }
+ }
+ if (isAdditive) {
+ this._addToTarget(target);
+ }
+ };
+ Track2.prototype._addToTarget = function(target) {
+ var valType = this.valType;
+ var propName = this.propName;
+ var additiveValue = this._additiveValue;
+ if (valType === VALUE_TYPE_NUMBER) {
+ target[propName] = target[propName] + additiveValue;
+ } else if (valType === VALUE_TYPE_COLOR) {
+ parse(target[propName], tmpRgba);
+ add1DArray(tmpRgba, tmpRgba, additiveValue, 1);
+ target[propName] = rgba2String(tmpRgba);
+ } else if (valType === VALUE_TYPE_1D_ARRAY) {
+ add1DArray(target[propName], target[propName], additiveValue, 1);
+ } else if (valType === VALUE_TYPE_2D_ARRAY) {
+ add2DArray(target[propName], target[propName], additiveValue, 1);
+ }
+ };
+ return Track2;
+}();
+var Animator = function() {
+ function Animator2(target, loop, allowDiscreteAnimation, additiveTo) {
+ this._tracks = {};
+ this._trackKeys = [];
+ this._maxTime = 0;
+ this._started = 0;
+ this._clip = null;
+ this._target = target;
+ this._loop = loop;
+ if (loop && additiveTo) {
+ logError("Can' use additive animation on looped animation.");
+ return;
+ }
+ this._additiveAnimators = additiveTo;
+ this._allowDiscrete = allowDiscreteAnimation;
+ }
+ Animator2.prototype.getMaxTime = function() {
+ return this._maxTime;
+ };
+ Animator2.prototype.getDelay = function() {
+ return this._delay;
+ };
+ Animator2.prototype.getLoop = function() {
+ return this._loop;
+ };
+ Animator2.prototype.getTarget = function() {
+ return this._target;
+ };
+ Animator2.prototype.changeTarget = function(target) {
+ this._target = target;
+ };
+ Animator2.prototype.when = function(time, props, easing) {
+ return this.whenWithKeys(time, props, keys(props), easing);
+ };
+ Animator2.prototype.whenWithKeys = function(time, props, propNames, easing) {
+ var tracks = this._tracks;
+ for (var i = 0; i < propNames.length; i++) {
+ var propName = propNames[i];
+ var track = tracks[propName];
+ if (!track) {
+ track = tracks[propName] = new Track(propName);
+ var initialValue = void 0;
+ var additiveTrack = this._getAdditiveTrack(propName);
+ if (additiveTrack) {
+ var addtiveTrackKfs = additiveTrack.keyframes;
+ var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1];
+ initialValue = lastFinalKf && lastFinalKf.value;
+ if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {
+ initialValue = rgba2String(initialValue);
+ }
+ } else {
+ initialValue = this._target[propName];
+ }
+ if (initialValue == null) {
+ continue;
+ }
+ if (time > 0) {
+ track.addKeyframe(0, cloneValue(initialValue), easing);
+ }
+ this._trackKeys.push(propName);
+ }
+ track.addKeyframe(time, cloneValue(props[propName]), easing);
+ }
+ this._maxTime = Math.max(this._maxTime, time);
+ return this;
+ };
+ Animator2.prototype.pause = function() {
+ this._clip.pause();
+ this._paused = true;
+ };
+ Animator2.prototype.resume = function() {
+ this._clip.resume();
+ this._paused = false;
+ };
+ Animator2.prototype.isPaused = function() {
+ return !!this._paused;
+ };
+ Animator2.prototype.duration = function(duration) {
+ this._maxTime = duration;
+ this._force = true;
+ return this;
+ };
+ Animator2.prototype._doneCallback = function() {
+ this._setTracksFinished();
+ this._clip = null;
+ var doneList = this._doneCbs;
+ if (doneList) {
+ var len2 = doneList.length;
+ for (var i = 0; i < len2; i++) {
+ doneList[i].call(this);
+ }
+ }
+ };
+ Animator2.prototype._abortedCallback = function() {
+ this._setTracksFinished();
+ var animation = this.animation;
+ var abortedList = this._abortedCbs;
+ if (animation) {
+ animation.removeClip(this._clip);
+ }
+ this._clip = null;
+ if (abortedList) {
+ for (var i = 0; i < abortedList.length; i++) {
+ abortedList[i].call(this);
+ }
+ }
+ };
+ Animator2.prototype._setTracksFinished = function() {
+ var tracks = this._tracks;
+ var tracksKeys = this._trackKeys;
+ for (var i = 0; i < tracksKeys.length; i++) {
+ tracks[tracksKeys[i]].setFinished();
+ }
+ };
+ Animator2.prototype._getAdditiveTrack = function(trackName) {
+ var additiveTrack;
+ var additiveAnimators = this._additiveAnimators;
+ if (additiveAnimators) {
+ for (var i = 0; i < additiveAnimators.length; i++) {
+ var track = additiveAnimators[i].getTrack(trackName);
+ if (track) {
+ additiveTrack = track;
+ }
+ }
+ }
+ return additiveTrack;
+ };
+ Animator2.prototype.start = function(easing) {
+ if (this._started > 0) {
+ return;
+ }
+ this._started = 1;
+ var self2 = this;
+ var tracks = [];
+ var maxTime = this._maxTime || 0;
+ for (var i = 0; i < this._trackKeys.length; i++) {
+ var propName = this._trackKeys[i];
+ var track = this._tracks[propName];
+ var additiveTrack = this._getAdditiveTrack(propName);
+ var kfs = track.keyframes;
+ var kfsNum = kfs.length;
+ track.prepare(maxTime, additiveTrack);
+ if (track.needsAnimate()) {
+ if (!this._allowDiscrete && track.discrete) {
+ var lastKf = kfs[kfsNum - 1];
+ if (lastKf) {
+ self2._target[track.propName] = lastKf.rawValue;
+ }
+ track.setFinished();
+ } else {
+ tracks.push(track);
+ }
+ }
+ }
+ if (tracks.length || this._force) {
+ var clip2 = new Clip_default({
+ life: maxTime,
+ loop: this._loop,
+ delay: this._delay || 0,
+ onframe: function(percent) {
+ self2._started = 2;
+ var additiveAnimators = self2._additiveAnimators;
+ if (additiveAnimators) {
+ var stillHasAdditiveAnimator = false;
+ for (var i2 = 0; i2 < additiveAnimators.length; i2++) {
+ if (additiveAnimators[i2]._clip) {
+ stillHasAdditiveAnimator = true;
+ break;
+ }
+ }
+ if (!stillHasAdditiveAnimator) {
+ self2._additiveAnimators = null;
+ }
+ }
+ for (var i2 = 0; i2 < tracks.length; i2++) {
+ tracks[i2].step(self2._target, percent);
+ }
+ var onframeList = self2._onframeCbs;
+ if (onframeList) {
+ for (var i2 = 0; i2 < onframeList.length; i2++) {
+ onframeList[i2](self2._target, percent);
+ }
+ }
+ },
+ ondestroy: function() {
+ self2._doneCallback();
+ }
+ });
+ this._clip = clip2;
+ if (this.animation) {
+ this.animation.addClip(clip2);
+ }
+ if (easing) {
+ clip2.setEasing(easing);
+ }
+ } else {
+ this._doneCallback();
+ }
+ return this;
+ };
+ Animator2.prototype.stop = function(forwardToLast) {
+ if (!this._clip) {
+ return;
+ }
+ var clip2 = this._clip;
+ if (forwardToLast) {
+ clip2.onframe(1);
+ }
+ this._abortedCallback();
+ };
+ Animator2.prototype.delay = function(time) {
+ this._delay = time;
+ return this;
+ };
+ Animator2.prototype.during = function(cb) {
+ if (cb) {
+ if (!this._onframeCbs) {
+ this._onframeCbs = [];
+ }
+ this._onframeCbs.push(cb);
+ }
+ return this;
+ };
+ Animator2.prototype.done = function(cb) {
+ if (cb) {
+ if (!this._doneCbs) {
+ this._doneCbs = [];
+ }
+ this._doneCbs.push(cb);
+ }
+ return this;
+ };
+ Animator2.prototype.aborted = function(cb) {
+ if (cb) {
+ if (!this._abortedCbs) {
+ this._abortedCbs = [];
+ }
+ this._abortedCbs.push(cb);
+ }
+ return this;
+ };
+ Animator2.prototype.getClip = function() {
+ return this._clip;
+ };
+ Animator2.prototype.getTrack = function(propName) {
+ return this._tracks[propName];
+ };
+ Animator2.prototype.getTracks = function() {
+ var _this = this;
+ return map(this._trackKeys, function(key) {
+ return _this._tracks[key];
+ });
+ };
+ Animator2.prototype.stopTracks = function(propNames, forwardToLast) {
+ if (!propNames.length || !this._clip) {
+ return true;
+ }
+ var tracks = this._tracks;
+ var tracksKeys = this._trackKeys;
+ for (var i = 0; i < propNames.length; i++) {
+ var track = tracks[propNames[i]];
+ if (track && !track.isFinished()) {
+ if (forwardToLast) {
+ track.step(this._target, 1);
+ } else if (this._started === 1) {
+ track.step(this._target, 0);
+ }
+ track.setFinished();
+ }
+ }
+ var allAborted = true;
+ for (var i = 0; i < tracksKeys.length; i++) {
+ if (!tracks[tracksKeys[i]].isFinished()) {
+ allAborted = false;
+ break;
+ }
+ }
+ if (allAborted) {
+ this._abortedCallback();
+ }
+ return allAborted;
+ };
+ Animator2.prototype.saveTo = function(target, trackKeys, firstOrLast) {
+ if (!target) {
+ return;
+ }
+ trackKeys = trackKeys || this._trackKeys;
+ for (var i = 0; i < trackKeys.length; i++) {
+ var propName = trackKeys[i];
+ var track = this._tracks[propName];
+ if (!track || track.isFinished()) {
+ continue;
+ }
+ var kfs = track.keyframes;
+ var kf = kfs[firstOrLast ? 0 : kfs.length - 1];
+ if (kf) {
+ target[propName] = cloneValue(kf.rawValue);
+ }
+ }
+ };
+ Animator2.prototype.__changeFinalValue = function(finalProps, trackKeys) {
+ trackKeys = trackKeys || keys(finalProps);
+ for (var i = 0; i < trackKeys.length; i++) {
+ var propName = trackKeys[i];
+ var track = this._tracks[propName];
+ if (!track) {
+ continue;
+ }
+ var kfs = track.keyframes;
+ if (kfs.length > 1) {
+ var lastKf = kfs.pop();
+ track.addKeyframe(lastKf.time, finalProps[propName]);
+ track.prepare(this._maxTime, track.getAdditiveTrack());
+ }
+ }
+ };
+ return Animator2;
+}();
+var Animator_default = Animator;
+
+// node_modules/zrender/lib/animation/Animation.js
+function getTime() {
+ return new Date().getTime();
+}
+var Animation = function(_super) {
+ __extends(Animation2, _super);
+ function Animation2(opts) {
+ var _this = _super.call(this) || this;
+ _this._running = false;
+ _this._time = 0;
+ _this._pausedTime = 0;
+ _this._pauseStart = 0;
+ _this._paused = false;
+ opts = opts || {};
+ _this.stage = opts.stage || {};
+ return _this;
+ }
+ Animation2.prototype.addClip = function(clip2) {
+ if (clip2.animation) {
+ this.removeClip(clip2);
+ }
+ if (!this._head) {
+ this._head = this._tail = clip2;
+ } else {
+ this._tail.next = clip2;
+ clip2.prev = this._tail;
+ clip2.next = null;
+ this._tail = clip2;
+ }
+ clip2.animation = this;
+ };
+ Animation2.prototype.addAnimator = function(animator) {
+ animator.animation = this;
+ var clip2 = animator.getClip();
+ if (clip2) {
+ this.addClip(clip2);
+ }
+ };
+ Animation2.prototype.removeClip = function(clip2) {
+ if (!clip2.animation) {
+ return;
+ }
+ var prev = clip2.prev;
+ var next = clip2.next;
+ if (prev) {
+ prev.next = next;
+ } else {
+ this._head = next;
+ }
+ if (next) {
+ next.prev = prev;
+ } else {
+ this._tail = prev;
+ }
+ clip2.next = clip2.prev = clip2.animation = null;
+ };
+ Animation2.prototype.removeAnimator = function(animator) {
+ var clip2 = animator.getClip();
+ if (clip2) {
+ this.removeClip(clip2);
+ }
+ animator.animation = null;
+ };
+ Animation2.prototype.update = function(notTriggerFrameAndStageUpdate) {
+ var time = getTime() - this._pausedTime;
+ var delta = time - this._time;
+ var clip2 = this._head;
+ while (clip2) {
+ var nextClip = clip2.next;
+ var finished = clip2.step(time, delta);
+ if (finished) {
+ clip2.ondestroy();
+ this.removeClip(clip2);
+ clip2 = nextClip;
+ } else {
+ clip2 = nextClip;
+ }
+ }
+ this._time = time;
+ if (!notTriggerFrameAndStageUpdate) {
+ this.trigger("frame", delta);
+ this.stage.update && this.stage.update();
+ }
+ };
+ Animation2.prototype._startLoop = function() {
+ var self2 = this;
+ this._running = true;
+ function step() {
+ if (self2._running) {
+ requestAnimationFrame_default(step);
+ !self2._paused && self2.update();
+ }
+ }
+ requestAnimationFrame_default(step);
+ };
+ Animation2.prototype.start = function() {
+ if (this._running) {
+ return;
+ }
+ this._time = getTime();
+ this._pausedTime = 0;
+ this._startLoop();
+ };
+ Animation2.prototype.stop = function() {
+ this._running = false;
+ };
+ Animation2.prototype.pause = function() {
+ if (!this._paused) {
+ this._pauseStart = getTime();
+ this._paused = true;
+ }
+ };
+ Animation2.prototype.resume = function() {
+ if (this._paused) {
+ this._pausedTime += getTime() - this._pauseStart;
+ this._paused = false;
+ }
+ };
+ Animation2.prototype.clear = function() {
+ var clip2 = this._head;
+ while (clip2) {
+ var nextClip = clip2.next;
+ clip2.prev = clip2.next = clip2.animation = null;
+ clip2 = nextClip;
+ }
+ this._head = this._tail = null;
+ };
+ Animation2.prototype.isFinished = function() {
+ return this._head == null;
+ };
+ Animation2.prototype.animate = function(target, options) {
+ options = options || {};
+ this.start();
+ var animator = new Animator_default(target, options.loop);
+ this.addAnimator(animator);
+ return animator;
+ };
+ return Animation2;
+}(Eventful_default);
+var Animation_default = Animation;
+
+// node_modules/zrender/lib/dom/HandlerProxy.js
+var TOUCH_CLICK_DELAY = 300;
+var globalEventSupported = env_default.domSupported;
+var localNativeListenerNames = function() {
+ var mouseHandlerNames = [
+ "click",
+ "dblclick",
+ "mousewheel",
+ "wheel",
+ "mouseout",
+ "mouseup",
+ "mousedown",
+ "mousemove",
+ "contextmenu"
+ ];
+ var touchHandlerNames = [
+ "touchstart",
+ "touchend",
+ "touchmove"
+ ];
+ var pointerEventNameMap = {
+ pointerdown: 1,
+ pointerup: 1,
+ pointermove: 1,
+ pointerout: 1
+ };
+ var pointerHandlerNames = map(mouseHandlerNames, function(name) {
+ var nm = name.replace("mouse", "pointer");
+ return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;
+ });
+ return {
+ mouse: mouseHandlerNames,
+ touch: touchHandlerNames,
+ pointer: pointerHandlerNames
+ };
+}();
+var globalNativeListenerNames = {
+ mouse: ["mousemove", "mouseup"],
+ pointer: ["pointermove", "pointerup"]
+};
+var wheelEventSupported = false;
+function isPointerFromTouch(event) {
+ var pointerType = event.pointerType;
+ return pointerType === "pen" || pointerType === "touch";
+}
+function setTouchTimer(scope) {
+ scope.touching = true;
+ if (scope.touchTimer != null) {
+ clearTimeout(scope.touchTimer);
+ scope.touchTimer = null;
+ }
+ scope.touchTimer = setTimeout(function() {
+ scope.touching = false;
+ scope.touchTimer = null;
+ }, 700);
+}
+function markTouch(event) {
+ event && (event.zrByTouch = true);
+}
+function normalizeGlobalEvent(instance, event) {
+ return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);
+}
+function isLocalEl(instance, el) {
+ var elTmp = el;
+ var isLocal = false;
+ while (elTmp && elTmp.nodeType !== 9 && !(isLocal = elTmp.domBelongToZr || elTmp !== el && elTmp === instance.painterRoot)) {
+ elTmp = elTmp.parentNode;
+ }
+ return isLocal;
+}
+var FakeGlobalEvent = function() {
+ function FakeGlobalEvent2(instance, event) {
+ this.stopPropagation = noop;
+ this.stopImmediatePropagation = noop;
+ this.preventDefault = noop;
+ this.type = event.type;
+ this.target = this.currentTarget = instance.dom;
+ this.pointerType = event.pointerType;
+ this.clientX = event.clientX;
+ this.clientY = event.clientY;
+ }
+ return FakeGlobalEvent2;
+}();
+var localDOMHandlers = {
+ mousedown: function(event) {
+ event = normalizeEvent(this.dom, event);
+ this.__mayPointerCapture = [event.zrX, event.zrY];
+ this.trigger("mousedown", event);
+ },
+ mousemove: function(event) {
+ event = normalizeEvent(this.dom, event);
+ var downPoint = this.__mayPointerCapture;
+ if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {
+ this.__togglePointerCapture(true);
+ }
+ this.trigger("mousemove", event);
+ },
+ mouseup: function(event) {
+ event = normalizeEvent(this.dom, event);
+ this.__togglePointerCapture(false);
+ this.trigger("mouseup", event);
+ },
+ mouseout: function(event) {
+ event = normalizeEvent(this.dom, event);
+ var element = event.toElement || event.relatedTarget;
+ if (!isLocalEl(this, element)) {
+ if (this.__pointerCapturing) {
+ event.zrEventControl = "no_globalout";
+ }
+ this.trigger("mouseout", event);
+ }
+ },
+ wheel: function(event) {
+ wheelEventSupported = true;
+ event = normalizeEvent(this.dom, event);
+ this.trigger("mousewheel", event);
+ },
+ mousewheel: function(event) {
+ if (wheelEventSupported) {
+ return;
+ }
+ event = normalizeEvent(this.dom, event);
+ this.trigger("mousewheel", event);
+ },
+ touchstart: function(event) {
+ event = normalizeEvent(this.dom, event);
+ markTouch(event);
+ this.__lastTouchMoment = new Date();
+ this.handler.processGesture(event, "start");
+ localDOMHandlers.mousemove.call(this, event);
+ localDOMHandlers.mousedown.call(this, event);
+ },
+ touchmove: function(event) {
+ event = normalizeEvent(this.dom, event);
+ markTouch(event);
+ this.handler.processGesture(event, "change");
+ localDOMHandlers.mousemove.call(this, event);
+ },
+ touchend: function(event) {
+ event = normalizeEvent(this.dom, event);
+ markTouch(event);
+ this.handler.processGesture(event, "end");
+ localDOMHandlers.mouseup.call(this, event);
+ if (+new Date() - +this.__lastTouchMoment < TOUCH_CLICK_DELAY) {
+ localDOMHandlers.click.call(this, event);
+ }
+ },
+ pointerdown: function(event) {
+ localDOMHandlers.mousedown.call(this, event);
+ },
+ pointermove: function(event) {
+ if (!isPointerFromTouch(event)) {
+ localDOMHandlers.mousemove.call(this, event);
+ }
+ },
+ pointerup: function(event) {
+ localDOMHandlers.mouseup.call(this, event);
+ },
+ pointerout: function(event) {
+ if (!isPointerFromTouch(event)) {
+ localDOMHandlers.mouseout.call(this, event);
+ }
+ }
+};
+each(["click", "dblclick", "contextmenu"], function(name) {
+ localDOMHandlers[name] = function(event) {
+ event = normalizeEvent(this.dom, event);
+ this.trigger(name, event);
+ };
+});
+var globalDOMHandlers = {
+ pointermove: function(event) {
+ if (!isPointerFromTouch(event)) {
+ globalDOMHandlers.mousemove.call(this, event);
+ }
+ },
+ pointerup: function(event) {
+ globalDOMHandlers.mouseup.call(this, event);
+ },
+ mousemove: function(event) {
+ this.trigger("mousemove", event);
+ },
+ mouseup: function(event) {
+ var pointerCaptureReleasing = this.__pointerCapturing;
+ this.__togglePointerCapture(false);
+ this.trigger("mouseup", event);
+ if (pointerCaptureReleasing) {
+ event.zrEventControl = "only_globalout";
+ this.trigger("mouseout", event);
+ }
+ }
+};
+function mountLocalDOMEventListeners(instance, scope) {
+ var domHandlers = scope.domHandlers;
+ if (env_default.pointerEventsSupported) {
+ each(localNativeListenerNames.pointer, function(nativeEventName) {
+ mountSingleDOMEventListener(scope, nativeEventName, function(event) {
+ domHandlers[nativeEventName].call(instance, event);
+ });
+ });
+ } else {
+ if (env_default.touchEventsSupported) {
+ each(localNativeListenerNames.touch, function(nativeEventName) {
+ mountSingleDOMEventListener(scope, nativeEventName, function(event) {
+ domHandlers[nativeEventName].call(instance, event);
+ setTouchTimer(scope);
+ });
+ });
+ }
+ each(localNativeListenerNames.mouse, function(nativeEventName) {
+ mountSingleDOMEventListener(scope, nativeEventName, function(event) {
+ event = getNativeEvent(event);
+ if (!scope.touching) {
+ domHandlers[nativeEventName].call(instance, event);
+ }
+ });
+ });
+ }
+}
+function mountGlobalDOMEventListeners(instance, scope) {
+ if (env_default.pointerEventsSupported) {
+ each(globalNativeListenerNames.pointer, mount);
+ } else if (!env_default.touchEventsSupported) {
+ each(globalNativeListenerNames.mouse, mount);
+ }
+ function mount(nativeEventName) {
+ function nativeEventListener(event) {
+ event = getNativeEvent(event);
+ if (!isLocalEl(instance, event.target)) {
+ event = normalizeGlobalEvent(instance, event);
+ scope.domHandlers[nativeEventName].call(instance, event);
+ }
+ }
+ mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });
+ }
+}
+function mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {
+ scope.mounted[nativeEventName] = listener;
+ scope.listenerOpts[nativeEventName] = opt;
+ addEventListener(scope.domTarget, nativeEventName, listener, opt);
+}
+function unmountDOMEventListeners(scope) {
+ var mounted = scope.mounted;
+ for (var nativeEventName in mounted) {
+ if (mounted.hasOwnProperty(nativeEventName)) {
+ removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);
+ }
+ }
+ scope.mounted = {};
+}
+var DOMHandlerScope = function() {
+ function DOMHandlerScope2(domTarget, domHandlers) {
+ this.mounted = {};
+ this.listenerOpts = {};
+ this.touching = false;
+ this.domTarget = domTarget;
+ this.domHandlers = domHandlers;
+ }
+ return DOMHandlerScope2;
+}();
+var HandlerDomProxy = function(_super) {
+ __extends(HandlerDomProxy2, _super);
+ function HandlerDomProxy2(dom, painterRoot) {
+ var _this = _super.call(this) || this;
+ _this.__pointerCapturing = false;
+ _this.dom = dom;
+ _this.painterRoot = painterRoot;
+ _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);
+ if (globalEventSupported) {
+ _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);
+ }
+ mountLocalDOMEventListeners(_this, _this._localHandlerScope);
+ return _this;
+ }
+ HandlerDomProxy2.prototype.dispose = function() {
+ unmountDOMEventListeners(this._localHandlerScope);
+ if (globalEventSupported) {
+ unmountDOMEventListeners(this._globalHandlerScope);
+ }
+ };
+ HandlerDomProxy2.prototype.setCursor = function(cursorStyle) {
+ this.dom.style && (this.dom.style.cursor = cursorStyle || "default");
+ };
+ HandlerDomProxy2.prototype.__togglePointerCapture = function(isPointerCapturing) {
+ this.__mayPointerCapture = null;
+ if (globalEventSupported && +this.__pointerCapturing ^ +isPointerCapturing) {
+ this.__pointerCapturing = isPointerCapturing;
+ var globalHandlerScope = this._globalHandlerScope;
+ isPointerCapturing ? mountGlobalDOMEventListeners(this, globalHandlerScope) : unmountDOMEventListeners(globalHandlerScope);
+ }
+ };
+ return HandlerDomProxy2;
+}(Eventful_default);
+var HandlerProxy_default = HandlerDomProxy;
+
+// node_modules/zrender/lib/config.js
+var dpr = 1;
+if (env_default.hasGlobalWindow) {
+ dpr = Math.max(window.devicePixelRatio || window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI || 1, 1);
+}
+var devicePixelRatio = dpr;
+var DARK_MODE_THRESHOLD = 0.4;
+var DARK_LABEL_COLOR = "#333";
+var LIGHT_LABEL_COLOR = "#ccc";
+var LIGHTER_LABEL_COLOR = "#eee";
+
+// node_modules/zrender/lib/core/Transformable.js
+var mIdentity = identity;
+var EPSILON3 = 5e-5;
+function isNotAroundZero2(val) {
+ return val > EPSILON3 || val < -EPSILON3;
+}
+var scaleTmp = [];
+var tmpTransform = [];
+var originTransform = create2();
+var abs = Math.abs;
+var Transformable = function() {
+ function Transformable2() {
+ }
+ Transformable2.prototype.getLocalTransform = function(m2) {
+ return Transformable2.getLocalTransform(this, m2);
+ };
+ Transformable2.prototype.setPosition = function(arr) {
+ this.x = arr[0];
+ this.y = arr[1];
+ };
+ Transformable2.prototype.setScale = function(arr) {
+ this.scaleX = arr[0];
+ this.scaleY = arr[1];
+ };
+ Transformable2.prototype.setSkew = function(arr) {
+ this.skewX = arr[0];
+ this.skewY = arr[1];
+ };
+ Transformable2.prototype.setOrigin = function(arr) {
+ this.originX = arr[0];
+ this.originY = arr[1];
+ };
+ Transformable2.prototype.needLocalTransform = function() {
+ return isNotAroundZero2(this.rotation) || isNotAroundZero2(this.x) || isNotAroundZero2(this.y) || isNotAroundZero2(this.scaleX - 1) || isNotAroundZero2(this.scaleY - 1) || isNotAroundZero2(this.skewX) || isNotAroundZero2(this.skewY);
+ };
+ Transformable2.prototype.updateTransform = function() {
+ var parentTransform = this.parent && this.parent.transform;
+ var needLocalTransform = this.needLocalTransform();
+ var m2 = this.transform;
+ if (!(needLocalTransform || parentTransform)) {
+ if (m2) {
+ mIdentity(m2);
+ this.invTransform = null;
+ }
+ return;
+ }
+ m2 = m2 || create2();
+ if (needLocalTransform) {
+ this.getLocalTransform(m2);
+ } else {
+ mIdentity(m2);
+ }
+ if (parentTransform) {
+ if (needLocalTransform) {
+ mul2(m2, parentTransform, m2);
+ } else {
+ copy2(m2, parentTransform);
+ }
+ }
+ this.transform = m2;
+ this._resolveGlobalScaleRatio(m2);
+ };
+ Transformable2.prototype._resolveGlobalScaleRatio = function(m2) {
+ var globalScaleRatio = this.globalScaleRatio;
+ if (globalScaleRatio != null && globalScaleRatio !== 1) {
+ this.getGlobalScale(scaleTmp);
+ var relX = scaleTmp[0] < 0 ? -1 : 1;
+ var relY = scaleTmp[1] < 0 ? -1 : 1;
+ var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;
+ var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;
+ m2[0] *= sx;
+ m2[1] *= sx;
+ m2[2] *= sy;
+ m2[3] *= sy;
+ }
+ this.invTransform = this.invTransform || create2();
+ invert(this.invTransform, m2);
+ };
+ Transformable2.prototype.getComputedTransform = function() {
+ var transformNode = this;
+ var ancestors = [];
+ while (transformNode) {
+ ancestors.push(transformNode);
+ transformNode = transformNode.parent;
+ }
+ while (transformNode = ancestors.pop()) {
+ transformNode.updateTransform();
+ }
+ return this.transform;
+ };
+ Transformable2.prototype.setLocalTransform = function(m2) {
+ if (!m2) {
+ return;
+ }
+ var sx = m2[0] * m2[0] + m2[1] * m2[1];
+ var sy = m2[2] * m2[2] + m2[3] * m2[3];
+ var rotation = Math.atan2(m2[1], m2[0]);
+ var shearX = Math.PI / 2 + rotation - Math.atan2(m2[3], m2[2]);
+ sy = Math.sqrt(sy) * Math.cos(shearX);
+ sx = Math.sqrt(sx);
+ this.skewX = shearX;
+ this.skewY = 0;
+ this.rotation = -rotation;
+ this.x = +m2[4];
+ this.y = +m2[5];
+ this.scaleX = sx;
+ this.scaleY = sy;
+ this.originX = 0;
+ this.originY = 0;
+ };
+ Transformable2.prototype.decomposeTransform = function() {
+ if (!this.transform) {
+ return;
+ }
+ var parent = this.parent;
+ var m2 = this.transform;
+ if (parent && parent.transform) {
+ parent.invTransform = parent.invTransform || create2();
+ mul2(tmpTransform, parent.invTransform, m2);
+ m2 = tmpTransform;
+ }
+ var ox = this.originX;
+ var oy = this.originY;
+ if (ox || oy) {
+ originTransform[4] = ox;
+ originTransform[5] = oy;
+ mul2(tmpTransform, m2, originTransform);
+ tmpTransform[4] -= ox;
+ tmpTransform[5] -= oy;
+ m2 = tmpTransform;
+ }
+ this.setLocalTransform(m2);
+ };
+ Transformable2.prototype.getGlobalScale = function(out2) {
+ var m2 = this.transform;
+ out2 = out2 || [];
+ if (!m2) {
+ out2[0] = 1;
+ out2[1] = 1;
+ return out2;
+ }
+ out2[0] = Math.sqrt(m2[0] * m2[0] + m2[1] * m2[1]);
+ out2[1] = Math.sqrt(m2[2] * m2[2] + m2[3] * m2[3]);
+ if (m2[0] < 0) {
+ out2[0] = -out2[0];
+ }
+ if (m2[3] < 0) {
+ out2[1] = -out2[1];
+ }
+ return out2;
+ };
+ Transformable2.prototype.transformCoordToLocal = function(x, y) {
+ var v22 = [x, y];
+ var invTransform = this.invTransform;
+ if (invTransform) {
+ applyTransform(v22, v22, invTransform);
+ }
+ return v22;
+ };
+ Transformable2.prototype.transformCoordToGlobal = function(x, y) {
+ var v22 = [x, y];
+ var transform2 = this.transform;
+ if (transform2) {
+ applyTransform(v22, v22, transform2);
+ }
+ return v22;
+ };
+ Transformable2.prototype.getLineScale = function() {
+ var m2 = this.transform;
+ return m2 && abs(m2[0] - 1) > 1e-10 && abs(m2[3] - 1) > 1e-10 ? Math.sqrt(abs(m2[0] * m2[3] - m2[2] * m2[1])) : 1;
+ };
+ Transformable2.prototype.copyTransform = function(source) {
+ copyTransform(this, source);
+ };
+ Transformable2.getLocalTransform = function(target, m2) {
+ m2 = m2 || [];
+ var ox = target.originX || 0;
+ var oy = target.originY || 0;
+ var sx = target.scaleX;
+ var sy = target.scaleY;
+ var ax = target.anchorX;
+ var ay = target.anchorY;
+ var rotation = target.rotation || 0;
+ var x = target.x;
+ var y = target.y;
+ var skewX = target.skewX ? Math.tan(target.skewX) : 0;
+ var skewY = target.skewY ? Math.tan(-target.skewY) : 0;
+ if (ox || oy || ax || ay) {
+ var dx = ox + ax;
+ var dy = oy + ay;
+ m2[4] = -dx * sx - skewX * dy * sy;
+ m2[5] = -dy * sy - skewY * dx * sx;
+ } else {
+ m2[4] = m2[5] = 0;
+ }
+ m2[0] = sx;
+ m2[3] = sy;
+ m2[1] = skewY * sx;
+ m2[2] = skewX * sy;
+ rotation && rotate(m2, m2, rotation);
+ m2[4] += ox + x;
+ m2[5] += oy + y;
+ return m2;
+ };
+ Transformable2.initDefaultProps = function() {
+ var proto2 = Transformable2.prototype;
+ proto2.scaleX = proto2.scaleY = proto2.globalScaleRatio = 1;
+ proto2.x = proto2.y = proto2.originX = proto2.originY = proto2.skewX = proto2.skewY = proto2.rotation = proto2.anchorX = proto2.anchorY = 0;
+ }();
+ return Transformable2;
+}();
+var TRANSFORMABLE_PROPS = [
+ "x",
+ "y",
+ "originX",
+ "originY",
+ "anchorX",
+ "anchorY",
+ "rotation",
+ "scaleX",
+ "scaleY",
+ "skewX",
+ "skewY"
+];
+function copyTransform(target, source) {
+ for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {
+ var propName = TRANSFORMABLE_PROPS[i];
+ target[propName] = source[propName];
+ }
+}
+var Transformable_default = Transformable;
+
+// node_modules/zrender/lib/contain/text.js
+var textWidthCache = {};
+function getWidth(text, font) {
+ font = font || DEFAULT_FONT;
+ var cacheOfFont = textWidthCache[font];
+ if (!cacheOfFont) {
+ cacheOfFont = textWidthCache[font] = new LRU_default(500);
+ }
+ var width = cacheOfFont.get(text);
+ if (width == null) {
+ width = platformApi.measureText(text, font).width;
+ cacheOfFont.put(text, width);
+ }
+ return width;
+}
+function innerGetBoundingRect(text, font, textAlign, textBaseline) {
+ var width = getWidth(text, font);
+ var height = getLineHeight(font);
+ var x = adjustTextX(0, width, textAlign);
+ var y = adjustTextY2(0, height, textBaseline);
+ var rect = new BoundingRect_default(x, y, width, height);
+ return rect;
+}
+function getBoundingRect(text, font, textAlign, textBaseline) {
+ var textLines = ((text || "") + "").split("\n");
+ var len2 = textLines.length;
+ if (len2 === 1) {
+ return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);
+ } else {
+ var uniondRect = new BoundingRect_default(0, 0, 0, 0);
+ for (var i = 0; i < textLines.length; i++) {
+ var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);
+ i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);
+ }
+ return uniondRect;
+ }
+}
+function adjustTextX(x, width, textAlign) {
+ if (textAlign === "right") {
+ x -= width;
+ } else if (textAlign === "center") {
+ x -= width / 2;
+ }
+ return x;
+}
+function adjustTextY2(y, height, verticalAlign) {
+ if (verticalAlign === "middle") {
+ y -= height / 2;
+ } else if (verticalAlign === "bottom") {
+ y -= height;
+ }
+ return y;
+}
+function getLineHeight(font) {
+ return getWidth("\u56FD", font);
+}
+function parsePercent(value, maxValue) {
+ if (typeof value === "string") {
+ if (value.lastIndexOf("%") >= 0) {
+ return parseFloat(value) / 100 * maxValue;
+ }
+ return parseFloat(value);
+ }
+ return value;
+}
+function calculateTextPosition(out2, opts, rect) {
+ var textPosition = opts.position || "inside";
+ var distance2 = opts.distance != null ? opts.distance : 5;
+ var height = rect.height;
+ var width = rect.width;
+ var halfHeight = height / 2;
+ var x = rect.x;
+ var y = rect.y;
+ var textAlign = "left";
+ var textVerticalAlign = "top";
+ if (textPosition instanceof Array) {
+ x += parsePercent(textPosition[0], rect.width);
+ y += parsePercent(textPosition[1], rect.height);
+ textAlign = null;
+ textVerticalAlign = null;
+ } else {
+ switch (textPosition) {
+ case "left":
+ x -= distance2;
+ y += halfHeight;
+ textAlign = "right";
+ textVerticalAlign = "middle";
+ break;
+ case "right":
+ x += distance2 + width;
+ y += halfHeight;
+ textVerticalAlign = "middle";
+ break;
+ case "top":
+ x += width / 2;
+ y -= distance2;
+ textAlign = "center";
+ textVerticalAlign = "bottom";
+ break;
+ case "bottom":
+ x += width / 2;
+ y += height + distance2;
+ textAlign = "center";
+ break;
+ case "inside":
+ x += width / 2;
+ y += halfHeight;
+ textAlign = "center";
+ textVerticalAlign = "middle";
+ break;
+ case "insideLeft":
+ x += distance2;
+ y += halfHeight;
+ textVerticalAlign = "middle";
+ break;
+ case "insideRight":
+ x += width - distance2;
+ y += halfHeight;
+ textAlign = "right";
+ textVerticalAlign = "middle";
+ break;
+ case "insideTop":
+ x += width / 2;
+ y += distance2;
+ textAlign = "center";
+ break;
+ case "insideBottom":
+ x += width / 2;
+ y += height - distance2;
+ textAlign = "center";
+ textVerticalAlign = "bottom";
+ break;
+ case "insideTopLeft":
+ x += distance2;
+ y += distance2;
+ break;
+ case "insideTopRight":
+ x += width - distance2;
+ y += distance2;
+ textAlign = "right";
+ break;
+ case "insideBottomLeft":
+ x += distance2;
+ y += height - distance2;
+ textVerticalAlign = "bottom";
+ break;
+ case "insideBottomRight":
+ x += width - distance2;
+ y += height - distance2;
+ textAlign = "right";
+ textVerticalAlign = "bottom";
+ break;
+ }
+ }
+ out2 = out2 || {};
+ out2.x = x;
+ out2.y = y;
+ out2.align = textAlign;
+ out2.verticalAlign = textVerticalAlign;
+ return out2;
+}
+
+// node_modules/zrender/lib/Element.js
+var PRESERVED_NORMAL_STATE = "__zr_normal__";
+var PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(["ignore"]);
+var DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function(obj, key) {
+ obj[key] = true;
+ return obj;
+}, { ignore: false });
+var tmpTextPosCalcRes = {};
+var tmpBoundingRect = new BoundingRect_default(0, 0, 0, 0);
+var Element = function() {
+ function Element2(props) {
+ this.id = guid();
+ this.animators = [];
+ this.currentStates = [];
+ this.states = {};
+ this._init(props);
+ }
+ Element2.prototype._init = function(props) {
+ this.attr(props);
+ };
+ Element2.prototype.drift = function(dx, dy, e2) {
+ switch (this.draggable) {
+ case "horizontal":
+ dy = 0;
+ break;
+ case "vertical":
+ dx = 0;
+ break;
+ }
+ var m2 = this.transform;
+ if (!m2) {
+ m2 = this.transform = [1, 0, 0, 1, 0, 0];
+ }
+ m2[4] += dx;
+ m2[5] += dy;
+ this.decomposeTransform();
+ this.markRedraw();
+ };
+ Element2.prototype.beforeUpdate = function() {
+ };
+ Element2.prototype.afterUpdate = function() {
+ };
+ Element2.prototype.update = function() {
+ this.updateTransform();
+ if (this.__dirty) {
+ this.updateInnerText();
+ }
+ };
+ Element2.prototype.updateInnerText = function(forceUpdate) {
+ var textEl = this._textContent;
+ if (textEl && (!textEl.ignore || forceUpdate)) {
+ if (!this.textConfig) {
+ this.textConfig = {};
+ }
+ var textConfig = this.textConfig;
+ var isLocal = textConfig.local;
+ var innerTransformable = textEl.innerTransformable;
+ var textAlign = void 0;
+ var textVerticalAlign = void 0;
+ var textStyleChanged = false;
+ innerTransformable.parent = isLocal ? this : null;
+ var innerOrigin = false;
+ innerTransformable.copyTransform(textEl);
+ if (textConfig.position != null) {
+ var layoutRect = tmpBoundingRect;
+ if (textConfig.layoutRect) {
+ layoutRect.copy(textConfig.layoutRect);
+ } else {
+ layoutRect.copy(this.getBoundingRect());
+ }
+ if (!isLocal) {
+ layoutRect.applyTransform(this.transform);
+ }
+ if (this.calculateTextPosition) {
+ this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);
+ } else {
+ calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);
+ }
+ innerTransformable.x = tmpTextPosCalcRes.x;
+ innerTransformable.y = tmpTextPosCalcRes.y;
+ textAlign = tmpTextPosCalcRes.align;
+ textVerticalAlign = tmpTextPosCalcRes.verticalAlign;
+ var textOrigin = textConfig.origin;
+ if (textOrigin && textConfig.rotation != null) {
+ var relOriginX = void 0;
+ var relOriginY = void 0;
+ if (textOrigin === "center") {
+ relOriginX = layoutRect.width * 0.5;
+ relOriginY = layoutRect.height * 0.5;
+ } else {
+ relOriginX = parsePercent(textOrigin[0], layoutRect.width);
+ relOriginY = parsePercent(textOrigin[1], layoutRect.height);
+ }
+ innerOrigin = true;
+ innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x);
+ innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y);
+ }
+ }
+ if (textConfig.rotation != null) {
+ innerTransformable.rotation = textConfig.rotation;
+ }
+ var textOffset = textConfig.offset;
+ if (textOffset) {
+ innerTransformable.x += textOffset[0];
+ innerTransformable.y += textOffset[1];
+ if (!innerOrigin) {
+ innerTransformable.originX = -textOffset[0];
+ innerTransformable.originY = -textOffset[1];
+ }
+ }
+ var isInside = textConfig.inside == null ? typeof textConfig.position === "string" && textConfig.position.indexOf("inside") >= 0 : textConfig.inside;
+ var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});
+ var textFill = void 0;
+ var textStroke = void 0;
+ var autoStroke = void 0;
+ if (isInside && this.canBeInsideText()) {
+ textFill = textConfig.insideFill;
+ textStroke = textConfig.insideStroke;
+ if (textFill == null || textFill === "auto") {
+ textFill = this.getInsideTextFill();
+ }
+ if (textStroke == null || textStroke === "auto") {
+ textStroke = this.getInsideTextStroke(textFill);
+ autoStroke = true;
+ }
+ } else {
+ textFill = textConfig.outsideFill;
+ textStroke = textConfig.outsideStroke;
+ if (textFill == null || textFill === "auto") {
+ textFill = this.getOutsideFill();
+ }
+ if (textStroke == null || textStroke === "auto") {
+ textStroke = this.getOutsideStroke(textFill);
+ autoStroke = true;
+ }
+ }
+ textFill = textFill || "#000";
+ if (textFill !== innerTextDefaultStyle.fill || textStroke !== innerTextDefaultStyle.stroke || autoStroke !== innerTextDefaultStyle.autoStroke || textAlign !== innerTextDefaultStyle.align || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {
+ textStyleChanged = true;
+ innerTextDefaultStyle.fill = textFill;
+ innerTextDefaultStyle.stroke = textStroke;
+ innerTextDefaultStyle.autoStroke = autoStroke;
+ innerTextDefaultStyle.align = textAlign;
+ innerTextDefaultStyle.verticalAlign = textVerticalAlign;
+ textEl.setDefaultTextStyle(innerTextDefaultStyle);
+ }
+ textEl.__dirty |= REDRAW_BIT;
+ if (textStyleChanged) {
+ textEl.dirtyStyle(true);
+ }
+ }
+ };
+ Element2.prototype.canBeInsideText = function() {
+ return true;
+ };
+ Element2.prototype.getInsideTextFill = function() {
+ return "#fff";
+ };
+ Element2.prototype.getInsideTextStroke = function(textFill) {
+ return "#000";
+ };
+ Element2.prototype.getOutsideFill = function() {
+ return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;
+ };
+ Element2.prototype.getOutsideStroke = function(textFill) {
+ var backgroundColor2 = this.__zr && this.__zr.getBackgroundColor();
+ var colorArr = typeof backgroundColor2 === "string" && parse(backgroundColor2);
+ if (!colorArr) {
+ colorArr = [255, 255, 255, 1];
+ }
+ var alpha = colorArr[3];
+ var isDark = this.__zr.isDarkMode();
+ for (var i = 0; i < 3; i++) {
+ colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);
+ }
+ colorArr[3] = 1;
+ return stringify(colorArr, "rgba");
+ };
+ Element2.prototype.traverse = function(cb, context) {
+ };
+ Element2.prototype.attrKV = function(key, value) {
+ if (key === "textConfig") {
+ this.setTextConfig(value);
+ } else if (key === "textContent") {
+ this.setTextContent(value);
+ } else if (key === "clipPath") {
+ this.setClipPath(value);
+ } else if (key === "extra") {
+ this.extra = this.extra || {};
+ extend(this.extra, value);
+ } else {
+ this[key] = value;
+ }
+ };
+ Element2.prototype.hide = function() {
+ this.ignore = true;
+ this.markRedraw();
+ };
+ Element2.prototype.show = function() {
+ this.ignore = false;
+ this.markRedraw();
+ };
+ Element2.prototype.attr = function(keyOrObj, value) {
+ if (typeof keyOrObj === "string") {
+ this.attrKV(keyOrObj, value);
+ } else if (isObject(keyOrObj)) {
+ var obj = keyOrObj;
+ var keysArr = keys(obj);
+ for (var i = 0; i < keysArr.length; i++) {
+ var key = keysArr[i];
+ this.attrKV(key, keyOrObj[key]);
+ }
+ }
+ this.markRedraw();
+ return this;
+ };
+ Element2.prototype.saveCurrentToNormalState = function(toState) {
+ this._innerSaveToNormal(toState);
+ var normalState = this._normalState;
+ for (var i = 0; i < this.animators.length; i++) {
+ var animator = this.animators[i];
+ var fromStateTransition = animator.__fromStateTransition;
+ if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {
+ continue;
+ }
+ var targetName = animator.targetName;
+ var target = targetName ? normalState[targetName] : normalState;
+ animator.saveTo(target);
+ }
+ };
+ Element2.prototype._innerSaveToNormal = function(toState) {
+ var normalState = this._normalState;
+ if (!normalState) {
+ normalState = this._normalState = {};
+ }
+ if (toState.textConfig && !normalState.textConfig) {
+ normalState.textConfig = this.textConfig;
+ }
+ this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);
+ };
+ Element2.prototype._savePrimaryToNormal = function(toState, normalState, primaryKeys) {
+ for (var i = 0; i < primaryKeys.length; i++) {
+ var key = primaryKeys[i];
+ if (toState[key] != null && !(key in normalState)) {
+ normalState[key] = this[key];
+ }
+ }
+ };
+ Element2.prototype.hasState = function() {
+ return this.currentStates.length > 0;
+ };
+ Element2.prototype.getState = function(name) {
+ return this.states[name];
+ };
+ Element2.prototype.ensureState = function(name) {
+ var states = this.states;
+ if (!states[name]) {
+ states[name] = {};
+ }
+ return states[name];
+ };
+ Element2.prototype.clearStates = function(noAnimation) {
+ this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);
+ };
+ Element2.prototype.useState = function(stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) {
+ var toNormalState = stateName === PRESERVED_NORMAL_STATE;
+ var hasStates = this.hasState();
+ if (!hasStates && toNormalState) {
+ return;
+ }
+ var currentStates = this.currentStates;
+ var animationCfg = this.stateTransition;
+ if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {
+ return;
+ }
+ var state;
+ if (this.stateProxy && !toNormalState) {
+ state = this.stateProxy(stateName);
+ }
+ if (!state) {
+ state = this.states && this.states[stateName];
+ }
+ if (!state && !toNormalState) {
+ logError("State " + stateName + " not exists.");
+ return;
+ }
+ if (!toNormalState) {
+ this.saveCurrentToNormalState(state);
+ }
+ var useHoverLayer = !!(state && state.hoverLayer || forceUseHoverLayer);
+ if (useHoverLayer) {
+ this._toggleHoverLayerFlag(true);
+ }
+ this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);
+ var textContent = this._textContent;
+ var textGuide = this._textGuide;
+ if (textContent) {
+ textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);
+ }
+ if (textGuide) {
+ textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);
+ }
+ if (toNormalState) {
+ this.currentStates = [];
+ this._normalState = {};
+ } else {
+ if (!keepCurrentStates) {
+ this.currentStates = [stateName];
+ } else {
+ this.currentStates.push(stateName);
+ }
+ }
+ this._updateAnimationTargets();
+ this.markRedraw();
+ if (!useHoverLayer && this.__inHover) {
+ this._toggleHoverLayerFlag(false);
+ this.__dirty &= ~REDRAW_BIT;
+ }
+ return state;
+ };
+ Element2.prototype.useStates = function(states, noAnimation, forceUseHoverLayer) {
+ if (!states.length) {
+ this.clearStates();
+ } else {
+ var stateObjects = [];
+ var currentStates = this.currentStates;
+ var len2 = states.length;
+ var notChange = len2 === currentStates.length;
+ if (notChange) {
+ for (var i = 0; i < len2; i++) {
+ if (states[i] !== currentStates[i]) {
+ notChange = false;
+ break;
+ }
+ }
+ }
+ if (notChange) {
+ return;
+ }
+ for (var i = 0; i < len2; i++) {
+ var stateName = states[i];
+ var stateObj = void 0;
+ if (this.stateProxy) {
+ stateObj = this.stateProxy(stateName, states);
+ }
+ if (!stateObj) {
+ stateObj = this.states[stateName];
+ }
+ if (stateObj) {
+ stateObjects.push(stateObj);
+ }
+ }
+ var lastStateObj = stateObjects[len2 - 1];
+ var useHoverLayer = !!(lastStateObj && lastStateObj.hoverLayer || forceUseHoverLayer);
+ if (useHoverLayer) {
+ this._toggleHoverLayerFlag(true);
+ }
+ var mergedState = this._mergeStates(stateObjects);
+ var animationCfg = this.stateTransition;
+ this.saveCurrentToNormalState(mergedState);
+ this._applyStateObj(states.join(","), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);
+ var textContent = this._textContent;
+ var textGuide = this._textGuide;
+ if (textContent) {
+ textContent.useStates(states, noAnimation, useHoverLayer);
+ }
+ if (textGuide) {
+ textGuide.useStates(states, noAnimation, useHoverLayer);
+ }
+ this._updateAnimationTargets();
+ this.currentStates = states.slice();
+ this.markRedraw();
+ if (!useHoverLayer && this.__inHover) {
+ this._toggleHoverLayerFlag(false);
+ this.__dirty &= ~REDRAW_BIT;
+ }
+ }
+ };
+ Element2.prototype.isSilent = function() {
+ var isSilent = this.silent;
+ var ancestor = this.parent;
+ while (!isSilent && ancestor) {
+ if (ancestor.silent) {
+ isSilent = true;
+ break;
+ }
+ ancestor = ancestor.parent;
+ }
+ return isSilent;
+ };
+ Element2.prototype._updateAnimationTargets = function() {
+ for (var i = 0; i < this.animators.length; i++) {
+ var animator = this.animators[i];
+ if (animator.targetName) {
+ animator.changeTarget(this[animator.targetName]);
+ }
+ }
+ };
+ Element2.prototype.removeState = function(state) {
+ var idx = indexOf(this.currentStates, state);
+ if (idx >= 0) {
+ var currentStates = this.currentStates.slice();
+ currentStates.splice(idx, 1);
+ this.useStates(currentStates);
+ }
+ };
+ Element2.prototype.replaceState = function(oldState, newState, forceAdd) {
+ var currentStates = this.currentStates.slice();
+ var idx = indexOf(currentStates, oldState);
+ var newStateExists = indexOf(currentStates, newState) >= 0;
+ if (idx >= 0) {
+ if (!newStateExists) {
+ currentStates[idx] = newState;
+ } else {
+ currentStates.splice(idx, 1);
+ }
+ } else if (forceAdd && !newStateExists) {
+ currentStates.push(newState);
+ }
+ this.useStates(currentStates);
+ };
+ Element2.prototype.toggleState = function(state, enable) {
+ if (enable) {
+ this.useState(state, true);
+ } else {
+ this.removeState(state);
+ }
+ };
+ Element2.prototype._mergeStates = function(states) {
+ var mergedState = {};
+ var mergedTextConfig;
+ for (var i = 0; i < states.length; i++) {
+ var state = states[i];
+ extend(mergedState, state);
+ if (state.textConfig) {
+ mergedTextConfig = mergedTextConfig || {};
+ extend(mergedTextConfig, state.textConfig);
+ }
+ }
+ if (mergedTextConfig) {
+ mergedState.textConfig = mergedTextConfig;
+ }
+ return mergedState;
+ };
+ Element2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) {
+ var needsRestoreToNormal = !(state && keepCurrentStates);
+ if (state && state.textConfig) {
+ this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);
+ extend(this.textConfig, state.textConfig);
+ } else if (needsRestoreToNormal) {
+ if (normalState.textConfig) {
+ this.textConfig = normalState.textConfig;
+ }
+ }
+ var transitionTarget = {};
+ var hasTransition = false;
+ for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {
+ var key = PRIMARY_STATES_KEYS[i];
+ var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];
+ if (state && state[key] != null) {
+ if (propNeedsTransition) {
+ hasTransition = true;
+ transitionTarget[key] = state[key];
+ } else {
+ this[key] = state[key];
+ }
+ } else if (needsRestoreToNormal) {
+ if (normalState[key] != null) {
+ if (propNeedsTransition) {
+ hasTransition = true;
+ transitionTarget[key] = normalState[key];
+ } else {
+ this[key] = normalState[key];
+ }
+ }
+ }
+ }
+ if (!transition) {
+ for (var i = 0; i < this.animators.length; i++) {
+ var animator = this.animators[i];
+ var targetName = animator.targetName;
+ if (!animator.getLoop()) {
+ animator.__changeFinalValue(targetName ? (state || normalState)[targetName] : state || normalState);
+ }
+ }
+ }
+ if (hasTransition) {
+ this._transitionState(stateName, transitionTarget, animationCfg);
+ }
+ };
+ Element2.prototype._attachComponent = function(componentEl) {
+ if (componentEl.__zr && !componentEl.__hostTarget) {
+ if (true) {
+ throw new Error("Text element has been added to zrender.");
+ }
+ return;
+ }
+ if (componentEl === this) {
+ if (true) {
+ throw new Error("Recursive component attachment.");
+ }
+ return;
+ }
+ var zr = this.__zr;
+ if (zr) {
+ componentEl.addSelfToZr(zr);
+ }
+ componentEl.__zr = zr;
+ componentEl.__hostTarget = this;
+ };
+ Element2.prototype._detachComponent = function(componentEl) {
+ if (componentEl.__zr) {
+ componentEl.removeSelfFromZr(componentEl.__zr);
+ }
+ componentEl.__zr = null;
+ componentEl.__hostTarget = null;
+ };
+ Element2.prototype.getClipPath = function() {
+ return this._clipPath;
+ };
+ Element2.prototype.setClipPath = function(clipPath) {
+ if (this._clipPath && this._clipPath !== clipPath) {
+ this.removeClipPath();
+ }
+ this._attachComponent(clipPath);
+ this._clipPath = clipPath;
+ this.markRedraw();
+ };
+ Element2.prototype.removeClipPath = function() {
+ var clipPath = this._clipPath;
+ if (clipPath) {
+ this._detachComponent(clipPath);
+ this._clipPath = null;
+ this.markRedraw();
+ }
+ };
+ Element2.prototype.getTextContent = function() {
+ return this._textContent;
+ };
+ Element2.prototype.setTextContent = function(textEl) {
+ var previousTextContent = this._textContent;
+ if (previousTextContent === textEl) {
+ return;
+ }
+ if (previousTextContent && previousTextContent !== textEl) {
+ this.removeTextContent();
+ }
+ if (true) {
+ if (textEl.__zr && !textEl.__hostTarget) {
+ throw new Error("Text element has been added to zrender.");
+ }
+ }
+ textEl.innerTransformable = new Transformable_default();
+ this._attachComponent(textEl);
+ this._textContent = textEl;
+ this.markRedraw();
+ };
+ Element2.prototype.setTextConfig = function(cfg) {
+ if (!this.textConfig) {
+ this.textConfig = {};
+ }
+ extend(this.textConfig, cfg);
+ this.markRedraw();
+ };
+ Element2.prototype.removeTextConfig = function() {
+ this.textConfig = null;
+ this.markRedraw();
+ };
+ Element2.prototype.removeTextContent = function() {
+ var textEl = this._textContent;
+ if (textEl) {
+ textEl.innerTransformable = null;
+ this._detachComponent(textEl);
+ this._textContent = null;
+ this._innerTextDefaultStyle = null;
+ this.markRedraw();
+ }
+ };
+ Element2.prototype.getTextGuideLine = function() {
+ return this._textGuide;
+ };
+ Element2.prototype.setTextGuideLine = function(guideLine) {
+ if (this._textGuide && this._textGuide !== guideLine) {
+ this.removeTextGuideLine();
+ }
+ this._attachComponent(guideLine);
+ this._textGuide = guideLine;
+ this.markRedraw();
+ };
+ Element2.prototype.removeTextGuideLine = function() {
+ var textGuide = this._textGuide;
+ if (textGuide) {
+ this._detachComponent(textGuide);
+ this._textGuide = null;
+ this.markRedraw();
+ }
+ };
+ Element2.prototype.markRedraw = function() {
+ this.__dirty |= REDRAW_BIT;
+ var zr = this.__zr;
+ if (zr) {
+ if (this.__inHover) {
+ zr.refreshHover();
+ } else {
+ zr.refresh();
+ }
+ }
+ if (this.__hostTarget) {
+ this.__hostTarget.markRedraw();
+ }
+ };
+ Element2.prototype.dirty = function() {
+ this.markRedraw();
+ };
+ Element2.prototype._toggleHoverLayerFlag = function(inHover) {
+ this.__inHover = inHover;
+ var textContent = this._textContent;
+ var textGuide = this._textGuide;
+ if (textContent) {
+ textContent.__inHover = inHover;
+ }
+ if (textGuide) {
+ textGuide.__inHover = inHover;
+ }
+ };
+ Element2.prototype.addSelfToZr = function(zr) {
+ if (this.__zr === zr) {
+ return;
+ }
+ this.__zr = zr;
+ var animators = this.animators;
+ if (animators) {
+ for (var i = 0; i < animators.length; i++) {
+ zr.animation.addAnimator(animators[i]);
+ }
+ }
+ if (this._clipPath) {
+ this._clipPath.addSelfToZr(zr);
+ }
+ if (this._textContent) {
+ this._textContent.addSelfToZr(zr);
+ }
+ if (this._textGuide) {
+ this._textGuide.addSelfToZr(zr);
+ }
+ };
+ Element2.prototype.removeSelfFromZr = function(zr) {
+ if (!this.__zr) {
+ return;
+ }
+ this.__zr = null;
+ var animators = this.animators;
+ if (animators) {
+ for (var i = 0; i < animators.length; i++) {
+ zr.animation.removeAnimator(animators[i]);
+ }
+ }
+ if (this._clipPath) {
+ this._clipPath.removeSelfFromZr(zr);
+ }
+ if (this._textContent) {
+ this._textContent.removeSelfFromZr(zr);
+ }
+ if (this._textGuide) {
+ this._textGuide.removeSelfFromZr(zr);
+ }
+ };
+ Element2.prototype.animate = function(key, loop, allowDiscreteAnimation) {
+ var target = key ? this[key] : this;
+ if (true) {
+ if (!target) {
+ logError('Property "' + key + '" is not existed in element ' + this.id);
+ return;
+ }
+ }
+ var animator = new Animator_default(target, loop, allowDiscreteAnimation);
+ key && (animator.targetName = key);
+ this.addAnimator(animator, key);
+ return animator;
+ };
+ Element2.prototype.addAnimator = function(animator, key) {
+ var zr = this.__zr;
+ var el = this;
+ animator.during(function() {
+ el.updateDuringAnimation(key);
+ }).done(function() {
+ var animators = el.animators;
+ var idx = indexOf(animators, animator);
+ if (idx >= 0) {
+ animators.splice(idx, 1);
+ }
+ });
+ this.animators.push(animator);
+ if (zr) {
+ zr.animation.addAnimator(animator);
+ }
+ zr && zr.wakeUp();
+ };
+ Element2.prototype.updateDuringAnimation = function(key) {
+ this.markRedraw();
+ };
+ Element2.prototype.stopAnimation = function(scope, forwardToLast) {
+ var animators = this.animators;
+ var len2 = animators.length;
+ var leftAnimators = [];
+ for (var i = 0; i < len2; i++) {
+ var animator = animators[i];
+ if (!scope || scope === animator.scope) {
+ animator.stop(forwardToLast);
+ } else {
+ leftAnimators.push(animator);
+ }
+ }
+ this.animators = leftAnimators;
+ return this;
+ };
+ Element2.prototype.animateTo = function(target, cfg, animationProps) {
+ animateTo(this, target, cfg, animationProps);
+ };
+ Element2.prototype.animateFrom = function(target, cfg, animationProps) {
+ animateTo(this, target, cfg, animationProps, true);
+ };
+ Element2.prototype._transitionState = function(stateName, target, cfg, animationProps) {
+ var animators = animateTo(this, target, cfg, animationProps);
+ for (var i = 0; i < animators.length; i++) {
+ animators[i].__fromStateTransition = stateName;
+ }
+ };
+ Element2.prototype.getBoundingRect = function() {
+ return null;
+ };
+ Element2.prototype.getPaintRect = function() {
+ return null;
+ };
+ Element2.initDefaultProps = function() {
+ var elProto = Element2.prototype;
+ elProto.type = "element";
+ elProto.name = "";
+ elProto.ignore = elProto.silent = elProto.isGroup = elProto.draggable = elProto.dragging = elProto.ignoreClip = elProto.__inHover = false;
+ elProto.__dirty = REDRAW_BIT;
+ var logs = {};
+ function logDeprecatedError(key, xKey, yKey) {
+ if (!logs[key + xKey + yKey]) {
+ console.warn("DEPRECATED: '" + key + "' has been deprecated. use '" + xKey + "', '" + yKey + "' instead");
+ logs[key + xKey + yKey] = true;
+ }
+ }
+ function createLegacyProperty(key, privateKey, xKey, yKey) {
+ Object.defineProperty(elProto, key, {
+ get: function() {
+ if (true) {
+ logDeprecatedError(key, xKey, yKey);
+ }
+ if (!this[privateKey]) {
+ var pos = this[privateKey] = [];
+ enhanceArray(this, pos);
+ }
+ return this[privateKey];
+ },
+ set: function(pos) {
+ if (true) {
+ logDeprecatedError(key, xKey, yKey);
+ }
+ this[xKey] = pos[0];
+ this[yKey] = pos[1];
+ this[privateKey] = pos;
+ enhanceArray(this, pos);
+ }
+ });
+ function enhanceArray(self2, pos) {
+ Object.defineProperty(pos, 0, {
+ get: function() {
+ return self2[xKey];
+ },
+ set: function(val) {
+ self2[xKey] = val;
+ }
+ });
+ Object.defineProperty(pos, 1, {
+ get: function() {
+ return self2[yKey];
+ },
+ set: function(val) {
+ self2[yKey] = val;
+ }
+ });
+ }
+ }
+ if (Object.defineProperty) {
+ createLegacyProperty("position", "_legacyPos", "x", "y");
+ createLegacyProperty("scale", "_legacyScale", "scaleX", "scaleY");
+ createLegacyProperty("origin", "_legacyOrigin", "originX", "originY");
+ }
+ }();
+ return Element2;
+}();
+mixin(Element, Eventful_default);
+mixin(Element, Transformable_default);
+function animateTo(animatable, target, cfg, animationProps, reverse2) {
+ cfg = cfg || {};
+ var animators = [];
+ animateToShallow(animatable, "", animatable, target, cfg, animationProps, animators, reverse2);
+ var finishCount = animators.length;
+ var doneHappened = false;
+ var cfgDone = cfg.done;
+ var cfgAborted = cfg.aborted;
+ var doneCb = function() {
+ doneHappened = true;
+ finishCount--;
+ if (finishCount <= 0) {
+ doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted();
+ }
+ };
+ var abortedCb = function() {
+ finishCount--;
+ if (finishCount <= 0) {
+ doneHappened ? cfgDone && cfgDone() : cfgAborted && cfgAborted();
+ }
+ };
+ if (!finishCount) {
+ cfgDone && cfgDone();
+ }
+ if (animators.length > 0 && cfg.during) {
+ animators[0].during(function(target2, percent) {
+ cfg.during(percent);
+ });
+ }
+ for (var i = 0; i < animators.length; i++) {
+ var animator = animators[i];
+ if (doneCb) {
+ animator.done(doneCb);
+ }
+ if (abortedCb) {
+ animator.aborted(abortedCb);
+ }
+ if (cfg.force) {
+ animator.duration(cfg.duration);
+ }
+ animator.start(cfg.easing);
+ }
+ return animators;
+}
+function copyArrShallow(source, target, len2) {
+ for (var i = 0; i < len2; i++) {
+ source[i] = target[i];
+ }
+}
+function is2DArray(value) {
+ return isArrayLike(value[0]);
+}
+function copyValue(target, source, key) {
+ if (isArrayLike(source[key])) {
+ if (!isArrayLike(target[key])) {
+ target[key] = [];
+ }
+ if (isTypedArray(source[key])) {
+ var len2 = source[key].length;
+ if (target[key].length !== len2) {
+ target[key] = new source[key].constructor(len2);
+ copyArrShallow(target[key], source[key], len2);
+ }
+ } else {
+ var sourceArr = source[key];
+ var targetArr = target[key];
+ var len0 = sourceArr.length;
+ if (is2DArray(sourceArr)) {
+ var len1 = sourceArr[0].length;
+ for (var i = 0; i < len0; i++) {
+ if (!targetArr[i]) {
+ targetArr[i] = Array.prototype.slice.call(sourceArr[i]);
+ } else {
+ copyArrShallow(targetArr[i], sourceArr[i], len1);
+ }
+ }
+ } else {
+ copyArrShallow(targetArr, sourceArr, len0);
+ }
+ targetArr.length = sourceArr.length;
+ }
+ } else {
+ target[key] = source[key];
+ }
+}
+function isValueSame(val1, val2) {
+ return val1 === val2 || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2);
+}
+function is1DArraySame(arr0, arr1) {
+ var len2 = arr0.length;
+ if (len2 !== arr1.length) {
+ return false;
+ }
+ for (var i = 0; i < len2; i++) {
+ if (arr0[i] !== arr1[i]) {
+ return false;
+ }
+ }
+ return true;
+}
+function animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse2) {
+ var targetKeys = keys(target);
+ var duration = cfg.duration;
+ var delay = cfg.delay;
+ var additive = cfg.additive;
+ var setToFinal = cfg.setToFinal;
+ var animateAll = !isObject(animationProps);
+ var existsAnimators = animatable.animators;
+ var animationKeys = [];
+ for (var k = 0; k < targetKeys.length; k++) {
+ var innerKey = targetKeys[k];
+ var targetVal = target[innerKey];
+ if (targetVal != null && animateObj[innerKey] != null && (animateAll || animationProps[innerKey])) {
+ if (isObject(targetVal) && !isArrayLike(targetVal) && !isGradientObject(targetVal)) {
+ if (topKey) {
+ if (!reverse2) {
+ animateObj[innerKey] = targetVal;
+ animatable.updateDuringAnimation(topKey);
+ }
+ continue;
+ }
+ animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse2);
+ } else {
+ animationKeys.push(innerKey);
+ }
+ } else if (!reverse2) {
+ animateObj[innerKey] = targetVal;
+ animatable.updateDuringAnimation(topKey);
+ animationKeys.push(innerKey);
+ }
+ }
+ var keyLen = animationKeys.length;
+ if (!additive && keyLen) {
+ for (var i = 0; i < existsAnimators.length; i++) {
+ var animator = existsAnimators[i];
+ if (animator.targetName === topKey) {
+ var allAborted = animator.stopTracks(animationKeys);
+ if (allAborted) {
+ var idx = indexOf(existsAnimators, animator);
+ existsAnimators.splice(idx, 1);
+ }
+ }
+ }
+ }
+ if (!cfg.force) {
+ animationKeys = filter(animationKeys, function(key) {
+ return !isValueSame(target[key], animateObj[key]);
+ });
+ keyLen = animationKeys.length;
+ }
+ if (keyLen > 0 || cfg.force && !animators.length) {
+ var revertedSource = void 0;
+ var reversedTarget = void 0;
+ var sourceClone = void 0;
+ if (reverse2) {
+ reversedTarget = {};
+ if (setToFinal) {
+ revertedSource = {};
+ }
+ for (var i = 0; i < keyLen; i++) {
+ var innerKey = animationKeys[i];
+ reversedTarget[innerKey] = animateObj[innerKey];
+ if (setToFinal) {
+ revertedSource[innerKey] = target[innerKey];
+ } else {
+ animateObj[innerKey] = target[innerKey];
+ }
+ }
+ } else if (setToFinal) {
+ sourceClone = {};
+ for (var i = 0; i < keyLen; i++) {
+ var innerKey = animationKeys[i];
+ sourceClone[innerKey] = cloneValue(animateObj[innerKey]);
+ copyValue(animateObj, target, innerKey);
+ }
+ }
+ var animator = new Animator_default(animateObj, false, false, additive ? filter(existsAnimators, function(animator2) {
+ return animator2.targetName === topKey;
+ }) : null);
+ animator.targetName = topKey;
+ if (cfg.scope) {
+ animator.scope = cfg.scope;
+ }
+ if (setToFinal && revertedSource) {
+ animator.whenWithKeys(0, revertedSource, animationKeys);
+ }
+ if (sourceClone) {
+ animator.whenWithKeys(0, sourceClone, animationKeys);
+ }
+ animator.whenWithKeys(duration == null ? 500 : duration, reverse2 ? reversedTarget : target, animationKeys).delay(delay || 0);
+ animatable.addAnimator(animator, topKey);
+ animators.push(animator);
+ }
+}
+var Element_default = Element;
+
+// node_modules/zrender/lib/graphic/Group.js
+var Group = function(_super) {
+ __extends(Group5, _super);
+ function Group5(opts) {
+ var _this = _super.call(this) || this;
+ _this.isGroup = true;
+ _this._children = [];
+ _this.attr(opts);
+ return _this;
+ }
+ Group5.prototype.childrenRef = function() {
+ return this._children;
+ };
+ Group5.prototype.children = function() {
+ return this._children.slice();
+ };
+ Group5.prototype.childAt = function(idx) {
+ return this._children[idx];
+ };
+ Group5.prototype.childOfName = function(name) {
+ var children = this._children;
+ for (var i = 0; i < children.length; i++) {
+ if (children[i].name === name) {
+ return children[i];
+ }
+ }
+ };
+ Group5.prototype.childCount = function() {
+ return this._children.length;
+ };
+ Group5.prototype.add = function(child) {
+ if (child) {
+ if (child !== this && child.parent !== this) {
+ this._children.push(child);
+ this._doAdd(child);
+ }
+ if (true) {
+ if (child.__hostTarget) {
+ throw "This elemenet has been used as an attachment";
+ }
+ }
+ }
+ return this;
+ };
+ Group5.prototype.addBefore = function(child, nextSibling2) {
+ if (child && child !== this && child.parent !== this && nextSibling2 && nextSibling2.parent === this) {
+ var children = this._children;
+ var idx = children.indexOf(nextSibling2);
+ if (idx >= 0) {
+ children.splice(idx, 0, child);
+ this._doAdd(child);
+ }
+ }
+ return this;
+ };
+ Group5.prototype.replace = function(oldChild, newChild) {
+ var idx = indexOf(this._children, oldChild);
+ if (idx >= 0) {
+ this.replaceAt(newChild, idx);
+ }
+ return this;
+ };
+ Group5.prototype.replaceAt = function(child, index) {
+ var children = this._children;
+ var old = children[index];
+ if (child && child !== this && child.parent !== this && child !== old) {
+ children[index] = child;
+ old.parent = null;
+ var zr = this.__zr;
+ if (zr) {
+ old.removeSelfFromZr(zr);
+ }
+ this._doAdd(child);
+ }
+ return this;
+ };
+ Group5.prototype._doAdd = function(child) {
+ if (child.parent) {
+ child.parent.remove(child);
+ }
+ child.parent = this;
+ var zr = this.__zr;
+ if (zr && zr !== child.__zr) {
+ child.addSelfToZr(zr);
+ }
+ zr && zr.refresh();
+ };
+ Group5.prototype.remove = function(child) {
+ var zr = this.__zr;
+ var children = this._children;
+ var idx = indexOf(children, child);
+ if (idx < 0) {
+ return this;
+ }
+ children.splice(idx, 1);
+ child.parent = null;
+ if (zr) {
+ child.removeSelfFromZr(zr);
+ }
+ zr && zr.refresh();
+ return this;
+ };
+ Group5.prototype.removeAll = function() {
+ var children = this._children;
+ var zr = this.__zr;
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ if (zr) {
+ child.removeSelfFromZr(zr);
+ }
+ child.parent = null;
+ }
+ children.length = 0;
+ return this;
+ };
+ Group5.prototype.eachChild = function(cb, context) {
+ var children = this._children;
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ cb.call(context, child, i);
+ }
+ return this;
+ };
+ Group5.prototype.traverse = function(cb, context) {
+ for (var i = 0; i < this._children.length; i++) {
+ var child = this._children[i];
+ var stopped = cb.call(context, child);
+ if (child.isGroup && !stopped) {
+ child.traverse(cb, context);
+ }
+ }
+ return this;
+ };
+ Group5.prototype.addSelfToZr = function(zr) {
+ _super.prototype.addSelfToZr.call(this, zr);
+ for (var i = 0; i < this._children.length; i++) {
+ var child = this._children[i];
+ child.addSelfToZr(zr);
+ }
+ };
+ Group5.prototype.removeSelfFromZr = function(zr) {
+ _super.prototype.removeSelfFromZr.call(this, zr);
+ for (var i = 0; i < this._children.length; i++) {
+ var child = this._children[i];
+ child.removeSelfFromZr(zr);
+ }
+ };
+ Group5.prototype.getBoundingRect = function(includeChildren) {
+ var tmpRect3 = new BoundingRect_default(0, 0, 0, 0);
+ var children = includeChildren || this._children;
+ var tmpMat = [];
+ var rect = null;
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ if (child.ignore || child.invisible) {
+ continue;
+ }
+ var childRect = child.getBoundingRect();
+ var transform2 = child.getLocalTransform(tmpMat);
+ if (transform2) {
+ BoundingRect_default.applyTransform(tmpRect3, childRect, transform2);
+ rect = rect || tmpRect3.clone();
+ rect.union(tmpRect3);
+ } else {
+ rect = rect || childRect.clone();
+ rect.union(childRect);
+ }
+ }
+ return rect || tmpRect3;
+ };
+ return Group5;
+}(Element_default);
+Group.prototype.type = "group";
+var Group_default = Group;
+
+// node_modules/zrender/lib/zrender.js
+var painterCtors = {};
+var instances = {};
+function delInstance(id) {
+ delete instances[id];
+}
+function isDarkMode(backgroundColor2) {
+ if (!backgroundColor2) {
+ return false;
+ }
+ if (typeof backgroundColor2 === "string") {
+ return lum(backgroundColor2, 1) < DARK_MODE_THRESHOLD;
+ } else if (backgroundColor2.colorStops) {
+ var colorStops = backgroundColor2.colorStops;
+ var totalLum = 0;
+ var len2 = colorStops.length;
+ for (var i = 0; i < len2; i++) {
+ totalLum += lum(colorStops[i].color, 1);
+ }
+ totalLum /= len2;
+ return totalLum < DARK_MODE_THRESHOLD;
+ }
+ return false;
+}
+var ZRender = function() {
+ function ZRender2(id, dom, opts) {
+ var _this = this;
+ this._sleepAfterStill = 10;
+ this._stillFrameAccum = 0;
+ this._needsRefresh = true;
+ this._needsRefreshHover = true;
+ this._darkMode = false;
+ opts = opts || {};
+ this.dom = dom;
+ this.id = id;
+ var storage2 = new Storage_default();
+ var rendererType = opts.renderer || "canvas";
+ if (!painterCtors[rendererType]) {
+ rendererType = keys(painterCtors)[0];
+ }
+ if (true) {
+ if (!painterCtors[rendererType]) {
+ throw new Error("Renderer '" + rendererType + "' is not imported. Please import it first.");
+ }
+ }
+ opts.useDirtyRect = opts.useDirtyRect == null ? false : opts.useDirtyRect;
+ var painter = new painterCtors[rendererType](dom, storage2, opts, id);
+ var ssrMode = opts.ssr || painter.ssrOnly;
+ this.storage = storage2;
+ this.painter = painter;
+ var handlerProxy = !env_default.node && !env_default.worker && !ssrMode ? new HandlerProxy_default(painter.getViewportRoot(), painter.root) : null;
+ var useCoarsePointer = opts.useCoarsePointer;
+ var usePointerSize = useCoarsePointer == null || useCoarsePointer === "auto" ? env_default.touchEventsSupported : !!useCoarsePointer;
+ var defaultPointerSize = 44;
+ var pointerSize;
+ if (usePointerSize) {
+ pointerSize = retrieve2(opts.pointerSize, defaultPointerSize);
+ }
+ this.handler = new Handler_default(storage2, painter, handlerProxy, painter.root, pointerSize);
+ this.animation = new Animation_default({
+ stage: {
+ update: ssrMode ? null : function() {
+ return _this._flush(true);
+ }
+ }
+ });
+ if (!ssrMode) {
+ this.animation.start();
+ }
+ }
+ ZRender2.prototype.add = function(el) {
+ if (this._disposed || !el) {
+ return;
+ }
+ this.storage.addRoot(el);
+ el.addSelfToZr(this);
+ this.refresh();
+ };
+ ZRender2.prototype.remove = function(el) {
+ if (this._disposed || !el) {
+ return;
+ }
+ this.storage.delRoot(el);
+ el.removeSelfFromZr(this);
+ this.refresh();
+ };
+ ZRender2.prototype.configLayer = function(zLevel, config) {
+ if (this._disposed) {
+ return;
+ }
+ if (this.painter.configLayer) {
+ this.painter.configLayer(zLevel, config);
+ }
+ this.refresh();
+ };
+ ZRender2.prototype.setBackgroundColor = function(backgroundColor2) {
+ if (this._disposed) {
+ return;
+ }
+ if (this.painter.setBackgroundColor) {
+ this.painter.setBackgroundColor(backgroundColor2);
+ }
+ this.refresh();
+ this._backgroundColor = backgroundColor2;
+ this._darkMode = isDarkMode(backgroundColor2);
+ };
+ ZRender2.prototype.getBackgroundColor = function() {
+ return this._backgroundColor;
+ };
+ ZRender2.prototype.setDarkMode = function(darkMode) {
+ this._darkMode = darkMode;
+ };
+ ZRender2.prototype.isDarkMode = function() {
+ return this._darkMode;
+ };
+ ZRender2.prototype.refreshImmediately = function(fromInside) {
+ if (this._disposed) {
+ return;
+ }
+ if (!fromInside) {
+ this.animation.update(true);
+ }
+ this._needsRefresh = false;
+ this.painter.refresh();
+ this._needsRefresh = false;
+ };
+ ZRender2.prototype.refresh = function() {
+ if (this._disposed) {
+ return;
+ }
+ this._needsRefresh = true;
+ this.animation.start();
+ };
+ ZRender2.prototype.flush = function() {
+ if (this._disposed) {
+ return;
+ }
+ this._flush(false);
+ };
+ ZRender2.prototype._flush = function(fromInside) {
+ var triggerRendered;
+ var start2 = getTime();
+ if (this._needsRefresh) {
+ triggerRendered = true;
+ this.refreshImmediately(fromInside);
+ }
+ if (this._needsRefreshHover) {
+ triggerRendered = true;
+ this.refreshHoverImmediately();
+ }
+ var end2 = getTime();
+ if (triggerRendered) {
+ this._stillFrameAccum = 0;
+ this.trigger("rendered", {
+ elapsedTime: end2 - start2
+ });
+ } else if (this._sleepAfterStill > 0) {
+ this._stillFrameAccum++;
+ if (this._stillFrameAccum > this._sleepAfterStill) {
+ this.animation.stop();
+ }
+ }
+ };
+ ZRender2.prototype.setSleepAfterStill = function(stillFramesCount) {
+ this._sleepAfterStill = stillFramesCount;
+ };
+ ZRender2.prototype.wakeUp = function() {
+ if (this._disposed) {
+ return;
+ }
+ this.animation.start();
+ this._stillFrameAccum = 0;
+ };
+ ZRender2.prototype.refreshHover = function() {
+ this._needsRefreshHover = true;
+ };
+ ZRender2.prototype.refreshHoverImmediately = function() {
+ if (this._disposed) {
+ return;
+ }
+ this._needsRefreshHover = false;
+ if (this.painter.refreshHover && this.painter.getType() === "canvas") {
+ this.painter.refreshHover();
+ }
+ };
+ ZRender2.prototype.resize = function(opts) {
+ if (this._disposed) {
+ return;
+ }
+ opts = opts || {};
+ this.painter.resize(opts.width, opts.height);
+ this.handler.resize();
+ };
+ ZRender2.prototype.clearAnimation = function() {
+ if (this._disposed) {
+ return;
+ }
+ this.animation.clear();
+ };
+ ZRender2.prototype.getWidth = function() {
+ if (this._disposed) {
+ return;
+ }
+ return this.painter.getWidth();
+ };
+ ZRender2.prototype.getHeight = function() {
+ if (this._disposed) {
+ return;
+ }
+ return this.painter.getHeight();
+ };
+ ZRender2.prototype.setCursorStyle = function(cursorStyle) {
+ if (this._disposed) {
+ return;
+ }
+ this.handler.setCursorStyle(cursorStyle);
+ };
+ ZRender2.prototype.findHover = function(x, y) {
+ if (this._disposed) {
+ return;
+ }
+ return this.handler.findHover(x, y);
+ };
+ ZRender2.prototype.on = function(eventName, eventHandler, context) {
+ if (!this._disposed) {
+ this.handler.on(eventName, eventHandler, context);
+ }
+ return this;
+ };
+ ZRender2.prototype.off = function(eventName, eventHandler) {
+ if (this._disposed) {
+ return;
+ }
+ this.handler.off(eventName, eventHandler);
+ };
+ ZRender2.prototype.trigger = function(eventName, event) {
+ if (this._disposed) {
+ return;
+ }
+ this.handler.trigger(eventName, event);
+ };
+ ZRender2.prototype.clear = function() {
+ if (this._disposed) {
+ return;
+ }
+ var roots2 = this.storage.getRoots();
+ for (var i = 0; i < roots2.length; i++) {
+ if (roots2[i] instanceof Group_default) {
+ roots2[i].removeSelfFromZr(this);
+ }
+ }
+ this.storage.delAllRoots();
+ this.painter.clear();
+ };
+ ZRender2.prototype.dispose = function() {
+ if (this._disposed) {
+ return;
+ }
+ this.animation.stop();
+ this.clear();
+ this.storage.dispose();
+ this.painter.dispose();
+ this.handler.dispose();
+ this.animation = this.storage = this.painter = this.handler = null;
+ this._disposed = true;
+ delInstance(this.id);
+ };
+ return ZRender2;
+}();
+function init(dom, opts) {
+ var zr = new ZRender(guid(), dom, opts);
+ instances[zr.id] = zr;
+ return zr;
+}
+function dispose(zr) {
+ zr.dispose();
+}
+function disposeAll() {
+ for (var key in instances) {
+ if (instances.hasOwnProperty(key)) {
+ instances[key].dispose();
+ }
+ }
+ instances = {};
+}
+function getInstance(id) {
+ return instances[id];
+}
+function registerPainter(name, Ctor) {
+ painterCtors[name] = Ctor;
+}
+var ssrDataGetter;
+function getElementSSRData(el) {
+ if (typeof ssrDataGetter === "function") {
+ return ssrDataGetter(el);
+ }
+}
+function registerSSRDataGetter(getter) {
+ ssrDataGetter = getter;
+}
+var version = "5.6.1";
+
+// node_modules/echarts/lib/util/number.js
+var RADIAN_EPSILON = 1e-4;
+var ROUND_SUPPORTED_PRECISION_MAX = 20;
+function _trim(str) {
+ return str.replace(/^\s+|\s+$/g, "");
+}
+function linearMap(val, domain, range, clamp2) {
+ var d0 = domain[0];
+ var d1 = domain[1];
+ var r0 = range[0];
+ var r1 = range[1];
+ var subDomain = d1 - d0;
+ var subRange = r1 - r0;
+ if (subDomain === 0) {
+ return subRange === 0 ? r0 : (r0 + r1) / 2;
+ }
+ if (clamp2) {
+ if (subDomain > 0) {
+ if (val <= d0) {
+ return r0;
+ } else if (val >= d1) {
+ return r1;
+ }
+ } else {
+ if (val >= d0) {
+ return r0;
+ } else if (val <= d1) {
+ return r1;
+ }
+ }
+ } else {
+ if (val === d0) {
+ return r0;
+ }
+ if (val === d1) {
+ return r1;
+ }
+ }
+ return (val - d0) / subDomain * subRange + r0;
+}
+function parsePercent2(percent, all) {
+ switch (percent) {
+ case "center":
+ case "middle":
+ percent = "50%";
+ break;
+ case "left":
+ case "top":
+ percent = "0%";
+ break;
+ case "right":
+ case "bottom":
+ percent = "100%";
+ break;
+ }
+ if (isString(percent)) {
+ if (_trim(percent).match(/%$/)) {
+ return parseFloat(percent) / 100 * all;
+ }
+ return parseFloat(percent);
+ }
+ return percent == null ? NaN : +percent;
+}
+function round(x, precision, returnStr) {
+ if (precision == null) {
+ precision = 10;
+ }
+ precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX);
+ x = (+x).toFixed(precision);
+ return returnStr ? x : +x;
+}
+function asc(arr) {
+ arr.sort(function(a, b) {
+ return a - b;
+ });
+ return arr;
+}
+function getPrecision(val) {
+ val = +val;
+ if (isNaN(val)) {
+ return 0;
+ }
+ if (val > 1e-14) {
+ var e2 = 1;
+ for (var i = 0; i < 15; i++, e2 *= 10) {
+ if (Math.round(val * e2) / e2 === val) {
+ return i;
+ }
+ }
+ }
+ return getPrecisionSafe(val);
+}
+function getPrecisionSafe(val) {
+ var str = val.toString().toLowerCase();
+ var eIndex = str.indexOf("e");
+ var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0;
+ var significandPartLen = eIndex > 0 ? eIndex : str.length;
+ var dotIndex = str.indexOf(".");
+ var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex;
+ return Math.max(0, decimalPartLen - exp);
+}
+function getPixelPrecision(dataExtent, pixelExtent) {
+ var log2 = Math.log;
+ var LN10 = Math.LN10;
+ var dataQuantity = Math.floor(log2(dataExtent[1] - dataExtent[0]) / LN10);
+ var sizeQuantity = Math.round(log2(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);
+ var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);
+ return !isFinite(precision) ? 20 : precision;
+}
+function getPercentWithPrecision(valueList, idx, precision) {
+ if (!valueList[idx]) {
+ return 0;
+ }
+ var seats = getPercentSeats(valueList, precision);
+ return seats[idx] || 0;
+}
+function getPercentSeats(valueList, precision) {
+ var sum2 = reduce(valueList, function(acc, val) {
+ return acc + (isNaN(val) ? 0 : val);
+ }, 0);
+ if (sum2 === 0) {
+ return [];
+ }
+ var digits = Math.pow(10, precision);
+ var votesPerQuota = map(valueList, function(val) {
+ return (isNaN(val) ? 0 : val) / sum2 * digits * 100;
+ });
+ var targetSeats = digits * 100;
+ var seats = map(votesPerQuota, function(votes) {
+ return Math.floor(votes);
+ });
+ var currentSum = reduce(seats, function(acc, val) {
+ return acc + val;
+ }, 0);
+ var remainder = map(votesPerQuota, function(votes, idx) {
+ return votes - seats[idx];
+ });
+ while (currentSum < targetSeats) {
+ var max3 = Number.NEGATIVE_INFINITY;
+ var maxId = null;
+ for (var i = 0, len2 = remainder.length; i < len2; ++i) {
+ if (remainder[i] > max3) {
+ max3 = remainder[i];
+ maxId = i;
+ }
+ }
+ ++seats[maxId];
+ remainder[maxId] = 0;
+ ++currentSum;
+ }
+ return map(seats, function(seat) {
+ return seat / digits;
+ });
+}
+function addSafe(val0, val1) {
+ var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1));
+ var sum2 = val0 + val1;
+ return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum2 : round(sum2, maxPrecision);
+}
+var MAX_SAFE_INTEGER = 9007199254740991;
+function remRadian(radian) {
+ var pi2 = Math.PI * 2;
+ return (radian % pi2 + pi2) % pi2;
+}
+function isRadianAroundZero(val) {
+ return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;
+}
+var TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;
+function parseDate(value) {
+ if (value instanceof Date) {
+ return value;
+ } else if (isString(value)) {
+ var match = TIME_REG.exec(value);
+ if (!match) {
+ return new Date(NaN);
+ }
+ if (!match[8]) {
+ return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0);
+ } else {
+ var hour = +match[4] || 0;
+ if (match[8].toUpperCase() !== "Z") {
+ hour -= +match[8].slice(0, 3);
+ }
+ return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0));
+ }
+ } else if (value == null) {
+ return new Date(NaN);
+ }
+ return new Date(Math.round(value));
+}
+function quantity(val) {
+ return Math.pow(10, quantityExponent(val));
+}
+function quantityExponent(val) {
+ if (val === 0) {
+ return 0;
+ }
+ var exp = Math.floor(Math.log(val) / Math.LN10);
+ if (val / Math.pow(10, exp) >= 10) {
+ exp++;
+ }
+ return exp;
+}
+function nice(val, round7) {
+ var exponent = quantityExponent(val);
+ var exp10 = Math.pow(10, exponent);
+ var f = val / exp10;
+ var nf;
+ if (round7) {
+ if (f < 1.5) {
+ nf = 1;
+ } else if (f < 2.5) {
+ nf = 2;
+ } else if (f < 4) {
+ nf = 3;
+ } else if (f < 7) {
+ nf = 5;
+ } else {
+ nf = 10;
+ }
+ } else {
+ if (f < 1) {
+ nf = 1;
+ } else if (f < 2) {
+ nf = 2;
+ } else if (f < 3) {
+ nf = 3;
+ } else if (f < 5) {
+ nf = 5;
+ } else {
+ nf = 10;
+ }
+ }
+ val = nf * exp10;
+ return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;
+}
+function quantile(ascArr, p) {
+ var H = (ascArr.length - 1) * p + 1;
+ var h = Math.floor(H);
+ var v = +ascArr[h - 1];
+ var e2 = H - h;
+ return e2 ? v + e2 * (ascArr[h] - v) : v;
+}
+function reformIntervals(list) {
+ list.sort(function(a, b) {
+ return littleThan2(a, b, 0) ? -1 : 1;
+ });
+ var curr = -Infinity;
+ var currClose = 1;
+ for (var i = 0; i < list.length; ) {
+ var interval = list[i].interval;
+ var close_1 = list[i].close;
+ for (var lg = 0; lg < 2; lg++) {
+ if (interval[lg] <= curr) {
+ interval[lg] = curr;
+ close_1[lg] = !lg ? 1 - currClose : 1;
+ }
+ curr = interval[lg];
+ currClose = close_1[lg];
+ }
+ if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {
+ list.splice(i, 1);
+ } else {
+ i++;
+ }
+ }
+ return list;
+ function littleThan2(a, b, lg2) {
+ return a.interval[lg2] < b.interval[lg2] || a.interval[lg2] === b.interval[lg2] && (a.close[lg2] - b.close[lg2] === (!lg2 ? 1 : -1) || !lg2 && littleThan2(a, b, 1));
+ }
+}
+function numericToNumber(val) {
+ var valFloat = parseFloat(val);
+ return valFloat == val && (valFloat !== 0 || !isString(val) || val.indexOf("x") <= 0) ? valFloat : NaN;
+}
+function isNumeric(val) {
+ return !isNaN(numericToNumber(val));
+}
+function getRandomIdBase() {
+ return Math.round(Math.random() * 9);
+}
+function getGreatestCommonDividor(a, b) {
+ if (b === 0) {
+ return a;
+ }
+ return getGreatestCommonDividor(b, a % b);
+}
+function getLeastCommonMultiple(a, b) {
+ if (a == null) {
+ return b;
+ }
+ if (b == null) {
+ return a;
+ }
+ return a * b / getGreatestCommonDividor(a, b);
+}
+
+// node_modules/echarts/lib/util/log.js
+var ECHARTS_PREFIX = "[ECharts] ";
+var storedLogs = {};
+var hasConsole = typeof console !== "undefined" && console.warn && console.log;
+function outputLog(type, str, onlyOnce) {
+ if (hasConsole) {
+ if (onlyOnce) {
+ if (storedLogs[str]) {
+ return;
+ }
+ storedLogs[str] = true;
+ }
+ console[type](ECHARTS_PREFIX + str);
+ }
+}
+function log(str, onlyOnce) {
+ outputLog("log", str, onlyOnce);
+}
+function warn(str, onlyOnce) {
+ outputLog("warn", str, onlyOnce);
+}
+function error(str, onlyOnce) {
+ outputLog("error", str, onlyOnce);
+}
+function deprecateLog(str) {
+ if (true) {
+ outputLog("warn", "DEPRECATED: " + str, true);
+ }
+}
+function deprecateReplaceLog(oldOpt, newOpt, scope) {
+ if (true) {
+ deprecateLog((scope ? "[" + scope + "]" : "") + (oldOpt + " is deprecated, use " + newOpt + " instead."));
+ }
+}
+function makePrintable() {
+ var hintInfo = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ hintInfo[_i] = arguments[_i];
+ }
+ var msg = "";
+ if (true) {
+ var makePrintableStringIfPossible_1 = function(val) {
+ return val === void 0 ? "undefined" : val === Infinity ? "Infinity" : val === -Infinity ? "-Infinity" : eqNaN(val) ? "NaN" : val instanceof Date ? "Date(" + val.toISOString() + ")" : isFunction(val) ? "function () { ... }" : isRegExp(val) ? val + "" : null;
+ };
+ msg = map(hintInfo, function(arg) {
+ if (isString(arg)) {
+ return arg;
+ } else {
+ var printableStr = makePrintableStringIfPossible_1(arg);
+ if (printableStr != null) {
+ return printableStr;
+ } else if (typeof JSON !== "undefined" && JSON.stringify) {
+ try {
+ return JSON.stringify(arg, function(n, val) {
+ var printableStr2 = makePrintableStringIfPossible_1(val);
+ return printableStr2 == null ? val : printableStr2;
+ });
+ } catch (err) {
+ return "?";
+ }
+ } else {
+ return "?";
+ }
+ }
+ }).join(" ");
+ }
+ return msg;
+}
+function throwError(msg) {
+ throw new Error(msg);
+}
+
+// node_modules/echarts/lib/util/model.js
+function interpolateNumber2(p0, p1, percent) {
+ return (p1 - p0) * percent + p0;
+}
+var DUMMY_COMPONENT_NAME_PREFIX = "series\0";
+var INTERNAL_COMPONENT_ID_PREFIX = "\0_ec_\0";
+function normalizeToArray(value) {
+ return value instanceof Array ? value : value == null ? [] : [value];
+}
+function defaultEmphasis(opt, key, subOpts) {
+ if (opt) {
+ opt[key] = opt[key] || {};
+ opt.emphasis = opt.emphasis || {};
+ opt.emphasis[key] = opt.emphasis[key] || {};
+ for (var i = 0, len2 = subOpts.length; i < len2; i++) {
+ var subOptName = subOpts[i];
+ if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {
+ opt.emphasis[key][subOptName] = opt[key][subOptName];
+ }
+ }
+ }
+}
+var TEXT_STYLE_OPTIONS = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding"];
+function getDataItemValue(dataItem) {
+ return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;
+}
+function isDataItemOption(dataItem) {
+ return isObject(dataItem) && !(dataItem instanceof Array);
+}
+function mappingToExists(existings, newCmptOptions, mode) {
+ var isNormalMergeMode = mode === "normalMerge";
+ var isReplaceMergeMode = mode === "replaceMerge";
+ var isReplaceAllMode = mode === "replaceAll";
+ existings = existings || [];
+ newCmptOptions = (newCmptOptions || []).slice();
+ var existingIdIdxMap = createHashMap();
+ each(newCmptOptions, function(cmptOption, index) {
+ if (!isObject(cmptOption)) {
+ newCmptOptions[index] = null;
+ return;
+ }
+ if (true) {
+ if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {
+ warnInvalidateIdOrName(cmptOption.id);
+ }
+ if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {
+ warnInvalidateIdOrName(cmptOption.name);
+ }
+ }
+ });
+ var result = prepareResult(existings, existingIdIdxMap, mode);
+ if (isNormalMergeMode || isReplaceMergeMode) {
+ mappingById(result, existings, existingIdIdxMap, newCmptOptions);
+ }
+ if (isNormalMergeMode) {
+ mappingByName(result, newCmptOptions);
+ }
+ if (isNormalMergeMode || isReplaceMergeMode) {
+ mappingByIndex(result, newCmptOptions, isReplaceMergeMode);
+ } else if (isReplaceAllMode) {
+ mappingInReplaceAllMode(result, newCmptOptions);
+ }
+ makeIdAndName(result);
+ return result;
+}
+function prepareResult(existings, existingIdIdxMap, mode) {
+ var result = [];
+ if (mode === "replaceAll") {
+ return result;
+ }
+ for (var index = 0; index < existings.length; index++) {
+ var existing = existings[index];
+ if (existing && existing.id != null) {
+ existingIdIdxMap.set(existing.id, index);
+ }
+ result.push({
+ existing: mode === "replaceMerge" || isComponentIdInternal(existing) ? null : existing,
+ newOption: null,
+ keyInfo: null,
+ brandNew: null
+ });
+ }
+ return result;
+}
+function mappingById(result, existings, existingIdIdxMap, newCmptOptions) {
+ each(newCmptOptions, function(cmptOption, index) {
+ if (!cmptOption || cmptOption.id == null) {
+ return;
+ }
+ var optionId = makeComparableKey(cmptOption.id);
+ var existingIdx = existingIdIdxMap.get(optionId);
+ if (existingIdx != null) {
+ var resultItem = result[existingIdx];
+ assert(!resultItem.newOption, 'Duplicated option on id "' + optionId + '".');
+ resultItem.newOption = cmptOption;
+ resultItem.existing = existings[existingIdx];
+ newCmptOptions[index] = null;
+ }
+ });
+}
+function mappingByName(result, newCmptOptions) {
+ each(newCmptOptions, function(cmptOption, index) {
+ if (!cmptOption || cmptOption.name == null) {
+ return;
+ }
+ for (var i = 0; i < result.length; i++) {
+ var existing = result[i].existing;
+ if (!result[i].newOption && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual("name", existing, cmptOption)) {
+ result[i].newOption = cmptOption;
+ newCmptOptions[index] = null;
+ return;
+ }
+ }
+ });
+}
+function mappingByIndex(result, newCmptOptions, brandNew) {
+ each(newCmptOptions, function(cmptOption) {
+ if (!cmptOption) {
+ return;
+ }
+ var resultItem;
+ var nextIdx = 0;
+ while ((resultItem = result[nextIdx]) && (resultItem.newOption || isComponentIdInternal(resultItem.existing) || resultItem.existing && cmptOption.id != null && !keyExistAndEqual("id", cmptOption, resultItem.existing))) {
+ nextIdx++;
+ }
+ if (resultItem) {
+ resultItem.newOption = cmptOption;
+ resultItem.brandNew = brandNew;
+ } else {
+ result.push({
+ newOption: cmptOption,
+ brandNew,
+ existing: null,
+ keyInfo: null
+ });
+ }
+ nextIdx++;
+ });
+}
+function mappingInReplaceAllMode(result, newCmptOptions) {
+ each(newCmptOptions, function(cmptOption) {
+ result.push({
+ newOption: cmptOption,
+ brandNew: true,
+ existing: null,
+ keyInfo: null
+ });
+ });
+}
+function makeIdAndName(mapResult) {
+ var idMap = createHashMap();
+ each(mapResult, function(item) {
+ var existing = item.existing;
+ existing && idMap.set(existing.id, item);
+ });
+ each(mapResult, function(item) {
+ var opt = item.newOption;
+ assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, "id duplicates: " + (opt && opt.id));
+ opt && opt.id != null && idMap.set(opt.id, item);
+ !item.keyInfo && (item.keyInfo = {});
+ });
+ each(mapResult, function(item, index) {
+ var existing = item.existing;
+ var opt = item.newOption;
+ var keyInfo = item.keyInfo;
+ if (!isObject(opt)) {
+ return;
+ }
+ keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name : DUMMY_COMPONENT_NAME_PREFIX + index;
+ if (existing) {
+ keyInfo.id = makeComparableKey(existing.id);
+ } else if (opt.id != null) {
+ keyInfo.id = makeComparableKey(opt.id);
+ } else {
+ var idNum = 0;
+ do {
+ keyInfo.id = "\0" + keyInfo.name + "\0" + idNum++;
+ } while (idMap.get(keyInfo.id));
+ }
+ idMap.set(keyInfo.id, item);
+ });
+}
+function keyExistAndEqual(attr, obj1, obj2) {
+ var key1 = convertOptionIdName(obj1[attr], null);
+ var key2 = convertOptionIdName(obj2[attr], null);
+ return key1 != null && key2 != null && key1 === key2;
+}
+function makeComparableKey(val) {
+ if (true) {
+ if (val == null) {
+ throw new Error();
+ }
+ }
+ return convertOptionIdName(val, "");
+}
+function convertOptionIdName(idOrName, defaultValue) {
+ if (idOrName == null) {
+ return defaultValue;
+ }
+ return isString(idOrName) ? idOrName : isNumber(idOrName) || isStringSafe(idOrName) ? idOrName + "" : defaultValue;
+}
+function warnInvalidateIdOrName(idOrName) {
+ if (true) {
+ warn("`" + idOrName + "` is invalid id or name. Must be a string or number.");
+ }
+}
+function isValidIdOrName(idOrName) {
+ return isStringSafe(idOrName) || isNumeric(idOrName);
+}
+function isNameSpecified(componentModel) {
+ var name = componentModel.name;
+ return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));
+}
+function isComponentIdInternal(cmptOption) {
+ return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;
+}
+function makeInternalComponentId(idSuffix) {
+ return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;
+}
+function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {
+ each(mappingResult, function(item) {
+ var newOption = item.newOption;
+ if (isObject(newOption)) {
+ item.keyInfo.mainType = mainType;
+ item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);
+ }
+ });
+}
+function determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {
+ var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType : componentModelCtor.determineSubType(mainType, newCmptOption);
+ return subType;
+}
+function compressBatches(batchA, batchB) {
+ var mapA = {};
+ var mapB = {};
+ makeMap(batchA || [], mapA);
+ makeMap(batchB || [], mapB, mapA);
+ return [mapToArray(mapA), mapToArray(mapB)];
+ function makeMap(sourceBatch, map3, otherMap) {
+ for (var i = 0, len2 = sourceBatch.length; i < len2; i++) {
+ var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null);
+ if (seriesId == null) {
+ return;
+ }
+ var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);
+ var otherDataIndices = otherMap && otherMap[seriesId];
+ for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {
+ var dataIndex = dataIndices[j];
+ if (otherDataIndices && otherDataIndices[dataIndex]) {
+ otherDataIndices[dataIndex] = null;
+ } else {
+ (map3[seriesId] || (map3[seriesId] = {}))[dataIndex] = 1;
+ }
+ }
+ }
+ }
+ function mapToArray(map3, isData) {
+ var result = [];
+ for (var i in map3) {
+ if (map3.hasOwnProperty(i) && map3[i] != null) {
+ if (isData) {
+ result.push(+i);
+ } else {
+ var dataIndices = mapToArray(map3[i], true);
+ dataIndices.length && result.push({
+ seriesId: i,
+ dataIndex: dataIndices
+ });
+ }
+ }
+ }
+ return result;
+ }
+}
+function queryDataIndex(data, payload) {
+ if (payload.dataIndexInside != null) {
+ return payload.dataIndexInside;
+ } else if (payload.dataIndex != null) {
+ return isArray(payload.dataIndex) ? map(payload.dataIndex, function(value) {
+ return data.indexOfRawIndex(value);
+ }) : data.indexOfRawIndex(payload.dataIndex);
+ } else if (payload.name != null) {
+ return isArray(payload.name) ? map(payload.name, function(value) {
+ return data.indexOfName(value);
+ }) : data.indexOfName(payload.name);
+ }
+}
+function makeInner() {
+ var key = "__ec_inner_" + innerUniqueIndex++;
+ return function(hostObj) {
+ return hostObj[key] || (hostObj[key] = {});
+ };
+}
+var innerUniqueIndex = getRandomIdBase();
+function parseFinder(ecModel, finderInput, opt) {
+ var _a2 = preParseFinder(finderInput, opt), mainTypeSpecified = _a2.mainTypeSpecified, queryOptionMap = _a2.queryOptionMap, others = _a2.others;
+ var result = others;
+ var defaultMainType = opt ? opt.defaultMainType : null;
+ if (!mainTypeSpecified && defaultMainType) {
+ queryOptionMap.set(defaultMainType, {});
+ }
+ queryOptionMap.each(function(queryOption, mainType) {
+ var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {
+ useDefault: defaultMainType === mainType,
+ enableAll: opt && opt.enableAll != null ? opt.enableAll : true,
+ enableNone: opt && opt.enableNone != null ? opt.enableNone : true
+ });
+ result[mainType + "Models"] = queryResult.models;
+ result[mainType + "Model"] = queryResult.models[0];
+ });
+ return result;
+}
+function preParseFinder(finderInput, opt) {
+ var finder;
+ if (isString(finderInput)) {
+ var obj = {};
+ obj[finderInput + "Index"] = 0;
+ finder = obj;
+ } else {
+ finder = finderInput;
+ }
+ var queryOptionMap = createHashMap();
+ var others = {};
+ var mainTypeSpecified = false;
+ each(finder, function(value, key) {
+ if (key === "dataIndex" || key === "dataIndexInside") {
+ others[key] = value;
+ return;
+ }
+ var parsedKey = key.match(/^(\w+)(Index|Id|Name)$/) || [];
+ var mainType = parsedKey[1];
+ var queryType = (parsedKey[2] || "").toLowerCase();
+ if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) {
+ return;
+ }
+ mainTypeSpecified = mainTypeSpecified || !!mainType;
+ var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});
+ queryOption[queryType] = value;
+ });
+ return {
+ mainTypeSpecified,
+ queryOptionMap,
+ others
+ };
+}
+var SINGLE_REFERRING = {
+ useDefault: true,
+ enableAll: false,
+ enableNone: false
+};
+var MULTIPLE_REFERRING = {
+ useDefault: false,
+ enableAll: true,
+ enableNone: true
+};
+function queryReferringComponents(ecModel, mainType, userOption, opt) {
+ opt = opt || SINGLE_REFERRING;
+ var indexOption = userOption.index;
+ var idOption = userOption.id;
+ var nameOption = userOption.name;
+ var result = {
+ models: null,
+ specified: indexOption != null || idOption != null || nameOption != null
+ };
+ if (!result.specified) {
+ var firstCmpt = void 0;
+ result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : [];
+ return result;
+ }
+ if (indexOption === "none" || indexOption === false) {
+ assert(opt.enableNone, '`"none"` or `false` is not a valid value on index option.');
+ result.models = [];
+ return result;
+ }
+ if (indexOption === "all") {
+ assert(opt.enableAll, '`"all"` is not a valid value on index option.');
+ indexOption = idOption = nameOption = null;
+ }
+ result.models = ecModel.queryComponents({
+ mainType,
+ index: indexOption,
+ id: idOption,
+ name: nameOption
+ });
+ return result;
+}
+function setAttribute(dom, key, value) {
+ dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;
+}
+function getAttribute(dom, key) {
+ return dom.getAttribute ? dom.getAttribute(key) : dom[key];
+}
+function getTooltipRenderMode(renderModeOption) {
+ if (renderModeOption === "auto") {
+ return env_default.domSupported ? "html" : "richText";
+ } else {
+ return renderModeOption || "html";
+ }
+}
+function groupData(array, getKey2) {
+ var buckets = createHashMap();
+ var keys2 = [];
+ each(array, function(item) {
+ var key = getKey2(item);
+ (buckets.get(key) || (keys2.push(key), buckets.set(key, []))).push(item);
+ });
+ return {
+ keys: keys2,
+ buckets
+ };
+}
+function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {
+ var isAutoPrecision = precision == null || precision === "auto";
+ if (targetValue == null) {
+ return targetValue;
+ }
+ if (isNumber(targetValue)) {
+ var value = interpolateNumber2(sourceValue || 0, targetValue, percent);
+ return round(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision);
+ } else if (isString(targetValue)) {
+ return percent < 1 ? sourceValue : targetValue;
+ } else {
+ var interpolated = [];
+ var leftArr = sourceValue;
+ var rightArr = targetValue;
+ var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length);
+ for (var i = 0; i < length_1; ++i) {
+ var info = data.getDimensionInfo(i);
+ if (info && info.type === "ordinal") {
+ interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i];
+ } else {
+ var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;
+ var rightVal = rightArr[i];
+ var value = interpolateNumber2(leftVal, rightVal, percent);
+ interpolated[i] = round(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision);
+ }
+ }
+ return interpolated;
+ }
+}
+
+// node_modules/echarts/lib/util/clazz.js
+var TYPE_DELIMITER = ".";
+var IS_CONTAINER = "___EC__COMPONENT__CONTAINER___";
+var IS_EXTENDED_CLASS = "___EC__EXTENDED_CLASS___";
+function parseClassType(componentType) {
+ var ret = {
+ main: "",
+ sub: ""
+ };
+ if (componentType) {
+ var typeArr = componentType.split(TYPE_DELIMITER);
+ ret.main = typeArr[0] || "";
+ ret.sub = typeArr[1] || "";
+ }
+ return ret;
+}
+function checkClassType(componentType) {
+ assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType "' + componentType + '" illegal');
+}
+function isExtendedClass(clz) {
+ return !!(clz && clz[IS_EXTENDED_CLASS]);
+}
+function enableClassExtend(rootClz, mandatoryMethods) {
+ rootClz.$constructor = rootClz;
+ rootClz.extend = function(proto2) {
+ if (true) {
+ each(mandatoryMethods, function(method) {
+ if (!proto2[method]) {
+ console.warn("Method `" + method + "` should be implemented" + (proto2.type ? " in " + proto2.type : "") + ".");
+ }
+ });
+ }
+ var superClass = this;
+ var ExtendedClass;
+ if (isESClass(superClass)) {
+ ExtendedClass = function(_super) {
+ __extends(class_1, _super);
+ function class_1() {
+ return _super.apply(this, arguments) || this;
+ }
+ return class_1;
+ }(superClass);
+ } else {
+ ExtendedClass = function() {
+ (proto2.$constructor || superClass).apply(this, arguments);
+ };
+ inherits(ExtendedClass, this);
+ }
+ extend(ExtendedClass.prototype, proto2);
+ ExtendedClass[IS_EXTENDED_CLASS] = true;
+ ExtendedClass.extend = this.extend;
+ ExtendedClass.superCall = superCall;
+ ExtendedClass.superApply = superApply;
+ ExtendedClass.superClass = superClass;
+ return ExtendedClass;
+ };
+}
+function isESClass(fn) {
+ return isFunction(fn) && /^class\s/.test(Function.prototype.toString.call(fn));
+}
+function mountExtend(SubClz, SupperClz) {
+ SubClz.extend = SupperClz.extend;
+}
+var classBase = Math.round(Math.random() * 10);
+function enableClassCheck(target) {
+ var classAttr = ["__\0is_clz", classBase++].join("_");
+ target.prototype[classAttr] = true;
+ if (true) {
+ assert(!target.isInstance, 'The method "is" can not be defined.');
+ }
+ target.isInstance = function(obj) {
+ return !!(obj && obj[classAttr]);
+ };
+}
+function superCall(context, methodName) {
+ var args = [];
+ for (var _i = 2; _i < arguments.length; _i++) {
+ args[_i - 2] = arguments[_i];
+ }
+ return this.superClass.prototype[methodName].apply(context, args);
+}
+function superApply(context, methodName, args) {
+ return this.superClass.prototype[methodName].apply(context, args);
+}
+function enableClassManagement(target) {
+ var storage2 = {};
+ target.registerClass = function(clz) {
+ var componentFullType = clz.type || clz.prototype.type;
+ if (componentFullType) {
+ checkClassType(componentFullType);
+ clz.prototype.type = componentFullType;
+ var componentTypeInfo = parseClassType(componentFullType);
+ if (!componentTypeInfo.sub) {
+ if (true) {
+ if (storage2[componentTypeInfo.main]) {
+ console.warn(componentTypeInfo.main + " exists.");
+ }
+ }
+ storage2[componentTypeInfo.main] = clz;
+ } else if (componentTypeInfo.sub !== IS_CONTAINER) {
+ var container = makeContainer(componentTypeInfo);
+ container[componentTypeInfo.sub] = clz;
+ }
+ }
+ return clz;
+ };
+ target.getClass = function(mainType, subType, throwWhenNotFound) {
+ var clz = storage2[mainType];
+ if (clz && clz[IS_CONTAINER]) {
+ clz = subType ? clz[subType] : null;
+ }
+ if (throwWhenNotFound && !clz) {
+ throw new Error(!subType ? mainType + ".type should be specified." : "Component " + mainType + "." + (subType || "") + " is used but not imported.");
+ }
+ return clz;
+ };
+ target.getClassesByMainType = function(componentType) {
+ var componentTypeInfo = parseClassType(componentType);
+ var result = [];
+ var obj = storage2[componentTypeInfo.main];
+ if (obj && obj[IS_CONTAINER]) {
+ each(obj, function(o, type) {
+ type !== IS_CONTAINER && result.push(o);
+ });
+ } else {
+ result.push(obj);
+ }
+ return result;
+ };
+ target.hasClass = function(componentType) {
+ var componentTypeInfo = parseClassType(componentType);
+ return !!storage2[componentTypeInfo.main];
+ };
+ target.getAllClassMainTypes = function() {
+ var types = [];
+ each(storage2, function(obj, type) {
+ types.push(type);
+ });
+ return types;
+ };
+ target.hasSubTypes = function(componentType) {
+ var componentTypeInfo = parseClassType(componentType);
+ var obj = storage2[componentTypeInfo.main];
+ return obj && obj[IS_CONTAINER];
+ };
+ function makeContainer(componentTypeInfo) {
+ var container = storage2[componentTypeInfo.main];
+ if (!container || !container[IS_CONTAINER]) {
+ container = storage2[componentTypeInfo.main] = {};
+ container[IS_CONTAINER] = true;
+ }
+ return container;
+ }
+}
+
+// node_modules/echarts/lib/model/mixin/makeStyleMapper.js
+function makeStyleMapper(properties, ignoreParent) {
+ for (var i = 0; i < properties.length; i++) {
+ if (!properties[i][1]) {
+ properties[i][1] = properties[i][0];
+ }
+ }
+ ignoreParent = ignoreParent || false;
+ return function(model, excludes, includes) {
+ var style = {};
+ for (var i2 = 0; i2 < properties.length; i2++) {
+ var propName = properties[i2][1];
+ if (excludes && indexOf(excludes, propName) >= 0 || includes && indexOf(includes, propName) < 0) {
+ continue;
+ }
+ var val = model.getShallow(propName, ignoreParent);
+ if (val != null) {
+ style[properties[i2][0]] = val;
+ }
+ }
+ return style;
+ };
+}
+
+// node_modules/echarts/lib/model/mixin/areaStyle.js
+var AREA_STYLE_KEY_MAP = [
+ ["fill", "color"],
+ ["shadowBlur"],
+ ["shadowOffsetX"],
+ ["shadowOffsetY"],
+ ["opacity"],
+ ["shadowColor"]
+];
+var getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);
+var AreaStyleMixin = function() {
+ function AreaStyleMixin2() {
+ }
+ AreaStyleMixin2.prototype.getAreaStyle = function(excludes, includes) {
+ return getAreaStyle(this, excludes, includes);
+ };
+ return AreaStyleMixin2;
+}();
+
+// node_modules/zrender/lib/graphic/helper/image.js
+var globalImageCache = new LRU_default(50);
+function findExistImage(newImageOrSrc) {
+ if (typeof newImageOrSrc === "string") {
+ var cachedImgObj = globalImageCache.get(newImageOrSrc);
+ return cachedImgObj && cachedImgObj.image;
+ } else {
+ return newImageOrSrc;
+ }
+}
+function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {
+ if (!newImageOrSrc) {
+ return image;
+ } else if (typeof newImageOrSrc === "string") {
+ if (image && image.__zrImageSrc === newImageOrSrc || !hostEl) {
+ return image;
+ }
+ var cachedImgObj = globalImageCache.get(newImageOrSrc);
+ var pendingWrap = { hostEl, cb: onload, cbPayload };
+ if (cachedImgObj) {
+ image = cachedImgObj.image;
+ !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);
+ } else {
+ image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);
+ image.__zrImageSrc = newImageOrSrc;
+ globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {
+ image,
+ pending: [pendingWrap]
+ });
+ }
+ return image;
+ } else {
+ return newImageOrSrc;
+ }
+}
+function imageOnLoad() {
+ var cachedImgObj = this.__cachedImgObj;
+ this.onload = this.onerror = this.__cachedImgObj = null;
+ for (var i = 0; i < cachedImgObj.pending.length; i++) {
+ var pendingWrap = cachedImgObj.pending[i];
+ var cb = pendingWrap.cb;
+ cb && cb(this, pendingWrap.cbPayload);
+ pendingWrap.hostEl.dirty();
+ }
+ cachedImgObj.pending.length = 0;
+}
+function isImageReady(image) {
+ return image && image.width && image.height;
+}
+
+// node_modules/zrender/lib/graphic/helper/parseText.js
+var STYLE_REG = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g;
+function truncateText(text, containerWidth, font, ellipsis, options) {
+ var out2 = {};
+ truncateText2(out2, text, containerWidth, font, ellipsis, options);
+ return out2.text;
+}
+function truncateText2(out2, text, containerWidth, font, ellipsis, options) {
+ if (!containerWidth) {
+ out2.text = "";
+ out2.isTruncated = false;
+ return;
+ }
+ var textLines = (text + "").split("\n");
+ options = prepareTruncateOptions(containerWidth, font, ellipsis, options);
+ var isTruncated = false;
+ var truncateOut = {};
+ for (var i = 0, len2 = textLines.length; i < len2; i++) {
+ truncateSingleLine(truncateOut, textLines[i], options);
+ textLines[i] = truncateOut.textLine;
+ isTruncated = isTruncated || truncateOut.isTruncated;
+ }
+ out2.text = textLines.join("\n");
+ out2.isTruncated = isTruncated;
+}
+function prepareTruncateOptions(containerWidth, font, ellipsis, options) {
+ options = options || {};
+ var preparedOpts = extend({}, options);
+ preparedOpts.font = font;
+ ellipsis = retrieve2(ellipsis, "...");
+ preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);
+ var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);
+ preparedOpts.cnCharWidth = getWidth("\u56FD", font);
+ var ascCharWidth = preparedOpts.ascCharWidth = getWidth("a", font);
+ preparedOpts.placeholder = retrieve2(options.placeholder, "");
+ var contentWidth = containerWidth = Math.max(0, containerWidth - 1);
+ for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {
+ contentWidth -= ascCharWidth;
+ }
+ var ellipsisWidth = getWidth(ellipsis, font);
+ if (ellipsisWidth > contentWidth) {
+ ellipsis = "";
+ ellipsisWidth = 0;
+ }
+ contentWidth = containerWidth - ellipsisWidth;
+ preparedOpts.ellipsis = ellipsis;
+ preparedOpts.ellipsisWidth = ellipsisWidth;
+ preparedOpts.contentWidth = contentWidth;
+ preparedOpts.containerWidth = containerWidth;
+ return preparedOpts;
+}
+function truncateSingleLine(out2, textLine, options) {
+ var containerWidth = options.containerWidth;
+ var font = options.font;
+ var contentWidth = options.contentWidth;
+ if (!containerWidth) {
+ out2.textLine = "";
+ out2.isTruncated = false;
+ return;
+ }
+ var lineWidth = getWidth(textLine, font);
+ if (lineWidth <= containerWidth) {
+ out2.textLine = textLine;
+ out2.isTruncated = false;
+ return;
+ }
+ for (var j = 0; ; j++) {
+ if (lineWidth <= contentWidth || j >= options.maxIterations) {
+ textLine += options.ellipsis;
+ break;
+ }
+ var subLength = j === 0 ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth) : lineWidth > 0 ? Math.floor(textLine.length * contentWidth / lineWidth) : 0;
+ textLine = textLine.substr(0, subLength);
+ lineWidth = getWidth(textLine, font);
+ }
+ if (textLine === "") {
+ textLine = options.placeholder;
+ }
+ out2.textLine = textLine;
+ out2.isTruncated = true;
+}
+function estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {
+ var width = 0;
+ var i = 0;
+ for (var len2 = text.length; i < len2 && width < contentWidth; i++) {
+ var charCode = text.charCodeAt(i);
+ width += 0 <= charCode && charCode <= 127 ? ascCharWidth : cnCharWidth;
+ }
+ return i;
+}
+function parsePlainText(text, style) {
+ text != null && (text += "");
+ var overflow = style.overflow;
+ var padding = style.padding;
+ var font = style.font;
+ var truncate = overflow === "truncate";
+ var calculatedLineHeight = getLineHeight(font);
+ var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);
+ var bgColorDrawn = !!style.backgroundColor;
+ var truncateLineOverflow = style.lineOverflow === "truncate";
+ var isTruncated = false;
+ var width = style.width;
+ var lines;
+ if (width != null && (overflow === "break" || overflow === "breakAll")) {
+ lines = text ? wrapText(text, style.font, width, overflow === "breakAll", 0).lines : [];
+ } else {
+ lines = text ? text.split("\n") : [];
+ }
+ var contentHeight = lines.length * lineHeight;
+ var height = retrieve2(style.height, contentHeight);
+ if (contentHeight > height && truncateLineOverflow) {
+ var lineCount = Math.floor(height / lineHeight);
+ isTruncated = isTruncated || lines.length > lineCount;
+ lines = lines.slice(0, lineCount);
+ }
+ if (text && truncate && width != null) {
+ var options = prepareTruncateOptions(width, font, style.ellipsis, {
+ minChar: style.truncateMinChar,
+ placeholder: style.placeholder
+ });
+ var singleOut = {};
+ for (var i = 0; i < lines.length; i++) {
+ truncateSingleLine(singleOut, lines[i], options);
+ lines[i] = singleOut.textLine;
+ isTruncated = isTruncated || singleOut.isTruncated;
+ }
+ }
+ var outerHeight = height;
+ var contentWidth = 0;
+ for (var i = 0; i < lines.length; i++) {
+ contentWidth = Math.max(getWidth(lines[i], font), contentWidth);
+ }
+ if (width == null) {
+ width = contentWidth;
+ }
+ var outerWidth = contentWidth;
+ if (padding) {
+ outerHeight += padding[0] + padding[2];
+ outerWidth += padding[1] + padding[3];
+ width += padding[1] + padding[3];
+ }
+ if (bgColorDrawn) {
+ outerWidth = width;
+ }
+ return {
+ lines,
+ height,
+ outerWidth,
+ outerHeight,
+ lineHeight,
+ calculatedLineHeight,
+ contentWidth,
+ contentHeight,
+ width,
+ isTruncated
+ };
+}
+var RichTextToken = function() {
+ function RichTextToken2() {
+ }
+ return RichTextToken2;
+}();
+var RichTextLine = function() {
+ function RichTextLine2(tokens) {
+ this.tokens = [];
+ if (tokens) {
+ this.tokens = tokens;
+ }
+ }
+ return RichTextLine2;
+}();
+var RichTextContentBlock = function() {
+ function RichTextContentBlock2() {
+ this.width = 0;
+ this.height = 0;
+ this.contentWidth = 0;
+ this.contentHeight = 0;
+ this.outerWidth = 0;
+ this.outerHeight = 0;
+ this.lines = [];
+ this.isTruncated = false;
+ }
+ return RichTextContentBlock2;
+}();
+function parseRichText(text, style) {
+ var contentBlock = new RichTextContentBlock();
+ text != null && (text += "");
+ if (!text) {
+ return contentBlock;
+ }
+ var topWidth = style.width;
+ var topHeight = style.height;
+ var overflow = style.overflow;
+ var wrapInfo = (overflow === "break" || overflow === "breakAll") && topWidth != null ? { width: topWidth, accumWidth: 0, breakAll: overflow === "breakAll" } : null;
+ var lastIndex = STYLE_REG.lastIndex = 0;
+ var result;
+ while ((result = STYLE_REG.exec(text)) != null) {
+ var matchedIndex = result.index;
+ if (matchedIndex > lastIndex) {
+ pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);
+ }
+ pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);
+ lastIndex = STYLE_REG.lastIndex;
+ }
+ if (lastIndex < text.length) {
+ pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);
+ }
+ var pendingList = [];
+ var calculatedHeight = 0;
+ var calculatedWidth = 0;
+ var stlPadding = style.padding;
+ var truncate = overflow === "truncate";
+ var truncateLine = style.lineOverflow === "truncate";
+ var tmpTruncateOut = {};
+ function finishLine(line2, lineWidth2, lineHeight2) {
+ line2.width = lineWidth2;
+ line2.lineHeight = lineHeight2;
+ calculatedHeight += lineHeight2;
+ calculatedWidth = Math.max(calculatedWidth, lineWidth2);
+ }
+ outer:
+ for (var i = 0; i < contentBlock.lines.length; i++) {
+ var line = contentBlock.lines[i];
+ var lineHeight = 0;
+ var lineWidth = 0;
+ for (var j = 0; j < line.tokens.length; j++) {
+ var token = line.tokens[j];
+ var tokenStyle = token.styleName && style.rich[token.styleName] || {};
+ var textPadding = token.textPadding = tokenStyle.padding;
+ var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;
+ var font = token.font = tokenStyle.font || style.font;
+ token.contentHeight = getLineHeight(font);
+ var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);
+ token.innerHeight = tokenHeight;
+ textPadding && (tokenHeight += textPadding[0] + textPadding[2]);
+ token.height = tokenHeight;
+ token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);
+ token.align = tokenStyle && tokenStyle.align || style.align;
+ token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || "middle";
+ if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {
+ var originalLength = contentBlock.lines.length;
+ if (j > 0) {
+ line.tokens = line.tokens.slice(0, j);
+ finishLine(line, lineWidth, lineHeight);
+ contentBlock.lines = contentBlock.lines.slice(0, i + 1);
+ } else {
+ contentBlock.lines = contentBlock.lines.slice(0, i);
+ }
+ contentBlock.isTruncated = contentBlock.isTruncated || contentBlock.lines.length < originalLength;
+ break outer;
+ }
+ var styleTokenWidth = tokenStyle.width;
+ var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === "auto";
+ if (typeof styleTokenWidth === "string" && styleTokenWidth.charAt(styleTokenWidth.length - 1) === "%") {
+ token.percentWidth = styleTokenWidth;
+ pendingList.push(token);
+ token.contentWidth = getWidth(token.text, font);
+ } else {
+ if (tokenWidthNotSpecified) {
+ var textBackgroundColor = tokenStyle.backgroundColor;
+ var bgImg = textBackgroundColor && textBackgroundColor.image;
+ if (bgImg) {
+ bgImg = findExistImage(bgImg);
+ if (isImageReady(bgImg)) {
+ token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);
+ }
+ }
+ }
+ var remainTruncWidth = truncate && topWidth != null ? topWidth - lineWidth : null;
+ if (remainTruncWidth != null && remainTruncWidth < token.width) {
+ if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {
+ token.text = "";
+ token.width = token.contentWidth = 0;
+ } else {
+ truncateText2(tmpTruncateOut, token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });
+ token.text = tmpTruncateOut.text;
+ contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated;
+ token.width = token.contentWidth = getWidth(token.text, font);
+ }
+ } else {
+ token.contentWidth = getWidth(token.text, font);
+ }
+ }
+ token.width += paddingH;
+ lineWidth += token.width;
+ tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));
+ }
+ finishLine(line, lineWidth, lineHeight);
+ }
+ contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);
+ contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);
+ contentBlock.contentHeight = calculatedHeight;
+ contentBlock.contentWidth = calculatedWidth;
+ if (stlPadding) {
+ contentBlock.outerWidth += stlPadding[1] + stlPadding[3];
+ contentBlock.outerHeight += stlPadding[0] + stlPadding[2];
+ }
+ for (var i = 0; i < pendingList.length; i++) {
+ var token = pendingList[i];
+ var percentWidth = token.percentWidth;
+ token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;
+ }
+ return contentBlock;
+}
+function pushTokens(block, str, style, wrapInfo, styleName) {
+ var isEmptyStr = str === "";
+ var tokenStyle = styleName && style.rich[styleName] || {};
+ var lines = block.lines;
+ var font = tokenStyle.font || style.font;
+ var newLine = false;
+ var strLines;
+ var linesWidths;
+ if (wrapInfo) {
+ var tokenPadding = tokenStyle.padding;
+ var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;
+ if (tokenStyle.width != null && tokenStyle.width !== "auto") {
+ var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH;
+ if (lines.length > 0) {
+ if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {
+ strLines = str.split("\n");
+ newLine = true;
+ }
+ }
+ wrapInfo.accumWidth = outerWidth_1;
+ } else {
+ var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);
+ wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;
+ linesWidths = res.linesWidths;
+ strLines = res.lines;
+ }
+ } else {
+ strLines = str.split("\n");
+ }
+ for (var i = 0; i < strLines.length; i++) {
+ var text = strLines[i];
+ var token = new RichTextToken();
+ token.styleName = styleName;
+ token.text = text;
+ token.isLineHolder = !text && !isEmptyStr;
+ if (typeof tokenStyle.width === "number") {
+ token.width = tokenStyle.width;
+ } else {
+ token.width = linesWidths ? linesWidths[i] : getWidth(text, font);
+ }
+ if (!i && !newLine) {
+ var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;
+ var tokensLen = tokens.length;
+ tokensLen === 1 && tokens[0].isLineHolder ? tokens[0] = token : (text || !tokensLen || isEmptyStr) && tokens.push(token);
+ } else {
+ lines.push(new RichTextLine([token]));
+ }
+ }
+}
+function isAlphabeticLetter(ch) {
+ var code = ch.charCodeAt(0);
+ return code >= 32 && code <= 591 || code >= 880 && code <= 4351 || code >= 4608 && code <= 5119 || code >= 7680 && code <= 8303;
+}
+var breakCharMap = reduce(",&?/;] ".split(""), function(obj, ch) {
+ obj[ch] = true;
+ return obj;
+}, {});
+function isWordBreakChar(ch) {
+ if (isAlphabeticLetter(ch)) {
+ if (breakCharMap[ch]) {
+ return true;
+ }
+ return false;
+ }
+ return true;
+}
+function wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {
+ var lines = [];
+ var linesWidths = [];
+ var line = "";
+ var currentWord = "";
+ var currentWordWidth = 0;
+ var accumWidth = 0;
+ for (var i = 0; i < text.length; i++) {
+ var ch = text.charAt(i);
+ if (ch === "\n") {
+ if (currentWord) {
+ line += currentWord;
+ accumWidth += currentWordWidth;
+ }
+ lines.push(line);
+ linesWidths.push(accumWidth);
+ line = "";
+ currentWord = "";
+ currentWordWidth = 0;
+ accumWidth = 0;
+ continue;
+ }
+ var chWidth = getWidth(ch, font);
+ var inWord = isBreakAll ? false : !isWordBreakChar(ch);
+ if (!lines.length ? lastAccumWidth + accumWidth + chWidth > lineWidth : accumWidth + chWidth > lineWidth) {
+ if (!accumWidth) {
+ if (inWord) {
+ lines.push(currentWord);
+ linesWidths.push(currentWordWidth);
+ currentWord = ch;
+ currentWordWidth = chWidth;
+ } else {
+ lines.push(ch);
+ linesWidths.push(chWidth);
+ }
+ } else if (line || currentWord) {
+ if (inWord) {
+ if (!line) {
+ line = currentWord;
+ currentWord = "";
+ currentWordWidth = 0;
+ accumWidth = currentWordWidth;
+ }
+ lines.push(line);
+ linesWidths.push(accumWidth - currentWordWidth);
+ currentWord += ch;
+ currentWordWidth += chWidth;
+ line = "";
+ accumWidth = currentWordWidth;
+ } else {
+ if (currentWord) {
+ line += currentWord;
+ currentWord = "";
+ currentWordWidth = 0;
+ }
+ lines.push(line);
+ linesWidths.push(accumWidth);
+ line = ch;
+ accumWidth = chWidth;
+ }
+ }
+ continue;
+ }
+ accumWidth += chWidth;
+ if (inWord) {
+ currentWord += ch;
+ currentWordWidth += chWidth;
+ } else {
+ if (currentWord) {
+ line += currentWord;
+ currentWord = "";
+ currentWordWidth = 0;
+ }
+ line += ch;
+ }
+ }
+ if (!lines.length && !line) {
+ line = text;
+ currentWord = "";
+ currentWordWidth = 0;
+ }
+ if (currentWord) {
+ line += currentWord;
+ }
+ if (line) {
+ lines.push(line);
+ linesWidths.push(accumWidth);
+ }
+ if (lines.length === 1) {
+ accumWidth += lastAccumWidth;
+ }
+ return {
+ accumWidth,
+ lines,
+ linesWidths
+ };
+}
+
+// node_modules/zrender/lib/graphic/Displayable.js
+var STYLE_MAGIC_KEY = "__zr_style_" + Math.round(Math.random() * 10);
+var DEFAULT_COMMON_STYLE = {
+ shadowBlur: 0,
+ shadowOffsetX: 0,
+ shadowOffsetY: 0,
+ shadowColor: "#000",
+ opacity: 1,
+ blend: "source-over"
+};
+var DEFAULT_COMMON_ANIMATION_PROPS = {
+ style: {
+ shadowBlur: true,
+ shadowOffsetX: true,
+ shadowOffsetY: true,
+ shadowColor: true,
+ opacity: true
+ }
+};
+DEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;
+var PRIMARY_STATES_KEYS2 = ["z", "z2", "invisible"];
+var PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ["invisible"];
+var Displayable = function(_super) {
+ __extends(Displayable2, _super);
+ function Displayable2(props) {
+ return _super.call(this, props) || this;
+ }
+ Displayable2.prototype._init = function(props) {
+ var keysArr = keys(props);
+ for (var i = 0; i < keysArr.length; i++) {
+ var key = keysArr[i];
+ if (key === "style") {
+ this.useStyle(props[key]);
+ } else {
+ _super.prototype.attrKV.call(this, key, props[key]);
+ }
+ }
+ if (!this.style) {
+ this.useStyle({});
+ }
+ };
+ Displayable2.prototype.beforeBrush = function() {
+ };
+ Displayable2.prototype.afterBrush = function() {
+ };
+ Displayable2.prototype.innerBeforeBrush = function() {
+ };
+ Displayable2.prototype.innerAfterBrush = function() {
+ };
+ Displayable2.prototype.shouldBePainted = function(viewWidth, viewHeight, considerClipPath, considerAncestors) {
+ var m2 = this.transform;
+ if (this.ignore || this.invisible || this.style.opacity === 0 || this.culling && isDisplayableCulled(this, viewWidth, viewHeight) || m2 && !m2[0] && !m2[3]) {
+ return false;
+ }
+ if (considerClipPath && this.__clipPaths) {
+ for (var i = 0; i < this.__clipPaths.length; ++i) {
+ if (this.__clipPaths[i].isZeroArea()) {
+ return false;
+ }
+ }
+ }
+ if (considerAncestors && this.parent) {
+ var parent_1 = this.parent;
+ while (parent_1) {
+ if (parent_1.ignore) {
+ return false;
+ }
+ parent_1 = parent_1.parent;
+ }
+ }
+ return true;
+ };
+ Displayable2.prototype.contain = function(x, y) {
+ return this.rectContain(x, y);
+ };
+ Displayable2.prototype.traverse = function(cb, context) {
+ cb.call(context, this);
+ };
+ Displayable2.prototype.rectContain = function(x, y) {
+ var coord = this.transformCoordToLocal(x, y);
+ var rect = this.getBoundingRect();
+ return rect.contain(coord[0], coord[1]);
+ };
+ Displayable2.prototype.getPaintRect = function() {
+ var rect = this._paintRect;
+ if (!this._paintRect || this.__dirty) {
+ var transform2 = this.transform;
+ var elRect = this.getBoundingRect();
+ var style = this.style;
+ var shadowSize = style.shadowBlur || 0;
+ var shadowOffsetX = style.shadowOffsetX || 0;
+ var shadowOffsetY = style.shadowOffsetY || 0;
+ rect = this._paintRect || (this._paintRect = new BoundingRect_default(0, 0, 0, 0));
+ if (transform2) {
+ BoundingRect_default.applyTransform(rect, elRect, transform2);
+ } else {
+ rect.copy(elRect);
+ }
+ if (shadowSize || shadowOffsetX || shadowOffsetY) {
+ rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);
+ rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);
+ rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);
+ rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);
+ }
+ var tolerance = this.dirtyRectTolerance;
+ if (!rect.isZero()) {
+ rect.x = Math.floor(rect.x - tolerance);
+ rect.y = Math.floor(rect.y - tolerance);
+ rect.width = Math.ceil(rect.width + 1 + tolerance * 2);
+ rect.height = Math.ceil(rect.height + 1 + tolerance * 2);
+ }
+ }
+ return rect;
+ };
+ Displayable2.prototype.setPrevPaintRect = function(paintRect) {
+ if (paintRect) {
+ this._prevPaintRect = this._prevPaintRect || new BoundingRect_default(0, 0, 0, 0);
+ this._prevPaintRect.copy(paintRect);
+ } else {
+ this._prevPaintRect = null;
+ }
+ };
+ Displayable2.prototype.getPrevPaintRect = function() {
+ return this._prevPaintRect;
+ };
+ Displayable2.prototype.animateStyle = function(loop) {
+ return this.animate("style", loop);
+ };
+ Displayable2.prototype.updateDuringAnimation = function(targetKey) {
+ if (targetKey === "style") {
+ this.dirtyStyle();
+ } else {
+ this.markRedraw();
+ }
+ };
+ Displayable2.prototype.attrKV = function(key, value) {
+ if (key !== "style") {
+ _super.prototype.attrKV.call(this, key, value);
+ } else {
+ if (!this.style) {
+ this.useStyle(value);
+ } else {
+ this.setStyle(value);
+ }
+ }
+ };
+ Displayable2.prototype.setStyle = function(keyOrObj, value) {
+ if (typeof keyOrObj === "string") {
+ this.style[keyOrObj] = value;
+ } else {
+ extend(this.style, keyOrObj);
+ }
+ this.dirtyStyle();
+ return this;
+ };
+ Displayable2.prototype.dirtyStyle = function(notRedraw) {
+ if (!notRedraw) {
+ this.markRedraw();
+ }
+ this.__dirty |= STYLE_CHANGED_BIT;
+ if (this._rect) {
+ this._rect = null;
+ }
+ };
+ Displayable2.prototype.dirty = function() {
+ this.dirtyStyle();
+ };
+ Displayable2.prototype.styleChanged = function() {
+ return !!(this.__dirty & STYLE_CHANGED_BIT);
+ };
+ Displayable2.prototype.styleUpdated = function() {
+ this.__dirty &= ~STYLE_CHANGED_BIT;
+ };
+ Displayable2.prototype.createStyle = function(obj) {
+ return createObject(DEFAULT_COMMON_STYLE, obj);
+ };
+ Displayable2.prototype.useStyle = function(obj) {
+ if (!obj[STYLE_MAGIC_KEY]) {
+ obj = this.createStyle(obj);
+ }
+ if (this.__inHover) {
+ this.__hoverStyle = obj;
+ } else {
+ this.style = obj;
+ }
+ this.dirtyStyle();
+ };
+ Displayable2.prototype.isStyleObject = function(obj) {
+ return obj[STYLE_MAGIC_KEY];
+ };
+ Displayable2.prototype._innerSaveToNormal = function(toState) {
+ _super.prototype._innerSaveToNormal.call(this, toState);
+ var normalState = this._normalState;
+ if (toState.style && !normalState.style) {
+ normalState.style = this._mergeStyle(this.createStyle(), this.style);
+ }
+ this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS2);
+ };
+ Displayable2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) {
+ _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);
+ var needsRestoreToNormal = !(state && keepCurrentStates);
+ var targetStyle;
+ if (state && state.style) {
+ if (transition) {
+ if (keepCurrentStates) {
+ targetStyle = state.style;
+ } else {
+ targetStyle = this._mergeStyle(this.createStyle(), normalState.style);
+ this._mergeStyle(targetStyle, state.style);
+ }
+ } else {
+ targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);
+ this._mergeStyle(targetStyle, state.style);
+ }
+ } else if (needsRestoreToNormal) {
+ targetStyle = normalState.style;
+ }
+ if (targetStyle) {
+ if (transition) {
+ var sourceStyle = this.style;
+ this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);
+ if (needsRestoreToNormal) {
+ var changedKeys = keys(sourceStyle);
+ for (var i = 0; i < changedKeys.length; i++) {
+ var key = changedKeys[i];
+ if (key in targetStyle) {
+ targetStyle[key] = targetStyle[key];
+ this.style[key] = sourceStyle[key];
+ }
+ }
+ }
+ var targetKeys = keys(targetStyle);
+ for (var i = 0; i < targetKeys.length; i++) {
+ var key = targetKeys[i];
+ this.style[key] = this.style[key];
+ }
+ this._transitionState(stateName, {
+ style: targetStyle
+ }, animationCfg, this.getAnimationStyleProps());
+ } else {
+ this.useStyle(targetStyle);
+ }
+ }
+ var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS2;
+ for (var i = 0; i < statesKeys.length; i++) {
+ var key = statesKeys[i];
+ if (state && state[key] != null) {
+ this[key] = state[key];
+ } else if (needsRestoreToNormal) {
+ if (normalState[key] != null) {
+ this[key] = normalState[key];
+ }
+ }
+ }
+ };
+ Displayable2.prototype._mergeStates = function(states) {
+ var mergedState = _super.prototype._mergeStates.call(this, states);
+ var mergedStyle;
+ for (var i = 0; i < states.length; i++) {
+ var state = states[i];
+ if (state.style) {
+ mergedStyle = mergedStyle || {};
+ this._mergeStyle(mergedStyle, state.style);
+ }
+ }
+ if (mergedStyle) {
+ mergedState.style = mergedStyle;
+ }
+ return mergedState;
+ };
+ Displayable2.prototype._mergeStyle = function(targetStyle, sourceStyle) {
+ extend(targetStyle, sourceStyle);
+ return targetStyle;
+ };
+ Displayable2.prototype.getAnimationStyleProps = function() {
+ return DEFAULT_COMMON_ANIMATION_PROPS;
+ };
+ Displayable2.initDefaultProps = function() {
+ var dispProto = Displayable2.prototype;
+ dispProto.type = "displayable";
+ dispProto.invisible = false;
+ dispProto.z = 0;
+ dispProto.z2 = 0;
+ dispProto.zlevel = 0;
+ dispProto.culling = false;
+ dispProto.cursor = "pointer";
+ dispProto.rectHover = false;
+ dispProto.incremental = false;
+ dispProto._rect = null;
+ dispProto.dirtyRectTolerance = 0;
+ dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT;
+ }();
+ return Displayable2;
+}(Element_default);
+var tmpRect2 = new BoundingRect_default(0, 0, 0, 0);
+var viewRect = new BoundingRect_default(0, 0, 0, 0);
+function isDisplayableCulled(el, width, height) {
+ tmpRect2.copy(el.getBoundingRect());
+ if (el.transform) {
+ tmpRect2.applyTransform(el.transform);
+ }
+ viewRect.width = width;
+ viewRect.height = height;
+ return !tmpRect2.intersect(viewRect);
+}
+var Displayable_default = Displayable;
+
+// node_modules/zrender/lib/core/bbox.js
+var mathMin2 = Math.min;
+var mathMax2 = Math.max;
+var mathSin = Math.sin;
+var mathCos = Math.cos;
+var PI2 = Math.PI * 2;
+var start = create();
+var end = create();
+var extremity = create();
+function fromPoints(points4, min3, max3) {
+ if (points4.length === 0) {
+ return;
+ }
+ var p = points4[0];
+ var left = p[0];
+ var right = p[0];
+ var top = p[1];
+ var bottom = p[1];
+ for (var i = 1; i < points4.length; i++) {
+ p = points4[i];
+ left = mathMin2(left, p[0]);
+ right = mathMax2(right, p[0]);
+ top = mathMin2(top, p[1]);
+ bottom = mathMax2(bottom, p[1]);
+ }
+ min3[0] = left;
+ min3[1] = top;
+ max3[0] = right;
+ max3[1] = bottom;
+}
+function fromLine(x0, y0, x1, y1, min3, max3) {
+ min3[0] = mathMin2(x0, x1);
+ min3[1] = mathMin2(y0, y1);
+ max3[0] = mathMax2(x0, x1);
+ max3[1] = mathMax2(y0, y1);
+}
+var xDim = [];
+var yDim = [];
+function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min3, max3) {
+ var cubicExtrema2 = cubicExtrema;
+ var cubicAt2 = cubicAt;
+ var n = cubicExtrema2(x0, x1, x2, x3, xDim);
+ min3[0] = Infinity;
+ min3[1] = Infinity;
+ max3[0] = -Infinity;
+ max3[1] = -Infinity;
+ for (var i = 0; i < n; i++) {
+ var x = cubicAt2(x0, x1, x2, x3, xDim[i]);
+ min3[0] = mathMin2(x, min3[0]);
+ max3[0] = mathMax2(x, max3[0]);
+ }
+ n = cubicExtrema2(y0, y1, y2, y3, yDim);
+ for (var i = 0; i < n; i++) {
+ var y = cubicAt2(y0, y1, y2, y3, yDim[i]);
+ min3[1] = mathMin2(y, min3[1]);
+ max3[1] = mathMax2(y, max3[1]);
+ }
+ min3[0] = mathMin2(x0, min3[0]);
+ max3[0] = mathMax2(x0, max3[0]);
+ min3[0] = mathMin2(x3, min3[0]);
+ max3[0] = mathMax2(x3, max3[0]);
+ min3[1] = mathMin2(y0, min3[1]);
+ max3[1] = mathMax2(y0, max3[1]);
+ min3[1] = mathMin2(y3, min3[1]);
+ max3[1] = mathMax2(y3, max3[1]);
+}
+function fromQuadratic(x0, y0, x1, y1, x2, y2, min3, max3) {
+ var quadraticExtremum2 = quadraticExtremum;
+ var quadraticAt3 = quadraticAt;
+ var tx = mathMax2(mathMin2(quadraticExtremum2(x0, x1, x2), 1), 0);
+ var ty = mathMax2(mathMin2(quadraticExtremum2(y0, y1, y2), 1), 0);
+ var x = quadraticAt3(x0, x1, x2, tx);
+ var y = quadraticAt3(y0, y1, y2, ty);
+ min3[0] = mathMin2(x0, x2, x);
+ min3[1] = mathMin2(y0, y2, y);
+ max3[0] = mathMax2(x0, x2, x);
+ max3[1] = mathMax2(y0, y2, y);
+}
+function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min3, max3) {
+ var vec2Min = min;
+ var vec2Max = max;
+ var diff = Math.abs(startAngle - endAngle);
+ if (diff % PI2 < 1e-4 && diff > 1e-4) {
+ min3[0] = x - rx;
+ min3[1] = y - ry;
+ max3[0] = x + rx;
+ max3[1] = y + ry;
+ return;
+ }
+ start[0] = mathCos(startAngle) * rx + x;
+ start[1] = mathSin(startAngle) * ry + y;
+ end[0] = mathCos(endAngle) * rx + x;
+ end[1] = mathSin(endAngle) * ry + y;
+ vec2Min(min3, start, end);
+ vec2Max(max3, start, end);
+ startAngle = startAngle % PI2;
+ if (startAngle < 0) {
+ startAngle = startAngle + PI2;
+ }
+ endAngle = endAngle % PI2;
+ if (endAngle < 0) {
+ endAngle = endAngle + PI2;
+ }
+ if (startAngle > endAngle && !anticlockwise) {
+ endAngle += PI2;
+ } else if (startAngle < endAngle && anticlockwise) {
+ startAngle += PI2;
+ }
+ if (anticlockwise) {
+ var tmp = endAngle;
+ endAngle = startAngle;
+ startAngle = tmp;
+ }
+ for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {
+ if (angle > startAngle) {
+ extremity[0] = mathCos(angle) * rx + x;
+ extremity[1] = mathSin(angle) * ry + y;
+ vec2Min(min3, extremity, min3);
+ vec2Max(max3, extremity, max3);
+ }
+ }
+}
+
+// node_modules/zrender/lib/core/PathProxy.js
+var CMD = {
+ M: 1,
+ L: 2,
+ C: 3,
+ Q: 4,
+ A: 5,
+ Z: 6,
+ R: 7
+};
+var tmpOutX = [];
+var tmpOutY = [];
+var min2 = [];
+var max2 = [];
+var min22 = [];
+var max22 = [];
+var mathMin3 = Math.min;
+var mathMax3 = Math.max;
+var mathCos2 = Math.cos;
+var mathSin2 = Math.sin;
+var mathAbs = Math.abs;
+var PI = Math.PI;
+var PI22 = PI * 2;
+var hasTypedArray = typeof Float32Array !== "undefined";
+var tmpAngles = [];
+function modPI2(radian) {
+ var n = Math.round(radian / PI * 1e8) / 1e8;
+ return n % 2 * PI;
+}
+function normalizeArcAngles(angles, anticlockwise) {
+ var newStartAngle = modPI2(angles[0]);
+ if (newStartAngle < 0) {
+ newStartAngle += PI22;
+ }
+ var delta = newStartAngle - angles[0];
+ var newEndAngle = angles[1];
+ newEndAngle += delta;
+ if (!anticlockwise && newEndAngle - newStartAngle >= PI22) {
+ newEndAngle = newStartAngle + PI22;
+ } else if (anticlockwise && newStartAngle - newEndAngle >= PI22) {
+ newEndAngle = newStartAngle - PI22;
+ } else if (!anticlockwise && newStartAngle > newEndAngle) {
+ newEndAngle = newStartAngle + (PI22 - modPI2(newStartAngle - newEndAngle));
+ } else if (anticlockwise && newStartAngle < newEndAngle) {
+ newEndAngle = newStartAngle - (PI22 - modPI2(newEndAngle - newStartAngle));
+ }
+ angles[0] = newStartAngle;
+ angles[1] = newEndAngle;
+}
+var PathProxy = function() {
+ function PathProxy2(notSaveData) {
+ this.dpr = 1;
+ this._xi = 0;
+ this._yi = 0;
+ this._x0 = 0;
+ this._y0 = 0;
+ this._len = 0;
+ if (notSaveData) {
+ this._saveData = false;
+ }
+ if (this._saveData) {
+ this.data = [];
+ }
+ }
+ PathProxy2.prototype.increaseVersion = function() {
+ this._version++;
+ };
+ PathProxy2.prototype.getVersion = function() {
+ return this._version;
+ };
+ PathProxy2.prototype.setScale = function(sx, sy, segmentIgnoreThreshold) {
+ segmentIgnoreThreshold = segmentIgnoreThreshold || 0;
+ if (segmentIgnoreThreshold > 0) {
+ this._ux = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sx) || 0;
+ this._uy = mathAbs(segmentIgnoreThreshold / devicePixelRatio / sy) || 0;
+ }
+ };
+ PathProxy2.prototype.setDPR = function(dpr2) {
+ this.dpr = dpr2;
+ };
+ PathProxy2.prototype.setContext = function(ctx) {
+ this._ctx = ctx;
+ };
+ PathProxy2.prototype.getContext = function() {
+ return this._ctx;
+ };
+ PathProxy2.prototype.beginPath = function() {
+ this._ctx && this._ctx.beginPath();
+ this.reset();
+ return this;
+ };
+ PathProxy2.prototype.reset = function() {
+ if (this._saveData) {
+ this._len = 0;
+ }
+ if (this._pathSegLen) {
+ this._pathSegLen = null;
+ this._pathLen = 0;
+ }
+ this._version++;
+ };
+ PathProxy2.prototype.moveTo = function(x, y) {
+ this._drawPendingPt();
+ this.addData(CMD.M, x, y);
+ this._ctx && this._ctx.moveTo(x, y);
+ this._x0 = x;
+ this._y0 = y;
+ this._xi = x;
+ this._yi = y;
+ return this;
+ };
+ PathProxy2.prototype.lineTo = function(x, y) {
+ var dx = mathAbs(x - this._xi);
+ var dy = mathAbs(y - this._yi);
+ var exceedUnit = dx > this._ux || dy > this._uy;
+ this.addData(CMD.L, x, y);
+ if (this._ctx && exceedUnit) {
+ this._ctx.lineTo(x, y);
+ }
+ if (exceedUnit) {
+ this._xi = x;
+ this._yi = y;
+ this._pendingPtDist = 0;
+ } else {
+ var d2 = dx * dx + dy * dy;
+ if (d2 > this._pendingPtDist) {
+ this._pendingPtX = x;
+ this._pendingPtY = y;
+ this._pendingPtDist = d2;
+ }
+ }
+ return this;
+ };
+ PathProxy2.prototype.bezierCurveTo = function(x1, y1, x2, y2, x3, y3) {
+ this._drawPendingPt();
+ this.addData(CMD.C, x1, y1, x2, y2, x3, y3);
+ if (this._ctx) {
+ this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
+ }
+ this._xi = x3;
+ this._yi = y3;
+ return this;
+ };
+ PathProxy2.prototype.quadraticCurveTo = function(x1, y1, x2, y2) {
+ this._drawPendingPt();
+ this.addData(CMD.Q, x1, y1, x2, y2);
+ if (this._ctx) {
+ this._ctx.quadraticCurveTo(x1, y1, x2, y2);
+ }
+ this._xi = x2;
+ this._yi = y2;
+ return this;
+ };
+ PathProxy2.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) {
+ this._drawPendingPt();
+ tmpAngles[0] = startAngle;
+ tmpAngles[1] = endAngle;
+ normalizeArcAngles(tmpAngles, anticlockwise);
+ startAngle = tmpAngles[0];
+ endAngle = tmpAngles[1];
+ var delta = endAngle - startAngle;
+ this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);
+ this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);
+ this._xi = mathCos2(endAngle) * r + cx;
+ this._yi = mathSin2(endAngle) * r + cy;
+ return this;
+ };
+ PathProxy2.prototype.arcTo = function(x1, y1, x2, y2, radius) {
+ this._drawPendingPt();
+ if (this._ctx) {
+ this._ctx.arcTo(x1, y1, x2, y2, radius);
+ }
+ return this;
+ };
+ PathProxy2.prototype.rect = function(x, y, w, h) {
+ this._drawPendingPt();
+ this._ctx && this._ctx.rect(x, y, w, h);
+ this.addData(CMD.R, x, y, w, h);
+ return this;
+ };
+ PathProxy2.prototype.closePath = function() {
+ this._drawPendingPt();
+ this.addData(CMD.Z);
+ var ctx = this._ctx;
+ var x0 = this._x0;
+ var y0 = this._y0;
+ if (ctx) {
+ ctx.closePath();
+ }
+ this._xi = x0;
+ this._yi = y0;
+ return this;
+ };
+ PathProxy2.prototype.fill = function(ctx) {
+ ctx && ctx.fill();
+ this.toStatic();
+ };
+ PathProxy2.prototype.stroke = function(ctx) {
+ ctx && ctx.stroke();
+ this.toStatic();
+ };
+ PathProxy2.prototype.len = function() {
+ return this._len;
+ };
+ PathProxy2.prototype.setData = function(data) {
+ var len2 = data.length;
+ if (!(this.data && this.data.length === len2) && hasTypedArray) {
+ this.data = new Float32Array(len2);
+ }
+ for (var i = 0; i < len2; i++) {
+ this.data[i] = data[i];
+ }
+ this._len = len2;
+ };
+ PathProxy2.prototype.appendPath = function(path) {
+ if (!(path instanceof Array)) {
+ path = [path];
+ }
+ var len2 = path.length;
+ var appendSize = 0;
+ var offset = this._len;
+ for (var i = 0; i < len2; i++) {
+ appendSize += path[i].len();
+ }
+ if (hasTypedArray && this.data instanceof Float32Array) {
+ this.data = new Float32Array(offset + appendSize);
+ }
+ for (var i = 0; i < len2; i++) {
+ var appendPathData = path[i].data;
+ for (var k = 0; k < appendPathData.length; k++) {
+ this.data[offset++] = appendPathData[k];
+ }
+ }
+ this._len = offset;
+ };
+ PathProxy2.prototype.addData = function(cmd, a, b, c, d, e2, f, g, h) {
+ if (!this._saveData) {
+ return;
+ }
+ var data = this.data;
+ if (this._len + arguments.length > data.length) {
+ this._expandData();
+ data = this.data;
+ }
+ for (var i = 0; i < arguments.length; i++) {
+ data[this._len++] = arguments[i];
+ }
+ };
+ PathProxy2.prototype._drawPendingPt = function() {
+ if (this._pendingPtDist > 0) {
+ this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);
+ this._pendingPtDist = 0;
+ }
+ };
+ PathProxy2.prototype._expandData = function() {
+ if (!(this.data instanceof Array)) {
+ var newData = [];
+ for (var i = 0; i < this._len; i++) {
+ newData[i] = this.data[i];
+ }
+ this.data = newData;
+ }
+ };
+ PathProxy2.prototype.toStatic = function() {
+ if (!this._saveData) {
+ return;
+ }
+ this._drawPendingPt();
+ var data = this.data;
+ if (data instanceof Array) {
+ data.length = this._len;
+ if (hasTypedArray && this._len > 11) {
+ this.data = new Float32Array(data);
+ }
+ }
+ };
+ PathProxy2.prototype.getBoundingRect = function() {
+ min2[0] = min2[1] = min22[0] = min22[1] = Number.MAX_VALUE;
+ max2[0] = max2[1] = max22[0] = max22[1] = -Number.MAX_VALUE;
+ var data = this.data;
+ var xi = 0;
+ var yi = 0;
+ var x0 = 0;
+ var y0 = 0;
+ var i;
+ for (i = 0; i < this._len; ) {
+ var cmd = data[i++];
+ var isFirst = i === 1;
+ if (isFirst) {
+ xi = data[i];
+ yi = data[i + 1];
+ x0 = xi;
+ y0 = yi;
+ }
+ switch (cmd) {
+ case CMD.M:
+ xi = x0 = data[i++];
+ yi = y0 = data[i++];
+ min22[0] = x0;
+ min22[1] = y0;
+ max22[0] = x0;
+ max22[1] = y0;
+ break;
+ case CMD.L:
+ fromLine(xi, yi, data[i], data[i + 1], min22, max22);
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD.C:
+ fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min22, max22);
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD.Q:
+ fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min22, max22);
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD.A:
+ var cx = data[i++];
+ var cy = data[i++];
+ var rx = data[i++];
+ var ry = data[i++];
+ var startAngle = data[i++];
+ var endAngle = data[i++] + startAngle;
+ i += 1;
+ var anticlockwise = !data[i++];
+ if (isFirst) {
+ x0 = mathCos2(startAngle) * rx + cx;
+ y0 = mathSin2(startAngle) * ry + cy;
+ }
+ fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min22, max22);
+ xi = mathCos2(endAngle) * rx + cx;
+ yi = mathSin2(endAngle) * ry + cy;
+ break;
+ case CMD.R:
+ x0 = xi = data[i++];
+ y0 = yi = data[i++];
+ var width = data[i++];
+ var height = data[i++];
+ fromLine(x0, y0, x0 + width, y0 + height, min22, max22);
+ break;
+ case CMD.Z:
+ xi = x0;
+ yi = y0;
+ break;
+ }
+ min(min2, min2, min22);
+ max(max2, max2, max22);
+ }
+ if (i === 0) {
+ min2[0] = min2[1] = max2[0] = max2[1] = 0;
+ }
+ return new BoundingRect_default(min2[0], min2[1], max2[0] - min2[0], max2[1] - min2[1]);
+ };
+ PathProxy2.prototype._calculateLength = function() {
+ var data = this.data;
+ var len2 = this._len;
+ var ux = this._ux;
+ var uy = this._uy;
+ var xi = 0;
+ var yi = 0;
+ var x0 = 0;
+ var y0 = 0;
+ if (!this._pathSegLen) {
+ this._pathSegLen = [];
+ }
+ var pathSegLen = this._pathSegLen;
+ var pathTotalLen = 0;
+ var segCount = 0;
+ for (var i = 0; i < len2; ) {
+ var cmd = data[i++];
+ var isFirst = i === 1;
+ if (isFirst) {
+ xi = data[i];
+ yi = data[i + 1];
+ x0 = xi;
+ y0 = yi;
+ }
+ var l = -1;
+ switch (cmd) {
+ case CMD.M:
+ xi = x0 = data[i++];
+ yi = y0 = data[i++];
+ break;
+ case CMD.L: {
+ var x2 = data[i++];
+ var y2 = data[i++];
+ var dx = x2 - xi;
+ var dy = y2 - yi;
+ if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len2 - 1) {
+ l = Math.sqrt(dx * dx + dy * dy);
+ xi = x2;
+ yi = y2;
+ }
+ break;
+ }
+ case CMD.C: {
+ var x1 = data[i++];
+ var y1 = data[i++];
+ var x2 = data[i++];
+ var y2 = data[i++];
+ var x3 = data[i++];
+ var y3 = data[i++];
+ l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);
+ xi = x3;
+ yi = y3;
+ break;
+ }
+ case CMD.Q: {
+ var x1 = data[i++];
+ var y1 = data[i++];
+ var x2 = data[i++];
+ var y2 = data[i++];
+ l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);
+ xi = x2;
+ yi = y2;
+ break;
+ }
+ case CMD.A:
+ var cx = data[i++];
+ var cy = data[i++];
+ var rx = data[i++];
+ var ry = data[i++];
+ var startAngle = data[i++];
+ var delta = data[i++];
+ var endAngle = delta + startAngle;
+ i += 1;
+ if (isFirst) {
+ x0 = mathCos2(startAngle) * rx + cx;
+ y0 = mathSin2(startAngle) * ry + cy;
+ }
+ l = mathMax3(rx, ry) * mathMin3(PI22, Math.abs(delta));
+ xi = mathCos2(endAngle) * rx + cx;
+ yi = mathSin2(endAngle) * ry + cy;
+ break;
+ case CMD.R: {
+ x0 = xi = data[i++];
+ y0 = yi = data[i++];
+ var width = data[i++];
+ var height = data[i++];
+ l = width * 2 + height * 2;
+ break;
+ }
+ case CMD.Z: {
+ var dx = x0 - xi;
+ var dy = y0 - yi;
+ l = Math.sqrt(dx * dx + dy * dy);
+ xi = x0;
+ yi = y0;
+ break;
+ }
+ }
+ if (l >= 0) {
+ pathSegLen[segCount++] = l;
+ pathTotalLen += l;
+ }
+ }
+ this._pathLen = pathTotalLen;
+ return pathTotalLen;
+ };
+ PathProxy2.prototype.rebuildPath = function(ctx, percent) {
+ var d = this.data;
+ var ux = this._ux;
+ var uy = this._uy;
+ var len2 = this._len;
+ var x0;
+ var y0;
+ var xi;
+ var yi;
+ var x;
+ var y;
+ var drawPart = percent < 1;
+ var pathSegLen;
+ var pathTotalLen;
+ var accumLength = 0;
+ var segCount = 0;
+ var displayedLength;
+ var pendingPtDist = 0;
+ var pendingPtX;
+ var pendingPtY;
+ if (drawPart) {
+ if (!this._pathSegLen) {
+ this._calculateLength();
+ }
+ pathSegLen = this._pathSegLen;
+ pathTotalLen = this._pathLen;
+ displayedLength = percent * pathTotalLen;
+ if (!displayedLength) {
+ return;
+ }
+ }
+ lo:
+ for (var i = 0; i < len2; ) {
+ var cmd = d[i++];
+ var isFirst = i === 1;
+ if (isFirst) {
+ xi = d[i];
+ yi = d[i + 1];
+ x0 = xi;
+ y0 = yi;
+ }
+ if (cmd !== CMD.L && pendingPtDist > 0) {
+ ctx.lineTo(pendingPtX, pendingPtY);
+ pendingPtDist = 0;
+ }
+ switch (cmd) {
+ case CMD.M:
+ x0 = xi = d[i++];
+ y0 = yi = d[i++];
+ ctx.moveTo(xi, yi);
+ break;
+ case CMD.L: {
+ x = d[i++];
+ y = d[i++];
+ var dx = mathAbs(x - xi);
+ var dy = mathAbs(y - yi);
+ if (dx > ux || dy > uy) {
+ if (drawPart) {
+ var l = pathSegLen[segCount++];
+ if (accumLength + l > displayedLength) {
+ var t = (displayedLength - accumLength) / l;
+ ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);
+ break lo;
+ }
+ accumLength += l;
+ }
+ ctx.lineTo(x, y);
+ xi = x;
+ yi = y;
+ pendingPtDist = 0;
+ } else {
+ var d2 = dx * dx + dy * dy;
+ if (d2 > pendingPtDist) {
+ pendingPtX = x;
+ pendingPtY = y;
+ pendingPtDist = d2;
+ }
+ }
+ break;
+ }
+ case CMD.C: {
+ var x1 = d[i++];
+ var y1 = d[i++];
+ var x2 = d[i++];
+ var y2 = d[i++];
+ var x3 = d[i++];
+ var y3 = d[i++];
+ if (drawPart) {
+ var l = pathSegLen[segCount++];
+ if (accumLength + l > displayedLength) {
+ var t = (displayedLength - accumLength) / l;
+ cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);
+ cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);
+ ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);
+ break lo;
+ }
+ accumLength += l;
+ }
+ ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);
+ xi = x3;
+ yi = y3;
+ break;
+ }
+ case CMD.Q: {
+ var x1 = d[i++];
+ var y1 = d[i++];
+ var x2 = d[i++];
+ var y2 = d[i++];
+ if (drawPart) {
+ var l = pathSegLen[segCount++];
+ if (accumLength + l > displayedLength) {
+ var t = (displayedLength - accumLength) / l;
+ quadraticSubdivide(xi, x1, x2, t, tmpOutX);
+ quadraticSubdivide(yi, y1, y2, t, tmpOutY);
+ ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);
+ break lo;
+ }
+ accumLength += l;
+ }
+ ctx.quadraticCurveTo(x1, y1, x2, y2);
+ xi = x2;
+ yi = y2;
+ break;
+ }
+ case CMD.A:
+ var cx = d[i++];
+ var cy = d[i++];
+ var rx = d[i++];
+ var ry = d[i++];
+ var startAngle = d[i++];
+ var delta = d[i++];
+ var psi = d[i++];
+ var anticlockwise = !d[i++];
+ var r = rx > ry ? rx : ry;
+ var isEllipse = mathAbs(rx - ry) > 1e-3;
+ var endAngle = startAngle + delta;
+ var breakBuild = false;
+ if (drawPart) {
+ var l = pathSegLen[segCount++];
+ if (accumLength + l > displayedLength) {
+ endAngle = startAngle + delta * (displayedLength - accumLength) / l;
+ breakBuild = true;
+ }
+ accumLength += l;
+ }
+ if (isEllipse && ctx.ellipse) {
+ ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);
+ } else {
+ ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);
+ }
+ if (breakBuild) {
+ break lo;
+ }
+ if (isFirst) {
+ x0 = mathCos2(startAngle) * rx + cx;
+ y0 = mathSin2(startAngle) * ry + cy;
+ }
+ xi = mathCos2(endAngle) * rx + cx;
+ yi = mathSin2(endAngle) * ry + cy;
+ break;
+ case CMD.R:
+ x0 = xi = d[i];
+ y0 = yi = d[i + 1];
+ x = d[i++];
+ y = d[i++];
+ var width = d[i++];
+ var height = d[i++];
+ if (drawPart) {
+ var l = pathSegLen[segCount++];
+ if (accumLength + l > displayedLength) {
+ var d_1 = displayedLength - accumLength;
+ ctx.moveTo(x, y);
+ ctx.lineTo(x + mathMin3(d_1, width), y);
+ d_1 -= width;
+ if (d_1 > 0) {
+ ctx.lineTo(x + width, y + mathMin3(d_1, height));
+ }
+ d_1 -= height;
+ if (d_1 > 0) {
+ ctx.lineTo(x + mathMax3(width - d_1, 0), y + height);
+ }
+ d_1 -= width;
+ if (d_1 > 0) {
+ ctx.lineTo(x, y + mathMax3(height - d_1, 0));
+ }
+ break lo;
+ }
+ accumLength += l;
+ }
+ ctx.rect(x, y, width, height);
+ break;
+ case CMD.Z:
+ if (drawPart) {
+ var l = pathSegLen[segCount++];
+ if (accumLength + l > displayedLength) {
+ var t = (displayedLength - accumLength) / l;
+ ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);
+ break lo;
+ }
+ accumLength += l;
+ }
+ ctx.closePath();
+ xi = x0;
+ yi = y0;
+ }
+ }
+ };
+ PathProxy2.prototype.clone = function() {
+ var newProxy = new PathProxy2();
+ var data = this.data;
+ newProxy.data = data.slice ? data.slice() : Array.prototype.slice.call(data);
+ newProxy._len = this._len;
+ return newProxy;
+ };
+ PathProxy2.CMD = CMD;
+ PathProxy2.initDefaultProps = function() {
+ var proto2 = PathProxy2.prototype;
+ proto2._saveData = true;
+ proto2._ux = 0;
+ proto2._uy = 0;
+ proto2._pendingPtDist = 0;
+ proto2._version = 0;
+ }();
+ return PathProxy2;
+}();
+var PathProxy_default = PathProxy;
+
+// node_modules/zrender/lib/contain/line.js
+function containStroke(x0, y0, x1, y1, lineWidth, x, y) {
+ if (lineWidth === 0) {
+ return false;
+ }
+ var _l = lineWidth;
+ var _a2 = 0;
+ var _b2 = x0;
+ if (y > y0 + _l && y > y1 + _l || y < y0 - _l && y < y1 - _l || x > x0 + _l && x > x1 + _l || x < x0 - _l && x < x1 - _l) {
+ return false;
+ }
+ if (x0 !== x1) {
+ _a2 = (y0 - y1) / (x0 - x1);
+ _b2 = (x0 * y1 - x1 * y0) / (x0 - x1);
+ } else {
+ return Math.abs(x - x0) <= _l / 2;
+ }
+ var tmp = _a2 * x - y + _b2;
+ var _s = tmp * tmp / (_a2 * _a2 + 1);
+ return _s <= _l / 2 * _l / 2;
+}
+
+// node_modules/zrender/lib/contain/cubic.js
+function containStroke2(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {
+ if (lineWidth === 0) {
+ return false;
+ }
+ var _l = lineWidth;
+ if (y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l) {
+ return false;
+ }
+ var d = cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);
+ return d <= _l / 2;
+}
+
+// node_modules/zrender/lib/contain/quadratic.js
+function containStroke3(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {
+ if (lineWidth === 0) {
+ return false;
+ }
+ var _l = lineWidth;
+ if (y > y0 + _l && y > y1 + _l && y > y2 + _l || y < y0 - _l && y < y1 - _l && y < y2 - _l || x > x0 + _l && x > x1 + _l && x > x2 + _l || x < x0 - _l && x < x1 - _l && x < x2 - _l) {
+ return false;
+ }
+ var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);
+ return d <= _l / 2;
+}
+
+// node_modules/zrender/lib/contain/util.js
+var PI23 = Math.PI * 2;
+function normalizeRadian(angle) {
+ angle %= PI23;
+ if (angle < 0) {
+ angle += PI23;
+ }
+ return angle;
+}
+
+// node_modules/zrender/lib/contain/arc.js
+var PI24 = Math.PI * 2;
+function containStroke4(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {
+ if (lineWidth === 0) {
+ return false;
+ }
+ var _l = lineWidth;
+ x -= cx;
+ y -= cy;
+ var d = Math.sqrt(x * x + y * y);
+ if (d - _l > r || d + _l < r) {
+ return false;
+ }
+ if (Math.abs(startAngle - endAngle) % PI24 < 1e-4) {
+ return true;
+ }
+ if (anticlockwise) {
+ var tmp = startAngle;
+ startAngle = normalizeRadian(endAngle);
+ endAngle = normalizeRadian(tmp);
+ } else {
+ startAngle = normalizeRadian(startAngle);
+ endAngle = normalizeRadian(endAngle);
+ }
+ if (startAngle > endAngle) {
+ endAngle += PI24;
+ }
+ var angle = Math.atan2(y, x);
+ if (angle < 0) {
+ angle += PI24;
+ }
+ return angle >= startAngle && angle <= endAngle || angle + PI24 >= startAngle && angle + PI24 <= endAngle;
+}
+
+// node_modules/zrender/lib/contain/windingLine.js
+function windingLine(x0, y0, x1, y1, x, y) {
+ if (y > y0 && y > y1 || y < y0 && y < y1) {
+ return 0;
+ }
+ if (y1 === y0) {
+ return 0;
+ }
+ var t = (y - y0) / (y1 - y0);
+ var dir3 = y1 < y0 ? 1 : -1;
+ if (t === 1 || t === 0) {
+ dir3 = y1 < y0 ? 0.5 : -0.5;
+ }
+ var x_ = t * (x1 - x0) + x0;
+ return x_ === x ? Infinity : x_ > x ? dir3 : 0;
+}
+
+// node_modules/zrender/lib/contain/path.js
+var CMD2 = PathProxy_default.CMD;
+var PI25 = Math.PI * 2;
+var EPSILON4 = 1e-4;
+function isAroundEqual(a, b) {
+ return Math.abs(a - b) < EPSILON4;
+}
+var roots = [-1, -1, -1];
+var extrema = [-1, -1];
+function swapExtrema() {
+ var tmp = extrema[0];
+ extrema[0] = extrema[1];
+ extrema[1] = tmp;
+}
+function windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {
+ if (y > y0 && y > y1 && y > y2 && y > y3 || y < y0 && y < y1 && y < y2 && y < y3) {
+ return 0;
+ }
+ var nRoots = cubicRootAt(y0, y1, y2, y3, y, roots);
+ if (nRoots === 0) {
+ return 0;
+ } else {
+ var w = 0;
+ var nExtrema = -1;
+ var y0_ = void 0;
+ var y1_ = void 0;
+ for (var i = 0; i < nRoots; i++) {
+ var t = roots[i];
+ var unit = t === 0 || t === 1 ? 0.5 : 1;
+ var x_ = cubicAt(x0, x1, x2, x3, t);
+ if (x_ < x) {
+ continue;
+ }
+ if (nExtrema < 0) {
+ nExtrema = cubicExtrema(y0, y1, y2, y3, extrema);
+ if (extrema[1] < extrema[0] && nExtrema > 1) {
+ swapExtrema();
+ }
+ y0_ = cubicAt(y0, y1, y2, y3, extrema[0]);
+ if (nExtrema > 1) {
+ y1_ = cubicAt(y0, y1, y2, y3, extrema[1]);
+ }
+ }
+ if (nExtrema === 2) {
+ if (t < extrema[0]) {
+ w += y0_ < y0 ? unit : -unit;
+ } else if (t < extrema[1]) {
+ w += y1_ < y0_ ? unit : -unit;
+ } else {
+ w += y3 < y1_ ? unit : -unit;
+ }
+ } else {
+ if (t < extrema[0]) {
+ w += y0_ < y0 ? unit : -unit;
+ } else {
+ w += y3 < y0_ ? unit : -unit;
+ }
+ }
+ }
+ return w;
+ }
+}
+function windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {
+ if (y > y0 && y > y1 && y > y2 || y < y0 && y < y1 && y < y2) {
+ return 0;
+ }
+ var nRoots = quadraticRootAt(y0, y1, y2, y, roots);
+ if (nRoots === 0) {
+ return 0;
+ } else {
+ var t = quadraticExtremum(y0, y1, y2);
+ if (t >= 0 && t <= 1) {
+ var w = 0;
+ var y_ = quadraticAt(y0, y1, y2, t);
+ for (var i = 0; i < nRoots; i++) {
+ var unit = roots[i] === 0 || roots[i] === 1 ? 0.5 : 1;
+ var x_ = quadraticAt(x0, x1, x2, roots[i]);
+ if (x_ < x) {
+ continue;
+ }
+ if (roots[i] < t) {
+ w += y_ < y0 ? unit : -unit;
+ } else {
+ w += y2 < y_ ? unit : -unit;
+ }
+ }
+ return w;
+ } else {
+ var unit = roots[0] === 0 || roots[0] === 1 ? 0.5 : 1;
+ var x_ = quadraticAt(x0, x1, x2, roots[0]);
+ if (x_ < x) {
+ return 0;
+ }
+ return y2 < y0 ? unit : -unit;
+ }
+ }
+}
+function windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {
+ y -= cy;
+ if (y > r || y < -r) {
+ return 0;
+ }
+ var tmp = Math.sqrt(r * r - y * y);
+ roots[0] = -tmp;
+ roots[1] = tmp;
+ var dTheta = Math.abs(startAngle - endAngle);
+ if (dTheta < 1e-4) {
+ return 0;
+ }
+ if (dTheta >= PI25 - 1e-4) {
+ startAngle = 0;
+ endAngle = PI25;
+ var dir3 = anticlockwise ? 1 : -1;
+ if (x >= roots[0] + cx && x <= roots[1] + cx) {
+ return dir3;
+ } else {
+ return 0;
+ }
+ }
+ if (startAngle > endAngle) {
+ var tmp_1 = startAngle;
+ startAngle = endAngle;
+ endAngle = tmp_1;
+ }
+ if (startAngle < 0) {
+ startAngle += PI25;
+ endAngle += PI25;
+ }
+ var w = 0;
+ for (var i = 0; i < 2; i++) {
+ var x_ = roots[i];
+ if (x_ + cx > x) {
+ var angle = Math.atan2(y, x_);
+ var dir3 = anticlockwise ? 1 : -1;
+ if (angle < 0) {
+ angle = PI25 + angle;
+ }
+ if (angle >= startAngle && angle <= endAngle || angle + PI25 >= startAngle && angle + PI25 <= endAngle) {
+ if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {
+ dir3 = -dir3;
+ }
+ w += dir3;
+ }
+ }
+ }
+ return w;
+}
+function containPath(path, lineWidth, isStroke, x, y) {
+ var data = path.data;
+ var len2 = path.len();
+ var w = 0;
+ var xi = 0;
+ var yi = 0;
+ var x0 = 0;
+ var y0 = 0;
+ var x1;
+ var y1;
+ for (var i = 0; i < len2; ) {
+ var cmd = data[i++];
+ var isFirst = i === 1;
+ if (cmd === CMD2.M && i > 1) {
+ if (!isStroke) {
+ w += windingLine(xi, yi, x0, y0, x, y);
+ }
+ }
+ if (isFirst) {
+ xi = data[i];
+ yi = data[i + 1];
+ x0 = xi;
+ y0 = yi;
+ }
+ switch (cmd) {
+ case CMD2.M:
+ x0 = data[i++];
+ y0 = data[i++];
+ xi = x0;
+ yi = y0;
+ break;
+ case CMD2.L:
+ if (isStroke) {
+ if (containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {
+ return true;
+ }
+ } else {
+ w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;
+ }
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD2.C:
+ if (isStroke) {
+ if (containStroke2(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {
+ return true;
+ }
+ } else {
+ w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;
+ }
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD2.Q:
+ if (isStroke) {
+ if (containStroke3(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {
+ return true;
+ }
+ } else {
+ w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;
+ }
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD2.A:
+ var cx = data[i++];
+ var cy = data[i++];
+ var rx = data[i++];
+ var ry = data[i++];
+ var theta = data[i++];
+ var dTheta = data[i++];
+ i += 1;
+ var anticlockwise = !!(1 - data[i++]);
+ x1 = Math.cos(theta) * rx + cx;
+ y1 = Math.sin(theta) * ry + cy;
+ if (!isFirst) {
+ w += windingLine(xi, yi, x1, y1, x, y);
+ } else {
+ x0 = x1;
+ y0 = y1;
+ }
+ var _x = (x - cx) * ry / rx + cx;
+ if (isStroke) {
+ if (containStroke4(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {
+ return true;
+ }
+ } else {
+ w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);
+ }
+ xi = Math.cos(theta + dTheta) * rx + cx;
+ yi = Math.sin(theta + dTheta) * ry + cy;
+ break;
+ case CMD2.R:
+ x0 = xi = data[i++];
+ y0 = yi = data[i++];
+ var width = data[i++];
+ var height = data[i++];
+ x1 = x0 + width;
+ y1 = y0 + height;
+ if (isStroke) {
+ if (containStroke(x0, y0, x1, y0, lineWidth, x, y) || containStroke(x1, y0, x1, y1, lineWidth, x, y) || containStroke(x1, y1, x0, y1, lineWidth, x, y) || containStroke(x0, y1, x0, y0, lineWidth, x, y)) {
+ return true;
+ }
+ } else {
+ w += windingLine(x1, y0, x1, y1, x, y);
+ w += windingLine(x0, y1, x0, y0, x, y);
+ }
+ break;
+ case CMD2.Z:
+ if (isStroke) {
+ if (containStroke(xi, yi, x0, y0, lineWidth, x, y)) {
+ return true;
+ }
+ } else {
+ w += windingLine(xi, yi, x0, y0, x, y);
+ }
+ xi = x0;
+ yi = y0;
+ break;
+ }
+ }
+ if (!isStroke && !isAroundEqual(yi, y0)) {
+ w += windingLine(xi, yi, x0, y0, x, y) || 0;
+ }
+ return w !== 0;
+}
+function contain(pathProxy, x, y) {
+ return containPath(pathProxy, 0, false, x, y);
+}
+function containStroke5(pathProxy, lineWidth, x, y) {
+ return containPath(pathProxy, lineWidth, true, x, y);
+}
+
+// node_modules/zrender/lib/graphic/Path.js
+var DEFAULT_PATH_STYLE = defaults({
+ fill: "#000",
+ stroke: null,
+ strokePercent: 1,
+ fillOpacity: 1,
+ strokeOpacity: 1,
+ lineDashOffset: 0,
+ lineWidth: 1,
+ lineCap: "butt",
+ miterLimit: 10,
+ strokeNoScale: false,
+ strokeFirst: false
+}, DEFAULT_COMMON_STYLE);
+var DEFAULT_PATH_ANIMATION_PROPS = {
+ style: defaults({
+ fill: true,
+ stroke: true,
+ strokePercent: true,
+ fillOpacity: true,
+ strokeOpacity: true,
+ lineDashOffset: true,
+ lineWidth: true,
+ miterLimit: true
+ }, DEFAULT_COMMON_ANIMATION_PROPS.style)
+};
+var pathCopyParams = TRANSFORMABLE_PROPS.concat([
+ "invisible",
+ "culling",
+ "z",
+ "z2",
+ "zlevel",
+ "parent"
+]);
+var Path = function(_super) {
+ __extends(Path2, _super);
+ function Path2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Path2.prototype.update = function() {
+ var _this = this;
+ _super.prototype.update.call(this);
+ var style = this.style;
+ if (style.decal) {
+ var decalEl = this._decalEl = this._decalEl || new Path2();
+ if (decalEl.buildPath === Path2.prototype.buildPath) {
+ decalEl.buildPath = function(ctx) {
+ _this.buildPath(ctx, _this.shape);
+ };
+ }
+ decalEl.silent = true;
+ var decalElStyle = decalEl.style;
+ for (var key in style) {
+ if (decalElStyle[key] !== style[key]) {
+ decalElStyle[key] = style[key];
+ }
+ }
+ decalElStyle.fill = style.fill ? style.decal : null;
+ decalElStyle.decal = null;
+ decalElStyle.shadowColor = null;
+ style.strokeFirst && (decalElStyle.stroke = null);
+ for (var i = 0; i < pathCopyParams.length; ++i) {
+ decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];
+ }
+ decalEl.__dirty |= REDRAW_BIT;
+ } else if (this._decalEl) {
+ this._decalEl = null;
+ }
+ };
+ Path2.prototype.getDecalElement = function() {
+ return this._decalEl;
+ };
+ Path2.prototype._init = function(props) {
+ var keysArr = keys(props);
+ this.shape = this.getDefaultShape();
+ var defaultStyle = this.getDefaultStyle();
+ if (defaultStyle) {
+ this.useStyle(defaultStyle);
+ }
+ for (var i = 0; i < keysArr.length; i++) {
+ var key = keysArr[i];
+ var value = props[key];
+ if (key === "style") {
+ if (!this.style) {
+ this.useStyle(value);
+ } else {
+ extend(this.style, value);
+ }
+ } else if (key === "shape") {
+ extend(this.shape, value);
+ } else {
+ _super.prototype.attrKV.call(this, key, value);
+ }
+ }
+ if (!this.style) {
+ this.useStyle({});
+ }
+ };
+ Path2.prototype.getDefaultStyle = function() {
+ return null;
+ };
+ Path2.prototype.getDefaultShape = function() {
+ return {};
+ };
+ Path2.prototype.canBeInsideText = function() {
+ return this.hasFill();
+ };
+ Path2.prototype.getInsideTextFill = function() {
+ var pathFill = this.style.fill;
+ if (pathFill !== "none") {
+ if (isString(pathFill)) {
+ var fillLum = lum(pathFill, 0);
+ if (fillLum > 0.5) {
+ return DARK_LABEL_COLOR;
+ } else if (fillLum > 0.2) {
+ return LIGHTER_LABEL_COLOR;
+ }
+ return LIGHT_LABEL_COLOR;
+ } else if (pathFill) {
+ return LIGHT_LABEL_COLOR;
+ }
+ }
+ return DARK_LABEL_COLOR;
+ };
+ Path2.prototype.getInsideTextStroke = function(textFill) {
+ var pathFill = this.style.fill;
+ if (isString(pathFill)) {
+ var zr = this.__zr;
+ var isDarkMode2 = !!(zr && zr.isDarkMode());
+ var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;
+ if (isDarkMode2 === isDarkLabel) {
+ return pathFill;
+ }
+ }
+ };
+ Path2.prototype.buildPath = function(ctx, shapeCfg, inBatch) {
+ };
+ Path2.prototype.pathUpdated = function() {
+ this.__dirty &= ~SHAPE_CHANGED_BIT;
+ };
+ Path2.prototype.getUpdatedPathProxy = function(inBatch) {
+ !this.path && this.createPathProxy();
+ this.path.beginPath();
+ this.buildPath(this.path, this.shape, inBatch);
+ return this.path;
+ };
+ Path2.prototype.createPathProxy = function() {
+ this.path = new PathProxy_default(false);
+ };
+ Path2.prototype.hasStroke = function() {
+ var style = this.style;
+ var stroke = style.stroke;
+ return !(stroke == null || stroke === "none" || !(style.lineWidth > 0));
+ };
+ Path2.prototype.hasFill = function() {
+ var style = this.style;
+ var fill = style.fill;
+ return fill != null && fill !== "none";
+ };
+ Path2.prototype.getBoundingRect = function() {
+ var rect = this._rect;
+ var style = this.style;
+ var needsUpdateRect = !rect;
+ if (needsUpdateRect) {
+ var firstInvoke = false;
+ if (!this.path) {
+ firstInvoke = true;
+ this.createPathProxy();
+ }
+ var path = this.path;
+ if (firstInvoke || this.__dirty & SHAPE_CHANGED_BIT) {
+ path.beginPath();
+ this.buildPath(path, this.shape, false);
+ this.pathUpdated();
+ }
+ rect = path.getBoundingRect();
+ }
+ this._rect = rect;
+ if (this.hasStroke() && this.path && this.path.len() > 0) {
+ var rectStroke = this._rectStroke || (this._rectStroke = rect.clone());
+ if (this.__dirty || needsUpdateRect) {
+ rectStroke.copy(rect);
+ var lineScale = style.strokeNoScale ? this.getLineScale() : 1;
+ var w = style.lineWidth;
+ if (!this.hasFill()) {
+ var strokeContainThreshold = this.strokeContainThreshold;
+ w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);
+ }
+ if (lineScale > 1e-10) {
+ rectStroke.width += w / lineScale;
+ rectStroke.height += w / lineScale;
+ rectStroke.x -= w / lineScale / 2;
+ rectStroke.y -= w / lineScale / 2;
+ }
+ }
+ return rectStroke;
+ }
+ return rect;
+ };
+ Path2.prototype.contain = function(x, y) {
+ var localPos = this.transformCoordToLocal(x, y);
+ var rect = this.getBoundingRect();
+ var style = this.style;
+ x = localPos[0];
+ y = localPos[1];
+ if (rect.contain(x, y)) {
+ var pathProxy = this.path;
+ if (this.hasStroke()) {
+ var lineWidth = style.lineWidth;
+ var lineScale = style.strokeNoScale ? this.getLineScale() : 1;
+ if (lineScale > 1e-10) {
+ if (!this.hasFill()) {
+ lineWidth = Math.max(lineWidth, this.strokeContainThreshold);
+ }
+ if (containStroke5(pathProxy, lineWidth / lineScale, x, y)) {
+ return true;
+ }
+ }
+ }
+ if (this.hasFill()) {
+ return contain(pathProxy, x, y);
+ }
+ }
+ return false;
+ };
+ Path2.prototype.dirtyShape = function() {
+ this.__dirty |= SHAPE_CHANGED_BIT;
+ if (this._rect) {
+ this._rect = null;
+ }
+ if (this._decalEl) {
+ this._decalEl.dirtyShape();
+ }
+ this.markRedraw();
+ };
+ Path2.prototype.dirty = function() {
+ this.dirtyStyle();
+ this.dirtyShape();
+ };
+ Path2.prototype.animateShape = function(loop) {
+ return this.animate("shape", loop);
+ };
+ Path2.prototype.updateDuringAnimation = function(targetKey) {
+ if (targetKey === "style") {
+ this.dirtyStyle();
+ } else if (targetKey === "shape") {
+ this.dirtyShape();
+ } else {
+ this.markRedraw();
+ }
+ };
+ Path2.prototype.attrKV = function(key, value) {
+ if (key === "shape") {
+ this.setShape(value);
+ } else {
+ _super.prototype.attrKV.call(this, key, value);
+ }
+ };
+ Path2.prototype.setShape = function(keyOrObj, value) {
+ var shape = this.shape;
+ if (!shape) {
+ shape = this.shape = {};
+ }
+ if (typeof keyOrObj === "string") {
+ shape[keyOrObj] = value;
+ } else {
+ extend(shape, keyOrObj);
+ }
+ this.dirtyShape();
+ return this;
+ };
+ Path2.prototype.shapeChanged = function() {
+ return !!(this.__dirty & SHAPE_CHANGED_BIT);
+ };
+ Path2.prototype.createStyle = function(obj) {
+ return createObject(DEFAULT_PATH_STYLE, obj);
+ };
+ Path2.prototype._innerSaveToNormal = function(toState) {
+ _super.prototype._innerSaveToNormal.call(this, toState);
+ var normalState = this._normalState;
+ if (toState.shape && !normalState.shape) {
+ normalState.shape = extend({}, this.shape);
+ }
+ };
+ Path2.prototype._applyStateObj = function(stateName, state, normalState, keepCurrentStates, transition, animationCfg) {
+ _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);
+ var needsRestoreToNormal = !(state && keepCurrentStates);
+ var targetShape;
+ if (state && state.shape) {
+ if (transition) {
+ if (keepCurrentStates) {
+ targetShape = state.shape;
+ } else {
+ targetShape = extend({}, normalState.shape);
+ extend(targetShape, state.shape);
+ }
+ } else {
+ targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);
+ extend(targetShape, state.shape);
+ }
+ } else if (needsRestoreToNormal) {
+ targetShape = normalState.shape;
+ }
+ if (targetShape) {
+ if (transition) {
+ this.shape = extend({}, this.shape);
+ var targetShapePrimaryProps = {};
+ var shapeKeys = keys(targetShape);
+ for (var i = 0; i < shapeKeys.length; i++) {
+ var key = shapeKeys[i];
+ if (typeof targetShape[key] === "object") {
+ this.shape[key] = targetShape[key];
+ } else {
+ targetShapePrimaryProps[key] = targetShape[key];
+ }
+ }
+ this._transitionState(stateName, {
+ shape: targetShapePrimaryProps
+ }, animationCfg);
+ } else {
+ this.shape = targetShape;
+ this.dirtyShape();
+ }
+ }
+ };
+ Path2.prototype._mergeStates = function(states) {
+ var mergedState = _super.prototype._mergeStates.call(this, states);
+ var mergedShape;
+ for (var i = 0; i < states.length; i++) {
+ var state = states[i];
+ if (state.shape) {
+ mergedShape = mergedShape || {};
+ this._mergeStyle(mergedShape, state.shape);
+ }
+ }
+ if (mergedShape) {
+ mergedState.shape = mergedShape;
+ }
+ return mergedState;
+ };
+ Path2.prototype.getAnimationStyleProps = function() {
+ return DEFAULT_PATH_ANIMATION_PROPS;
+ };
+ Path2.prototype.isZeroArea = function() {
+ return false;
+ };
+ Path2.extend = function(defaultProps) {
+ var Sub = function(_super2) {
+ __extends(Sub2, _super2);
+ function Sub2(opts) {
+ var _this = _super2.call(this, opts) || this;
+ defaultProps.init && defaultProps.init.call(_this, opts);
+ return _this;
+ }
+ Sub2.prototype.getDefaultStyle = function() {
+ return clone(defaultProps.style);
+ };
+ Sub2.prototype.getDefaultShape = function() {
+ return clone(defaultProps.shape);
+ };
+ return Sub2;
+ }(Path2);
+ for (var key in defaultProps) {
+ if (typeof defaultProps[key] === "function") {
+ Sub.prototype[key] = defaultProps[key];
+ }
+ }
+ return Sub;
+ };
+ Path2.initDefaultProps = function() {
+ var pathProto = Path2.prototype;
+ pathProto.type = "path";
+ pathProto.strokeContainThreshold = 5;
+ pathProto.segmentIgnoreThreshold = 0;
+ pathProto.subPixelOptimize = false;
+ pathProto.autoBatch = false;
+ pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT;
+ }();
+ return Path2;
+}(Displayable_default);
+var Path_default = Path;
+
+// node_modules/zrender/lib/graphic/TSpan.js
+var DEFAULT_TSPAN_STYLE = defaults({
+ strokeFirst: true,
+ font: DEFAULT_FONT,
+ x: 0,
+ y: 0,
+ textAlign: "left",
+ textBaseline: "top",
+ miterLimit: 2
+}, DEFAULT_PATH_STYLE);
+var TSpan = function(_super) {
+ __extends(TSpan2, _super);
+ function TSpan2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ TSpan2.prototype.hasStroke = function() {
+ var style = this.style;
+ var stroke = style.stroke;
+ return stroke != null && stroke !== "none" && style.lineWidth > 0;
+ };
+ TSpan2.prototype.hasFill = function() {
+ var style = this.style;
+ var fill = style.fill;
+ return fill != null && fill !== "none";
+ };
+ TSpan2.prototype.createStyle = function(obj) {
+ return createObject(DEFAULT_TSPAN_STYLE, obj);
+ };
+ TSpan2.prototype.setBoundingRect = function(rect) {
+ this._rect = rect;
+ };
+ TSpan2.prototype.getBoundingRect = function() {
+ var style = this.style;
+ if (!this._rect) {
+ var text = style.text;
+ text != null ? text += "" : text = "";
+ var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);
+ rect.x += style.x || 0;
+ rect.y += style.y || 0;
+ if (this.hasStroke()) {
+ var w = style.lineWidth;
+ rect.x -= w / 2;
+ rect.y -= w / 2;
+ rect.width += w;
+ rect.height += w;
+ }
+ this._rect = rect;
+ }
+ return this._rect;
+ };
+ TSpan2.initDefaultProps = function() {
+ var tspanProto = TSpan2.prototype;
+ tspanProto.dirtyRectTolerance = 10;
+ }();
+ return TSpan2;
+}(Displayable_default);
+TSpan.prototype.type = "tspan";
+var TSpan_default = TSpan;
+
+// node_modules/zrender/lib/graphic/Image.js
+var DEFAULT_IMAGE_STYLE = defaults({
+ x: 0,
+ y: 0
+}, DEFAULT_COMMON_STYLE);
+var DEFAULT_IMAGE_ANIMATION_PROPS = {
+ style: defaults({
+ x: true,
+ y: true,
+ width: true,
+ height: true,
+ sx: true,
+ sy: true,
+ sWidth: true,
+ sHeight: true
+ }, DEFAULT_COMMON_ANIMATION_PROPS.style)
+};
+function isImageLike(source) {
+ return !!(source && typeof source !== "string" && source.width && source.height);
+}
+var ZRImage = function(_super) {
+ __extends(ZRImage2, _super);
+ function ZRImage2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ ZRImage2.prototype.createStyle = function(obj) {
+ return createObject(DEFAULT_IMAGE_STYLE, obj);
+ };
+ ZRImage2.prototype._getSize = function(dim) {
+ var style = this.style;
+ var size = style[dim];
+ if (size != null) {
+ return size;
+ }
+ var imageSource = isImageLike(style.image) ? style.image : this.__image;
+ if (!imageSource) {
+ return 0;
+ }
+ var otherDim = dim === "width" ? "height" : "width";
+ var otherDimSize = style[otherDim];
+ if (otherDimSize == null) {
+ return imageSource[dim];
+ } else {
+ return imageSource[dim] / imageSource[otherDim] * otherDimSize;
+ }
+ };
+ ZRImage2.prototype.getWidth = function() {
+ return this._getSize("width");
+ };
+ ZRImage2.prototype.getHeight = function() {
+ return this._getSize("height");
+ };
+ ZRImage2.prototype.getAnimationStyleProps = function() {
+ return DEFAULT_IMAGE_ANIMATION_PROPS;
+ };
+ ZRImage2.prototype.getBoundingRect = function() {
+ var style = this.style;
+ if (!this._rect) {
+ this._rect = new BoundingRect_default(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());
+ }
+ return this._rect;
+ };
+ return ZRImage2;
+}(Displayable_default);
+ZRImage.prototype.type = "image";
+var Image_default = ZRImage;
+
+// node_modules/zrender/lib/graphic/helper/roundRect.js
+function buildPath(ctx, shape) {
+ var x = shape.x;
+ var y = shape.y;
+ var width = shape.width;
+ var height = shape.height;
+ var r = shape.r;
+ var r1;
+ var r2;
+ var r3;
+ var r4;
+ if (width < 0) {
+ x = x + width;
+ width = -width;
+ }
+ if (height < 0) {
+ y = y + height;
+ height = -height;
+ }
+ if (typeof r === "number") {
+ r1 = r2 = r3 = r4 = r;
+ } else if (r instanceof Array) {
+ if (r.length === 1) {
+ r1 = r2 = r3 = r4 = r[0];
+ } else if (r.length === 2) {
+ r1 = r3 = r[0];
+ r2 = r4 = r[1];
+ } else if (r.length === 3) {
+ r1 = r[0];
+ r2 = r4 = r[1];
+ r3 = r[2];
+ } else {
+ r1 = r[0];
+ r2 = r[1];
+ r3 = r[2];
+ r4 = r[3];
+ }
+ } else {
+ r1 = r2 = r3 = r4 = 0;
+ }
+ var total;
+ if (r1 + r2 > width) {
+ total = r1 + r2;
+ r1 *= width / total;
+ r2 *= width / total;
+ }
+ if (r3 + r4 > width) {
+ total = r3 + r4;
+ r3 *= width / total;
+ r4 *= width / total;
+ }
+ if (r2 + r3 > height) {
+ total = r2 + r3;
+ r2 *= height / total;
+ r3 *= height / total;
+ }
+ if (r1 + r4 > height) {
+ total = r1 + r4;
+ r1 *= height / total;
+ r4 *= height / total;
+ }
+ ctx.moveTo(x + r1, y);
+ ctx.lineTo(x + width - r2, y);
+ r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);
+ ctx.lineTo(x + width, y + height - r3);
+ r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);
+ ctx.lineTo(x + r4, y + height);
+ r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);
+ ctx.lineTo(x, y + r1);
+ r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);
+}
+
+// node_modules/zrender/lib/graphic/helper/subPixelOptimize.js
+var round2 = Math.round;
+function subPixelOptimizeLine(outputShape, inputShape, style) {
+ if (!inputShape) {
+ return;
+ }
+ var x1 = inputShape.x1;
+ var x2 = inputShape.x2;
+ var y1 = inputShape.y1;
+ var y2 = inputShape.y2;
+ outputShape.x1 = x1;
+ outputShape.x2 = x2;
+ outputShape.y1 = y1;
+ outputShape.y2 = y2;
+ var lineWidth = style && style.lineWidth;
+ if (!lineWidth) {
+ return outputShape;
+ }
+ if (round2(x1 * 2) === round2(x2 * 2)) {
+ outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);
+ }
+ if (round2(y1 * 2) === round2(y2 * 2)) {
+ outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);
+ }
+ return outputShape;
+}
+function subPixelOptimizeRect(outputShape, inputShape, style) {
+ if (!inputShape) {
+ return;
+ }
+ var originX = inputShape.x;
+ var originY = inputShape.y;
+ var originWidth = inputShape.width;
+ var originHeight = inputShape.height;
+ outputShape.x = originX;
+ outputShape.y = originY;
+ outputShape.width = originWidth;
+ outputShape.height = originHeight;
+ var lineWidth = style && style.lineWidth;
+ if (!lineWidth) {
+ return outputShape;
+ }
+ outputShape.x = subPixelOptimize(originX, lineWidth, true);
+ outputShape.y = subPixelOptimize(originY, lineWidth, true);
+ outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);
+ outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);
+ return outputShape;
+}
+function subPixelOptimize(position2, lineWidth, positiveOrNegative) {
+ if (!lineWidth) {
+ return position2;
+ }
+ var doubledPosition = round2(position2 * 2);
+ return (doubledPosition + round2(lineWidth)) % 2 === 0 ? doubledPosition / 2 : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;
+}
+
+// node_modules/zrender/lib/graphic/shape/Rect.js
+var RectShape = function() {
+ function RectShape2() {
+ this.x = 0;
+ this.y = 0;
+ this.width = 0;
+ this.height = 0;
+ }
+ return RectShape2;
+}();
+var subPixelOptimizeOutputShape = {};
+var Rect = function(_super) {
+ __extends(Rect4, _super);
+ function Rect4(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Rect4.prototype.getDefaultShape = function() {
+ return new RectShape();
+ };
+ Rect4.prototype.buildPath = function(ctx, shape) {
+ var x;
+ var y;
+ var width;
+ var height;
+ if (this.subPixelOptimize) {
+ var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);
+ x = optimizedShape.x;
+ y = optimizedShape.y;
+ width = optimizedShape.width;
+ height = optimizedShape.height;
+ optimizedShape.r = shape.r;
+ shape = optimizedShape;
+ } else {
+ x = shape.x;
+ y = shape.y;
+ width = shape.width;
+ height = shape.height;
+ }
+ if (!shape.r) {
+ ctx.rect(x, y, width, height);
+ } else {
+ buildPath(ctx, shape);
+ }
+ };
+ Rect4.prototype.isZeroArea = function() {
+ return !this.shape.width || !this.shape.height;
+ };
+ return Rect4;
+}(Path_default);
+Rect.prototype.type = "rect";
+var Rect_default = Rect;
+
+// node_modules/zrender/lib/graphic/Text.js
+var DEFAULT_RICH_TEXT_COLOR = {
+ fill: "#000"
+};
+var DEFAULT_STROKE_LINE_WIDTH = 2;
+var DEFAULT_TEXT_ANIMATION_PROPS = {
+ style: defaults({
+ fill: true,
+ stroke: true,
+ fillOpacity: true,
+ strokeOpacity: true,
+ lineWidth: true,
+ fontSize: true,
+ lineHeight: true,
+ width: true,
+ height: true,
+ textShadowColor: true,
+ textShadowBlur: true,
+ textShadowOffsetX: true,
+ textShadowOffsetY: true,
+ backgroundColor: true,
+ padding: true,
+ borderColor: true,
+ borderWidth: true,
+ borderRadius: true
+ }, DEFAULT_COMMON_ANIMATION_PROPS.style)
+};
+var ZRText = function(_super) {
+ __extends(ZRText2, _super);
+ function ZRText2(opts) {
+ var _this = _super.call(this) || this;
+ _this.type = "text";
+ _this._children = [];
+ _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;
+ _this.attr(opts);
+ return _this;
+ }
+ ZRText2.prototype.childrenRef = function() {
+ return this._children;
+ };
+ ZRText2.prototype.update = function() {
+ _super.prototype.update.call(this);
+ if (this.styleChanged()) {
+ this._updateSubTexts();
+ }
+ for (var i = 0; i < this._children.length; i++) {
+ var child = this._children[i];
+ child.zlevel = this.zlevel;
+ child.z = this.z;
+ child.z2 = this.z2;
+ child.culling = this.culling;
+ child.cursor = this.cursor;
+ child.invisible = this.invisible;
+ }
+ };
+ ZRText2.prototype.updateTransform = function() {
+ var innerTransformable = this.innerTransformable;
+ if (innerTransformable) {
+ innerTransformable.updateTransform();
+ if (innerTransformable.transform) {
+ this.transform = innerTransformable.transform;
+ }
+ } else {
+ _super.prototype.updateTransform.call(this);
+ }
+ };
+ ZRText2.prototype.getLocalTransform = function(m2) {
+ var innerTransformable = this.innerTransformable;
+ return innerTransformable ? innerTransformable.getLocalTransform(m2) : _super.prototype.getLocalTransform.call(this, m2);
+ };
+ ZRText2.prototype.getComputedTransform = function() {
+ if (this.__hostTarget) {
+ this.__hostTarget.getComputedTransform();
+ this.__hostTarget.updateInnerText(true);
+ }
+ return _super.prototype.getComputedTransform.call(this);
+ };
+ ZRText2.prototype._updateSubTexts = function() {
+ this._childCursor = 0;
+ normalizeTextStyle(this.style);
+ this.style.rich ? this._updateRichTexts() : this._updatePlainTexts();
+ this._children.length = this._childCursor;
+ this.styleUpdated();
+ };
+ ZRText2.prototype.addSelfToZr = function(zr) {
+ _super.prototype.addSelfToZr.call(this, zr);
+ for (var i = 0; i < this._children.length; i++) {
+ this._children[i].__zr = zr;
+ }
+ };
+ ZRText2.prototype.removeSelfFromZr = function(zr) {
+ _super.prototype.removeSelfFromZr.call(this, zr);
+ for (var i = 0; i < this._children.length; i++) {
+ this._children[i].__zr = null;
+ }
+ };
+ ZRText2.prototype.getBoundingRect = function() {
+ if (this.styleChanged()) {
+ this._updateSubTexts();
+ }
+ if (!this._rect) {
+ var tmpRect3 = new BoundingRect_default(0, 0, 0, 0);
+ var children = this._children;
+ var tmpMat = [];
+ var rect = null;
+ for (var i = 0; i < children.length; i++) {
+ var child = children[i];
+ var childRect = child.getBoundingRect();
+ var transform2 = child.getLocalTransform(tmpMat);
+ if (transform2) {
+ tmpRect3.copy(childRect);
+ tmpRect3.applyTransform(transform2);
+ rect = rect || tmpRect3.clone();
+ rect.union(tmpRect3);
+ } else {
+ rect = rect || childRect.clone();
+ rect.union(childRect);
+ }
+ }
+ this._rect = rect || tmpRect3;
+ }
+ return this._rect;
+ };
+ ZRText2.prototype.setDefaultTextStyle = function(defaultTextStyle) {
+ this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;
+ };
+ ZRText2.prototype.setTextContent = function(textContent) {
+ if (true) {
+ throw new Error("Can't attach text on another text");
+ }
+ };
+ ZRText2.prototype._mergeStyle = function(targetStyle, sourceStyle) {
+ if (!sourceStyle) {
+ return targetStyle;
+ }
+ var sourceRich = sourceStyle.rich;
+ var targetRich = targetStyle.rich || sourceRich && {};
+ extend(targetStyle, sourceStyle);
+ if (sourceRich && targetRich) {
+ this._mergeRich(targetRich, sourceRich);
+ targetStyle.rich = targetRich;
+ } else if (targetRich) {
+ targetStyle.rich = targetRich;
+ }
+ return targetStyle;
+ };
+ ZRText2.prototype._mergeRich = function(targetRich, sourceRich) {
+ var richNames = keys(sourceRich);
+ for (var i = 0; i < richNames.length; i++) {
+ var richName = richNames[i];
+ targetRich[richName] = targetRich[richName] || {};
+ extend(targetRich[richName], sourceRich[richName]);
+ }
+ };
+ ZRText2.prototype.getAnimationStyleProps = function() {
+ return DEFAULT_TEXT_ANIMATION_PROPS;
+ };
+ ZRText2.prototype._getOrCreateChild = function(Ctor) {
+ var child = this._children[this._childCursor];
+ if (!child || !(child instanceof Ctor)) {
+ child = new Ctor();
+ }
+ this._children[this._childCursor++] = child;
+ child.__zr = this.__zr;
+ child.parent = this;
+ return child;
+ };
+ ZRText2.prototype._updatePlainTexts = function() {
+ var style = this.style;
+ var textFont = style.font || DEFAULT_FONT;
+ var textPadding = style.padding;
+ var text = getStyleText(style);
+ var contentBlock = parsePlainText(text, style);
+ var needDrawBg = needDrawBackground(style);
+ var bgColorDrawn = !!style.backgroundColor;
+ var outerHeight = contentBlock.outerHeight;
+ var outerWidth = contentBlock.outerWidth;
+ var contentWidth = contentBlock.contentWidth;
+ var textLines = contentBlock.lines;
+ var lineHeight = contentBlock.lineHeight;
+ var defaultStyle = this._defaultStyle;
+ this.isTruncated = !!contentBlock.isTruncated;
+ var baseX = style.x || 0;
+ var baseY = style.y || 0;
+ var textAlign = style.align || defaultStyle.align || "left";
+ var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || "top";
+ var textX = baseX;
+ var textY = adjustTextY2(baseY, contentBlock.contentHeight, verticalAlign);
+ if (needDrawBg || textPadding) {
+ var boxX = adjustTextX(baseX, outerWidth, textAlign);
+ var boxY = adjustTextY2(baseY, outerHeight, verticalAlign);
+ needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);
+ }
+ textY += lineHeight / 2;
+ if (textPadding) {
+ textX = getTextXForPadding(baseX, textAlign, textPadding);
+ if (verticalAlign === "top") {
+ textY += textPadding[0];
+ } else if (verticalAlign === "bottom") {
+ textY -= textPadding[2];
+ }
+ }
+ var defaultLineWidth = 0;
+ var useDefaultFill = false;
+ var textFill = getFill("fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill));
+ var textStroke = getStroke("stroke" in style ? style.stroke : !bgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null);
+ var hasShadow2 = style.textShadowBlur > 0;
+ var fixedBoundingRect = style.width != null && (style.overflow === "truncate" || style.overflow === "break" || style.overflow === "breakAll");
+ var calculatedLineHeight = contentBlock.calculatedLineHeight;
+ for (var i = 0; i < textLines.length; i++) {
+ var el = this._getOrCreateChild(TSpan_default);
+ var subElStyle = el.createStyle();
+ el.useStyle(subElStyle);
+ subElStyle.text = textLines[i];
+ subElStyle.x = textX;
+ subElStyle.y = textY;
+ if (textAlign) {
+ subElStyle.textAlign = textAlign;
+ }
+ subElStyle.textBaseline = "middle";
+ subElStyle.opacity = style.opacity;
+ subElStyle.strokeFirst = true;
+ if (hasShadow2) {
+ subElStyle.shadowBlur = style.textShadowBlur || 0;
+ subElStyle.shadowColor = style.textShadowColor || "transparent";
+ subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;
+ subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;
+ }
+ subElStyle.stroke = textStroke;
+ subElStyle.fill = textFill;
+ if (textStroke) {
+ subElStyle.lineWidth = style.lineWidth || defaultLineWidth;
+ subElStyle.lineDash = style.lineDash;
+ subElStyle.lineDashOffset = style.lineDashOffset || 0;
+ }
+ subElStyle.font = textFont;
+ setSeparateFont(subElStyle, style);
+ textY += lineHeight;
+ if (fixedBoundingRect) {
+ el.setBoundingRect(new BoundingRect_default(adjustTextX(subElStyle.x, contentWidth, subElStyle.textAlign), adjustTextY2(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight));
+ }
+ }
+ };
+ ZRText2.prototype._updateRichTexts = function() {
+ var style = this.style;
+ var text = getStyleText(style);
+ var contentBlock = parseRichText(text, style);
+ var contentWidth = contentBlock.width;
+ var outerWidth = contentBlock.outerWidth;
+ var outerHeight = contentBlock.outerHeight;
+ var textPadding = style.padding;
+ var baseX = style.x || 0;
+ var baseY = style.y || 0;
+ var defaultStyle = this._defaultStyle;
+ var textAlign = style.align || defaultStyle.align;
+ var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;
+ this.isTruncated = !!contentBlock.isTruncated;
+ var boxX = adjustTextX(baseX, outerWidth, textAlign);
+ var boxY = adjustTextY2(baseY, outerHeight, verticalAlign);
+ var xLeft = boxX;
+ var lineTop = boxY;
+ if (textPadding) {
+ xLeft += textPadding[3];
+ lineTop += textPadding[0];
+ }
+ var xRight = xLeft + contentWidth;
+ if (needDrawBackground(style)) {
+ this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);
+ }
+ var bgColorDrawn = !!style.backgroundColor;
+ for (var i = 0; i < contentBlock.lines.length; i++) {
+ var line = contentBlock.lines[i];
+ var tokens = line.tokens;
+ var tokenCount = tokens.length;
+ var lineHeight = line.lineHeight;
+ var remainedWidth = line.width;
+ var leftIndex = 0;
+ var lineXLeft = xLeft;
+ var lineXRight = xRight;
+ var rightIndex = tokenCount - 1;
+ var token = void 0;
+ while (leftIndex < tokenCount && (token = tokens[leftIndex], !token.align || token.align === "left")) {
+ this._placeToken(token, style, lineHeight, lineTop, lineXLeft, "left", bgColorDrawn);
+ remainedWidth -= token.width;
+ lineXLeft += token.width;
+ leftIndex++;
+ }
+ while (rightIndex >= 0 && (token = tokens[rightIndex], token.align === "right")) {
+ this._placeToken(token, style, lineHeight, lineTop, lineXRight, "right", bgColorDrawn);
+ remainedWidth -= token.width;
+ lineXRight -= token.width;
+ rightIndex--;
+ }
+ lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;
+ while (leftIndex <= rightIndex) {
+ token = tokens[leftIndex];
+ this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, "center", bgColorDrawn);
+ lineXLeft += token.width;
+ leftIndex++;
+ }
+ lineTop += lineHeight;
+ }
+ };
+ ZRText2.prototype._placeToken = function(token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {
+ var tokenStyle = style.rich[token.styleName] || {};
+ tokenStyle.text = token.text;
+ var verticalAlign = token.verticalAlign;
+ var y = lineTop + lineHeight / 2;
+ if (verticalAlign === "top") {
+ y = lineTop + token.height / 2;
+ } else if (verticalAlign === "bottom") {
+ y = lineTop + lineHeight - token.height / 2;
+ }
+ var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);
+ needDrawBg && this._renderBackground(tokenStyle, style, textAlign === "right" ? x - token.width : textAlign === "center" ? x - token.width / 2 : x, y - token.height / 2, token.width, token.height);
+ var bgColorDrawn = !!tokenStyle.backgroundColor;
+ var textPadding = token.textPadding;
+ if (textPadding) {
+ x = getTextXForPadding(x, textAlign, textPadding);
+ y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;
+ }
+ var el = this._getOrCreateChild(TSpan_default);
+ var subElStyle = el.createStyle();
+ el.useStyle(subElStyle);
+ var defaultStyle = this._defaultStyle;
+ var useDefaultFill = false;
+ var defaultLineWidth = 0;
+ var textFill = getFill("fill" in tokenStyle ? tokenStyle.fill : "fill" in style ? style.fill : (useDefaultFill = true, defaultStyle.fill));
+ var textStroke = getStroke("stroke" in tokenStyle ? tokenStyle.stroke : "stroke" in style ? style.stroke : !bgColorDrawn && !parentBgColorDrawn && (!defaultStyle.autoStroke || useDefaultFill) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke) : null);
+ var hasShadow2 = tokenStyle.textShadowBlur > 0 || style.textShadowBlur > 0;
+ subElStyle.text = token.text;
+ subElStyle.x = x;
+ subElStyle.y = y;
+ if (hasShadow2) {
+ subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;
+ subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || "transparent";
+ subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;
+ subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;
+ }
+ subElStyle.textAlign = textAlign;
+ subElStyle.textBaseline = "middle";
+ subElStyle.font = token.font || DEFAULT_FONT;
+ subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);
+ setSeparateFont(subElStyle, tokenStyle);
+ if (textStroke) {
+ subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);
+ subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);
+ subElStyle.lineDashOffset = style.lineDashOffset || 0;
+ subElStyle.stroke = textStroke;
+ }
+ if (textFill) {
+ subElStyle.fill = textFill;
+ }
+ var textWidth = token.contentWidth;
+ var textHeight = token.contentHeight;
+ el.setBoundingRect(new BoundingRect_default(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY2(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));
+ };
+ ZRText2.prototype._renderBackground = function(style, topStyle, x, y, width, height) {
+ var textBackgroundColor = style.backgroundColor;
+ var textBorderWidth = style.borderWidth;
+ var textBorderColor = style.borderColor;
+ var isImageBg = textBackgroundColor && textBackgroundColor.image;
+ var isPlainOrGradientBg = textBackgroundColor && !isImageBg;
+ var textBorderRadius = style.borderRadius;
+ var self2 = this;
+ var rectEl;
+ var imgEl;
+ if (isPlainOrGradientBg || style.lineHeight || textBorderWidth && textBorderColor) {
+ rectEl = this._getOrCreateChild(Rect_default);
+ rectEl.useStyle(rectEl.createStyle());
+ rectEl.style.fill = null;
+ var rectShape = rectEl.shape;
+ rectShape.x = x;
+ rectShape.y = y;
+ rectShape.width = width;
+ rectShape.height = height;
+ rectShape.r = textBorderRadius;
+ rectEl.dirtyShape();
+ }
+ if (isPlainOrGradientBg) {
+ var rectStyle = rectEl.style;
+ rectStyle.fill = textBackgroundColor || null;
+ rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);
+ } else if (isImageBg) {
+ imgEl = this._getOrCreateChild(Image_default);
+ imgEl.onload = function() {
+ self2.dirtyStyle();
+ };
+ var imgStyle = imgEl.style;
+ imgStyle.image = textBackgroundColor.image;
+ imgStyle.x = x;
+ imgStyle.y = y;
+ imgStyle.width = width;
+ imgStyle.height = height;
+ }
+ if (textBorderWidth && textBorderColor) {
+ var rectStyle = rectEl.style;
+ rectStyle.lineWidth = textBorderWidth;
+ rectStyle.stroke = textBorderColor;
+ rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);
+ rectStyle.lineDash = style.borderDash;
+ rectStyle.lineDashOffset = style.borderDashOffset || 0;
+ rectEl.strokeContainThreshold = 0;
+ if (rectEl.hasFill() && rectEl.hasStroke()) {
+ rectStyle.strokeFirst = true;
+ rectStyle.lineWidth *= 2;
+ }
+ }
+ var commonStyle = (rectEl || imgEl).style;
+ commonStyle.shadowBlur = style.shadowBlur || 0;
+ commonStyle.shadowColor = style.shadowColor || "transparent";
+ commonStyle.shadowOffsetX = style.shadowOffsetX || 0;
+ commonStyle.shadowOffsetY = style.shadowOffsetY || 0;
+ commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);
+ };
+ ZRText2.makeFont = function(style) {
+ var font = "";
+ if (hasSeparateFont(style)) {
+ font = [
+ style.fontStyle,
+ style.fontWeight,
+ parseFontSize(style.fontSize),
+ style.fontFamily || "sans-serif"
+ ].join(" ");
+ }
+ return font && trim(font) || style.textFont || style.font;
+ };
+ return ZRText2;
+}(Displayable_default);
+var VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };
+var VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };
+var FONT_PARTS = ["fontStyle", "fontWeight", "fontSize", "fontFamily"];
+function parseFontSize(fontSize) {
+ if (typeof fontSize === "string" && (fontSize.indexOf("px") !== -1 || fontSize.indexOf("rem") !== -1 || fontSize.indexOf("em") !== -1)) {
+ return fontSize;
+ } else if (!isNaN(+fontSize)) {
+ return fontSize + "px";
+ } else {
+ return DEFAULT_FONT_SIZE + "px";
+ }
+}
+function setSeparateFont(targetStyle, sourceStyle) {
+ for (var i = 0; i < FONT_PARTS.length; i++) {
+ var fontProp = FONT_PARTS[i];
+ var val = sourceStyle[fontProp];
+ if (val != null) {
+ targetStyle[fontProp] = val;
+ }
+ }
+}
+function hasSeparateFont(style) {
+ return style.fontSize != null || style.fontFamily || style.fontWeight;
+}
+function normalizeTextStyle(style) {
+ normalizeStyle(style);
+ each(style.rich, normalizeStyle);
+ return style;
+}
+function normalizeStyle(style) {
+ if (style) {
+ style.font = ZRText.makeFont(style);
+ var textAlign = style.align;
+ textAlign === "middle" && (textAlign = "center");
+ style.align = textAlign == null || VALID_TEXT_ALIGN[textAlign] ? textAlign : "left";
+ var verticalAlign = style.verticalAlign;
+ verticalAlign === "center" && (verticalAlign = "middle");
+ style.verticalAlign = verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign] ? verticalAlign : "top";
+ var textPadding = style.padding;
+ if (textPadding) {
+ style.padding = normalizeCssArray(style.padding);
+ }
+ }
+}
+function getStroke(stroke, lineWidth) {
+ return stroke == null || lineWidth <= 0 || stroke === "transparent" || stroke === "none" ? null : stroke.image || stroke.colorStops ? "#000" : stroke;
+}
+function getFill(fill) {
+ return fill == null || fill === "none" ? null : fill.image || fill.colorStops ? "#000" : fill;
+}
+function getTextXForPadding(x, textAlign, textPadding) {
+ return textAlign === "right" ? x - textPadding[1] : textAlign === "center" ? x + textPadding[3] / 2 - textPadding[1] / 2 : x + textPadding[3];
+}
+function getStyleText(style) {
+ var text = style.text;
+ text != null && (text += "");
+ return text;
+}
+function needDrawBackground(style) {
+ return !!(style.backgroundColor || style.lineHeight || style.borderWidth && style.borderColor);
+}
+var Text_default = ZRText;
+
+// node_modules/echarts/lib/util/innerStore.js
+var getECData = makeInner();
+var setCommonECData = function(seriesIndex, dataType, dataIdx, el) {
+ if (el) {
+ var ecData = getECData(el);
+ ecData.dataIndex = dataIdx;
+ ecData.dataType = dataType;
+ ecData.seriesIndex = seriesIndex;
+ ecData.ssrType = "chart";
+ if (el.type === "group") {
+ el.traverse(function(child) {
+ var childECData = getECData(child);
+ childECData.seriesIndex = seriesIndex;
+ childECData.dataIndex = dataIdx;
+ childECData.dataType = dataType;
+ childECData.ssrType = "chart";
+ });
+ }
+ }
+};
+
+// node_modules/echarts/lib/util/states.js
+var _highlightNextDigit = 1;
+var _highlightKeyMap = {};
+var getSavedStates = makeInner();
+var getComponentStates = makeInner();
+var HOVER_STATE_NORMAL = 0;
+var HOVER_STATE_BLUR = 1;
+var HOVER_STATE_EMPHASIS = 2;
+var SPECIAL_STATES = ["emphasis", "blur", "select"];
+var DISPLAY_STATES = ["normal", "emphasis", "blur", "select"];
+var Z2_EMPHASIS_LIFT = 10;
+var Z2_SELECT_LIFT = 9;
+var HIGHLIGHT_ACTION_TYPE = "highlight";
+var DOWNPLAY_ACTION_TYPE = "downplay";
+var SELECT_ACTION_TYPE = "select";
+var UNSELECT_ACTION_TYPE = "unselect";
+var TOGGLE_SELECT_ACTION_TYPE = "toggleSelect";
+function hasFillOrStroke(fillOrStroke) {
+ return fillOrStroke != null && fillOrStroke !== "none";
+}
+function doChangeHoverState(el, stateName, hoverStateEnum) {
+ if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {
+ el.onHoverStateChange(stateName);
+ }
+ el.hoverState = hoverStateEnum;
+}
+function singleEnterEmphasis(el) {
+ doChangeHoverState(el, "emphasis", HOVER_STATE_EMPHASIS);
+}
+function singleLeaveEmphasis(el) {
+ if (el.hoverState === HOVER_STATE_EMPHASIS) {
+ doChangeHoverState(el, "normal", HOVER_STATE_NORMAL);
+ }
+}
+function singleEnterBlur(el) {
+ doChangeHoverState(el, "blur", HOVER_STATE_BLUR);
+}
+function singleLeaveBlur(el) {
+ if (el.hoverState === HOVER_STATE_BLUR) {
+ doChangeHoverState(el, "normal", HOVER_STATE_NORMAL);
+ }
+}
+function singleEnterSelect(el) {
+ el.selected = true;
+}
+function singleLeaveSelect(el) {
+ el.selected = false;
+}
+function updateElementState(el, updater, commonParam) {
+ updater(el, commonParam);
+}
+function traverseUpdateState(el, updater, commonParam) {
+ updateElementState(el, updater, commonParam);
+ el.isGroup && el.traverse(function(child) {
+ updateElementState(child, updater, commonParam);
+ });
+}
+function setStatesFlag(el, stateName) {
+ switch (stateName) {
+ case "emphasis":
+ el.hoverState = HOVER_STATE_EMPHASIS;
+ break;
+ case "normal":
+ el.hoverState = HOVER_STATE_NORMAL;
+ break;
+ case "blur":
+ el.hoverState = HOVER_STATE_BLUR;
+ break;
+ case "select":
+ el.selected = true;
+ }
+}
+function getFromStateStyle(el, props, toStateName, defaultValue) {
+ var style = el.style;
+ var fromState = {};
+ for (var i = 0; i < props.length; i++) {
+ var propName = props[i];
+ var val = style[propName];
+ fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val;
+ }
+ for (var i = 0; i < el.animators.length; i++) {
+ var animator = el.animators[i];
+ if (animator.__fromStateTransition && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === "style") {
+ animator.saveTo(fromState, props);
+ }
+ }
+ return fromState;
+}
+function createEmphasisDefaultState(el, stateName, targetStates, state) {
+ var hasSelect = targetStates && indexOf(targetStates, "select") >= 0;
+ var cloned = false;
+ if (el instanceof Path_default) {
+ var store = getSavedStates(el);
+ var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill;
+ var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke;
+ if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {
+ state = state || {};
+ var emphasisStyle = state.style || {};
+ if (emphasisStyle.fill === "inherit") {
+ cloned = true;
+ state = extend({}, state);
+ emphasisStyle = extend({}, emphasisStyle);
+ emphasisStyle.fill = fromFill;
+ } else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {
+ cloned = true;
+ state = extend({}, state);
+ emphasisStyle = extend({}, emphasisStyle);
+ emphasisStyle.fill = liftColor(fromFill);
+ } else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {
+ if (!cloned) {
+ state = extend({}, state);
+ emphasisStyle = extend({}, emphasisStyle);
+ }
+ emphasisStyle.stroke = liftColor(fromStroke);
+ }
+ state.style = emphasisStyle;
+ }
+ }
+ if (state) {
+ if (state.z2 == null) {
+ if (!cloned) {
+ state = extend({}, state);
+ }
+ var z2EmphasisLift = el.z2EmphasisLift;
+ state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);
+ }
+ }
+ return state;
+}
+function createSelectDefaultState(el, stateName, state) {
+ if (state) {
+ if (state.z2 == null) {
+ state = extend({}, state);
+ var z2SelectLift = el.z2SelectLift;
+ state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);
+ }
+ }
+ return state;
+}
+function createBlurDefaultState(el, stateName, state) {
+ var hasBlur = indexOf(el.currentStates, stateName) >= 0;
+ var currentOpacity = el.style.opacity;
+ var fromState = !hasBlur ? getFromStateStyle(el, ["opacity"], stateName, {
+ opacity: 1
+ }) : null;
+ state = state || {};
+ var blurStyle = state.style || {};
+ if (blurStyle.opacity == null) {
+ state = extend({}, state);
+ blurStyle = extend({
+ opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1
+ }, blurStyle);
+ state.style = blurStyle;
+ }
+ return state;
+}
+function elementStateProxy(stateName, targetStates) {
+ var state = this.states[stateName];
+ if (this.style) {
+ if (stateName === "emphasis") {
+ return createEmphasisDefaultState(this, stateName, targetStates, state);
+ } else if (stateName === "blur") {
+ return createBlurDefaultState(this, stateName, state);
+ } else if (stateName === "select") {
+ return createSelectDefaultState(this, stateName, state);
+ }
+ }
+ return state;
+}
+function setDefaultStateProxy(el) {
+ el.stateProxy = elementStateProxy;
+ var textContent = el.getTextContent();
+ var textGuide = el.getTextGuideLine();
+ if (textContent) {
+ textContent.stateProxy = elementStateProxy;
+ }
+ if (textGuide) {
+ textGuide.stateProxy = elementStateProxy;
+ }
+}
+function enterEmphasisWhenMouseOver(el, e2) {
+ !shouldSilent(el, e2) && !el.__highByOuter && traverseUpdateState(el, singleEnterEmphasis);
+}
+function leaveEmphasisWhenMouseOut(el, e2) {
+ !shouldSilent(el, e2) && !el.__highByOuter && traverseUpdateState(el, singleLeaveEmphasis);
+}
+function enterEmphasis(el, highlightDigit) {
+ el.__highByOuter |= 1 << (highlightDigit || 0);
+ traverseUpdateState(el, singleEnterEmphasis);
+}
+function leaveEmphasis(el, highlightDigit) {
+ !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el, singleLeaveEmphasis);
+}
+function enterBlur(el) {
+ traverseUpdateState(el, singleEnterBlur);
+}
+function leaveBlur(el) {
+ traverseUpdateState(el, singleLeaveBlur);
+}
+function enterSelect(el) {
+ traverseUpdateState(el, singleEnterSelect);
+}
+function leaveSelect(el) {
+ traverseUpdateState(el, singleLeaveSelect);
+}
+function shouldSilent(el, e2) {
+ return el.__highDownSilentOnTouch && e2.zrByTouch;
+}
+function allLeaveBlur(api) {
+ var model = api.getModel();
+ var leaveBlurredSeries = [];
+ var allComponentViews = [];
+ model.eachComponent(function(componentType, componentModel) {
+ var componentStates = getComponentStates(componentModel);
+ var isSeries2 = componentType === "series";
+ var view = isSeries2 ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel);
+ !isSeries2 && allComponentViews.push(view);
+ if (componentStates.isBlured) {
+ view.group.traverse(function(child) {
+ singleLeaveBlur(child);
+ });
+ isSeries2 && leaveBlurredSeries.push(componentModel);
+ }
+ componentStates.isBlured = false;
+ });
+ each(allComponentViews, function(view) {
+ if (view && view.toggleBlurSeries) {
+ view.toggleBlurSeries(leaveBlurredSeries, false, model);
+ }
+ });
+}
+function blurSeries(targetSeriesIndex, focus, blurScope, api) {
+ var ecModel = api.getModel();
+ blurScope = blurScope || "coordinateSystem";
+ function leaveBlurOfIndices(data, dataIndices) {
+ for (var i = 0; i < dataIndices.length; i++) {
+ var itemEl = data.getItemGraphicEl(dataIndices[i]);
+ itemEl && leaveBlur(itemEl);
+ }
+ }
+ if (targetSeriesIndex == null) {
+ return;
+ }
+ if (!focus || focus === "none") {
+ return;
+ }
+ var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);
+ var targetCoordSys = targetSeriesModel.coordinateSystem;
+ if (targetCoordSys && targetCoordSys.master) {
+ targetCoordSys = targetCoordSys.master;
+ }
+ var blurredSeries = [];
+ ecModel.eachSeries(function(seriesModel) {
+ var sameSeries = targetSeriesModel === seriesModel;
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && coordSys.master) {
+ coordSys = coordSys.master;
+ }
+ var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries;
+ if (!(blurScope === "series" && !sameSeries || blurScope === "coordinateSystem" && !sameCoordSys || focus === "series" && sameSeries)) {
+ var view = api.getViewOfSeriesModel(seriesModel);
+ view.group.traverse(function(child) {
+ if (child.__highByOuter && sameSeries && focus === "self") {
+ return;
+ }
+ singleEnterBlur(child);
+ });
+ if (isArrayLike(focus)) {
+ leaveBlurOfIndices(seriesModel.getData(), focus);
+ } else if (isObject(focus)) {
+ var dataTypes = keys(focus);
+ for (var d = 0; d < dataTypes.length; d++) {
+ leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);
+ }
+ }
+ blurredSeries.push(seriesModel);
+ getComponentStates(seriesModel).isBlured = true;
+ }
+ });
+ ecModel.eachComponent(function(componentType, componentModel) {
+ if (componentType === "series") {
+ return;
+ }
+ var view = api.getViewOfComponentModel(componentModel);
+ if (view && view.toggleBlurSeries) {
+ view.toggleBlurSeries(blurredSeries, true, ecModel);
+ }
+ });
+}
+function blurComponent(componentMainType, componentIndex, api) {
+ if (componentMainType == null || componentIndex == null) {
+ return;
+ }
+ var componentModel = api.getModel().getComponent(componentMainType, componentIndex);
+ if (!componentModel) {
+ return;
+ }
+ getComponentStates(componentModel).isBlured = true;
+ var view = api.getViewOfComponentModel(componentModel);
+ if (!view || !view.focusBlurEnabled) {
+ return;
+ }
+ view.group.traverse(function(child) {
+ singleEnterBlur(child);
+ });
+}
+function blurSeriesFromHighlightPayload(seriesModel, payload, api) {
+ var seriesIndex = seriesModel.seriesIndex;
+ var data = seriesModel.getData(payload.dataType);
+ if (!data) {
+ if (true) {
+ error("Unknown dataType " + payload.dataType);
+ }
+ return;
+ }
+ var dataIndex = queryDataIndex(data, payload);
+ dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;
+ var el = data.getItemGraphicEl(dataIndex);
+ if (!el) {
+ var count2 = data.count();
+ var current = 0;
+ while (!el && current < count2) {
+ el = data.getItemGraphicEl(current++);
+ }
+ }
+ if (el) {
+ var ecData = getECData(el);
+ blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api);
+ } else {
+ var focus_1 = seriesModel.get(["emphasis", "focus"]);
+ var blurScope = seriesModel.get(["emphasis", "blurScope"]);
+ if (focus_1 != null) {
+ blurSeries(seriesIndex, focus_1, blurScope, api);
+ }
+ }
+}
+function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) {
+ var ret = {
+ focusSelf: false,
+ dispatchers: null
+ };
+ if (componentMainType == null || componentMainType === "series" || componentIndex == null || name == null) {
+ return ret;
+ }
+ var componentModel = api.getModel().getComponent(componentMainType, componentIndex);
+ if (!componentModel) {
+ return ret;
+ }
+ var view = api.getViewOfComponentModel(componentModel);
+ if (!view || !view.findHighDownDispatchers) {
+ return ret;
+ }
+ var dispatchers = view.findHighDownDispatchers(name);
+ var focusSelf;
+ for (var i = 0; i < dispatchers.length; i++) {
+ if (!isHighDownDispatcher(dispatchers[i])) {
+ error("param should be highDownDispatcher");
+ }
+ if (getECData(dispatchers[i]).focus === "self") {
+ focusSelf = true;
+ break;
+ }
+ }
+ return {
+ focusSelf,
+ dispatchers
+ };
+}
+function handleGlobalMouseOverForHighDown(dispatcher, e2, api) {
+ if (!isHighDownDispatcher(dispatcher)) {
+ error("param should be highDownDispatcher");
+ }
+ var ecData = getECData(dispatcher);
+ var _a2 = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api), dispatchers = _a2.dispatchers, focusSelf = _a2.focusSelf;
+ if (dispatchers) {
+ if (focusSelf) {
+ blurComponent(ecData.componentMainType, ecData.componentIndex, api);
+ }
+ each(dispatchers, function(dispatcher2) {
+ return enterEmphasisWhenMouseOver(dispatcher2, e2);
+ });
+ } else {
+ blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api);
+ if (ecData.focus === "self") {
+ blurComponent(ecData.componentMainType, ecData.componentIndex, api);
+ }
+ enterEmphasisWhenMouseOver(dispatcher, e2);
+ }
+}
+function handleGlobalMouseOutForHighDown(dispatcher, e2, api) {
+ if (!isHighDownDispatcher(dispatcher)) {
+ error("param should be highDownDispatcher");
+ }
+ allLeaveBlur(api);
+ var ecData = getECData(dispatcher);
+ var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers;
+ if (dispatchers) {
+ each(dispatchers, function(dispatcher2) {
+ return leaveEmphasisWhenMouseOut(dispatcher2, e2);
+ });
+ } else {
+ leaveEmphasisWhenMouseOut(dispatcher, e2);
+ }
+}
+function toggleSelectionFromPayload(seriesModel, payload, api) {
+ if (!isSelectChangePayload(payload)) {
+ return;
+ }
+ var dataType = payload.dataType;
+ var data = seriesModel.getData(dataType);
+ var dataIndex = queryDataIndex(data, payload);
+ if (!isArray(dataIndex)) {
+ dataIndex = [dataIndex];
+ }
+ seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? "toggleSelect" : payload.type === SELECT_ACTION_TYPE ? "select" : "unselect"](dataIndex, dataType);
+}
+function updateSeriesElementSelection(seriesModel) {
+ var allData = seriesModel.getAllData();
+ each(allData, function(_a2) {
+ var data = _a2.data, type = _a2.type;
+ data.eachItemGraphicEl(function(el, idx) {
+ seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);
+ });
+ });
+}
+function getAllSelectedIndices(ecModel) {
+ var ret = [];
+ ecModel.eachSeries(function(seriesModel) {
+ var allData = seriesModel.getAllData();
+ each(allData, function(_a2) {
+ var data = _a2.data, type = _a2.type;
+ var dataIndices = seriesModel.getSelectedDataIndices();
+ if (dataIndices.length > 0) {
+ var item = {
+ dataIndex: dataIndices,
+ seriesIndex: seriesModel.seriesIndex
+ };
+ if (type != null) {
+ item.dataType = type;
+ }
+ ret.push(item);
+ }
+ });
+ });
+ return ret;
+}
+function enableHoverEmphasis(el, focus, blurScope) {
+ setAsHighDownDispatcher(el, true);
+ traverseUpdateState(el, setDefaultStateProxy);
+ enableHoverFocus(el, focus, blurScope);
+}
+function disableHoverEmphasis(el) {
+ setAsHighDownDispatcher(el, false);
+}
+function toggleHoverEmphasis(el, focus, blurScope, isDisabled) {
+ isDisabled ? disableHoverEmphasis(el) : enableHoverEmphasis(el, focus, blurScope);
+}
+function enableHoverFocus(el, focus, blurScope) {
+ var ecData = getECData(el);
+ if (focus != null) {
+ ecData.focus = focus;
+ ecData.blurScope = blurScope;
+ } else if (ecData.focus) {
+ ecData.focus = null;
+ }
+}
+var OTHER_STATES = ["emphasis", "blur", "select"];
+var defaultStyleGetterMap = {
+ itemStyle: "getItemStyle",
+ lineStyle: "getLineStyle",
+ areaStyle: "getAreaStyle"
+};
+function setStatesStylesFromModel(el, itemModel, styleType, getter) {
+ styleType = styleType || "itemStyle";
+ for (var i = 0; i < OTHER_STATES.length; i++) {
+ var stateName = OTHER_STATES[i];
+ var model = itemModel.getModel([stateName, styleType]);
+ var state = el.ensureState(stateName);
+ state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();
+ }
+}
+function setAsHighDownDispatcher(el, asDispatcher) {
+ var disable = asDispatcher === false;
+ var extendedEl = el;
+ if (el.highDownSilentOnTouch) {
+ extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;
+ }
+ if (!disable || extendedEl.__highDownDispatcher) {
+ extendedEl.__highByOuter = extendedEl.__highByOuter || 0;
+ extendedEl.__highDownDispatcher = !disable;
+ }
+}
+function isHighDownDispatcher(el) {
+ return !!(el && el.__highDownDispatcher);
+}
+function enableComponentHighDownFeatures(el, componentModel, componentHighDownName) {
+ var ecData = getECData(el);
+ ecData.componentMainType = componentModel.mainType;
+ ecData.componentIndex = componentModel.componentIndex;
+ ecData.componentHighDownName = componentHighDownName;
+}
+function getHighlightDigit(highlightKey) {
+ var highlightDigit = _highlightKeyMap[highlightKey];
+ if (highlightDigit == null && _highlightNextDigit <= 32) {
+ highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;
+ }
+ return highlightDigit;
+}
+function isSelectChangePayload(payload) {
+ var payloadType = payload.type;
+ return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE;
+}
+function isHighDownPayload(payload) {
+ var payloadType = payload.type;
+ return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE;
+}
+function savePathStates(el) {
+ var store = getSavedStates(el);
+ store.normalFill = el.style.fill;
+ store.normalStroke = el.style.stroke;
+ var selectState = el.states.select || {};
+ store.selectFill = selectState.style && selectState.style.fill || null;
+ store.selectStroke = selectState.style && selectState.style.stroke || null;
+}
+
+// node_modules/echarts/lib/util/graphic.js
+var graphic_exports = {};
+__export(graphic_exports, {
+ Arc: () => Arc_default,
+ BezierCurve: () => BezierCurve_default,
+ BoundingRect: () => BoundingRect_default,
+ Circle: () => Circle_default,
+ CompoundPath: () => CompoundPath_default,
+ Ellipse: () => Ellipse_default,
+ Group: () => Group_default,
+ Image: () => Image_default,
+ IncrementalDisplayable: () => IncrementalDisplayable_default,
+ Line: () => Line_default,
+ LinearGradient: () => LinearGradient_default,
+ OrientedBoundingRect: () => OrientedBoundingRect_default,
+ Path: () => Path_default,
+ Point: () => Point_default,
+ Polygon: () => Polygon_default,
+ Polyline: () => Polyline_default,
+ RadialGradient: () => RadialGradient_default,
+ Rect: () => Rect_default,
+ Ring: () => Ring_default,
+ Sector: () => Sector_default,
+ Text: () => Text_default,
+ applyTransform: () => applyTransform2,
+ clipPointsByRect: () => clipPointsByRect,
+ clipRectByRect: () => clipRectByRect,
+ createIcon: () => createIcon,
+ extendPath: () => extendPath,
+ extendShape: () => extendShape,
+ getShapeClass: () => getShapeClass,
+ getTransform: () => getTransform,
+ groupTransition: () => groupTransition,
+ initProps: () => initProps,
+ isElementRemoved: () => isElementRemoved,
+ lineLineIntersect: () => lineLineIntersect,
+ linePolygonIntersect: () => linePolygonIntersect,
+ makeImage: () => makeImage,
+ makePath: () => makePath,
+ mergePath: () => mergePath2,
+ registerShape: () => registerShape,
+ removeElement: () => removeElement,
+ removeElementWithFadeOut: () => removeElementWithFadeOut,
+ resizePath: () => resizePath,
+ setTooltipConfig: () => setTooltipConfig,
+ subPixelOptimize: () => subPixelOptimize2,
+ subPixelOptimizeLine: () => subPixelOptimizeLine2,
+ subPixelOptimizeRect: () => subPixelOptimizeRect2,
+ transformDirection: () => transformDirection,
+ traverseElements: () => traverseElements,
+ updateProps: () => updateProps
+});
+
+// node_modules/zrender/lib/tool/transformPath.js
+var CMD3 = PathProxy_default.CMD;
+var points = [[], [], []];
+var mathSqrt2 = Math.sqrt;
+var mathAtan2 = Math.atan2;
+function transformPath(path, m2) {
+ if (!m2) {
+ return;
+ }
+ var data = path.data;
+ var len2 = path.len();
+ var cmd;
+ var nPoint;
+ var i;
+ var j;
+ var k;
+ var p;
+ var M = CMD3.M;
+ var C = CMD3.C;
+ var L = CMD3.L;
+ var R = CMD3.R;
+ var A = CMD3.A;
+ var Q = CMD3.Q;
+ for (i = 0, j = 0; i < len2; ) {
+ cmd = data[i++];
+ j = i;
+ nPoint = 0;
+ switch (cmd) {
+ case M:
+ nPoint = 1;
+ break;
+ case L:
+ nPoint = 1;
+ break;
+ case C:
+ nPoint = 3;
+ break;
+ case Q:
+ nPoint = 2;
+ break;
+ case A:
+ var x = m2[4];
+ var y = m2[5];
+ var sx = mathSqrt2(m2[0] * m2[0] + m2[1] * m2[1]);
+ var sy = mathSqrt2(m2[2] * m2[2] + m2[3] * m2[3]);
+ var angle = mathAtan2(-m2[1] / sy, m2[0] / sx);
+ data[i] *= sx;
+ data[i++] += x;
+ data[i] *= sy;
+ data[i++] += y;
+ data[i++] *= sx;
+ data[i++] *= sy;
+ data[i++] += angle;
+ data[i++] += angle;
+ i += 2;
+ j = i;
+ break;
+ case R:
+ p[0] = data[i++];
+ p[1] = data[i++];
+ applyTransform(p, p, m2);
+ data[j++] = p[0];
+ data[j++] = p[1];
+ p[0] += data[i++];
+ p[1] += data[i++];
+ applyTransform(p, p, m2);
+ data[j++] = p[0];
+ data[j++] = p[1];
+ }
+ for (k = 0; k < nPoint; k++) {
+ var p_1 = points[k];
+ p_1[0] = data[i++];
+ p_1[1] = data[i++];
+ applyTransform(p_1, p_1, m2);
+ data[j++] = p_1[0];
+ data[j++] = p_1[1];
+ }
+ }
+ path.increaseVersion();
+}
+
+// node_modules/zrender/lib/tool/path.js
+var mathSqrt3 = Math.sqrt;
+var mathSin3 = Math.sin;
+var mathCos3 = Math.cos;
+var PI3 = Math.PI;
+function vMag(v) {
+ return Math.sqrt(v[0] * v[0] + v[1] * v[1]);
+}
+function vRatio(u, v) {
+ return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));
+}
+function vAngle(u, v) {
+ return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));
+}
+function processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {
+ var psi = psiDeg * (PI3 / 180);
+ var xp = mathCos3(psi) * (x1 - x2) / 2 + mathSin3(psi) * (y1 - y2) / 2;
+ var yp = -1 * mathSin3(psi) * (x1 - x2) / 2 + mathCos3(psi) * (y1 - y2) / 2;
+ var lambda = xp * xp / (rx * rx) + yp * yp / (ry * ry);
+ if (lambda > 1) {
+ rx *= mathSqrt3(lambda);
+ ry *= mathSqrt3(lambda);
+ }
+ var f = (fa === fs ? -1 : 1) * mathSqrt3((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) / (rx * rx * (yp * yp) + ry * ry * (xp * xp))) || 0;
+ var cxp = f * rx * yp / ry;
+ var cyp = f * -ry * xp / rx;
+ var cx = (x1 + x2) / 2 + mathCos3(psi) * cxp - mathSin3(psi) * cyp;
+ var cy = (y1 + y2) / 2 + mathSin3(psi) * cxp + mathCos3(psi) * cyp;
+ var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);
+ var u = [(xp - cxp) / rx, (yp - cyp) / ry];
+ var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];
+ var dTheta = vAngle(u, v);
+ if (vRatio(u, v) <= -1) {
+ dTheta = PI3;
+ }
+ if (vRatio(u, v) >= 1) {
+ dTheta = 0;
+ }
+ if (dTheta < 0) {
+ var n = Math.round(dTheta / PI3 * 1e6) / 1e6;
+ dTheta = PI3 * 2 + n % 2 * PI3;
+ }
+ path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);
+}
+var commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;
+var numberReg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
+function createPathProxyFromString(data) {
+ var path = new PathProxy_default();
+ if (!data) {
+ return path;
+ }
+ var cpx = 0;
+ var cpy = 0;
+ var subpathX = cpx;
+ var subpathY = cpy;
+ var prevCmd;
+ var CMD6 = PathProxy_default.CMD;
+ var cmdList = data.match(commandReg);
+ if (!cmdList) {
+ return path;
+ }
+ for (var l = 0; l < cmdList.length; l++) {
+ var cmdText = cmdList[l];
+ var cmdStr = cmdText.charAt(0);
+ var cmd = void 0;
+ var p = cmdText.match(numberReg) || [];
+ var pLen = p.length;
+ for (var i = 0; i < pLen; i++) {
+ p[i] = parseFloat(p[i]);
+ }
+ var off = 0;
+ while (off < pLen) {
+ var ctlPtx = void 0;
+ var ctlPty = void 0;
+ var rx = void 0;
+ var ry = void 0;
+ var psi = void 0;
+ var fa = void 0;
+ var fs = void 0;
+ var x1 = cpx;
+ var y1 = cpy;
+ var len2 = void 0;
+ var pathData = void 0;
+ switch (cmdStr) {
+ case "l":
+ cpx += p[off++];
+ cpy += p[off++];
+ cmd = CMD6.L;
+ path.addData(cmd, cpx, cpy);
+ break;
+ case "L":
+ cpx = p[off++];
+ cpy = p[off++];
+ cmd = CMD6.L;
+ path.addData(cmd, cpx, cpy);
+ break;
+ case "m":
+ cpx += p[off++];
+ cpy += p[off++];
+ cmd = CMD6.M;
+ path.addData(cmd, cpx, cpy);
+ subpathX = cpx;
+ subpathY = cpy;
+ cmdStr = "l";
+ break;
+ case "M":
+ cpx = p[off++];
+ cpy = p[off++];
+ cmd = CMD6.M;
+ path.addData(cmd, cpx, cpy);
+ subpathX = cpx;
+ subpathY = cpy;
+ cmdStr = "L";
+ break;
+ case "h":
+ cpx += p[off++];
+ cmd = CMD6.L;
+ path.addData(cmd, cpx, cpy);
+ break;
+ case "H":
+ cpx = p[off++];
+ cmd = CMD6.L;
+ path.addData(cmd, cpx, cpy);
+ break;
+ case "v":
+ cpy += p[off++];
+ cmd = CMD6.L;
+ path.addData(cmd, cpx, cpy);
+ break;
+ case "V":
+ cpy = p[off++];
+ cmd = CMD6.L;
+ path.addData(cmd, cpx, cpy);
+ break;
+ case "C":
+ cmd = CMD6.C;
+ path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);
+ cpx = p[off - 2];
+ cpy = p[off - 1];
+ break;
+ case "c":
+ cmd = CMD6.C;
+ path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);
+ cpx += p[off - 2];
+ cpy += p[off - 1];
+ break;
+ case "S":
+ ctlPtx = cpx;
+ ctlPty = cpy;
+ len2 = path.len();
+ pathData = path.data;
+ if (prevCmd === CMD6.C) {
+ ctlPtx += cpx - pathData[len2 - 4];
+ ctlPty += cpy - pathData[len2 - 3];
+ }
+ cmd = CMD6.C;
+ x1 = p[off++];
+ y1 = p[off++];
+ cpx = p[off++];
+ cpy = p[off++];
+ path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);
+ break;
+ case "s":
+ ctlPtx = cpx;
+ ctlPty = cpy;
+ len2 = path.len();
+ pathData = path.data;
+ if (prevCmd === CMD6.C) {
+ ctlPtx += cpx - pathData[len2 - 4];
+ ctlPty += cpy - pathData[len2 - 3];
+ }
+ cmd = CMD6.C;
+ x1 = cpx + p[off++];
+ y1 = cpy + p[off++];
+ cpx += p[off++];
+ cpy += p[off++];
+ path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);
+ break;
+ case "Q":
+ x1 = p[off++];
+ y1 = p[off++];
+ cpx = p[off++];
+ cpy = p[off++];
+ cmd = CMD6.Q;
+ path.addData(cmd, x1, y1, cpx, cpy);
+ break;
+ case "q":
+ x1 = p[off++] + cpx;
+ y1 = p[off++] + cpy;
+ cpx += p[off++];
+ cpy += p[off++];
+ cmd = CMD6.Q;
+ path.addData(cmd, x1, y1, cpx, cpy);
+ break;
+ case "T":
+ ctlPtx = cpx;
+ ctlPty = cpy;
+ len2 = path.len();
+ pathData = path.data;
+ if (prevCmd === CMD6.Q) {
+ ctlPtx += cpx - pathData[len2 - 4];
+ ctlPty += cpy - pathData[len2 - 3];
+ }
+ cpx = p[off++];
+ cpy = p[off++];
+ cmd = CMD6.Q;
+ path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);
+ break;
+ case "t":
+ ctlPtx = cpx;
+ ctlPty = cpy;
+ len2 = path.len();
+ pathData = path.data;
+ if (prevCmd === CMD6.Q) {
+ ctlPtx += cpx - pathData[len2 - 4];
+ ctlPty += cpy - pathData[len2 - 3];
+ }
+ cpx += p[off++];
+ cpy += p[off++];
+ cmd = CMD6.Q;
+ path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);
+ break;
+ case "A":
+ rx = p[off++];
+ ry = p[off++];
+ psi = p[off++];
+ fa = p[off++];
+ fs = p[off++];
+ x1 = cpx, y1 = cpy;
+ cpx = p[off++];
+ cpy = p[off++];
+ cmd = CMD6.A;
+ processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);
+ break;
+ case "a":
+ rx = p[off++];
+ ry = p[off++];
+ psi = p[off++];
+ fa = p[off++];
+ fs = p[off++];
+ x1 = cpx, y1 = cpy;
+ cpx += p[off++];
+ cpy += p[off++];
+ cmd = CMD6.A;
+ processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);
+ break;
+ }
+ }
+ if (cmdStr === "z" || cmdStr === "Z") {
+ cmd = CMD6.Z;
+ path.addData(cmd);
+ cpx = subpathX;
+ cpy = subpathY;
+ }
+ prevCmd = cmd;
+ }
+ path.toStatic();
+ return path;
+}
+var SVGPath = function(_super) {
+ __extends(SVGPath2, _super);
+ function SVGPath2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ SVGPath2.prototype.applyTransform = function(m2) {
+ };
+ return SVGPath2;
+}(Path_default);
+function isPathProxy(path) {
+ return path.setData != null;
+}
+function createPathOptions(str, opts) {
+ var pathProxy = createPathProxyFromString(str);
+ var innerOpts = extend({}, opts);
+ innerOpts.buildPath = function(path) {
+ if (isPathProxy(path)) {
+ path.setData(pathProxy.data);
+ var ctx = path.getContext();
+ if (ctx) {
+ path.rebuildPath(ctx, 1);
+ }
+ } else {
+ var ctx = path;
+ pathProxy.rebuildPath(ctx, 1);
+ }
+ };
+ innerOpts.applyTransform = function(m2) {
+ transformPath(pathProxy, m2);
+ this.dirtyShape();
+ };
+ return innerOpts;
+}
+function createFromString(str, opts) {
+ return new SVGPath(createPathOptions(str, opts));
+}
+function extendFromString(str, defaultOpts) {
+ var innerOpts = createPathOptions(str, defaultOpts);
+ var Sub = function(_super) {
+ __extends(Sub2, _super);
+ function Sub2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.applyTransform = innerOpts.applyTransform;
+ _this.buildPath = innerOpts.buildPath;
+ return _this;
+ }
+ return Sub2;
+ }(SVGPath);
+ return Sub;
+}
+function mergePath(pathEls, opts) {
+ var pathList = [];
+ var len2 = pathEls.length;
+ for (var i = 0; i < len2; i++) {
+ var pathEl = pathEls[i];
+ pathList.push(pathEl.getUpdatedPathProxy(true));
+ }
+ var pathBundle = new Path_default(opts);
+ pathBundle.createPathProxy();
+ pathBundle.buildPath = function(path) {
+ if (isPathProxy(path)) {
+ path.appendPath(pathList);
+ var ctx = path.getContext();
+ if (ctx) {
+ path.rebuildPath(ctx, 1);
+ }
+ }
+ };
+ return pathBundle;
+}
+function clonePath(sourcePath, opts) {
+ opts = opts || {};
+ var path = new Path_default();
+ if (sourcePath.shape) {
+ path.setShape(sourcePath.shape);
+ }
+ path.setStyle(sourcePath.style);
+ if (opts.bakeTransform) {
+ transformPath(path.path, sourcePath.getComputedTransform());
+ } else {
+ if (opts.toLocal) {
+ path.setLocalTransform(sourcePath.getComputedTransform());
+ } else {
+ path.copyTransform(sourcePath);
+ }
+ }
+ path.buildPath = sourcePath.buildPath;
+ path.applyTransform = path.applyTransform;
+ path.z = sourcePath.z;
+ path.z2 = sourcePath.z2;
+ path.zlevel = sourcePath.zlevel;
+ return path;
+}
+
+// node_modules/zrender/lib/graphic/shape/Circle.js
+var CircleShape = function() {
+ function CircleShape2() {
+ this.cx = 0;
+ this.cy = 0;
+ this.r = 0;
+ }
+ return CircleShape2;
+}();
+var Circle = function(_super) {
+ __extends(Circle2, _super);
+ function Circle2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Circle2.prototype.getDefaultShape = function() {
+ return new CircleShape();
+ };
+ Circle2.prototype.buildPath = function(ctx, shape) {
+ ctx.moveTo(shape.cx + shape.r, shape.cy);
+ ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);
+ };
+ return Circle2;
+}(Path_default);
+Circle.prototype.type = "circle";
+var Circle_default = Circle;
+
+// node_modules/zrender/lib/graphic/shape/Ellipse.js
+var EllipseShape = function() {
+ function EllipseShape2() {
+ this.cx = 0;
+ this.cy = 0;
+ this.rx = 0;
+ this.ry = 0;
+ }
+ return EllipseShape2;
+}();
+var Ellipse = function(_super) {
+ __extends(Ellipse2, _super);
+ function Ellipse2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Ellipse2.prototype.getDefaultShape = function() {
+ return new EllipseShape();
+ };
+ Ellipse2.prototype.buildPath = function(ctx, shape) {
+ var k = 0.5522848;
+ var x = shape.cx;
+ var y = shape.cy;
+ var a = shape.rx;
+ var b = shape.ry;
+ var ox = a * k;
+ var oy = b * k;
+ ctx.moveTo(x - a, y);
+ ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);
+ ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);
+ ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);
+ ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);
+ ctx.closePath();
+ };
+ return Ellipse2;
+}(Path_default);
+Ellipse.prototype.type = "ellipse";
+var Ellipse_default = Ellipse;
+
+// node_modules/zrender/lib/graphic/helper/roundSector.js
+var PI4 = Math.PI;
+var PI26 = PI4 * 2;
+var mathSin4 = Math.sin;
+var mathCos4 = Math.cos;
+var mathACos = Math.acos;
+var mathATan2 = Math.atan2;
+var mathAbs2 = Math.abs;
+var mathSqrt4 = Math.sqrt;
+var mathMax4 = Math.max;
+var mathMin4 = Math.min;
+var e = 1e-4;
+function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
+ var dx10 = x1 - x0;
+ var dy10 = y1 - y0;
+ var dx32 = x3 - x2;
+ var dy32 = y3 - y2;
+ var t = dy32 * dx10 - dx32 * dy10;
+ if (t * t < e) {
+ return;
+ }
+ t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t;
+ return [x0 + t * dx10, y0 + t * dy10];
+}
+function computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {
+ var x01 = x0 - x1;
+ var y01 = y0 - y1;
+ var lo = (clockwise ? cr : -cr) / mathSqrt4(x01 * x01 + y01 * y01);
+ var ox = lo * y01;
+ var oy = -lo * x01;
+ var x11 = x0 + ox;
+ var y11 = y0 + oy;
+ var x10 = x1 + ox;
+ var y10 = y1 + oy;
+ var x00 = (x11 + x10) / 2;
+ var y00 = (y11 + y10) / 2;
+ var dx = x10 - x11;
+ var dy = y10 - y11;
+ var d2 = dx * dx + dy * dy;
+ var r = radius - cr;
+ var s = x11 * y10 - x10 * y11;
+ var d = (dy < 0 ? -1 : 1) * mathSqrt4(mathMax4(0, r * r * d2 - s * s));
+ var cx0 = (s * dy - dx * d) / d2;
+ var cy0 = (-s * dx - dy * d) / d2;
+ var cx1 = (s * dy + dx * d) / d2;
+ var cy1 = (-s * dx + dy * d) / d2;
+ var dx0 = cx0 - x00;
+ var dy0 = cy0 - y00;
+ var dx1 = cx1 - x00;
+ var dy1 = cy1 - y00;
+ if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {
+ cx0 = cx1;
+ cy0 = cy1;
+ }
+ return {
+ cx: cx0,
+ cy: cy0,
+ x0: -ox,
+ y0: -oy,
+ x1: cx0 * (radius / r - 1),
+ y1: cy0 * (radius / r - 1)
+ };
+}
+function normalizeCornerRadius(cr) {
+ var arr;
+ if (isArray(cr)) {
+ var len2 = cr.length;
+ if (!len2) {
+ return cr;
+ }
+ if (len2 === 1) {
+ arr = [cr[0], cr[0], 0, 0];
+ } else if (len2 === 2) {
+ arr = [cr[0], cr[0], cr[1], cr[1]];
+ } else if (len2 === 3) {
+ arr = cr.concat(cr[2]);
+ } else {
+ arr = cr;
+ }
+ } else {
+ arr = [cr, cr, cr, cr];
+ }
+ return arr;
+}
+function buildPath2(ctx, shape) {
+ var _a2;
+ var radius = mathMax4(shape.r, 0);
+ var innerRadius = mathMax4(shape.r0 || 0, 0);
+ var hasRadius = radius > 0;
+ var hasInnerRadius = innerRadius > 0;
+ if (!hasRadius && !hasInnerRadius) {
+ return;
+ }
+ if (!hasRadius) {
+ radius = innerRadius;
+ innerRadius = 0;
+ }
+ if (innerRadius > radius) {
+ var tmp = radius;
+ radius = innerRadius;
+ innerRadius = tmp;
+ }
+ var startAngle = shape.startAngle, endAngle = shape.endAngle;
+ if (isNaN(startAngle) || isNaN(endAngle)) {
+ return;
+ }
+ var cx = shape.cx, cy = shape.cy;
+ var clockwise = !!shape.clockwise;
+ var arc = mathAbs2(endAngle - startAngle);
+ var mod = arc > PI26 && arc % PI26;
+ mod > e && (arc = mod);
+ if (!(radius > e)) {
+ ctx.moveTo(cx, cy);
+ } else if (arc > PI26 - e) {
+ ctx.moveTo(cx + radius * mathCos4(startAngle), cy + radius * mathSin4(startAngle));
+ ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);
+ if (innerRadius > e) {
+ ctx.moveTo(cx + innerRadius * mathCos4(endAngle), cy + innerRadius * mathSin4(endAngle));
+ ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);
+ }
+ } else {
+ var icrStart = void 0;
+ var icrEnd = void 0;
+ var ocrStart = void 0;
+ var ocrEnd = void 0;
+ var ocrs = void 0;
+ var ocre = void 0;
+ var icrs = void 0;
+ var icre = void 0;
+ var ocrMax = void 0;
+ var icrMax = void 0;
+ var limitedOcrMax = void 0;
+ var limitedIcrMax = void 0;
+ var xre = void 0;
+ var yre = void 0;
+ var xirs = void 0;
+ var yirs = void 0;
+ var xrs = radius * mathCos4(startAngle);
+ var yrs = radius * mathSin4(startAngle);
+ var xire = innerRadius * mathCos4(endAngle);
+ var yire = innerRadius * mathSin4(endAngle);
+ var hasArc = arc > e;
+ if (hasArc) {
+ var cornerRadius = shape.cornerRadius;
+ if (cornerRadius) {
+ _a2 = normalizeCornerRadius(cornerRadius), icrStart = _a2[0], icrEnd = _a2[1], ocrStart = _a2[2], ocrEnd = _a2[3];
+ }
+ var halfRd = mathAbs2(radius - innerRadius) / 2;
+ ocrs = mathMin4(halfRd, ocrStart);
+ ocre = mathMin4(halfRd, ocrEnd);
+ icrs = mathMin4(halfRd, icrStart);
+ icre = mathMin4(halfRd, icrEnd);
+ limitedOcrMax = ocrMax = mathMax4(ocrs, ocre);
+ limitedIcrMax = icrMax = mathMax4(icrs, icre);
+ if (ocrMax > e || icrMax > e) {
+ xre = radius * mathCos4(endAngle);
+ yre = radius * mathSin4(endAngle);
+ xirs = innerRadius * mathCos4(startAngle);
+ yirs = innerRadius * mathSin4(startAngle);
+ if (arc < PI4) {
+ var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);
+ if (it_1) {
+ var x0 = xrs - it_1[0];
+ var y0 = yrs - it_1[1];
+ var x1 = xre - it_1[0];
+ var y1 = yre - it_1[1];
+ var a = 1 / mathSin4(mathACos((x0 * x1 + y0 * y1) / (mathSqrt4(x0 * x0 + y0 * y0) * mathSqrt4(x1 * x1 + y1 * y1))) / 2);
+ var b = mathSqrt4(it_1[0] * it_1[0] + it_1[1] * it_1[1]);
+ limitedOcrMax = mathMin4(ocrMax, (radius - b) / (a + 1));
+ limitedIcrMax = mathMin4(icrMax, (innerRadius - b) / (a - 1));
+ }
+ }
+ }
+ }
+ if (!hasArc) {
+ ctx.moveTo(cx + xrs, cy + yrs);
+ } else if (limitedOcrMax > e) {
+ var crStart = mathMin4(ocrStart, limitedOcrMax);
+ var crEnd = mathMin4(ocrEnd, limitedOcrMax);
+ var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, crStart, clockwise);
+ var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, crEnd, clockwise);
+ ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);
+ if (limitedOcrMax < ocrMax && crStart === crEnd) {
+ ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);
+ } else {
+ crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);
+ ctx.arc(cx, cy, radius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise);
+ crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);
+ }
+ } else {
+ ctx.moveTo(cx + xrs, cy + yrs);
+ ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);
+ }
+ if (!(innerRadius > e) || !hasArc) {
+ ctx.lineTo(cx + xire, cy + yire);
+ } else if (limitedIcrMax > e) {
+ var crStart = mathMin4(icrStart, limitedIcrMax);
+ var crEnd = mathMin4(icrEnd, limitedIcrMax);
+ var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise);
+ var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise);
+ ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);
+ if (limitedIcrMax < icrMax && crStart === crEnd) {
+ ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);
+ } else {
+ crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);
+ ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise);
+ crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);
+ }
+ } else {
+ ctx.lineTo(cx + xire, cy + yire);
+ ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);
+ }
+ }
+ ctx.closePath();
+}
+
+// node_modules/zrender/lib/graphic/shape/Sector.js
+var SectorShape = function() {
+ function SectorShape2() {
+ this.cx = 0;
+ this.cy = 0;
+ this.r0 = 0;
+ this.r = 0;
+ this.startAngle = 0;
+ this.endAngle = Math.PI * 2;
+ this.clockwise = true;
+ this.cornerRadius = 0;
+ }
+ return SectorShape2;
+}();
+var Sector = function(_super) {
+ __extends(Sector2, _super);
+ function Sector2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Sector2.prototype.getDefaultShape = function() {
+ return new SectorShape();
+ };
+ Sector2.prototype.buildPath = function(ctx, shape) {
+ buildPath2(ctx, shape);
+ };
+ Sector2.prototype.isZeroArea = function() {
+ return this.shape.startAngle === this.shape.endAngle || this.shape.r === this.shape.r0;
+ };
+ return Sector2;
+}(Path_default);
+Sector.prototype.type = "sector";
+var Sector_default = Sector;
+
+// node_modules/zrender/lib/graphic/shape/Ring.js
+var RingShape = function() {
+ function RingShape2() {
+ this.cx = 0;
+ this.cy = 0;
+ this.r = 0;
+ this.r0 = 0;
+ }
+ return RingShape2;
+}();
+var Ring = function(_super) {
+ __extends(Ring2, _super);
+ function Ring2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Ring2.prototype.getDefaultShape = function() {
+ return new RingShape();
+ };
+ Ring2.prototype.buildPath = function(ctx, shape) {
+ var x = shape.cx;
+ var y = shape.cy;
+ var PI210 = Math.PI * 2;
+ ctx.moveTo(x + shape.r, y);
+ ctx.arc(x, y, shape.r, 0, PI210, false);
+ ctx.moveTo(x + shape.r0, y);
+ ctx.arc(x, y, shape.r0, 0, PI210, true);
+ };
+ return Ring2;
+}(Path_default);
+Ring.prototype.type = "ring";
+var Ring_default = Ring;
+
+// node_modules/zrender/lib/graphic/helper/smoothBezier.js
+function smoothBezier(points4, smooth, isLoop, constraint) {
+ var cps = [];
+ var v = [];
+ var v12 = [];
+ var v22 = [];
+ var prevPoint;
+ var nextPoint;
+ var min3;
+ var max3;
+ if (constraint) {
+ min3 = [Infinity, Infinity];
+ max3 = [-Infinity, -Infinity];
+ for (var i = 0, len2 = points4.length; i < len2; i++) {
+ min(min3, min3, points4[i]);
+ max(max3, max3, points4[i]);
+ }
+ min(min3, min3, constraint[0]);
+ max(max3, max3, constraint[1]);
+ }
+ for (var i = 0, len2 = points4.length; i < len2; i++) {
+ var point = points4[i];
+ if (isLoop) {
+ prevPoint = points4[i ? i - 1 : len2 - 1];
+ nextPoint = points4[(i + 1) % len2];
+ } else {
+ if (i === 0 || i === len2 - 1) {
+ cps.push(clone2(points4[i]));
+ continue;
+ } else {
+ prevPoint = points4[i - 1];
+ nextPoint = points4[i + 1];
+ }
+ }
+ sub(v, nextPoint, prevPoint);
+ scale(v, v, smooth);
+ var d0 = distance(point, prevPoint);
+ var d1 = distance(point, nextPoint);
+ var sum2 = d0 + d1;
+ if (sum2 !== 0) {
+ d0 /= sum2;
+ d1 /= sum2;
+ }
+ scale(v12, v, -d0);
+ scale(v22, v, d1);
+ var cp0 = add([], point, v12);
+ var cp1 = add([], point, v22);
+ if (constraint) {
+ max(cp0, cp0, min3);
+ min(cp0, cp0, max3);
+ max(cp1, cp1, min3);
+ min(cp1, cp1, max3);
+ }
+ cps.push(cp0);
+ cps.push(cp1);
+ }
+ if (isLoop) {
+ cps.push(cps.shift());
+ }
+ return cps;
+}
+
+// node_modules/zrender/lib/graphic/helper/poly.js
+function buildPath3(ctx, shape, closePath) {
+ var smooth = shape.smooth;
+ var points4 = shape.points;
+ if (points4 && points4.length >= 2) {
+ if (smooth) {
+ var controlPoints = smoothBezier(points4, smooth, closePath, shape.smoothConstraint);
+ ctx.moveTo(points4[0][0], points4[0][1]);
+ var len2 = points4.length;
+ for (var i = 0; i < (closePath ? len2 : len2 - 1); i++) {
+ var cp1 = controlPoints[i * 2];
+ var cp2 = controlPoints[i * 2 + 1];
+ var p = points4[(i + 1) % len2];
+ ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);
+ }
+ } else {
+ ctx.moveTo(points4[0][0], points4[0][1]);
+ for (var i = 1, l = points4.length; i < l; i++) {
+ ctx.lineTo(points4[i][0], points4[i][1]);
+ }
+ }
+ closePath && ctx.closePath();
+ }
+}
+
+// node_modules/zrender/lib/graphic/shape/Polygon.js
+var PolygonShape = function() {
+ function PolygonShape2() {
+ this.points = null;
+ this.smooth = 0;
+ this.smoothConstraint = null;
+ }
+ return PolygonShape2;
+}();
+var Polygon = function(_super) {
+ __extends(Polygon2, _super);
+ function Polygon2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Polygon2.prototype.getDefaultShape = function() {
+ return new PolygonShape();
+ };
+ Polygon2.prototype.buildPath = function(ctx, shape) {
+ buildPath3(ctx, shape, true);
+ };
+ return Polygon2;
+}(Path_default);
+Polygon.prototype.type = "polygon";
+var Polygon_default = Polygon;
+
+// node_modules/zrender/lib/graphic/shape/Polyline.js
+var PolylineShape = function() {
+ function PolylineShape2() {
+ this.points = null;
+ this.percent = 1;
+ this.smooth = 0;
+ this.smoothConstraint = null;
+ }
+ return PolylineShape2;
+}();
+var Polyline = function(_super) {
+ __extends(Polyline3, _super);
+ function Polyline3(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Polyline3.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ Polyline3.prototype.getDefaultShape = function() {
+ return new PolylineShape();
+ };
+ Polyline3.prototype.buildPath = function(ctx, shape) {
+ buildPath3(ctx, shape, false);
+ };
+ return Polyline3;
+}(Path_default);
+Polyline.prototype.type = "polyline";
+var Polyline_default = Polyline;
+
+// node_modules/zrender/lib/graphic/shape/Line.js
+var subPixelOptimizeOutputShape2 = {};
+var LineShape = function() {
+ function LineShape2() {
+ this.x1 = 0;
+ this.y1 = 0;
+ this.x2 = 0;
+ this.y2 = 0;
+ this.percent = 1;
+ }
+ return LineShape2;
+}();
+var Line = function(_super) {
+ __extends(Line3, _super);
+ function Line3(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Line3.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ Line3.prototype.getDefaultShape = function() {
+ return new LineShape();
+ };
+ Line3.prototype.buildPath = function(ctx, shape) {
+ var x1;
+ var y1;
+ var x2;
+ var y2;
+ if (this.subPixelOptimize) {
+ var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape2, shape, this.style);
+ x1 = optimizedShape.x1;
+ y1 = optimizedShape.y1;
+ x2 = optimizedShape.x2;
+ y2 = optimizedShape.y2;
+ } else {
+ x1 = shape.x1;
+ y1 = shape.y1;
+ x2 = shape.x2;
+ y2 = shape.y2;
+ }
+ var percent = shape.percent;
+ if (percent === 0) {
+ return;
+ }
+ ctx.moveTo(x1, y1);
+ if (percent < 1) {
+ x2 = x1 * (1 - percent) + x2 * percent;
+ y2 = y1 * (1 - percent) + y2 * percent;
+ }
+ ctx.lineTo(x2, y2);
+ };
+ Line3.prototype.pointAt = function(p) {
+ var shape = this.shape;
+ return [
+ shape.x1 * (1 - p) + shape.x2 * p,
+ shape.y1 * (1 - p) + shape.y2 * p
+ ];
+ };
+ return Line3;
+}(Path_default);
+Line.prototype.type = "line";
+var Line_default = Line;
+
+// node_modules/zrender/lib/graphic/shape/BezierCurve.js
+var out = [];
+var BezierCurveShape = function() {
+ function BezierCurveShape2() {
+ this.x1 = 0;
+ this.y1 = 0;
+ this.x2 = 0;
+ this.y2 = 0;
+ this.cpx1 = 0;
+ this.cpy1 = 0;
+ this.percent = 1;
+ }
+ return BezierCurveShape2;
+}();
+function someVectorAt(shape, t, isTangent) {
+ var cpx2 = shape.cpx2;
+ var cpy2 = shape.cpy2;
+ if (cpx2 != null || cpy2 != null) {
+ return [
+ (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),
+ (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)
+ ];
+ } else {
+ return [
+ (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),
+ (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)
+ ];
+ }
+}
+var BezierCurve = function(_super) {
+ __extends(BezierCurve2, _super);
+ function BezierCurve2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ BezierCurve2.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ BezierCurve2.prototype.getDefaultShape = function() {
+ return new BezierCurveShape();
+ };
+ BezierCurve2.prototype.buildPath = function(ctx, shape) {
+ var x1 = shape.x1;
+ var y1 = shape.y1;
+ var x2 = shape.x2;
+ var y2 = shape.y2;
+ var cpx1 = shape.cpx1;
+ var cpy1 = shape.cpy1;
+ var cpx2 = shape.cpx2;
+ var cpy2 = shape.cpy2;
+ var percent = shape.percent;
+ if (percent === 0) {
+ return;
+ }
+ ctx.moveTo(x1, y1);
+ if (cpx2 == null || cpy2 == null) {
+ if (percent < 1) {
+ quadraticSubdivide(x1, cpx1, x2, percent, out);
+ cpx1 = out[1];
+ x2 = out[2];
+ quadraticSubdivide(y1, cpy1, y2, percent, out);
+ cpy1 = out[1];
+ y2 = out[2];
+ }
+ ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);
+ } else {
+ if (percent < 1) {
+ cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);
+ cpx1 = out[1];
+ cpx2 = out[2];
+ x2 = out[3];
+ cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);
+ cpy1 = out[1];
+ cpy2 = out[2];
+ y2 = out[3];
+ }
+ ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);
+ }
+ };
+ BezierCurve2.prototype.pointAt = function(t) {
+ return someVectorAt(this.shape, t, false);
+ };
+ BezierCurve2.prototype.tangentAt = function(t) {
+ var p = someVectorAt(this.shape, t, true);
+ return normalize(p, p);
+ };
+ return BezierCurve2;
+}(Path_default);
+BezierCurve.prototype.type = "bezier-curve";
+var BezierCurve_default = BezierCurve;
+
+// node_modules/zrender/lib/graphic/shape/Arc.js
+var ArcShape = function() {
+ function ArcShape2() {
+ this.cx = 0;
+ this.cy = 0;
+ this.r = 0;
+ this.startAngle = 0;
+ this.endAngle = Math.PI * 2;
+ this.clockwise = true;
+ }
+ return ArcShape2;
+}();
+var Arc = function(_super) {
+ __extends(Arc2, _super);
+ function Arc2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ Arc2.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ Arc2.prototype.getDefaultShape = function() {
+ return new ArcShape();
+ };
+ Arc2.prototype.buildPath = function(ctx, shape) {
+ var x = shape.cx;
+ var y = shape.cy;
+ var r = Math.max(shape.r, 0);
+ var startAngle = shape.startAngle;
+ var endAngle = shape.endAngle;
+ var clockwise = shape.clockwise;
+ var unitX = Math.cos(startAngle);
+ var unitY = Math.sin(startAngle);
+ ctx.moveTo(unitX * r + x, unitY * r + y);
+ ctx.arc(x, y, r, startAngle, endAngle, !clockwise);
+ };
+ return Arc2;
+}(Path_default);
+Arc.prototype.type = "arc";
+var Arc_default = Arc;
+
+// node_modules/zrender/lib/graphic/CompoundPath.js
+var CompoundPath = function(_super) {
+ __extends(CompoundPath2, _super);
+ function CompoundPath2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "compound";
+ return _this;
+ }
+ CompoundPath2.prototype._updatePathDirty = function() {
+ var paths = this.shape.paths;
+ var dirtyPath = this.shapeChanged();
+ for (var i = 0; i < paths.length; i++) {
+ dirtyPath = dirtyPath || paths[i].shapeChanged();
+ }
+ if (dirtyPath) {
+ this.dirtyShape();
+ }
+ };
+ CompoundPath2.prototype.beforeBrush = function() {
+ this._updatePathDirty();
+ var paths = this.shape.paths || [];
+ var scale4 = this.getGlobalScale();
+ for (var i = 0; i < paths.length; i++) {
+ if (!paths[i].path) {
+ paths[i].createPathProxy();
+ }
+ paths[i].path.setScale(scale4[0], scale4[1], paths[i].segmentIgnoreThreshold);
+ }
+ };
+ CompoundPath2.prototype.buildPath = function(ctx, shape) {
+ var paths = shape.paths || [];
+ for (var i = 0; i < paths.length; i++) {
+ paths[i].buildPath(ctx, paths[i].shape, true);
+ }
+ };
+ CompoundPath2.prototype.afterBrush = function() {
+ var paths = this.shape.paths || [];
+ for (var i = 0; i < paths.length; i++) {
+ paths[i].pathUpdated();
+ }
+ };
+ CompoundPath2.prototype.getBoundingRect = function() {
+ this._updatePathDirty.call(this);
+ return Path_default.prototype.getBoundingRect.call(this);
+ };
+ return CompoundPath2;
+}(Path_default);
+var CompoundPath_default = CompoundPath;
+
+// node_modules/zrender/lib/graphic/Gradient.js
+var Gradient = function() {
+ function Gradient2(colorStops) {
+ this.colorStops = colorStops || [];
+ }
+ Gradient2.prototype.addColorStop = function(offset, color) {
+ this.colorStops.push({
+ offset,
+ color
+ });
+ };
+ return Gradient2;
+}();
+var Gradient_default = Gradient;
+
+// node_modules/zrender/lib/graphic/LinearGradient.js
+var LinearGradient = function(_super) {
+ __extends(LinearGradient2, _super);
+ function LinearGradient2(x, y, x2, y2, colorStops, globalCoord) {
+ var _this = _super.call(this, colorStops) || this;
+ _this.x = x == null ? 0 : x;
+ _this.y = y == null ? 0 : y;
+ _this.x2 = x2 == null ? 1 : x2;
+ _this.y2 = y2 == null ? 0 : y2;
+ _this.type = "linear";
+ _this.global = globalCoord || false;
+ return _this;
+ }
+ return LinearGradient2;
+}(Gradient_default);
+var LinearGradient_default = LinearGradient;
+
+// node_modules/zrender/lib/graphic/RadialGradient.js
+var RadialGradient = function(_super) {
+ __extends(RadialGradient2, _super);
+ function RadialGradient2(x, y, r, colorStops, globalCoord) {
+ var _this = _super.call(this, colorStops) || this;
+ _this.x = x == null ? 0.5 : x;
+ _this.y = y == null ? 0.5 : y;
+ _this.r = r == null ? 0.5 : r;
+ _this.type = "radial";
+ _this.global = globalCoord || false;
+ return _this;
+ }
+ return RadialGradient2;
+}(Gradient_default);
+var RadialGradient_default = RadialGradient;
+
+// node_modules/zrender/lib/core/OrientedBoundingRect.js
+var extent = [0, 0];
+var extent2 = [0, 0];
+var minTv2 = new Point_default();
+var maxTv2 = new Point_default();
+var OrientedBoundingRect = function() {
+ function OrientedBoundingRect2(rect, transform2) {
+ this._corners = [];
+ this._axes = [];
+ this._origin = [0, 0];
+ for (var i = 0; i < 4; i++) {
+ this._corners[i] = new Point_default();
+ }
+ for (var i = 0; i < 2; i++) {
+ this._axes[i] = new Point_default();
+ }
+ if (rect) {
+ this.fromBoundingRect(rect, transform2);
+ }
+ }
+ OrientedBoundingRect2.prototype.fromBoundingRect = function(rect, transform2) {
+ var corners = this._corners;
+ var axes = this._axes;
+ var x = rect.x;
+ var y = rect.y;
+ var x2 = x + rect.width;
+ var y2 = y + rect.height;
+ corners[0].set(x, y);
+ corners[1].set(x2, y);
+ corners[2].set(x2, y2);
+ corners[3].set(x, y2);
+ if (transform2) {
+ for (var i = 0; i < 4; i++) {
+ corners[i].transform(transform2);
+ }
+ }
+ Point_default.sub(axes[0], corners[1], corners[0]);
+ Point_default.sub(axes[1], corners[3], corners[0]);
+ axes[0].normalize();
+ axes[1].normalize();
+ for (var i = 0; i < 2; i++) {
+ this._origin[i] = axes[i].dot(corners[0]);
+ }
+ };
+ OrientedBoundingRect2.prototype.intersect = function(other, mtv) {
+ var overlapped = true;
+ var noMtv = !mtv;
+ minTv2.set(Infinity, Infinity);
+ maxTv2.set(0, 0);
+ if (!this._intersectCheckOneSide(this, other, minTv2, maxTv2, noMtv, 1)) {
+ overlapped = false;
+ if (noMtv) {
+ return overlapped;
+ }
+ }
+ if (!this._intersectCheckOneSide(other, this, minTv2, maxTv2, noMtv, -1)) {
+ overlapped = false;
+ if (noMtv) {
+ return overlapped;
+ }
+ }
+ if (!noMtv) {
+ Point_default.copy(mtv, overlapped ? minTv2 : maxTv2);
+ }
+ return overlapped;
+ };
+ OrientedBoundingRect2.prototype._intersectCheckOneSide = function(self2, other, minTv3, maxTv3, noMtv, inverse) {
+ var overlapped = true;
+ for (var i = 0; i < 2; i++) {
+ var axis = this._axes[i];
+ this._getProjMinMaxOnAxis(i, self2._corners, extent);
+ this._getProjMinMaxOnAxis(i, other._corners, extent2);
+ if (extent[1] < extent2[0] || extent[0] > extent2[1]) {
+ overlapped = false;
+ if (noMtv) {
+ return overlapped;
+ }
+ var dist0 = Math.abs(extent2[0] - extent[1]);
+ var dist1 = Math.abs(extent[0] - extent2[1]);
+ if (Math.min(dist0, dist1) > maxTv3.len()) {
+ if (dist0 < dist1) {
+ Point_default.scale(maxTv3, axis, -dist0 * inverse);
+ } else {
+ Point_default.scale(maxTv3, axis, dist1 * inverse);
+ }
+ }
+ } else if (minTv3) {
+ var dist0 = Math.abs(extent2[0] - extent[1]);
+ var dist1 = Math.abs(extent[0] - extent2[1]);
+ if (Math.min(dist0, dist1) < minTv3.len()) {
+ if (dist0 < dist1) {
+ Point_default.scale(minTv3, axis, dist0 * inverse);
+ } else {
+ Point_default.scale(minTv3, axis, -dist1 * inverse);
+ }
+ }
+ }
+ }
+ return overlapped;
+ };
+ OrientedBoundingRect2.prototype._getProjMinMaxOnAxis = function(dim, corners, out2) {
+ var axis = this._axes[dim];
+ var origin = this._origin;
+ var proj = corners[0].dot(axis) + origin[dim];
+ var min3 = proj;
+ var max3 = proj;
+ for (var i = 1; i < corners.length; i++) {
+ var proj_1 = corners[i].dot(axis) + origin[dim];
+ min3 = Math.min(proj_1, min3);
+ max3 = Math.max(proj_1, max3);
+ }
+ out2[0] = min3;
+ out2[1] = max3;
+ };
+ return OrientedBoundingRect2;
+}();
+var OrientedBoundingRect_default = OrientedBoundingRect;
+
+// node_modules/zrender/lib/graphic/IncrementalDisplayable.js
+var m = [];
+var IncrementalDisplayable = function(_super) {
+ __extends(IncrementalDisplayable2, _super);
+ function IncrementalDisplayable2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.notClear = true;
+ _this.incremental = true;
+ _this._displayables = [];
+ _this._temporaryDisplayables = [];
+ _this._cursor = 0;
+ return _this;
+ }
+ IncrementalDisplayable2.prototype.traverse = function(cb, context) {
+ cb.call(context, this);
+ };
+ IncrementalDisplayable2.prototype.useStyle = function() {
+ this.style = {};
+ };
+ IncrementalDisplayable2.prototype.getCursor = function() {
+ return this._cursor;
+ };
+ IncrementalDisplayable2.prototype.innerAfterBrush = function() {
+ this._cursor = this._displayables.length;
+ };
+ IncrementalDisplayable2.prototype.clearDisplaybles = function() {
+ this._displayables = [];
+ this._temporaryDisplayables = [];
+ this._cursor = 0;
+ this.markRedraw();
+ this.notClear = false;
+ };
+ IncrementalDisplayable2.prototype.clearTemporalDisplayables = function() {
+ this._temporaryDisplayables = [];
+ };
+ IncrementalDisplayable2.prototype.addDisplayable = function(displayable, notPersistent) {
+ if (notPersistent) {
+ this._temporaryDisplayables.push(displayable);
+ } else {
+ this._displayables.push(displayable);
+ }
+ this.markRedraw();
+ };
+ IncrementalDisplayable2.prototype.addDisplayables = function(displayables, notPersistent) {
+ notPersistent = notPersistent || false;
+ for (var i = 0; i < displayables.length; i++) {
+ this.addDisplayable(displayables[i], notPersistent);
+ }
+ };
+ IncrementalDisplayable2.prototype.getDisplayables = function() {
+ return this._displayables;
+ };
+ IncrementalDisplayable2.prototype.getTemporalDisplayables = function() {
+ return this._temporaryDisplayables;
+ };
+ IncrementalDisplayable2.prototype.eachPendingDisplayable = function(cb) {
+ for (var i = this._cursor; i < this._displayables.length; i++) {
+ cb && cb(this._displayables[i]);
+ }
+ for (var i = 0; i < this._temporaryDisplayables.length; i++) {
+ cb && cb(this._temporaryDisplayables[i]);
+ }
+ };
+ IncrementalDisplayable2.prototype.update = function() {
+ this.updateTransform();
+ for (var i = this._cursor; i < this._displayables.length; i++) {
+ var displayable = this._displayables[i];
+ displayable.parent = this;
+ displayable.update();
+ displayable.parent = null;
+ }
+ for (var i = 0; i < this._temporaryDisplayables.length; i++) {
+ var displayable = this._temporaryDisplayables[i];
+ displayable.parent = this;
+ displayable.update();
+ displayable.parent = null;
+ }
+ };
+ IncrementalDisplayable2.prototype.getBoundingRect = function() {
+ if (!this._rect) {
+ var rect = new BoundingRect_default(Infinity, Infinity, -Infinity, -Infinity);
+ for (var i = 0; i < this._displayables.length; i++) {
+ var displayable = this._displayables[i];
+ var childRect = displayable.getBoundingRect().clone();
+ if (displayable.needLocalTransform()) {
+ childRect.applyTransform(displayable.getLocalTransform(m));
+ }
+ rect.union(childRect);
+ }
+ this._rect = rect;
+ }
+ return this._rect;
+ };
+ IncrementalDisplayable2.prototype.contain = function(x, y) {
+ var localPos = this.transformCoordToLocal(x, y);
+ var rect = this.getBoundingRect();
+ if (rect.contain(localPos[0], localPos[1])) {
+ for (var i = 0; i < this._displayables.length; i++) {
+ var displayable = this._displayables[i];
+ if (displayable.contain(x, y)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+ return IncrementalDisplayable2;
+}(Displayable_default);
+var IncrementalDisplayable_default = IncrementalDisplayable;
+
+// node_modules/echarts/lib/animation/basicTransition.js
+var transitionStore = makeInner();
+function getAnimationConfig(animationType, animatableModel, dataIndex, extraOpts, extraDelayParams) {
+ var animationPayload;
+ if (animatableModel && animatableModel.ecModel) {
+ var updatePayload = animatableModel.ecModel.getUpdatePayload();
+ animationPayload = updatePayload && updatePayload.animation;
+ }
+ var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();
+ var isUpdate = animationType === "update";
+ if (animationEnabled) {
+ var duration = void 0;
+ var easing = void 0;
+ var delay = void 0;
+ if (extraOpts) {
+ duration = retrieve2(extraOpts.duration, 200);
+ easing = retrieve2(extraOpts.easing, "cubicOut");
+ delay = 0;
+ } else {
+ duration = animatableModel.getShallow(isUpdate ? "animationDurationUpdate" : "animationDuration");
+ easing = animatableModel.getShallow(isUpdate ? "animationEasingUpdate" : "animationEasing");
+ delay = animatableModel.getShallow(isUpdate ? "animationDelayUpdate" : "animationDelay");
+ }
+ if (animationPayload) {
+ animationPayload.duration != null && (duration = animationPayload.duration);
+ animationPayload.easing != null && (easing = animationPayload.easing);
+ animationPayload.delay != null && (delay = animationPayload.delay);
+ }
+ if (isFunction(delay)) {
+ delay = delay(dataIndex, extraDelayParams);
+ }
+ if (isFunction(duration)) {
+ duration = duration(dataIndex);
+ }
+ var config = {
+ duration: duration || 0,
+ delay,
+ easing
+ };
+ return config;
+ } else {
+ return null;
+ }
+}
+function animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {
+ var isFrom = false;
+ var removeOpt;
+ if (isFunction(dataIndex)) {
+ during = cb;
+ cb = dataIndex;
+ dataIndex = null;
+ } else if (isObject(dataIndex)) {
+ cb = dataIndex.cb;
+ during = dataIndex.during;
+ isFrom = dataIndex.isFrom;
+ removeOpt = dataIndex.removeOpt;
+ dataIndex = dataIndex.dataIndex;
+ }
+ var isRemove = animationType === "leave";
+ if (!isRemove) {
+ el.stopAnimation("leave");
+ }
+ var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);
+ if (animationConfig && animationConfig.duration > 0) {
+ var duration = animationConfig.duration;
+ var animationDelay = animationConfig.delay;
+ var animationEasing = animationConfig.easing;
+ var animateConfig = {
+ duration,
+ delay: animationDelay || 0,
+ easing: animationEasing,
+ done: cb,
+ force: !!cb || !!during,
+ setToFinal: !isRemove,
+ scope: animationType,
+ during
+ };
+ isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig);
+ } else {
+ el.stopAnimation();
+ !isFrom && el.attr(props);
+ during && during(1);
+ cb && cb();
+ }
+}
+function updateProps(el, props, animatableModel, dataIndex, cb, during) {
+ animateOrSetProps("update", el, props, animatableModel, dataIndex, cb, during);
+}
+function initProps(el, props, animatableModel, dataIndex, cb, during) {
+ animateOrSetProps("enter", el, props, animatableModel, dataIndex, cb, during);
+}
+function isElementRemoved(el) {
+ if (!el.__zr) {
+ return true;
+ }
+ for (var i = 0; i < el.animators.length; i++) {
+ var animator = el.animators[i];
+ if (animator.scope === "leave") {
+ return true;
+ }
+ }
+ return false;
+}
+function removeElement(el, props, animatableModel, dataIndex, cb, during) {
+ if (isElementRemoved(el)) {
+ return;
+ }
+ animateOrSetProps("leave", el, props, animatableModel, dataIndex, cb, during);
+}
+function fadeOutDisplayable(el, animatableModel, dataIndex, done) {
+ el.removeTextContent();
+ el.removeTextGuideLine();
+ removeElement(el, {
+ style: {
+ opacity: 0
+ }
+ }, animatableModel, dataIndex, done);
+}
+function removeElementWithFadeOut(el, animatableModel, dataIndex) {
+ function doRemove() {
+ el.parent && el.parent.remove(el);
+ }
+ if (!el.isGroup) {
+ fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);
+ } else {
+ el.traverse(function(disp) {
+ if (!disp.isGroup) {
+ fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);
+ }
+ });
+ }
+}
+function saveOldStyle(el) {
+ transitionStore(el).oldStyle = el.style;
+}
+function getOldStyle(el) {
+ return transitionStore(el).oldStyle;
+}
+
+// node_modules/echarts/lib/util/graphic.js
+var mathMax5 = Math.max;
+var mathMin5 = Math.min;
+var _customShapeMap = {};
+function extendShape(opts) {
+ return Path_default.extend(opts);
+}
+var extendPathFromString = extendFromString;
+function extendPath(pathData, opts) {
+ return extendPathFromString(pathData, opts);
+}
+function registerShape(name, ShapeClass) {
+ _customShapeMap[name] = ShapeClass;
+}
+function getShapeClass(name) {
+ if (_customShapeMap.hasOwnProperty(name)) {
+ return _customShapeMap[name];
+ }
+}
+function makePath(pathData, opts, rect, layout5) {
+ var path = createFromString(pathData, opts);
+ if (rect) {
+ if (layout5 === "center") {
+ rect = centerGraphic(rect, path.getBoundingRect());
+ }
+ resizePath(path, rect);
+ }
+ return path;
+}
+function makeImage(imageUrl, rect, layout5) {
+ var zrImg = new Image_default({
+ style: {
+ image: imageUrl,
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height
+ },
+ onload: function(img) {
+ if (layout5 === "center") {
+ var boundingRect = {
+ width: img.width,
+ height: img.height
+ };
+ zrImg.setStyle(centerGraphic(rect, boundingRect));
+ }
+ }
+ });
+ return zrImg;
+}
+function centerGraphic(rect, boundingRect) {
+ var aspect = boundingRect.width / boundingRect.height;
+ var width = rect.height * aspect;
+ var height;
+ if (width <= rect.width) {
+ height = rect.height;
+ } else {
+ width = rect.width;
+ height = width / aspect;
+ }
+ var cx = rect.x + rect.width / 2;
+ var cy = rect.y + rect.height / 2;
+ return {
+ x: cx - width / 2,
+ y: cy - height / 2,
+ width,
+ height
+ };
+}
+var mergePath2 = mergePath;
+function resizePath(path, rect) {
+ if (!path.applyTransform) {
+ return;
+ }
+ var pathRect = path.getBoundingRect();
+ var m2 = pathRect.calculateTransform(rect);
+ path.applyTransform(m2);
+}
+function subPixelOptimizeLine2(shape, lineWidth) {
+ subPixelOptimizeLine(shape, shape, {
+ lineWidth
+ });
+ return shape;
+}
+function subPixelOptimizeRect2(param) {
+ subPixelOptimizeRect(param.shape, param.shape, param.style);
+ return param;
+}
+var subPixelOptimize2 = subPixelOptimize;
+function getTransform(target, ancestor) {
+ var mat = identity([]);
+ while (target && target !== ancestor) {
+ mul2(mat, target.getLocalTransform(), mat);
+ target = target.parent;
+ }
+ return mat;
+}
+function applyTransform2(target, transform2, invert2) {
+ if (transform2 && !isArrayLike(transform2)) {
+ transform2 = Transformable_default.getLocalTransform(transform2);
+ }
+ if (invert2) {
+ transform2 = invert([], transform2);
+ }
+ return applyTransform([], target, transform2);
+}
+function transformDirection(direction, transform2, invert2) {
+ var hBase = transform2[4] === 0 || transform2[5] === 0 || transform2[0] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[0]);
+ var vBase = transform2[4] === 0 || transform2[5] === 0 || transform2[2] === 0 ? 1 : Math.abs(2 * transform2[4] / transform2[2]);
+ var vertex = [direction === "left" ? -hBase : direction === "right" ? hBase : 0, direction === "top" ? -vBase : direction === "bottom" ? vBase : 0];
+ vertex = applyTransform2(vertex, transform2, invert2);
+ return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? "right" : "left" : vertex[1] > 0 ? "bottom" : "top";
+}
+function isNotGroup(el) {
+ return !el.isGroup;
+}
+function isPath(el) {
+ return el.shape != null;
+}
+function groupTransition(g1, g2, animatableModel) {
+ if (!g1 || !g2) {
+ return;
+ }
+ function getElMap(g) {
+ var elMap = {};
+ g.traverse(function(el) {
+ if (isNotGroup(el) && el.anid) {
+ elMap[el.anid] = el;
+ }
+ });
+ return elMap;
+ }
+ function getAnimatableProps(el) {
+ var obj = {
+ x: el.x,
+ y: el.y,
+ rotation: el.rotation
+ };
+ if (isPath(el)) {
+ obj.shape = extend({}, el.shape);
+ }
+ return obj;
+ }
+ var elMap1 = getElMap(g1);
+ g2.traverse(function(el) {
+ if (isNotGroup(el) && el.anid) {
+ var oldEl = elMap1[el.anid];
+ if (oldEl) {
+ var newProp = getAnimatableProps(el);
+ el.attr(getAnimatableProps(oldEl));
+ updateProps(el, newProp, animatableModel, getECData(el).dataIndex);
+ }
+ }
+ });
+}
+function clipPointsByRect(points4, rect) {
+ return map(points4, function(point) {
+ var x = point[0];
+ x = mathMax5(x, rect.x);
+ x = mathMin5(x, rect.x + rect.width);
+ var y = point[1];
+ y = mathMax5(y, rect.y);
+ y = mathMin5(y, rect.y + rect.height);
+ return [x, y];
+ });
+}
+function clipRectByRect(targetRect, rect) {
+ var x = mathMax5(targetRect.x, rect.x);
+ var x2 = mathMin5(targetRect.x + targetRect.width, rect.x + rect.width);
+ var y = mathMax5(targetRect.y, rect.y);
+ var y2 = mathMin5(targetRect.y + targetRect.height, rect.y + rect.height);
+ if (x2 >= x && y2 >= y) {
+ return {
+ x,
+ y,
+ width: x2 - x,
+ height: y2 - y
+ };
+ }
+}
+function createIcon(iconStr, opt, rect) {
+ var innerOpts = extend({
+ rectHover: true
+ }, opt);
+ var style = innerOpts.style = {
+ strokeNoScale: true
+ };
+ rect = rect || {
+ x: -1,
+ y: -1,
+ width: 2,
+ height: 2
+ };
+ if (iconStr) {
+ return iconStr.indexOf("image://") === 0 ? (style.image = iconStr.slice(8), defaults(style, rect), new Image_default(innerOpts)) : makePath(iconStr.replace("path://", ""), innerOpts, rect, "center");
+ }
+}
+function linePolygonIntersect(a1x, a1y, a2x, a2y, points4) {
+ for (var i = 0, p2 = points4[points4.length - 1]; i < points4.length; i++) {
+ var p = points4[i];
+ if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {
+ return true;
+ }
+ p2 = p;
+ }
+}
+function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
+ var mx = a2x - a1x;
+ var my = a2y - a1y;
+ var nx = b2x - b1x;
+ var ny = b2y - b1y;
+ var nmCrossProduct = crossProduct2d(nx, ny, mx, my);
+ if (nearZero(nmCrossProduct)) {
+ return false;
+ }
+ var b1a1x = a1x - b1x;
+ var b1a1y = a1y - b1y;
+ var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;
+ if (q < 0 || q > 1) {
+ return false;
+ }
+ var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;
+ if (p < 0 || p > 1) {
+ return false;
+ }
+ return true;
+}
+function crossProduct2d(x1, y1, x2, y2) {
+ return x1 * y2 - x2 * y1;
+}
+function nearZero(val) {
+ return val <= 1e-6 && val >= -1e-6;
+}
+function setTooltipConfig(opt) {
+ var itemTooltipOption = opt.itemTooltipOption;
+ var componentModel = opt.componentModel;
+ var itemName = opt.itemName;
+ var itemTooltipOptionObj = isString(itemTooltipOption) ? {
+ formatter: itemTooltipOption
+ } : itemTooltipOption;
+ var mainType = componentModel.mainType;
+ var componentIndex = componentModel.componentIndex;
+ var formatterParams = {
+ componentType: mainType,
+ name: itemName,
+ $vars: ["name"]
+ };
+ formatterParams[mainType + "Index"] = componentIndex;
+ var formatterParamsExtra = opt.formatterParamsExtra;
+ if (formatterParamsExtra) {
+ each(keys(formatterParamsExtra), function(key) {
+ if (!hasOwn(formatterParams, key)) {
+ formatterParams[key] = formatterParamsExtra[key];
+ formatterParams.$vars.push(key);
+ }
+ });
+ }
+ var ecData = getECData(opt.el);
+ ecData.componentMainType = mainType;
+ ecData.componentIndex = componentIndex;
+ ecData.tooltipConfig = {
+ name: itemName,
+ option: defaults({
+ content: itemName,
+ encodeHTMLContent: true,
+ formatterParams
+ }, itemTooltipOptionObj)
+ };
+}
+function traverseElement(el, cb) {
+ var stopped;
+ if (el.isGroup) {
+ stopped = cb(el);
+ }
+ if (!stopped) {
+ el.traverse(cb);
+ }
+}
+function traverseElements(els, cb) {
+ if (els) {
+ if (isArray(els)) {
+ for (var i = 0; i < els.length; i++) {
+ traverseElement(els[i], cb);
+ }
+ } else {
+ traverseElement(els, cb);
+ }
+ }
+}
+registerShape("circle", Circle_default);
+registerShape("ellipse", Ellipse_default);
+registerShape("sector", Sector_default);
+registerShape("ring", Ring_default);
+registerShape("polygon", Polygon_default);
+registerShape("polyline", Polyline_default);
+registerShape("rect", Rect_default);
+registerShape("line", Line_default);
+registerShape("bezierCurve", BezierCurve_default);
+registerShape("arc", Arc_default);
+
+// node_modules/echarts/lib/label/labelStyle.js
+var EMPTY_OBJ = {};
+function setLabelText(label, labelTexts) {
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ var stateName = SPECIAL_STATES[i];
+ var text = labelTexts[stateName];
+ var state = label.ensureState(stateName);
+ state.style = state.style || {};
+ state.style.text = text;
+ }
+ var oldStates = label.currentStates.slice();
+ label.clearStates(true);
+ label.setStyle({
+ text: labelTexts.normal
+ });
+ label.useStates(oldStates, true);
+}
+function getLabelText(opt, stateModels, interpolatedValue) {
+ var labelFetcher = opt.labelFetcher;
+ var labelDataIndex = opt.labelDataIndex;
+ var labelDimIndex = opt.labelDimIndex;
+ var normalModel = stateModels.normal;
+ var baseText;
+ if (labelFetcher) {
+ baseText = labelFetcher.getFormattedLabel(labelDataIndex, "normal", null, labelDimIndex, normalModel && normalModel.get("formatter"), interpolatedValue != null ? {
+ interpolatedValue
+ } : null);
+ }
+ if (baseText == null) {
+ baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText;
+ }
+ var statesText = {
+ normal: baseText
+ };
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ var stateName = SPECIAL_STATES[i];
+ var stateModel = stateModels[stateName];
+ statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get("formatter")) : null, baseText);
+ }
+ return statesText;
+}
+function setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified) {
+ opt = opt || EMPTY_OBJ;
+ var isSetOnText = targetEl instanceof Text_default;
+ var needsCreateText = false;
+ for (var i = 0; i < DISPLAY_STATES.length; i++) {
+ var stateModel = labelStatesModels[DISPLAY_STATES[i]];
+ if (stateModel && stateModel.getShallow("show")) {
+ needsCreateText = true;
+ break;
+ }
+ }
+ var textContent = isSetOnText ? targetEl : targetEl.getTextContent();
+ if (needsCreateText) {
+ if (!isSetOnText) {
+ if (!textContent) {
+ textContent = new Text_default();
+ targetEl.setTextContent(textContent);
+ }
+ if (targetEl.stateProxy) {
+ textContent.stateProxy = targetEl.stateProxy;
+ }
+ }
+ var labelStatesTexts = getLabelText(opt, labelStatesModels);
+ var normalModel = labelStatesModels.normal;
+ var showNormal = !!normalModel.getShallow("show");
+ var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);
+ normalStyle.text = labelStatesTexts.normal;
+ if (!isSetOnText) {
+ targetEl.setTextConfig(createTextConfig(normalModel, opt, false));
+ }
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ var stateName = SPECIAL_STATES[i];
+ var stateModel = labelStatesModels[stateName];
+ if (stateModel) {
+ var stateObj = textContent.ensureState(stateName);
+ var stateShow = !!retrieve2(stateModel.getShallow("show"), showNormal);
+ if (stateShow !== showNormal) {
+ stateObj.ignore = !stateShow;
+ }
+ stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);
+ stateObj.style.text = labelStatesTexts[stateName];
+ if (!isSetOnText) {
+ var targetElEmphasisState = targetEl.ensureState(stateName);
+ targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);
+ }
+ }
+ }
+ textContent.silent = !!normalModel.getShallow("silent");
+ if (textContent.style.x != null) {
+ normalStyle.x = textContent.style.x;
+ }
+ if (textContent.style.y != null) {
+ normalStyle.y = textContent.style.y;
+ }
+ textContent.ignore = !showNormal;
+ textContent.useStyle(normalStyle);
+ textContent.dirty();
+ if (opt.enableTextSetter) {
+ labelInner(textContent).setLabelText = function(interpolatedValue) {
+ var labelStatesTexts2 = getLabelText(opt, labelStatesModels, interpolatedValue);
+ setLabelText(textContent, labelStatesTexts2);
+ };
+ }
+ } else if (textContent) {
+ textContent.ignore = true;
+ }
+ targetEl.dirty();
+}
+function getLabelStatesModels(itemModel, labelName) {
+ labelName = labelName || "label";
+ var statesModels = {
+ normal: itemModel.getModel(labelName)
+ };
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ var stateName = SPECIAL_STATES[i];
+ statesModels[stateName] = itemModel.getModel([stateName, labelName]);
+ }
+ return statesModels;
+}
+function createTextStyle(textStyleModel, specifiedTextStyle, opt, isNotNormal, isAttached) {
+ var textStyle = {};
+ setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);
+ specifiedTextStyle && extend(textStyle, specifiedTextStyle);
+ return textStyle;
+}
+function createTextConfig(textStyleModel, opt, isNotNormal) {
+ opt = opt || {};
+ var textConfig = {};
+ var labelPosition;
+ var labelRotate = textStyleModel.getShallow("rotate");
+ var labelDistance = retrieve2(textStyleModel.getShallow("distance"), isNotNormal ? null : 5);
+ var labelOffset = textStyleModel.getShallow("offset");
+ labelPosition = textStyleModel.getShallow("position") || (isNotNormal ? null : "inside");
+ labelPosition === "outside" && (labelPosition = opt.defaultOutsidePosition || "top");
+ if (labelPosition != null) {
+ textConfig.position = labelPosition;
+ }
+ if (labelOffset != null) {
+ textConfig.offset = labelOffset;
+ }
+ if (labelRotate != null) {
+ labelRotate *= Math.PI / 180;
+ textConfig.rotation = labelRotate;
+ }
+ if (labelDistance != null) {
+ textConfig.distance = labelDistance;
+ }
+ textConfig.outsideFill = textStyleModel.get("color") === "inherit" ? opt.inheritColor || null : "auto";
+ return textConfig;
+}
+function setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {
+ opt = opt || EMPTY_OBJ;
+ var ecModel = textStyleModel.ecModel;
+ var globalTextStyle = ecModel && ecModel.option.textStyle;
+ var richItemNames = getRichItemNames(textStyleModel);
+ var richResult;
+ if (richItemNames) {
+ richResult = {};
+ for (var name_1 in richItemNames) {
+ if (richItemNames.hasOwnProperty(name_1)) {
+ var richTextStyle = textStyleModel.getModel(["rich", name_1]);
+ setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);
+ }
+ }
+ }
+ if (richResult) {
+ textStyle.rich = richResult;
+ }
+ var overflow = textStyleModel.get("overflow");
+ if (overflow) {
+ textStyle.overflow = overflow;
+ }
+ var margin = textStyleModel.get("minMargin");
+ if (margin != null) {
+ textStyle.margin = margin;
+ }
+ setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);
+}
+function getRichItemNames(textStyleModel) {
+ var richItemNameMap;
+ while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {
+ var rich = (textStyleModel.option || EMPTY_OBJ).rich;
+ if (rich) {
+ richItemNameMap = richItemNameMap || {};
+ var richKeys = keys(rich);
+ for (var i = 0; i < richKeys.length; i++) {
+ var richKey = richKeys[i];
+ richItemNameMap[richKey] = 1;
+ }
+ }
+ textStyleModel = textStyleModel.parentModel;
+ }
+ return richItemNameMap;
+}
+var TEXT_PROPS_WITH_GLOBAL = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"];
+var TEXT_PROPS_SELF = ["align", "lineHeight", "width", "height", "tag", "verticalAlign", "ellipsis"];
+var TEXT_PROPS_BOX = ["padding", "borderWidth", "borderRadius", "borderDashOffset", "backgroundColor", "borderColor", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"];
+function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {
+ globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;
+ var inheritColor = opt && opt.inheritColor;
+ var fillColor = textStyleModel.getShallow("color");
+ var strokeColor = textStyleModel.getShallow("textBorderColor");
+ var opacity = retrieve2(textStyleModel.getShallow("opacity"), globalTextStyle.opacity);
+ if (fillColor === "inherit" || fillColor === "auto") {
+ if (true) {
+ if (fillColor === "auto") {
+ deprecateReplaceLog("color: 'auto'", "color: 'inherit'");
+ }
+ }
+ if (inheritColor) {
+ fillColor = inheritColor;
+ } else {
+ fillColor = null;
+ }
+ }
+ if (strokeColor === "inherit" || strokeColor === "auto") {
+ if (true) {
+ if (strokeColor === "auto") {
+ deprecateReplaceLog("color: 'auto'", "color: 'inherit'");
+ }
+ }
+ if (inheritColor) {
+ strokeColor = inheritColor;
+ } else {
+ strokeColor = null;
+ }
+ }
+ if (!isAttached) {
+ fillColor = fillColor || globalTextStyle.color;
+ strokeColor = strokeColor || globalTextStyle.textBorderColor;
+ }
+ if (fillColor != null) {
+ textStyle.fill = fillColor;
+ }
+ if (strokeColor != null) {
+ textStyle.stroke = strokeColor;
+ }
+ var textBorderWidth = retrieve2(textStyleModel.getShallow("textBorderWidth"), globalTextStyle.textBorderWidth);
+ if (textBorderWidth != null) {
+ textStyle.lineWidth = textBorderWidth;
+ }
+ var textBorderType = retrieve2(textStyleModel.getShallow("textBorderType"), globalTextStyle.textBorderType);
+ if (textBorderType != null) {
+ textStyle.lineDash = textBorderType;
+ }
+ var textBorderDashOffset = retrieve2(textStyleModel.getShallow("textBorderDashOffset"), globalTextStyle.textBorderDashOffset);
+ if (textBorderDashOffset != null) {
+ textStyle.lineDashOffset = textBorderDashOffset;
+ }
+ if (!isNotNormal && opacity == null && !inRich) {
+ opacity = opt && opt.defaultOpacity;
+ }
+ if (opacity != null) {
+ textStyle.opacity = opacity;
+ }
+ if (!isNotNormal && !isAttached) {
+ if (textStyle.fill == null && opt.inheritColor) {
+ textStyle.fill = opt.inheritColor;
+ }
+ }
+ for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {
+ var key = TEXT_PROPS_WITH_GLOBAL[i];
+ var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);
+ if (val != null) {
+ textStyle[key] = val;
+ }
+ }
+ for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {
+ var key = TEXT_PROPS_SELF[i];
+ var val = textStyleModel.getShallow(key);
+ if (val != null) {
+ textStyle[key] = val;
+ }
+ }
+ if (textStyle.verticalAlign == null) {
+ var baseline = textStyleModel.getShallow("baseline");
+ if (baseline != null) {
+ textStyle.verticalAlign = baseline;
+ }
+ }
+ if (!isBlock || !opt.disableBox) {
+ for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {
+ var key = TEXT_PROPS_BOX[i];
+ var val = textStyleModel.getShallow(key);
+ if (val != null) {
+ textStyle[key] = val;
+ }
+ }
+ var borderType = textStyleModel.getShallow("borderType");
+ if (borderType != null) {
+ textStyle.borderDash = borderType;
+ }
+ if ((textStyle.backgroundColor === "auto" || textStyle.backgroundColor === "inherit") && inheritColor) {
+ if (true) {
+ if (textStyle.backgroundColor === "auto") {
+ deprecateReplaceLog("backgroundColor: 'auto'", "backgroundColor: 'inherit'");
+ }
+ }
+ textStyle.backgroundColor = inheritColor;
+ }
+ if ((textStyle.borderColor === "auto" || textStyle.borderColor === "inherit") && inheritColor) {
+ if (true) {
+ if (textStyle.borderColor === "auto") {
+ deprecateReplaceLog("borderColor: 'auto'", "borderColor: 'inherit'");
+ }
+ }
+ textStyle.borderColor = inheritColor;
+ }
+ }
+}
+function getFont(opt, ecModel) {
+ var gTextStyleModel = ecModel && ecModel.getModel("textStyle");
+ return trim([
+ opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow("fontStyle") || "",
+ opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow("fontWeight") || "",
+ (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow("fontSize") || 12) + "px",
+ opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow("fontFamily") || "sans-serif"
+ ].join(" "));
+}
+var labelInner = makeInner();
+function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {
+ if (!label) {
+ return;
+ }
+ var obj = labelInner(label);
+ obj.prevValue = obj.value;
+ obj.value = value;
+ var normalLabelModel = labelStatesModels.normal;
+ obj.valueAnimation = normalLabelModel.get("valueAnimation");
+ if (obj.valueAnimation) {
+ obj.precision = normalLabelModel.get("precision");
+ obj.defaultInterpolatedText = getDefaultText;
+ obj.statesModels = labelStatesModels;
+ }
+}
+function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) {
+ var labelInnerStore = labelInner(textEl);
+ if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) {
+ return;
+ }
+ var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;
+ var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue);
+ var targetValue = labelInnerStore.value;
+ function during(percent) {
+ var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent);
+ labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated;
+ var labelText = getLabelText({
+ labelDataIndex: dataIndex,
+ labelFetcher,
+ defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + ""
+ }, labelInnerStore.statesModels, interpolated);
+ setLabelText(textEl, labelText);
+ }
+ textEl.percent = 0;
+ (labelInnerStore.prevValue == null ? initProps : updateProps)(textEl, {
+ percent: 1
+ }, animatableModel, dataIndex, null, during);
+}
+
+// node_modules/echarts/lib/model/mixin/textStyle.js
+var PATH_COLOR = ["textStyle", "color"];
+var textStyleParams = ["fontStyle", "fontWeight", "fontSize", "fontFamily", "padding", "lineHeight", "rich", "width", "height", "overflow"];
+var tmpText = new Text_default();
+var TextStyleMixin = function() {
+ function TextStyleMixin2() {
+ }
+ TextStyleMixin2.prototype.getTextColor = function(isEmphasis) {
+ var ecModel = this.ecModel;
+ return this.getShallow("color") || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);
+ };
+ TextStyleMixin2.prototype.getFont = function() {
+ return getFont({
+ fontStyle: this.getShallow("fontStyle"),
+ fontWeight: this.getShallow("fontWeight"),
+ fontSize: this.getShallow("fontSize"),
+ fontFamily: this.getShallow("fontFamily")
+ }, this.ecModel);
+ };
+ TextStyleMixin2.prototype.getTextRect = function(text) {
+ var style = {
+ text,
+ verticalAlign: this.getShallow("verticalAlign") || this.getShallow("baseline")
+ };
+ for (var i = 0; i < textStyleParams.length; i++) {
+ style[textStyleParams[i]] = this.getShallow(textStyleParams[i]);
+ }
+ tmpText.useStyle(style);
+ tmpText.update();
+ return tmpText.getBoundingRect();
+ };
+ return TextStyleMixin2;
+}();
+var textStyle_default = TextStyleMixin;
+
+// node_modules/echarts/lib/model/mixin/lineStyle.js
+var LINE_STYLE_KEY_MAP = [
+ ["lineWidth", "width"],
+ ["stroke", "color"],
+ ["opacity"],
+ ["shadowBlur"],
+ ["shadowOffsetX"],
+ ["shadowOffsetY"],
+ ["shadowColor"],
+ ["lineDash", "type"],
+ ["lineDashOffset", "dashOffset"],
+ ["lineCap", "cap"],
+ ["lineJoin", "join"],
+ ["miterLimit"]
+];
+var getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);
+var LineStyleMixin = function() {
+ function LineStyleMixin2() {
+ }
+ LineStyleMixin2.prototype.getLineStyle = function(excludes) {
+ return getLineStyle(this, excludes);
+ };
+ return LineStyleMixin2;
+}();
+
+// node_modules/echarts/lib/model/mixin/itemStyle.js
+var ITEM_STYLE_KEY_MAP = [
+ ["fill", "color"],
+ ["stroke", "borderColor"],
+ ["lineWidth", "borderWidth"],
+ ["opacity"],
+ ["shadowBlur"],
+ ["shadowOffsetX"],
+ ["shadowOffsetY"],
+ ["shadowColor"],
+ ["lineDash", "borderType"],
+ ["lineDashOffset", "borderDashOffset"],
+ ["lineCap", "borderCap"],
+ ["lineJoin", "borderJoin"],
+ ["miterLimit", "borderMiterLimit"]
+];
+var getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);
+var ItemStyleMixin = function() {
+ function ItemStyleMixin2() {
+ }
+ ItemStyleMixin2.prototype.getItemStyle = function(excludes, includes) {
+ return getItemStyle(this, excludes, includes);
+ };
+ return ItemStyleMixin2;
+}();
+
+// node_modules/echarts/lib/model/Model.js
+var Model = function() {
+ function Model2(option, parentModel, ecModel) {
+ this.parentModel = parentModel;
+ this.ecModel = ecModel;
+ this.option = option;
+ }
+ Model2.prototype.init = function(option, parentModel, ecModel) {
+ var rest = [];
+ for (var _i = 3; _i < arguments.length; _i++) {
+ rest[_i - 3] = arguments[_i];
+ }
+ };
+ Model2.prototype.mergeOption = function(option, ecModel) {
+ merge(this.option, option, true);
+ };
+ Model2.prototype.get = function(path, ignoreParent) {
+ if (path == null) {
+ return this.option;
+ }
+ return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);
+ };
+ Model2.prototype.getShallow = function(key, ignoreParent) {
+ var option = this.option;
+ var val = option == null ? option : option[key];
+ if (val == null && !ignoreParent) {
+ var parentModel = this.parentModel;
+ if (parentModel) {
+ val = parentModel.getShallow(key);
+ }
+ }
+ return val;
+ };
+ Model2.prototype.getModel = function(path, parentModel) {
+ var hasPath = path != null;
+ var pathFinal = hasPath ? this.parsePath(path) : null;
+ var obj = hasPath ? this._doGet(pathFinal) : this.option;
+ parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal));
+ return new Model2(obj, parentModel, this.ecModel);
+ };
+ Model2.prototype.isEmpty = function() {
+ return this.option == null;
+ };
+ Model2.prototype.restoreData = function() {
+ };
+ Model2.prototype.clone = function() {
+ var Ctor = this.constructor;
+ return new Ctor(clone(this.option));
+ };
+ Model2.prototype.parsePath = function(path) {
+ if (typeof path === "string") {
+ return path.split(".");
+ }
+ return path;
+ };
+ Model2.prototype.resolveParentPath = function(path) {
+ return path;
+ };
+ Model2.prototype.isAnimationEnabled = function() {
+ if (!env_default.node && this.option) {
+ if (this.option.animation != null) {
+ return !!this.option.animation;
+ } else if (this.parentModel) {
+ return this.parentModel.isAnimationEnabled();
+ }
+ }
+ };
+ Model2.prototype._doGet = function(pathArr, parentModel) {
+ var obj = this.option;
+ if (!pathArr) {
+ return obj;
+ }
+ for (var i = 0; i < pathArr.length; i++) {
+ if (!pathArr[i]) {
+ continue;
+ }
+ obj = obj && typeof obj === "object" ? obj[pathArr[i]] : null;
+ if (obj == null) {
+ break;
+ }
+ }
+ if (obj == null && parentModel) {
+ obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);
+ }
+ return obj;
+ };
+ return Model2;
+}();
+enableClassExtend(Model);
+enableClassCheck(Model);
+mixin(Model, LineStyleMixin);
+mixin(Model, ItemStyleMixin);
+mixin(Model, AreaStyleMixin);
+mixin(Model, textStyle_default);
+var Model_default = Model;
+
+// node_modules/echarts/lib/util/component.js
+var base = Math.round(Math.random() * 10);
+function getUID(type) {
+ return [type || "", base++].join("_");
+}
+function enableSubTypeDefaulter(target) {
+ var subTypeDefaulters = {};
+ target.registerSubTypeDefaulter = function(componentType, defaulter) {
+ var componentTypeInfo = parseClassType(componentType);
+ subTypeDefaulters[componentTypeInfo.main] = defaulter;
+ };
+ target.determineSubType = function(componentType, option) {
+ var type = option.type;
+ if (!type) {
+ var componentTypeMain = parseClassType(componentType).main;
+ if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {
+ type = subTypeDefaulters[componentTypeMain](option);
+ }
+ }
+ return type;
+ };
+}
+function enableTopologicalTravel(entity, dependencyGetter) {
+ entity.topologicalTravel = function(targetNameList, fullNameList, callback, context) {
+ if (!targetNameList.length) {
+ return;
+ }
+ var result = makeDepndencyGraph(fullNameList);
+ var graph = result.graph;
+ var noEntryList = result.noEntryList;
+ var targetNameSet = {};
+ each(targetNameList, function(name) {
+ targetNameSet[name] = true;
+ });
+ while (noEntryList.length) {
+ var currComponentType = noEntryList.pop();
+ var currVertex = graph[currComponentType];
+ var isInTargetNameSet = !!targetNameSet[currComponentType];
+ if (isInTargetNameSet) {
+ callback.call(context, currComponentType, currVertex.originalDeps.slice());
+ delete targetNameSet[currComponentType];
+ }
+ each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);
+ }
+ each(targetNameSet, function() {
+ var errMsg = "";
+ if (true) {
+ errMsg = makePrintable("Circular dependency may exists: ", targetNameSet, targetNameList, fullNameList);
+ }
+ throw new Error(errMsg);
+ });
+ function removeEdge(succComponentType) {
+ graph[succComponentType].entryCount--;
+ if (graph[succComponentType].entryCount === 0) {
+ noEntryList.push(succComponentType);
+ }
+ }
+ function removeEdgeAndAdd(succComponentType) {
+ targetNameSet[succComponentType] = true;
+ removeEdge(succComponentType);
+ }
+ };
+ function makeDepndencyGraph(fullNameList) {
+ var graph = {};
+ var noEntryList = [];
+ each(fullNameList, function(name) {
+ var thisItem = createDependencyGraphItem(graph, name);
+ var originalDeps = thisItem.originalDeps = dependencyGetter(name);
+ var availableDeps = getAvailableDependencies(originalDeps, fullNameList);
+ thisItem.entryCount = availableDeps.length;
+ if (thisItem.entryCount === 0) {
+ noEntryList.push(name);
+ }
+ each(availableDeps, function(dependentName) {
+ if (indexOf(thisItem.predecessor, dependentName) < 0) {
+ thisItem.predecessor.push(dependentName);
+ }
+ var thatItem = createDependencyGraphItem(graph, dependentName);
+ if (indexOf(thatItem.successor, dependentName) < 0) {
+ thatItem.successor.push(name);
+ }
+ });
+ });
+ return {
+ graph,
+ noEntryList
+ };
+ }
+ function createDependencyGraphItem(graph, name) {
+ if (!graph[name]) {
+ graph[name] = {
+ predecessor: [],
+ successor: []
+ };
+ }
+ return graph[name];
+ }
+ function getAvailableDependencies(originalDeps, fullNameList) {
+ var availableDeps = [];
+ each(originalDeps, function(dep) {
+ indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);
+ });
+ return availableDeps;
+ }
+}
+function inheritDefaultOption(superOption, subOption) {
+ return merge(merge({}, superOption, true), subOption, true);
+}
+
+// node_modules/echarts/lib/i18n/langEN.js
+var langEN_default = {
+ time: {
+ month: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
+ monthAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
+ dayOfWeek: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
+ dayOfWeekAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
+ },
+ legend: {
+ selector: {
+ all: "All",
+ inverse: "Inv"
+ }
+ },
+ toolbox: {
+ brush: {
+ title: {
+ rect: "Box Select",
+ polygon: "Lasso Select",
+ lineX: "Horizontally Select",
+ lineY: "Vertically Select",
+ keep: "Keep Selections",
+ clear: "Clear Selections"
+ }
+ },
+ dataView: {
+ title: "Data View",
+ lang: ["Data View", "Close", "Refresh"]
+ },
+ dataZoom: {
+ title: {
+ zoom: "Zoom",
+ back: "Zoom Reset"
+ }
+ },
+ magicType: {
+ title: {
+ line: "Switch to Line Chart",
+ bar: "Switch to Bar Chart",
+ stack: "Stack",
+ tiled: "Tile"
+ }
+ },
+ restore: {
+ title: "Restore"
+ },
+ saveAsImage: {
+ title: "Save as Image",
+ lang: ["Right Click to Save Image"]
+ }
+ },
+ series: {
+ typeNames: {
+ pie: "Pie chart",
+ bar: "Bar chart",
+ line: "Line chart",
+ scatter: "Scatter plot",
+ effectScatter: "Ripple scatter plot",
+ radar: "Radar chart",
+ tree: "Tree",
+ treemap: "Treemap",
+ boxplot: "Boxplot",
+ candlestick: "Candlestick",
+ k: "K line chart",
+ heatmap: "Heat map",
+ map: "Map",
+ parallel: "Parallel coordinate map",
+ lines: "Line graph",
+ graph: "Relationship graph",
+ sankey: "Sankey diagram",
+ funnel: "Funnel chart",
+ gauge: "Gauge",
+ pictorialBar: "Pictorial bar",
+ themeRiver: "Theme River Map",
+ sunburst: "Sunburst",
+ custom: "Custom chart",
+ chart: "Chart"
+ }
+ },
+ aria: {
+ general: {
+ withTitle: 'This is a chart about "{title}"',
+ withoutTitle: "This is a chart"
+ },
+ series: {
+ single: {
+ prefix: "",
+ withName: " with type {seriesType} named {seriesName}.",
+ withoutName: " with type {seriesType}."
+ },
+ multiple: {
+ prefix: ". It consists of {seriesCount} series count.",
+ withName: " The {seriesId} series is a {seriesType} representing {seriesName}.",
+ withoutName: " The {seriesId} series is a {seriesType}.",
+ separator: {
+ middle: "",
+ end: ""
+ }
+ }
+ },
+ data: {
+ allData: "The data is as follows: ",
+ partialData: "The first {displayCnt} items are: ",
+ withName: "the data for {name} is {value}",
+ withoutName: "{value}",
+ separator: {
+ middle: ", ",
+ end: ". "
+ }
+ }
+ }
+};
+
+// node_modules/echarts/lib/i18n/langZH.js
+var langZH_default = {
+ time: {
+ month: ["\u4E00\u6708", "\u4E8C\u6708", "\u4E09\u6708", "\u56DB\u6708", "\u4E94\u6708", "\u516D\u6708", "\u4E03\u6708", "\u516B\u6708", "\u4E5D\u6708", "\u5341\u6708", "\u5341\u4E00\u6708", "\u5341\u4E8C\u6708"],
+ monthAbbr: ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"],
+ dayOfWeek: ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"],
+ dayOfWeekAbbr: ["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"]
+ },
+ legend: {
+ selector: {
+ all: "\u5168\u9009",
+ inverse: "\u53CD\u9009"
+ }
+ },
+ toolbox: {
+ brush: {
+ title: {
+ rect: "\u77E9\u5F62\u9009\u62E9",
+ polygon: "\u5708\u9009",
+ lineX: "\u6A2A\u5411\u9009\u62E9",
+ lineY: "\u7EB5\u5411\u9009\u62E9",
+ keep: "\u4FDD\u6301\u9009\u62E9",
+ clear: "\u6E05\u9664\u9009\u62E9"
+ }
+ },
+ dataView: {
+ title: "\u6570\u636E\u89C6\u56FE",
+ lang: ["\u6570\u636E\u89C6\u56FE", "\u5173\u95ED", "\u5237\u65B0"]
+ },
+ dataZoom: {
+ title: {
+ zoom: "\u533A\u57DF\u7F29\u653E",
+ back: "\u533A\u57DF\u7F29\u653E\u8FD8\u539F"
+ }
+ },
+ magicType: {
+ title: {
+ line: "\u5207\u6362\u4E3A\u6298\u7EBF\u56FE",
+ bar: "\u5207\u6362\u4E3A\u67F1\u72B6\u56FE",
+ stack: "\u5207\u6362\u4E3A\u5806\u53E0",
+ tiled: "\u5207\u6362\u4E3A\u5E73\u94FA"
+ }
+ },
+ restore: {
+ title: "\u8FD8\u539F"
+ },
+ saveAsImage: {
+ title: "\u4FDD\u5B58\u4E3A\u56FE\u7247",
+ lang: ["\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247"]
+ }
+ },
+ series: {
+ typeNames: {
+ pie: "\u997C\u56FE",
+ bar: "\u67F1\u72B6\u56FE",
+ line: "\u6298\u7EBF\u56FE",
+ scatter: "\u6563\u70B9\u56FE",
+ effectScatter: "\u6D9F\u6F2A\u6563\u70B9\u56FE",
+ radar: "\u96F7\u8FBE\u56FE",
+ tree: "\u6811\u56FE",
+ treemap: "\u77E9\u5F62\u6811\u56FE",
+ boxplot: "\u7BB1\u578B\u56FE",
+ candlestick: "K\u7EBF\u56FE",
+ k: "K\u7EBF\u56FE",
+ heatmap: "\u70ED\u529B\u56FE",
+ map: "\u5730\u56FE",
+ parallel: "\u5E73\u884C\u5750\u6807\u56FE",
+ lines: "\u7EBF\u56FE",
+ graph: "\u5173\u7CFB\u56FE",
+ sankey: "\u6851\u57FA\u56FE",
+ funnel: "\u6F0F\u6597\u56FE",
+ gauge: "\u4EEA\u8868\u76D8\u56FE",
+ pictorialBar: "\u8C61\u5F62\u67F1\u56FE",
+ themeRiver: "\u4E3B\u9898\u6CB3\u6D41\u56FE",
+ sunburst: "\u65ED\u65E5\u56FE",
+ custom: "\u81EA\u5B9A\u4E49\u56FE\u8868",
+ chart: "\u56FE\u8868"
+ }
+ },
+ aria: {
+ general: {
+ withTitle: "\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002",
+ withoutTitle: "\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C"
+ },
+ series: {
+ single: {
+ prefix: "",
+ withName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002",
+ withoutName: "\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002"
+ },
+ multiple: {
+ prefix: "\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002",
+ withName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C",
+ withoutName: "\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C",
+ separator: {
+ middle: "\uFF1B",
+ end: "\u3002"
+ }
+ }
+ },
+ data: {
+ allData: "\u5176\u6570\u636E\u662F\u2014\u2014",
+ partialData: "\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014",
+ withName: "{name}\u7684\u6570\u636E\u662F{value}",
+ withoutName: "{value}",
+ separator: {
+ middle: "\uFF0C",
+ end: ""
+ }
+ }
+ }
+};
+
+// node_modules/echarts/lib/core/locale.js
+var LOCALE_ZH = "ZH";
+var LOCALE_EN = "EN";
+var DEFAULT_LOCALE = LOCALE_EN;
+var localeStorage = {};
+var localeModels = {};
+var SYSTEM_LANG = !env_default.domSupported ? DEFAULT_LOCALE : function() {
+ var langStr = (document.documentElement.lang || navigator.language || navigator.browserLanguage || DEFAULT_LOCALE).toUpperCase();
+ return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;
+}();
+function registerLocale(locale, localeObj) {
+ locale = locale.toUpperCase();
+ localeModels[locale] = new Model_default(localeObj);
+ localeStorage[locale] = localeObj;
+}
+function createLocaleObject(locale) {
+ if (isString(locale)) {
+ var localeObj = localeStorage[locale.toUpperCase()] || {};
+ if (locale === LOCALE_ZH || locale === LOCALE_EN) {
+ return clone(localeObj);
+ } else {
+ return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);
+ }
+ } else {
+ return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);
+ }
+}
+function getLocaleModel(lang) {
+ return localeModels[lang];
+}
+function getDefaultLocaleModel() {
+ return localeModels[DEFAULT_LOCALE];
+}
+registerLocale(LOCALE_EN, langEN_default);
+registerLocale(LOCALE_ZH, langZH_default);
+
+// node_modules/echarts/lib/util/time.js
+var ONE_SECOND = 1e3;
+var ONE_MINUTE = ONE_SECOND * 60;
+var ONE_HOUR = ONE_MINUTE * 60;
+var ONE_DAY = ONE_HOUR * 24;
+var ONE_YEAR = ONE_DAY * 365;
+var defaultLeveledFormatter = {
+ year: "{yyyy}",
+ month: "{MMM}",
+ day: "{d}",
+ hour: "{HH}:{mm}",
+ minute: "{HH}:{mm}",
+ second: "{HH}:{mm}:{ss}",
+ millisecond: "{HH}:{mm}:{ss} {SSS}",
+ none: "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"
+};
+var fullDayFormatter = "{yyyy}-{MM}-{dd}";
+var fullLeveledFormatter = {
+ year: "{yyyy}",
+ month: "{yyyy}-{MM}",
+ day: fullDayFormatter,
+ hour: fullDayFormatter + " " + defaultLeveledFormatter.hour,
+ minute: fullDayFormatter + " " + defaultLeveledFormatter.minute,
+ second: fullDayFormatter + " " + defaultLeveledFormatter.second,
+ millisecond: defaultLeveledFormatter.none
+};
+var primaryTimeUnits = ["year", "month", "day", "hour", "minute", "second", "millisecond"];
+var timeUnits = ["year", "half-year", "quarter", "month", "week", "half-week", "day", "half-day", "quarter-day", "hour", "minute", "second", "millisecond"];
+function pad(str, len2) {
+ str += "";
+ return "0000".substr(0, len2 - str.length) + str;
+}
+function getPrimaryTimeUnit(timeUnit) {
+ switch (timeUnit) {
+ case "half-year":
+ case "quarter":
+ return "month";
+ case "week":
+ case "half-week":
+ return "day";
+ case "half-day":
+ case "quarter-day":
+ return "hour";
+ default:
+ return timeUnit;
+ }
+}
+function isPrimaryTimeUnit(timeUnit) {
+ return timeUnit === getPrimaryTimeUnit(timeUnit);
+}
+function getDefaultFormatPrecisionOfInterval(timeUnit) {
+ switch (timeUnit) {
+ case "year":
+ case "month":
+ return "day";
+ case "millisecond":
+ return "millisecond";
+ default:
+ return "second";
+ }
+}
+function format(time, template, isUTC, lang) {
+ var date = parseDate(time);
+ var y = date[fullYearGetterName(isUTC)]();
+ var M = date[monthGetterName(isUTC)]() + 1;
+ var q = Math.floor((M - 1) / 3) + 1;
+ var d = date[dateGetterName(isUTC)]();
+ var e2 = date["get" + (isUTC ? "UTC" : "") + "Day"]();
+ var H = date[hoursGetterName(isUTC)]();
+ var h = (H - 1) % 12 + 1;
+ var m2 = date[minutesGetterName(isUTC)]();
+ var s = date[secondsGetterName(isUTC)]();
+ var S = date[millisecondsGetterName(isUTC)]();
+ var a = H >= 12 ? "pm" : "am";
+ var A = a.toUpperCase();
+ var localeModel = lang instanceof Model_default ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();
+ var timeModel = localeModel.getModel("time");
+ var month = timeModel.get("month");
+ var monthAbbr = timeModel.get("monthAbbr");
+ var dayOfWeek = timeModel.get("dayOfWeek");
+ var dayOfWeekAbbr = timeModel.get("dayOfWeekAbbr");
+ return (template || "").replace(/{a}/g, a + "").replace(/{A}/g, A + "").replace(/{yyyy}/g, y + "").replace(/{yy}/g, pad(y % 100 + "", 2)).replace(/{Q}/g, q + "").replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + "").replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + "").replace(/{eeee}/g, dayOfWeek[e2]).replace(/{ee}/g, dayOfWeekAbbr[e2]).replace(/{e}/g, e2 + "").replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + "").replace(/{hh}/g, pad(h + "", 2)).replace(/{h}/g, h + "").replace(/{mm}/g, pad(m2, 2)).replace(/{m}/g, m2 + "").replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + "").replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + "");
+}
+function leveledFormat(tick, idx, formatter, lang, isUTC) {
+ var template = null;
+ if (isString(formatter)) {
+ template = formatter;
+ } else if (isFunction(formatter)) {
+ template = formatter(tick.value, idx, {
+ level: tick.level
+ });
+ } else {
+ var defaults2 = extend({}, defaultLeveledFormatter);
+ if (tick.level > 0) {
+ for (var i = 0; i < primaryTimeUnits.length; ++i) {
+ defaults2[primaryTimeUnits[i]] = "{primary|" + defaults2[primaryTimeUnits[i]] + "}";
+ }
+ }
+ var mergedFormatter = formatter ? formatter.inherit === false ? formatter : defaults(formatter, defaults2) : defaults2;
+ var unit = getUnitFromValue(tick.value, isUTC);
+ if (mergedFormatter[unit]) {
+ template = mergedFormatter[unit];
+ } else if (mergedFormatter.inherit) {
+ var targetId = timeUnits.indexOf(unit);
+ for (var i = targetId - 1; i >= 0; --i) {
+ if (mergedFormatter[unit]) {
+ template = mergedFormatter[unit];
+ break;
+ }
+ }
+ template = template || defaults2.none;
+ }
+ if (isArray(template)) {
+ var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level;
+ levelId = Math.min(levelId, template.length - 1);
+ template = template[levelId];
+ }
+ }
+ return format(new Date(tick.value), template, isUTC, lang);
+}
+function getUnitFromValue(value, isUTC) {
+ var date = parseDate(value);
+ var M = date[monthGetterName(isUTC)]() + 1;
+ var d = date[dateGetterName(isUTC)]();
+ var h = date[hoursGetterName(isUTC)]();
+ var m2 = date[minutesGetterName(isUTC)]();
+ var s = date[secondsGetterName(isUTC)]();
+ var S = date[millisecondsGetterName(isUTC)]();
+ var isSecond = S === 0;
+ var isMinute = isSecond && s === 0;
+ var isHour = isMinute && m2 === 0;
+ var isDay = isHour && h === 0;
+ var isMonth = isDay && d === 1;
+ var isYear = isMonth && M === 1;
+ if (isYear) {
+ return "year";
+ } else if (isMonth) {
+ return "month";
+ } else if (isDay) {
+ return "day";
+ } else if (isHour) {
+ return "hour";
+ } else if (isMinute) {
+ return "minute";
+ } else if (isSecond) {
+ return "second";
+ } else {
+ return "millisecond";
+ }
+}
+function getUnitValue(value, unit, isUTC) {
+ var date = isNumber(value) ? parseDate(value) : value;
+ unit = unit || getUnitFromValue(value, isUTC);
+ switch (unit) {
+ case "year":
+ return date[fullYearGetterName(isUTC)]();
+ case "half-year":
+ return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;
+ case "quarter":
+ return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);
+ case "month":
+ return date[monthGetterName(isUTC)]();
+ case "day":
+ return date[dateGetterName(isUTC)]();
+ case "half-day":
+ return date[hoursGetterName(isUTC)]() / 24;
+ case "hour":
+ return date[hoursGetterName(isUTC)]();
+ case "minute":
+ return date[minutesGetterName(isUTC)]();
+ case "second":
+ return date[secondsGetterName(isUTC)]();
+ case "millisecond":
+ return date[millisecondsGetterName(isUTC)]();
+ }
+}
+function fullYearGetterName(isUTC) {
+ return isUTC ? "getUTCFullYear" : "getFullYear";
+}
+function monthGetterName(isUTC) {
+ return isUTC ? "getUTCMonth" : "getMonth";
+}
+function dateGetterName(isUTC) {
+ return isUTC ? "getUTCDate" : "getDate";
+}
+function hoursGetterName(isUTC) {
+ return isUTC ? "getUTCHours" : "getHours";
+}
+function minutesGetterName(isUTC) {
+ return isUTC ? "getUTCMinutes" : "getMinutes";
+}
+function secondsGetterName(isUTC) {
+ return isUTC ? "getUTCSeconds" : "getSeconds";
+}
+function millisecondsGetterName(isUTC) {
+ return isUTC ? "getUTCMilliseconds" : "getMilliseconds";
+}
+function fullYearSetterName(isUTC) {
+ return isUTC ? "setUTCFullYear" : "setFullYear";
+}
+function monthSetterName(isUTC) {
+ return isUTC ? "setUTCMonth" : "setMonth";
+}
+function dateSetterName(isUTC) {
+ return isUTC ? "setUTCDate" : "setDate";
+}
+function hoursSetterName(isUTC) {
+ return isUTC ? "setUTCHours" : "setHours";
+}
+function minutesSetterName(isUTC) {
+ return isUTC ? "setUTCMinutes" : "setMinutes";
+}
+function secondsSetterName(isUTC) {
+ return isUTC ? "setUTCSeconds" : "setSeconds";
+}
+function millisecondsSetterName(isUTC) {
+ return isUTC ? "setUTCMilliseconds" : "setMilliseconds";
+}
+
+// node_modules/echarts/lib/legacy/getTextRect.js
+function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {
+ var textEl = new Text_default({
+ style: {
+ text,
+ font,
+ align,
+ verticalAlign,
+ padding,
+ rich,
+ overflow: truncate ? "truncate" : null,
+ lineHeight
+ }
+ });
+ return textEl.getBoundingRect();
+}
+
+// node_modules/echarts/lib/util/format.js
+function addCommas(x) {
+ if (!isNumeric(x)) {
+ return isString(x) ? x : "-";
+ }
+ var parts = (x + "").split(".");
+ return parts[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (parts.length > 1 ? "." + parts[1] : "");
+}
+function toCamelCase(str, upperCaseFirst) {
+ str = (str || "").toLowerCase().replace(/-(.)/g, function(match, group1) {
+ return group1.toUpperCase();
+ });
+ if (upperCaseFirst && str) {
+ str = str.charAt(0).toUpperCase() + str.slice(1);
+ }
+ return str;
+}
+var normalizeCssArray2 = normalizeCssArray;
+function makeValueReadable(value, valueType, useUTC) {
+ var USER_READABLE_DEFUALT_TIME_PATTERN = "{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";
+ function stringToUserReadable(str) {
+ return str && trim(str) ? str : "-";
+ }
+ function isNumberUserReadable(num) {
+ return !!(num != null && !isNaN(num) && isFinite(num));
+ }
+ var isTypeTime = valueType === "time";
+ var isValueDate = value instanceof Date;
+ if (isTypeTime || isValueDate) {
+ var date = isTypeTime ? parseDate(value) : value;
+ if (!isNaN(+date)) {
+ return format(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);
+ } else if (isValueDate) {
+ return "-";
+ }
+ }
+ if (valueType === "ordinal") {
+ return isStringSafe(value) ? stringToUserReadable(value) : isNumber(value) ? isNumberUserReadable(value) ? value + "" : "-" : "-";
+ }
+ var numericResult = numericToNumber(value);
+ return isNumberUserReadable(numericResult) ? addCommas(numericResult) : isStringSafe(value) ? stringToUserReadable(value) : typeof value === "boolean" ? value + "" : "-";
+}
+var TPL_VAR_ALIAS = ["a", "b", "c", "d", "e", "f", "g"];
+var wrapVar = function(varName, seriesIdx) {
+ return "{" + varName + (seriesIdx == null ? "" : seriesIdx) + "}";
+};
+function formatTpl(tpl, paramsList, encode) {
+ if (!isArray(paramsList)) {
+ paramsList = [paramsList];
+ }
+ var seriesLen = paramsList.length;
+ if (!seriesLen) {
+ return "";
+ }
+ var $vars = paramsList[0].$vars || [];
+ for (var i = 0; i < $vars.length; i++) {
+ var alias = TPL_VAR_ALIAS[i];
+ tpl = tpl.replace(wrapVar(alias), wrapVar(alias, 0));
+ }
+ for (var seriesIdx = 0; seriesIdx < seriesLen; seriesIdx++) {
+ for (var k = 0; k < $vars.length; k++) {
+ var val = paramsList[seriesIdx][$vars[k]];
+ tpl = tpl.replace(wrapVar(TPL_VAR_ALIAS[k], seriesIdx), encode ? encodeHTML(val) : val);
+ }
+ }
+ return tpl;
+}
+function formatTplSimple(tpl, param, encode) {
+ each(param, function(value, key) {
+ tpl = tpl.replace("{" + key + "}", encode ? encodeHTML(value) : value);
+ });
+ return tpl;
+}
+function getTooltipMarker(inOpt, extraCssText) {
+ var opt = isString(inOpt) ? {
+ color: inOpt,
+ extraCssText
+ } : inOpt || {};
+ var color = opt.color;
+ var type = opt.type;
+ extraCssText = opt.extraCssText;
+ var renderMode = opt.renderMode || "html";
+ if (!color) {
+ return "";
+ }
+ if (renderMode === "html") {
+ return type === "subItem" ? '' : '';
+ } else {
+ var markerId = opt.markerId || "markerX";
+ return {
+ renderMode,
+ content: "{" + markerId + "|} ",
+ style: type === "subItem" ? {
+ width: 4,
+ height: 4,
+ borderRadius: 2,
+ backgroundColor: color
+ } : {
+ width: 10,
+ height: 10,
+ borderRadius: 5,
+ backgroundColor: color
+ }
+ };
+ }
+}
+function formatTime(tpl, value, isUTC) {
+ if (true) {
+ deprecateReplaceLog("echarts.format.formatTime", "echarts.time.format");
+ }
+ if (tpl === "week" || tpl === "month" || tpl === "quarter" || tpl === "half-year" || tpl === "year") {
+ tpl = "MM-dd\nyyyy";
+ }
+ var date = parseDate(value);
+ var getUTC = isUTC ? "getUTC" : "get";
+ var y = date[getUTC + "FullYear"]();
+ var M = date[getUTC + "Month"]() + 1;
+ var d = date[getUTC + "Date"]();
+ var h = date[getUTC + "Hours"]();
+ var m2 = date[getUTC + "Minutes"]();
+ var s = date[getUTC + "Seconds"]();
+ var S = date[getUTC + "Milliseconds"]();
+ tpl = tpl.replace("MM", pad(M, 2)).replace("M", M).replace("yyyy", y).replace("yy", pad(y % 100 + "", 2)).replace("dd", pad(d, 2)).replace("d", d).replace("hh", pad(h, 2)).replace("h", h).replace("mm", pad(m2, 2)).replace("m", m2).replace("ss", pad(s, 2)).replace("s", s).replace("SSS", pad(S, 3));
+ return tpl;
+}
+function capitalFirst(str) {
+ return str ? str.charAt(0).toUpperCase() + str.substr(1) : str;
+}
+function convertToColorString(color, defaultColor) {
+ defaultColor = defaultColor || "transparent";
+ return isString(color) ? color : isObject(color) ? color.colorStops && (color.colorStops[0] || {}).color || defaultColor : defaultColor;
+}
+function windowOpen(link, target) {
+ if (target === "_blank" || target === "blank") {
+ var blank = window.open();
+ blank.opener = null;
+ blank.location.href = link;
+ } else {
+ window.open(link, target);
+ }
+}
+
+// node_modules/echarts/lib/util/layout.js
+var each2 = each;
+var LOCATION_PARAMS = ["left", "right", "top", "bottom", "width", "height"];
+var HV_NAMES = [["width", "left", "right"], ["height", "top", "bottom"]];
+function boxLayout(orient, group, gap, maxWidth, maxHeight) {
+ var x = 0;
+ var y = 0;
+ if (maxWidth == null) {
+ maxWidth = Infinity;
+ }
+ if (maxHeight == null) {
+ maxHeight = Infinity;
+ }
+ var currentLineMaxSize = 0;
+ group.eachChild(function(child, idx) {
+ var rect = child.getBoundingRect();
+ var nextChild = group.childAt(idx + 1);
+ var nextChildRect = nextChild && nextChild.getBoundingRect();
+ var nextX;
+ var nextY;
+ if (orient === "horizontal") {
+ var moveX = rect.width + (nextChildRect ? -nextChildRect.x + rect.x : 0);
+ nextX = x + moveX;
+ if (nextX > maxWidth || child.newline) {
+ x = 0;
+ nextX = moveX;
+ y += currentLineMaxSize + gap;
+ currentLineMaxSize = rect.height;
+ } else {
+ currentLineMaxSize = Math.max(currentLineMaxSize, rect.height);
+ }
+ } else {
+ var moveY = rect.height + (nextChildRect ? -nextChildRect.y + rect.y : 0);
+ nextY = y + moveY;
+ if (nextY > maxHeight || child.newline) {
+ x += currentLineMaxSize + gap;
+ y = 0;
+ nextY = moveY;
+ currentLineMaxSize = rect.width;
+ } else {
+ currentLineMaxSize = Math.max(currentLineMaxSize, rect.width);
+ }
+ }
+ if (child.newline) {
+ return;
+ }
+ child.x = x;
+ child.y = y;
+ child.markRedraw();
+ orient === "horizontal" ? x = nextX + gap : y = nextY + gap;
+ });
+}
+var box = boxLayout;
+var vbox = curry(boxLayout, "vertical");
+var hbox = curry(boxLayout, "horizontal");
+function getAvailableSize(positionInfo, containerRect, margin) {
+ var containerWidth = containerRect.width;
+ var containerHeight = containerRect.height;
+ var x = parsePercent2(positionInfo.left, containerWidth);
+ var y = parsePercent2(positionInfo.top, containerHeight);
+ var x2 = parsePercent2(positionInfo.right, containerWidth);
+ var y2 = parsePercent2(positionInfo.bottom, containerHeight);
+ (isNaN(x) || isNaN(parseFloat(positionInfo.left))) && (x = 0);
+ (isNaN(x2) || isNaN(parseFloat(positionInfo.right))) && (x2 = containerWidth);
+ (isNaN(y) || isNaN(parseFloat(positionInfo.top))) && (y = 0);
+ (isNaN(y2) || isNaN(parseFloat(positionInfo.bottom))) && (y2 = containerHeight);
+ margin = normalizeCssArray2(margin || 0);
+ return {
+ width: Math.max(x2 - x - margin[1] - margin[3], 0),
+ height: Math.max(y2 - y - margin[0] - margin[2], 0)
+ };
+}
+function getLayoutRect(positionInfo, containerRect, margin) {
+ margin = normalizeCssArray2(margin || 0);
+ var containerWidth = containerRect.width;
+ var containerHeight = containerRect.height;
+ var left = parsePercent2(positionInfo.left, containerWidth);
+ var top = parsePercent2(positionInfo.top, containerHeight);
+ var right = parsePercent2(positionInfo.right, containerWidth);
+ var bottom = parsePercent2(positionInfo.bottom, containerHeight);
+ var width = parsePercent2(positionInfo.width, containerWidth);
+ var height = parsePercent2(positionInfo.height, containerHeight);
+ var verticalMargin = margin[2] + margin[0];
+ var horizontalMargin = margin[1] + margin[3];
+ var aspect = positionInfo.aspect;
+ if (isNaN(width)) {
+ width = containerWidth - right - horizontalMargin - left;
+ }
+ if (isNaN(height)) {
+ height = containerHeight - bottom - verticalMargin - top;
+ }
+ if (aspect != null) {
+ if (isNaN(width) && isNaN(height)) {
+ if (aspect > containerWidth / containerHeight) {
+ width = containerWidth * 0.8;
+ } else {
+ height = containerHeight * 0.8;
+ }
+ }
+ if (isNaN(width)) {
+ width = aspect * height;
+ }
+ if (isNaN(height)) {
+ height = width / aspect;
+ }
+ }
+ if (isNaN(left)) {
+ left = containerWidth - right - width - horizontalMargin;
+ }
+ if (isNaN(top)) {
+ top = containerHeight - bottom - height - verticalMargin;
+ }
+ switch (positionInfo.left || positionInfo.right) {
+ case "center":
+ left = containerWidth / 2 - width / 2 - margin[3];
+ break;
+ case "right":
+ left = containerWidth - width - horizontalMargin;
+ break;
+ }
+ switch (positionInfo.top || positionInfo.bottom) {
+ case "middle":
+ case "center":
+ top = containerHeight / 2 - height / 2 - margin[0];
+ break;
+ case "bottom":
+ top = containerHeight - height - verticalMargin;
+ break;
+ }
+ left = left || 0;
+ top = top || 0;
+ if (isNaN(width)) {
+ width = containerWidth - horizontalMargin - left - (right || 0);
+ }
+ if (isNaN(height)) {
+ height = containerHeight - verticalMargin - top - (bottom || 0);
+ }
+ var rect = new BoundingRect_default(left + margin[3], top + margin[0], width, height);
+ rect.margin = margin;
+ return rect;
+}
+function positionElement(el, positionInfo, containerRect, margin, opt, out2) {
+ var h = !opt || !opt.hv || opt.hv[0];
+ var v = !opt || !opt.hv || opt.hv[1];
+ var boundingMode = opt && opt.boundingMode || "all";
+ out2 = out2 || el;
+ out2.x = el.x;
+ out2.y = el.y;
+ if (!h && !v) {
+ return false;
+ }
+ var rect;
+ if (boundingMode === "raw") {
+ rect = el.type === "group" ? new BoundingRect_default(0, 0, +positionInfo.width || 0, +positionInfo.height || 0) : el.getBoundingRect();
+ } else {
+ rect = el.getBoundingRect();
+ if (el.needLocalTransform()) {
+ var transform2 = el.getLocalTransform();
+ rect = rect.clone();
+ rect.applyTransform(transform2);
+ }
+ }
+ var layoutRect = getLayoutRect(defaults({
+ width: rect.width,
+ height: rect.height
+ }, positionInfo), containerRect, margin);
+ var dx = h ? layoutRect.x - rect.x : 0;
+ var dy = v ? layoutRect.y - rect.y : 0;
+ if (boundingMode === "raw") {
+ out2.x = dx;
+ out2.y = dy;
+ } else {
+ out2.x += dx;
+ out2.y += dy;
+ }
+ if (out2 === el) {
+ el.markRedraw();
+ }
+ return true;
+}
+function sizeCalculable(option, hvIdx) {
+ return option[HV_NAMES[hvIdx][0]] != null || option[HV_NAMES[hvIdx][1]] != null && option[HV_NAMES[hvIdx][2]] != null;
+}
+function fetchLayoutMode(ins) {
+ var layoutMode = ins.layoutMode || ins.constructor.layoutMode;
+ return isObject(layoutMode) ? layoutMode : layoutMode ? {
+ type: layoutMode
+ } : null;
+}
+function mergeLayoutParam(targetOption, newOption, opt) {
+ var ignoreSize = opt && opt.ignoreSize;
+ !isArray(ignoreSize) && (ignoreSize = [ignoreSize, ignoreSize]);
+ var hResult = merge2(HV_NAMES[0], 0);
+ var vResult = merge2(HV_NAMES[1], 1);
+ copy3(HV_NAMES[0], targetOption, hResult);
+ copy3(HV_NAMES[1], targetOption, vResult);
+ function merge2(names, hvIdx) {
+ var newParams = {};
+ var newValueCount = 0;
+ var merged = {};
+ var mergedValueCount = 0;
+ var enoughParamNumber = 2;
+ each2(names, function(name) {
+ merged[name] = targetOption[name];
+ });
+ each2(names, function(name) {
+ hasProp(newOption, name) && (newParams[name] = merged[name] = newOption[name]);
+ hasValue(newParams, name) && newValueCount++;
+ hasValue(merged, name) && mergedValueCount++;
+ });
+ if (ignoreSize[hvIdx]) {
+ if (hasValue(newOption, names[1])) {
+ merged[names[2]] = null;
+ } else if (hasValue(newOption, names[2])) {
+ merged[names[1]] = null;
+ }
+ return merged;
+ }
+ if (mergedValueCount === enoughParamNumber || !newValueCount) {
+ return merged;
+ } else if (newValueCount >= enoughParamNumber) {
+ return newParams;
+ } else {
+ for (var i = 0; i < names.length; i++) {
+ var name_1 = names[i];
+ if (!hasProp(newParams, name_1) && hasProp(targetOption, name_1)) {
+ newParams[name_1] = targetOption[name_1];
+ break;
+ }
+ }
+ return newParams;
+ }
+ }
+ function hasProp(obj, name) {
+ return obj.hasOwnProperty(name);
+ }
+ function hasValue(obj, name) {
+ return obj[name] != null && obj[name] !== "auto";
+ }
+ function copy3(names, target, source) {
+ each2(names, function(name) {
+ target[name] = source[name];
+ });
+ }
+}
+function getLayoutParams(source) {
+ return copyLayoutParams({}, source);
+}
+function copyLayoutParams(target, source) {
+ source && target && each2(LOCATION_PARAMS, function(name) {
+ source.hasOwnProperty(name) && (target[name] = source[name]);
+ });
+ return target;
+}
+
+// node_modules/echarts/lib/model/Component.js
+var inner = makeInner();
+var ComponentModel = function(_super) {
+ __extends(ComponentModel2, _super);
+ function ComponentModel2(option, parentModel, ecModel) {
+ var _this = _super.call(this, option, parentModel, ecModel) || this;
+ _this.uid = getUID("ec_cpt_model");
+ return _this;
+ }
+ ComponentModel2.prototype.init = function(option, parentModel, ecModel) {
+ this.mergeDefaultAndTheme(option, ecModel);
+ };
+ ComponentModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) {
+ var layoutMode = fetchLayoutMode(this);
+ var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
+ var themeModel = ecModel.getTheme();
+ merge(option, themeModel.get(this.mainType));
+ merge(option, this.getDefaultOption());
+ if (layoutMode) {
+ mergeLayoutParam(option, inputPositionParams, layoutMode);
+ }
+ };
+ ComponentModel2.prototype.mergeOption = function(option, ecModel) {
+ merge(this.option, option, true);
+ var layoutMode = fetchLayoutMode(this);
+ if (layoutMode) {
+ mergeLayoutParam(this.option, option, layoutMode);
+ }
+ };
+ ComponentModel2.prototype.optionUpdated = function(newCptOption, isInit) {
+ };
+ ComponentModel2.prototype.getDefaultOption = function() {
+ var ctor = this.constructor;
+ if (!isExtendedClass(ctor)) {
+ return ctor.defaultOption;
+ }
+ var fields = inner(this);
+ if (!fields.defaultOption) {
+ var optList = [];
+ var clz = ctor;
+ while (clz) {
+ var opt = clz.prototype.defaultOption;
+ opt && optList.push(opt);
+ clz = clz.superClass;
+ }
+ var defaultOption3 = {};
+ for (var i = optList.length - 1; i >= 0; i--) {
+ defaultOption3 = merge(defaultOption3, optList[i], true);
+ }
+ fields.defaultOption = defaultOption3;
+ }
+ return fields.defaultOption;
+ };
+ ComponentModel2.prototype.getReferringComponents = function(mainType, opt) {
+ var indexKey = mainType + "Index";
+ var idKey = mainType + "Id";
+ return queryReferringComponents(this.ecModel, mainType, {
+ index: this.get(indexKey, true),
+ id: this.get(idKey, true)
+ }, opt);
+ };
+ ComponentModel2.prototype.getBoxLayoutParams = function() {
+ var boxLayoutModel = this;
+ return {
+ left: boxLayoutModel.get("left"),
+ top: boxLayoutModel.get("top"),
+ right: boxLayoutModel.get("right"),
+ bottom: boxLayoutModel.get("bottom"),
+ width: boxLayoutModel.get("width"),
+ height: boxLayoutModel.get("height")
+ };
+ };
+ ComponentModel2.prototype.getZLevelKey = function() {
+ return "";
+ };
+ ComponentModel2.prototype.setZLevel = function(zlevel) {
+ this.option.zlevel = zlevel;
+ };
+ ComponentModel2.protoInitialize = function() {
+ var proto2 = ComponentModel2.prototype;
+ proto2.type = "component";
+ proto2.id = "";
+ proto2.name = "";
+ proto2.mainType = "";
+ proto2.subType = "";
+ proto2.componentIndex = 0;
+ }();
+ return ComponentModel2;
+}(Model_default);
+mountExtend(ComponentModel, Model_default);
+enableClassManagement(ComponentModel);
+enableSubTypeDefaulter(ComponentModel);
+enableTopologicalTravel(ComponentModel, getDependencies);
+function getDependencies(componentType) {
+ var deps = [];
+ each(ComponentModel.getClassesByMainType(componentType), function(clz) {
+ deps = deps.concat(clz.dependencies || clz.prototype.dependencies || []);
+ });
+ deps = map(deps, function(type) {
+ return parseClassType(type).main;
+ });
+ if (componentType !== "dataset" && indexOf(deps, "dataset") <= 0) {
+ deps.unshift("dataset");
+ }
+ return deps;
+}
+var Component_default = ComponentModel;
+
+// node_modules/echarts/lib/model/globalDefault.js
+var platform = "";
+if (typeof navigator !== "undefined") {
+ platform = navigator.platform || "";
+}
+var decalColor = "rgba(0, 0, 0, 0.2)";
+var globalDefault_default = {
+ darkMode: "auto",
+ colorBy: "series",
+ color: ["#5470c6", "#91cc75", "#fac858", "#ee6666", "#73c0de", "#3ba272", "#fc8452", "#9a60b4", "#ea7ccc"],
+ gradientColor: ["#f6efa6", "#d88273", "#bf444c"],
+ aria: {
+ decal: {
+ decals: [{
+ color: decalColor,
+ dashArrayX: [1, 0],
+ dashArrayY: [2, 5],
+ symbolSize: 1,
+ rotation: Math.PI / 6
+ }, {
+ color: decalColor,
+ symbol: "circle",
+ dashArrayX: [[8, 8], [0, 8, 8, 0]],
+ dashArrayY: [6, 0],
+ symbolSize: 0.8
+ }, {
+ color: decalColor,
+ dashArrayX: [1, 0],
+ dashArrayY: [4, 3],
+ rotation: -Math.PI / 4
+ }, {
+ color: decalColor,
+ dashArrayX: [[6, 6], [0, 6, 6, 0]],
+ dashArrayY: [6, 0]
+ }, {
+ color: decalColor,
+ dashArrayX: [[1, 0], [1, 6]],
+ dashArrayY: [1, 0, 6, 0],
+ rotation: Math.PI / 4
+ }, {
+ color: decalColor,
+ symbol: "triangle",
+ dashArrayX: [[9, 9], [0, 9, 9, 0]],
+ dashArrayY: [7, 2],
+ symbolSize: 0.75
+ }]
+ }
+ },
+ textStyle: {
+ fontFamily: platform.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
+ fontSize: 12,
+ fontStyle: "normal",
+ fontWeight: "normal"
+ },
+ blendMode: null,
+ stateAnimation: {
+ duration: 300,
+ easing: "cubicOut"
+ },
+ animation: "auto",
+ animationDuration: 1e3,
+ animationDurationUpdate: 500,
+ animationEasing: "cubicInOut",
+ animationEasingUpdate: "cubicInOut",
+ animationThreshold: 2e3,
+ progressiveThreshold: 3e3,
+ progressive: 400,
+ hoverLayerThreshold: 3e3,
+ useUTC: false
+};
+
+// node_modules/echarts/lib/util/types.js
+var VISUAL_DIMENSIONS = createHashMap(["tooltip", "label", "itemName", "itemId", "itemGroupId", "itemChildGroupId", "seriesName"]);
+var SOURCE_FORMAT_ORIGINAL = "original";
+var SOURCE_FORMAT_ARRAY_ROWS = "arrayRows";
+var SOURCE_FORMAT_OBJECT_ROWS = "objectRows";
+var SOURCE_FORMAT_KEYED_COLUMNS = "keyedColumns";
+var SOURCE_FORMAT_TYPED_ARRAY = "typedArray";
+var SOURCE_FORMAT_UNKNOWN = "unknown";
+var SERIES_LAYOUT_BY_COLUMN = "column";
+var SERIES_LAYOUT_BY_ROW = "row";
+
+// node_modules/echarts/lib/data/helper/sourceHelper.js
+var BE_ORDINAL = {
+ Must: 1,
+ Might: 2,
+ Not: 3
+};
+var innerGlobalModel = makeInner();
+function resetSourceDefaulter(ecModel) {
+ innerGlobalModel(ecModel).datasetMap = createHashMap();
+}
+function makeSeriesEncodeForAxisCoordSys(coordDimensions, seriesModel, source) {
+ var encode = {};
+ var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);
+ if (!datasetModel || !coordDimensions) {
+ return encode;
+ }
+ var encodeItemName = [];
+ var encodeSeriesName = [];
+ var ecModel = seriesModel.ecModel;
+ var datasetMap = innerGlobalModel(ecModel).datasetMap;
+ var key = datasetModel.uid + "_" + source.seriesLayoutBy;
+ var baseCategoryDimIndex;
+ var categoryWayValueDimStart;
+ coordDimensions = coordDimensions.slice();
+ each(coordDimensions, function(coordDimInfoLoose, coordDimIdx) {
+ var coordDimInfo = isObject(coordDimInfoLoose) ? coordDimInfoLoose : coordDimensions[coordDimIdx] = {
+ name: coordDimInfoLoose
+ };
+ if (coordDimInfo.type === "ordinal" && baseCategoryDimIndex == null) {
+ baseCategoryDimIndex = coordDimIdx;
+ categoryWayValueDimStart = getDataDimCountOnCoordDim(coordDimInfo);
+ }
+ encode[coordDimInfo.name] = [];
+ });
+ var datasetRecord = datasetMap.get(key) || datasetMap.set(key, {
+ categoryWayDim: categoryWayValueDimStart,
+ valueWayDim: 0
+ });
+ each(coordDimensions, function(coordDimInfo, coordDimIdx) {
+ var coordDimName = coordDimInfo.name;
+ var count2 = getDataDimCountOnCoordDim(coordDimInfo);
+ if (baseCategoryDimIndex == null) {
+ var start2 = datasetRecord.valueWayDim;
+ pushDim(encode[coordDimName], start2, count2);
+ pushDim(encodeSeriesName, start2, count2);
+ datasetRecord.valueWayDim += count2;
+ } else if (baseCategoryDimIndex === coordDimIdx) {
+ pushDim(encode[coordDimName], 0, count2);
+ pushDim(encodeItemName, 0, count2);
+ } else {
+ var start2 = datasetRecord.categoryWayDim;
+ pushDim(encode[coordDimName], start2, count2);
+ pushDim(encodeSeriesName, start2, count2);
+ datasetRecord.categoryWayDim += count2;
+ }
+ });
+ function pushDim(dimIdxArr, idxFrom, idxCount) {
+ for (var i = 0; i < idxCount; i++) {
+ dimIdxArr.push(idxFrom + i);
+ }
+ }
+ function getDataDimCountOnCoordDim(coordDimInfo) {
+ var dimsDef = coordDimInfo.dimsDef;
+ return dimsDef ? dimsDef.length : 1;
+ }
+ encodeItemName.length && (encode.itemName = encodeItemName);
+ encodeSeriesName.length && (encode.seriesName = encodeSeriesName);
+ return encode;
+}
+function makeSeriesEncodeForNameBased(seriesModel, source, dimCount) {
+ var encode = {};
+ var datasetModel = querySeriesUpstreamDatasetModel(seriesModel);
+ if (!datasetModel) {
+ return encode;
+ }
+ var sourceFormat = source.sourceFormat;
+ var dimensionsDefine = source.dimensionsDefine;
+ var potentialNameDimIndex;
+ if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
+ each(dimensionsDefine, function(dim, idx) {
+ if ((isObject(dim) ? dim.name : dim) === "name") {
+ potentialNameDimIndex = idx;
+ }
+ });
+ }
+ var idxResult = function() {
+ var idxRes0 = {};
+ var idxRes1 = {};
+ var guessRecords = [];
+ for (var i = 0, len2 = Math.min(5, dimCount); i < len2; i++) {
+ var guessResult = doGuessOrdinal(source.data, sourceFormat, source.seriesLayoutBy, dimensionsDefine, source.startIndex, i);
+ guessRecords.push(guessResult);
+ var isPureNumber = guessResult === BE_ORDINAL.Not;
+ if (isPureNumber && idxRes0.v == null && i !== potentialNameDimIndex) {
+ idxRes0.v = i;
+ }
+ if (idxRes0.n == null || idxRes0.n === idxRes0.v || !isPureNumber && guessRecords[idxRes0.n] === BE_ORDINAL.Not) {
+ idxRes0.n = i;
+ }
+ if (fulfilled(idxRes0) && guessRecords[idxRes0.n] !== BE_ORDINAL.Not) {
+ return idxRes0;
+ }
+ if (!isPureNumber) {
+ if (guessResult === BE_ORDINAL.Might && idxRes1.v == null && i !== potentialNameDimIndex) {
+ idxRes1.v = i;
+ }
+ if (idxRes1.n == null || idxRes1.n === idxRes1.v) {
+ idxRes1.n = i;
+ }
+ }
+ }
+ function fulfilled(idxResult2) {
+ return idxResult2.v != null && idxResult2.n != null;
+ }
+ return fulfilled(idxRes0) ? idxRes0 : fulfilled(idxRes1) ? idxRes1 : null;
+ }();
+ if (idxResult) {
+ encode.value = [idxResult.v];
+ var nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;
+ encode.itemName = [nameDimIndex];
+ encode.seriesName = [nameDimIndex];
+ }
+ return encode;
+}
+function querySeriesUpstreamDatasetModel(seriesModel) {
+ var thisData = seriesModel.get("data", true);
+ if (!thisData) {
+ return queryReferringComponents(seriesModel.ecModel, "dataset", {
+ index: seriesModel.get("datasetIndex", true),
+ id: seriesModel.get("datasetId", true)
+ }, SINGLE_REFERRING).models[0];
+ }
+}
+function queryDatasetUpstreamDatasetModels(datasetModel) {
+ if (!datasetModel.get("transform", true) && !datasetModel.get("fromTransformResult", true)) {
+ return [];
+ }
+ return queryReferringComponents(datasetModel.ecModel, "dataset", {
+ index: datasetModel.get("fromDatasetIndex", true),
+ id: datasetModel.get("fromDatasetId", true)
+ }, SINGLE_REFERRING).models;
+}
+function guessOrdinal(source, dimIndex) {
+ return doGuessOrdinal(source.data, source.sourceFormat, source.seriesLayoutBy, source.dimensionsDefine, source.startIndex, dimIndex);
+}
+function doGuessOrdinal(data, sourceFormat, seriesLayoutBy, dimensionsDefine, startIndex, dimIndex) {
+ var result;
+ var maxLoop = 5;
+ if (isTypedArray(data)) {
+ return BE_ORDINAL.Not;
+ }
+ var dimName;
+ var dimType;
+ if (dimensionsDefine) {
+ var dimDefItem = dimensionsDefine[dimIndex];
+ if (isObject(dimDefItem)) {
+ dimName = dimDefItem.name;
+ dimType = dimDefItem.type;
+ } else if (isString(dimDefItem)) {
+ dimName = dimDefItem;
+ }
+ }
+ if (dimType != null) {
+ return dimType === "ordinal" ? BE_ORDINAL.Must : BE_ORDINAL.Not;
+ }
+ if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
+ var dataArrayRows = data;
+ if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {
+ var sample = dataArrayRows[dimIndex];
+ for (var i = 0; i < (sample || []).length && i < maxLoop; i++) {
+ if ((result = detectValue(sample[startIndex + i])) != null) {
+ return result;
+ }
+ }
+ } else {
+ for (var i = 0; i < dataArrayRows.length && i < maxLoop; i++) {
+ var row = dataArrayRows[startIndex + i];
+ if (row && (result = detectValue(row[dimIndex])) != null) {
+ return result;
+ }
+ }
+ }
+ } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
+ var dataObjectRows = data;
+ if (!dimName) {
+ return BE_ORDINAL.Not;
+ }
+ for (var i = 0; i < dataObjectRows.length && i < maxLoop; i++) {
+ var item = dataObjectRows[i];
+ if (item && (result = detectValue(item[dimName])) != null) {
+ return result;
+ }
+ }
+ } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
+ var dataKeyedColumns = data;
+ if (!dimName) {
+ return BE_ORDINAL.Not;
+ }
+ var sample = dataKeyedColumns[dimName];
+ if (!sample || isTypedArray(sample)) {
+ return BE_ORDINAL.Not;
+ }
+ for (var i = 0; i < sample.length && i < maxLoop; i++) {
+ if ((result = detectValue(sample[i])) != null) {
+ return result;
+ }
+ }
+ } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
+ var dataOriginal = data;
+ for (var i = 0; i < dataOriginal.length && i < maxLoop; i++) {
+ var item = dataOriginal[i];
+ var val = getDataItemValue(item);
+ if (!isArray(val)) {
+ return BE_ORDINAL.Not;
+ }
+ if ((result = detectValue(val[dimIndex])) != null) {
+ return result;
+ }
+ }
+ }
+ function detectValue(val2) {
+ var beStr = isString(val2);
+ if (val2 != null && Number.isFinite(Number(val2)) && val2 !== "") {
+ return beStr ? BE_ORDINAL.Might : BE_ORDINAL.Not;
+ } else if (beStr && val2 !== "-") {
+ return BE_ORDINAL.Must;
+ }
+ }
+ return BE_ORDINAL.Not;
+}
+
+// node_modules/echarts/lib/model/internalComponentCreator.js
+var internalOptionCreatorMap = createHashMap();
+function registerInternalOptionCreator(mainType, creator) {
+ assert(internalOptionCreatorMap.get(mainType) == null && creator);
+ internalOptionCreatorMap.set(mainType, creator);
+}
+function concatInternalOptions(ecModel, mainType, newCmptOptionList) {
+ var internalOptionCreator = internalOptionCreatorMap.get(mainType);
+ if (!internalOptionCreator) {
+ return newCmptOptionList;
+ }
+ var internalOptions = internalOptionCreator(ecModel);
+ if (!internalOptions) {
+ return newCmptOptionList;
+ }
+ if (true) {
+ for (var i = 0; i < internalOptions.length; i++) {
+ assert(isComponentIdInternal(internalOptions[i]));
+ }
+ }
+ return newCmptOptionList.concat(internalOptions);
+}
+
+// node_modules/echarts/lib/model/mixin/palette.js
+var innerColor = makeInner();
+var innerDecal = makeInner();
+var PaletteMixin = function() {
+ function PaletteMixin2() {
+ }
+ PaletteMixin2.prototype.getColorFromPalette = function(name, scope, requestNum) {
+ var defaultPalette = normalizeToArray(this.get("color", true));
+ var layeredPalette = this.get("colorLayer", true);
+ return getFromPalette(this, innerColor, defaultPalette, layeredPalette, name, scope, requestNum);
+ };
+ PaletteMixin2.prototype.clearColorPalette = function() {
+ clearPalette(this, innerColor);
+ };
+ return PaletteMixin2;
+}();
+function getDecalFromPalette(ecModel, name, scope, requestNum) {
+ var defaultDecals = normalizeToArray(ecModel.get(["aria", "decal", "decals"]));
+ return getFromPalette(ecModel, innerDecal, defaultDecals, null, name, scope, requestNum);
+}
+function getNearestPalette(palettes, requestColorNum) {
+ var paletteNum = palettes.length;
+ for (var i = 0; i < paletteNum; i++) {
+ if (palettes[i].length > requestColorNum) {
+ return palettes[i];
+ }
+ }
+ return palettes[paletteNum - 1];
+}
+function getFromPalette(that, inner23, defaultPalette, layeredPalette, name, scope, requestNum) {
+ scope = scope || that;
+ var scopeFields = inner23(scope);
+ var paletteIdx = scopeFields.paletteIdx || 0;
+ var paletteNameMap = scopeFields.paletteNameMap = scopeFields.paletteNameMap || {};
+ if (paletteNameMap.hasOwnProperty(name)) {
+ return paletteNameMap[name];
+ }
+ var palette = requestNum == null || !layeredPalette ? defaultPalette : getNearestPalette(layeredPalette, requestNum);
+ palette = palette || defaultPalette;
+ if (!palette || !palette.length) {
+ return;
+ }
+ var pickedPaletteItem = palette[paletteIdx];
+ if (name) {
+ paletteNameMap[name] = pickedPaletteItem;
+ }
+ scopeFields.paletteIdx = (paletteIdx + 1) % palette.length;
+ return pickedPaletteItem;
+}
+function clearPalette(that, inner23) {
+ inner23(that).paletteIdx = 0;
+ inner23(that).paletteNameMap = {};
+}
+
+// node_modules/echarts/lib/model/Global.js
+var reCreateSeriesIndices;
+var assertSeriesInitialized;
+var initBase;
+var OPTION_INNER_KEY = "\0_ec_inner";
+var OPTION_INNER_VALUE = 1;
+var BUITIN_COMPONENTS_MAP = {
+ grid: "GridComponent",
+ polar: "PolarComponent",
+ geo: "GeoComponent",
+ singleAxis: "SingleAxisComponent",
+ parallel: "ParallelComponent",
+ calendar: "CalendarComponent",
+ graphic: "GraphicComponent",
+ toolbox: "ToolboxComponent",
+ tooltip: "TooltipComponent",
+ axisPointer: "AxisPointerComponent",
+ brush: "BrushComponent",
+ title: "TitleComponent",
+ timeline: "TimelineComponent",
+ markPoint: "MarkPointComponent",
+ markLine: "MarkLineComponent",
+ markArea: "MarkAreaComponent",
+ legend: "LegendComponent",
+ dataZoom: "DataZoomComponent",
+ visualMap: "VisualMapComponent",
+ xAxis: "GridComponent",
+ yAxis: "GridComponent",
+ angleAxis: "PolarComponent",
+ radiusAxis: "PolarComponent"
+};
+var BUILTIN_CHARTS_MAP = {
+ line: "LineChart",
+ bar: "BarChart",
+ pie: "PieChart",
+ scatter: "ScatterChart",
+ radar: "RadarChart",
+ map: "MapChart",
+ tree: "TreeChart",
+ treemap: "TreemapChart",
+ graph: "GraphChart",
+ gauge: "GaugeChart",
+ funnel: "FunnelChart",
+ parallel: "ParallelChart",
+ sankey: "SankeyChart",
+ boxplot: "BoxplotChart",
+ candlestick: "CandlestickChart",
+ effectScatter: "EffectScatterChart",
+ lines: "LinesChart",
+ heatmap: "HeatmapChart",
+ pictorialBar: "PictorialBarChart",
+ themeRiver: "ThemeRiverChart",
+ sunburst: "SunburstChart",
+ custom: "CustomChart"
+};
+var componetsMissingLogPrinted = {};
+function checkMissingComponents(option) {
+ each(option, function(componentOption, mainType) {
+ if (!Component_default.hasClass(mainType)) {
+ var componentImportName = BUITIN_COMPONENTS_MAP[mainType];
+ if (componentImportName && !componetsMissingLogPrinted[componentImportName]) {
+ error("Component " + mainType + " is used but not imported.\nimport { " + componentImportName + " } from 'echarts/components';\necharts.use([" + componentImportName + "]);");
+ componetsMissingLogPrinted[componentImportName] = true;
+ }
+ }
+ });
+}
+var GlobalModel = function(_super) {
+ __extends(GlobalModel2, _super);
+ function GlobalModel2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ GlobalModel2.prototype.init = function(option, parentModel, ecModel, theme2, locale, optionManager) {
+ theme2 = theme2 || {};
+ this.option = null;
+ this._theme = new Model_default(theme2);
+ this._locale = new Model_default(locale);
+ this._optionManager = optionManager;
+ };
+ GlobalModel2.prototype.setOption = function(option, opts, optionPreprocessorFuncs2) {
+ if (true) {
+ assert(option != null, "option is null/undefined");
+ assert(option[OPTION_INNER_KEY] !== OPTION_INNER_VALUE, "please use chart.getOption()");
+ }
+ var innerOpt = normalizeSetOptionInput(opts);
+ this._optionManager.setOption(option, optionPreprocessorFuncs2, innerOpt);
+ this._resetOption(null, innerOpt);
+ };
+ GlobalModel2.prototype.resetOption = function(type, opt) {
+ return this._resetOption(type, normalizeSetOptionInput(opt));
+ };
+ GlobalModel2.prototype._resetOption = function(type, opt) {
+ var optionChanged = false;
+ var optionManager = this._optionManager;
+ if (!type || type === "recreate") {
+ var baseOption = optionManager.mountOption(type === "recreate");
+ if (true) {
+ checkMissingComponents(baseOption);
+ }
+ if (!this.option || type === "recreate") {
+ initBase(this, baseOption);
+ } else {
+ this.restoreData();
+ this._mergeOption(baseOption, opt);
+ }
+ optionChanged = true;
+ }
+ if (type === "timeline" || type === "media") {
+ this.restoreData();
+ }
+ if (!type || type === "recreate" || type === "timeline") {
+ var timelineOption = optionManager.getTimelineOption(this);
+ if (timelineOption) {
+ optionChanged = true;
+ this._mergeOption(timelineOption, opt);
+ }
+ }
+ if (!type || type === "recreate" || type === "media") {
+ var mediaOptions = optionManager.getMediaOption(this);
+ if (mediaOptions.length) {
+ each(mediaOptions, function(mediaOption) {
+ optionChanged = true;
+ this._mergeOption(mediaOption, opt);
+ }, this);
+ }
+ }
+ return optionChanged;
+ };
+ GlobalModel2.prototype.mergeOption = function(option) {
+ this._mergeOption(option, null);
+ };
+ GlobalModel2.prototype._mergeOption = function(newOption, opt) {
+ var option = this.option;
+ var componentsMap = this._componentsMap;
+ var componentsCount = this._componentsCount;
+ var newCmptTypes = [];
+ var newCmptTypeMap = createHashMap();
+ var replaceMergeMainTypeMap = opt && opt.replaceMergeMainTypeMap;
+ resetSourceDefaulter(this);
+ each(newOption, function(componentOption, mainType) {
+ if (componentOption == null) {
+ return;
+ }
+ if (!Component_default.hasClass(mainType)) {
+ option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);
+ } else if (mainType) {
+ newCmptTypes.push(mainType);
+ newCmptTypeMap.set(mainType, true);
+ }
+ });
+ if (replaceMergeMainTypeMap) {
+ replaceMergeMainTypeMap.each(function(val, mainTypeInReplaceMerge) {
+ if (Component_default.hasClass(mainTypeInReplaceMerge) && !newCmptTypeMap.get(mainTypeInReplaceMerge)) {
+ newCmptTypes.push(mainTypeInReplaceMerge);
+ newCmptTypeMap.set(mainTypeInReplaceMerge, true);
+ }
+ });
+ }
+ Component_default.topologicalTravel(newCmptTypes, Component_default.getAllClassMainTypes(), visitComponent, this);
+ function visitComponent(mainType) {
+ var newCmptOptionList = concatInternalOptions(this, mainType, normalizeToArray(newOption[mainType]));
+ var oldCmptList = componentsMap.get(mainType);
+ var mergeMode = !oldCmptList ? "replaceAll" : replaceMergeMainTypeMap && replaceMergeMainTypeMap.get(mainType) ? "replaceMerge" : "normalMerge";
+ var mappingResult = mappingToExists(oldCmptList, newCmptOptionList, mergeMode);
+ setComponentTypeToKeyInfo(mappingResult, mainType, Component_default);
+ option[mainType] = null;
+ componentsMap.set(mainType, null);
+ componentsCount.set(mainType, 0);
+ var optionsByMainType = [];
+ var cmptsByMainType = [];
+ var cmptsCountByMainType = 0;
+ var tooltipExists;
+ var tooltipWarningLogged;
+ each(mappingResult, function(resultItem, index) {
+ var componentModel = resultItem.existing;
+ var newCmptOption = resultItem.newOption;
+ if (!newCmptOption) {
+ if (componentModel) {
+ componentModel.mergeOption({}, this);
+ componentModel.optionUpdated({}, false);
+ }
+ } else {
+ var isSeriesType = mainType === "series";
+ var ComponentModelClass = Component_default.getClass(
+ mainType,
+ resultItem.keyInfo.subType,
+ !isSeriesType
+ );
+ if (!ComponentModelClass) {
+ if (true) {
+ var subType = resultItem.keyInfo.subType;
+ var seriesImportName = BUILTIN_CHARTS_MAP[subType];
+ if (!componetsMissingLogPrinted[subType]) {
+ componetsMissingLogPrinted[subType] = true;
+ if (seriesImportName) {
+ error("Series " + subType + " is used but not imported.\nimport { " + seriesImportName + " } from 'echarts/charts';\necharts.use([" + seriesImportName + "]);");
+ } else {
+ error("Unknown series " + subType);
+ }
+ }
+ }
+ return;
+ }
+ if (mainType === "tooltip") {
+ if (tooltipExists) {
+ if (true) {
+ if (!tooltipWarningLogged) {
+ warn("Currently only one tooltip component is allowed.");
+ tooltipWarningLogged = true;
+ }
+ }
+ return;
+ }
+ tooltipExists = true;
+ }
+ if (componentModel && componentModel.constructor === ComponentModelClass) {
+ componentModel.name = resultItem.keyInfo.name;
+ componentModel.mergeOption(newCmptOption, this);
+ componentModel.optionUpdated(newCmptOption, false);
+ } else {
+ var extraOpt = extend({
+ componentIndex: index
+ }, resultItem.keyInfo);
+ componentModel = new ComponentModelClass(newCmptOption, this, this, extraOpt);
+ extend(componentModel, extraOpt);
+ if (resultItem.brandNew) {
+ componentModel.__requireNewView = true;
+ }
+ componentModel.init(newCmptOption, this, this);
+ componentModel.optionUpdated(null, true);
+ }
+ }
+ if (componentModel) {
+ optionsByMainType.push(componentModel.option);
+ cmptsByMainType.push(componentModel);
+ cmptsCountByMainType++;
+ } else {
+ optionsByMainType.push(void 0);
+ cmptsByMainType.push(void 0);
+ }
+ }, this);
+ option[mainType] = optionsByMainType;
+ componentsMap.set(mainType, cmptsByMainType);
+ componentsCount.set(mainType, cmptsCountByMainType);
+ if (mainType === "series") {
+ reCreateSeriesIndices(this);
+ }
+ }
+ if (!this._seriesIndices) {
+ reCreateSeriesIndices(this);
+ }
+ };
+ GlobalModel2.prototype.getOption = function() {
+ var option = clone(this.option);
+ each(option, function(optInMainType, mainType) {
+ if (Component_default.hasClass(mainType)) {
+ var opts = normalizeToArray(optInMainType);
+ var realLen = opts.length;
+ var metNonInner = false;
+ for (var i = realLen - 1; i >= 0; i--) {
+ if (opts[i] && !isComponentIdInternal(opts[i])) {
+ metNonInner = true;
+ } else {
+ opts[i] = null;
+ !metNonInner && realLen--;
+ }
+ }
+ opts.length = realLen;
+ option[mainType] = opts;
+ }
+ });
+ delete option[OPTION_INNER_KEY];
+ return option;
+ };
+ GlobalModel2.prototype.getTheme = function() {
+ return this._theme;
+ };
+ GlobalModel2.prototype.getLocaleModel = function() {
+ return this._locale;
+ };
+ GlobalModel2.prototype.setUpdatePayload = function(payload) {
+ this._payload = payload;
+ };
+ GlobalModel2.prototype.getUpdatePayload = function() {
+ return this._payload;
+ };
+ GlobalModel2.prototype.getComponent = function(mainType, idx) {
+ var list = this._componentsMap.get(mainType);
+ if (list) {
+ var cmpt = list[idx || 0];
+ if (cmpt) {
+ return cmpt;
+ } else if (idx == null) {
+ for (var i = 0; i < list.length; i++) {
+ if (list[i]) {
+ return list[i];
+ }
+ }
+ }
+ }
+ };
+ GlobalModel2.prototype.queryComponents = function(condition) {
+ var mainType = condition.mainType;
+ if (!mainType) {
+ return [];
+ }
+ var index = condition.index;
+ var id = condition.id;
+ var name = condition.name;
+ var cmpts = this._componentsMap.get(mainType);
+ if (!cmpts || !cmpts.length) {
+ return [];
+ }
+ var result;
+ if (index != null) {
+ result = [];
+ each(normalizeToArray(index), function(idx) {
+ cmpts[idx] && result.push(cmpts[idx]);
+ });
+ } else if (id != null) {
+ result = queryByIdOrName("id", id, cmpts);
+ } else if (name != null) {
+ result = queryByIdOrName("name", name, cmpts);
+ } else {
+ result = filter(cmpts, function(cmpt) {
+ return !!cmpt;
+ });
+ }
+ return filterBySubType(result, condition);
+ };
+ GlobalModel2.prototype.findComponents = function(condition) {
+ var query = condition.query;
+ var mainType = condition.mainType;
+ var queryCond = getQueryCond(query);
+ var result = queryCond ? this.queryComponents(queryCond) : filter(this._componentsMap.get(mainType), function(cmpt) {
+ return !!cmpt;
+ });
+ return doFilter(filterBySubType(result, condition));
+ function getQueryCond(q) {
+ var indexAttr = mainType + "Index";
+ var idAttr = mainType + "Id";
+ var nameAttr = mainType + "Name";
+ return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {
+ mainType,
+ index: q[indexAttr],
+ id: q[idAttr],
+ name: q[nameAttr]
+ } : null;
+ }
+ function doFilter(res) {
+ return condition.filter ? filter(res, condition.filter) : res;
+ }
+ };
+ GlobalModel2.prototype.eachComponent = function(mainType, cb, context) {
+ var componentsMap = this._componentsMap;
+ if (isFunction(mainType)) {
+ var ctxForAll_1 = cb;
+ var cbForAll_1 = mainType;
+ componentsMap.each(function(cmpts2, componentType) {
+ for (var i2 = 0; cmpts2 && i2 < cmpts2.length; i2++) {
+ var cmpt2 = cmpts2[i2];
+ cmpt2 && cbForAll_1.call(ctxForAll_1, componentType, cmpt2, cmpt2.componentIndex);
+ }
+ });
+ } else {
+ var cmpts = isString(mainType) ? componentsMap.get(mainType) : isObject(mainType) ? this.findComponents(mainType) : null;
+ for (var i = 0; cmpts && i < cmpts.length; i++) {
+ var cmpt = cmpts[i];
+ cmpt && cb.call(context, cmpt, cmpt.componentIndex);
+ }
+ }
+ };
+ GlobalModel2.prototype.getSeriesByName = function(name) {
+ var nameStr = convertOptionIdName(name, null);
+ return filter(this._componentsMap.get("series"), function(oneSeries) {
+ return !!oneSeries && nameStr != null && oneSeries.name === nameStr;
+ });
+ };
+ GlobalModel2.prototype.getSeriesByIndex = function(seriesIndex) {
+ return this._componentsMap.get("series")[seriesIndex];
+ };
+ GlobalModel2.prototype.getSeriesByType = function(subType) {
+ return filter(this._componentsMap.get("series"), function(oneSeries) {
+ return !!oneSeries && oneSeries.subType === subType;
+ });
+ };
+ GlobalModel2.prototype.getSeries = function() {
+ return filter(this._componentsMap.get("series"), function(oneSeries) {
+ return !!oneSeries;
+ });
+ };
+ GlobalModel2.prototype.getSeriesCount = function() {
+ return this._componentsCount.get("series");
+ };
+ GlobalModel2.prototype.eachSeries = function(cb, context) {
+ assertSeriesInitialized(this);
+ each(this._seriesIndices, function(rawSeriesIndex) {
+ var series = this._componentsMap.get("series")[rawSeriesIndex];
+ cb.call(context, series, rawSeriesIndex);
+ }, this);
+ };
+ GlobalModel2.prototype.eachRawSeries = function(cb, context) {
+ each(this._componentsMap.get("series"), function(series) {
+ series && cb.call(context, series, series.componentIndex);
+ });
+ };
+ GlobalModel2.prototype.eachSeriesByType = function(subType, cb, context) {
+ assertSeriesInitialized(this);
+ each(this._seriesIndices, function(rawSeriesIndex) {
+ var series = this._componentsMap.get("series")[rawSeriesIndex];
+ if (series.subType === subType) {
+ cb.call(context, series, rawSeriesIndex);
+ }
+ }, this);
+ };
+ GlobalModel2.prototype.eachRawSeriesByType = function(subType, cb, context) {
+ return each(this.getSeriesByType(subType), cb, context);
+ };
+ GlobalModel2.prototype.isSeriesFiltered = function(seriesModel) {
+ assertSeriesInitialized(this);
+ return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;
+ };
+ GlobalModel2.prototype.getCurrentSeriesIndices = function() {
+ return (this._seriesIndices || []).slice();
+ };
+ GlobalModel2.prototype.filterSeries = function(cb, context) {
+ assertSeriesInitialized(this);
+ var newSeriesIndices = [];
+ each(this._seriesIndices, function(seriesRawIdx) {
+ var series = this._componentsMap.get("series")[seriesRawIdx];
+ cb.call(context, series, seriesRawIdx) && newSeriesIndices.push(seriesRawIdx);
+ }, this);
+ this._seriesIndices = newSeriesIndices;
+ this._seriesIndicesMap = createHashMap(newSeriesIndices);
+ };
+ GlobalModel2.prototype.restoreData = function(payload) {
+ reCreateSeriesIndices(this);
+ var componentsMap = this._componentsMap;
+ var componentTypes = [];
+ componentsMap.each(function(components, componentType) {
+ if (Component_default.hasClass(componentType)) {
+ componentTypes.push(componentType);
+ }
+ });
+ Component_default.topologicalTravel(componentTypes, Component_default.getAllClassMainTypes(), function(componentType) {
+ each(componentsMap.get(componentType), function(component) {
+ if (component && (componentType !== "series" || !isNotTargetSeries(component, payload))) {
+ component.restoreData();
+ }
+ });
+ });
+ };
+ GlobalModel2.internalField = function() {
+ reCreateSeriesIndices = function(ecModel) {
+ var seriesIndices = ecModel._seriesIndices = [];
+ each(ecModel._componentsMap.get("series"), function(series) {
+ series && seriesIndices.push(series.componentIndex);
+ });
+ ecModel._seriesIndicesMap = createHashMap(seriesIndices);
+ };
+ assertSeriesInitialized = function(ecModel) {
+ if (true) {
+ if (!ecModel._seriesIndices) {
+ throw new Error("Option should contains series.");
+ }
+ }
+ };
+ initBase = function(ecModel, baseOption) {
+ ecModel.option = {};
+ ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE;
+ ecModel._componentsMap = createHashMap({
+ series: []
+ });
+ ecModel._componentsCount = createHashMap();
+ var airaOption = baseOption.aria;
+ if (isObject(airaOption) && airaOption.enabled == null) {
+ airaOption.enabled = true;
+ }
+ mergeTheme(baseOption, ecModel._theme.option);
+ merge(baseOption, globalDefault_default, false);
+ ecModel._mergeOption(baseOption, null);
+ };
+ }();
+ return GlobalModel2;
+}(Model_default);
+function isNotTargetSeries(seriesModel, payload) {
+ if (payload) {
+ var index = payload.seriesIndex;
+ var id = payload.seriesId;
+ var name_1 = payload.seriesName;
+ return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name_1 != null && seriesModel.name !== name_1;
+ }
+}
+function mergeTheme(option, theme2) {
+ var notMergeColorLayer = option.color && !option.colorLayer;
+ each(theme2, function(themeItem, name) {
+ if (name === "colorLayer" && notMergeColorLayer) {
+ return;
+ }
+ if (!Component_default.hasClass(name)) {
+ if (typeof themeItem === "object") {
+ option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);
+ } else {
+ if (option[name] == null) {
+ option[name] = themeItem;
+ }
+ }
+ }
+ });
+}
+function queryByIdOrName(attr, idOrName, cmpts) {
+ if (isArray(idOrName)) {
+ var keyMap_1 = createHashMap();
+ each(idOrName, function(idOrNameItem) {
+ if (idOrNameItem != null) {
+ var idName = convertOptionIdName(idOrNameItem, null);
+ idName != null && keyMap_1.set(idOrNameItem, true);
+ }
+ });
+ return filter(cmpts, function(cmpt) {
+ return cmpt && keyMap_1.get(cmpt[attr]);
+ });
+ } else {
+ var idName_1 = convertOptionIdName(idOrName, null);
+ return filter(cmpts, function(cmpt) {
+ return cmpt && idName_1 != null && cmpt[attr] === idName_1;
+ });
+ }
+}
+function filterBySubType(components, condition) {
+ return condition.hasOwnProperty("subType") ? filter(components, function(cmpt) {
+ return cmpt && cmpt.subType === condition.subType;
+ }) : components;
+}
+function normalizeSetOptionInput(opts) {
+ var replaceMergeMainTypeMap = createHashMap();
+ opts && each(normalizeToArray(opts.replaceMerge), function(mainType) {
+ if (true) {
+ assert(Component_default.hasClass(mainType), '"' + mainType + '" is not valid component main type in "replaceMerge"');
+ }
+ replaceMergeMainTypeMap.set(mainType, true);
+ });
+ return {
+ replaceMergeMainTypeMap
+ };
+}
+mixin(GlobalModel, PaletteMixin);
+var Global_default = GlobalModel;
+
+// node_modules/echarts/lib/core/ExtensionAPI.js
+var availableMethods = [
+ "getDom",
+ "getZr",
+ "getWidth",
+ "getHeight",
+ "getDevicePixelRatio",
+ "dispatchAction",
+ "isSSR",
+ "isDisposed",
+ "on",
+ "off",
+ "getDataURL",
+ "getConnectedDataURL",
+ "getOption",
+ "getId",
+ "updateLabelLayout"
+];
+var ExtensionAPI = function() {
+ function ExtensionAPI2(ecInstance) {
+ each(availableMethods, function(methodName) {
+ this[methodName] = bind(ecInstance[methodName], ecInstance);
+ }, this);
+ }
+ return ExtensionAPI2;
+}();
+var ExtensionAPI_default = ExtensionAPI;
+
+// node_modules/echarts/lib/core/CoordinateSystem.js
+var coordinateSystemCreators = {};
+var CoordinateSystemManager = function() {
+ function CoordinateSystemManager2() {
+ this._coordinateSystems = [];
+ }
+ CoordinateSystemManager2.prototype.create = function(ecModel, api) {
+ var coordinateSystems = [];
+ each(coordinateSystemCreators, function(creator, type) {
+ var list = creator.create(ecModel, api);
+ coordinateSystems = coordinateSystems.concat(list || []);
+ });
+ this._coordinateSystems = coordinateSystems;
+ };
+ CoordinateSystemManager2.prototype.update = function(ecModel, api) {
+ each(this._coordinateSystems, function(coordSys) {
+ coordSys.update && coordSys.update(ecModel, api);
+ });
+ };
+ CoordinateSystemManager2.prototype.getCoordinateSystems = function() {
+ return this._coordinateSystems.slice();
+ };
+ CoordinateSystemManager2.register = function(type, creator) {
+ coordinateSystemCreators[type] = creator;
+ };
+ CoordinateSystemManager2.get = function(type) {
+ return coordinateSystemCreators[type];
+ };
+ return CoordinateSystemManager2;
+}();
+var CoordinateSystem_default = CoordinateSystemManager;
+
+// node_modules/echarts/lib/model/OptionManager.js
+var QUERY_REG = /^(min|max)?(.+)$/;
+var OptionManager = function() {
+ function OptionManager2(api) {
+ this._timelineOptions = [];
+ this._mediaList = [];
+ this._currentMediaIndices = [];
+ this._api = api;
+ }
+ OptionManager2.prototype.setOption = function(rawOption, optionPreprocessorFuncs2, opt) {
+ if (rawOption) {
+ each(normalizeToArray(rawOption.series), function(series) {
+ series && series.data && isTypedArray(series.data) && setAsPrimitive(series.data);
+ });
+ each(normalizeToArray(rawOption.dataset), function(dataset) {
+ dataset && dataset.source && isTypedArray(dataset.source) && setAsPrimitive(dataset.source);
+ });
+ }
+ rawOption = clone(rawOption);
+ var optionBackup = this._optionBackup;
+ var newParsedOption = parseRawOption(rawOption, optionPreprocessorFuncs2, !optionBackup);
+ this._newBaseOption = newParsedOption.baseOption;
+ if (optionBackup) {
+ if (newParsedOption.timelineOptions.length) {
+ optionBackup.timelineOptions = newParsedOption.timelineOptions;
+ }
+ if (newParsedOption.mediaList.length) {
+ optionBackup.mediaList = newParsedOption.mediaList;
+ }
+ if (newParsedOption.mediaDefault) {
+ optionBackup.mediaDefault = newParsedOption.mediaDefault;
+ }
+ } else {
+ this._optionBackup = newParsedOption;
+ }
+ };
+ OptionManager2.prototype.mountOption = function(isRecreate) {
+ var optionBackup = this._optionBackup;
+ this._timelineOptions = optionBackup.timelineOptions;
+ this._mediaList = optionBackup.mediaList;
+ this._mediaDefault = optionBackup.mediaDefault;
+ this._currentMediaIndices = [];
+ return clone(isRecreate ? optionBackup.baseOption : this._newBaseOption);
+ };
+ OptionManager2.prototype.getTimelineOption = function(ecModel) {
+ var option;
+ var timelineOptions = this._timelineOptions;
+ if (timelineOptions.length) {
+ var timelineModel = ecModel.getComponent("timeline");
+ if (timelineModel) {
+ option = clone(
+ timelineOptions[timelineModel.getCurrentIndex()]
+ );
+ }
+ }
+ return option;
+ };
+ OptionManager2.prototype.getMediaOption = function(ecModel) {
+ var ecWidth = this._api.getWidth();
+ var ecHeight = this._api.getHeight();
+ var mediaList = this._mediaList;
+ var mediaDefault = this._mediaDefault;
+ var indices = [];
+ var result = [];
+ if (!mediaList.length && !mediaDefault) {
+ return result;
+ }
+ for (var i = 0, len2 = mediaList.length; i < len2; i++) {
+ if (applyMediaQuery(mediaList[i].query, ecWidth, ecHeight)) {
+ indices.push(i);
+ }
+ }
+ if (!indices.length && mediaDefault) {
+ indices = [-1];
+ }
+ if (indices.length && !indicesEquals(indices, this._currentMediaIndices)) {
+ result = map(indices, function(index) {
+ return clone(index === -1 ? mediaDefault.option : mediaList[index].option);
+ });
+ }
+ this._currentMediaIndices = indices;
+ return result;
+ };
+ return OptionManager2;
+}();
+function parseRawOption(rawOption, optionPreprocessorFuncs2, isNew) {
+ var mediaList = [];
+ var mediaDefault;
+ var baseOption;
+ var declaredBaseOption = rawOption.baseOption;
+ var timelineOnRoot = rawOption.timeline;
+ var timelineOptionsOnRoot = rawOption.options;
+ var mediaOnRoot = rawOption.media;
+ var hasMedia = !!rawOption.media;
+ var hasTimeline = !!(timelineOptionsOnRoot || timelineOnRoot || declaredBaseOption && declaredBaseOption.timeline);
+ if (declaredBaseOption) {
+ baseOption = declaredBaseOption;
+ if (!baseOption.timeline) {
+ baseOption.timeline = timelineOnRoot;
+ }
+ } else {
+ if (hasTimeline || hasMedia) {
+ rawOption.options = rawOption.media = null;
+ }
+ baseOption = rawOption;
+ }
+ if (hasMedia) {
+ if (isArray(mediaOnRoot)) {
+ each(mediaOnRoot, function(singleMedia) {
+ if (true) {
+ if (singleMedia && !singleMedia.option && isObject(singleMedia.query) && isObject(singleMedia.query.option)) {
+ error("Illegal media option. Must be like { media: [ { query: {}, option: {} } ] }");
+ }
+ }
+ if (singleMedia && singleMedia.option) {
+ if (singleMedia.query) {
+ mediaList.push(singleMedia);
+ } else if (!mediaDefault) {
+ mediaDefault = singleMedia;
+ }
+ }
+ });
+ } else {
+ if (true) {
+ error("Illegal media option. Must be an array. Like { media: [ {...}, {...} ] }");
+ }
+ }
+ }
+ doPreprocess(baseOption);
+ each(timelineOptionsOnRoot, function(option) {
+ return doPreprocess(option);
+ });
+ each(mediaList, function(media) {
+ return doPreprocess(media.option);
+ });
+ function doPreprocess(option) {
+ each(optionPreprocessorFuncs2, function(preProcess) {
+ preProcess(option, isNew);
+ });
+ }
+ return {
+ baseOption,
+ timelineOptions: timelineOptionsOnRoot || [],
+ mediaDefault,
+ mediaList
+ };
+}
+function applyMediaQuery(query, ecWidth, ecHeight) {
+ var realMap = {
+ width: ecWidth,
+ height: ecHeight,
+ aspectratio: ecWidth / ecHeight
+ };
+ var applicable = true;
+ each(query, function(value, attr) {
+ var matched = attr.match(QUERY_REG);
+ if (!matched || !matched[1] || !matched[2]) {
+ return;
+ }
+ var operator = matched[1];
+ var realAttr = matched[2].toLowerCase();
+ if (!compare(realMap[realAttr], value, operator)) {
+ applicable = false;
+ }
+ });
+ return applicable;
+}
+function compare(real, expect, operator) {
+ if (operator === "min") {
+ return real >= expect;
+ } else if (operator === "max") {
+ return real <= expect;
+ } else {
+ return real === expect;
+ }
+}
+function indicesEquals(indices1, indices2) {
+ return indices1.join(",") === indices2.join(",");
+}
+var OptionManager_default = OptionManager;
+
+// node_modules/echarts/lib/preprocessor/helper/compatStyle.js
+var each3 = each;
+var isObject2 = isObject;
+var POSSIBLE_STYLES = ["areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine"];
+function compatEC2ItemStyle(opt) {
+ var itemStyleOpt = opt && opt.itemStyle;
+ if (!itemStyleOpt) {
+ return;
+ }
+ for (var i = 0, len2 = POSSIBLE_STYLES.length; i < len2; i++) {
+ var styleName = POSSIBLE_STYLES[i];
+ var normalItemStyleOpt = itemStyleOpt.normal;
+ var emphasisItemStyleOpt = itemStyleOpt.emphasis;
+ if (normalItemStyleOpt && normalItemStyleOpt[styleName]) {
+ if (true) {
+ deprecateReplaceLog("itemStyle.normal." + styleName, styleName);
+ }
+ opt[styleName] = opt[styleName] || {};
+ if (!opt[styleName].normal) {
+ opt[styleName].normal = normalItemStyleOpt[styleName];
+ } else {
+ merge(opt[styleName].normal, normalItemStyleOpt[styleName]);
+ }
+ normalItemStyleOpt[styleName] = null;
+ }
+ if (emphasisItemStyleOpt && emphasisItemStyleOpt[styleName]) {
+ if (true) {
+ deprecateReplaceLog("itemStyle.emphasis." + styleName, "emphasis." + styleName);
+ }
+ opt[styleName] = opt[styleName] || {};
+ if (!opt[styleName].emphasis) {
+ opt[styleName].emphasis = emphasisItemStyleOpt[styleName];
+ } else {
+ merge(opt[styleName].emphasis, emphasisItemStyleOpt[styleName]);
+ }
+ emphasisItemStyleOpt[styleName] = null;
+ }
+ }
+}
+function convertNormalEmphasis(opt, optType, useExtend) {
+ if (opt && opt[optType] && (opt[optType].normal || opt[optType].emphasis)) {
+ var normalOpt = opt[optType].normal;
+ var emphasisOpt = opt[optType].emphasis;
+ if (normalOpt) {
+ if (true) {
+ deprecateLog("'normal' hierarchy in " + optType + " has been removed since 4.0. All style properties are configured in " + optType + " directly now.");
+ }
+ if (useExtend) {
+ opt[optType].normal = opt[optType].emphasis = null;
+ defaults(opt[optType], normalOpt);
+ } else {
+ opt[optType] = normalOpt;
+ }
+ }
+ if (emphasisOpt) {
+ if (true) {
+ deprecateLog(optType + ".emphasis has been changed to emphasis." + optType + " since 4.0");
+ }
+ opt.emphasis = opt.emphasis || {};
+ opt.emphasis[optType] = emphasisOpt;
+ if (emphasisOpt.focus) {
+ opt.emphasis.focus = emphasisOpt.focus;
+ }
+ if (emphasisOpt.blurScope) {
+ opt.emphasis.blurScope = emphasisOpt.blurScope;
+ }
+ }
+ }
+}
+function removeEC3NormalStatus(opt) {
+ convertNormalEmphasis(opt, "itemStyle");
+ convertNormalEmphasis(opt, "lineStyle");
+ convertNormalEmphasis(opt, "areaStyle");
+ convertNormalEmphasis(opt, "label");
+ convertNormalEmphasis(opt, "labelLine");
+ convertNormalEmphasis(opt, "upperLabel");
+ convertNormalEmphasis(opt, "edgeLabel");
+}
+function compatTextStyle(opt, propName) {
+ var labelOptSingle = isObject2(opt) && opt[propName];
+ var textStyle = isObject2(labelOptSingle) && labelOptSingle.textStyle;
+ if (textStyle) {
+ if (true) {
+ deprecateLog("textStyle hierarchy in " + propName + " has been removed since 4.0. All textStyle properties are configured in " + propName + " directly now.");
+ }
+ for (var i = 0, len2 = TEXT_STYLE_OPTIONS.length; i < len2; i++) {
+ var textPropName = TEXT_STYLE_OPTIONS[i];
+ if (textStyle.hasOwnProperty(textPropName)) {
+ labelOptSingle[textPropName] = textStyle[textPropName];
+ }
+ }
+ }
+}
+function compatEC3CommonStyles(opt) {
+ if (opt) {
+ removeEC3NormalStatus(opt);
+ compatTextStyle(opt, "label");
+ opt.emphasis && compatTextStyle(opt.emphasis, "label");
+ }
+}
+function processSeries(seriesOpt) {
+ if (!isObject2(seriesOpt)) {
+ return;
+ }
+ compatEC2ItemStyle(seriesOpt);
+ removeEC3NormalStatus(seriesOpt);
+ compatTextStyle(seriesOpt, "label");
+ compatTextStyle(seriesOpt, "upperLabel");
+ compatTextStyle(seriesOpt, "edgeLabel");
+ if (seriesOpt.emphasis) {
+ compatTextStyle(seriesOpt.emphasis, "label");
+ compatTextStyle(seriesOpt.emphasis, "upperLabel");
+ compatTextStyle(seriesOpt.emphasis, "edgeLabel");
+ }
+ var markPoint = seriesOpt.markPoint;
+ if (markPoint) {
+ compatEC2ItemStyle(markPoint);
+ compatEC3CommonStyles(markPoint);
+ }
+ var markLine = seriesOpt.markLine;
+ if (markLine) {
+ compatEC2ItemStyle(markLine);
+ compatEC3CommonStyles(markLine);
+ }
+ var markArea = seriesOpt.markArea;
+ if (markArea) {
+ compatEC3CommonStyles(markArea);
+ }
+ var data = seriesOpt.data;
+ if (seriesOpt.type === "graph") {
+ data = data || seriesOpt.nodes;
+ var edgeData = seriesOpt.links || seriesOpt.edges;
+ if (edgeData && !isTypedArray(edgeData)) {
+ for (var i = 0; i < edgeData.length; i++) {
+ compatEC3CommonStyles(edgeData[i]);
+ }
+ }
+ each(seriesOpt.categories, function(opt) {
+ removeEC3NormalStatus(opt);
+ });
+ }
+ if (data && !isTypedArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ compatEC3CommonStyles(data[i]);
+ }
+ }
+ markPoint = seriesOpt.markPoint;
+ if (markPoint && markPoint.data) {
+ var mpData = markPoint.data;
+ for (var i = 0; i < mpData.length; i++) {
+ compatEC3CommonStyles(mpData[i]);
+ }
+ }
+ markLine = seriesOpt.markLine;
+ if (markLine && markLine.data) {
+ var mlData = markLine.data;
+ for (var i = 0; i < mlData.length; i++) {
+ if (isArray(mlData[i])) {
+ compatEC3CommonStyles(mlData[i][0]);
+ compatEC3CommonStyles(mlData[i][1]);
+ } else {
+ compatEC3CommonStyles(mlData[i]);
+ }
+ }
+ }
+ if (seriesOpt.type === "gauge") {
+ compatTextStyle(seriesOpt, "axisLabel");
+ compatTextStyle(seriesOpt, "title");
+ compatTextStyle(seriesOpt, "detail");
+ } else if (seriesOpt.type === "treemap") {
+ convertNormalEmphasis(seriesOpt.breadcrumb, "itemStyle");
+ each(seriesOpt.levels, function(opt) {
+ removeEC3NormalStatus(opt);
+ });
+ } else if (seriesOpt.type === "tree") {
+ removeEC3NormalStatus(seriesOpt.leaves);
+ }
+}
+function toArr(o) {
+ return isArray(o) ? o : o ? [o] : [];
+}
+function toObj(o) {
+ return (isArray(o) ? o[0] : o) || {};
+}
+function globalCompatStyle(option, isTheme) {
+ each3(toArr(option.series), function(seriesOpt) {
+ isObject2(seriesOpt) && processSeries(seriesOpt);
+ });
+ var axes = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar"];
+ isTheme && axes.push("valueAxis", "categoryAxis", "logAxis", "timeAxis");
+ each3(axes, function(axisName) {
+ each3(toArr(option[axisName]), function(axisOpt) {
+ if (axisOpt) {
+ compatTextStyle(axisOpt, "axisLabel");
+ compatTextStyle(axisOpt.axisPointer, "label");
+ }
+ });
+ });
+ each3(toArr(option.parallel), function(parallelOpt) {
+ var parallelAxisDefault = parallelOpt && parallelOpt.parallelAxisDefault;
+ compatTextStyle(parallelAxisDefault, "axisLabel");
+ compatTextStyle(parallelAxisDefault && parallelAxisDefault.axisPointer, "label");
+ });
+ each3(toArr(option.calendar), function(calendarOpt) {
+ convertNormalEmphasis(calendarOpt, "itemStyle");
+ compatTextStyle(calendarOpt, "dayLabel");
+ compatTextStyle(calendarOpt, "monthLabel");
+ compatTextStyle(calendarOpt, "yearLabel");
+ });
+ each3(toArr(option.radar), function(radarOpt) {
+ compatTextStyle(radarOpt, "name");
+ if (radarOpt.name && radarOpt.axisName == null) {
+ radarOpt.axisName = radarOpt.name;
+ delete radarOpt.name;
+ if (true) {
+ deprecateLog("name property in radar component has been changed to axisName");
+ }
+ }
+ if (radarOpt.nameGap != null && radarOpt.axisNameGap == null) {
+ radarOpt.axisNameGap = radarOpt.nameGap;
+ delete radarOpt.nameGap;
+ if (true) {
+ deprecateLog("nameGap property in radar component has been changed to axisNameGap");
+ }
+ }
+ if (true) {
+ each3(radarOpt.indicator, function(indicatorOpt) {
+ if (indicatorOpt.text) {
+ deprecateReplaceLog("text", "name", "radar.indicator");
+ }
+ });
+ }
+ });
+ each3(toArr(option.geo), function(geoOpt) {
+ if (isObject2(geoOpt)) {
+ compatEC3CommonStyles(geoOpt);
+ each3(toArr(geoOpt.regions), function(regionObj) {
+ compatEC3CommonStyles(regionObj);
+ });
+ }
+ });
+ each3(toArr(option.timeline), function(timelineOpt) {
+ compatEC3CommonStyles(timelineOpt);
+ convertNormalEmphasis(timelineOpt, "label");
+ convertNormalEmphasis(timelineOpt, "itemStyle");
+ convertNormalEmphasis(timelineOpt, "controlStyle", true);
+ var data = timelineOpt.data;
+ isArray(data) && each(data, function(item) {
+ if (isObject(item)) {
+ convertNormalEmphasis(item, "label");
+ convertNormalEmphasis(item, "itemStyle");
+ }
+ });
+ });
+ each3(toArr(option.toolbox), function(toolboxOpt) {
+ convertNormalEmphasis(toolboxOpt, "iconStyle");
+ each3(toolboxOpt.feature, function(featureOpt) {
+ convertNormalEmphasis(featureOpt, "iconStyle");
+ });
+ });
+ compatTextStyle(toObj(option.axisPointer), "label");
+ compatTextStyle(toObj(option.tooltip).axisPointer, "label");
+}
+
+// node_modules/echarts/lib/preprocessor/backwardCompat.js
+function get(opt, path) {
+ var pathArr = path.split(",");
+ var obj = opt;
+ for (var i = 0; i < pathArr.length; i++) {
+ obj = obj && obj[pathArr[i]];
+ if (obj == null) {
+ break;
+ }
+ }
+ return obj;
+}
+function set2(opt, path, val, overwrite) {
+ var pathArr = path.split(",");
+ var obj = opt;
+ var key;
+ var i = 0;
+ for (; i < pathArr.length - 1; i++) {
+ key = pathArr[i];
+ if (obj[key] == null) {
+ obj[key] = {};
+ }
+ obj = obj[key];
+ }
+ if (overwrite || obj[pathArr[i]] == null) {
+ obj[pathArr[i]] = val;
+ }
+}
+function compatLayoutProperties(option) {
+ option && each(LAYOUT_PROPERTIES, function(prop) {
+ if (prop[0] in option && !(prop[1] in option)) {
+ option[prop[1]] = option[prop[0]];
+ }
+ });
+}
+var LAYOUT_PROPERTIES = [["x", "left"], ["y", "top"], ["x2", "right"], ["y2", "bottom"]];
+var COMPATITABLE_COMPONENTS = ["grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline"];
+var BAR_ITEM_STYLE_MAP = [["borderRadius", "barBorderRadius"], ["borderColor", "barBorderColor"], ["borderWidth", "barBorderWidth"]];
+function compatBarItemStyle(option) {
+ var itemStyle = option && option.itemStyle;
+ if (itemStyle) {
+ for (var i = 0; i < BAR_ITEM_STYLE_MAP.length; i++) {
+ var oldName = BAR_ITEM_STYLE_MAP[i][1];
+ var newName = BAR_ITEM_STYLE_MAP[i][0];
+ if (itemStyle[oldName] != null) {
+ itemStyle[newName] = itemStyle[oldName];
+ if (true) {
+ deprecateReplaceLog(oldName, newName);
+ }
+ }
+ }
+ }
+}
+function compatPieLabel(option) {
+ if (!option) {
+ return;
+ }
+ if (option.alignTo === "edge" && option.margin != null && option.edgeDistance == null) {
+ if (true) {
+ deprecateReplaceLog("label.margin", "label.edgeDistance", "pie");
+ }
+ option.edgeDistance = option.margin;
+ }
+}
+function compatSunburstState(option) {
+ if (!option) {
+ return;
+ }
+ if (option.downplay && !option.blur) {
+ option.blur = option.downplay;
+ if (true) {
+ deprecateReplaceLog("downplay", "blur", "sunburst");
+ }
+ }
+}
+function compatGraphFocus(option) {
+ if (!option) {
+ return;
+ }
+ if (option.focusNodeAdjacency != null) {
+ option.emphasis = option.emphasis || {};
+ if (option.emphasis.focus == null) {
+ if (true) {
+ deprecateReplaceLog("focusNodeAdjacency", "emphasis: { focus: 'adjacency'}", "graph/sankey");
+ }
+ option.emphasis.focus = "adjacency";
+ }
+ }
+}
+function traverseTree(data, cb) {
+ if (data) {
+ for (var i = 0; i < data.length; i++) {
+ cb(data[i]);
+ data[i] && traverseTree(data[i].children, cb);
+ }
+ }
+}
+function globalBackwardCompat(option, isTheme) {
+ globalCompatStyle(option, isTheme);
+ option.series = normalizeToArray(option.series);
+ each(option.series, function(seriesOpt) {
+ if (!isObject(seriesOpt)) {
+ return;
+ }
+ var seriesType2 = seriesOpt.type;
+ if (seriesType2 === "line") {
+ if (seriesOpt.clipOverflow != null) {
+ seriesOpt.clip = seriesOpt.clipOverflow;
+ if (true) {
+ deprecateReplaceLog("clipOverflow", "clip", "line");
+ }
+ }
+ } else if (seriesType2 === "pie" || seriesType2 === "gauge") {
+ if (seriesOpt.clockWise != null) {
+ seriesOpt.clockwise = seriesOpt.clockWise;
+ if (true) {
+ deprecateReplaceLog("clockWise", "clockwise");
+ }
+ }
+ compatPieLabel(seriesOpt.label);
+ var data = seriesOpt.data;
+ if (data && !isTypedArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ compatPieLabel(data[i]);
+ }
+ }
+ if (seriesOpt.hoverOffset != null) {
+ seriesOpt.emphasis = seriesOpt.emphasis || {};
+ if (seriesOpt.emphasis.scaleSize = null) {
+ if (true) {
+ deprecateReplaceLog("hoverOffset", "emphasis.scaleSize");
+ }
+ seriesOpt.emphasis.scaleSize = seriesOpt.hoverOffset;
+ }
+ }
+ } else if (seriesType2 === "gauge") {
+ var pointerColor = get(seriesOpt, "pointer.color");
+ pointerColor != null && set2(seriesOpt, "itemStyle.color", pointerColor);
+ } else if (seriesType2 === "bar") {
+ compatBarItemStyle(seriesOpt);
+ compatBarItemStyle(seriesOpt.backgroundStyle);
+ compatBarItemStyle(seriesOpt.emphasis);
+ var data = seriesOpt.data;
+ if (data && !isTypedArray(data)) {
+ for (var i = 0; i < data.length; i++) {
+ if (typeof data[i] === "object") {
+ compatBarItemStyle(data[i]);
+ compatBarItemStyle(data[i] && data[i].emphasis);
+ }
+ }
+ }
+ } else if (seriesType2 === "sunburst") {
+ var highlightPolicy = seriesOpt.highlightPolicy;
+ if (highlightPolicy) {
+ seriesOpt.emphasis = seriesOpt.emphasis || {};
+ if (!seriesOpt.emphasis.focus) {
+ seriesOpt.emphasis.focus = highlightPolicy;
+ if (true) {
+ deprecateReplaceLog("highlightPolicy", "emphasis.focus", "sunburst");
+ }
+ }
+ }
+ compatSunburstState(seriesOpt);
+ traverseTree(seriesOpt.data, compatSunburstState);
+ } else if (seriesType2 === "graph" || seriesType2 === "sankey") {
+ compatGraphFocus(seriesOpt);
+ } else if (seriesType2 === "map") {
+ if (seriesOpt.mapType && !seriesOpt.map) {
+ if (true) {
+ deprecateReplaceLog("mapType", "map", "map");
+ }
+ seriesOpt.map = seriesOpt.mapType;
+ }
+ if (seriesOpt.mapLocation) {
+ if (true) {
+ deprecateLog("`mapLocation` is not used anymore.");
+ }
+ defaults(seriesOpt, seriesOpt.mapLocation);
+ }
+ }
+ if (seriesOpt.hoverAnimation != null) {
+ seriesOpt.emphasis = seriesOpt.emphasis || {};
+ if (seriesOpt.emphasis && seriesOpt.emphasis.scale == null) {
+ if (true) {
+ deprecateReplaceLog("hoverAnimation", "emphasis.scale");
+ }
+ seriesOpt.emphasis.scale = seriesOpt.hoverAnimation;
+ }
+ }
+ compatLayoutProperties(seriesOpt);
+ });
+ if (option.dataRange) {
+ option.visualMap = option.dataRange;
+ }
+ each(COMPATITABLE_COMPONENTS, function(componentName) {
+ var options = option[componentName];
+ if (options) {
+ if (!isArray(options)) {
+ options = [options];
+ }
+ each(options, function(option2) {
+ compatLayoutProperties(option2);
+ });
+ }
+ });
+}
+
+// node_modules/echarts/lib/processor/dataStack.js
+function dataStack(ecModel) {
+ var stackInfoMap = createHashMap();
+ ecModel.eachSeries(function(seriesModel) {
+ var stack = seriesModel.get("stack");
+ if (stack) {
+ var stackInfoList = stackInfoMap.get(stack) || stackInfoMap.set(stack, []);
+ var data = seriesModel.getData();
+ var stackInfo = {
+ stackResultDimension: data.getCalculationInfo("stackResultDimension"),
+ stackedOverDimension: data.getCalculationInfo("stackedOverDimension"),
+ stackedDimension: data.getCalculationInfo("stackedDimension"),
+ stackedByDimension: data.getCalculationInfo("stackedByDimension"),
+ isStackedByIndex: data.getCalculationInfo("isStackedByIndex"),
+ data,
+ seriesModel
+ };
+ if (!stackInfo.stackedDimension || !(stackInfo.isStackedByIndex || stackInfo.stackedByDimension)) {
+ return;
+ }
+ stackInfoList.length && data.setCalculationInfo("stackedOnSeries", stackInfoList[stackInfoList.length - 1].seriesModel);
+ stackInfoList.push(stackInfo);
+ }
+ });
+ stackInfoMap.each(calculateStack);
+}
+function calculateStack(stackInfoList) {
+ each(stackInfoList, function(targetStackInfo, idxInStack) {
+ var resultVal = [];
+ var resultNaN = [NaN, NaN];
+ var dims = [targetStackInfo.stackResultDimension, targetStackInfo.stackedOverDimension];
+ var targetData = targetStackInfo.data;
+ var isStackedByIndex = targetStackInfo.isStackedByIndex;
+ var stackStrategy = targetStackInfo.seriesModel.get("stackStrategy") || "samesign";
+ targetData.modify(dims, function(v0, v12, dataIndex) {
+ var sum2 = targetData.get(targetStackInfo.stackedDimension, dataIndex);
+ if (isNaN(sum2)) {
+ return resultNaN;
+ }
+ var byValue;
+ var stackedDataRawIndex;
+ if (isStackedByIndex) {
+ stackedDataRawIndex = targetData.getRawIndex(dataIndex);
+ } else {
+ byValue = targetData.get(targetStackInfo.stackedByDimension, dataIndex);
+ }
+ var stackedOver = NaN;
+ for (var j = idxInStack - 1; j >= 0; j--) {
+ var stackInfo = stackInfoList[j];
+ if (!isStackedByIndex) {
+ stackedDataRawIndex = stackInfo.data.rawIndexOf(stackInfo.stackedByDimension, byValue);
+ }
+ if (stackedDataRawIndex >= 0) {
+ var val = stackInfo.data.getByRawIndex(stackInfo.stackResultDimension, stackedDataRawIndex);
+ if (stackStrategy === "all" || stackStrategy === "positive" && val > 0 || stackStrategy === "negative" && val < 0 || stackStrategy === "samesign" && sum2 >= 0 && val > 0 || stackStrategy === "samesign" && sum2 <= 0 && val < 0) {
+ sum2 = addSafe(sum2, val);
+ stackedOver = val;
+ break;
+ }
+ }
+ }
+ resultVal[0] = sum2;
+ resultVal[1] = stackedOver;
+ return resultVal;
+ });
+ });
+}
+
+// node_modules/echarts/lib/data/Source.js
+var SourceImpl = function() {
+ function SourceImpl2(fields) {
+ this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);
+ this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;
+ this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;
+ this.startIndex = fields.startIndex || 0;
+ this.dimensionsDetectedCount = fields.dimensionsDetectedCount;
+ this.metaRawOption = fields.metaRawOption;
+ var dimensionsDefine = this.dimensionsDefine = fields.dimensionsDefine;
+ if (dimensionsDefine) {
+ for (var i = 0; i < dimensionsDefine.length; i++) {
+ var dim = dimensionsDefine[i];
+ if (dim.type == null) {
+ if (guessOrdinal(this, i) === BE_ORDINAL.Must) {
+ dim.type = "ordinal";
+ }
+ }
+ }
+ }
+ }
+ return SourceImpl2;
+}();
+function isSourceInstance(val) {
+ return val instanceof SourceImpl;
+}
+function createSource(sourceData, thisMetaRawOption, sourceFormat) {
+ sourceFormat = sourceFormat || detectSourceFormat(sourceData);
+ var seriesLayoutBy = thisMetaRawOption.seriesLayoutBy;
+ var determined = determineSourceDimensions(sourceData, sourceFormat, seriesLayoutBy, thisMetaRawOption.sourceHeader, thisMetaRawOption.dimensions);
+ var source = new SourceImpl({
+ data: sourceData,
+ sourceFormat,
+ seriesLayoutBy,
+ dimensionsDefine: determined.dimensionsDefine,
+ startIndex: determined.startIndex,
+ dimensionsDetectedCount: determined.dimensionsDetectedCount,
+ metaRawOption: clone(thisMetaRawOption)
+ });
+ return source;
+}
+function createSourceFromSeriesDataOption(data) {
+ return new SourceImpl({
+ data,
+ sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL
+ });
+}
+function cloneSourceShallow(source) {
+ return new SourceImpl({
+ data: source.data,
+ sourceFormat: source.sourceFormat,
+ seriesLayoutBy: source.seriesLayoutBy,
+ dimensionsDefine: clone(source.dimensionsDefine),
+ startIndex: source.startIndex,
+ dimensionsDetectedCount: source.dimensionsDetectedCount
+ });
+}
+function detectSourceFormat(data) {
+ var sourceFormat = SOURCE_FORMAT_UNKNOWN;
+ if (isTypedArray(data)) {
+ sourceFormat = SOURCE_FORMAT_TYPED_ARRAY;
+ } else if (isArray(data)) {
+ if (data.length === 0) {
+ sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;
+ }
+ for (var i = 0, len2 = data.length; i < len2; i++) {
+ var item = data[i];
+ if (item == null) {
+ continue;
+ } else if (isArray(item) || isTypedArray(item)) {
+ sourceFormat = SOURCE_FORMAT_ARRAY_ROWS;
+ break;
+ } else if (isObject(item)) {
+ sourceFormat = SOURCE_FORMAT_OBJECT_ROWS;
+ break;
+ }
+ }
+ } else if (isObject(data)) {
+ for (var key in data) {
+ if (hasOwn(data, key) && isArrayLike(data[key])) {
+ sourceFormat = SOURCE_FORMAT_KEYED_COLUMNS;
+ break;
+ }
+ }
+ }
+ return sourceFormat;
+}
+function determineSourceDimensions(data, sourceFormat, seriesLayoutBy, sourceHeader, dimensionsDefine) {
+ var dimensionsDetectedCount;
+ var startIndex;
+ if (!data) {
+ return {
+ dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),
+ startIndex,
+ dimensionsDetectedCount
+ };
+ }
+ if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
+ var dataArrayRows = data;
+ if (sourceHeader === "auto" || sourceHeader == null) {
+ arrayRowsTravelFirst(function(val) {
+ if (val != null && val !== "-") {
+ if (isString(val)) {
+ startIndex == null && (startIndex = 1);
+ } else {
+ startIndex = 0;
+ }
+ }
+ }, seriesLayoutBy, dataArrayRows, 10);
+ } else {
+ startIndex = isNumber(sourceHeader) ? sourceHeader : sourceHeader ? 1 : 0;
+ }
+ if (!dimensionsDefine && startIndex === 1) {
+ dimensionsDefine = [];
+ arrayRowsTravelFirst(function(val, index) {
+ dimensionsDefine[index] = val != null ? val + "" : "";
+ }, seriesLayoutBy, dataArrayRows, Infinity);
+ }
+ dimensionsDetectedCount = dimensionsDefine ? dimensionsDefine.length : seriesLayoutBy === SERIES_LAYOUT_BY_ROW ? dataArrayRows.length : dataArrayRows[0] ? dataArrayRows[0].length : null;
+ } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
+ if (!dimensionsDefine) {
+ dimensionsDefine = objectRowsCollectDimensions(data);
+ }
+ } else if (sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS) {
+ if (!dimensionsDefine) {
+ dimensionsDefine = [];
+ each(data, function(colArr, key) {
+ dimensionsDefine.push(key);
+ });
+ }
+ } else if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
+ var value0 = getDataItemValue(data[0]);
+ dimensionsDetectedCount = isArray(value0) && value0.length || 1;
+ } else if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
+ if (true) {
+ assert(!!dimensionsDefine, "dimensions must be given if data is TypedArray.");
+ }
+ }
+ return {
+ startIndex,
+ dimensionsDefine: normalizeDimensionsOption(dimensionsDefine),
+ dimensionsDetectedCount
+ };
+}
+function objectRowsCollectDimensions(data) {
+ var firstIndex = 0;
+ var obj;
+ while (firstIndex < data.length && !(obj = data[firstIndex++])) {
+ }
+ if (obj) {
+ return keys(obj);
+ }
+}
+function normalizeDimensionsOption(dimensionsDefine) {
+ if (!dimensionsDefine) {
+ return;
+ }
+ var nameMap = createHashMap();
+ return map(dimensionsDefine, function(rawItem, index) {
+ rawItem = isObject(rawItem) ? rawItem : {
+ name: rawItem
+ };
+ var item = {
+ name: rawItem.name,
+ displayName: rawItem.displayName,
+ type: rawItem.type
+ };
+ if (item.name == null) {
+ return item;
+ }
+ item.name += "";
+ if (item.displayName == null) {
+ item.displayName = item.name;
+ }
+ var exist = nameMap.get(item.name);
+ if (!exist) {
+ nameMap.set(item.name, {
+ count: 1
+ });
+ } else {
+ item.name += "-" + exist.count++;
+ }
+ return item;
+ });
+}
+function arrayRowsTravelFirst(cb, seriesLayoutBy, data, maxLoop) {
+ if (seriesLayoutBy === SERIES_LAYOUT_BY_ROW) {
+ for (var i = 0; i < data.length && i < maxLoop; i++) {
+ cb(data[i] ? data[i][0] : null, i);
+ }
+ } else {
+ var value0 = data[0] || [];
+ for (var i = 0; i < value0.length && i < maxLoop; i++) {
+ cb(value0[i], i);
+ }
+ }
+}
+function shouldRetrieveDataByName(source) {
+ var sourceFormat = source.sourceFormat;
+ return sourceFormat === SOURCE_FORMAT_OBJECT_ROWS || sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS;
+}
+
+// node_modules/echarts/lib/data/helper/dataProvider.js
+var _a;
+var _b;
+var _c;
+var providerMethods;
+var mountMethods;
+var DefaultDataProvider = function() {
+ function DefaultDataProvider2(sourceParam, dimSize) {
+ var source = !isSourceInstance(sourceParam) ? createSourceFromSeriesDataOption(sourceParam) : sourceParam;
+ this._source = source;
+ var data = this._data = source.data;
+ if (source.sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
+ if (true) {
+ if (dimSize == null) {
+ throw new Error("Typed array data must specify dimension size");
+ }
+ }
+ this._offset = 0;
+ this._dimSize = dimSize;
+ this._data = data;
+ }
+ mountMethods(this, data, source);
+ }
+ DefaultDataProvider2.prototype.getSource = function() {
+ return this._source;
+ };
+ DefaultDataProvider2.prototype.count = function() {
+ return 0;
+ };
+ DefaultDataProvider2.prototype.getItem = function(idx, out2) {
+ return;
+ };
+ DefaultDataProvider2.prototype.appendData = function(newData) {
+ };
+ DefaultDataProvider2.prototype.clean = function() {
+ };
+ DefaultDataProvider2.protoInitialize = function() {
+ var proto2 = DefaultDataProvider2.prototype;
+ proto2.pure = false;
+ proto2.persistent = true;
+ }();
+ DefaultDataProvider2.internalField = function() {
+ var _a2;
+ mountMethods = function(provider, data, source) {
+ var sourceFormat = source.sourceFormat;
+ var seriesLayoutBy = source.seriesLayoutBy;
+ var startIndex = source.startIndex;
+ var dimsDef = source.dimensionsDefine;
+ var methods = providerMethods[getMethodMapKey(sourceFormat, seriesLayoutBy)];
+ if (true) {
+ assert(methods, "Invalide sourceFormat: " + sourceFormat);
+ }
+ extend(provider, methods);
+ if (sourceFormat === SOURCE_FORMAT_TYPED_ARRAY) {
+ provider.getItem = getItemForTypedArray;
+ provider.count = countForTypedArray;
+ provider.fillStorage = fillStorageForTypedArray;
+ } else {
+ var rawItemGetter = getRawSourceItemGetter(sourceFormat, seriesLayoutBy);
+ provider.getItem = bind(rawItemGetter, null, data, startIndex, dimsDef);
+ var rawCounter = getRawSourceDataCounter(sourceFormat, seriesLayoutBy);
+ provider.count = bind(rawCounter, null, data, startIndex, dimsDef);
+ }
+ };
+ var getItemForTypedArray = function(idx, out2) {
+ idx = idx - this._offset;
+ out2 = out2 || [];
+ var data = this._data;
+ var dimSize = this._dimSize;
+ var offset = dimSize * idx;
+ for (var i = 0; i < dimSize; i++) {
+ out2[i] = data[offset + i];
+ }
+ return out2;
+ };
+ var fillStorageForTypedArray = function(start2, end2, storage2, extent3) {
+ var data = this._data;
+ var dimSize = this._dimSize;
+ for (var dim = 0; dim < dimSize; dim++) {
+ var dimExtent = extent3[dim];
+ var min3 = dimExtent[0] == null ? Infinity : dimExtent[0];
+ var max3 = dimExtent[1] == null ? -Infinity : dimExtent[1];
+ var count2 = end2 - start2;
+ var arr = storage2[dim];
+ for (var i = 0; i < count2; i++) {
+ var val = data[i * dimSize + dim];
+ arr[start2 + i] = val;
+ val < min3 && (min3 = val);
+ val > max3 && (max3 = val);
+ }
+ dimExtent[0] = min3;
+ dimExtent[1] = max3;
+ }
+ };
+ var countForTypedArray = function() {
+ return this._data ? this._data.length / this._dimSize : 0;
+ };
+ providerMethods = (_a2 = {}, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = {
+ pure: true,
+ appendData: appendDataSimply
+ }, _a2[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = {
+ pure: true,
+ appendData: function() {
+ throw new Error('Do not support appendData when set seriesLayoutBy: "row".');
+ }
+ }, _a2[SOURCE_FORMAT_OBJECT_ROWS] = {
+ pure: true,
+ appendData: appendDataSimply
+ }, _a2[SOURCE_FORMAT_KEYED_COLUMNS] = {
+ pure: true,
+ appendData: function(newData) {
+ var data = this._data;
+ each(newData, function(newCol, key) {
+ var oldCol = data[key] || (data[key] = []);
+ for (var i = 0; i < (newCol || []).length; i++) {
+ oldCol.push(newCol[i]);
+ }
+ });
+ }
+ }, _a2[SOURCE_FORMAT_ORIGINAL] = {
+ appendData: appendDataSimply
+ }, _a2[SOURCE_FORMAT_TYPED_ARRAY] = {
+ persistent: false,
+ pure: true,
+ appendData: function(newData) {
+ if (true) {
+ assert(isTypedArray(newData), "Added data must be TypedArray if data in initialization is TypedArray");
+ }
+ this._data = newData;
+ },
+ clean: function() {
+ this._offset += this.count();
+ this._data = null;
+ }
+ }, _a2);
+ function appendDataSimply(newData) {
+ for (var i = 0; i < newData.length; i++) {
+ this._data.push(newData[i]);
+ }
+ }
+ }();
+ return DefaultDataProvider2;
+}();
+var getItemSimply = function(rawData, startIndex, dimsDef, idx) {
+ return rawData[idx];
+};
+var rawSourceItemGetterMap = (_a = {}, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef, idx) {
+ return rawData[idx + startIndex];
+}, _a[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef, idx, out2) {
+ idx += startIndex;
+ var item = out2 || [];
+ var data = rawData;
+ for (var i = 0; i < data.length; i++) {
+ var row = data[i];
+ item[i] = row ? row[idx] : null;
+ }
+ return item;
+}, _a[SOURCE_FORMAT_OBJECT_ROWS] = getItemSimply, _a[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef, idx, out2) {
+ var item = out2 || [];
+ for (var i = 0; i < dimsDef.length; i++) {
+ var dimName = dimsDef[i].name;
+ if (true) {
+ if (dimName == null) {
+ throw new Error();
+ }
+ }
+ var col = rawData[dimName];
+ item[i] = col ? col[idx] : null;
+ }
+ return item;
+}, _a[SOURCE_FORMAT_ORIGINAL] = getItemSimply, _a);
+function getRawSourceItemGetter(sourceFormat, seriesLayoutBy) {
+ var method = rawSourceItemGetterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
+ if (true) {
+ assert(method, 'Do not support get item on "' + sourceFormat + '", "' + seriesLayoutBy + '".');
+ }
+ return method;
+}
+var countSimply = function(rawData, startIndex, dimsDef) {
+ return rawData.length;
+};
+var rawSourceDataCounterMap = (_b = {}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_COLUMN] = function(rawData, startIndex, dimsDef) {
+ return Math.max(0, rawData.length - startIndex);
+}, _b[SOURCE_FORMAT_ARRAY_ROWS + "_" + SERIES_LAYOUT_BY_ROW] = function(rawData, startIndex, dimsDef) {
+ var row = rawData[0];
+ return row ? Math.max(0, row.length - startIndex) : 0;
+}, _b[SOURCE_FORMAT_OBJECT_ROWS] = countSimply, _b[SOURCE_FORMAT_KEYED_COLUMNS] = function(rawData, startIndex, dimsDef) {
+ var dimName = dimsDef[0].name;
+ if (true) {
+ if (dimName == null) {
+ throw new Error();
+ }
+ }
+ var col = rawData[dimName];
+ return col ? col.length : 0;
+}, _b[SOURCE_FORMAT_ORIGINAL] = countSimply, _b);
+function getRawSourceDataCounter(sourceFormat, seriesLayoutBy) {
+ var method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
+ if (true) {
+ assert(method, 'Do not support count on "' + sourceFormat + '", "' + seriesLayoutBy + '".');
+ }
+ return method;
+}
+var getRawValueSimply = function(dataItem, dimIndex, property) {
+ return dataItem[dimIndex];
+};
+var rawSourceValueGetterMap = (_c = {}, _c[SOURCE_FORMAT_ARRAY_ROWS] = getRawValueSimply, _c[SOURCE_FORMAT_OBJECT_ROWS] = function(dataItem, dimIndex, property) {
+ return dataItem[property];
+}, _c[SOURCE_FORMAT_KEYED_COLUMNS] = getRawValueSimply, _c[SOURCE_FORMAT_ORIGINAL] = function(dataItem, dimIndex, property) {
+ var value = getDataItemValue(dataItem);
+ return !(value instanceof Array) ? value : value[dimIndex];
+}, _c[SOURCE_FORMAT_TYPED_ARRAY] = getRawValueSimply, _c);
+function getRawSourceValueGetter(sourceFormat) {
+ var method = rawSourceValueGetterMap[sourceFormat];
+ if (true) {
+ assert(method, 'Do not support get value on "' + sourceFormat + '".');
+ }
+ return method;
+}
+function getMethodMapKey(sourceFormat, seriesLayoutBy) {
+ return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS ? sourceFormat + "_" + seriesLayoutBy : sourceFormat;
+}
+function retrieveRawValue(data, dataIndex, dim) {
+ if (!data) {
+ return;
+ }
+ var dataItem = data.getRawDataItem(dataIndex);
+ if (dataItem == null) {
+ return;
+ }
+ var store = data.getStore();
+ var sourceFormat = store.getSource().sourceFormat;
+ if (dim != null) {
+ var dimIndex = data.getDimensionIndex(dim);
+ var property = store.getDimensionProperty(dimIndex);
+ return getRawSourceValueGetter(sourceFormat)(dataItem, dimIndex, property);
+ } else {
+ var result = dataItem;
+ if (sourceFormat === SOURCE_FORMAT_ORIGINAL) {
+ result = getDataItemValue(dataItem);
+ }
+ return result;
+ }
+}
+
+// node_modules/echarts/lib/model/mixin/dataFormat.js
+var DIMENSION_LABEL_REG = /\{@(.+?)\}/g;
+var DataFormatMixin = function() {
+ function DataFormatMixin2() {
+ }
+ DataFormatMixin2.prototype.getDataParams = function(dataIndex, dataType) {
+ var data = this.getData(dataType);
+ var rawValue = this.getRawValue(dataIndex, dataType);
+ var rawDataIndex = data.getRawIndex(dataIndex);
+ var name = data.getName(dataIndex);
+ var itemOpt = data.getRawDataItem(dataIndex);
+ var style = data.getItemVisual(dataIndex, "style");
+ var color = style && style[data.getItemVisual(dataIndex, "drawType") || "fill"];
+ var borderColor = style && style.stroke;
+ var mainType = this.mainType;
+ var isSeries2 = mainType === "series";
+ var userOutput = data.userOutput && data.userOutput.get();
+ return {
+ componentType: mainType,
+ componentSubType: this.subType,
+ componentIndex: this.componentIndex,
+ seriesType: isSeries2 ? this.subType : null,
+ seriesIndex: this.seriesIndex,
+ seriesId: isSeries2 ? this.id : null,
+ seriesName: isSeries2 ? this.name : null,
+ name,
+ dataIndex: rawDataIndex,
+ data: itemOpt,
+ dataType,
+ value: rawValue,
+ color,
+ borderColor,
+ dimensionNames: userOutput ? userOutput.fullDimensions : null,
+ encode: userOutput ? userOutput.encode : null,
+ $vars: ["seriesName", "name", "value"]
+ };
+ };
+ DataFormatMixin2.prototype.getFormattedLabel = function(dataIndex, status, dataType, labelDimIndex, formatter, extendParams) {
+ status = status || "normal";
+ var data = this.getData(dataType);
+ var params = this.getDataParams(dataIndex, dataType);
+ if (extendParams) {
+ params.value = extendParams.interpolatedValue;
+ }
+ if (labelDimIndex != null && isArray(params.value)) {
+ params.value = params.value[labelDimIndex];
+ }
+ if (!formatter) {
+ var itemModel = data.getItemModel(dataIndex);
+ formatter = itemModel.get(status === "normal" ? ["label", "formatter"] : [status, "label", "formatter"]);
+ }
+ if (isFunction(formatter)) {
+ params.status = status;
+ params.dimensionIndex = labelDimIndex;
+ return formatter(params);
+ } else if (isString(formatter)) {
+ var str = formatTpl(formatter, params);
+ return str.replace(DIMENSION_LABEL_REG, function(origin, dimStr) {
+ var len2 = dimStr.length;
+ var dimLoose = dimStr;
+ if (dimLoose.charAt(0) === "[" && dimLoose.charAt(len2 - 1) === "]") {
+ dimLoose = +dimLoose.slice(1, len2 - 1);
+ if (true) {
+ if (isNaN(dimLoose)) {
+ error("Invalide label formatter: @" + dimStr + ", only support @[0], @[1], @[2], ...");
+ }
+ }
+ }
+ var val = retrieveRawValue(data, dataIndex, dimLoose);
+ if (extendParams && isArray(extendParams.interpolatedValue)) {
+ var dimIndex = data.getDimensionIndex(dimLoose);
+ if (dimIndex >= 0) {
+ val = extendParams.interpolatedValue[dimIndex];
+ }
+ }
+ return val != null ? val + "" : "";
+ });
+ }
+ };
+ DataFormatMixin2.prototype.getRawValue = function(idx, dataType) {
+ return retrieveRawValue(this.getData(dataType), idx);
+ };
+ DataFormatMixin2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ return;
+ };
+ return DataFormatMixin2;
+}();
+function normalizeTooltipFormatResult(result) {
+ var markupText;
+ var markupFragment;
+ if (isObject(result)) {
+ if (result.type) {
+ markupFragment = result;
+ } else {
+ if (true) {
+ console.warn("The return type of `formatTooltip` is not supported: " + makePrintable(result));
+ }
+ }
+ } else {
+ markupText = result;
+ }
+ return {
+ text: markupText,
+ frag: markupFragment
+ };
+}
+
+// node_modules/echarts/lib/core/task.js
+function createTask(define) {
+ return new Task(define);
+}
+var Task = function() {
+ function Task2(define) {
+ define = define || {};
+ this._reset = define.reset;
+ this._plan = define.plan;
+ this._count = define.count;
+ this._onDirty = define.onDirty;
+ this._dirty = true;
+ }
+ Task2.prototype.perform = function(performArgs) {
+ var upTask = this._upstream;
+ var skip = performArgs && performArgs.skip;
+ if (this._dirty && upTask) {
+ var context = this.context;
+ context.data = context.outputData = upTask.context.outputData;
+ }
+ if (this.__pipeline) {
+ this.__pipeline.currentTask = this;
+ }
+ var planResult;
+ if (this._plan && !skip) {
+ planResult = this._plan(this.context);
+ }
+ var lastModBy = normalizeModBy(this._modBy);
+ var lastModDataCount = this._modDataCount || 0;
+ var modBy = normalizeModBy(performArgs && performArgs.modBy);
+ var modDataCount = performArgs && performArgs.modDataCount || 0;
+ if (lastModBy !== modBy || lastModDataCount !== modDataCount) {
+ planResult = "reset";
+ }
+ function normalizeModBy(val) {
+ !(val >= 1) && (val = 1);
+ return val;
+ }
+ var forceFirstProgress;
+ if (this._dirty || planResult === "reset") {
+ this._dirty = false;
+ forceFirstProgress = this._doReset(skip);
+ }
+ this._modBy = modBy;
+ this._modDataCount = modDataCount;
+ var step = performArgs && performArgs.step;
+ if (upTask) {
+ if (true) {
+ assert(upTask._outputDueEnd != null);
+ }
+ this._dueEnd = upTask._outputDueEnd;
+ } else {
+ if (true) {
+ assert(!this._progress || this._count);
+ }
+ this._dueEnd = this._count ? this._count(this.context) : Infinity;
+ }
+ if (this._progress) {
+ var start2 = this._dueIndex;
+ var end2 = Math.min(step != null ? this._dueIndex + step : Infinity, this._dueEnd);
+ if (!skip && (forceFirstProgress || start2 < end2)) {
+ var progress = this._progress;
+ if (isArray(progress)) {
+ for (var i = 0; i < progress.length; i++) {
+ this._doProgress(progress[i], start2, end2, modBy, modDataCount);
+ }
+ } else {
+ this._doProgress(progress, start2, end2, modBy, modDataCount);
+ }
+ }
+ this._dueIndex = end2;
+ var outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : end2;
+ if (true) {
+ assert(outputDueEnd >= this._outputDueEnd);
+ }
+ this._outputDueEnd = outputDueEnd;
+ } else {
+ this._dueIndex = this._outputDueEnd = this._settedOutputEnd != null ? this._settedOutputEnd : this._dueEnd;
+ }
+ return this.unfinished();
+ };
+ Task2.prototype.dirty = function() {
+ this._dirty = true;
+ this._onDirty && this._onDirty(this.context);
+ };
+ Task2.prototype._doProgress = function(progress, start2, end2, modBy, modDataCount) {
+ iterator.reset(start2, end2, modBy, modDataCount);
+ this._callingProgress = progress;
+ this._callingProgress({
+ start: start2,
+ end: end2,
+ count: end2 - start2,
+ next: iterator.next
+ }, this.context);
+ };
+ Task2.prototype._doReset = function(skip) {
+ this._dueIndex = this._outputDueEnd = this._dueEnd = 0;
+ this._settedOutputEnd = null;
+ var progress;
+ var forceFirstProgress;
+ if (!skip && this._reset) {
+ progress = this._reset(this.context);
+ if (progress && progress.progress) {
+ forceFirstProgress = progress.forceFirstProgress;
+ progress = progress.progress;
+ }
+ if (isArray(progress) && !progress.length) {
+ progress = null;
+ }
+ }
+ this._progress = progress;
+ this._modBy = this._modDataCount = null;
+ var downstream = this._downstream;
+ downstream && downstream.dirty();
+ return forceFirstProgress;
+ };
+ Task2.prototype.unfinished = function() {
+ return this._progress && this._dueIndex < this._dueEnd;
+ };
+ Task2.prototype.pipe = function(downTask) {
+ if (true) {
+ assert(downTask && !downTask._disposed && downTask !== this);
+ }
+ if (this._downstream !== downTask || this._dirty) {
+ this._downstream = downTask;
+ downTask._upstream = this;
+ downTask.dirty();
+ }
+ };
+ Task2.prototype.dispose = function() {
+ if (this._disposed) {
+ return;
+ }
+ this._upstream && (this._upstream._downstream = null);
+ this._downstream && (this._downstream._upstream = null);
+ this._dirty = false;
+ this._disposed = true;
+ };
+ Task2.prototype.getUpstream = function() {
+ return this._upstream;
+ };
+ Task2.prototype.getDownstream = function() {
+ return this._downstream;
+ };
+ Task2.prototype.setOutputEnd = function(end2) {
+ this._outputDueEnd = this._settedOutputEnd = end2;
+ };
+ return Task2;
+}();
+var iterator = function() {
+ var end2;
+ var current;
+ var modBy;
+ var modDataCount;
+ var winCount;
+ var it = {
+ reset: function(s, e2, sStep, sCount) {
+ current = s;
+ end2 = e2;
+ modBy = sStep;
+ modDataCount = sCount;
+ winCount = Math.ceil(modDataCount / modBy);
+ it.next = modBy > 1 && modDataCount > 0 ? modNext : sequentialNext;
+ }
+ };
+ return it;
+ function sequentialNext() {
+ return current < end2 ? current++ : null;
+ }
+ function modNext() {
+ var dataIndex = current % winCount * modBy + Math.ceil(current / winCount);
+ var result = current >= end2 ? null : dataIndex < modDataCount ? dataIndex : current;
+ current++;
+ return result;
+ }
+}();
+
+// node_modules/echarts/lib/data/helper/dataValueHelper.js
+function parseDataValue(value, opt) {
+ var dimType = opt && opt.type;
+ if (dimType === "ordinal") {
+ return value;
+ }
+ if (dimType === "time" && !isNumber(value) && value != null && value !== "-") {
+ value = +parseDate(value);
+ }
+ return value == null || value === "" ? NaN : Number(value);
+}
+var valueParserMap = createHashMap({
+ "number": function(val) {
+ return parseFloat(val);
+ },
+ "time": function(val) {
+ return +parseDate(val);
+ },
+ "trim": function(val) {
+ return isString(val) ? trim(val) : val;
+ }
+});
+function getRawValueParser(type) {
+ return valueParserMap.get(type);
+}
+var ORDER_COMPARISON_OP_MAP = {
+ lt: function(lval, rval) {
+ return lval < rval;
+ },
+ lte: function(lval, rval) {
+ return lval <= rval;
+ },
+ gt: function(lval, rval) {
+ return lval > rval;
+ },
+ gte: function(lval, rval) {
+ return lval >= rval;
+ }
+};
+var FilterOrderComparator = function() {
+ function FilterOrderComparator2(op, rval) {
+ if (!isNumber(rval)) {
+ var errMsg = "";
+ if (true) {
+ errMsg = 'rvalue of "<", ">", "<=", ">=" can only be number in filter.';
+ }
+ throwError(errMsg);
+ }
+ this._opFn = ORDER_COMPARISON_OP_MAP[op];
+ this._rvalFloat = numericToNumber(rval);
+ }
+ FilterOrderComparator2.prototype.evaluate = function(lval) {
+ return isNumber(lval) ? this._opFn(lval, this._rvalFloat) : this._opFn(numericToNumber(lval), this._rvalFloat);
+ };
+ return FilterOrderComparator2;
+}();
+var SortOrderComparator = function() {
+ function SortOrderComparator2(order, incomparable) {
+ var isDesc = order === "desc";
+ this._resultLT = isDesc ? 1 : -1;
+ if (incomparable == null) {
+ incomparable = isDesc ? "min" : "max";
+ }
+ this._incomparable = incomparable === "min" ? -Infinity : Infinity;
+ }
+ SortOrderComparator2.prototype.evaluate = function(lval, rval) {
+ var lvalFloat = isNumber(lval) ? lval : numericToNumber(lval);
+ var rvalFloat = isNumber(rval) ? rval : numericToNumber(rval);
+ var lvalNotNumeric = isNaN(lvalFloat);
+ var rvalNotNumeric = isNaN(rvalFloat);
+ if (lvalNotNumeric) {
+ lvalFloat = this._incomparable;
+ }
+ if (rvalNotNumeric) {
+ rvalFloat = this._incomparable;
+ }
+ if (lvalNotNumeric && rvalNotNumeric) {
+ var lvalIsStr = isString(lval);
+ var rvalIsStr = isString(rval);
+ if (lvalIsStr) {
+ lvalFloat = rvalIsStr ? lval : 0;
+ }
+ if (rvalIsStr) {
+ rvalFloat = lvalIsStr ? rval : 0;
+ }
+ }
+ return lvalFloat < rvalFloat ? this._resultLT : lvalFloat > rvalFloat ? -this._resultLT : 0;
+ };
+ return SortOrderComparator2;
+}();
+var FilterEqualityComparator = function() {
+ function FilterEqualityComparator2(isEq, rval) {
+ this._rval = rval;
+ this._isEQ = isEq;
+ this._rvalTypeof = typeof rval;
+ this._rvalFloat = numericToNumber(rval);
+ }
+ FilterEqualityComparator2.prototype.evaluate = function(lval) {
+ var eqResult = lval === this._rval;
+ if (!eqResult) {
+ var lvalTypeof = typeof lval;
+ if (lvalTypeof !== this._rvalTypeof && (lvalTypeof === "number" || this._rvalTypeof === "number")) {
+ eqResult = numericToNumber(lval) === this._rvalFloat;
+ }
+ }
+ return this._isEQ ? eqResult : !eqResult;
+ };
+ return FilterEqualityComparator2;
+}();
+function createFilterComparator(op, rval) {
+ return op === "eq" || op === "ne" ? new FilterEqualityComparator(op === "eq", rval) : hasOwn(ORDER_COMPARISON_OP_MAP, op) ? new FilterOrderComparator(op, rval) : null;
+}
+
+// node_modules/echarts/lib/data/helper/transform.js
+var ExternalSource = function() {
+ function ExternalSource2() {
+ }
+ ExternalSource2.prototype.getRawData = function() {
+ throw new Error("not supported");
+ };
+ ExternalSource2.prototype.getRawDataItem = function(dataIndex) {
+ throw new Error("not supported");
+ };
+ ExternalSource2.prototype.cloneRawData = function() {
+ return;
+ };
+ ExternalSource2.prototype.getDimensionInfo = function(dim) {
+ return;
+ };
+ ExternalSource2.prototype.cloneAllDimensionInfo = function() {
+ return;
+ };
+ ExternalSource2.prototype.count = function() {
+ return;
+ };
+ ExternalSource2.prototype.retrieveValue = function(dataIndex, dimIndex) {
+ return;
+ };
+ ExternalSource2.prototype.retrieveValueFromItem = function(dataItem, dimIndex) {
+ return;
+ };
+ ExternalSource2.prototype.convertValue = function(rawVal, dimInfo) {
+ return parseDataValue(rawVal, dimInfo);
+ };
+ return ExternalSource2;
+}();
+function createExternalSource(internalSource, externalTransform) {
+ var extSource = new ExternalSource();
+ var data = internalSource.data;
+ var sourceFormat = extSource.sourceFormat = internalSource.sourceFormat;
+ var sourceHeaderCount = internalSource.startIndex;
+ var errMsg = "";
+ if (internalSource.seriesLayoutBy !== SERIES_LAYOUT_BY_COLUMN) {
+ if (true) {
+ errMsg = '`seriesLayoutBy` of upstream dataset can only be "column" in data transform.';
+ }
+ throwError(errMsg);
+ }
+ var dimensions = [];
+ var dimsByName = {};
+ var dimsDef = internalSource.dimensionsDefine;
+ if (dimsDef) {
+ each(dimsDef, function(dimDef, idx) {
+ var name = dimDef.name;
+ var dimDefExt = {
+ index: idx,
+ name,
+ displayName: dimDef.displayName
+ };
+ dimensions.push(dimDefExt);
+ if (name != null) {
+ var errMsg_1 = "";
+ if (hasOwn(dimsByName, name)) {
+ if (true) {
+ errMsg_1 = 'dimension name "' + name + '" duplicated.';
+ }
+ throwError(errMsg_1);
+ }
+ dimsByName[name] = dimDefExt;
+ }
+ });
+ } else {
+ for (var i = 0; i < internalSource.dimensionsDetectedCount || 0; i++) {
+ dimensions.push({
+ index: i
+ });
+ }
+ }
+ var rawItemGetter = getRawSourceItemGetter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);
+ if (externalTransform.__isBuiltIn) {
+ extSource.getRawDataItem = function(dataIndex) {
+ return rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);
+ };
+ extSource.getRawData = bind(getRawData, null, internalSource);
+ }
+ extSource.cloneRawData = bind(cloneRawData, null, internalSource);
+ var rawCounter = getRawSourceDataCounter(sourceFormat, SERIES_LAYOUT_BY_COLUMN);
+ extSource.count = bind(rawCounter, null, data, sourceHeaderCount, dimensions);
+ var rawValueGetter = getRawSourceValueGetter(sourceFormat);
+ extSource.retrieveValue = function(dataIndex, dimIndex) {
+ var rawItem = rawItemGetter(data, sourceHeaderCount, dimensions, dataIndex);
+ return retrieveValueFromItem(rawItem, dimIndex);
+ };
+ var retrieveValueFromItem = extSource.retrieveValueFromItem = function(dataItem, dimIndex) {
+ if (dataItem == null) {
+ return;
+ }
+ var dimDef = dimensions[dimIndex];
+ if (dimDef) {
+ return rawValueGetter(dataItem, dimIndex, dimDef.name);
+ }
+ };
+ extSource.getDimensionInfo = bind(getDimensionInfo, null, dimensions, dimsByName);
+ extSource.cloneAllDimensionInfo = bind(cloneAllDimensionInfo, null, dimensions);
+ return extSource;
+}
+function getRawData(upstream) {
+ var sourceFormat = upstream.sourceFormat;
+ if (!isSupportedSourceFormat(sourceFormat)) {
+ var errMsg = "";
+ if (true) {
+ errMsg = "`getRawData` is not supported in source format " + sourceFormat;
+ }
+ throwError(errMsg);
+ }
+ return upstream.data;
+}
+function cloneRawData(upstream) {
+ var sourceFormat = upstream.sourceFormat;
+ var data = upstream.data;
+ if (!isSupportedSourceFormat(sourceFormat)) {
+ var errMsg = "";
+ if (true) {
+ errMsg = "`cloneRawData` is not supported in source format " + sourceFormat;
+ }
+ throwError(errMsg);
+ }
+ if (sourceFormat === SOURCE_FORMAT_ARRAY_ROWS) {
+ var result = [];
+ for (var i = 0, len2 = data.length; i < len2; i++) {
+ result.push(data[i].slice());
+ }
+ return result;
+ } else if (sourceFormat === SOURCE_FORMAT_OBJECT_ROWS) {
+ var result = [];
+ for (var i = 0, len2 = data.length; i < len2; i++) {
+ result.push(extend({}, data[i]));
+ }
+ return result;
+ }
+}
+function getDimensionInfo(dimensions, dimsByName, dim) {
+ if (dim == null) {
+ return;
+ }
+ if (isNumber(dim) || !isNaN(dim) && !hasOwn(dimsByName, dim)) {
+ return dimensions[dim];
+ } else if (hasOwn(dimsByName, dim)) {
+ return dimsByName[dim];
+ }
+}
+function cloneAllDimensionInfo(dimensions) {
+ return clone(dimensions);
+}
+var externalTransformMap = createHashMap();
+function registerExternalTransform(externalTransform) {
+ externalTransform = clone(externalTransform);
+ var type = externalTransform.type;
+ var errMsg = "";
+ if (!type) {
+ if (true) {
+ errMsg = "Must have a `type` when `registerTransform`.";
+ }
+ throwError(errMsg);
+ }
+ var typeParsed = type.split(":");
+ if (typeParsed.length !== 2) {
+ if (true) {
+ errMsg = 'Name must include namespace like "ns:regression".';
+ }
+ throwError(errMsg);
+ }
+ var isBuiltIn = false;
+ if (typeParsed[0] === "echarts") {
+ type = typeParsed[1];
+ isBuiltIn = true;
+ }
+ externalTransform.__isBuiltIn = isBuiltIn;
+ externalTransformMap.set(type, externalTransform);
+}
+function applyDataTransform(rawTransOption, sourceList, infoForPrint) {
+ var pipedTransOption = normalizeToArray(rawTransOption);
+ var pipeLen = pipedTransOption.length;
+ var errMsg = "";
+ if (!pipeLen) {
+ if (true) {
+ errMsg = "If `transform` declared, it should at least contain one transform.";
+ }
+ throwError(errMsg);
+ }
+ for (var i = 0, len2 = pipeLen; i < len2; i++) {
+ var transOption = pipedTransOption[i];
+ sourceList = applySingleDataTransform(transOption, sourceList, infoForPrint, pipeLen === 1 ? null : i);
+ if (i !== len2 - 1) {
+ sourceList.length = Math.max(sourceList.length, 1);
+ }
+ }
+ return sourceList;
+}
+function applySingleDataTransform(transOption, upSourceList, infoForPrint, pipeIndex) {
+ var errMsg = "";
+ if (!upSourceList.length) {
+ if (true) {
+ errMsg = "Must have at least one upstream dataset.";
+ }
+ throwError(errMsg);
+ }
+ if (!isObject(transOption)) {
+ if (true) {
+ errMsg = "transform declaration must be an object rather than " + typeof transOption + ".";
+ }
+ throwError(errMsg);
+ }
+ var transType = transOption.type;
+ var externalTransform = externalTransformMap.get(transType);
+ if (!externalTransform) {
+ if (true) {
+ errMsg = 'Can not find transform on type "' + transType + '".';
+ }
+ throwError(errMsg);
+ }
+ var extUpSourceList = map(upSourceList, function(upSource) {
+ return createExternalSource(upSource, externalTransform);
+ });
+ var resultList = normalizeToArray(externalTransform.transform({
+ upstream: extUpSourceList[0],
+ upstreamList: extUpSourceList,
+ config: clone(transOption.config)
+ }));
+ if (true) {
+ if (transOption.print) {
+ var printStrArr = map(resultList, function(extSource) {
+ var pipeIndexStr = pipeIndex != null ? " === pipe index: " + pipeIndex : "";
+ return ["=== dataset index: " + infoForPrint.datasetIndex + pipeIndexStr + " ===", "- transform result data:", makePrintable(extSource.data), "- transform result dimensions:", makePrintable(extSource.dimensions)].join("\n");
+ }).join("\n");
+ log(printStrArr);
+ }
+ }
+ return map(resultList, function(result, resultIndex) {
+ var errMsg2 = "";
+ if (!isObject(result)) {
+ if (true) {
+ errMsg2 = "A transform should not return some empty results.";
+ }
+ throwError(errMsg2);
+ }
+ if (!result.data) {
+ if (true) {
+ errMsg2 = "Transform result data should be not be null or undefined";
+ }
+ throwError(errMsg2);
+ }
+ var sourceFormat = detectSourceFormat(result.data);
+ if (!isSupportedSourceFormat(sourceFormat)) {
+ if (true) {
+ errMsg2 = "Transform result data should be array rows or object rows.";
+ }
+ throwError(errMsg2);
+ }
+ var resultMetaRawOption;
+ var firstUpSource = upSourceList[0];
+ if (firstUpSource && resultIndex === 0 && !result.dimensions) {
+ var startIndex = firstUpSource.startIndex;
+ if (startIndex) {
+ result.data = firstUpSource.data.slice(0, startIndex).concat(result.data);
+ }
+ resultMetaRawOption = {
+ seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
+ sourceHeader: startIndex,
+ dimensions: firstUpSource.metaRawOption.dimensions
+ };
+ } else {
+ resultMetaRawOption = {
+ seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
+ sourceHeader: 0,
+ dimensions: result.dimensions
+ };
+ }
+ return createSource(result.data, resultMetaRawOption, null);
+ });
+}
+function isSupportedSourceFormat(sourceFormat) {
+ return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS;
+}
+
+// node_modules/echarts/lib/data/DataStore.js
+var UNDEFINED = "undefined";
+var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;
+var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;
+var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;
+var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array;
+var dataCtors = {
+ "float": CtorFloat64Array,
+ "int": CtorInt32Array,
+ "ordinal": Array,
+ "number": Array,
+ "time": CtorFloat64Array
+};
+var defaultDimValueGetters;
+function getIndicesCtor(rawCount) {
+ return rawCount > 65535 ? CtorUint32Array : CtorUint16Array;
+}
+function getInitialExtent() {
+ return [Infinity, -Infinity];
+}
+function cloneChunk(originalChunk) {
+ var Ctor = originalChunk.constructor;
+ return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);
+}
+function prepareStore(store, dimIdx, dimType, end2, append) {
+ var DataCtor = dataCtors[dimType || "float"];
+ if (append) {
+ var oldStore = store[dimIdx];
+ var oldLen = oldStore && oldStore.length;
+ if (!(oldLen === end2)) {
+ var newStore = new DataCtor(end2);
+ for (var j = 0; j < oldLen; j++) {
+ newStore[j] = oldStore[j];
+ }
+ store[dimIdx] = newStore;
+ }
+ } else {
+ store[dimIdx] = new DataCtor(end2);
+ }
+}
+var DataStore = function() {
+ function DataStore2() {
+ this._chunks = [];
+ this._rawExtent = [];
+ this._extent = [];
+ this._count = 0;
+ this._rawCount = 0;
+ this._calcDimNameToIdx = createHashMap();
+ }
+ DataStore2.prototype.initData = function(provider, inputDimensions, dimValueGetter) {
+ if (true) {
+ assert(isFunction(provider.getItem) && isFunction(provider.count), "Invalid data provider.");
+ }
+ this._provider = provider;
+ this._chunks = [];
+ this._indices = null;
+ this.getRawIndex = this._getRawIdxIdentity;
+ var source = provider.getSource();
+ var defaultGetter = this.defaultDimValueGetter = defaultDimValueGetters[source.sourceFormat];
+ this._dimValueGetter = dimValueGetter || defaultGetter;
+ this._rawExtent = [];
+ var willRetrieveDataByName = shouldRetrieveDataByName(source);
+ this._dimensions = map(inputDimensions, function(dim) {
+ if (true) {
+ if (willRetrieveDataByName) {
+ assert(dim.property != null);
+ }
+ }
+ return {
+ type: dim.type,
+ property: dim.property
+ };
+ });
+ this._initDataFromProvider(0, provider.count());
+ };
+ DataStore2.prototype.getProvider = function() {
+ return this._provider;
+ };
+ DataStore2.prototype.getSource = function() {
+ return this._provider.getSource();
+ };
+ DataStore2.prototype.ensureCalculationDimension = function(dimName, type) {
+ var calcDimNameToIdx = this._calcDimNameToIdx;
+ var dimensions = this._dimensions;
+ var calcDimIdx = calcDimNameToIdx.get(dimName);
+ if (calcDimIdx != null) {
+ if (dimensions[calcDimIdx].type === type) {
+ return calcDimIdx;
+ }
+ } else {
+ calcDimIdx = dimensions.length;
+ }
+ dimensions[calcDimIdx] = {
+ type
+ };
+ calcDimNameToIdx.set(dimName, calcDimIdx);
+ this._chunks[calcDimIdx] = new dataCtors[type || "float"](this._rawCount);
+ this._rawExtent[calcDimIdx] = getInitialExtent();
+ return calcDimIdx;
+ };
+ DataStore2.prototype.collectOrdinalMeta = function(dimIdx, ordinalMeta) {
+ var chunk = this._chunks[dimIdx];
+ var dim = this._dimensions[dimIdx];
+ var rawExtents = this._rawExtent;
+ var offset = dim.ordinalOffset || 0;
+ var len2 = chunk.length;
+ if (offset === 0) {
+ rawExtents[dimIdx] = getInitialExtent();
+ }
+ var dimRawExtent = rawExtents[dimIdx];
+ for (var i = offset; i < len2; i++) {
+ var val = chunk[i] = ordinalMeta.parseAndCollect(chunk[i]);
+ if (!isNaN(val)) {
+ dimRawExtent[0] = Math.min(val, dimRawExtent[0]);
+ dimRawExtent[1] = Math.max(val, dimRawExtent[1]);
+ }
+ }
+ dim.ordinalMeta = ordinalMeta;
+ dim.ordinalOffset = len2;
+ dim.type = "ordinal";
+ };
+ DataStore2.prototype.getOrdinalMeta = function(dimIdx) {
+ var dimInfo = this._dimensions[dimIdx];
+ var ordinalMeta = dimInfo.ordinalMeta;
+ return ordinalMeta;
+ };
+ DataStore2.prototype.getDimensionProperty = function(dimIndex) {
+ var item = this._dimensions[dimIndex];
+ return item && item.property;
+ };
+ DataStore2.prototype.appendData = function(data) {
+ if (true) {
+ assert(!this._indices, "appendData can only be called on raw data.");
+ }
+ var provider = this._provider;
+ var start2 = this.count();
+ provider.appendData(data);
+ var end2 = provider.count();
+ if (!provider.persistent) {
+ end2 += start2;
+ }
+ if (start2 < end2) {
+ this._initDataFromProvider(start2, end2, true);
+ }
+ return [start2, end2];
+ };
+ DataStore2.prototype.appendValues = function(values, minFillLen) {
+ var chunks = this._chunks;
+ var dimensions = this._dimensions;
+ var dimLen = dimensions.length;
+ var rawExtent = this._rawExtent;
+ var start2 = this.count();
+ var end2 = start2 + Math.max(values.length, minFillLen || 0);
+ for (var i = 0; i < dimLen; i++) {
+ var dim = dimensions[i];
+ prepareStore(chunks, i, dim.type, end2, true);
+ }
+ var emptyDataItem = [];
+ for (var idx = start2; idx < end2; idx++) {
+ var sourceIdx = idx - start2;
+ for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {
+ var dim = dimensions[dimIdx];
+ var val = defaultDimValueGetters.arrayRows.call(this, values[sourceIdx] || emptyDataItem, dim.property, sourceIdx, dimIdx);
+ chunks[dimIdx][idx] = val;
+ var dimRawExtent = rawExtent[dimIdx];
+ val < dimRawExtent[0] && (dimRawExtent[0] = val);
+ val > dimRawExtent[1] && (dimRawExtent[1] = val);
+ }
+ }
+ this._rawCount = this._count = end2;
+ return {
+ start: start2,
+ end: end2
+ };
+ };
+ DataStore2.prototype._initDataFromProvider = function(start2, end2, append) {
+ var provider = this._provider;
+ var chunks = this._chunks;
+ var dimensions = this._dimensions;
+ var dimLen = dimensions.length;
+ var rawExtent = this._rawExtent;
+ var dimNames = map(dimensions, function(dim2) {
+ return dim2.property;
+ });
+ for (var i = 0; i < dimLen; i++) {
+ var dim = dimensions[i];
+ if (!rawExtent[i]) {
+ rawExtent[i] = getInitialExtent();
+ }
+ prepareStore(chunks, i, dim.type, end2, append);
+ }
+ if (provider.fillStorage) {
+ provider.fillStorage(start2, end2, chunks, rawExtent);
+ } else {
+ var dataItem = [];
+ for (var idx = start2; idx < end2; idx++) {
+ dataItem = provider.getItem(idx, dataItem);
+ for (var dimIdx = 0; dimIdx < dimLen; dimIdx++) {
+ var dimStorage = chunks[dimIdx];
+ var val = this._dimValueGetter(dataItem, dimNames[dimIdx], idx, dimIdx);
+ dimStorage[idx] = val;
+ var dimRawExtent = rawExtent[dimIdx];
+ val < dimRawExtent[0] && (dimRawExtent[0] = val);
+ val > dimRawExtent[1] && (dimRawExtent[1] = val);
+ }
+ }
+ }
+ if (!provider.persistent && provider.clean) {
+ provider.clean();
+ }
+ this._rawCount = this._count = end2;
+ this._extent = [];
+ };
+ DataStore2.prototype.count = function() {
+ return this._count;
+ };
+ DataStore2.prototype.get = function(dim, idx) {
+ if (!(idx >= 0 && idx < this._count)) {
+ return NaN;
+ }
+ var dimStore = this._chunks[dim];
+ return dimStore ? dimStore[this.getRawIndex(idx)] : NaN;
+ };
+ DataStore2.prototype.getValues = function(dimensions, idx) {
+ var values = [];
+ var dimArr = [];
+ if (idx == null) {
+ idx = dimensions;
+ dimensions = [];
+ for (var i = 0; i < this._dimensions.length; i++) {
+ dimArr.push(i);
+ }
+ } else {
+ dimArr = dimensions;
+ }
+ for (var i = 0, len2 = dimArr.length; i < len2; i++) {
+ values.push(this.get(dimArr[i], idx));
+ }
+ return values;
+ };
+ DataStore2.prototype.getByRawIndex = function(dim, rawIdx) {
+ if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {
+ return NaN;
+ }
+ var dimStore = this._chunks[dim];
+ return dimStore ? dimStore[rawIdx] : NaN;
+ };
+ DataStore2.prototype.getSum = function(dim) {
+ var dimData = this._chunks[dim];
+ var sum2 = 0;
+ if (dimData) {
+ for (var i = 0, len2 = this.count(); i < len2; i++) {
+ var value = this.get(dim, i);
+ if (!isNaN(value)) {
+ sum2 += value;
+ }
+ }
+ }
+ return sum2;
+ };
+ DataStore2.prototype.getMedian = function(dim) {
+ var dimDataArray = [];
+ this.each([dim], function(val) {
+ if (!isNaN(val)) {
+ dimDataArray.push(val);
+ }
+ });
+ var sortedDimDataArray = dimDataArray.sort(function(a, b) {
+ return a - b;
+ });
+ var len2 = this.count();
+ return len2 === 0 ? 0 : len2 % 2 === 1 ? sortedDimDataArray[(len2 - 1) / 2] : (sortedDimDataArray[len2 / 2] + sortedDimDataArray[len2 / 2 - 1]) / 2;
+ };
+ DataStore2.prototype.indexOfRawIndex = function(rawIndex) {
+ if (rawIndex >= this._rawCount || rawIndex < 0) {
+ return -1;
+ }
+ if (!this._indices) {
+ return rawIndex;
+ }
+ var indices = this._indices;
+ var rawDataIndex = indices[rawIndex];
+ if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {
+ return rawIndex;
+ }
+ var left = 0;
+ var right = this._count - 1;
+ while (left <= right) {
+ var mid = (left + right) / 2 | 0;
+ if (indices[mid] < rawIndex) {
+ left = mid + 1;
+ } else if (indices[mid] > rawIndex) {
+ right = mid - 1;
+ } else {
+ return mid;
+ }
+ }
+ return -1;
+ };
+ DataStore2.prototype.indicesOfNearest = function(dim, value, maxDistance) {
+ var chunks = this._chunks;
+ var dimData = chunks[dim];
+ var nearestIndices = [];
+ if (!dimData) {
+ return nearestIndices;
+ }
+ if (maxDistance == null) {
+ maxDistance = Infinity;
+ }
+ var minDist = Infinity;
+ var minDiff = -1;
+ var nearestIndicesLen = 0;
+ for (var i = 0, len2 = this.count(); i < len2; i++) {
+ var dataIndex = this.getRawIndex(i);
+ var diff = value - dimData[dataIndex];
+ var dist3 = Math.abs(diff);
+ if (dist3 <= maxDistance) {
+ if (dist3 < minDist || dist3 === minDist && diff >= 0 && minDiff < 0) {
+ minDist = dist3;
+ minDiff = diff;
+ nearestIndicesLen = 0;
+ }
+ if (diff === minDiff) {
+ nearestIndices[nearestIndicesLen++] = i;
+ }
+ }
+ }
+ nearestIndices.length = nearestIndicesLen;
+ return nearestIndices;
+ };
+ DataStore2.prototype.getIndices = function() {
+ var newIndices;
+ var indices = this._indices;
+ if (indices) {
+ var Ctor = indices.constructor;
+ var thisCount = this._count;
+ if (Ctor === Array) {
+ newIndices = new Ctor(thisCount);
+ for (var i = 0; i < thisCount; i++) {
+ newIndices[i] = indices[i];
+ }
+ } else {
+ newIndices = new Ctor(indices.buffer, 0, thisCount);
+ }
+ } else {
+ var Ctor = getIndicesCtor(this._rawCount);
+ newIndices = new Ctor(this.count());
+ for (var i = 0; i < newIndices.length; i++) {
+ newIndices[i] = i;
+ }
+ }
+ return newIndices;
+ };
+ DataStore2.prototype.filter = function(dims, cb) {
+ if (!this._count) {
+ return this;
+ }
+ var newStore = this.clone();
+ var count2 = newStore.count();
+ var Ctor = getIndicesCtor(newStore._rawCount);
+ var newIndices = new Ctor(count2);
+ var value = [];
+ var dimSize = dims.length;
+ var offset = 0;
+ var dim0 = dims[0];
+ var chunks = newStore._chunks;
+ for (var i = 0; i < count2; i++) {
+ var keep = void 0;
+ var rawIdx = newStore.getRawIndex(i);
+ if (dimSize === 0) {
+ keep = cb(i);
+ } else if (dimSize === 1) {
+ var val = chunks[dim0][rawIdx];
+ keep = cb(val, i);
+ } else {
+ var k = 0;
+ for (; k < dimSize; k++) {
+ value[k] = chunks[dims[k]][rawIdx];
+ }
+ value[k] = i;
+ keep = cb.apply(null, value);
+ }
+ if (keep) {
+ newIndices[offset++] = rawIdx;
+ }
+ }
+ if (offset < count2) {
+ newStore._indices = newIndices;
+ }
+ newStore._count = offset;
+ newStore._extent = [];
+ newStore._updateGetRawIdx();
+ return newStore;
+ };
+ DataStore2.prototype.selectRange = function(range) {
+ var newStore = this.clone();
+ var len2 = newStore._count;
+ if (!len2) {
+ return this;
+ }
+ var dims = keys(range);
+ var dimSize = dims.length;
+ if (!dimSize) {
+ return this;
+ }
+ var originalCount = newStore.count();
+ var Ctor = getIndicesCtor(newStore._rawCount);
+ var newIndices = new Ctor(originalCount);
+ var offset = 0;
+ var dim0 = dims[0];
+ var min3 = range[dim0][0];
+ var max3 = range[dim0][1];
+ var storeArr = newStore._chunks;
+ var quickFinished = false;
+ if (!newStore._indices) {
+ var idx = 0;
+ if (dimSize === 1) {
+ var dimStorage = storeArr[dims[0]];
+ for (var i = 0; i < len2; i++) {
+ var val = dimStorage[i];
+ if (val >= min3 && val <= max3 || isNaN(val)) {
+ newIndices[offset++] = idx;
+ }
+ idx++;
+ }
+ quickFinished = true;
+ } else if (dimSize === 2) {
+ var dimStorage = storeArr[dims[0]];
+ var dimStorage2 = storeArr[dims[1]];
+ var min23 = range[dims[1]][0];
+ var max23 = range[dims[1]][1];
+ for (var i = 0; i < len2; i++) {
+ var val = dimStorage[i];
+ var val2 = dimStorage2[i];
+ if ((val >= min3 && val <= max3 || isNaN(val)) && (val2 >= min23 && val2 <= max23 || isNaN(val2))) {
+ newIndices[offset++] = idx;
+ }
+ idx++;
+ }
+ quickFinished = true;
+ }
+ }
+ if (!quickFinished) {
+ if (dimSize === 1) {
+ for (var i = 0; i < originalCount; i++) {
+ var rawIndex = newStore.getRawIndex(i);
+ var val = storeArr[dims[0]][rawIndex];
+ if (val >= min3 && val <= max3 || isNaN(val)) {
+ newIndices[offset++] = rawIndex;
+ }
+ }
+ } else {
+ for (var i = 0; i < originalCount; i++) {
+ var keep = true;
+ var rawIndex = newStore.getRawIndex(i);
+ for (var k = 0; k < dimSize; k++) {
+ var dimk = dims[k];
+ var val = storeArr[dimk][rawIndex];
+ if (val < range[dimk][0] || val > range[dimk][1]) {
+ keep = false;
+ }
+ }
+ if (keep) {
+ newIndices[offset++] = newStore.getRawIndex(i);
+ }
+ }
+ }
+ }
+ if (offset < originalCount) {
+ newStore._indices = newIndices;
+ }
+ newStore._count = offset;
+ newStore._extent = [];
+ newStore._updateGetRawIdx();
+ return newStore;
+ };
+ DataStore2.prototype.map = function(dims, cb) {
+ var target = this.clone(dims);
+ this._updateDims(target, dims, cb);
+ return target;
+ };
+ DataStore2.prototype.modify = function(dims, cb) {
+ this._updateDims(this, dims, cb);
+ };
+ DataStore2.prototype._updateDims = function(target, dims, cb) {
+ var targetChunks = target._chunks;
+ var tmpRetValue = [];
+ var dimSize = dims.length;
+ var dataCount = target.count();
+ var values = [];
+ var rawExtent = target._rawExtent;
+ for (var i = 0; i < dims.length; i++) {
+ rawExtent[dims[i]] = getInitialExtent();
+ }
+ for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {
+ var rawIndex = target.getRawIndex(dataIndex);
+ for (var k = 0; k < dimSize; k++) {
+ values[k] = targetChunks[dims[k]][rawIndex];
+ }
+ values[dimSize] = dataIndex;
+ var retValue = cb && cb.apply(null, values);
+ if (retValue != null) {
+ if (typeof retValue !== "object") {
+ tmpRetValue[0] = retValue;
+ retValue = tmpRetValue;
+ }
+ for (var i = 0; i < retValue.length; i++) {
+ var dim = dims[i];
+ var val = retValue[i];
+ var rawExtentOnDim = rawExtent[dim];
+ var dimStore = targetChunks[dim];
+ if (dimStore) {
+ dimStore[rawIndex] = val;
+ }
+ if (val < rawExtentOnDim[0]) {
+ rawExtentOnDim[0] = val;
+ }
+ if (val > rawExtentOnDim[1]) {
+ rawExtentOnDim[1] = val;
+ }
+ }
+ }
+ }
+ };
+ DataStore2.prototype.lttbDownSample = function(valueDimension, rate) {
+ var target = this.clone([valueDimension], true);
+ var targetStorage = target._chunks;
+ var dimStore = targetStorage[valueDimension];
+ var len2 = this.count();
+ var sampledIndex = 0;
+ var frameSize = Math.floor(1 / rate);
+ var currentRawIndex = this.getRawIndex(0);
+ var maxArea;
+ var area;
+ var nextRawIndex;
+ var newIndices = new (getIndicesCtor(this._rawCount))(Math.min((Math.ceil(len2 / frameSize) + 2) * 2, len2));
+ newIndices[sampledIndex++] = currentRawIndex;
+ for (var i = 1; i < len2 - 1; i += frameSize) {
+ var nextFrameStart = Math.min(i + frameSize, len2 - 1);
+ var nextFrameEnd = Math.min(i + frameSize * 2, len2);
+ var avgX = (nextFrameEnd + nextFrameStart) / 2;
+ var avgY = 0;
+ for (var idx = nextFrameStart; idx < nextFrameEnd; idx++) {
+ var rawIndex = this.getRawIndex(idx);
+ var y = dimStore[rawIndex];
+ if (isNaN(y)) {
+ continue;
+ }
+ avgY += y;
+ }
+ avgY /= nextFrameEnd - nextFrameStart;
+ var frameStart = i;
+ var frameEnd = Math.min(i + frameSize, len2);
+ var pointAX = i - 1;
+ var pointAY = dimStore[currentRawIndex];
+ maxArea = -1;
+ nextRawIndex = frameStart;
+ var firstNaNIndex = -1;
+ var countNaN = 0;
+ for (var idx = frameStart; idx < frameEnd; idx++) {
+ var rawIndex = this.getRawIndex(idx);
+ var y = dimStore[rawIndex];
+ if (isNaN(y)) {
+ countNaN++;
+ if (firstNaNIndex < 0) {
+ firstNaNIndex = rawIndex;
+ }
+ continue;
+ }
+ area = Math.abs((pointAX - avgX) * (y - pointAY) - (pointAX - idx) * (avgY - pointAY));
+ if (area > maxArea) {
+ maxArea = area;
+ nextRawIndex = rawIndex;
+ }
+ }
+ if (countNaN > 0 && countNaN < frameEnd - frameStart) {
+ newIndices[sampledIndex++] = Math.min(firstNaNIndex, nextRawIndex);
+ nextRawIndex = Math.max(firstNaNIndex, nextRawIndex);
+ }
+ newIndices[sampledIndex++] = nextRawIndex;
+ currentRawIndex = nextRawIndex;
+ }
+ newIndices[sampledIndex++] = this.getRawIndex(len2 - 1);
+ target._count = sampledIndex;
+ target._indices = newIndices;
+ target.getRawIndex = this._getRawIdx;
+ return target;
+ };
+ DataStore2.prototype.minmaxDownSample = function(valueDimension, rate) {
+ var target = this.clone([valueDimension], true);
+ var targetStorage = target._chunks;
+ var frameSize = Math.floor(1 / rate);
+ var dimStore = targetStorage[valueDimension];
+ var len2 = this.count();
+ var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize) * 2);
+ var offset = 0;
+ for (var i = 0; i < len2; i += frameSize) {
+ var minIndex = i;
+ var minValue = dimStore[this.getRawIndex(minIndex)];
+ var maxIndex = i;
+ var maxValue = dimStore[this.getRawIndex(maxIndex)];
+ var thisFrameSize = frameSize;
+ if (i + frameSize > len2) {
+ thisFrameSize = len2 - i;
+ }
+ for (var k = 0; k < thisFrameSize; k++) {
+ var rawIndex = this.getRawIndex(i + k);
+ var value = dimStore[rawIndex];
+ if (value < minValue) {
+ minValue = value;
+ minIndex = i + k;
+ }
+ if (value > maxValue) {
+ maxValue = value;
+ maxIndex = i + k;
+ }
+ }
+ var rawMinIndex = this.getRawIndex(minIndex);
+ var rawMaxIndex = this.getRawIndex(maxIndex);
+ if (minIndex < maxIndex) {
+ newIndices[offset++] = rawMinIndex;
+ newIndices[offset++] = rawMaxIndex;
+ } else {
+ newIndices[offset++] = rawMaxIndex;
+ newIndices[offset++] = rawMinIndex;
+ }
+ }
+ target._count = offset;
+ target._indices = newIndices;
+ target._updateGetRawIdx();
+ return target;
+ };
+ DataStore2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) {
+ var target = this.clone([dimension], true);
+ var targetStorage = target._chunks;
+ var frameValues = [];
+ var frameSize = Math.floor(1 / rate);
+ var dimStore = targetStorage[dimension];
+ var len2 = this.count();
+ var rawExtentOnDim = target._rawExtent[dimension] = getInitialExtent();
+ var newIndices = new (getIndicesCtor(this._rawCount))(Math.ceil(len2 / frameSize));
+ var offset = 0;
+ for (var i = 0; i < len2; i += frameSize) {
+ if (frameSize > len2 - i) {
+ frameSize = len2 - i;
+ frameValues.length = frameSize;
+ }
+ for (var k = 0; k < frameSize; k++) {
+ var dataIdx = this.getRawIndex(i + k);
+ frameValues[k] = dimStore[dataIdx];
+ }
+ var value = sampleValue(frameValues);
+ var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len2 - 1));
+ dimStore[sampleFrameIdx] = value;
+ if (value < rawExtentOnDim[0]) {
+ rawExtentOnDim[0] = value;
+ }
+ if (value > rawExtentOnDim[1]) {
+ rawExtentOnDim[1] = value;
+ }
+ newIndices[offset++] = sampleFrameIdx;
+ }
+ target._count = offset;
+ target._indices = newIndices;
+ target._updateGetRawIdx();
+ return target;
+ };
+ DataStore2.prototype.each = function(dims, cb) {
+ if (!this._count) {
+ return;
+ }
+ var dimSize = dims.length;
+ var chunks = this._chunks;
+ for (var i = 0, len2 = this.count(); i < len2; i++) {
+ var rawIdx = this.getRawIndex(i);
+ switch (dimSize) {
+ case 0:
+ cb(i);
+ break;
+ case 1:
+ cb(chunks[dims[0]][rawIdx], i);
+ break;
+ case 2:
+ cb(chunks[dims[0]][rawIdx], chunks[dims[1]][rawIdx], i);
+ break;
+ default:
+ var k = 0;
+ var value = [];
+ for (; k < dimSize; k++) {
+ value[k] = chunks[dims[k]][rawIdx];
+ }
+ value[k] = i;
+ cb.apply(null, value);
+ }
+ }
+ };
+ DataStore2.prototype.getDataExtent = function(dim) {
+ var dimData = this._chunks[dim];
+ var initialExtent = getInitialExtent();
+ if (!dimData) {
+ return initialExtent;
+ }
+ var currEnd = this.count();
+ var useRaw = !this._indices;
+ var dimExtent;
+ if (useRaw) {
+ return this._rawExtent[dim].slice();
+ }
+ dimExtent = this._extent[dim];
+ if (dimExtent) {
+ return dimExtent.slice();
+ }
+ dimExtent = initialExtent;
+ var min3 = dimExtent[0];
+ var max3 = dimExtent[1];
+ for (var i = 0; i < currEnd; i++) {
+ var rawIdx = this.getRawIndex(i);
+ var value = dimData[rawIdx];
+ value < min3 && (min3 = value);
+ value > max3 && (max3 = value);
+ }
+ dimExtent = [min3, max3];
+ this._extent[dim] = dimExtent;
+ return dimExtent;
+ };
+ DataStore2.prototype.getRawDataItem = function(idx) {
+ var rawIdx = this.getRawIndex(idx);
+ if (!this._provider.persistent) {
+ var val = [];
+ var chunks = this._chunks;
+ for (var i = 0; i < chunks.length; i++) {
+ val.push(chunks[i][rawIdx]);
+ }
+ return val;
+ } else {
+ return this._provider.getItem(rawIdx);
+ }
+ };
+ DataStore2.prototype.clone = function(clonedDims, ignoreIndices) {
+ var target = new DataStore2();
+ var chunks = this._chunks;
+ var clonedDimsMap = clonedDims && reduce(clonedDims, function(obj, dimIdx) {
+ obj[dimIdx] = true;
+ return obj;
+ }, {});
+ if (clonedDimsMap) {
+ for (var i = 0; i < chunks.length; i++) {
+ target._chunks[i] = !clonedDimsMap[i] ? chunks[i] : cloneChunk(chunks[i]);
+ }
+ } else {
+ target._chunks = chunks;
+ }
+ this._copyCommonProps(target);
+ if (!ignoreIndices) {
+ target._indices = this._cloneIndices();
+ }
+ target._updateGetRawIdx();
+ return target;
+ };
+ DataStore2.prototype._copyCommonProps = function(target) {
+ target._count = this._count;
+ target._rawCount = this._rawCount;
+ target._provider = this._provider;
+ target._dimensions = this._dimensions;
+ target._extent = clone(this._extent);
+ target._rawExtent = clone(this._rawExtent);
+ };
+ DataStore2.prototype._cloneIndices = function() {
+ if (this._indices) {
+ var Ctor = this._indices.constructor;
+ var indices = void 0;
+ if (Ctor === Array) {
+ var thisCount = this._indices.length;
+ indices = new Ctor(thisCount);
+ for (var i = 0; i < thisCount; i++) {
+ indices[i] = this._indices[i];
+ }
+ } else {
+ indices = new Ctor(this._indices);
+ }
+ return indices;
+ }
+ return null;
+ };
+ DataStore2.prototype._getRawIdxIdentity = function(idx) {
+ return idx;
+ };
+ DataStore2.prototype._getRawIdx = function(idx) {
+ if (idx < this._count && idx >= 0) {
+ return this._indices[idx];
+ }
+ return -1;
+ };
+ DataStore2.prototype._updateGetRawIdx = function() {
+ this.getRawIndex = this._indices ? this._getRawIdx : this._getRawIdxIdentity;
+ };
+ DataStore2.internalField = function() {
+ function getDimValueSimply(dataItem, property, dataIndex, dimIndex) {
+ return parseDataValue(dataItem[dimIndex], this._dimensions[dimIndex]);
+ }
+ defaultDimValueGetters = {
+ arrayRows: getDimValueSimply,
+ objectRows: function(dataItem, property, dataIndex, dimIndex) {
+ return parseDataValue(dataItem[property], this._dimensions[dimIndex]);
+ },
+ keyedColumns: getDimValueSimply,
+ original: function(dataItem, property, dataIndex, dimIndex) {
+ var value = dataItem && (dataItem.value == null ? dataItem : dataItem.value);
+ return parseDataValue(value instanceof Array ? value[dimIndex] : value, this._dimensions[dimIndex]);
+ },
+ typedArray: function(dataItem, property, dataIndex, dimIndex) {
+ return dataItem[dimIndex];
+ }
+ };
+ }();
+ return DataStore2;
+}();
+var DataStore_default = DataStore;
+
+// node_modules/echarts/lib/data/helper/sourceManager.js
+var SourceManager = function() {
+ function SourceManager2(sourceHost) {
+ this._sourceList = [];
+ this._storeList = [];
+ this._upstreamSignList = [];
+ this._versionSignBase = 0;
+ this._dirty = true;
+ this._sourceHost = sourceHost;
+ }
+ SourceManager2.prototype.dirty = function() {
+ this._setLocalSource([], []);
+ this._storeList = [];
+ this._dirty = true;
+ };
+ SourceManager2.prototype._setLocalSource = function(sourceList, upstreamSignList) {
+ this._sourceList = sourceList;
+ this._upstreamSignList = upstreamSignList;
+ this._versionSignBase++;
+ if (this._versionSignBase > 9e10) {
+ this._versionSignBase = 0;
+ }
+ };
+ SourceManager2.prototype._getVersionSign = function() {
+ return this._sourceHost.uid + "_" + this._versionSignBase;
+ };
+ SourceManager2.prototype.prepareSource = function() {
+ if (this._isDirty()) {
+ this._createSource();
+ this._dirty = false;
+ }
+ };
+ SourceManager2.prototype._createSource = function() {
+ this._setLocalSource([], []);
+ var sourceHost = this._sourceHost;
+ var upSourceMgrList = this._getUpstreamSourceManagers();
+ var hasUpstream = !!upSourceMgrList.length;
+ var resultSourceList;
+ var upstreamSignList;
+ if (isSeries(sourceHost)) {
+ var seriesModel = sourceHost;
+ var data = void 0;
+ var sourceFormat = void 0;
+ var upSource = void 0;
+ if (hasUpstream) {
+ var upSourceMgr = upSourceMgrList[0];
+ upSourceMgr.prepareSource();
+ upSource = upSourceMgr.getSource();
+ data = upSource.data;
+ sourceFormat = upSource.sourceFormat;
+ upstreamSignList = [upSourceMgr._getVersionSign()];
+ } else {
+ data = seriesModel.get("data", true);
+ sourceFormat = isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL;
+ upstreamSignList = [];
+ }
+ var newMetaRawOption = this._getSourceMetaRawOption() || {};
+ var upMetaRawOption = upSource && upSource.metaRawOption || {};
+ var seriesLayoutBy = retrieve2(newMetaRawOption.seriesLayoutBy, upMetaRawOption.seriesLayoutBy) || null;
+ var sourceHeader = retrieve2(newMetaRawOption.sourceHeader, upMetaRawOption.sourceHeader);
+ var dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions);
+ var needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy || !!sourceHeader !== !!upMetaRawOption.sourceHeader || dimensions;
+ resultSourceList = needsCreateSource ? [createSource(data, {
+ seriesLayoutBy,
+ sourceHeader,
+ dimensions
+ }, sourceFormat)] : [];
+ } else {
+ var datasetModel = sourceHost;
+ if (hasUpstream) {
+ var result = this._applyTransform(upSourceMgrList);
+ resultSourceList = result.sourceList;
+ upstreamSignList = result.upstreamSignList;
+ } else {
+ var sourceData = datasetModel.get("source", true);
+ resultSourceList = [createSource(sourceData, this._getSourceMetaRawOption(), null)];
+ upstreamSignList = [];
+ }
+ }
+ if (true) {
+ assert(resultSourceList && upstreamSignList);
+ }
+ this._setLocalSource(resultSourceList, upstreamSignList);
+ };
+ SourceManager2.prototype._applyTransform = function(upMgrList) {
+ var datasetModel = this._sourceHost;
+ var transformOption = datasetModel.get("transform", true);
+ var fromTransformResult = datasetModel.get("fromTransformResult", true);
+ if (true) {
+ assert(fromTransformResult != null || transformOption != null);
+ }
+ if (fromTransformResult != null) {
+ var errMsg = "";
+ if (upMgrList.length !== 1) {
+ if (true) {
+ errMsg = "When using `fromTransformResult`, there should be only one upstream dataset";
+ }
+ doThrow(errMsg);
+ }
+ }
+ var sourceList;
+ var upSourceList = [];
+ var upstreamSignList = [];
+ each(upMgrList, function(upMgr) {
+ upMgr.prepareSource();
+ var upSource = upMgr.getSource(fromTransformResult || 0);
+ var errMsg2 = "";
+ if (fromTransformResult != null && !upSource) {
+ if (true) {
+ errMsg2 = "Can not retrieve result by `fromTransformResult`: " + fromTransformResult;
+ }
+ doThrow(errMsg2);
+ }
+ upSourceList.push(upSource);
+ upstreamSignList.push(upMgr._getVersionSign());
+ });
+ if (transformOption) {
+ sourceList = applyDataTransform(transformOption, upSourceList, {
+ datasetIndex: datasetModel.componentIndex
+ });
+ } else if (fromTransformResult != null) {
+ sourceList = [cloneSourceShallow(upSourceList[0])];
+ }
+ return {
+ sourceList,
+ upstreamSignList
+ };
+ };
+ SourceManager2.prototype._isDirty = function() {
+ if (this._dirty) {
+ return true;
+ }
+ var upSourceMgrList = this._getUpstreamSourceManagers();
+ for (var i = 0; i < upSourceMgrList.length; i++) {
+ var upSrcMgr = upSourceMgrList[i];
+ if (upSrcMgr._isDirty() || this._upstreamSignList[i] !== upSrcMgr._getVersionSign()) {
+ return true;
+ }
+ }
+ };
+ SourceManager2.prototype.getSource = function(sourceIndex) {
+ sourceIndex = sourceIndex || 0;
+ var source = this._sourceList[sourceIndex];
+ if (!source) {
+ var upSourceMgrList = this._getUpstreamSourceManagers();
+ return upSourceMgrList[0] && upSourceMgrList[0].getSource(sourceIndex);
+ }
+ return source;
+ };
+ SourceManager2.prototype.getSharedDataStore = function(seriesDimRequest) {
+ if (true) {
+ assert(isSeries(this._sourceHost), "Can only call getDataStore on series source manager.");
+ }
+ var schema = seriesDimRequest.makeStoreSchema();
+ return this._innerGetDataStore(schema.dimensions, seriesDimRequest.source, schema.hash);
+ };
+ SourceManager2.prototype._innerGetDataStore = function(storeDims, seriesSource, sourceReadKey) {
+ var sourceIndex = 0;
+ var storeList = this._storeList;
+ var cachedStoreMap = storeList[sourceIndex];
+ if (!cachedStoreMap) {
+ cachedStoreMap = storeList[sourceIndex] = {};
+ }
+ var cachedStore = cachedStoreMap[sourceReadKey];
+ if (!cachedStore) {
+ var upSourceMgr = this._getUpstreamSourceManagers()[0];
+ if (isSeries(this._sourceHost) && upSourceMgr) {
+ cachedStore = upSourceMgr._innerGetDataStore(storeDims, seriesSource, sourceReadKey);
+ } else {
+ cachedStore = new DataStore_default();
+ cachedStore.initData(new DefaultDataProvider(seriesSource, storeDims.length), storeDims);
+ }
+ cachedStoreMap[sourceReadKey] = cachedStore;
+ }
+ return cachedStore;
+ };
+ SourceManager2.prototype._getUpstreamSourceManagers = function() {
+ var sourceHost = this._sourceHost;
+ if (isSeries(sourceHost)) {
+ var datasetModel = querySeriesUpstreamDatasetModel(sourceHost);
+ return !datasetModel ? [] : [datasetModel.getSourceManager()];
+ } else {
+ return map(queryDatasetUpstreamDatasetModels(sourceHost), function(datasetModel2) {
+ return datasetModel2.getSourceManager();
+ });
+ }
+ };
+ SourceManager2.prototype._getSourceMetaRawOption = function() {
+ var sourceHost = this._sourceHost;
+ var seriesLayoutBy;
+ var sourceHeader;
+ var dimensions;
+ if (isSeries(sourceHost)) {
+ seriesLayoutBy = sourceHost.get("seriesLayoutBy", true);
+ sourceHeader = sourceHost.get("sourceHeader", true);
+ dimensions = sourceHost.get("dimensions", true);
+ } else if (!this._getUpstreamSourceManagers().length) {
+ var model = sourceHost;
+ seriesLayoutBy = model.get("seriesLayoutBy", true);
+ sourceHeader = model.get("sourceHeader", true);
+ dimensions = model.get("dimensions", true);
+ }
+ return {
+ seriesLayoutBy,
+ sourceHeader,
+ dimensions
+ };
+ };
+ return SourceManager2;
+}();
+function disableTransformOptionMerge(datasetModel) {
+ var transformOption = datasetModel.option.transform;
+ transformOption && setAsPrimitive(datasetModel.option.transform);
+}
+function isSeries(sourceHost) {
+ return sourceHost.mainType === "series";
+}
+function doThrow(errMsg) {
+ throw new Error(errMsg);
+}
+
+// node_modules/echarts/lib/component/tooltip/tooltipMarkup.js
+var TOOLTIP_LINE_HEIGHT_CSS = "line-height:1";
+function getTooltipLineHeight(textStyle) {
+ var lineHeight = textStyle.lineHeight;
+ if (lineHeight == null) {
+ return TOOLTIP_LINE_HEIGHT_CSS;
+ } else {
+ return "line-height:" + encodeHTML(lineHeight + "") + "px";
+ }
+}
+function getTooltipTextStyle(textStyle, renderMode) {
+ var nameFontColor = textStyle.color || "#6e7079";
+ var nameFontSize = textStyle.fontSize || 12;
+ var nameFontWeight = textStyle.fontWeight || "400";
+ var valueFontColor = textStyle.color || "#464646";
+ var valueFontSize = textStyle.fontSize || 14;
+ var valueFontWeight = textStyle.fontWeight || "900";
+ if (renderMode === "html") {
+ return {
+ nameStyle: "font-size:" + encodeHTML(nameFontSize + "") + "px;color:" + encodeHTML(nameFontColor) + ";font-weight:" + encodeHTML(nameFontWeight + ""),
+ valueStyle: "font-size:" + encodeHTML(valueFontSize + "") + "px;color:" + encodeHTML(valueFontColor) + ";font-weight:" + encodeHTML(valueFontWeight + "")
+ };
+ } else {
+ return {
+ nameStyle: {
+ fontSize: nameFontSize,
+ fill: nameFontColor,
+ fontWeight: nameFontWeight
+ },
+ valueStyle: {
+ fontSize: valueFontSize,
+ fill: valueFontColor,
+ fontWeight: valueFontWeight
+ }
+ };
+ }
+}
+var HTML_GAPS = [0, 10, 20, 30];
+var RICH_TEXT_GAPS = ["", "\n", "\n\n", "\n\n\n"];
+function createTooltipMarkup(type, option) {
+ option.type = type;
+ return option;
+}
+function isSectionFragment(frag) {
+ return frag.type === "section";
+}
+function getBuilder(frag) {
+ return isSectionFragment(frag) ? buildSection : buildNameValue;
+}
+function getBlockGapLevel(frag) {
+ if (isSectionFragment(frag)) {
+ var gapLevel_1 = 0;
+ var subBlockLen = frag.blocks.length;
+ var hasInnerGap_1 = subBlockLen > 1 || subBlockLen > 0 && !frag.noHeader;
+ each(frag.blocks, function(subBlock) {
+ var subGapLevel = getBlockGapLevel(subBlock);
+ if (subGapLevel >= gapLevel_1) {
+ gapLevel_1 = subGapLevel + +(hasInnerGap_1 && (!subGapLevel || isSectionFragment(subBlock) && !subBlock.noHeader));
+ }
+ });
+ return gapLevel_1;
+ }
+ return 0;
+}
+function buildSection(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {
+ var noHeader = fragment.noHeader;
+ var gaps = getGap(getBlockGapLevel(fragment));
+ var subMarkupTextList = [];
+ var subBlocks = fragment.blocks || [];
+ assert(!subBlocks || isArray(subBlocks));
+ subBlocks = subBlocks || [];
+ var orderMode = ctx.orderMode;
+ if (fragment.sortBlocks && orderMode) {
+ subBlocks = subBlocks.slice();
+ var orderMap = {
+ valueAsc: "asc",
+ valueDesc: "desc"
+ };
+ if (hasOwn(orderMap, orderMode)) {
+ var comparator_1 = new SortOrderComparator(orderMap[orderMode], null);
+ subBlocks.sort(function(a, b) {
+ return comparator_1.evaluate(a.sortParam, b.sortParam);
+ });
+ } else if (orderMode === "seriesDesc") {
+ subBlocks.reverse();
+ }
+ }
+ each(subBlocks, function(subBlock, idx) {
+ var valueFormatter = fragment.valueFormatter;
+ var subMarkupText2 = getBuilder(subBlock)(
+ valueFormatter ? extend(extend({}, ctx), {
+ valueFormatter
+ }) : ctx,
+ subBlock,
+ idx > 0 ? gaps.html : 0,
+ toolTipTextStyle
+ );
+ subMarkupText2 != null && subMarkupTextList.push(subMarkupText2);
+ });
+ var subMarkupText = ctx.renderMode === "richText" ? subMarkupTextList.join(gaps.richText) : wrapBlockHTML(toolTipTextStyle, subMarkupTextList.join(""), noHeader ? topMarginForOuterGap : gaps.html);
+ if (noHeader) {
+ return subMarkupText;
+ }
+ var displayableHeader = makeValueReadable(fragment.header, "ordinal", ctx.useUTC);
+ var nameStyle = getTooltipTextStyle(toolTipTextStyle, ctx.renderMode).nameStyle;
+ var tooltipLineHeight = getTooltipLineHeight(toolTipTextStyle);
+ if (ctx.renderMode === "richText") {
+ return wrapInlineNameRichText(ctx, displayableHeader, nameStyle) + gaps.richText + subMarkupText;
+ } else {
+ return wrapBlockHTML(toolTipTextStyle, '
' + encodeHTML(displayableHeader) + "
" + subMarkupText, topMarginForOuterGap);
+ }
+}
+function buildNameValue(ctx, fragment, topMarginForOuterGap, toolTipTextStyle) {
+ var renderMode = ctx.renderMode;
+ var noName = fragment.noName;
+ var noValue = fragment.noValue;
+ var noMarker = !fragment.markerType;
+ var name = fragment.name;
+ var useUTC = ctx.useUTC;
+ var valueFormatter = fragment.valueFormatter || ctx.valueFormatter || function(value) {
+ value = isArray(value) ? value : [value];
+ return map(value, function(val, idx) {
+ return makeValueReadable(val, isArray(valueTypeOption) ? valueTypeOption[idx] : valueTypeOption, useUTC);
+ });
+ };
+ if (noName && noValue) {
+ return;
+ }
+ var markerStr = noMarker ? "" : ctx.markupStyleCreator.makeTooltipMarker(fragment.markerType, fragment.markerColor || "#333", renderMode);
+ var readableName = noName ? "" : makeValueReadable(name, "ordinal", useUTC);
+ var valueTypeOption = fragment.valueType;
+ var readableValueList = noValue ? [] : valueFormatter(fragment.value, fragment.dataIndex);
+ var valueAlignRight = !noMarker || !noName;
+ var valueCloseToMarker = !noMarker && noName;
+ var _a2 = getTooltipTextStyle(toolTipTextStyle, renderMode), nameStyle = _a2.nameStyle, valueStyle = _a2.valueStyle;
+ return renderMode === "richText" ? (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameRichText(ctx, readableName, nameStyle)) + (noValue ? "" : wrapInlineValueRichText(ctx, readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)) : wrapBlockHTML(toolTipTextStyle, (noMarker ? "" : markerStr) + (noName ? "" : wrapInlineNameHTML(readableName, !noMarker, nameStyle)) + (noValue ? "" : wrapInlineValueHTML(readableValueList, valueAlignRight, valueCloseToMarker, valueStyle)), topMarginForOuterGap);
+}
+function buildTooltipMarkup(fragment, markupStyleCreator, renderMode, orderMode, useUTC, toolTipTextStyle) {
+ if (!fragment) {
+ return;
+ }
+ var builder = getBuilder(fragment);
+ var ctx = {
+ useUTC,
+ renderMode,
+ orderMode,
+ markupStyleCreator,
+ valueFormatter: fragment.valueFormatter
+ };
+ return builder(ctx, fragment, 0, toolTipTextStyle);
+}
+function getGap(gapLevel) {
+ return {
+ html: HTML_GAPS[gapLevel],
+ richText: RICH_TEXT_GAPS[gapLevel]
+ };
+}
+function wrapBlockHTML(textStyle, encodedContent, topGap) {
+ var clearfix = '';
+ var marginCSS = "margin: " + topGap + "px 0 0";
+ var tooltipLineHeight = getTooltipLineHeight(textStyle);
+ return '' + encodedContent + clearfix + "
";
+}
+function wrapInlineNameHTML(name, leftHasMarker, style) {
+ var marginCss = leftHasMarker ? "margin-left:2px" : "";
+ return '' + encodeHTML(name) + "";
+}
+function wrapInlineValueHTML(valueList, alignRight, valueCloseToMarker, style) {
+ var paddingStr = valueCloseToMarker ? "10px" : "20px";
+ var alignCSS = alignRight ? "float:right;margin-left:" + paddingStr : "";
+ valueList = isArray(valueList) ? valueList : [valueList];
+ return '' + map(valueList, function(value) {
+ return encodeHTML(value);
+ }).join(" ") + "";
+}
+function wrapInlineNameRichText(ctx, name, style) {
+ return ctx.markupStyleCreator.wrapRichTextStyle(name, style);
+}
+function wrapInlineValueRichText(ctx, values, alignRight, valueCloseToMarker, style) {
+ var styles = [style];
+ var paddingLeft = valueCloseToMarker ? 10 : 20;
+ alignRight && styles.push({
+ padding: [0, 0, 0, paddingLeft],
+ align: "right"
+ });
+ return ctx.markupStyleCreator.wrapRichTextStyle(isArray(values) ? values.join(" ") : values, styles);
+}
+function retrieveVisualColorForTooltipMarker(series, dataIndex) {
+ var style = series.getData().getItemVisual(dataIndex, "style");
+ var color = style[series.visualDrawType];
+ return convertToColorString(color);
+}
+function getPaddingFromTooltipModel(model, renderMode) {
+ var padding = model.get("padding");
+ return padding != null ? padding : renderMode === "richText" ? [8, 10] : 10;
+}
+var TooltipMarkupStyleCreator = function() {
+ function TooltipMarkupStyleCreator2() {
+ this.richTextStyles = {};
+ this._nextStyleNameId = getRandomIdBase();
+ }
+ TooltipMarkupStyleCreator2.prototype._generateStyleName = function() {
+ return "__EC_aUTo_" + this._nextStyleNameId++;
+ };
+ TooltipMarkupStyleCreator2.prototype.makeTooltipMarker = function(markerType, colorStr, renderMode) {
+ var markerId = renderMode === "richText" ? this._generateStyleName() : null;
+ var marker = getTooltipMarker({
+ color: colorStr,
+ type: markerType,
+ renderMode,
+ markerId
+ });
+ if (isString(marker)) {
+ return marker;
+ } else {
+ if (true) {
+ assert(markerId);
+ }
+ this.richTextStyles[markerId] = marker.style;
+ return marker.content;
+ }
+ };
+ TooltipMarkupStyleCreator2.prototype.wrapRichTextStyle = function(text, styles) {
+ var finalStl = {};
+ if (isArray(styles)) {
+ each(styles, function(stl) {
+ return extend(finalStl, stl);
+ });
+ } else {
+ extend(finalStl, styles);
+ }
+ var styleName = this._generateStyleName();
+ this.richTextStyles[styleName] = finalStl;
+ return "{" + styleName + "|" + text + "}";
+ };
+ return TooltipMarkupStyleCreator2;
+}();
+
+// node_modules/echarts/lib/component/tooltip/seriesFormatTooltip.js
+function defaultSeriesFormatTooltip(opt) {
+ var series = opt.series;
+ var dataIndex = opt.dataIndex;
+ var multipleSeries = opt.multipleSeries;
+ var data = series.getData();
+ var tooltipDims = data.mapDimensionsAll("defaultedTooltip");
+ var tooltipDimLen = tooltipDims.length;
+ var value = series.getRawValue(dataIndex);
+ var isValueArr = isArray(value);
+ var markerColor = retrieveVisualColorForTooltipMarker(series, dataIndex);
+ var inlineValue;
+ var inlineValueType;
+ var subBlocks;
+ var sortParam;
+ if (tooltipDimLen > 1 || isValueArr && !tooltipDimLen) {
+ var formatArrResult = formatTooltipArrayValue(value, series, dataIndex, tooltipDims, markerColor);
+ inlineValue = formatArrResult.inlineValues;
+ inlineValueType = formatArrResult.inlineValueTypes;
+ subBlocks = formatArrResult.blocks;
+ sortParam = formatArrResult.inlineValues[0];
+ } else if (tooltipDimLen) {
+ var dimInfo = data.getDimensionInfo(tooltipDims[0]);
+ sortParam = inlineValue = retrieveRawValue(data, dataIndex, tooltipDims[0]);
+ inlineValueType = dimInfo.type;
+ } else {
+ sortParam = inlineValue = isValueArr ? value[0] : value;
+ }
+ var seriesNameSpecified = isNameSpecified(series);
+ var seriesName = seriesNameSpecified && series.name || "";
+ var itemName = data.getName(dataIndex);
+ var inlineName = multipleSeries ? seriesName : itemName;
+ return createTooltipMarkup("section", {
+ header: seriesName,
+ noHeader: multipleSeries || !seriesNameSpecified,
+ sortParam,
+ blocks: [createTooltipMarkup("nameValue", {
+ markerType: "item",
+ markerColor,
+ name: inlineName,
+ noName: !trim(inlineName),
+ value: inlineValue,
+ valueType: inlineValueType,
+ dataIndex
+ })].concat(subBlocks || [])
+ });
+}
+function formatTooltipArrayValue(value, series, dataIndex, tooltipDims, colorStr) {
+ var data = series.getData();
+ var isValueMultipleLine = reduce(value, function(isValueMultipleLine2, val, idx) {
+ var dimItem = data.getDimensionInfo(idx);
+ return isValueMultipleLine2 = isValueMultipleLine2 || dimItem && dimItem.tooltip !== false && dimItem.displayName != null;
+ }, false);
+ var inlineValues = [];
+ var inlineValueTypes = [];
+ var blocks = [];
+ tooltipDims.length ? each(tooltipDims, function(dim) {
+ setEachItem(retrieveRawValue(data, dataIndex, dim), dim);
+ }) : each(value, setEachItem);
+ function setEachItem(val, dim) {
+ var dimInfo = data.getDimensionInfo(dim);
+ if (!dimInfo || dimInfo.otherDims.tooltip === false) {
+ return;
+ }
+ if (isValueMultipleLine) {
+ blocks.push(createTooltipMarkup("nameValue", {
+ markerType: "subItem",
+ markerColor: colorStr,
+ name: dimInfo.displayName,
+ value: val,
+ valueType: dimInfo.type
+ }));
+ } else {
+ inlineValues.push(val);
+ inlineValueTypes.push(dimInfo.type);
+ }
+ }
+ return {
+ inlineValues,
+ inlineValueTypes,
+ blocks
+ };
+}
+
+// node_modules/echarts/lib/model/Series.js
+var inner2 = makeInner();
+function getSelectionKey(data, dataIndex) {
+ return data.getName(dataIndex) || data.getId(dataIndex);
+}
+var SERIES_UNIVERSAL_TRANSITION_PROP = "__universalTransitionEnabled";
+var SeriesModel = function(_super) {
+ __extends(SeriesModel2, _super);
+ function SeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this._selectedDataIndicesMap = {};
+ return _this;
+ }
+ SeriesModel2.prototype.init = function(option, parentModel, ecModel) {
+ this.seriesIndex = this.componentIndex;
+ this.dataTask = createTask({
+ count: dataTaskCount,
+ reset: dataTaskReset
+ });
+ this.dataTask.context = {
+ model: this
+ };
+ this.mergeDefaultAndTheme(option, ecModel);
+ var sourceManager = inner2(this).sourceManager = new SourceManager(this);
+ sourceManager.prepareSource();
+ var data = this.getInitialData(option, ecModel);
+ wrapData(data, this);
+ this.dataTask.context.data = data;
+ if (true) {
+ assert(data, "getInitialData returned invalid data.");
+ }
+ inner2(this).dataBeforeProcessed = data;
+ autoSeriesName(this);
+ this._initSelectedMapFromData(data);
+ };
+ SeriesModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) {
+ var layoutMode = fetchLayoutMode(this);
+ var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
+ var themeSubType = this.subType;
+ if (Component_default.hasClass(themeSubType)) {
+ themeSubType += "Series";
+ }
+ merge(option, ecModel.getTheme().get(this.subType));
+ merge(option, this.getDefaultOption());
+ defaultEmphasis(option, "label", ["show"]);
+ this.fillDataTextStyle(option.data);
+ if (layoutMode) {
+ mergeLayoutParam(option, inputPositionParams, layoutMode);
+ }
+ };
+ SeriesModel2.prototype.mergeOption = function(newSeriesOption, ecModel) {
+ newSeriesOption = merge(this.option, newSeriesOption, true);
+ this.fillDataTextStyle(newSeriesOption.data);
+ var layoutMode = fetchLayoutMode(this);
+ if (layoutMode) {
+ mergeLayoutParam(this.option, newSeriesOption, layoutMode);
+ }
+ var sourceManager = inner2(this).sourceManager;
+ sourceManager.dirty();
+ sourceManager.prepareSource();
+ var data = this.getInitialData(newSeriesOption, ecModel);
+ wrapData(data, this);
+ this.dataTask.dirty();
+ this.dataTask.context.data = data;
+ inner2(this).dataBeforeProcessed = data;
+ autoSeriesName(this);
+ this._initSelectedMapFromData(data);
+ };
+ SeriesModel2.prototype.fillDataTextStyle = function(data) {
+ if (data && !isTypedArray(data)) {
+ var props = ["show"];
+ for (var i = 0; i < data.length; i++) {
+ if (data[i] && data[i].label) {
+ defaultEmphasis(data[i], "label", props);
+ }
+ }
+ }
+ };
+ SeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return;
+ };
+ SeriesModel2.prototype.appendData = function(params) {
+ var data = this.getRawData();
+ data.appendData(params.data);
+ };
+ SeriesModel2.prototype.getData = function(dataType) {
+ var task = getCurrentTask(this);
+ if (task) {
+ var data = task.context.data;
+ return dataType == null || !data.getLinkedData ? data : data.getLinkedData(dataType);
+ } else {
+ return inner2(this).data;
+ }
+ };
+ SeriesModel2.prototype.getAllData = function() {
+ var mainData = this.getData();
+ return mainData && mainData.getLinkedDataAll ? mainData.getLinkedDataAll() : [{
+ data: mainData
+ }];
+ };
+ SeriesModel2.prototype.setData = function(data) {
+ var task = getCurrentTask(this);
+ if (task) {
+ var context = task.context;
+ context.outputData = data;
+ if (task !== this.dataTask) {
+ context.data = data;
+ }
+ }
+ inner2(this).data = data;
+ };
+ SeriesModel2.prototype.getEncode = function() {
+ var encode = this.get("encode", true);
+ if (encode) {
+ return createHashMap(encode);
+ }
+ };
+ SeriesModel2.prototype.getSourceManager = function() {
+ return inner2(this).sourceManager;
+ };
+ SeriesModel2.prototype.getSource = function() {
+ return this.getSourceManager().getSource();
+ };
+ SeriesModel2.prototype.getRawData = function() {
+ return inner2(this).dataBeforeProcessed;
+ };
+ SeriesModel2.prototype.getColorBy = function() {
+ var colorBy = this.get("colorBy");
+ return colorBy || "series";
+ };
+ SeriesModel2.prototype.isColorBySeries = function() {
+ return this.getColorBy() === "series";
+ };
+ SeriesModel2.prototype.getBaseAxis = function() {
+ var coordSys = this.coordinateSystem;
+ return coordSys && coordSys.getBaseAxis && coordSys.getBaseAxis();
+ };
+ SeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ return defaultSeriesFormatTooltip({
+ series: this,
+ dataIndex,
+ multipleSeries
+ });
+ };
+ SeriesModel2.prototype.isAnimationEnabled = function() {
+ var ecModel = this.ecModel;
+ if (env_default.node && !(ecModel && ecModel.ssr)) {
+ return false;
+ }
+ var animationEnabled = this.getShallow("animation");
+ if (animationEnabled) {
+ if (this.getData().count() > this.getShallow("animationThreshold")) {
+ animationEnabled = false;
+ }
+ }
+ return !!animationEnabled;
+ };
+ SeriesModel2.prototype.restoreData = function() {
+ this.dataTask.dirty();
+ };
+ SeriesModel2.prototype.getColorFromPalette = function(name, scope, requestColorNum) {
+ var ecModel = this.ecModel;
+ var color = PaletteMixin.prototype.getColorFromPalette.call(this, name, scope, requestColorNum);
+ if (!color) {
+ color = ecModel.getColorFromPalette(name, scope, requestColorNum);
+ }
+ return color;
+ };
+ SeriesModel2.prototype.coordDimToDataDim = function(coordDim) {
+ return this.getRawData().mapDimensionsAll(coordDim);
+ };
+ SeriesModel2.prototype.getProgressive = function() {
+ return this.get("progressive");
+ };
+ SeriesModel2.prototype.getProgressiveThreshold = function() {
+ return this.get("progressiveThreshold");
+ };
+ SeriesModel2.prototype.select = function(innerDataIndices, dataType) {
+ this._innerSelect(this.getData(dataType), innerDataIndices);
+ };
+ SeriesModel2.prototype.unselect = function(innerDataIndices, dataType) {
+ var selectedMap = this.option.selectedMap;
+ if (!selectedMap) {
+ return;
+ }
+ var selectedMode = this.option.selectedMode;
+ var data = this.getData(dataType);
+ if (selectedMode === "series" || selectedMap === "all") {
+ this.option.selectedMap = {};
+ this._selectedDataIndicesMap = {};
+ return;
+ }
+ for (var i = 0; i < innerDataIndices.length; i++) {
+ var dataIndex = innerDataIndices[i];
+ var nameOrId = getSelectionKey(data, dataIndex);
+ selectedMap[nameOrId] = false;
+ this._selectedDataIndicesMap[nameOrId] = -1;
+ }
+ };
+ SeriesModel2.prototype.toggleSelect = function(innerDataIndices, dataType) {
+ var tmpArr2 = [];
+ for (var i = 0; i < innerDataIndices.length; i++) {
+ tmpArr2[0] = innerDataIndices[i];
+ this.isSelected(innerDataIndices[i], dataType) ? this.unselect(tmpArr2, dataType) : this.select(tmpArr2, dataType);
+ }
+ };
+ SeriesModel2.prototype.getSelectedDataIndices = function() {
+ if (this.option.selectedMap === "all") {
+ return [].slice.call(this.getData().getIndices());
+ }
+ var selectedDataIndicesMap = this._selectedDataIndicesMap;
+ var nameOrIds = keys(selectedDataIndicesMap);
+ var dataIndices = [];
+ for (var i = 0; i < nameOrIds.length; i++) {
+ var dataIndex = selectedDataIndicesMap[nameOrIds[i]];
+ if (dataIndex >= 0) {
+ dataIndices.push(dataIndex);
+ }
+ }
+ return dataIndices;
+ };
+ SeriesModel2.prototype.isSelected = function(dataIndex, dataType) {
+ var selectedMap = this.option.selectedMap;
+ if (!selectedMap) {
+ return false;
+ }
+ var data = this.getData(dataType);
+ return (selectedMap === "all" || selectedMap[getSelectionKey(data, dataIndex)]) && !data.getItemModel(dataIndex).get(["select", "disabled"]);
+ };
+ SeriesModel2.prototype.isUniversalTransitionEnabled = function() {
+ if (this[SERIES_UNIVERSAL_TRANSITION_PROP]) {
+ return true;
+ }
+ var universalTransitionOpt = this.option.universalTransition;
+ if (!universalTransitionOpt) {
+ return false;
+ }
+ if (universalTransitionOpt === true) {
+ return true;
+ }
+ return universalTransitionOpt && universalTransitionOpt.enabled;
+ };
+ SeriesModel2.prototype._innerSelect = function(data, innerDataIndices) {
+ var _a2, _b2;
+ var option = this.option;
+ var selectedMode = option.selectedMode;
+ var len2 = innerDataIndices.length;
+ if (!selectedMode || !len2) {
+ return;
+ }
+ if (selectedMode === "series") {
+ option.selectedMap = "all";
+ } else if (selectedMode === "multiple") {
+ if (!isObject(option.selectedMap)) {
+ option.selectedMap = {};
+ }
+ var selectedMap = option.selectedMap;
+ for (var i = 0; i < len2; i++) {
+ var dataIndex = innerDataIndices[i];
+ var nameOrId = getSelectionKey(data, dataIndex);
+ selectedMap[nameOrId] = true;
+ this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);
+ }
+ } else if (selectedMode === "single" || selectedMode === true) {
+ var lastDataIndex = innerDataIndices[len2 - 1];
+ var nameOrId = getSelectionKey(data, lastDataIndex);
+ option.selectedMap = (_a2 = {}, _a2[nameOrId] = true, _a2);
+ this._selectedDataIndicesMap = (_b2 = {}, _b2[nameOrId] = data.getRawIndex(lastDataIndex), _b2);
+ }
+ };
+ SeriesModel2.prototype._initSelectedMapFromData = function(data) {
+ if (this.option.selectedMap) {
+ return;
+ }
+ var dataIndices = [];
+ if (data.hasItemOption) {
+ data.each(function(idx) {
+ var rawItem = data.getRawDataItem(idx);
+ if (rawItem && rawItem.selected) {
+ dataIndices.push(idx);
+ }
+ });
+ }
+ if (dataIndices.length > 0) {
+ this._innerSelect(data, dataIndices);
+ }
+ };
+ SeriesModel2.registerClass = function(clz) {
+ return Component_default.registerClass(clz);
+ };
+ SeriesModel2.protoInitialize = function() {
+ var proto2 = SeriesModel2.prototype;
+ proto2.type = "series.__base__";
+ proto2.seriesIndex = 0;
+ proto2.ignoreStyleOnData = false;
+ proto2.hasSymbolVisual = false;
+ proto2.defaultSymbol = "circle";
+ proto2.visualStyleAccessPath = "itemStyle";
+ proto2.visualDrawType = "fill";
+ }();
+ return SeriesModel2;
+}(Component_default);
+mixin(SeriesModel, DataFormatMixin);
+mixin(SeriesModel, PaletteMixin);
+mountExtend(SeriesModel, Component_default);
+function autoSeriesName(seriesModel) {
+ var name = seriesModel.name;
+ if (!isNameSpecified(seriesModel)) {
+ seriesModel.name = getSeriesAutoName(seriesModel) || name;
+ }
+}
+function getSeriesAutoName(seriesModel) {
+ var data = seriesModel.getRawData();
+ var dataDims = data.mapDimensionsAll("seriesName");
+ var nameArr = [];
+ each(dataDims, function(dataDim) {
+ var dimInfo = data.getDimensionInfo(dataDim);
+ dimInfo.displayName && nameArr.push(dimInfo.displayName);
+ });
+ return nameArr.join(" ");
+}
+function dataTaskCount(context) {
+ return context.model.getRawData().count();
+}
+function dataTaskReset(context) {
+ var seriesModel = context.model;
+ seriesModel.setData(seriesModel.getRawData().cloneShallow());
+ return dataTaskProgress;
+}
+function dataTaskProgress(param, context) {
+ if (context.outputData && param.end > context.outputData.count()) {
+ context.model.getRawData().cloneShallow(context.outputData);
+ }
+}
+function wrapData(data, seriesModel) {
+ each(concatArray(data.CHANGABLE_METHODS, data.DOWNSAMPLE_METHODS), function(methodName) {
+ data.wrapMethod(methodName, curry(onDataChange, seriesModel));
+ });
+}
+function onDataChange(seriesModel, newList) {
+ var task = getCurrentTask(seriesModel);
+ if (task) {
+ task.setOutputEnd((newList || this).count());
+ }
+ return newList;
+}
+function getCurrentTask(seriesModel) {
+ var scheduler = (seriesModel.ecModel || {}).scheduler;
+ var pipeline = scheduler && scheduler.getPipeline(seriesModel.uid);
+ if (pipeline) {
+ var task = pipeline.currentTask;
+ if (task) {
+ var agentStubMap = task.agentStubMap;
+ if (agentStubMap) {
+ task = agentStubMap.get(seriesModel.uid);
+ }
+ }
+ return task;
+ }
+}
+var Series_default = SeriesModel;
+
+// node_modules/echarts/lib/view/Component.js
+var ComponentView = function() {
+ function ComponentView2() {
+ this.group = new Group_default();
+ this.uid = getUID("viewComponent");
+ }
+ ComponentView2.prototype.init = function(ecModel, api) {
+ };
+ ComponentView2.prototype.render = function(model, ecModel, api, payload) {
+ };
+ ComponentView2.prototype.dispose = function(ecModel, api) {
+ };
+ ComponentView2.prototype.updateView = function(model, ecModel, api, payload) {
+ };
+ ComponentView2.prototype.updateLayout = function(model, ecModel, api, payload) {
+ };
+ ComponentView2.prototype.updateVisual = function(model, ecModel, api, payload) {
+ };
+ ComponentView2.prototype.toggleBlurSeries = function(seriesModels, isBlur, ecModel) {
+ };
+ ComponentView2.prototype.eachRendered = function(cb) {
+ var group = this.group;
+ if (group) {
+ group.traverse(cb);
+ }
+ };
+ return ComponentView2;
+}();
+enableClassExtend(ComponentView);
+enableClassManagement(ComponentView);
+var Component_default2 = ComponentView;
+
+// node_modules/echarts/lib/chart/helper/createRenderPlanner.js
+function createRenderPlanner() {
+ var inner23 = makeInner();
+ return function(seriesModel) {
+ var fields = inner23(seriesModel);
+ var pipelineContext = seriesModel.pipelineContext;
+ var originalLarge = !!fields.large;
+ var originalProgressive = !!fields.progressiveRender;
+ var large = fields.large = !!(pipelineContext && pipelineContext.large);
+ var progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);
+ return !!(originalLarge !== large || originalProgressive !== progressive) && "reset";
+ };
+}
+
+// node_modules/echarts/lib/view/Chart.js
+var inner3 = makeInner();
+var renderPlanner = createRenderPlanner();
+var ChartView = function() {
+ function ChartView2() {
+ this.group = new Group_default();
+ this.uid = getUID("viewChart");
+ this.renderTask = createTask({
+ plan: renderTaskPlan,
+ reset: renderTaskReset
+ });
+ this.renderTask.context = {
+ view: this
+ };
+ }
+ ChartView2.prototype.init = function(ecModel, api) {
+ };
+ ChartView2.prototype.render = function(seriesModel, ecModel, api, payload) {
+ if (true) {
+ throw new Error("render method must been implemented");
+ }
+ };
+ ChartView2.prototype.highlight = function(seriesModel, ecModel, api, payload) {
+ var data = seriesModel.getData(payload && payload.dataType);
+ if (!data) {
+ if (true) {
+ error("Unknown dataType " + payload.dataType);
+ }
+ return;
+ }
+ toggleHighlight(data, payload, "emphasis");
+ };
+ ChartView2.prototype.downplay = function(seriesModel, ecModel, api, payload) {
+ var data = seriesModel.getData(payload && payload.dataType);
+ if (!data) {
+ if (true) {
+ error("Unknown dataType " + payload.dataType);
+ }
+ return;
+ }
+ toggleHighlight(data, payload, "normal");
+ };
+ ChartView2.prototype.remove = function(ecModel, api) {
+ this.group.removeAll();
+ };
+ ChartView2.prototype.dispose = function(ecModel, api) {
+ };
+ ChartView2.prototype.updateView = function(seriesModel, ecModel, api, payload) {
+ this.render(seriesModel, ecModel, api, payload);
+ };
+ ChartView2.prototype.updateLayout = function(seriesModel, ecModel, api, payload) {
+ this.render(seriesModel, ecModel, api, payload);
+ };
+ ChartView2.prototype.updateVisual = function(seriesModel, ecModel, api, payload) {
+ this.render(seriesModel, ecModel, api, payload);
+ };
+ ChartView2.prototype.eachRendered = function(cb) {
+ traverseElements(this.group, cb);
+ };
+ ChartView2.markUpdateMethod = function(payload, methodName) {
+ inner3(payload).updateMethod = methodName;
+ };
+ ChartView2.protoInitialize = function() {
+ var proto2 = ChartView2.prototype;
+ proto2.type = "chart";
+ }();
+ return ChartView2;
+}();
+function elSetState(el, state, highlightDigit) {
+ if (el && isHighDownDispatcher(el)) {
+ (state === "emphasis" ? enterEmphasis : leaveEmphasis)(el, highlightDigit);
+ }
+}
+function toggleHighlight(data, payload, state) {
+ var dataIndex = queryDataIndex(data, payload);
+ var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null;
+ if (dataIndex != null) {
+ each(normalizeToArray(dataIndex), function(dataIdx) {
+ elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);
+ });
+ } else {
+ data.eachItemGraphicEl(function(el) {
+ elSetState(el, state, highlightDigit);
+ });
+ }
+}
+enableClassExtend(ChartView, ["dispose"]);
+enableClassManagement(ChartView);
+function renderTaskPlan(context) {
+ return renderPlanner(context.model);
+}
+function renderTaskReset(context) {
+ var seriesModel = context.model;
+ var ecModel = context.ecModel;
+ var api = context.api;
+ var payload = context.payload;
+ var progressiveRender = seriesModel.pipelineContext.progressiveRender;
+ var view = context.view;
+ var updateMethod = payload && inner3(payload).updateMethod;
+ var methodName = progressiveRender ? "incrementalPrepareRender" : updateMethod && view[updateMethod] ? updateMethod : "render";
+ if (methodName !== "render") {
+ view[methodName](seriesModel, ecModel, api, payload);
+ }
+ return progressMethodMap[methodName];
+}
+var progressMethodMap = {
+ incrementalPrepareRender: {
+ progress: function(params, context) {
+ context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload);
+ }
+ },
+ render: {
+ forceFirstProgress: true,
+ progress: function(params, context) {
+ context.view.render(context.model, context.ecModel, context.api, context.payload);
+ }
+ }
+};
+var Chart_default = ChartView;
+
+// node_modules/echarts/lib/util/throttle.js
+var ORIGIN_METHOD = "\0__throttleOriginMethod";
+var RATE = "\0__throttleRate";
+var THROTTLE_TYPE = "\0__throttleType";
+function throttle(fn, delay, debounce) {
+ var currCall;
+ var lastCall = 0;
+ var lastExec = 0;
+ var timer = null;
+ var diff;
+ var scope;
+ var args;
+ var debounceNextCall;
+ delay = delay || 0;
+ function exec() {
+ lastExec = new Date().getTime();
+ timer = null;
+ fn.apply(scope, args || []);
+ }
+ var cb = function() {
+ var cbArgs = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ cbArgs[_i] = arguments[_i];
+ }
+ currCall = new Date().getTime();
+ scope = this;
+ args = cbArgs;
+ var thisDelay = debounceNextCall || delay;
+ var thisDebounce = debounceNextCall || debounce;
+ debounceNextCall = null;
+ diff = currCall - (thisDebounce ? lastCall : lastExec) - thisDelay;
+ clearTimeout(timer);
+ if (thisDebounce) {
+ timer = setTimeout(exec, thisDelay);
+ } else {
+ if (diff >= 0) {
+ exec();
+ } else {
+ timer = setTimeout(exec, -diff);
+ }
+ }
+ lastCall = currCall;
+ };
+ cb.clear = function() {
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ };
+ cb.debounceNextCall = function(debounceDelay) {
+ debounceNextCall = debounceDelay;
+ };
+ return cb;
+}
+function createOrUpdate(obj, fnAttr, rate, throttleType) {
+ var fn = obj[fnAttr];
+ if (!fn) {
+ return;
+ }
+ var originFn = fn[ORIGIN_METHOD] || fn;
+ var lastThrottleType = fn[THROTTLE_TYPE];
+ var lastRate = fn[RATE];
+ if (lastRate !== rate || lastThrottleType !== throttleType) {
+ if (rate == null || !throttleType) {
+ return obj[fnAttr] = originFn;
+ }
+ fn = obj[fnAttr] = throttle(originFn, rate, throttleType === "debounce");
+ fn[ORIGIN_METHOD] = originFn;
+ fn[THROTTLE_TYPE] = throttleType;
+ fn[RATE] = rate;
+ }
+ return fn;
+}
+function clear(obj, fnAttr) {
+ var fn = obj[fnAttr];
+ if (fn && fn[ORIGIN_METHOD]) {
+ fn.clear && fn.clear();
+ obj[fnAttr] = fn[ORIGIN_METHOD];
+ }
+}
+
+// node_modules/echarts/lib/visual/style.js
+var inner4 = makeInner();
+var defaultStyleMappers = {
+ itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true),
+ lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true)
+};
+var defaultColorKey = {
+ lineStyle: "stroke",
+ itemStyle: "fill"
+};
+function getStyleMapper(seriesModel, stylePath) {
+ var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath];
+ if (!styleMapper) {
+ console.warn("Unknown style type '" + stylePath + "'.");
+ return defaultStyleMappers.itemStyle;
+ }
+ return styleMapper;
+}
+function getDefaultColorKey(seriesModel, stylePath) {
+ var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath];
+ if (!colorKey) {
+ console.warn("Unknown style type '" + stylePath + "'.");
+ return "fill";
+ }
+ return colorKey;
+}
+var seriesStyleTask = {
+ createOnAllSeries: true,
+ performRawSeries: true,
+ reset: function(seriesModel, ecModel) {
+ var data = seriesModel.getData();
+ var stylePath = seriesModel.visualStyleAccessPath || "itemStyle";
+ var styleModel = seriesModel.getModel(stylePath);
+ var getStyle2 = getStyleMapper(seriesModel, stylePath);
+ var globalStyle = getStyle2(styleModel);
+ var decalOption = styleModel.getShallow("decal");
+ if (decalOption) {
+ data.setVisual("decal", decalOption);
+ decalOption.dirty = true;
+ }
+ var colorKey = getDefaultColorKey(seriesModel, stylePath);
+ var color = globalStyle[colorKey];
+ var colorCallback = isFunction(color) ? color : null;
+ var hasAutoColor = globalStyle.fill === "auto" || globalStyle.stroke === "auto";
+ if (!globalStyle[colorKey] || colorCallback || hasAutoColor) {
+ var colorPalette2 = seriesModel.getColorFromPalette(
+ seriesModel.name,
+ null,
+ ecModel.getSeriesCount()
+ );
+ if (!globalStyle[colorKey]) {
+ globalStyle[colorKey] = colorPalette2;
+ data.setVisual("colorFromPalette", true);
+ }
+ globalStyle.fill = globalStyle.fill === "auto" || isFunction(globalStyle.fill) ? colorPalette2 : globalStyle.fill;
+ globalStyle.stroke = globalStyle.stroke === "auto" || isFunction(globalStyle.stroke) ? colorPalette2 : globalStyle.stroke;
+ }
+ data.setVisual("style", globalStyle);
+ data.setVisual("drawType", colorKey);
+ if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) {
+ data.setVisual("colorFromPalette", false);
+ return {
+ dataEach: function(data2, idx) {
+ var dataParams = seriesModel.getDataParams(idx);
+ var itemStyle = extend({}, globalStyle);
+ itemStyle[colorKey] = colorCallback(dataParams);
+ data2.setItemVisual(idx, "style", itemStyle);
+ }
+ };
+ }
+ }
+};
+var sharedModel = new Model_default();
+var dataStyleTask = {
+ createOnAllSeries: true,
+ performRawSeries: true,
+ reset: function(seriesModel, ecModel) {
+ if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ var data = seriesModel.getData();
+ var stylePath = seriesModel.visualStyleAccessPath || "itemStyle";
+ var getStyle2 = getStyleMapper(seriesModel, stylePath);
+ var colorKey = data.getVisual("drawType");
+ return {
+ dataEach: data.hasItemOption ? function(data2, idx) {
+ var rawItem = data2.getRawDataItem(idx);
+ if (rawItem && rawItem[stylePath]) {
+ sharedModel.option = rawItem[stylePath];
+ var style = getStyle2(sharedModel);
+ var existsStyle = data2.ensureUniqueItemVisual(idx, "style");
+ extend(existsStyle, style);
+ if (sharedModel.option.decal) {
+ data2.setItemVisual(idx, "decal", sharedModel.option.decal);
+ sharedModel.option.decal.dirty = true;
+ }
+ if (colorKey in style) {
+ data2.setItemVisual(idx, "colorFromPalette", false);
+ }
+ }
+ } : null
+ };
+ }
+};
+var dataColorPaletteTask = {
+ performRawSeries: true,
+ overallReset: function(ecModel) {
+ var paletteScopeGroupByType = createHashMap();
+ ecModel.eachSeries(function(seriesModel) {
+ var colorBy = seriesModel.getColorBy();
+ if (seriesModel.isColorBySeries()) {
+ return;
+ }
+ var key = seriesModel.type + "-" + colorBy;
+ var colorScope = paletteScopeGroupByType.get(key);
+ if (!colorScope) {
+ colorScope = {};
+ paletteScopeGroupByType.set(key, colorScope);
+ }
+ inner4(seriesModel).scope = colorScope;
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ var dataAll = seriesModel.getRawData();
+ var idxMap = {};
+ var data = seriesModel.getData();
+ var colorScope = inner4(seriesModel).scope;
+ var stylePath = seriesModel.visualStyleAccessPath || "itemStyle";
+ var colorKey = getDefaultColorKey(seriesModel, stylePath);
+ data.each(function(idx) {
+ var rawIdx = data.getRawIndex(idx);
+ idxMap[rawIdx] = idx;
+ });
+ dataAll.each(function(rawIdx) {
+ var idx = idxMap[rawIdx];
+ var fromPalette = data.getItemVisual(idx, "colorFromPalette");
+ if (fromPalette) {
+ var itemStyle = data.ensureUniqueItemVisual(idx, "style");
+ var name_1 = dataAll.getName(rawIdx) || rawIdx + "";
+ var dataCount = dataAll.count();
+ itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount);
+ }
+ });
+ });
+ }
+};
+
+// node_modules/echarts/lib/loading/default.js
+var PI5 = Math.PI;
+function defaultLoading(api, opts) {
+ opts = opts || {};
+ defaults(opts, {
+ text: "loading",
+ textColor: "#000",
+ fontSize: 12,
+ fontWeight: "normal",
+ fontStyle: "normal",
+ fontFamily: "sans-serif",
+ maskColor: "rgba(255, 255, 255, 0.8)",
+ showSpinner: true,
+ color: "#5470c6",
+ spinnerRadius: 10,
+ lineWidth: 5,
+ zlevel: 0
+ });
+ var group = new Group_default();
+ var mask = new Rect_default({
+ style: {
+ fill: opts.maskColor
+ },
+ zlevel: opts.zlevel,
+ z: 1e4
+ });
+ group.add(mask);
+ var textContent = new Text_default({
+ style: {
+ text: opts.text,
+ fill: opts.textColor,
+ fontSize: opts.fontSize,
+ fontWeight: opts.fontWeight,
+ fontStyle: opts.fontStyle,
+ fontFamily: opts.fontFamily
+ },
+ zlevel: opts.zlevel,
+ z: 10001
+ });
+ var labelRect = new Rect_default({
+ style: {
+ fill: "none"
+ },
+ textContent,
+ textConfig: {
+ position: "right",
+ distance: 10
+ },
+ zlevel: opts.zlevel,
+ z: 10001
+ });
+ group.add(labelRect);
+ var arc;
+ if (opts.showSpinner) {
+ arc = new Arc_default({
+ shape: {
+ startAngle: -PI5 / 2,
+ endAngle: -PI5 / 2 + 0.1,
+ r: opts.spinnerRadius
+ },
+ style: {
+ stroke: opts.color,
+ lineCap: "round",
+ lineWidth: opts.lineWidth
+ },
+ zlevel: opts.zlevel,
+ z: 10001
+ });
+ arc.animateShape(true).when(1e3, {
+ endAngle: PI5 * 3 / 2
+ }).start("circularInOut");
+ arc.animateShape(true).when(1e3, {
+ startAngle: PI5 * 3 / 2
+ }).delay(300).start("circularInOut");
+ group.add(arc);
+ }
+ group.resize = function() {
+ var textWidth = textContent.getBoundingRect().width;
+ var r = opts.showSpinner ? opts.spinnerRadius : 0;
+ var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 - (opts.showSpinner && textWidth ? 0 : 5 + textWidth / 2) + (opts.showSpinner ? 0 : textWidth / 2) + (textWidth ? 0 : r);
+ var cy = api.getHeight() / 2;
+ opts.showSpinner && arc.setShape({
+ cx,
+ cy
+ });
+ labelRect.setShape({
+ x: cx - r,
+ y: cy - r,
+ width: r * 2,
+ height: r * 2
+ });
+ mask.setShape({
+ x: 0,
+ y: 0,
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+ };
+ group.resize();
+ return group;
+}
+
+// node_modules/echarts/lib/core/Scheduler.js
+var Scheduler = function() {
+ function Scheduler2(ecInstance, api, dataProcessorHandlers, visualHandlers) {
+ this._stageTaskMap = createHashMap();
+ this.ecInstance = ecInstance;
+ this.api = api;
+ dataProcessorHandlers = this._dataProcessorHandlers = dataProcessorHandlers.slice();
+ visualHandlers = this._visualHandlers = visualHandlers.slice();
+ this._allHandlers = dataProcessorHandlers.concat(visualHandlers);
+ }
+ Scheduler2.prototype.restoreData = function(ecModel, payload) {
+ ecModel.restoreData(payload);
+ this._stageTaskMap.each(function(taskRecord) {
+ var overallTask = taskRecord.overallTask;
+ overallTask && overallTask.dirty();
+ });
+ };
+ Scheduler2.prototype.getPerformArgs = function(task, isBlock) {
+ if (!task.__pipeline) {
+ return;
+ }
+ var pipeline = this._pipelineMap.get(task.__pipeline.id);
+ var pCtx = pipeline.context;
+ var incremental = !isBlock && pipeline.progressiveEnabled && (!pCtx || pCtx.progressiveRender) && task.__idxInPipeline > pipeline.blockIndex;
+ var step = incremental ? pipeline.step : null;
+ var modDataCount = pCtx && pCtx.modDataCount;
+ var modBy = modDataCount != null ? Math.ceil(modDataCount / step) : null;
+ return {
+ step,
+ modBy,
+ modDataCount
+ };
+ };
+ Scheduler2.prototype.getPipeline = function(pipelineId) {
+ return this._pipelineMap.get(pipelineId);
+ };
+ Scheduler2.prototype.updateStreamModes = function(seriesModel, view) {
+ var pipeline = this._pipelineMap.get(seriesModel.uid);
+ var data = seriesModel.getData();
+ var dataLen = data.count();
+ var progressiveRender = pipeline.progressiveEnabled && view.incrementalPrepareRender && dataLen >= pipeline.threshold;
+ var large = seriesModel.get("large") && dataLen >= seriesModel.get("largeThreshold");
+ var modDataCount = seriesModel.get("progressiveChunkMode") === "mod" ? dataLen : null;
+ seriesModel.pipelineContext = pipeline.context = {
+ progressiveRender,
+ modDataCount,
+ large
+ };
+ };
+ Scheduler2.prototype.restorePipelines = function(ecModel) {
+ var scheduler = this;
+ var pipelineMap = scheduler._pipelineMap = createHashMap();
+ ecModel.eachSeries(function(seriesModel) {
+ var progressive = seriesModel.getProgressive();
+ var pipelineId = seriesModel.uid;
+ pipelineMap.set(pipelineId, {
+ id: pipelineId,
+ head: null,
+ tail: null,
+ threshold: seriesModel.getProgressiveThreshold(),
+ progressiveEnabled: progressive && !(seriesModel.preventIncremental && seriesModel.preventIncremental()),
+ blockIndex: -1,
+ step: Math.round(progressive || 700),
+ count: 0
+ });
+ scheduler._pipe(seriesModel, seriesModel.dataTask);
+ });
+ };
+ Scheduler2.prototype.prepareStageTasks = function() {
+ var stageTaskMap = this._stageTaskMap;
+ var ecModel = this.api.getModel();
+ var api = this.api;
+ each(this._allHandlers, function(handler) {
+ var record = stageTaskMap.get(handler.uid) || stageTaskMap.set(handler.uid, {});
+ var errMsg = "";
+ if (true) {
+ errMsg = '"reset" and "overallReset" must not be both specified.';
+ }
+ assert(!(handler.reset && handler.overallReset), errMsg);
+ handler.reset && this._createSeriesStageTask(handler, record, ecModel, api);
+ handler.overallReset && this._createOverallStageTask(handler, record, ecModel, api);
+ }, this);
+ };
+ Scheduler2.prototype.prepareView = function(view, model, ecModel, api) {
+ var renderTask = view.renderTask;
+ var context = renderTask.context;
+ context.model = model;
+ context.ecModel = ecModel;
+ context.api = api;
+ renderTask.__block = !view.incrementalPrepareRender;
+ this._pipe(model, renderTask);
+ };
+ Scheduler2.prototype.performDataProcessorTasks = function(ecModel, payload) {
+ this._performStageTasks(this._dataProcessorHandlers, ecModel, payload, {
+ block: true
+ });
+ };
+ Scheduler2.prototype.performVisualTasks = function(ecModel, payload, opt) {
+ this._performStageTasks(this._visualHandlers, ecModel, payload, opt);
+ };
+ Scheduler2.prototype._performStageTasks = function(stageHandlers, ecModel, payload, opt) {
+ opt = opt || {};
+ var unfinished = false;
+ var scheduler = this;
+ each(stageHandlers, function(stageHandler, idx) {
+ if (opt.visualType && opt.visualType !== stageHandler.visualType) {
+ return;
+ }
+ var stageHandlerRecord = scheduler._stageTaskMap.get(stageHandler.uid);
+ var seriesTaskMap = stageHandlerRecord.seriesTaskMap;
+ var overallTask = stageHandlerRecord.overallTask;
+ if (overallTask) {
+ var overallNeedDirty_1;
+ var agentStubMap = overallTask.agentStubMap;
+ agentStubMap.each(function(stub) {
+ if (needSetDirty(opt, stub)) {
+ stub.dirty();
+ overallNeedDirty_1 = true;
+ }
+ });
+ overallNeedDirty_1 && overallTask.dirty();
+ scheduler.updatePayload(overallTask, payload);
+ var performArgs_1 = scheduler.getPerformArgs(overallTask, opt.block);
+ agentStubMap.each(function(stub) {
+ stub.perform(performArgs_1);
+ });
+ if (overallTask.perform(performArgs_1)) {
+ unfinished = true;
+ }
+ } else if (seriesTaskMap) {
+ seriesTaskMap.each(function(task, pipelineId) {
+ if (needSetDirty(opt, task)) {
+ task.dirty();
+ }
+ var performArgs = scheduler.getPerformArgs(task, opt.block);
+ performArgs.skip = !stageHandler.performRawSeries && ecModel.isSeriesFiltered(task.context.model);
+ scheduler.updatePayload(task, payload);
+ if (task.perform(performArgs)) {
+ unfinished = true;
+ }
+ });
+ }
+ });
+ function needSetDirty(opt2, task) {
+ return opt2.setDirty && (!opt2.dirtyMap || opt2.dirtyMap.get(task.__pipeline.id));
+ }
+ this.unfinished = unfinished || this.unfinished;
+ };
+ Scheduler2.prototype.performSeriesTasks = function(ecModel) {
+ var unfinished;
+ ecModel.eachSeries(function(seriesModel) {
+ unfinished = seriesModel.dataTask.perform() || unfinished;
+ });
+ this.unfinished = unfinished || this.unfinished;
+ };
+ Scheduler2.prototype.plan = function() {
+ this._pipelineMap.each(function(pipeline) {
+ var task = pipeline.tail;
+ do {
+ if (task.__block) {
+ pipeline.blockIndex = task.__idxInPipeline;
+ break;
+ }
+ task = task.getUpstream();
+ } while (task);
+ });
+ };
+ Scheduler2.prototype.updatePayload = function(task, payload) {
+ payload !== "remain" && (task.context.payload = payload);
+ };
+ Scheduler2.prototype._createSeriesStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) {
+ var scheduler = this;
+ var oldSeriesTaskMap = stageHandlerRecord.seriesTaskMap;
+ var newSeriesTaskMap = stageHandlerRecord.seriesTaskMap = createHashMap();
+ var seriesType2 = stageHandler.seriesType;
+ var getTargetSeries = stageHandler.getTargetSeries;
+ if (stageHandler.createOnAllSeries) {
+ ecModel.eachRawSeries(create4);
+ } else if (seriesType2) {
+ ecModel.eachRawSeriesByType(seriesType2, create4);
+ } else if (getTargetSeries) {
+ getTargetSeries(ecModel, api).each(create4);
+ }
+ function create4(seriesModel) {
+ var pipelineId = seriesModel.uid;
+ var task = newSeriesTaskMap.set(pipelineId, oldSeriesTaskMap && oldSeriesTaskMap.get(pipelineId) || createTask({
+ plan: seriesTaskPlan,
+ reset: seriesTaskReset,
+ count: seriesTaskCount
+ }));
+ task.context = {
+ model: seriesModel,
+ ecModel,
+ api,
+ useClearVisual: stageHandler.isVisual && !stageHandler.isLayout,
+ plan: stageHandler.plan,
+ reset: stageHandler.reset,
+ scheduler
+ };
+ scheduler._pipe(seriesModel, task);
+ }
+ };
+ Scheduler2.prototype._createOverallStageTask = function(stageHandler, stageHandlerRecord, ecModel, api) {
+ var scheduler = this;
+ var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask || createTask({
+ reset: overallTaskReset
+ });
+ overallTask.context = {
+ ecModel,
+ api,
+ overallReset: stageHandler.overallReset,
+ scheduler
+ };
+ var oldAgentStubMap = overallTask.agentStubMap;
+ var newAgentStubMap = overallTask.agentStubMap = createHashMap();
+ var seriesType2 = stageHandler.seriesType;
+ var getTargetSeries = stageHandler.getTargetSeries;
+ var overallProgress = true;
+ var shouldOverallTaskDirty = false;
+ var errMsg = "";
+ if (true) {
+ errMsg = '"createOnAllSeries" is not supported for "overallReset", because it will block all streams.';
+ }
+ assert(!stageHandler.createOnAllSeries, errMsg);
+ if (seriesType2) {
+ ecModel.eachRawSeriesByType(seriesType2, createStub);
+ } else if (getTargetSeries) {
+ getTargetSeries(ecModel, api).each(createStub);
+ } else {
+ overallProgress = false;
+ each(ecModel.getSeries(), createStub);
+ }
+ function createStub(seriesModel) {
+ var pipelineId = seriesModel.uid;
+ var stub = newAgentStubMap.set(pipelineId, oldAgentStubMap && oldAgentStubMap.get(pipelineId) || (shouldOverallTaskDirty = true, createTask({
+ reset: stubReset,
+ onDirty: stubOnDirty
+ })));
+ stub.context = {
+ model: seriesModel,
+ overallProgress
+ };
+ stub.agent = overallTask;
+ stub.__block = overallProgress;
+ scheduler._pipe(seriesModel, stub);
+ }
+ if (shouldOverallTaskDirty) {
+ overallTask.dirty();
+ }
+ };
+ Scheduler2.prototype._pipe = function(seriesModel, task) {
+ var pipelineId = seriesModel.uid;
+ var pipeline = this._pipelineMap.get(pipelineId);
+ !pipeline.head && (pipeline.head = task);
+ pipeline.tail && pipeline.tail.pipe(task);
+ pipeline.tail = task;
+ task.__idxInPipeline = pipeline.count++;
+ task.__pipeline = pipeline;
+ };
+ Scheduler2.wrapStageHandler = function(stageHandler, visualType) {
+ if (isFunction(stageHandler)) {
+ stageHandler = {
+ overallReset: stageHandler,
+ seriesType: detectSeriseType(stageHandler)
+ };
+ }
+ stageHandler.uid = getUID("stageHandler");
+ visualType && (stageHandler.visualType = visualType);
+ return stageHandler;
+ };
+ ;
+ return Scheduler2;
+}();
+function overallTaskReset(context) {
+ context.overallReset(context.ecModel, context.api, context.payload);
+}
+function stubReset(context) {
+ return context.overallProgress && stubProgress;
+}
+function stubProgress() {
+ this.agent.dirty();
+ this.getDownstream().dirty();
+}
+function stubOnDirty() {
+ this.agent && this.agent.dirty();
+}
+function seriesTaskPlan(context) {
+ return context.plan ? context.plan(context.model, context.ecModel, context.api, context.payload) : null;
+}
+function seriesTaskReset(context) {
+ if (context.useClearVisual) {
+ context.data.clearAllVisual();
+ }
+ var resetDefines = context.resetDefines = normalizeToArray(context.reset(context.model, context.ecModel, context.api, context.payload));
+ return resetDefines.length > 1 ? map(resetDefines, function(v, idx) {
+ return makeSeriesTaskProgress(idx);
+ }) : singleSeriesTaskProgress;
+}
+var singleSeriesTaskProgress = makeSeriesTaskProgress(0);
+function makeSeriesTaskProgress(resetDefineIdx) {
+ return function(params, context) {
+ var data = context.data;
+ var resetDefine = context.resetDefines[resetDefineIdx];
+ if (resetDefine && resetDefine.dataEach) {
+ for (var i = params.start; i < params.end; i++) {
+ resetDefine.dataEach(data, i);
+ }
+ } else if (resetDefine && resetDefine.progress) {
+ resetDefine.progress(params, data);
+ }
+ };
+}
+function seriesTaskCount(context) {
+ return context.data.count();
+}
+function detectSeriseType(legacyFunc) {
+ seriesType = null;
+ try {
+ legacyFunc(ecModelMock, apiMock);
+ } catch (e2) {
+ }
+ return seriesType;
+}
+var ecModelMock = {};
+var apiMock = {};
+var seriesType;
+mockMethods(ecModelMock, Global_default);
+mockMethods(apiMock, ExtensionAPI_default);
+ecModelMock.eachSeriesByType = ecModelMock.eachRawSeriesByType = function(type) {
+ seriesType = type;
+};
+ecModelMock.eachComponent = function(cond) {
+ if (cond.mainType === "series" && cond.subType) {
+ seriesType = cond.subType;
+ }
+};
+function mockMethods(target, Clz) {
+ for (var name_1 in Clz.prototype) {
+ target[name_1] = noop;
+ }
+}
+var Scheduler_default = Scheduler;
+
+// node_modules/echarts/lib/theme/light.js
+var colorAll = ["#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF"];
+var light_default = {
+ color: colorAll,
+ colorLayer: [["#37A2DA", "#ffd85c", "#fd7b5f"], ["#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5"], ["#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF"], colorAll]
+};
+
+// node_modules/echarts/lib/theme/dark.js
+var contrastColor = "#B9B8CE";
+var backgroundColor = "#100C2A";
+var axisCommon = function() {
+ return {
+ axisLine: {
+ lineStyle: {
+ color: contrastColor
+ }
+ },
+ splitLine: {
+ lineStyle: {
+ color: "#484753"
+ }
+ },
+ splitArea: {
+ areaStyle: {
+ color: ["rgba(255,255,255,0.02)", "rgba(255,255,255,0.05)"]
+ }
+ },
+ minorSplitLine: {
+ lineStyle: {
+ color: "#20203B"
+ }
+ }
+ };
+};
+var colorPalette = ["#4992ff", "#7cffb2", "#fddd60", "#ff6e76", "#58d9f9", "#05c091", "#ff8a45", "#8d48e3", "#dd79ff"];
+var theme = {
+ darkMode: true,
+ color: colorPalette,
+ backgroundColor,
+ axisPointer: {
+ lineStyle: {
+ color: "#817f91"
+ },
+ crossStyle: {
+ color: "#817f91"
+ },
+ label: {
+ color: "#fff"
+ }
+ },
+ legend: {
+ textStyle: {
+ color: contrastColor
+ },
+ pageTextStyle: {
+ color: contrastColor
+ }
+ },
+ textStyle: {
+ color: contrastColor
+ },
+ title: {
+ textStyle: {
+ color: "#EEF1FA"
+ },
+ subtextStyle: {
+ color: "#B9B8CE"
+ }
+ },
+ toolbox: {
+ iconStyle: {
+ borderColor: contrastColor
+ }
+ },
+ dataZoom: {
+ borderColor: "#71708A",
+ textStyle: {
+ color: contrastColor
+ },
+ brushStyle: {
+ color: "rgba(135,163,206,0.3)"
+ },
+ handleStyle: {
+ color: "#353450",
+ borderColor: "#C5CBE3"
+ },
+ moveHandleStyle: {
+ color: "#B0B6C3",
+ opacity: 0.3
+ },
+ fillerColor: "rgba(135,163,206,0.2)",
+ emphasis: {
+ handleStyle: {
+ borderColor: "#91B7F2",
+ color: "#4D587D"
+ },
+ moveHandleStyle: {
+ color: "#636D9A",
+ opacity: 0.7
+ }
+ },
+ dataBackground: {
+ lineStyle: {
+ color: "#71708A",
+ width: 1
+ },
+ areaStyle: {
+ color: "#71708A"
+ }
+ },
+ selectedDataBackground: {
+ lineStyle: {
+ color: "#87A3CE"
+ },
+ areaStyle: {
+ color: "#87A3CE"
+ }
+ }
+ },
+ visualMap: {
+ textStyle: {
+ color: contrastColor
+ }
+ },
+ timeline: {
+ lineStyle: {
+ color: contrastColor
+ },
+ label: {
+ color: contrastColor
+ },
+ controlStyle: {
+ color: contrastColor,
+ borderColor: contrastColor
+ }
+ },
+ calendar: {
+ itemStyle: {
+ color: backgroundColor
+ },
+ dayLabel: {
+ color: contrastColor
+ },
+ monthLabel: {
+ color: contrastColor
+ },
+ yearLabel: {
+ color: contrastColor
+ }
+ },
+ timeAxis: axisCommon(),
+ logAxis: axisCommon(),
+ valueAxis: axisCommon(),
+ categoryAxis: axisCommon(),
+ line: {
+ symbol: "circle"
+ },
+ graph: {
+ color: colorPalette
+ },
+ gauge: {
+ title: {
+ color: contrastColor
+ },
+ axisLine: {
+ lineStyle: {
+ color: [[1, "rgba(207,212,219,0.2)"]]
+ }
+ },
+ axisLabel: {
+ color: contrastColor
+ },
+ detail: {
+ color: "#EEF1FA"
+ }
+ },
+ candlestick: {
+ itemStyle: {
+ color: "#f64e56",
+ color0: "#54ea92",
+ borderColor: "#f64e56",
+ borderColor0: "#54ea92"
+ }
+ }
+};
+theme.categoryAxis.splitLine.show = false;
+var dark_default = theme;
+
+// node_modules/echarts/lib/util/ECEventProcessor.js
+var ECEventProcessor = function() {
+ function ECEventProcessor2() {
+ }
+ ECEventProcessor2.prototype.normalizeQuery = function(query) {
+ var cptQuery = {};
+ var dataQuery = {};
+ var otherQuery = {};
+ if (isString(query)) {
+ var condCptType = parseClassType(query);
+ cptQuery.mainType = condCptType.main || null;
+ cptQuery.subType = condCptType.sub || null;
+ } else {
+ var suffixes_1 = ["Index", "Name", "Id"];
+ var dataKeys_1 = {
+ name: 1,
+ dataIndex: 1,
+ dataType: 1
+ };
+ each(query, function(val, key) {
+ var reserved = false;
+ for (var i = 0; i < suffixes_1.length; i++) {
+ var propSuffix = suffixes_1[i];
+ var suffixPos = key.lastIndexOf(propSuffix);
+ if (suffixPos > 0 && suffixPos === key.length - propSuffix.length) {
+ var mainType = key.slice(0, suffixPos);
+ if (mainType !== "data") {
+ cptQuery.mainType = mainType;
+ cptQuery[propSuffix.toLowerCase()] = val;
+ reserved = true;
+ }
+ }
+ }
+ if (dataKeys_1.hasOwnProperty(key)) {
+ dataQuery[key] = val;
+ reserved = true;
+ }
+ if (!reserved) {
+ otherQuery[key] = val;
+ }
+ });
+ }
+ return {
+ cptQuery,
+ dataQuery,
+ otherQuery
+ };
+ };
+ ECEventProcessor2.prototype.filter = function(eventType, query) {
+ var eventInfo = this.eventInfo;
+ if (!eventInfo) {
+ return true;
+ }
+ var targetEl = eventInfo.targetEl;
+ var packedEvent = eventInfo.packedEvent;
+ var model = eventInfo.model;
+ var view = eventInfo.view;
+ if (!model || !view) {
+ return true;
+ }
+ var cptQuery = query.cptQuery;
+ var dataQuery = query.dataQuery;
+ return check(cptQuery, model, "mainType") && check(cptQuery, model, "subType") && check(cptQuery, model, "index", "componentIndex") && check(cptQuery, model, "name") && check(cptQuery, model, "id") && check(dataQuery, packedEvent, "name") && check(dataQuery, packedEvent, "dataIndex") && check(dataQuery, packedEvent, "dataType") && (!view.filterForExposedEvent || view.filterForExposedEvent(eventType, query.otherQuery, targetEl, packedEvent));
+ function check(query2, host, prop, propOnHost) {
+ return query2[prop] == null || host[propOnHost || prop] === query2[prop];
+ }
+ };
+ ECEventProcessor2.prototype.afterTrigger = function() {
+ this.eventInfo = null;
+ };
+ return ECEventProcessor2;
+}();
+
+// node_modules/echarts/lib/visual/symbol.js
+var SYMBOL_PROPS_WITH_CB = ["symbol", "symbolSize", "symbolRotate", "symbolOffset"];
+var SYMBOL_PROPS = SYMBOL_PROPS_WITH_CB.concat(["symbolKeepAspect"]);
+var seriesSymbolTask = {
+ createOnAllSeries: true,
+ performRawSeries: true,
+ reset: function(seriesModel, ecModel) {
+ var data = seriesModel.getData();
+ if (seriesModel.legendIcon) {
+ data.setVisual("legendIcon", seriesModel.legendIcon);
+ }
+ if (!seriesModel.hasSymbolVisual) {
+ return;
+ }
+ var symbolOptions = {};
+ var symbolOptionsCb = {};
+ var hasCallback = false;
+ for (var i = 0; i < SYMBOL_PROPS_WITH_CB.length; i++) {
+ var symbolPropName = SYMBOL_PROPS_WITH_CB[i];
+ var val = seriesModel.get(symbolPropName);
+ if (isFunction(val)) {
+ hasCallback = true;
+ symbolOptionsCb[symbolPropName] = val;
+ } else {
+ symbolOptions[symbolPropName] = val;
+ }
+ }
+ symbolOptions.symbol = symbolOptions.symbol || seriesModel.defaultSymbol;
+ data.setVisual(extend({
+ legendIcon: seriesModel.legendIcon || symbolOptions.symbol,
+ symbolKeepAspect: seriesModel.get("symbolKeepAspect")
+ }, symbolOptions));
+ if (ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ var symbolPropsCb = keys(symbolOptionsCb);
+ function dataEach(data2, idx) {
+ var rawValue = seriesModel.getRawValue(idx);
+ var params = seriesModel.getDataParams(idx);
+ for (var i2 = 0; i2 < symbolPropsCb.length; i2++) {
+ var symbolPropName2 = symbolPropsCb[i2];
+ data2.setItemVisual(idx, symbolPropName2, symbolOptionsCb[symbolPropName2](rawValue, params));
+ }
+ }
+ return {
+ dataEach: hasCallback ? dataEach : null
+ };
+ }
+};
+var dataSymbolTask = {
+ createOnAllSeries: true,
+ performRawSeries: true,
+ reset: function(seriesModel, ecModel) {
+ if (!seriesModel.hasSymbolVisual) {
+ return;
+ }
+ if (ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ var data = seriesModel.getData();
+ function dataEach(data2, idx) {
+ var itemModel = data2.getItemModel(idx);
+ for (var i = 0; i < SYMBOL_PROPS.length; i++) {
+ var symbolPropName = SYMBOL_PROPS[i];
+ var val = itemModel.getShallow(symbolPropName, true);
+ if (val != null) {
+ data2.setItemVisual(idx, symbolPropName, val);
+ }
+ }
+ }
+ return {
+ dataEach: data.hasItemOption ? dataEach : null
+ };
+ }
+};
+
+// node_modules/echarts/lib/visual/helper.js
+function getItemVisualFromData(data, dataIndex, key) {
+ switch (key) {
+ case "color":
+ var style = data.getItemVisual(dataIndex, "style");
+ return style[data.getVisual("drawType")];
+ case "opacity":
+ return data.getItemVisual(dataIndex, "style").opacity;
+ case "symbol":
+ case "symbolSize":
+ case "liftZ":
+ return data.getItemVisual(dataIndex, key);
+ default:
+ if (true) {
+ console.warn("Unknown visual type " + key);
+ }
+ }
+}
+function getVisualFromData(data, key) {
+ switch (key) {
+ case "color":
+ var style = data.getVisual("style");
+ return style[data.getVisual("drawType")];
+ case "opacity":
+ return data.getVisual("style").opacity;
+ case "symbol":
+ case "symbolSize":
+ case "liftZ":
+ return data.getVisual(key);
+ default:
+ if (true) {
+ console.warn("Unknown visual type " + key);
+ }
+ }
+}
+function setItemVisualFromData(data, dataIndex, key, value) {
+ switch (key) {
+ case "color":
+ var style = data.ensureUniqueItemVisual(dataIndex, "style");
+ style[data.getVisual("drawType")] = value;
+ data.setItemVisual(dataIndex, "colorFromPalette", false);
+ break;
+ case "opacity":
+ data.ensureUniqueItemVisual(dataIndex, "style").opacity = value;
+ break;
+ case "symbol":
+ case "symbolSize":
+ case "liftZ":
+ data.setItemVisual(dataIndex, key, value);
+ break;
+ default:
+ if (true) {
+ console.warn("Unknown visual type " + key);
+ }
+ }
+}
+
+// node_modules/echarts/lib/legacy/dataSelectAction.js
+function createLegacyDataSelectAction(seriesType2, ecRegisterAction) {
+ function getSeriesIndices(ecModel, payload) {
+ var seriesIndices = [];
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: seriesType2,
+ query: payload
+ }, function(seriesModel) {
+ seriesIndices.push(seriesModel.seriesIndex);
+ });
+ return seriesIndices;
+ }
+ each([[seriesType2 + "ToggleSelect", "toggleSelect"], [seriesType2 + "Select", "select"], [seriesType2 + "UnSelect", "unselect"]], function(eventsMap) {
+ ecRegisterAction(eventsMap[0], function(payload, ecModel, api) {
+ payload = extend({}, payload);
+ if (true) {
+ deprecateReplaceLog(payload.type, eventsMap[1]);
+ }
+ api.dispatchAction(extend(payload, {
+ type: eventsMap[1],
+ seriesIndex: getSeriesIndices(ecModel, payload)
+ }));
+ });
+ });
+}
+function handleSeriesLegacySelectEvents(type, eventPostfix, ecIns, ecModel, payload) {
+ var legacyEventName = type + eventPostfix;
+ if (!ecIns.isSilent(legacyEventName)) {
+ if (true) {
+ deprecateLog("event " + legacyEventName + " is deprecated.");
+ }
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "pie"
+ }, function(seriesModel) {
+ var seriesIndex = seriesModel.seriesIndex;
+ var selectedMap = seriesModel.option.selectedMap;
+ var selected = payload.selected;
+ for (var i = 0; i < selected.length; i++) {
+ if (selected[i].seriesIndex === seriesIndex) {
+ var data = seriesModel.getData();
+ var dataIndex = queryDataIndex(data, payload.fromActionPayload);
+ ecIns.trigger(legacyEventName, {
+ type: legacyEventName,
+ seriesId: seriesModel.id,
+ name: isArray(dataIndex) ? data.getName(dataIndex[0]) : data.getName(dataIndex),
+ selected: isString(selectedMap) ? selectedMap : extend({}, selectedMap)
+ });
+ }
+ }
+ });
+ }
+}
+function handleLegacySelectEvents(messageCenter, ecIns, api) {
+ messageCenter.on("selectchanged", function(params) {
+ var ecModel = api.getModel();
+ if (params.isFromClick) {
+ handleSeriesLegacySelectEvents("map", "selectchanged", ecIns, ecModel, params);
+ handleSeriesLegacySelectEvents("pie", "selectchanged", ecIns, ecModel, params);
+ } else if (params.fromAction === "select") {
+ handleSeriesLegacySelectEvents("map", "selected", ecIns, ecModel, params);
+ handleSeriesLegacySelectEvents("pie", "selected", ecIns, ecModel, params);
+ } else if (params.fromAction === "unselect") {
+ handleSeriesLegacySelectEvents("map", "unselected", ecIns, ecModel, params);
+ handleSeriesLegacySelectEvents("pie", "unselected", ecIns, ecModel, params);
+ }
+ });
+}
+
+// node_modules/echarts/lib/util/event.js
+function findEventDispatcher(target, det, returnFirstMatch) {
+ var found;
+ while (target) {
+ if (det(target)) {
+ found = target;
+ if (returnFirstMatch) {
+ break;
+ }
+ }
+ target = target.__hostTarget || target.parent;
+ }
+ return found;
+}
+
+// node_modules/zrender/lib/core/WeakMap.js
+var wmUniqueIndex = Math.round(Math.random() * 9);
+var supportDefineProperty = typeof Object.defineProperty === "function";
+var WeakMap = function() {
+ function WeakMap2() {
+ this._id = "__ec_inner_" + wmUniqueIndex++;
+ }
+ WeakMap2.prototype.get = function(key) {
+ return this._guard(key)[this._id];
+ };
+ WeakMap2.prototype.set = function(key, value) {
+ var target = this._guard(key);
+ if (supportDefineProperty) {
+ Object.defineProperty(target, this._id, {
+ value,
+ enumerable: false,
+ configurable: true
+ });
+ } else {
+ target[this._id] = value;
+ }
+ return this;
+ };
+ WeakMap2.prototype["delete"] = function(key) {
+ if (this.has(key)) {
+ delete this._guard(key)[this._id];
+ return true;
+ }
+ return false;
+ };
+ WeakMap2.prototype.has = function(key) {
+ return !!this._guard(key)[this._id];
+ };
+ WeakMap2.prototype._guard = function(key) {
+ if (key !== Object(key)) {
+ throw TypeError("Value of WeakMap is not a non-null object.");
+ }
+ return key;
+ };
+ return WeakMap2;
+}();
+var WeakMap_default = WeakMap;
+
+// node_modules/echarts/lib/util/symbol.js
+var Triangle = Path_default.extend({
+ type: "triangle",
+ shape: {
+ cx: 0,
+ cy: 0,
+ width: 0,
+ height: 0
+ },
+ buildPath: function(path, shape) {
+ var cx = shape.cx;
+ var cy = shape.cy;
+ var width = shape.width / 2;
+ var height = shape.height / 2;
+ path.moveTo(cx, cy - height);
+ path.lineTo(cx + width, cy + height);
+ path.lineTo(cx - width, cy + height);
+ path.closePath();
+ }
+});
+var Diamond = Path_default.extend({
+ type: "diamond",
+ shape: {
+ cx: 0,
+ cy: 0,
+ width: 0,
+ height: 0
+ },
+ buildPath: function(path, shape) {
+ var cx = shape.cx;
+ var cy = shape.cy;
+ var width = shape.width / 2;
+ var height = shape.height / 2;
+ path.moveTo(cx, cy - height);
+ path.lineTo(cx + width, cy);
+ path.lineTo(cx, cy + height);
+ path.lineTo(cx - width, cy);
+ path.closePath();
+ }
+});
+var Pin = Path_default.extend({
+ type: "pin",
+ shape: {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ },
+ buildPath: function(path, shape) {
+ var x = shape.x;
+ var y = shape.y;
+ var w = shape.width / 5 * 3;
+ var h = Math.max(w, shape.height);
+ var r = w / 2;
+ var dy = r * r / (h - r);
+ var cy = y - h + r + dy;
+ var angle = Math.asin(dy / r);
+ var dx = Math.cos(angle) * r;
+ var tanX = Math.sin(angle);
+ var tanY = Math.cos(angle);
+ var cpLen = r * 0.6;
+ var cpLen2 = r * 0.7;
+ path.moveTo(x - dx, cy + dy);
+ path.arc(x, cy, r, Math.PI - angle, Math.PI * 2 + angle);
+ path.bezierCurveTo(x + dx - tanX * cpLen, cy + dy + tanY * cpLen, x, y - cpLen2, x, y);
+ path.bezierCurveTo(x, y - cpLen2, x - dx + tanX * cpLen, cy + dy + tanY * cpLen, x - dx, cy + dy);
+ path.closePath();
+ }
+});
+var Arrow = Path_default.extend({
+ type: "arrow",
+ shape: {
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ },
+ buildPath: function(ctx, shape) {
+ var height = shape.height;
+ var width = shape.width;
+ var x = shape.x;
+ var y = shape.y;
+ var dx = width / 3 * 2;
+ ctx.moveTo(x, y);
+ ctx.lineTo(x + dx, y + height);
+ ctx.lineTo(x, y + height / 4 * 3);
+ ctx.lineTo(x - dx, y + height);
+ ctx.lineTo(x, y);
+ ctx.closePath();
+ }
+});
+var symbolCtors = {
+ line: Line_default,
+ rect: Rect_default,
+ roundRect: Rect_default,
+ square: Rect_default,
+ circle: Circle_default,
+ diamond: Diamond,
+ pin: Pin,
+ arrow: Arrow,
+ triangle: Triangle
+};
+var symbolShapeMakers = {
+ line: function(x, y, w, h, shape) {
+ shape.x1 = x;
+ shape.y1 = y + h / 2;
+ shape.x2 = x + w;
+ shape.y2 = y + h / 2;
+ },
+ rect: function(x, y, w, h, shape) {
+ shape.x = x;
+ shape.y = y;
+ shape.width = w;
+ shape.height = h;
+ },
+ roundRect: function(x, y, w, h, shape) {
+ shape.x = x;
+ shape.y = y;
+ shape.width = w;
+ shape.height = h;
+ shape.r = Math.min(w, h) / 4;
+ },
+ square: function(x, y, w, h, shape) {
+ var size = Math.min(w, h);
+ shape.x = x;
+ shape.y = y;
+ shape.width = size;
+ shape.height = size;
+ },
+ circle: function(x, y, w, h, shape) {
+ shape.cx = x + w / 2;
+ shape.cy = y + h / 2;
+ shape.r = Math.min(w, h) / 2;
+ },
+ diamond: function(x, y, w, h, shape) {
+ shape.cx = x + w / 2;
+ shape.cy = y + h / 2;
+ shape.width = w;
+ shape.height = h;
+ },
+ pin: function(x, y, w, h, shape) {
+ shape.x = x + w / 2;
+ shape.y = y + h / 2;
+ shape.width = w;
+ shape.height = h;
+ },
+ arrow: function(x, y, w, h, shape) {
+ shape.x = x + w / 2;
+ shape.y = y + h / 2;
+ shape.width = w;
+ shape.height = h;
+ },
+ triangle: function(x, y, w, h, shape) {
+ shape.cx = x + w / 2;
+ shape.cy = y + h / 2;
+ shape.width = w;
+ shape.height = h;
+ }
+};
+var symbolBuildProxies = {};
+each(symbolCtors, function(Ctor, name) {
+ symbolBuildProxies[name] = new Ctor();
+});
+var SymbolClz = Path_default.extend({
+ type: "symbol",
+ shape: {
+ symbolType: "",
+ x: 0,
+ y: 0,
+ width: 0,
+ height: 0
+ },
+ calculateTextPosition: function(out2, config, rect) {
+ var res = calculateTextPosition(out2, config, rect);
+ var shape = this.shape;
+ if (shape && shape.symbolType === "pin" && config.position === "inside") {
+ res.y = rect.y + rect.height * 0.4;
+ }
+ return res;
+ },
+ buildPath: function(ctx, shape, inBundle) {
+ var symbolType = shape.symbolType;
+ if (symbolType !== "none") {
+ var proxySymbol = symbolBuildProxies[symbolType];
+ if (!proxySymbol) {
+ symbolType = "rect";
+ proxySymbol = symbolBuildProxies[symbolType];
+ }
+ symbolShapeMakers[symbolType](shape.x, shape.y, shape.width, shape.height, proxySymbol.shape);
+ proxySymbol.buildPath(ctx, proxySymbol.shape, inBundle);
+ }
+ }
+});
+function symbolPathSetColor(color, innerColor2) {
+ if (this.type !== "image") {
+ var symbolStyle = this.style;
+ if (this.__isEmptyBrush) {
+ symbolStyle.stroke = color;
+ symbolStyle.fill = innerColor2 || "#fff";
+ symbolStyle.lineWidth = 2;
+ } else if (this.shape.symbolType === "line") {
+ symbolStyle.stroke = color;
+ } else {
+ symbolStyle.fill = color;
+ }
+ this.markRedraw();
+ }
+}
+function createSymbol(symbolType, x, y, w, h, color, keepAspect) {
+ var isEmpty = symbolType.indexOf("empty") === 0;
+ if (isEmpty) {
+ symbolType = symbolType.substr(5, 1).toLowerCase() + symbolType.substr(6);
+ }
+ var symbolPath;
+ if (symbolType.indexOf("image://") === 0) {
+ symbolPath = makeImage(symbolType.slice(8), new BoundingRect_default(x, y, w, h), keepAspect ? "center" : "cover");
+ } else if (symbolType.indexOf("path://") === 0) {
+ symbolPath = makePath(symbolType.slice(7), {}, new BoundingRect_default(x, y, w, h), keepAspect ? "center" : "cover");
+ } else {
+ symbolPath = new SymbolClz({
+ shape: {
+ symbolType,
+ x,
+ y,
+ width: w,
+ height: h
+ }
+ });
+ }
+ symbolPath.__isEmptyBrush = isEmpty;
+ symbolPath.setColor = symbolPathSetColor;
+ if (color) {
+ symbolPath.setColor(color);
+ }
+ return symbolPath;
+}
+function normalizeSymbolSize(symbolSize) {
+ if (!isArray(symbolSize)) {
+ symbolSize = [+symbolSize, +symbolSize];
+ }
+ return [symbolSize[0] || 0, symbolSize[1] || 0];
+}
+function normalizeSymbolOffset(symbolOffset, symbolSize) {
+ if (symbolOffset == null) {
+ return;
+ }
+ if (!isArray(symbolOffset)) {
+ symbolOffset = [symbolOffset, symbolOffset];
+ }
+ return [parsePercent2(symbolOffset[0], symbolSize[0]) || 0, parsePercent2(retrieve2(symbolOffset[1], symbolOffset[0]), symbolSize[1]) || 0];
+}
+
+// node_modules/zrender/lib/canvas/helper.js
+function isSafeNum(num) {
+ return isFinite(num);
+}
+function createLinearGradient(ctx, obj, rect) {
+ var x = obj.x == null ? 0 : obj.x;
+ var x2 = obj.x2 == null ? 1 : obj.x2;
+ var y = obj.y == null ? 0 : obj.y;
+ var y2 = obj.y2 == null ? 0 : obj.y2;
+ if (!obj.global) {
+ x = x * rect.width + rect.x;
+ x2 = x2 * rect.width + rect.x;
+ y = y * rect.height + rect.y;
+ y2 = y2 * rect.height + rect.y;
+ }
+ x = isSafeNum(x) ? x : 0;
+ x2 = isSafeNum(x2) ? x2 : 1;
+ y = isSafeNum(y) ? y : 0;
+ y2 = isSafeNum(y2) ? y2 : 0;
+ var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);
+ return canvasGradient;
+}
+function createRadialGradient(ctx, obj, rect) {
+ var width = rect.width;
+ var height = rect.height;
+ var min3 = Math.min(width, height);
+ var x = obj.x == null ? 0.5 : obj.x;
+ var y = obj.y == null ? 0.5 : obj.y;
+ var r = obj.r == null ? 0.5 : obj.r;
+ if (!obj.global) {
+ x = x * width + rect.x;
+ y = y * height + rect.y;
+ r = r * min3;
+ }
+ x = isSafeNum(x) ? x : 0.5;
+ y = isSafeNum(y) ? y : 0.5;
+ r = r >= 0 && isSafeNum(r) ? r : 0.5;
+ var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);
+ return canvasGradient;
+}
+function getCanvasGradient(ctx, obj, rect) {
+ var canvasGradient = obj.type === "radial" ? createRadialGradient(ctx, obj, rect) : createLinearGradient(ctx, obj, rect);
+ var colorStops = obj.colorStops;
+ for (var i = 0; i < colorStops.length; i++) {
+ canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);
+ }
+ return canvasGradient;
+}
+function isClipPathChanged(clipPaths, prevClipPaths) {
+ if (clipPaths === prevClipPaths || !clipPaths && !prevClipPaths) {
+ return false;
+ }
+ if (!clipPaths || !prevClipPaths || clipPaths.length !== prevClipPaths.length) {
+ return true;
+ }
+ for (var i = 0; i < clipPaths.length; i++) {
+ if (clipPaths[i] !== prevClipPaths[i]) {
+ return true;
+ }
+ }
+ return false;
+}
+function parseInt10(val) {
+ return parseInt(val, 10);
+}
+function getSize(root, whIdx, opts) {
+ var wh = ["width", "height"][whIdx];
+ var cwh = ["clientWidth", "clientHeight"][whIdx];
+ var plt = ["paddingLeft", "paddingTop"][whIdx];
+ var prb = ["paddingRight", "paddingBottom"][whIdx];
+ if (opts[wh] != null && opts[wh] !== "auto") {
+ return parseFloat(opts[wh]);
+ }
+ var stl = document.defaultView.getComputedStyle(root);
+ return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;
+}
+
+// node_modules/zrender/lib/canvas/dashStyle.js
+function normalizeLineDash(lineType, lineWidth) {
+ if (!lineType || lineType === "solid" || !(lineWidth > 0)) {
+ return null;
+ }
+ return lineType === "dashed" ? [4 * lineWidth, 2 * lineWidth] : lineType === "dotted" ? [lineWidth] : isNumber(lineType) ? [lineType] : isArray(lineType) ? lineType : null;
+}
+function getLineDash(el) {
+ var style = el.style;
+ var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);
+ var lineDashOffset = style.lineDashOffset;
+ if (lineDash) {
+ var lineScale_1 = style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1;
+ if (lineScale_1 && lineScale_1 !== 1) {
+ lineDash = map(lineDash, function(rawVal) {
+ return rawVal / lineScale_1;
+ });
+ lineDashOffset /= lineScale_1;
+ }
+ }
+ return [lineDash, lineDashOffset];
+}
+
+// node_modules/zrender/lib/canvas/graphic.js
+var pathProxyForDraw = new PathProxy_default(true);
+function styleHasStroke(style) {
+ var stroke = style.stroke;
+ return !(stroke == null || stroke === "none" || !(style.lineWidth > 0));
+}
+function isValidStrokeFillStyle(strokeOrFill) {
+ return typeof strokeOrFill === "string" && strokeOrFill !== "none";
+}
+function styleHasFill(style) {
+ var fill = style.fill;
+ return fill != null && fill !== "none";
+}
+function doFillPath(ctx, style) {
+ if (style.fillOpacity != null && style.fillOpacity !== 1) {
+ var originalGlobalAlpha = ctx.globalAlpha;
+ ctx.globalAlpha = style.fillOpacity * style.opacity;
+ ctx.fill();
+ ctx.globalAlpha = originalGlobalAlpha;
+ } else {
+ ctx.fill();
+ }
+}
+function doStrokePath(ctx, style) {
+ if (style.strokeOpacity != null && style.strokeOpacity !== 1) {
+ var originalGlobalAlpha = ctx.globalAlpha;
+ ctx.globalAlpha = style.strokeOpacity * style.opacity;
+ ctx.stroke();
+ ctx.globalAlpha = originalGlobalAlpha;
+ } else {
+ ctx.stroke();
+ }
+}
+function createCanvasPattern(ctx, pattern, el) {
+ var image = createOrUpdateImage(pattern.image, pattern.__image, el);
+ if (isImageReady(image)) {
+ var canvasPattern = ctx.createPattern(image, pattern.repeat || "repeat");
+ if (typeof DOMMatrix === "function" && canvasPattern && canvasPattern.setTransform) {
+ var matrix = new DOMMatrix();
+ matrix.translateSelf(pattern.x || 0, pattern.y || 0);
+ matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE);
+ matrix.scaleSelf(pattern.scaleX || 1, pattern.scaleY || 1);
+ canvasPattern.setTransform(matrix);
+ }
+ return canvasPattern;
+ }
+}
+function brushPath(ctx, el, style, inBatch) {
+ var _a2;
+ var hasStroke = styleHasStroke(style);
+ var hasFill = styleHasFill(style);
+ var strokePercent = style.strokePercent;
+ var strokePart = strokePercent < 1;
+ var firstDraw = !el.path;
+ if ((!el.silent || strokePart) && firstDraw) {
+ el.createPathProxy();
+ }
+ var path = el.path || pathProxyForDraw;
+ var dirtyFlag = el.__dirty;
+ if (!inBatch) {
+ var fill = style.fill;
+ var stroke = style.stroke;
+ var hasFillGradient = hasFill && !!fill.colorStops;
+ var hasStrokeGradient = hasStroke && !!stroke.colorStops;
+ var hasFillPattern = hasFill && !!fill.image;
+ var hasStrokePattern = hasStroke && !!stroke.image;
+ var fillGradient = void 0;
+ var strokeGradient = void 0;
+ var fillPattern = void 0;
+ var strokePattern = void 0;
+ var rect = void 0;
+ if (hasFillGradient || hasStrokeGradient) {
+ rect = el.getBoundingRect();
+ }
+ if (hasFillGradient) {
+ fillGradient = dirtyFlag ? getCanvasGradient(ctx, fill, rect) : el.__canvasFillGradient;
+ el.__canvasFillGradient = fillGradient;
+ }
+ if (hasStrokeGradient) {
+ strokeGradient = dirtyFlag ? getCanvasGradient(ctx, stroke, rect) : el.__canvasStrokeGradient;
+ el.__canvasStrokeGradient = strokeGradient;
+ }
+ if (hasFillPattern) {
+ fillPattern = dirtyFlag || !el.__canvasFillPattern ? createCanvasPattern(ctx, fill, el) : el.__canvasFillPattern;
+ el.__canvasFillPattern = fillPattern;
+ }
+ if (hasStrokePattern) {
+ strokePattern = dirtyFlag || !el.__canvasStrokePattern ? createCanvasPattern(ctx, stroke, el) : el.__canvasStrokePattern;
+ el.__canvasStrokePattern = fillPattern;
+ }
+ if (hasFillGradient) {
+ ctx.fillStyle = fillGradient;
+ } else if (hasFillPattern) {
+ if (fillPattern) {
+ ctx.fillStyle = fillPattern;
+ } else {
+ hasFill = false;
+ }
+ }
+ if (hasStrokeGradient) {
+ ctx.strokeStyle = strokeGradient;
+ } else if (hasStrokePattern) {
+ if (strokePattern) {
+ ctx.strokeStyle = strokePattern;
+ } else {
+ hasStroke = false;
+ }
+ }
+ }
+ var scale4 = el.getGlobalScale();
+ path.setScale(scale4[0], scale4[1], el.segmentIgnoreThreshold);
+ var lineDash;
+ var lineDashOffset;
+ if (ctx.setLineDash && style.lineDash) {
+ _a2 = getLineDash(el), lineDash = _a2[0], lineDashOffset = _a2[1];
+ }
+ var needsRebuild = true;
+ if (firstDraw || dirtyFlag & SHAPE_CHANGED_BIT) {
+ path.setDPR(ctx.dpr);
+ if (strokePart) {
+ path.setContext(null);
+ } else {
+ path.setContext(ctx);
+ needsRebuild = false;
+ }
+ path.reset();
+ el.buildPath(path, el.shape, inBatch);
+ path.toStatic();
+ el.pathUpdated();
+ }
+ if (needsRebuild) {
+ path.rebuildPath(ctx, strokePart ? strokePercent : 1);
+ }
+ if (lineDash) {
+ ctx.setLineDash(lineDash);
+ ctx.lineDashOffset = lineDashOffset;
+ }
+ if (!inBatch) {
+ if (style.strokeFirst) {
+ if (hasStroke) {
+ doStrokePath(ctx, style);
+ }
+ if (hasFill) {
+ doFillPath(ctx, style);
+ }
+ } else {
+ if (hasFill) {
+ doFillPath(ctx, style);
+ }
+ if (hasStroke) {
+ doStrokePath(ctx, style);
+ }
+ }
+ }
+ if (lineDash) {
+ ctx.setLineDash([]);
+ }
+}
+function brushImage(ctx, el, style) {
+ var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);
+ if (!image || !isImageReady(image)) {
+ return;
+ }
+ var x = style.x || 0;
+ var y = style.y || 0;
+ var width = el.getWidth();
+ var height = el.getHeight();
+ var aspect = image.width / image.height;
+ if (width == null && height != null) {
+ width = height * aspect;
+ } else if (height == null && width != null) {
+ height = width / aspect;
+ } else if (width == null && height == null) {
+ width = image.width;
+ height = image.height;
+ }
+ if (style.sWidth && style.sHeight) {
+ var sx = style.sx || 0;
+ var sy = style.sy || 0;
+ ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);
+ } else if (style.sx && style.sy) {
+ var sx = style.sx;
+ var sy = style.sy;
+ var sWidth = width - sx;
+ var sHeight = height - sy;
+ ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);
+ } else {
+ ctx.drawImage(image, x, y, width, height);
+ }
+}
+function brushText(ctx, el, style) {
+ var _a2;
+ var text = style.text;
+ text != null && (text += "");
+ if (text) {
+ ctx.font = style.font || DEFAULT_FONT;
+ ctx.textAlign = style.textAlign;
+ ctx.textBaseline = style.textBaseline;
+ var lineDash = void 0;
+ var lineDashOffset = void 0;
+ if (ctx.setLineDash && style.lineDash) {
+ _a2 = getLineDash(el), lineDash = _a2[0], lineDashOffset = _a2[1];
+ }
+ if (lineDash) {
+ ctx.setLineDash(lineDash);
+ ctx.lineDashOffset = lineDashOffset;
+ }
+ if (style.strokeFirst) {
+ if (styleHasStroke(style)) {
+ ctx.strokeText(text, style.x, style.y);
+ }
+ if (styleHasFill(style)) {
+ ctx.fillText(text, style.x, style.y);
+ }
+ } else {
+ if (styleHasFill(style)) {
+ ctx.fillText(text, style.x, style.y);
+ }
+ if (styleHasStroke(style)) {
+ ctx.strokeText(text, style.x, style.y);
+ }
+ }
+ if (lineDash) {
+ ctx.setLineDash([]);
+ }
+ }
+}
+var SHADOW_NUMBER_PROPS = ["shadowBlur", "shadowOffsetX", "shadowOffsetY"];
+var STROKE_PROPS = [
+ ["lineCap", "butt"],
+ ["lineJoin", "miter"],
+ ["miterLimit", 10]
+];
+function bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {
+ var styleChanged = false;
+ if (!forceSetAll) {
+ prevStyle = prevStyle || {};
+ if (style === prevStyle) {
+ return false;
+ }
+ }
+ if (forceSetAll || style.opacity !== prevStyle.opacity) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ var opacity = Math.max(Math.min(style.opacity, 1), 0);
+ ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;
+ }
+ if (forceSetAll || style.blend !== prevStyle.blend) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;
+ }
+ for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {
+ var propName = SHADOW_NUMBER_PROPS[i];
+ if (forceSetAll || style[propName] !== prevStyle[propName]) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ ctx[propName] = ctx.dpr * (style[propName] || 0);
+ }
+ }
+ if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;
+ }
+ return styleChanged;
+}
+function bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {
+ var style = getStyle(el, scope.inHover);
+ var prevStyle = forceSetAll ? null : prevEl && getStyle(prevEl, scope.inHover) || {};
+ if (style === prevStyle) {
+ return false;
+ }
+ var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);
+ if (forceSetAll || style.fill !== prevStyle.fill) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill);
+ }
+ if (forceSetAll || style.stroke !== prevStyle.stroke) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke);
+ }
+ if (forceSetAll || style.opacity !== prevStyle.opacity) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;
+ }
+ if (el.hasStroke()) {
+ var lineWidth = style.lineWidth;
+ var newLineWidth = lineWidth / (style.strokeNoScale && el.getLineScale ? el.getLineScale() : 1);
+ if (ctx.lineWidth !== newLineWidth) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ ctx.lineWidth = newLineWidth;
+ }
+ }
+ for (var i = 0; i < STROKE_PROPS.length; i++) {
+ var prop = STROKE_PROPS[i];
+ var propName = prop[0];
+ if (forceSetAll || style[propName] !== prevStyle[propName]) {
+ if (!styleChanged) {
+ flushPathDrawn(ctx, scope);
+ styleChanged = true;
+ }
+ ctx[propName] = style[propName] || prop[1];
+ }
+ }
+ return styleChanged;
+}
+function bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {
+ return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);
+}
+function setContextTransform(ctx, el) {
+ var m2 = el.transform;
+ var dpr2 = ctx.dpr || 1;
+ if (m2) {
+ ctx.setTransform(dpr2 * m2[0], dpr2 * m2[1], dpr2 * m2[2], dpr2 * m2[3], dpr2 * m2[4], dpr2 * m2[5]);
+ } else {
+ ctx.setTransform(dpr2, 0, 0, dpr2, 0, 0);
+ }
+}
+function updateClipStatus(clipPaths, ctx, scope) {
+ var allClipped = false;
+ for (var i = 0; i < clipPaths.length; i++) {
+ var clipPath = clipPaths[i];
+ allClipped = allClipped || clipPath.isZeroArea();
+ setContextTransform(ctx, clipPath);
+ ctx.beginPath();
+ clipPath.buildPath(ctx, clipPath.shape);
+ ctx.clip();
+ }
+ scope.allClipped = allClipped;
+}
+function isTransformChanged(m0, m1) {
+ if (m0 && m1) {
+ return m0[0] !== m1[0] || m0[1] !== m1[1] || m0[2] !== m1[2] || m0[3] !== m1[3] || m0[4] !== m1[4] || m0[5] !== m1[5];
+ } else if (!m0 && !m1) {
+ return false;
+ }
+ return true;
+}
+var DRAW_TYPE_PATH = 1;
+var DRAW_TYPE_IMAGE = 2;
+var DRAW_TYPE_TEXT = 3;
+var DRAW_TYPE_INCREMENTAL = 4;
+function canPathBatch(style) {
+ var hasFill = styleHasFill(style);
+ var hasStroke = styleHasStroke(style);
+ return !(style.lineDash || !(+hasFill ^ +hasStroke) || hasFill && typeof style.fill !== "string" || hasStroke && typeof style.stroke !== "string" || style.strokePercent < 1 || style.strokeOpacity < 1 || style.fillOpacity < 1);
+}
+function flushPathDrawn(ctx, scope) {
+ scope.batchFill && ctx.fill();
+ scope.batchStroke && ctx.stroke();
+ scope.batchFill = "";
+ scope.batchStroke = "";
+}
+function getStyle(el, inHover) {
+ return inHover ? el.__hoverStyle || el.style : el.style;
+}
+function brushSingle(ctx, el) {
+ brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);
+}
+function brush(ctx, el, scope, isLast) {
+ var m2 = el.transform;
+ if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {
+ el.__dirty &= ~REDRAW_BIT;
+ el.__isRendered = false;
+ return;
+ }
+ var clipPaths = el.__clipPaths;
+ var prevElClipPaths = scope.prevElClipPaths;
+ var forceSetTransform = false;
+ var forceSetStyle = false;
+ if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {
+ if (prevElClipPaths && prevElClipPaths.length) {
+ flushPathDrawn(ctx, scope);
+ ctx.restore();
+ forceSetStyle = forceSetTransform = true;
+ scope.prevElClipPaths = null;
+ scope.allClipped = false;
+ scope.prevEl = null;
+ }
+ if (clipPaths && clipPaths.length) {
+ flushPathDrawn(ctx, scope);
+ ctx.save();
+ updateClipStatus(clipPaths, ctx, scope);
+ forceSetTransform = true;
+ }
+ scope.prevElClipPaths = clipPaths;
+ }
+ if (scope.allClipped) {
+ el.__isRendered = false;
+ return;
+ }
+ el.beforeBrush && el.beforeBrush();
+ el.innerBeforeBrush();
+ var prevEl = scope.prevEl;
+ if (!prevEl) {
+ forceSetStyle = forceSetTransform = true;
+ }
+ var canBatchPath = el instanceof Path_default && el.autoBatch && canPathBatch(el.style);
+ if (forceSetTransform || isTransformChanged(m2, prevEl.transform)) {
+ flushPathDrawn(ctx, scope);
+ setContextTransform(ctx, el);
+ } else if (!canBatchPath) {
+ flushPathDrawn(ctx, scope);
+ }
+ var style = getStyle(el, scope.inHover);
+ if (el instanceof Path_default) {
+ if (scope.lastDrawType !== DRAW_TYPE_PATH) {
+ forceSetStyle = true;
+ scope.lastDrawType = DRAW_TYPE_PATH;
+ }
+ bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);
+ if (!canBatchPath || !scope.batchFill && !scope.batchStroke) {
+ ctx.beginPath();
+ }
+ brushPath(ctx, el, style, canBatchPath);
+ if (canBatchPath) {
+ scope.batchFill = style.fill || "";
+ scope.batchStroke = style.stroke || "";
+ }
+ } else {
+ if (el instanceof TSpan_default) {
+ if (scope.lastDrawType !== DRAW_TYPE_TEXT) {
+ forceSetStyle = true;
+ scope.lastDrawType = DRAW_TYPE_TEXT;
+ }
+ bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);
+ brushText(ctx, el, style);
+ } else if (el instanceof Image_default) {
+ if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {
+ forceSetStyle = true;
+ scope.lastDrawType = DRAW_TYPE_IMAGE;
+ }
+ bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);
+ brushImage(ctx, el, style);
+ } else if (el.getTemporalDisplayables) {
+ if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {
+ forceSetStyle = true;
+ scope.lastDrawType = DRAW_TYPE_INCREMENTAL;
+ }
+ brushIncremental(ctx, el, scope);
+ }
+ }
+ if (canBatchPath && isLast) {
+ flushPathDrawn(ctx, scope);
+ }
+ el.innerAfterBrush();
+ el.afterBrush && el.afterBrush();
+ scope.prevEl = el;
+ el.__dirty = 0;
+ el.__isRendered = true;
+}
+function brushIncremental(ctx, el, scope) {
+ var displayables = el.getDisplayables();
+ var temporalDisplayables = el.getTemporalDisplayables();
+ ctx.save();
+ var innerScope = {
+ prevElClipPaths: null,
+ prevEl: null,
+ allClipped: false,
+ viewWidth: scope.viewWidth,
+ viewHeight: scope.viewHeight,
+ inHover: scope.inHover
+ };
+ var i;
+ var len2;
+ for (i = el.getCursor(), len2 = displayables.length; i < len2; i++) {
+ var displayable = displayables[i];
+ displayable.beforeBrush && displayable.beforeBrush();
+ displayable.innerBeforeBrush();
+ brush(ctx, displayable, innerScope, i === len2 - 1);
+ displayable.innerAfterBrush();
+ displayable.afterBrush && displayable.afterBrush();
+ innerScope.prevEl = displayable;
+ }
+ for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {
+ var displayable = temporalDisplayables[i_1];
+ displayable.beforeBrush && displayable.beforeBrush();
+ displayable.innerBeforeBrush();
+ brush(ctx, displayable, innerScope, i_1 === len_1 - 1);
+ displayable.innerAfterBrush();
+ displayable.afterBrush && displayable.afterBrush();
+ innerScope.prevEl = displayable;
+ }
+ el.clearTemporalDisplayables();
+ el.notClear = true;
+ ctx.restore();
+}
+
+// node_modules/echarts/lib/util/decal.js
+var decalMap = new WeakMap_default();
+var decalCache = new LRU_default(100);
+var decalKeys = ["symbol", "symbolSize", "symbolKeepAspect", "color", "backgroundColor", "dashArrayX", "dashArrayY", "maxTileWidth", "maxTileHeight"];
+function createOrUpdatePatternFromDecal(decalObject, api) {
+ if (decalObject === "none") {
+ return null;
+ }
+ var dpr2 = api.getDevicePixelRatio();
+ var zr = api.getZr();
+ var isSVG = zr.painter.type === "svg";
+ if (decalObject.dirty) {
+ decalMap["delete"](decalObject);
+ }
+ var oldPattern = decalMap.get(decalObject);
+ if (oldPattern) {
+ return oldPattern;
+ }
+ var decalOpt = defaults(decalObject, {
+ symbol: "rect",
+ symbolSize: 1,
+ symbolKeepAspect: true,
+ color: "rgba(0, 0, 0, 0.2)",
+ backgroundColor: null,
+ dashArrayX: 5,
+ dashArrayY: 5,
+ rotation: 0,
+ maxTileWidth: 512,
+ maxTileHeight: 512
+ });
+ if (decalOpt.backgroundColor === "none") {
+ decalOpt.backgroundColor = null;
+ }
+ var pattern = {
+ repeat: "repeat"
+ };
+ setPatternnSource(pattern);
+ pattern.rotation = decalOpt.rotation;
+ pattern.scaleX = pattern.scaleY = isSVG ? 1 : 1 / dpr2;
+ decalMap.set(decalObject, pattern);
+ decalObject.dirty = false;
+ return pattern;
+ function setPatternnSource(pattern2) {
+ var keys2 = [dpr2];
+ var isValidKey = true;
+ for (var i = 0; i < decalKeys.length; ++i) {
+ var value = decalOpt[decalKeys[i]];
+ if (value != null && !isArray(value) && !isString(value) && !isNumber(value) && typeof value !== "boolean") {
+ isValidKey = false;
+ break;
+ }
+ keys2.push(value);
+ }
+ var cacheKey;
+ if (isValidKey) {
+ cacheKey = keys2.join(",") + (isSVG ? "-svg" : "");
+ var cache = decalCache.get(cacheKey);
+ if (cache) {
+ isSVG ? pattern2.svgElement = cache : pattern2.image = cache;
+ }
+ }
+ var dashArrayX = normalizeDashArrayX(decalOpt.dashArrayX);
+ var dashArrayY = normalizeDashArrayY(decalOpt.dashArrayY);
+ var symbolArray = normalizeSymbolArray(decalOpt.symbol);
+ var lineBlockLengthsX = getLineBlockLengthX(dashArrayX);
+ var lineBlockLengthY = getLineBlockLengthY(dashArrayY);
+ var canvas = !isSVG && platformApi.createCanvas();
+ var svgRoot = isSVG && {
+ tag: "g",
+ attrs: {},
+ key: "dcl",
+ children: []
+ };
+ var pSize = getPatternSize();
+ var ctx;
+ if (canvas) {
+ canvas.width = pSize.width * dpr2;
+ canvas.height = pSize.height * dpr2;
+ ctx = canvas.getContext("2d");
+ }
+ brushDecal();
+ if (isValidKey) {
+ decalCache.put(cacheKey, canvas || svgRoot);
+ }
+ pattern2.image = canvas;
+ pattern2.svgElement = svgRoot;
+ pattern2.svgWidth = pSize.width;
+ pattern2.svgHeight = pSize.height;
+ function getPatternSize() {
+ var width = 1;
+ for (var i2 = 0, xlen = lineBlockLengthsX.length; i2 < xlen; ++i2) {
+ width = getLeastCommonMultiple(width, lineBlockLengthsX[i2]);
+ }
+ var symbolRepeats = 1;
+ for (var i2 = 0, xlen = symbolArray.length; i2 < xlen; ++i2) {
+ symbolRepeats = getLeastCommonMultiple(symbolRepeats, symbolArray[i2].length);
+ }
+ width *= symbolRepeats;
+ var height = lineBlockLengthY * lineBlockLengthsX.length * symbolArray.length;
+ if (true) {
+ var warn2 = function(attrName) {
+ console.warn("Calculated decal size is greater than " + attrName + " due to decal option settings so " + attrName + " is used for the decal size. Please consider changing the decal option to make a smaller decal or set " + attrName + " to be larger to avoid incontinuity.");
+ };
+ if (width > decalOpt.maxTileWidth) {
+ warn2("maxTileWidth");
+ }
+ if (height > decalOpt.maxTileHeight) {
+ warn2("maxTileHeight");
+ }
+ }
+ return {
+ width: Math.max(1, Math.min(width, decalOpt.maxTileWidth)),
+ height: Math.max(1, Math.min(height, decalOpt.maxTileHeight))
+ };
+ }
+ function brushDecal() {
+ if (ctx) {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ if (decalOpt.backgroundColor) {
+ ctx.fillStyle = decalOpt.backgroundColor;
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
+ }
+ }
+ var ySum = 0;
+ for (var i2 = 0; i2 < dashArrayY.length; ++i2) {
+ ySum += dashArrayY[i2];
+ }
+ if (ySum <= 0) {
+ return;
+ }
+ var y = -lineBlockLengthY;
+ var yId = 0;
+ var yIdTotal = 0;
+ var xId0 = 0;
+ while (y < pSize.height) {
+ if (yId % 2 === 0) {
+ var symbolYId = yIdTotal / 2 % symbolArray.length;
+ var x = 0;
+ var xId1 = 0;
+ var xId1Total = 0;
+ while (x < pSize.width * 2) {
+ var xSum = 0;
+ for (var i2 = 0; i2 < dashArrayX[xId0].length; ++i2) {
+ xSum += dashArrayX[xId0][i2];
+ }
+ if (xSum <= 0) {
+ break;
+ }
+ if (xId1 % 2 === 0) {
+ var size = (1 - decalOpt.symbolSize) * 0.5;
+ var left = x + dashArrayX[xId0][xId1] * size;
+ var top_1 = y + dashArrayY[yId] * size;
+ var width = dashArrayX[xId0][xId1] * decalOpt.symbolSize;
+ var height = dashArrayY[yId] * decalOpt.symbolSize;
+ var symbolXId = xId1Total / 2 % symbolArray[symbolYId].length;
+ brushSymbol(left, top_1, width, height, symbolArray[symbolYId][symbolXId]);
+ }
+ x += dashArrayX[xId0][xId1];
+ ++xId1Total;
+ ++xId1;
+ if (xId1 === dashArrayX[xId0].length) {
+ xId1 = 0;
+ }
+ }
+ ++xId0;
+ if (xId0 === dashArrayX.length) {
+ xId0 = 0;
+ }
+ }
+ y += dashArrayY[yId];
+ ++yIdTotal;
+ ++yId;
+ if (yId === dashArrayY.length) {
+ yId = 0;
+ }
+ }
+ function brushSymbol(x2, y2, width2, height2, symbolType) {
+ var scale4 = isSVG ? 1 : dpr2;
+ var symbol = createSymbol(symbolType, x2 * scale4, y2 * scale4, width2 * scale4, height2 * scale4, decalOpt.color, decalOpt.symbolKeepAspect);
+ if (isSVG) {
+ var symbolVNode = zr.painter.renderOneToVNode(symbol);
+ if (symbolVNode) {
+ svgRoot.children.push(symbolVNode);
+ }
+ } else {
+ brushSingle(ctx, symbol);
+ }
+ }
+ }
+ }
+}
+function normalizeSymbolArray(symbol) {
+ if (!symbol || symbol.length === 0) {
+ return [["rect"]];
+ }
+ if (isString(symbol)) {
+ return [[symbol]];
+ }
+ var isAllString = true;
+ for (var i = 0; i < symbol.length; ++i) {
+ if (!isString(symbol[i])) {
+ isAllString = false;
+ break;
+ }
+ }
+ if (isAllString) {
+ return normalizeSymbolArray([symbol]);
+ }
+ var result = [];
+ for (var i = 0; i < symbol.length; ++i) {
+ if (isString(symbol[i])) {
+ result.push([symbol[i]]);
+ } else {
+ result.push(symbol[i]);
+ }
+ }
+ return result;
+}
+function normalizeDashArrayX(dash) {
+ if (!dash || dash.length === 0) {
+ return [[0, 0]];
+ }
+ if (isNumber(dash)) {
+ var dashValue = Math.ceil(dash);
+ return [[dashValue, dashValue]];
+ }
+ var isAllNumber = true;
+ for (var i = 0; i < dash.length; ++i) {
+ if (!isNumber(dash[i])) {
+ isAllNumber = false;
+ break;
+ }
+ }
+ if (isAllNumber) {
+ return normalizeDashArrayX([dash]);
+ }
+ var result = [];
+ for (var i = 0; i < dash.length; ++i) {
+ if (isNumber(dash[i])) {
+ var dashValue = Math.ceil(dash[i]);
+ result.push([dashValue, dashValue]);
+ } else {
+ var dashValue = map(dash[i], function(n) {
+ return Math.ceil(n);
+ });
+ if (dashValue.length % 2 === 1) {
+ result.push(dashValue.concat(dashValue));
+ } else {
+ result.push(dashValue);
+ }
+ }
+ }
+ return result;
+}
+function normalizeDashArrayY(dash) {
+ if (!dash || typeof dash === "object" && dash.length === 0) {
+ return [0, 0];
+ }
+ if (isNumber(dash)) {
+ var dashValue_1 = Math.ceil(dash);
+ return [dashValue_1, dashValue_1];
+ }
+ var dashValue = map(dash, function(n) {
+ return Math.ceil(n);
+ });
+ return dash.length % 2 ? dashValue.concat(dashValue) : dashValue;
+}
+function getLineBlockLengthX(dash) {
+ return map(dash, function(line) {
+ return getLineBlockLengthY(line);
+ });
+}
+function getLineBlockLengthY(dash) {
+ var blockLength = 0;
+ for (var i = 0; i < dash.length; ++i) {
+ blockLength += dash[i];
+ }
+ if (dash.length % 2 === 1) {
+ return blockLength * 2;
+ }
+ return blockLength;
+}
+
+// node_modules/echarts/lib/visual/decal.js
+function decalVisual(ecModel, api) {
+ ecModel.eachRawSeries(function(seriesModel) {
+ if (ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ var data = seriesModel.getData();
+ if (data.hasItemVisual()) {
+ data.each(function(idx) {
+ var decal2 = data.getItemVisual(idx, "decal");
+ if (decal2) {
+ var itemStyle = data.ensureUniqueItemVisual(idx, "style");
+ itemStyle.decal = createOrUpdatePatternFromDecal(decal2, api);
+ }
+ });
+ }
+ var decal = data.getVisual("decal");
+ if (decal) {
+ var style = data.getVisual("style");
+ style.decal = createOrUpdatePatternFromDecal(decal, api);
+ }
+ });
+}
+
+// node_modules/echarts/lib/core/lifecycle.js
+var lifecycle = new Eventful_default();
+var lifecycle_default = lifecycle;
+
+// node_modules/echarts/lib/core/impl.js
+var implsStore = {};
+function registerImpl(name, impl) {
+ if (true) {
+ if (implsStore[name]) {
+ error("Already has an implementation of " + name + ".");
+ }
+ }
+ implsStore[name] = impl;
+}
+function getImpl(name) {
+ if (true) {
+ if (!implsStore[name]) {
+ error("Implementation of " + name + " doesn't exists.");
+ }
+ }
+ return implsStore[name];
+}
+
+// node_modules/echarts/lib/core/echarts.js
+var version2 = "5.6.0";
+var dependencies = {
+ zrender: "5.6.1"
+};
+var TEST_FRAME_REMAIN_TIME = 1;
+var PRIORITY_PROCESSOR_SERIES_FILTER = 800;
+var PRIORITY_PROCESSOR_DATASTACK = 900;
+var PRIORITY_PROCESSOR_FILTER = 1e3;
+var PRIORITY_PROCESSOR_DEFAULT = 2e3;
+var PRIORITY_PROCESSOR_STATISTIC = 5e3;
+var PRIORITY_VISUAL_LAYOUT = 1e3;
+var PRIORITY_VISUAL_PROGRESSIVE_LAYOUT = 1100;
+var PRIORITY_VISUAL_GLOBAL = 2e3;
+var PRIORITY_VISUAL_CHART = 3e3;
+var PRIORITY_VISUAL_COMPONENT = 4e3;
+var PRIORITY_VISUAL_CHART_DATA_CUSTOM = 4500;
+var PRIORITY_VISUAL_POST_CHART_LAYOUT = 4600;
+var PRIORITY_VISUAL_BRUSH = 5e3;
+var PRIORITY_VISUAL_ARIA = 6e3;
+var PRIORITY_VISUAL_DECAL = 7e3;
+var PRIORITY = {
+ PROCESSOR: {
+ FILTER: PRIORITY_PROCESSOR_FILTER,
+ SERIES_FILTER: PRIORITY_PROCESSOR_SERIES_FILTER,
+ STATISTIC: PRIORITY_PROCESSOR_STATISTIC
+ },
+ VISUAL: {
+ LAYOUT: PRIORITY_VISUAL_LAYOUT,
+ PROGRESSIVE_LAYOUT: PRIORITY_VISUAL_PROGRESSIVE_LAYOUT,
+ GLOBAL: PRIORITY_VISUAL_GLOBAL,
+ CHART: PRIORITY_VISUAL_CHART,
+ POST_CHART_LAYOUT: PRIORITY_VISUAL_POST_CHART_LAYOUT,
+ COMPONENT: PRIORITY_VISUAL_COMPONENT,
+ BRUSH: PRIORITY_VISUAL_BRUSH,
+ CHART_ITEM: PRIORITY_VISUAL_CHART_DATA_CUSTOM,
+ ARIA: PRIORITY_VISUAL_ARIA,
+ DECAL: PRIORITY_VISUAL_DECAL
+ }
+};
+var IN_MAIN_PROCESS_KEY = "__flagInMainProcess";
+var PENDING_UPDATE = "__pendingUpdate";
+var STATUS_NEEDS_UPDATE_KEY = "__needsUpdateStatus";
+var ACTION_REG = /^[a-zA-Z0-9_]+$/;
+var CONNECT_STATUS_KEY = "__connectUpdateStatus";
+var CONNECT_STATUS_PENDING = 0;
+var CONNECT_STATUS_UPDATING = 1;
+var CONNECT_STATUS_UPDATED = 2;
+function createRegisterEventWithLowercaseECharts(method) {
+ return function() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (this.isDisposed()) {
+ disposedWarning(this.id);
+ return;
+ }
+ return toLowercaseNameAndCallEventful(this, method, args);
+ };
+}
+function createRegisterEventWithLowercaseMessageCenter(method) {
+ return function() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ return toLowercaseNameAndCallEventful(this, method, args);
+ };
+}
+function toLowercaseNameAndCallEventful(host, method, args) {
+ args[0] = args[0] && args[0].toLowerCase();
+ return Eventful_default.prototype[method].apply(host, args);
+}
+var MessageCenter = function(_super) {
+ __extends(MessageCenter2, _super);
+ function MessageCenter2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return MessageCenter2;
+}(Eventful_default);
+var messageCenterProto = MessageCenter.prototype;
+messageCenterProto.on = createRegisterEventWithLowercaseMessageCenter("on");
+messageCenterProto.off = createRegisterEventWithLowercaseMessageCenter("off");
+var prepare;
+var prepareView;
+var updateDirectly;
+var updateMethods;
+var doConvertPixel;
+var updateStreamModes;
+var doDispatchAction;
+var flushPendingActions;
+var triggerUpdatedEvent;
+var bindRenderedEvent;
+var bindMouseEvent;
+var render;
+var renderComponents;
+var renderSeries;
+var createExtensionAPI;
+var enableConnect;
+var markStatusToUpdate;
+var applyChangedStates;
+var ECharts = function(_super) {
+ __extends(ECharts2, _super);
+ function ECharts2(dom, theme2, opts) {
+ var _this = _super.call(this, new ECEventProcessor()) || this;
+ _this._chartsViews = [];
+ _this._chartsMap = {};
+ _this._componentsViews = [];
+ _this._componentsMap = {};
+ _this._pendingActions = [];
+ opts = opts || {};
+ if (isString(theme2)) {
+ theme2 = themeStorage[theme2];
+ }
+ _this._dom = dom;
+ var defaultRenderer = "canvas";
+ var defaultCoarsePointer = "auto";
+ var defaultUseDirtyRect = false;
+ if (true) {
+ var root = env_default.hasGlobalWindow ? window : global;
+ if (root) {
+ defaultRenderer = retrieve2(root.__ECHARTS__DEFAULT__RENDERER__, defaultRenderer);
+ defaultCoarsePointer = retrieve2(root.__ECHARTS__DEFAULT__COARSE_POINTER, defaultCoarsePointer);
+ defaultUseDirtyRect = retrieve2(root.__ECHARTS__DEFAULT__USE_DIRTY_RECT__, defaultUseDirtyRect);
+ }
+ }
+ if (opts.ssr) {
+ registerSSRDataGetter(function(el) {
+ var ecData = getECData(el);
+ var dataIndex = ecData.dataIndex;
+ if (dataIndex == null) {
+ return;
+ }
+ var hashMap = createHashMap();
+ hashMap.set("series_index", ecData.seriesIndex);
+ hashMap.set("data_index", dataIndex);
+ ecData.ssrType && hashMap.set("ssr_type", ecData.ssrType);
+ return hashMap;
+ });
+ }
+ var zr = _this._zr = init(dom, {
+ renderer: opts.renderer || defaultRenderer,
+ devicePixelRatio: opts.devicePixelRatio,
+ width: opts.width,
+ height: opts.height,
+ ssr: opts.ssr,
+ useDirtyRect: retrieve2(opts.useDirtyRect, defaultUseDirtyRect),
+ useCoarsePointer: retrieve2(opts.useCoarsePointer, defaultCoarsePointer),
+ pointerSize: opts.pointerSize
+ });
+ _this._ssr = opts.ssr;
+ _this._throttledZrFlush = throttle(bind(zr.flush, zr), 17);
+ theme2 = clone(theme2);
+ theme2 && globalBackwardCompat(theme2, true);
+ _this._theme = theme2;
+ _this._locale = createLocaleObject(opts.locale || SYSTEM_LANG);
+ _this._coordSysMgr = new CoordinateSystem_default();
+ var api = _this._api = createExtensionAPI(_this);
+ function prioritySortFunc(a, b) {
+ return a.__prio - b.__prio;
+ }
+ sort(visualFuncs, prioritySortFunc);
+ sort(dataProcessorFuncs, prioritySortFunc);
+ _this._scheduler = new Scheduler_default(_this, api, dataProcessorFuncs, visualFuncs);
+ _this._messageCenter = new MessageCenter();
+ _this._initEvents();
+ _this.resize = bind(_this.resize, _this);
+ zr.animation.on("frame", _this._onframe, _this);
+ bindRenderedEvent(zr, _this);
+ bindMouseEvent(zr, _this);
+ setAsPrimitive(_this);
+ return _this;
+ }
+ ECharts2.prototype._onframe = function() {
+ if (this._disposed) {
+ return;
+ }
+ applyChangedStates(this);
+ var scheduler = this._scheduler;
+ if (this[PENDING_UPDATE]) {
+ var silent = this[PENDING_UPDATE].silent;
+ this[IN_MAIN_PROCESS_KEY] = true;
+ try {
+ prepare(this);
+ updateMethods.update.call(this, null, this[PENDING_UPDATE].updateParams);
+ } catch (e2) {
+ this[IN_MAIN_PROCESS_KEY] = false;
+ this[PENDING_UPDATE] = null;
+ throw e2;
+ }
+ this._zr.flush();
+ this[IN_MAIN_PROCESS_KEY] = false;
+ this[PENDING_UPDATE] = null;
+ flushPendingActions.call(this, silent);
+ triggerUpdatedEvent.call(this, silent);
+ } else if (scheduler.unfinished) {
+ var remainTime = TEST_FRAME_REMAIN_TIME;
+ var ecModel = this._model;
+ var api = this._api;
+ scheduler.unfinished = false;
+ do {
+ var startTime = +new Date();
+ scheduler.performSeriesTasks(ecModel);
+ scheduler.performDataProcessorTasks(ecModel);
+ updateStreamModes(this, ecModel);
+ scheduler.performVisualTasks(ecModel);
+ renderSeries(this, this._model, api, "remain", {});
+ remainTime -= +new Date() - startTime;
+ } while (remainTime > 0 && scheduler.unfinished);
+ if (!scheduler.unfinished) {
+ this._zr.flush();
+ }
+ }
+ };
+ ECharts2.prototype.getDom = function() {
+ return this._dom;
+ };
+ ECharts2.prototype.getId = function() {
+ return this.id;
+ };
+ ECharts2.prototype.getZr = function() {
+ return this._zr;
+ };
+ ECharts2.prototype.isSSR = function() {
+ return this._ssr;
+ };
+ ECharts2.prototype.setOption = function(option, notMerge, lazyUpdate) {
+ if (this[IN_MAIN_PROCESS_KEY]) {
+ if (true) {
+ error("`setOption` should not be called during main process.");
+ }
+ return;
+ }
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ var silent;
+ var replaceMerge;
+ var transitionOpt;
+ if (isObject(notMerge)) {
+ lazyUpdate = notMerge.lazyUpdate;
+ silent = notMerge.silent;
+ replaceMerge = notMerge.replaceMerge;
+ transitionOpt = notMerge.transition;
+ notMerge = notMerge.notMerge;
+ }
+ this[IN_MAIN_PROCESS_KEY] = true;
+ if (!this._model || notMerge) {
+ var optionManager = new OptionManager_default(this._api);
+ var theme2 = this._theme;
+ var ecModel = this._model = new Global_default();
+ ecModel.scheduler = this._scheduler;
+ ecModel.ssr = this._ssr;
+ ecModel.init(null, null, null, theme2, this._locale, optionManager);
+ }
+ this._model.setOption(option, {
+ replaceMerge
+ }, optionPreprocessorFuncs);
+ var updateParams = {
+ seriesTransition: transitionOpt,
+ optionChanged: true
+ };
+ if (lazyUpdate) {
+ this[PENDING_UPDATE] = {
+ silent,
+ updateParams
+ };
+ this[IN_MAIN_PROCESS_KEY] = false;
+ this.getZr().wakeUp();
+ } else {
+ try {
+ prepare(this);
+ updateMethods.update.call(this, null, updateParams);
+ } catch (e2) {
+ this[PENDING_UPDATE] = null;
+ this[IN_MAIN_PROCESS_KEY] = false;
+ throw e2;
+ }
+ if (!this._ssr) {
+ this._zr.flush();
+ }
+ this[PENDING_UPDATE] = null;
+ this[IN_MAIN_PROCESS_KEY] = false;
+ flushPendingActions.call(this, silent);
+ triggerUpdatedEvent.call(this, silent);
+ }
+ };
+ ECharts2.prototype.setTheme = function() {
+ deprecateLog("ECharts#setTheme() is DEPRECATED in ECharts 3.0");
+ };
+ ECharts2.prototype.getModel = function() {
+ return this._model;
+ };
+ ECharts2.prototype.getOption = function() {
+ return this._model && this._model.getOption();
+ };
+ ECharts2.prototype.getWidth = function() {
+ return this._zr.getWidth();
+ };
+ ECharts2.prototype.getHeight = function() {
+ return this._zr.getHeight();
+ };
+ ECharts2.prototype.getDevicePixelRatio = function() {
+ return this._zr.painter.dpr || env_default.hasGlobalWindow && window.devicePixelRatio || 1;
+ };
+ ECharts2.prototype.getRenderedCanvas = function(opts) {
+ if (true) {
+ deprecateReplaceLog("getRenderedCanvas", "renderToCanvas");
+ }
+ return this.renderToCanvas(opts);
+ };
+ ECharts2.prototype.renderToCanvas = function(opts) {
+ opts = opts || {};
+ var painter = this._zr.painter;
+ if (true) {
+ if (painter.type !== "canvas") {
+ throw new Error("renderToCanvas can only be used in the canvas renderer.");
+ }
+ }
+ return painter.getRenderedCanvas({
+ backgroundColor: opts.backgroundColor || this._model.get("backgroundColor"),
+ pixelRatio: opts.pixelRatio || this.getDevicePixelRatio()
+ });
+ };
+ ECharts2.prototype.renderToSVGString = function(opts) {
+ opts = opts || {};
+ var painter = this._zr.painter;
+ if (true) {
+ if (painter.type !== "svg") {
+ throw new Error("renderToSVGString can only be used in the svg renderer.");
+ }
+ }
+ return painter.renderToString({
+ useViewBox: opts.useViewBox
+ });
+ };
+ ECharts2.prototype.getSvgDataURL = function() {
+ if (!env_default.svgSupported) {
+ return;
+ }
+ var zr = this._zr;
+ var list = zr.storage.getDisplayList();
+ each(list, function(el) {
+ el.stopAnimation(null, true);
+ });
+ return zr.painter.toDataURL();
+ };
+ ECharts2.prototype.getDataURL = function(opts) {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ opts = opts || {};
+ var excludeComponents = opts.excludeComponents;
+ var ecModel = this._model;
+ var excludesComponentViews = [];
+ var self2 = this;
+ each(excludeComponents, function(componentType) {
+ ecModel.eachComponent({
+ mainType: componentType
+ }, function(component) {
+ var view = self2._componentsMap[component.__viewId];
+ if (!view.group.ignore) {
+ excludesComponentViews.push(view);
+ view.group.ignore = true;
+ }
+ });
+ });
+ var url = this._zr.painter.getType() === "svg" ? this.getSvgDataURL() : this.renderToCanvas(opts).toDataURL("image/" + (opts && opts.type || "png"));
+ each(excludesComponentViews, function(view) {
+ view.group.ignore = false;
+ });
+ return url;
+ };
+ ECharts2.prototype.getConnectedDataURL = function(opts) {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ var isSvg = opts.type === "svg";
+ var groupId = this.group;
+ var mathMin12 = Math.min;
+ var mathMax12 = Math.max;
+ var MAX_NUMBER = Infinity;
+ if (connectedGroups[groupId]) {
+ var left_1 = MAX_NUMBER;
+ var top_1 = MAX_NUMBER;
+ var right_1 = -MAX_NUMBER;
+ var bottom_1 = -MAX_NUMBER;
+ var canvasList_1 = [];
+ var dpr_1 = opts && opts.pixelRatio || this.getDevicePixelRatio();
+ each(instances2, function(chart, id) {
+ if (chart.group === groupId) {
+ var canvas = isSvg ? chart.getZr().painter.getSvgDom().innerHTML : chart.renderToCanvas(clone(opts));
+ var boundingRect = chart.getDom().getBoundingClientRect();
+ left_1 = mathMin12(boundingRect.left, left_1);
+ top_1 = mathMin12(boundingRect.top, top_1);
+ right_1 = mathMax12(boundingRect.right, right_1);
+ bottom_1 = mathMax12(boundingRect.bottom, bottom_1);
+ canvasList_1.push({
+ dom: canvas,
+ left: boundingRect.left,
+ top: boundingRect.top
+ });
+ }
+ });
+ left_1 *= dpr_1;
+ top_1 *= dpr_1;
+ right_1 *= dpr_1;
+ bottom_1 *= dpr_1;
+ var width = right_1 - left_1;
+ var height = bottom_1 - top_1;
+ var targetCanvas = platformApi.createCanvas();
+ var zr_1 = init(targetCanvas, {
+ renderer: isSvg ? "svg" : "canvas"
+ });
+ zr_1.resize({
+ width,
+ height
+ });
+ if (isSvg) {
+ var content_1 = "";
+ each(canvasList_1, function(item) {
+ var x = item.left - left_1;
+ var y = item.top - top_1;
+ content_1 += '' + item.dom + "";
+ });
+ zr_1.painter.getSvgRoot().innerHTML = content_1;
+ if (opts.connectedBackgroundColor) {
+ zr_1.painter.setBackgroundColor(opts.connectedBackgroundColor);
+ }
+ zr_1.refreshImmediately();
+ return zr_1.painter.toDataURL();
+ } else {
+ if (opts.connectedBackgroundColor) {
+ zr_1.add(new Rect_default({
+ shape: {
+ x: 0,
+ y: 0,
+ width,
+ height
+ },
+ style: {
+ fill: opts.connectedBackgroundColor
+ }
+ }));
+ }
+ each(canvasList_1, function(item) {
+ var img = new Image_default({
+ style: {
+ x: item.left * dpr_1 - left_1,
+ y: item.top * dpr_1 - top_1,
+ image: item.dom
+ }
+ });
+ zr_1.add(img);
+ });
+ zr_1.refreshImmediately();
+ return targetCanvas.toDataURL("image/" + (opts && opts.type || "png"));
+ }
+ } else {
+ return this.getDataURL(opts);
+ }
+ };
+ ECharts2.prototype.convertToPixel = function(finder, value) {
+ return doConvertPixel(this, "convertToPixel", finder, value);
+ };
+ ECharts2.prototype.convertFromPixel = function(finder, value) {
+ return doConvertPixel(this, "convertFromPixel", finder, value);
+ };
+ ECharts2.prototype.containPixel = function(finder, value) {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ var ecModel = this._model;
+ var result;
+ var findResult = parseFinder(ecModel, finder);
+ each(findResult, function(models, key) {
+ key.indexOf("Models") >= 0 && each(models, function(model) {
+ var coordSys = model.coordinateSystem;
+ if (coordSys && coordSys.containPoint) {
+ result = result || !!coordSys.containPoint(value);
+ } else if (key === "seriesModels") {
+ var view = this._chartsMap[model.__viewId];
+ if (view && view.containPoint) {
+ result = result || view.containPoint(value, model);
+ } else {
+ if (true) {
+ warn(key + ": " + (view ? "The found component do not support containPoint." : "No view mapping to the found component."));
+ }
+ }
+ } else {
+ if (true) {
+ warn(key + ": containPoint is not supported");
+ }
+ }
+ }, this);
+ }, this);
+ return !!result;
+ };
+ ECharts2.prototype.getVisual = function(finder, visualType) {
+ var ecModel = this._model;
+ var parsedFinder = parseFinder(ecModel, finder, {
+ defaultMainType: "series"
+ });
+ var seriesModel = parsedFinder.seriesModel;
+ if (true) {
+ if (!seriesModel) {
+ warn("There is no specified series model");
+ }
+ }
+ var data = seriesModel.getData();
+ var dataIndexInside = parsedFinder.hasOwnProperty("dataIndexInside") ? parsedFinder.dataIndexInside : parsedFinder.hasOwnProperty("dataIndex") ? data.indexOfRawIndex(parsedFinder.dataIndex) : null;
+ return dataIndexInside != null ? getItemVisualFromData(data, dataIndexInside, visualType) : getVisualFromData(data, visualType);
+ };
+ ECharts2.prototype.getViewOfComponentModel = function(componentModel) {
+ return this._componentsMap[componentModel.__viewId];
+ };
+ ECharts2.prototype.getViewOfSeriesModel = function(seriesModel) {
+ return this._chartsMap[seriesModel.__viewId];
+ };
+ ECharts2.prototype._initEvents = function() {
+ var _this = this;
+ each(MOUSE_EVENT_NAMES, function(eveName) {
+ var handler = function(e2) {
+ var ecModel = _this.getModel();
+ var el = e2.target;
+ var params;
+ var isGlobalOut = eveName === "globalout";
+ if (isGlobalOut) {
+ params = {};
+ } else {
+ el && findEventDispatcher(el, function(parent) {
+ var ecData = getECData(parent);
+ if (ecData && ecData.dataIndex != null) {
+ var dataModel = ecData.dataModel || ecModel.getSeriesByIndex(ecData.seriesIndex);
+ params = dataModel && dataModel.getDataParams(ecData.dataIndex, ecData.dataType, el) || {};
+ return true;
+ } else if (ecData.eventData) {
+ params = extend({}, ecData.eventData);
+ return true;
+ }
+ }, true);
+ }
+ if (params) {
+ var componentType = params.componentType;
+ var componentIndex = params.componentIndex;
+ if (componentType === "markLine" || componentType === "markPoint" || componentType === "markArea") {
+ componentType = "series";
+ componentIndex = params.seriesIndex;
+ }
+ var model = componentType && componentIndex != null && ecModel.getComponent(componentType, componentIndex);
+ var view = model && _this[model.mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId];
+ if (true) {
+ if (!isGlobalOut && !(model && view)) {
+ warn("model or view can not be found by params");
+ }
+ }
+ params.event = e2;
+ params.type = eveName;
+ _this._$eventProcessor.eventInfo = {
+ targetEl: el,
+ packedEvent: params,
+ model,
+ view
+ };
+ _this.trigger(eveName, params);
+ }
+ };
+ handler.zrEventfulCallAtLast = true;
+ _this._zr.on(eveName, handler, _this);
+ });
+ each(eventActionMap, function(actionType, eventType) {
+ _this._messageCenter.on(eventType, function(event) {
+ this.trigger(eventType, event);
+ }, _this);
+ });
+ each(["selectchanged"], function(eventType) {
+ _this._messageCenter.on(eventType, function(event) {
+ this.trigger(eventType, event);
+ }, _this);
+ });
+ handleLegacySelectEvents(this._messageCenter, this, this._api);
+ };
+ ECharts2.prototype.isDisposed = function() {
+ return this._disposed;
+ };
+ ECharts2.prototype.clear = function() {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ this.setOption({
+ series: []
+ }, true);
+ };
+ ECharts2.prototype.dispose = function() {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ this._disposed = true;
+ var dom = this.getDom();
+ if (dom) {
+ setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, "");
+ }
+ var chart = this;
+ var api = chart._api;
+ var ecModel = chart._model;
+ each(chart._componentsViews, function(component) {
+ component.dispose(ecModel, api);
+ });
+ each(chart._chartsViews, function(chart2) {
+ chart2.dispose(ecModel, api);
+ });
+ chart._zr.dispose();
+ chart._dom = chart._model = chart._chartsMap = chart._componentsMap = chart._chartsViews = chart._componentsViews = chart._scheduler = chart._api = chart._zr = chart._throttledZrFlush = chart._theme = chart._coordSysMgr = chart._messageCenter = null;
+ delete instances2[chart.id];
+ };
+ ECharts2.prototype.resize = function(opts) {
+ if (this[IN_MAIN_PROCESS_KEY]) {
+ if (true) {
+ error("`resize` should not be called during main process.");
+ }
+ return;
+ }
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ this._zr.resize(opts);
+ var ecModel = this._model;
+ this._loadingFX && this._loadingFX.resize();
+ if (!ecModel) {
+ return;
+ }
+ var needPrepare = ecModel.resetOption("media");
+ var silent = opts && opts.silent;
+ if (this[PENDING_UPDATE]) {
+ if (silent == null) {
+ silent = this[PENDING_UPDATE].silent;
+ }
+ needPrepare = true;
+ this[PENDING_UPDATE] = null;
+ }
+ this[IN_MAIN_PROCESS_KEY] = true;
+ try {
+ needPrepare && prepare(this);
+ updateMethods.update.call(this, {
+ type: "resize",
+ animation: extend({
+ duration: 0
+ }, opts && opts.animation)
+ });
+ } catch (e2) {
+ this[IN_MAIN_PROCESS_KEY] = false;
+ throw e2;
+ }
+ this[IN_MAIN_PROCESS_KEY] = false;
+ flushPendingActions.call(this, silent);
+ triggerUpdatedEvent.call(this, silent);
+ };
+ ECharts2.prototype.showLoading = function(name, cfg) {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ if (isObject(name)) {
+ cfg = name;
+ name = "";
+ }
+ name = name || "default";
+ this.hideLoading();
+ if (!loadingEffects[name]) {
+ if (true) {
+ warn("Loading effects " + name + " not exists.");
+ }
+ return;
+ }
+ var el = loadingEffects[name](this._api, cfg);
+ var zr = this._zr;
+ this._loadingFX = el;
+ zr.add(el);
+ };
+ ECharts2.prototype.hideLoading = function() {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ this._loadingFX && this._zr.remove(this._loadingFX);
+ this._loadingFX = null;
+ };
+ ECharts2.prototype.makeActionFromEvent = function(eventObj) {
+ var payload = extend({}, eventObj);
+ payload.type = eventActionMap[eventObj.type];
+ return payload;
+ };
+ ECharts2.prototype.dispatchAction = function(payload, opt) {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ if (!isObject(opt)) {
+ opt = {
+ silent: !!opt
+ };
+ }
+ if (!actions[payload.type]) {
+ return;
+ }
+ if (!this._model) {
+ return;
+ }
+ if (this[IN_MAIN_PROCESS_KEY]) {
+ this._pendingActions.push(payload);
+ return;
+ }
+ var silent = opt.silent;
+ doDispatchAction.call(this, payload, silent);
+ var flush = opt.flush;
+ if (flush) {
+ this._zr.flush();
+ } else if (flush !== false && env_default.browser.weChat) {
+ this._throttledZrFlush();
+ }
+ flushPendingActions.call(this, silent);
+ triggerUpdatedEvent.call(this, silent);
+ };
+ ECharts2.prototype.updateLabelLayout = function() {
+ lifecycle_default.trigger("series:layoutlabels", this._model, this._api, {
+ updatedSeries: []
+ });
+ };
+ ECharts2.prototype.appendData = function(params) {
+ if (this._disposed) {
+ disposedWarning(this.id);
+ return;
+ }
+ var seriesIndex = params.seriesIndex;
+ var ecModel = this.getModel();
+ var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
+ if (true) {
+ assert(params.data && seriesModel);
+ }
+ seriesModel.appendData(params);
+ this._scheduler.unfinished = true;
+ this.getZr().wakeUp();
+ };
+ ECharts2.internalField = function() {
+ prepare = function(ecIns) {
+ var scheduler = ecIns._scheduler;
+ scheduler.restorePipelines(ecIns._model);
+ scheduler.prepareStageTasks();
+ prepareView(ecIns, true);
+ prepareView(ecIns, false);
+ scheduler.plan();
+ };
+ prepareView = function(ecIns, isComponent) {
+ var ecModel = ecIns._model;
+ var scheduler = ecIns._scheduler;
+ var viewList = isComponent ? ecIns._componentsViews : ecIns._chartsViews;
+ var viewMap = isComponent ? ecIns._componentsMap : ecIns._chartsMap;
+ var zr = ecIns._zr;
+ var api = ecIns._api;
+ for (var i = 0; i < viewList.length; i++) {
+ viewList[i].__alive = false;
+ }
+ isComponent ? ecModel.eachComponent(function(componentType, model) {
+ componentType !== "series" && doPrepare(model);
+ }) : ecModel.eachSeries(doPrepare);
+ function doPrepare(model) {
+ var requireNewView = model.__requireNewView;
+ model.__requireNewView = false;
+ var viewId = "_ec_" + model.id + "_" + model.type;
+ var view2 = !requireNewView && viewMap[viewId];
+ if (!view2) {
+ var classType = parseClassType(model.type);
+ var Clazz = isComponent ? Component_default2.getClass(classType.main, classType.sub) : Chart_default.getClass(classType.sub);
+ if (true) {
+ assert(Clazz, classType.sub + " does not exist.");
+ }
+ view2 = new Clazz();
+ view2.init(ecModel, api);
+ viewMap[viewId] = view2;
+ viewList.push(view2);
+ zr.add(view2.group);
+ }
+ model.__viewId = view2.__id = viewId;
+ view2.__alive = true;
+ view2.__model = model;
+ view2.group.__ecComponentInfo = {
+ mainType: model.mainType,
+ index: model.componentIndex
+ };
+ !isComponent && scheduler.prepareView(view2, model, ecModel, api);
+ }
+ for (var i = 0; i < viewList.length; ) {
+ var view = viewList[i];
+ if (!view.__alive) {
+ !isComponent && view.renderTask.dispose();
+ zr.remove(view.group);
+ view.dispose(ecModel, api);
+ viewList.splice(i, 1);
+ if (viewMap[view.__id] === view) {
+ delete viewMap[view.__id];
+ }
+ view.__id = view.group.__ecComponentInfo = null;
+ } else {
+ i++;
+ }
+ }
+ };
+ updateDirectly = function(ecIns, method, payload, mainType, subType) {
+ var ecModel = ecIns._model;
+ ecModel.setUpdatePayload(payload);
+ if (!mainType) {
+ each([].concat(ecIns._componentsViews).concat(ecIns._chartsViews), callView);
+ return;
+ }
+ var query = {};
+ query[mainType + "Id"] = payload[mainType + "Id"];
+ query[mainType + "Index"] = payload[mainType + "Index"];
+ query[mainType + "Name"] = payload[mainType + "Name"];
+ var condition = {
+ mainType,
+ query
+ };
+ subType && (condition.subType = subType);
+ var excludeSeriesId = payload.excludeSeriesId;
+ var excludeSeriesIdMap;
+ if (excludeSeriesId != null) {
+ excludeSeriesIdMap = createHashMap();
+ each(normalizeToArray(excludeSeriesId), function(id) {
+ var modelId = convertOptionIdName(id, null);
+ if (modelId != null) {
+ excludeSeriesIdMap.set(modelId, true);
+ }
+ });
+ }
+ ecModel && ecModel.eachComponent(condition, function(model) {
+ var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;
+ if (isExcluded) {
+ return;
+ }
+ ;
+ if (isHighDownPayload(payload)) {
+ if (model instanceof Series_default) {
+ if (payload.type === HIGHLIGHT_ACTION_TYPE && !payload.notBlur && !model.get(["emphasis", "disabled"])) {
+ blurSeriesFromHighlightPayload(model, payload, ecIns._api);
+ }
+ } else {
+ var _a2 = findComponentHighDownDispatchers(model.mainType, model.componentIndex, payload.name, ecIns._api), focusSelf = _a2.focusSelf, dispatchers = _a2.dispatchers;
+ if (payload.type === HIGHLIGHT_ACTION_TYPE && focusSelf && !payload.notBlur) {
+ blurComponent(model.mainType, model.componentIndex, ecIns._api);
+ }
+ if (dispatchers) {
+ each(dispatchers, function(dispatcher) {
+ payload.type === HIGHLIGHT_ACTION_TYPE ? enterEmphasis(dispatcher) : leaveEmphasis(dispatcher);
+ });
+ }
+ }
+ } else if (isSelectChangePayload(payload)) {
+ if (model instanceof Series_default) {
+ toggleSelectionFromPayload(model, payload, ecIns._api);
+ updateSeriesElementSelection(model);
+ markStatusToUpdate(ecIns);
+ }
+ }
+ }, ecIns);
+ ecModel && ecModel.eachComponent(condition, function(model) {
+ var isExcluded = excludeSeriesIdMap && excludeSeriesIdMap.get(model.id) != null;
+ if (isExcluded) {
+ return;
+ }
+ ;
+ callView(ecIns[mainType === "series" ? "_chartsMap" : "_componentsMap"][model.__viewId]);
+ }, ecIns);
+ function callView(view) {
+ view && view.__alive && view[method] && view[method](view.__model, ecModel, ecIns._api, payload);
+ }
+ };
+ updateMethods = {
+ prepareAndUpdate: function(payload) {
+ prepare(this);
+ updateMethods.update.call(this, payload, {
+ optionChanged: payload.newOption != null
+ });
+ },
+ update: function(payload, updateParams) {
+ var ecModel = this._model;
+ var api = this._api;
+ var zr = this._zr;
+ var coordSysMgr = this._coordSysMgr;
+ var scheduler = this._scheduler;
+ if (!ecModel) {
+ return;
+ }
+ ecModel.setUpdatePayload(payload);
+ scheduler.restoreData(ecModel, payload);
+ scheduler.performSeriesTasks(ecModel);
+ coordSysMgr.create(ecModel, api);
+ scheduler.performDataProcessorTasks(ecModel, payload);
+ updateStreamModes(this, ecModel);
+ coordSysMgr.update(ecModel, api);
+ clearColorPalette(ecModel);
+ scheduler.performVisualTasks(ecModel, payload);
+ render(this, ecModel, api, payload, updateParams);
+ var backgroundColor2 = ecModel.get("backgroundColor") || "transparent";
+ var darkMode = ecModel.get("darkMode");
+ zr.setBackgroundColor(backgroundColor2);
+ if (darkMode != null && darkMode !== "auto") {
+ zr.setDarkMode(darkMode);
+ }
+ lifecycle_default.trigger("afterupdate", ecModel, api);
+ },
+ updateTransform: function(payload) {
+ var _this = this;
+ var ecModel = this._model;
+ var api = this._api;
+ if (!ecModel) {
+ return;
+ }
+ ecModel.setUpdatePayload(payload);
+ var componentDirtyList = [];
+ ecModel.eachComponent(function(componentType, componentModel) {
+ if (componentType === "series") {
+ return;
+ }
+ var componentView = _this.getViewOfComponentModel(componentModel);
+ if (componentView && componentView.__alive) {
+ if (componentView.updateTransform) {
+ var result = componentView.updateTransform(componentModel, ecModel, api, payload);
+ result && result.update && componentDirtyList.push(componentView);
+ } else {
+ componentDirtyList.push(componentView);
+ }
+ }
+ });
+ var seriesDirtyMap = createHashMap();
+ ecModel.eachSeries(function(seriesModel) {
+ var chartView = _this._chartsMap[seriesModel.__viewId];
+ if (chartView.updateTransform) {
+ var result = chartView.updateTransform(seriesModel, ecModel, api, payload);
+ result && result.update && seriesDirtyMap.set(seriesModel.uid, 1);
+ } else {
+ seriesDirtyMap.set(seriesModel.uid, 1);
+ }
+ });
+ clearColorPalette(ecModel);
+ this._scheduler.performVisualTasks(ecModel, payload, {
+ setDirty: true,
+ dirtyMap: seriesDirtyMap
+ });
+ renderSeries(this, ecModel, api, payload, {}, seriesDirtyMap);
+ lifecycle_default.trigger("afterupdate", ecModel, api);
+ },
+ updateView: function(payload) {
+ var ecModel = this._model;
+ if (!ecModel) {
+ return;
+ }
+ ecModel.setUpdatePayload(payload);
+ Chart_default.markUpdateMethod(payload, "updateView");
+ clearColorPalette(ecModel);
+ this._scheduler.performVisualTasks(ecModel, payload, {
+ setDirty: true
+ });
+ render(this, ecModel, this._api, payload, {});
+ lifecycle_default.trigger("afterupdate", ecModel, this._api);
+ },
+ updateVisual: function(payload) {
+ var _this = this;
+ var ecModel = this._model;
+ if (!ecModel) {
+ return;
+ }
+ ecModel.setUpdatePayload(payload);
+ ecModel.eachSeries(function(seriesModel) {
+ seriesModel.getData().clearAllVisual();
+ });
+ Chart_default.markUpdateMethod(payload, "updateVisual");
+ clearColorPalette(ecModel);
+ this._scheduler.performVisualTasks(ecModel, payload, {
+ visualType: "visual",
+ setDirty: true
+ });
+ ecModel.eachComponent(function(componentType, componentModel) {
+ if (componentType !== "series") {
+ var componentView = _this.getViewOfComponentModel(componentModel);
+ componentView && componentView.__alive && componentView.updateVisual(componentModel, ecModel, _this._api, payload);
+ }
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ var chartView = _this._chartsMap[seriesModel.__viewId];
+ chartView.updateVisual(seriesModel, ecModel, _this._api, payload);
+ });
+ lifecycle_default.trigger("afterupdate", ecModel, this._api);
+ },
+ updateLayout: function(payload) {
+ updateMethods.update.call(this, payload);
+ }
+ };
+ doConvertPixel = function(ecIns, methodName, finder, value) {
+ if (ecIns._disposed) {
+ disposedWarning(ecIns.id);
+ return;
+ }
+ var ecModel = ecIns._model;
+ var coordSysList = ecIns._coordSysMgr.getCoordinateSystems();
+ var result;
+ var parsedFinder = parseFinder(ecModel, finder);
+ for (var i = 0; i < coordSysList.length; i++) {
+ var coordSys = coordSysList[i];
+ if (coordSys[methodName] && (result = coordSys[methodName](ecModel, parsedFinder, value)) != null) {
+ return result;
+ }
+ }
+ if (true) {
+ warn("No coordinate system that supports " + methodName + " found by the given finder.");
+ }
+ };
+ updateStreamModes = function(ecIns, ecModel) {
+ var chartsMap = ecIns._chartsMap;
+ var scheduler = ecIns._scheduler;
+ ecModel.eachSeries(function(seriesModel) {
+ scheduler.updateStreamModes(seriesModel, chartsMap[seriesModel.__viewId]);
+ });
+ };
+ doDispatchAction = function(payload, silent) {
+ var _this = this;
+ var ecModel = this.getModel();
+ var payloadType = payload.type;
+ var escapeConnect = payload.escapeConnect;
+ var actionWrap = actions[payloadType];
+ var actionInfo3 = actionWrap.actionInfo;
+ var cptTypeTmp = (actionInfo3.update || "update").split(":");
+ var updateMethod = cptTypeTmp.pop();
+ var cptType = cptTypeTmp[0] != null && parseClassType(cptTypeTmp[0]);
+ this[IN_MAIN_PROCESS_KEY] = true;
+ var payloads = [payload];
+ var batched = false;
+ if (payload.batch) {
+ batched = true;
+ payloads = map(payload.batch, function(item) {
+ item = defaults(extend({}, item), payload);
+ item.batch = null;
+ return item;
+ });
+ }
+ var eventObjBatch = [];
+ var eventObj;
+ var isSelectChange = isSelectChangePayload(payload);
+ var isHighDown = isHighDownPayload(payload);
+ if (isHighDown) {
+ allLeaveBlur(this._api);
+ }
+ each(payloads, function(batchItem) {
+ eventObj = actionWrap.action(batchItem, _this._model, _this._api);
+ eventObj = eventObj || extend({}, batchItem);
+ eventObj.type = actionInfo3.event || eventObj.type;
+ eventObjBatch.push(eventObj);
+ if (isHighDown) {
+ var _a2 = preParseFinder(payload), queryOptionMap = _a2.queryOptionMap, mainTypeSpecified = _a2.mainTypeSpecified;
+ var componentMainType = mainTypeSpecified ? queryOptionMap.keys()[0] : "series";
+ updateDirectly(_this, updateMethod, batchItem, componentMainType);
+ markStatusToUpdate(_this);
+ } else if (isSelectChange) {
+ updateDirectly(_this, updateMethod, batchItem, "series");
+ markStatusToUpdate(_this);
+ } else if (cptType) {
+ updateDirectly(_this, updateMethod, batchItem, cptType.main, cptType.sub);
+ }
+ });
+ if (updateMethod !== "none" && !isHighDown && !isSelectChange && !cptType) {
+ try {
+ if (this[PENDING_UPDATE]) {
+ prepare(this);
+ updateMethods.update.call(this, payload);
+ this[PENDING_UPDATE] = null;
+ } else {
+ updateMethods[updateMethod].call(this, payload);
+ }
+ } catch (e2) {
+ this[IN_MAIN_PROCESS_KEY] = false;
+ throw e2;
+ }
+ }
+ if (batched) {
+ eventObj = {
+ type: actionInfo3.event || payloadType,
+ escapeConnect,
+ batch: eventObjBatch
+ };
+ } else {
+ eventObj = eventObjBatch[0];
+ }
+ this[IN_MAIN_PROCESS_KEY] = false;
+ if (!silent) {
+ var messageCenter = this._messageCenter;
+ messageCenter.trigger(eventObj.type, eventObj);
+ if (isSelectChange) {
+ var newObj = {
+ type: "selectchanged",
+ escapeConnect,
+ selected: getAllSelectedIndices(ecModel),
+ isFromClick: payload.isFromClick || false,
+ fromAction: payload.type,
+ fromActionPayload: payload
+ };
+ messageCenter.trigger(newObj.type, newObj);
+ }
+ }
+ };
+ flushPendingActions = function(silent) {
+ var pendingActions = this._pendingActions;
+ while (pendingActions.length) {
+ var payload = pendingActions.shift();
+ doDispatchAction.call(this, payload, silent);
+ }
+ };
+ triggerUpdatedEvent = function(silent) {
+ !silent && this.trigger("updated");
+ };
+ bindRenderedEvent = function(zr, ecIns) {
+ zr.on("rendered", function(params) {
+ ecIns.trigger("rendered", params);
+ if (zr.animation.isFinished() && !ecIns[PENDING_UPDATE] && !ecIns._scheduler.unfinished && !ecIns._pendingActions.length) {
+ ecIns.trigger("finished");
+ }
+ });
+ };
+ bindMouseEvent = function(zr, ecIns) {
+ zr.on("mouseover", function(e2) {
+ var el = e2.target;
+ var dispatcher = findEventDispatcher(el, isHighDownDispatcher);
+ if (dispatcher) {
+ handleGlobalMouseOverForHighDown(dispatcher, e2, ecIns._api);
+ markStatusToUpdate(ecIns);
+ }
+ }).on("mouseout", function(e2) {
+ var el = e2.target;
+ var dispatcher = findEventDispatcher(el, isHighDownDispatcher);
+ if (dispatcher) {
+ handleGlobalMouseOutForHighDown(dispatcher, e2, ecIns._api);
+ markStatusToUpdate(ecIns);
+ }
+ }).on("click", function(e2) {
+ var el = e2.target;
+ var dispatcher = findEventDispatcher(el, function(target) {
+ return getECData(target).dataIndex != null;
+ }, true);
+ if (dispatcher) {
+ var actionType = dispatcher.selected ? "unselect" : "select";
+ var ecData = getECData(dispatcher);
+ ecIns._api.dispatchAction({
+ type: actionType,
+ dataType: ecData.dataType,
+ dataIndexInside: ecData.dataIndex,
+ seriesIndex: ecData.seriesIndex,
+ isFromClick: true
+ });
+ }
+ });
+ };
+ function clearColorPalette(ecModel) {
+ ecModel.clearColorPalette();
+ ecModel.eachSeries(function(seriesModel) {
+ seriesModel.clearColorPalette();
+ });
+ }
+ ;
+ function allocateZlevels(ecModel) {
+ ;
+ var componentZLevels = [];
+ var seriesZLevels = [];
+ var hasSeparateZLevel = false;
+ ecModel.eachComponent(function(componentType, componentModel) {
+ var zlevel = componentModel.get("zlevel") || 0;
+ var z = componentModel.get("z") || 0;
+ var zlevelKey = componentModel.getZLevelKey();
+ hasSeparateZLevel = hasSeparateZLevel || !!zlevelKey;
+ (componentType === "series" ? seriesZLevels : componentZLevels).push({
+ zlevel,
+ z,
+ idx: componentModel.componentIndex,
+ type: componentType,
+ key: zlevelKey
+ });
+ });
+ if (hasSeparateZLevel) {
+ var zLevels = componentZLevels.concat(seriesZLevels);
+ var lastSeriesZLevel_1;
+ var lastSeriesKey_1;
+ sort(zLevels, function(a, b) {
+ if (a.zlevel === b.zlevel) {
+ return a.z - b.z;
+ }
+ return a.zlevel - b.zlevel;
+ });
+ each(zLevels, function(item) {
+ var componentModel = ecModel.getComponent(item.type, item.idx);
+ var zlevel = item.zlevel;
+ var key = item.key;
+ if (lastSeriesZLevel_1 != null) {
+ zlevel = Math.max(lastSeriesZLevel_1, zlevel);
+ }
+ if (key) {
+ if (zlevel === lastSeriesZLevel_1 && key !== lastSeriesKey_1) {
+ zlevel++;
+ }
+ lastSeriesKey_1 = key;
+ } else if (lastSeriesKey_1) {
+ if (zlevel === lastSeriesZLevel_1) {
+ zlevel++;
+ }
+ lastSeriesKey_1 = "";
+ }
+ lastSeriesZLevel_1 = zlevel;
+ componentModel.setZLevel(zlevel);
+ });
+ }
+ }
+ render = function(ecIns, ecModel, api, payload, updateParams) {
+ allocateZlevels(ecModel);
+ renderComponents(ecIns, ecModel, api, payload, updateParams);
+ each(ecIns._chartsViews, function(chart) {
+ chart.__alive = false;
+ });
+ renderSeries(ecIns, ecModel, api, payload, updateParams);
+ each(ecIns._chartsViews, function(chart) {
+ if (!chart.__alive) {
+ chart.remove(ecModel, api);
+ }
+ });
+ };
+ renderComponents = function(ecIns, ecModel, api, payload, updateParams, dirtyList) {
+ each(dirtyList || ecIns._componentsViews, function(componentView) {
+ var componentModel = componentView.__model;
+ clearStates(componentModel, componentView);
+ componentView.render(componentModel, ecModel, api, payload);
+ updateZ3(componentModel, componentView);
+ updateStates(componentModel, componentView);
+ });
+ };
+ renderSeries = function(ecIns, ecModel, api, payload, updateParams, dirtyMap) {
+ var scheduler = ecIns._scheduler;
+ updateParams = extend(updateParams || {}, {
+ updatedSeries: ecModel.getSeries()
+ });
+ lifecycle_default.trigger("series:beforeupdate", ecModel, api, updateParams);
+ var unfinished = false;
+ ecModel.eachSeries(function(seriesModel) {
+ var chartView = ecIns._chartsMap[seriesModel.__viewId];
+ chartView.__alive = true;
+ var renderTask = chartView.renderTask;
+ scheduler.updatePayload(renderTask, payload);
+ clearStates(seriesModel, chartView);
+ if (dirtyMap && dirtyMap.get(seriesModel.uid)) {
+ renderTask.dirty();
+ }
+ if (renderTask.perform(scheduler.getPerformArgs(renderTask))) {
+ unfinished = true;
+ }
+ chartView.group.silent = !!seriesModel.get("silent");
+ updateBlend(seriesModel, chartView);
+ updateSeriesElementSelection(seriesModel);
+ });
+ scheduler.unfinished = unfinished || scheduler.unfinished;
+ lifecycle_default.trigger("series:layoutlabels", ecModel, api, updateParams);
+ lifecycle_default.trigger("series:transition", ecModel, api, updateParams);
+ ecModel.eachSeries(function(seriesModel) {
+ var chartView = ecIns._chartsMap[seriesModel.__viewId];
+ updateZ3(seriesModel, chartView);
+ updateStates(seriesModel, chartView);
+ });
+ updateHoverLayerStatus(ecIns, ecModel);
+ lifecycle_default.trigger("series:afterupdate", ecModel, api, updateParams);
+ };
+ markStatusToUpdate = function(ecIns) {
+ ecIns[STATUS_NEEDS_UPDATE_KEY] = true;
+ ecIns.getZr().wakeUp();
+ };
+ applyChangedStates = function(ecIns) {
+ if (!ecIns[STATUS_NEEDS_UPDATE_KEY]) {
+ return;
+ }
+ ecIns.getZr().storage.traverse(function(el) {
+ if (isElementRemoved(el)) {
+ return;
+ }
+ applyElementStates(el);
+ });
+ ecIns[STATUS_NEEDS_UPDATE_KEY] = false;
+ };
+ function applyElementStates(el) {
+ var newStates = [];
+ var oldStates = el.currentStates;
+ for (var i = 0; i < oldStates.length; i++) {
+ var stateName = oldStates[i];
+ if (!(stateName === "emphasis" || stateName === "blur" || stateName === "select")) {
+ newStates.push(stateName);
+ }
+ }
+ if (el.selected && el.states.select) {
+ newStates.push("select");
+ }
+ if (el.hoverState === HOVER_STATE_EMPHASIS && el.states.emphasis) {
+ newStates.push("emphasis");
+ } else if (el.hoverState === HOVER_STATE_BLUR && el.states.blur) {
+ newStates.push("blur");
+ }
+ el.useStates(newStates);
+ }
+ function updateHoverLayerStatus(ecIns, ecModel) {
+ var zr = ecIns._zr;
+ var storage2 = zr.storage;
+ var elCount = 0;
+ storage2.traverse(function(el) {
+ if (!el.isGroup) {
+ elCount++;
+ }
+ });
+ if (elCount > ecModel.get("hoverLayerThreshold") && !env_default.node && !env_default.worker) {
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.preventUsingHoverLayer) {
+ return;
+ }
+ var chartView = ecIns._chartsMap[seriesModel.__viewId];
+ if (chartView.__alive) {
+ chartView.eachRendered(function(el) {
+ if (el.states.emphasis) {
+ el.states.emphasis.hoverLayer = true;
+ }
+ });
+ }
+ });
+ }
+ }
+ ;
+ function updateBlend(seriesModel, chartView) {
+ var blendMode = seriesModel.get("blendMode") || null;
+ chartView.eachRendered(function(el) {
+ if (!el.isGroup) {
+ el.style.blend = blendMode;
+ }
+ });
+ }
+ ;
+ function updateZ3(model, view) {
+ if (model.preventAutoZ) {
+ return;
+ }
+ var z = model.get("z") || 0;
+ var zlevel = model.get("zlevel") || 0;
+ view.eachRendered(function(el) {
+ doUpdateZ(el, z, zlevel, -Infinity);
+ return true;
+ });
+ }
+ ;
+ function doUpdateZ(el, z, zlevel, maxZ2) {
+ var label = el.getTextContent();
+ var labelLine = el.getTextGuideLine();
+ var isGroup = el.isGroup;
+ if (isGroup) {
+ var children = el.childrenRef();
+ for (var i = 0; i < children.length; i++) {
+ maxZ2 = Math.max(doUpdateZ(children[i], z, zlevel, maxZ2), maxZ2);
+ }
+ } else {
+ el.z = z;
+ el.zlevel = zlevel;
+ maxZ2 = Math.max(el.z2, maxZ2);
+ }
+ if (label) {
+ label.z = z;
+ label.zlevel = zlevel;
+ isFinite(maxZ2) && (label.z2 = maxZ2 + 2);
+ }
+ if (labelLine) {
+ var textGuideLineConfig = el.textGuideLineConfig;
+ labelLine.z = z;
+ labelLine.zlevel = zlevel;
+ isFinite(maxZ2) && (labelLine.z2 = maxZ2 + (textGuideLineConfig && textGuideLineConfig.showAbove ? 1 : -1));
+ }
+ return maxZ2;
+ }
+ function clearStates(model, view) {
+ view.eachRendered(function(el) {
+ if (isElementRemoved(el)) {
+ return;
+ }
+ var textContent = el.getTextContent();
+ var textGuide = el.getTextGuideLine();
+ if (el.stateTransition) {
+ el.stateTransition = null;
+ }
+ if (textContent && textContent.stateTransition) {
+ textContent.stateTransition = null;
+ }
+ if (textGuide && textGuide.stateTransition) {
+ textGuide.stateTransition = null;
+ }
+ if (el.hasState()) {
+ el.prevStates = el.currentStates;
+ el.clearStates();
+ } else if (el.prevStates) {
+ el.prevStates = null;
+ }
+ });
+ }
+ function updateStates(model, view) {
+ var stateAnimationModel = model.getModel("stateAnimation");
+ var enableAnimation = model.isAnimationEnabled();
+ var duration = stateAnimationModel.get("duration");
+ var stateTransition = duration > 0 ? {
+ duration,
+ delay: stateAnimationModel.get("delay"),
+ easing: stateAnimationModel.get("easing")
+ } : null;
+ view.eachRendered(function(el) {
+ if (el.states && el.states.emphasis) {
+ if (isElementRemoved(el)) {
+ return;
+ }
+ if (el instanceof Path_default) {
+ savePathStates(el);
+ }
+ if (el.__dirty) {
+ var prevStates = el.prevStates;
+ if (prevStates) {
+ el.useStates(prevStates);
+ }
+ }
+ if (enableAnimation) {
+ el.stateTransition = stateTransition;
+ var textContent = el.getTextContent();
+ var textGuide = el.getTextGuideLine();
+ if (textContent) {
+ textContent.stateTransition = stateTransition;
+ }
+ if (textGuide) {
+ textGuide.stateTransition = stateTransition;
+ }
+ }
+ if (el.__dirty) {
+ applyElementStates(el);
+ }
+ }
+ });
+ }
+ ;
+ createExtensionAPI = function(ecIns) {
+ return new (function(_super2) {
+ __extends(class_1, _super2);
+ function class_1() {
+ return _super2 !== null && _super2.apply(this, arguments) || this;
+ }
+ class_1.prototype.getCoordinateSystems = function() {
+ return ecIns._coordSysMgr.getCoordinateSystems();
+ };
+ class_1.prototype.getComponentByElement = function(el) {
+ while (el) {
+ var modelInfo = el.__ecComponentInfo;
+ if (modelInfo != null) {
+ return ecIns._model.getComponent(modelInfo.mainType, modelInfo.index);
+ }
+ el = el.parent;
+ }
+ };
+ class_1.prototype.enterEmphasis = function(el, highlightDigit) {
+ enterEmphasis(el, highlightDigit);
+ markStatusToUpdate(ecIns);
+ };
+ class_1.prototype.leaveEmphasis = function(el, highlightDigit) {
+ leaveEmphasis(el, highlightDigit);
+ markStatusToUpdate(ecIns);
+ };
+ class_1.prototype.enterBlur = function(el) {
+ enterBlur(el);
+ markStatusToUpdate(ecIns);
+ };
+ class_1.prototype.leaveBlur = function(el) {
+ leaveBlur(el);
+ markStatusToUpdate(ecIns);
+ };
+ class_1.prototype.enterSelect = function(el) {
+ enterSelect(el);
+ markStatusToUpdate(ecIns);
+ };
+ class_1.prototype.leaveSelect = function(el) {
+ leaveSelect(el);
+ markStatusToUpdate(ecIns);
+ };
+ class_1.prototype.getModel = function() {
+ return ecIns.getModel();
+ };
+ class_1.prototype.getViewOfComponentModel = function(componentModel) {
+ return ecIns.getViewOfComponentModel(componentModel);
+ };
+ class_1.prototype.getViewOfSeriesModel = function(seriesModel) {
+ return ecIns.getViewOfSeriesModel(seriesModel);
+ };
+ return class_1;
+ }(ExtensionAPI_default))(ecIns);
+ };
+ enableConnect = function(chart) {
+ function updateConnectedChartsStatus(charts, status) {
+ for (var i = 0; i < charts.length; i++) {
+ var otherChart = charts[i];
+ otherChart[CONNECT_STATUS_KEY] = status;
+ }
+ }
+ each(eventActionMap, function(actionType, eventType) {
+ chart._messageCenter.on(eventType, function(event) {
+ if (connectedGroups[chart.group] && chart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_PENDING) {
+ if (event && event.escapeConnect) {
+ return;
+ }
+ var action_1 = chart.makeActionFromEvent(event);
+ var otherCharts_1 = [];
+ each(instances2, function(otherChart) {
+ if (otherChart !== chart && otherChart.group === chart.group) {
+ otherCharts_1.push(otherChart);
+ }
+ });
+ updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_PENDING);
+ each(otherCharts_1, function(otherChart) {
+ if (otherChart[CONNECT_STATUS_KEY] !== CONNECT_STATUS_UPDATING) {
+ otherChart.dispatchAction(action_1);
+ }
+ });
+ updateConnectedChartsStatus(otherCharts_1, CONNECT_STATUS_UPDATED);
+ }
+ });
+ });
+ };
+ }();
+ return ECharts2;
+}(Eventful_default);
+var echartsProto = ECharts.prototype;
+echartsProto.on = createRegisterEventWithLowercaseECharts("on");
+echartsProto.off = createRegisterEventWithLowercaseECharts("off");
+echartsProto.one = function(eventName, cb, ctx) {
+ var self2 = this;
+ deprecateLog("ECharts#one is deprecated.");
+ function wrapped() {
+ var args2 = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args2[_i] = arguments[_i];
+ }
+ cb && cb.apply && cb.apply(this, args2);
+ self2.off(eventName, wrapped);
+ }
+ ;
+ this.on.call(this, eventName, wrapped, ctx);
+};
+var MOUSE_EVENT_NAMES = ["click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu"];
+function disposedWarning(id) {
+ if (true) {
+ warn("Instance " + id + " has been disposed");
+ }
+}
+var actions = {};
+var eventActionMap = {};
+var dataProcessorFuncs = [];
+var optionPreprocessorFuncs = [];
+var visualFuncs = [];
+var themeStorage = {};
+var loadingEffects = {};
+var instances2 = {};
+var connectedGroups = {};
+var idBase = +new Date() - 0;
+var groupIdBase = +new Date() - 0;
+var DOM_ATTRIBUTE_KEY = "_echarts_instance_";
+function init2(dom, theme2, opts) {
+ var isClient = !(opts && opts.ssr);
+ if (isClient) {
+ if (true) {
+ if (!dom) {
+ throw new Error("Initialize failed: invalid dom.");
+ }
+ }
+ var existInstance = getInstanceByDom(dom);
+ if (existInstance) {
+ if (true) {
+ warn("There is a chart instance already initialized on the dom.");
+ }
+ return existInstance;
+ }
+ if (true) {
+ if (isDom(dom) && dom.nodeName.toUpperCase() !== "CANVAS" && (!dom.clientWidth && (!opts || opts.width == null) || !dom.clientHeight && (!opts || opts.height == null))) {
+ warn("Can't get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload.");
+ }
+ }
+ }
+ var chart = new ECharts(dom, theme2, opts);
+ chart.id = "ec_" + idBase++;
+ instances2[chart.id] = chart;
+ isClient && setAttribute(dom, DOM_ATTRIBUTE_KEY, chart.id);
+ enableConnect(chart);
+ lifecycle_default.trigger("afterinit", chart);
+ return chart;
+}
+function connect(groupId) {
+ if (isArray(groupId)) {
+ var charts = groupId;
+ groupId = null;
+ each(charts, function(chart) {
+ if (chart.group != null) {
+ groupId = chart.group;
+ }
+ });
+ groupId = groupId || "g_" + groupIdBase++;
+ each(charts, function(chart) {
+ chart.group = groupId;
+ });
+ }
+ connectedGroups[groupId] = true;
+ return groupId;
+}
+function disconnect(groupId) {
+ connectedGroups[groupId] = false;
+}
+var disConnect = disconnect;
+function dispose2(chart) {
+ if (isString(chart)) {
+ chart = instances2[chart];
+ } else if (!(chart instanceof ECharts)) {
+ chart = getInstanceByDom(chart);
+ }
+ if (chart instanceof ECharts && !chart.isDisposed()) {
+ chart.dispose();
+ }
+}
+function getInstanceByDom(dom) {
+ return instances2[getAttribute(dom, DOM_ATTRIBUTE_KEY)];
+}
+function getInstanceById(key) {
+ return instances2[key];
+}
+function registerTheme(name, theme2) {
+ themeStorage[name] = theme2;
+}
+function registerPreprocessor(preprocessorFunc) {
+ if (indexOf(optionPreprocessorFuncs, preprocessorFunc) < 0) {
+ optionPreprocessorFuncs.push(preprocessorFunc);
+ }
+}
+function registerProcessor(priority, processor) {
+ normalizeRegister(dataProcessorFuncs, priority, processor, PRIORITY_PROCESSOR_DEFAULT);
+}
+function registerPostInit(postInitFunc) {
+ registerUpdateLifecycle("afterinit", postInitFunc);
+}
+function registerPostUpdate(postUpdateFunc) {
+ registerUpdateLifecycle("afterupdate", postUpdateFunc);
+}
+function registerUpdateLifecycle(name, cb) {
+ lifecycle_default.on(name, cb);
+}
+function registerAction(actionInfo3, eventName, action) {
+ if (isFunction(eventName)) {
+ action = eventName;
+ eventName = "";
+ }
+ var actionType = isObject(actionInfo3) ? actionInfo3.type : [actionInfo3, actionInfo3 = {
+ event: eventName
+ }][0];
+ actionInfo3.event = (actionInfo3.event || actionType).toLowerCase();
+ eventName = actionInfo3.event;
+ if (eventActionMap[eventName]) {
+ return;
+ }
+ assert(ACTION_REG.test(actionType) && ACTION_REG.test(eventName));
+ if (!actions[actionType]) {
+ actions[actionType] = {
+ action,
+ actionInfo: actionInfo3
+ };
+ }
+ eventActionMap[eventName] = actionType;
+}
+function registerCoordinateSystem(type, coordSysCreator) {
+ CoordinateSystem_default.register(type, coordSysCreator);
+}
+function getCoordinateSystemDimensions(type) {
+ var coordSysCreator = CoordinateSystem_default.get(type);
+ if (coordSysCreator) {
+ return coordSysCreator.getDimensionsInfo ? coordSysCreator.getDimensionsInfo() : coordSysCreator.dimensions.slice();
+ }
+}
+function registerLayout(priority, layoutTask) {
+ normalizeRegister(visualFuncs, priority, layoutTask, PRIORITY_VISUAL_LAYOUT, "layout");
+}
+function registerVisual(priority, visualTask) {
+ normalizeRegister(visualFuncs, priority, visualTask, PRIORITY_VISUAL_CHART, "visual");
+}
+var registeredTasks = [];
+function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {
+ if (isFunction(priority) || isObject(priority)) {
+ fn = priority;
+ priority = defaultPriority;
+ }
+ if (true) {
+ if (isNaN(priority) || priority == null) {
+ throw new Error("Illegal priority");
+ }
+ each(targetList, function(wrap) {
+ assert(wrap.__raw !== fn);
+ });
+ }
+ if (indexOf(registeredTasks, fn) >= 0) {
+ return;
+ }
+ registeredTasks.push(fn);
+ var stageHandler = Scheduler_default.wrapStageHandler(fn, visualType);
+ stageHandler.__prio = priority;
+ stageHandler.__raw = fn;
+ targetList.push(stageHandler);
+}
+function registerLoading(name, loadingFx) {
+ loadingEffects[name] = loadingFx;
+}
+function setCanvasCreator(creator) {
+ if (true) {
+ deprecateLog("setCanvasCreator is deprecated. Use setPlatformAPI({ createCanvas }) instead.");
+ }
+ setPlatformAPI({
+ createCanvas: creator
+ });
+}
+function registerMap(mapName, geoJson, specialAreas) {
+ var registerMap3 = getImpl("registerMap");
+ registerMap3 && registerMap3(mapName, geoJson, specialAreas);
+}
+function getMap(mapName) {
+ var getMap2 = getImpl("getMap");
+ return getMap2 && getMap2(mapName);
+}
+var registerTransform = registerExternalTransform;
+registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);
+registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);
+registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);
+registerVisual(PRIORITY_VISUAL_GLOBAL, seriesSymbolTask);
+registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataSymbolTask);
+registerVisual(PRIORITY_VISUAL_DECAL, decalVisual);
+registerPreprocessor(globalBackwardCompat);
+registerProcessor(PRIORITY_PROCESSOR_DATASTACK, dataStack);
+registerLoading("default", defaultLoading);
+registerAction({
+ type: HIGHLIGHT_ACTION_TYPE,
+ event: HIGHLIGHT_ACTION_TYPE,
+ update: HIGHLIGHT_ACTION_TYPE
+}, noop);
+registerAction({
+ type: DOWNPLAY_ACTION_TYPE,
+ event: DOWNPLAY_ACTION_TYPE,
+ update: DOWNPLAY_ACTION_TYPE
+}, noop);
+registerAction({
+ type: SELECT_ACTION_TYPE,
+ event: SELECT_ACTION_TYPE,
+ update: SELECT_ACTION_TYPE
+}, noop);
+registerAction({
+ type: UNSELECT_ACTION_TYPE,
+ event: UNSELECT_ACTION_TYPE,
+ update: UNSELECT_ACTION_TYPE
+}, noop);
+registerAction({
+ type: TOGGLE_SELECT_ACTION_TYPE,
+ event: TOGGLE_SELECT_ACTION_TYPE,
+ update: TOGGLE_SELECT_ACTION_TYPE
+}, noop);
+registerTheme("light", light_default);
+registerTheme("dark", dark_default);
+var dataTool = {};
+
+// node_modules/echarts/lib/extension.js
+var extensions = [];
+var extensionRegisters = {
+ registerPreprocessor,
+ registerProcessor,
+ registerPostInit,
+ registerPostUpdate,
+ registerUpdateLifecycle,
+ registerAction,
+ registerCoordinateSystem,
+ registerLayout,
+ registerVisual,
+ registerTransform,
+ registerLoading,
+ registerMap,
+ registerImpl,
+ PRIORITY,
+ ComponentModel: Component_default,
+ ComponentView: Component_default2,
+ SeriesModel: Series_default,
+ ChartView: Chart_default,
+ registerComponentModel: function(ComponentModelClass) {
+ Component_default.registerClass(ComponentModelClass);
+ },
+ registerComponentView: function(ComponentViewClass) {
+ Component_default2.registerClass(ComponentViewClass);
+ },
+ registerSeriesModel: function(SeriesModelClass) {
+ Series_default.registerClass(SeriesModelClass);
+ },
+ registerChartView: function(ChartViewClass) {
+ Chart_default.registerClass(ChartViewClass);
+ },
+ registerSubTypeDefaulter: function(componentType, defaulter) {
+ Component_default.registerSubTypeDefaulter(componentType, defaulter);
+ },
+ registerPainter: function(painterType, PainterCtor) {
+ registerPainter(painterType, PainterCtor);
+ }
+};
+function use(ext) {
+ if (isArray(ext)) {
+ each(ext, function(singleExt) {
+ use(singleExt);
+ });
+ return;
+ }
+ if (indexOf(extensions, ext) >= 0) {
+ return;
+ }
+ extensions.push(ext);
+ if (isFunction(ext)) {
+ ext = {
+ install: ext
+ };
+ }
+ ext.install(extensionRegisters);
+}
+
+// node_modules/echarts/lib/data/DataDiffer.js
+function dataIndexMapValueLength(valNumOrArrLengthMoreThan2) {
+ return valNumOrArrLengthMoreThan2 == null ? 0 : valNumOrArrLengthMoreThan2.length || 1;
+}
+function defaultKeyGetter(item) {
+ return item;
+}
+var DataDiffer = function() {
+ function DataDiffer2(oldArr, newArr, oldKeyGetter, newKeyGetter, context, diffMode) {
+ this._old = oldArr;
+ this._new = newArr;
+ this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;
+ this._newKeyGetter = newKeyGetter || defaultKeyGetter;
+ this.context = context;
+ this._diffModeMultiple = diffMode === "multiple";
+ }
+ DataDiffer2.prototype.add = function(func) {
+ this._add = func;
+ return this;
+ };
+ DataDiffer2.prototype.update = function(func) {
+ this._update = func;
+ return this;
+ };
+ DataDiffer2.prototype.updateManyToOne = function(func) {
+ this._updateManyToOne = func;
+ return this;
+ };
+ DataDiffer2.prototype.updateOneToMany = function(func) {
+ this._updateOneToMany = func;
+ return this;
+ };
+ DataDiffer2.prototype.updateManyToMany = function(func) {
+ this._updateManyToMany = func;
+ return this;
+ };
+ DataDiffer2.prototype.remove = function(func) {
+ this._remove = func;
+ return this;
+ };
+ DataDiffer2.prototype.execute = function() {
+ this[this._diffModeMultiple ? "_executeMultiple" : "_executeOneToOne"]();
+ };
+ DataDiffer2.prototype._executeOneToOne = function() {
+ var oldArr = this._old;
+ var newArr = this._new;
+ var newDataIndexMap = {};
+ var oldDataKeyArr = new Array(oldArr.length);
+ var newDataKeyArr = new Array(newArr.length);
+ this._initIndexMap(oldArr, null, oldDataKeyArr, "_oldKeyGetter");
+ this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter");
+ for (var i = 0; i < oldArr.length; i++) {
+ var oldKey = oldDataKeyArr[i];
+ var newIdxMapVal = newDataIndexMap[oldKey];
+ var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);
+ if (newIdxMapValLen > 1) {
+ var newIdx = newIdxMapVal.shift();
+ if (newIdxMapVal.length === 1) {
+ newDataIndexMap[oldKey] = newIdxMapVal[0];
+ }
+ this._update && this._update(newIdx, i);
+ } else if (newIdxMapValLen === 1) {
+ newDataIndexMap[oldKey] = null;
+ this._update && this._update(newIdxMapVal, i);
+ } else {
+ this._remove && this._remove(i);
+ }
+ }
+ this._performRestAdd(newDataKeyArr, newDataIndexMap);
+ };
+ DataDiffer2.prototype._executeMultiple = function() {
+ var oldArr = this._old;
+ var newArr = this._new;
+ var oldDataIndexMap = {};
+ var newDataIndexMap = {};
+ var oldDataKeyArr = [];
+ var newDataKeyArr = [];
+ this._initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, "_oldKeyGetter");
+ this._initIndexMap(newArr, newDataIndexMap, newDataKeyArr, "_newKeyGetter");
+ for (var i = 0; i < oldDataKeyArr.length; i++) {
+ var oldKey = oldDataKeyArr[i];
+ var oldIdxMapVal = oldDataIndexMap[oldKey];
+ var newIdxMapVal = newDataIndexMap[oldKey];
+ var oldIdxMapValLen = dataIndexMapValueLength(oldIdxMapVal);
+ var newIdxMapValLen = dataIndexMapValueLength(newIdxMapVal);
+ if (oldIdxMapValLen > 1 && newIdxMapValLen === 1) {
+ this._updateManyToOne && this._updateManyToOne(newIdxMapVal, oldIdxMapVal);
+ newDataIndexMap[oldKey] = null;
+ } else if (oldIdxMapValLen === 1 && newIdxMapValLen > 1) {
+ this._updateOneToMany && this._updateOneToMany(newIdxMapVal, oldIdxMapVal);
+ newDataIndexMap[oldKey] = null;
+ } else if (oldIdxMapValLen === 1 && newIdxMapValLen === 1) {
+ this._update && this._update(newIdxMapVal, oldIdxMapVal);
+ newDataIndexMap[oldKey] = null;
+ } else if (oldIdxMapValLen > 1 && newIdxMapValLen > 1) {
+ this._updateManyToMany && this._updateManyToMany(newIdxMapVal, oldIdxMapVal);
+ newDataIndexMap[oldKey] = null;
+ } else if (oldIdxMapValLen > 1) {
+ for (var i_1 = 0; i_1 < oldIdxMapValLen; i_1++) {
+ this._remove && this._remove(oldIdxMapVal[i_1]);
+ }
+ } else {
+ this._remove && this._remove(oldIdxMapVal);
+ }
+ }
+ this._performRestAdd(newDataKeyArr, newDataIndexMap);
+ };
+ DataDiffer2.prototype._performRestAdd = function(newDataKeyArr, newDataIndexMap) {
+ for (var i = 0; i < newDataKeyArr.length; i++) {
+ var newKey = newDataKeyArr[i];
+ var newIdxMapVal = newDataIndexMap[newKey];
+ var idxMapValLen = dataIndexMapValueLength(newIdxMapVal);
+ if (idxMapValLen > 1) {
+ for (var j = 0; j < idxMapValLen; j++) {
+ this._add && this._add(newIdxMapVal[j]);
+ }
+ } else if (idxMapValLen === 1) {
+ this._add && this._add(newIdxMapVal);
+ }
+ newDataIndexMap[newKey] = null;
+ }
+ };
+ DataDiffer2.prototype._initIndexMap = function(arr, map3, keyArr, keyGetterName) {
+ var cbModeMultiple = this._diffModeMultiple;
+ for (var i = 0; i < arr.length; i++) {
+ var key = "_ec_" + this[keyGetterName](arr[i], i);
+ if (!cbModeMultiple) {
+ keyArr[i] = key;
+ }
+ if (!map3) {
+ continue;
+ }
+ var idxMapVal = map3[key];
+ var idxMapValLen = dataIndexMapValueLength(idxMapVal);
+ if (idxMapValLen === 0) {
+ map3[key] = i;
+ if (cbModeMultiple) {
+ keyArr.push(key);
+ }
+ } else if (idxMapValLen === 1) {
+ map3[key] = [idxMapVal, i];
+ } else {
+ idxMapVal.push(i);
+ }
+ }
+ };
+ return DataDiffer2;
+}();
+var DataDiffer_default = DataDiffer;
+
+// node_modules/echarts/lib/data/helper/dimensionHelper.js
+var DimensionUserOuput = function() {
+ function DimensionUserOuput2(encode, dimRequest) {
+ this._encode = encode;
+ this._schema = dimRequest;
+ }
+ DimensionUserOuput2.prototype.get = function() {
+ return {
+ fullDimensions: this._getFullDimensionNames(),
+ encode: this._encode
+ };
+ };
+ DimensionUserOuput2.prototype._getFullDimensionNames = function() {
+ if (!this._cachedDimNames) {
+ this._cachedDimNames = this._schema ? this._schema.makeOutputDimensionNames() : [];
+ }
+ return this._cachedDimNames;
+ };
+ return DimensionUserOuput2;
+}();
+function summarizeDimensions(data, schema) {
+ var summary = {};
+ var encode = summary.encode = {};
+ var notExtraCoordDimMap = createHashMap();
+ var defaultedLabel = [];
+ var defaultedTooltip = [];
+ var userOutputEncode = {};
+ each(data.dimensions, function(dimName) {
+ var dimItem = data.getDimensionInfo(dimName);
+ var coordDim = dimItem.coordDim;
+ if (coordDim) {
+ if (true) {
+ assert(VISUAL_DIMENSIONS.get(coordDim) == null);
+ }
+ var coordDimIndex = dimItem.coordDimIndex;
+ getOrCreateEncodeArr(encode, coordDim)[coordDimIndex] = dimName;
+ if (!dimItem.isExtraCoord) {
+ notExtraCoordDimMap.set(coordDim, 1);
+ if (mayLabelDimType(dimItem.type)) {
+ defaultedLabel[0] = dimName;
+ }
+ getOrCreateEncodeArr(userOutputEncode, coordDim)[coordDimIndex] = data.getDimensionIndex(dimItem.name);
+ }
+ if (dimItem.defaultTooltip) {
+ defaultedTooltip.push(dimName);
+ }
+ }
+ VISUAL_DIMENSIONS.each(function(v, otherDim) {
+ var encodeArr = getOrCreateEncodeArr(encode, otherDim);
+ var dimIndex = dimItem.otherDims[otherDim];
+ if (dimIndex != null && dimIndex !== false) {
+ encodeArr[dimIndex] = dimItem.name;
+ }
+ });
+ });
+ var dataDimsOnCoord = [];
+ var encodeFirstDimNotExtra = {};
+ notExtraCoordDimMap.each(function(v, coordDim) {
+ var dimArr = encode[coordDim];
+ encodeFirstDimNotExtra[coordDim] = dimArr[0];
+ dataDimsOnCoord = dataDimsOnCoord.concat(dimArr);
+ });
+ summary.dataDimsOnCoord = dataDimsOnCoord;
+ summary.dataDimIndicesOnCoord = map(dataDimsOnCoord, function(dimName) {
+ return data.getDimensionInfo(dimName).storeDimIndex;
+ });
+ summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;
+ var encodeLabel = encode.label;
+ if (encodeLabel && encodeLabel.length) {
+ defaultedLabel = encodeLabel.slice();
+ }
+ var encodeTooltip = encode.tooltip;
+ if (encodeTooltip && encodeTooltip.length) {
+ defaultedTooltip = encodeTooltip.slice();
+ } else if (!defaultedTooltip.length) {
+ defaultedTooltip = defaultedLabel.slice();
+ }
+ encode.defaultedLabel = defaultedLabel;
+ encode.defaultedTooltip = defaultedTooltip;
+ summary.userOutput = new DimensionUserOuput(userOutputEncode, schema);
+ return summary;
+}
+function getOrCreateEncodeArr(encode, dim) {
+ if (!encode.hasOwnProperty(dim)) {
+ encode[dim] = [];
+ }
+ return encode[dim];
+}
+function getDimensionTypeByAxis(axisType) {
+ return axisType === "category" ? "ordinal" : axisType === "time" ? "time" : "float";
+}
+function mayLabelDimType(dimType) {
+ return !(dimType === "ordinal" || dimType === "time");
+}
+
+// node_modules/echarts/lib/data/SeriesDimensionDefine.js
+var SeriesDimensionDefine = function() {
+ function SeriesDimensionDefine2(opt) {
+ this.otherDims = {};
+ if (opt != null) {
+ extend(this, opt);
+ }
+ }
+ return SeriesDimensionDefine2;
+}();
+var SeriesDimensionDefine_default = SeriesDimensionDefine;
+
+// node_modules/echarts/lib/data/helper/SeriesDataSchema.js
+var inner5 = makeInner();
+var dimTypeShort = {
+ float: "f",
+ int: "i",
+ ordinal: "o",
+ number: "n",
+ time: "t"
+};
+var SeriesDataSchema = function() {
+ function SeriesDataSchema2(opt) {
+ this.dimensions = opt.dimensions;
+ this._dimOmitted = opt.dimensionOmitted;
+ this.source = opt.source;
+ this._fullDimCount = opt.fullDimensionCount;
+ this._updateDimOmitted(opt.dimensionOmitted);
+ }
+ SeriesDataSchema2.prototype.isDimensionOmitted = function() {
+ return this._dimOmitted;
+ };
+ SeriesDataSchema2.prototype._updateDimOmitted = function(dimensionOmitted) {
+ this._dimOmitted = dimensionOmitted;
+ if (!dimensionOmitted) {
+ return;
+ }
+ if (!this._dimNameMap) {
+ this._dimNameMap = ensureSourceDimNameMap(this.source);
+ }
+ };
+ SeriesDataSchema2.prototype.getSourceDimensionIndex = function(dimName) {
+ return retrieve2(this._dimNameMap.get(dimName), -1);
+ };
+ SeriesDataSchema2.prototype.getSourceDimension = function(dimIndex) {
+ var dimensionsDefine = this.source.dimensionsDefine;
+ if (dimensionsDefine) {
+ return dimensionsDefine[dimIndex];
+ }
+ };
+ SeriesDataSchema2.prototype.makeStoreSchema = function() {
+ var dimCount = this._fullDimCount;
+ var willRetrieveDataByName = shouldRetrieveDataByName(this.source);
+ var makeHashStrict = !shouldOmitUnusedDimensions(dimCount);
+ var dimHash = "";
+ var dims = [];
+ for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) {
+ var property = void 0;
+ var type = void 0;
+ var ordinalMeta = void 0;
+ var seriesDimDef = this.dimensions[seriesDimIdx];
+ if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
+ property = willRetrieveDataByName ? seriesDimDef.name : null;
+ type = seriesDimDef.type;
+ ordinalMeta = seriesDimDef.ordinalMeta;
+ seriesDimIdx++;
+ } else {
+ var sourceDimDef = this.getSourceDimension(fullDimIdx);
+ if (sourceDimDef) {
+ property = willRetrieveDataByName ? sourceDimDef.name : null;
+ type = sourceDimDef.type;
+ }
+ }
+ dims.push({
+ property,
+ type,
+ ordinalMeta
+ });
+ if (willRetrieveDataByName && property != null && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) {
+ dimHash += makeHashStrict ? property.replace(/\`/g, "`1").replace(/\$/g, "`2") : property;
+ }
+ dimHash += "$";
+ dimHash += dimTypeShort[type] || "f";
+ if (ordinalMeta) {
+ dimHash += ordinalMeta.uid;
+ }
+ dimHash += "$";
+ }
+ var source = this.source;
+ var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join("$$");
+ return {
+ dimensions: dims,
+ hash
+ };
+ };
+ SeriesDataSchema2.prototype.makeOutputDimensionNames = function() {
+ var result = [];
+ for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) {
+ var name_1 = void 0;
+ var seriesDimDef = this.dimensions[seriesDimIdx];
+ if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
+ if (!seriesDimDef.isCalculationCoord) {
+ name_1 = seriesDimDef.name;
+ }
+ seriesDimIdx++;
+ } else {
+ var sourceDimDef = this.getSourceDimension(fullDimIdx);
+ if (sourceDimDef) {
+ name_1 = sourceDimDef.name;
+ }
+ }
+ result.push(name_1);
+ }
+ return result;
+ };
+ SeriesDataSchema2.prototype.appendCalculationDimension = function(dimDef) {
+ this.dimensions.push(dimDef);
+ dimDef.isCalculationCoord = true;
+ this._fullDimCount++;
+ this._updateDimOmitted(true);
+ };
+ return SeriesDataSchema2;
+}();
+function isSeriesDataSchema(schema) {
+ return schema instanceof SeriesDataSchema;
+}
+function createDimNameMap(dimsDef) {
+ var dataDimNameMap = createHashMap();
+ for (var i = 0; i < (dimsDef || []).length; i++) {
+ var dimDefItemRaw = dimsDef[i];
+ var userDimName = isObject(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw;
+ if (userDimName != null && dataDimNameMap.get(userDimName) == null) {
+ dataDimNameMap.set(userDimName, i);
+ }
+ }
+ return dataDimNameMap;
+}
+function ensureSourceDimNameMap(source) {
+ var innerSource = inner5(source);
+ return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine));
+}
+function shouldOmitUnusedDimensions(dimCount) {
+ return dimCount > 30;
+}
+
+// node_modules/echarts/lib/data/SeriesData.js
+var isObject3 = isObject;
+var map2 = map;
+var CtorInt32Array2 = typeof Int32Array === "undefined" ? Array : Int32Array;
+var ID_PREFIX = "e\0\0";
+var INDEX_NOT_FOUND = -1;
+var TRANSFERABLE_PROPERTIES = ["hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_dimSummary", "userOutput", "_rawData", "_dimValueGetter", "_nameDimIdx", "_idDimIdx", "_nameRepeatCount"];
+var CLONE_PROPERTIES = ["_approximateExtent"];
+var prepareInvertedIndex;
+var getId;
+var getIdNameFromStore;
+var normalizeDimensions;
+var transferProperties;
+var cloneListForMapAndSample;
+var makeIdFromName;
+var SeriesData = function() {
+ function SeriesData2(dimensionsInput, hostModel) {
+ this.type = "list";
+ this._dimOmitted = false;
+ this._nameList = [];
+ this._idList = [];
+ this._visual = {};
+ this._layout = {};
+ this._itemVisuals = [];
+ this._itemLayouts = [];
+ this._graphicEls = [];
+ this._approximateExtent = {};
+ this._calculationInfo = {};
+ this.hasItemOption = false;
+ this.TRANSFERABLE_METHODS = ["cloneShallow", "downSample", "minmaxDownSample", "lttbDownSample", "map"];
+ this.CHANGABLE_METHODS = ["filterSelf", "selectRange"];
+ this.DOWNSAMPLE_METHODS = ["downSample", "minmaxDownSample", "lttbDownSample"];
+ var dimensions;
+ var assignStoreDimIdx = false;
+ if (isSeriesDataSchema(dimensionsInput)) {
+ dimensions = dimensionsInput.dimensions;
+ this._dimOmitted = dimensionsInput.isDimensionOmitted();
+ this._schema = dimensionsInput;
+ } else {
+ assignStoreDimIdx = true;
+ dimensions = dimensionsInput;
+ }
+ dimensions = dimensions || ["x", "y"];
+ var dimensionInfos = {};
+ var dimensionNames = [];
+ var invertedIndicesMap = {};
+ var needsHasOwn = false;
+ var emptyObj = {};
+ for (var i = 0; i < dimensions.length; i++) {
+ var dimInfoInput = dimensions[i];
+ var dimensionInfo = isString(dimInfoInput) ? new SeriesDimensionDefine_default({
+ name: dimInfoInput
+ }) : !(dimInfoInput instanceof SeriesDimensionDefine_default) ? new SeriesDimensionDefine_default(dimInfoInput) : dimInfoInput;
+ var dimensionName = dimensionInfo.name;
+ dimensionInfo.type = dimensionInfo.type || "float";
+ if (!dimensionInfo.coordDim) {
+ dimensionInfo.coordDim = dimensionName;
+ dimensionInfo.coordDimIndex = 0;
+ }
+ var otherDims = dimensionInfo.otherDims = dimensionInfo.otherDims || {};
+ dimensionNames.push(dimensionName);
+ dimensionInfos[dimensionName] = dimensionInfo;
+ if (emptyObj[dimensionName] != null) {
+ needsHasOwn = true;
+ }
+ if (dimensionInfo.createInvertedIndices) {
+ invertedIndicesMap[dimensionName] = [];
+ }
+ if (otherDims.itemName === 0) {
+ this._nameDimIdx = i;
+ }
+ if (otherDims.itemId === 0) {
+ this._idDimIdx = i;
+ }
+ if (true) {
+ assert(assignStoreDimIdx || dimensionInfo.storeDimIndex >= 0);
+ }
+ if (assignStoreDimIdx) {
+ dimensionInfo.storeDimIndex = i;
+ }
+ }
+ this.dimensions = dimensionNames;
+ this._dimInfos = dimensionInfos;
+ this._initGetDimensionInfo(needsHasOwn);
+ this.hostModel = hostModel;
+ this._invertedIndicesMap = invertedIndicesMap;
+ if (this._dimOmitted) {
+ var dimIdxToName_1 = this._dimIdxToName = createHashMap();
+ each(dimensionNames, function(dimName) {
+ dimIdxToName_1.set(dimensionInfos[dimName].storeDimIndex, dimName);
+ });
+ }
+ }
+ SeriesData2.prototype.getDimension = function(dim) {
+ var dimIdx = this._recognizeDimIndex(dim);
+ if (dimIdx == null) {
+ return dim;
+ }
+ dimIdx = dim;
+ if (!this._dimOmitted) {
+ return this.dimensions[dimIdx];
+ }
+ var dimName = this._dimIdxToName.get(dimIdx);
+ if (dimName != null) {
+ return dimName;
+ }
+ var sourceDimDef = this._schema.getSourceDimension(dimIdx);
+ if (sourceDimDef) {
+ return sourceDimDef.name;
+ }
+ };
+ SeriesData2.prototype.getDimensionIndex = function(dim) {
+ var dimIdx = this._recognizeDimIndex(dim);
+ if (dimIdx != null) {
+ return dimIdx;
+ }
+ if (dim == null) {
+ return -1;
+ }
+ var dimInfo = this._getDimInfo(dim);
+ return dimInfo ? dimInfo.storeDimIndex : this._dimOmitted ? this._schema.getSourceDimensionIndex(dim) : -1;
+ };
+ SeriesData2.prototype._recognizeDimIndex = function(dim) {
+ if (isNumber(dim) || dim != null && !isNaN(dim) && !this._getDimInfo(dim) && (!this._dimOmitted || this._schema.getSourceDimensionIndex(dim) < 0)) {
+ return +dim;
+ }
+ };
+ SeriesData2.prototype._getStoreDimIndex = function(dim) {
+ var dimIdx = this.getDimensionIndex(dim);
+ if (true) {
+ if (dimIdx == null) {
+ throw new Error("Unknown dimension " + dim);
+ }
+ }
+ return dimIdx;
+ };
+ SeriesData2.prototype.getDimensionInfo = function(dim) {
+ return this._getDimInfo(this.getDimension(dim));
+ };
+ SeriesData2.prototype._initGetDimensionInfo = function(needsHasOwn) {
+ var dimensionInfos = this._dimInfos;
+ this._getDimInfo = needsHasOwn ? function(dimName) {
+ return dimensionInfos.hasOwnProperty(dimName) ? dimensionInfos[dimName] : void 0;
+ } : function(dimName) {
+ return dimensionInfos[dimName];
+ };
+ };
+ SeriesData2.prototype.getDimensionsOnCoord = function() {
+ return this._dimSummary.dataDimsOnCoord.slice();
+ };
+ SeriesData2.prototype.mapDimension = function(coordDim, idx) {
+ var dimensionsSummary = this._dimSummary;
+ if (idx == null) {
+ return dimensionsSummary.encodeFirstDimNotExtra[coordDim];
+ }
+ var dims = dimensionsSummary.encode[coordDim];
+ return dims ? dims[idx] : null;
+ };
+ SeriesData2.prototype.mapDimensionsAll = function(coordDim) {
+ var dimensionsSummary = this._dimSummary;
+ var dims = dimensionsSummary.encode[coordDim];
+ return (dims || []).slice();
+ };
+ SeriesData2.prototype.getStore = function() {
+ return this._store;
+ };
+ SeriesData2.prototype.initData = function(data, nameList, dimValueGetter) {
+ var _this = this;
+ var store;
+ if (data instanceof DataStore_default) {
+ store = data;
+ }
+ if (!store) {
+ var dimensions = this.dimensions;
+ var provider = isSourceInstance(data) || isArrayLike(data) ? new DefaultDataProvider(data, dimensions.length) : data;
+ store = new DataStore_default();
+ var dimensionInfos = map2(dimensions, function(dimName) {
+ return {
+ type: _this._dimInfos[dimName].type,
+ property: dimName
+ };
+ });
+ store.initData(provider, dimensionInfos, dimValueGetter);
+ }
+ this._store = store;
+ this._nameList = (nameList || []).slice();
+ this._idList = [];
+ this._nameRepeatCount = {};
+ this._doInit(0, store.count());
+ this._dimSummary = summarizeDimensions(this, this._schema);
+ this.userOutput = this._dimSummary.userOutput;
+ };
+ SeriesData2.prototype.appendData = function(data) {
+ var range = this._store.appendData(data);
+ this._doInit(range[0], range[1]);
+ };
+ SeriesData2.prototype.appendValues = function(values, names) {
+ var _a2 = this._store.appendValues(values, names && names.length), start2 = _a2.start, end2 = _a2.end;
+ var shouldMakeIdFromName = this._shouldMakeIdFromName();
+ this._updateOrdinalMeta();
+ if (names) {
+ for (var idx = start2; idx < end2; idx++) {
+ var sourceIdx = idx - start2;
+ this._nameList[idx] = names[sourceIdx];
+ if (shouldMakeIdFromName) {
+ makeIdFromName(this, idx);
+ }
+ }
+ }
+ };
+ SeriesData2.prototype._updateOrdinalMeta = function() {
+ var store = this._store;
+ var dimensions = this.dimensions;
+ for (var i = 0; i < dimensions.length; i++) {
+ var dimInfo = this._dimInfos[dimensions[i]];
+ if (dimInfo.ordinalMeta) {
+ store.collectOrdinalMeta(dimInfo.storeDimIndex, dimInfo.ordinalMeta);
+ }
+ }
+ };
+ SeriesData2.prototype._shouldMakeIdFromName = function() {
+ var provider = this._store.getProvider();
+ return this._idDimIdx == null && provider.getSource().sourceFormat !== SOURCE_FORMAT_TYPED_ARRAY && !provider.fillStorage;
+ };
+ SeriesData2.prototype._doInit = function(start2, end2) {
+ if (start2 >= end2) {
+ return;
+ }
+ var store = this._store;
+ var provider = store.getProvider();
+ this._updateOrdinalMeta();
+ var nameList = this._nameList;
+ var idList = this._idList;
+ var sourceFormat = provider.getSource().sourceFormat;
+ var isFormatOriginal = sourceFormat === SOURCE_FORMAT_ORIGINAL;
+ if (isFormatOriginal && !provider.pure) {
+ var sharedDataItem = [];
+ for (var idx = start2; idx < end2; idx++) {
+ var dataItem = provider.getItem(idx, sharedDataItem);
+ if (!this.hasItemOption && isDataItemOption(dataItem)) {
+ this.hasItemOption = true;
+ }
+ if (dataItem) {
+ var itemName = dataItem.name;
+ if (nameList[idx] == null && itemName != null) {
+ nameList[idx] = convertOptionIdName(itemName, null);
+ }
+ var itemId = dataItem.id;
+ if (idList[idx] == null && itemId != null) {
+ idList[idx] = convertOptionIdName(itemId, null);
+ }
+ }
+ }
+ }
+ if (this._shouldMakeIdFromName()) {
+ for (var idx = start2; idx < end2; idx++) {
+ makeIdFromName(this, idx);
+ }
+ }
+ prepareInvertedIndex(this);
+ };
+ SeriesData2.prototype.getApproximateExtent = function(dim) {
+ return this._approximateExtent[dim] || this._store.getDataExtent(this._getStoreDimIndex(dim));
+ };
+ SeriesData2.prototype.setApproximateExtent = function(extent3, dim) {
+ dim = this.getDimension(dim);
+ this._approximateExtent[dim] = extent3.slice();
+ };
+ SeriesData2.prototype.getCalculationInfo = function(key) {
+ return this._calculationInfo[key];
+ };
+ SeriesData2.prototype.setCalculationInfo = function(key, value) {
+ isObject3(key) ? extend(this._calculationInfo, key) : this._calculationInfo[key] = value;
+ };
+ SeriesData2.prototype.getName = function(idx) {
+ var rawIndex = this.getRawIndex(idx);
+ var name = this._nameList[rawIndex];
+ if (name == null && this._nameDimIdx != null) {
+ name = getIdNameFromStore(this, this._nameDimIdx, rawIndex);
+ }
+ if (name == null) {
+ name = "";
+ }
+ return name;
+ };
+ SeriesData2.prototype._getCategory = function(dimIdx, idx) {
+ var ordinal = this._store.get(dimIdx, idx);
+ var ordinalMeta = this._store.getOrdinalMeta(dimIdx);
+ if (ordinalMeta) {
+ return ordinalMeta.categories[ordinal];
+ }
+ return ordinal;
+ };
+ SeriesData2.prototype.getId = function(idx) {
+ return getId(this, this.getRawIndex(idx));
+ };
+ SeriesData2.prototype.count = function() {
+ return this._store.count();
+ };
+ SeriesData2.prototype.get = function(dim, idx) {
+ var store = this._store;
+ var dimInfo = this._dimInfos[dim];
+ if (dimInfo) {
+ return store.get(dimInfo.storeDimIndex, idx);
+ }
+ };
+ SeriesData2.prototype.getByRawIndex = function(dim, rawIdx) {
+ var store = this._store;
+ var dimInfo = this._dimInfos[dim];
+ if (dimInfo) {
+ return store.getByRawIndex(dimInfo.storeDimIndex, rawIdx);
+ }
+ };
+ SeriesData2.prototype.getIndices = function() {
+ return this._store.getIndices();
+ };
+ SeriesData2.prototype.getDataExtent = function(dim) {
+ return this._store.getDataExtent(this._getStoreDimIndex(dim));
+ };
+ SeriesData2.prototype.getSum = function(dim) {
+ return this._store.getSum(this._getStoreDimIndex(dim));
+ };
+ SeriesData2.prototype.getMedian = function(dim) {
+ return this._store.getMedian(this._getStoreDimIndex(dim));
+ };
+ SeriesData2.prototype.getValues = function(dimensions, idx) {
+ var _this = this;
+ var store = this._store;
+ return isArray(dimensions) ? store.getValues(map2(dimensions, function(dim) {
+ return _this._getStoreDimIndex(dim);
+ }), idx) : store.getValues(dimensions);
+ };
+ SeriesData2.prototype.hasValue = function(idx) {
+ var dataDimIndicesOnCoord = this._dimSummary.dataDimIndicesOnCoord;
+ for (var i = 0, len2 = dataDimIndicesOnCoord.length; i < len2; i++) {
+ if (isNaN(this._store.get(dataDimIndicesOnCoord[i], idx))) {
+ return false;
+ }
+ }
+ return true;
+ };
+ SeriesData2.prototype.indexOfName = function(name) {
+ for (var i = 0, len2 = this._store.count(); i < len2; i++) {
+ if (this.getName(i) === name) {
+ return i;
+ }
+ }
+ return -1;
+ };
+ SeriesData2.prototype.getRawIndex = function(idx) {
+ return this._store.getRawIndex(idx);
+ };
+ SeriesData2.prototype.indexOfRawIndex = function(rawIndex) {
+ return this._store.indexOfRawIndex(rawIndex);
+ };
+ SeriesData2.prototype.rawIndexOf = function(dim, value) {
+ var invertedIndices = dim && this._invertedIndicesMap[dim];
+ if (true) {
+ if (!invertedIndices) {
+ throw new Error("Do not supported yet");
+ }
+ }
+ var rawIndex = invertedIndices && invertedIndices[value];
+ if (rawIndex == null || isNaN(rawIndex)) {
+ return INDEX_NOT_FOUND;
+ }
+ return rawIndex;
+ };
+ SeriesData2.prototype.indicesOfNearest = function(dim, value, maxDistance) {
+ return this._store.indicesOfNearest(this._getStoreDimIndex(dim), value, maxDistance);
+ };
+ SeriesData2.prototype.each = function(dims, cb, ctx) {
+ "use strict";
+ if (isFunction(dims)) {
+ ctx = cb;
+ cb = dims;
+ dims = [];
+ }
+ var fCtx = ctx || this;
+ var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this);
+ this._store.each(dimIndices, fCtx ? bind(cb, fCtx) : cb);
+ };
+ SeriesData2.prototype.filterSelf = function(dims, cb, ctx) {
+ "use strict";
+ if (isFunction(dims)) {
+ ctx = cb;
+ cb = dims;
+ dims = [];
+ }
+ var fCtx = ctx || this;
+ var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this);
+ this._store = this._store.filter(dimIndices, fCtx ? bind(cb, fCtx) : cb);
+ return this;
+ };
+ SeriesData2.prototype.selectRange = function(range) {
+ "use strict";
+ var _this = this;
+ var innerRange = {};
+ var dims = keys(range);
+ var dimIndices = [];
+ each(dims, function(dim) {
+ var dimIdx = _this._getStoreDimIndex(dim);
+ innerRange[dimIdx] = range[dim];
+ dimIndices.push(dimIdx);
+ });
+ this._store = this._store.selectRange(innerRange);
+ return this;
+ };
+ SeriesData2.prototype.mapArray = function(dims, cb, ctx) {
+ "use strict";
+ if (isFunction(dims)) {
+ ctx = cb;
+ cb = dims;
+ dims = [];
+ }
+ ctx = ctx || this;
+ var result = [];
+ this.each(dims, function() {
+ result.push(cb && cb.apply(this, arguments));
+ }, ctx);
+ return result;
+ };
+ SeriesData2.prototype.map = function(dims, cb, ctx, ctxCompat) {
+ "use strict";
+ var fCtx = ctx || ctxCompat || this;
+ var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this);
+ var list = cloneListForMapAndSample(this);
+ list._store = this._store.map(dimIndices, fCtx ? bind(cb, fCtx) : cb);
+ return list;
+ };
+ SeriesData2.prototype.modify = function(dims, cb, ctx, ctxCompat) {
+ var _this = this;
+ var fCtx = ctx || ctxCompat || this;
+ if (true) {
+ each(normalizeDimensions(dims), function(dim) {
+ var dimInfo = _this.getDimensionInfo(dim);
+ if (!dimInfo.isCalculationCoord) {
+ console.error("Danger: only stack dimension can be modified");
+ }
+ });
+ }
+ var dimIndices = map2(normalizeDimensions(dims), this._getStoreDimIndex, this);
+ this._store.modify(dimIndices, fCtx ? bind(cb, fCtx) : cb);
+ };
+ SeriesData2.prototype.downSample = function(dimension, rate, sampleValue, sampleIndex) {
+ var list = cloneListForMapAndSample(this);
+ list._store = this._store.downSample(this._getStoreDimIndex(dimension), rate, sampleValue, sampleIndex);
+ return list;
+ };
+ SeriesData2.prototype.minmaxDownSample = function(valueDimension, rate) {
+ var list = cloneListForMapAndSample(this);
+ list._store = this._store.minmaxDownSample(this._getStoreDimIndex(valueDimension), rate);
+ return list;
+ };
+ SeriesData2.prototype.lttbDownSample = function(valueDimension, rate) {
+ var list = cloneListForMapAndSample(this);
+ list._store = this._store.lttbDownSample(this._getStoreDimIndex(valueDimension), rate);
+ return list;
+ };
+ SeriesData2.prototype.getRawDataItem = function(idx) {
+ return this._store.getRawDataItem(idx);
+ };
+ SeriesData2.prototype.getItemModel = function(idx) {
+ var hostModel = this.hostModel;
+ var dataItem = this.getRawDataItem(idx);
+ return new Model_default(dataItem, hostModel, hostModel && hostModel.ecModel);
+ };
+ SeriesData2.prototype.diff = function(otherList) {
+ var thisList = this;
+ return new DataDiffer_default(otherList ? otherList.getStore().getIndices() : [], this.getStore().getIndices(), function(idx) {
+ return getId(otherList, idx);
+ }, function(idx) {
+ return getId(thisList, idx);
+ });
+ };
+ SeriesData2.prototype.getVisual = function(key) {
+ var visual = this._visual;
+ return visual && visual[key];
+ };
+ SeriesData2.prototype.setVisual = function(kvObj, val) {
+ this._visual = this._visual || {};
+ if (isObject3(kvObj)) {
+ extend(this._visual, kvObj);
+ } else {
+ this._visual[kvObj] = val;
+ }
+ };
+ SeriesData2.prototype.getItemVisual = function(idx, key) {
+ var itemVisual = this._itemVisuals[idx];
+ var val = itemVisual && itemVisual[key];
+ if (val == null) {
+ return this.getVisual(key);
+ }
+ return val;
+ };
+ SeriesData2.prototype.hasItemVisual = function() {
+ return this._itemVisuals.length > 0;
+ };
+ SeriesData2.prototype.ensureUniqueItemVisual = function(idx, key) {
+ var itemVisuals = this._itemVisuals;
+ var itemVisual = itemVisuals[idx];
+ if (!itemVisual) {
+ itemVisual = itemVisuals[idx] = {};
+ }
+ var val = itemVisual[key];
+ if (val == null) {
+ val = this.getVisual(key);
+ if (isArray(val)) {
+ val = val.slice();
+ } else if (isObject3(val)) {
+ val = extend({}, val);
+ }
+ itemVisual[key] = val;
+ }
+ return val;
+ };
+ SeriesData2.prototype.setItemVisual = function(idx, key, value) {
+ var itemVisual = this._itemVisuals[idx] || {};
+ this._itemVisuals[idx] = itemVisual;
+ if (isObject3(key)) {
+ extend(itemVisual, key);
+ } else {
+ itemVisual[key] = value;
+ }
+ };
+ SeriesData2.prototype.clearAllVisual = function() {
+ this._visual = {};
+ this._itemVisuals = [];
+ };
+ SeriesData2.prototype.setLayout = function(key, val) {
+ isObject3(key) ? extend(this._layout, key) : this._layout[key] = val;
+ };
+ SeriesData2.prototype.getLayout = function(key) {
+ return this._layout[key];
+ };
+ SeriesData2.prototype.getItemLayout = function(idx) {
+ return this._itemLayouts[idx];
+ };
+ SeriesData2.prototype.setItemLayout = function(idx, layout5, merge2) {
+ this._itemLayouts[idx] = merge2 ? extend(this._itemLayouts[idx] || {}, layout5) : layout5;
+ };
+ SeriesData2.prototype.clearItemLayouts = function() {
+ this._itemLayouts.length = 0;
+ };
+ SeriesData2.prototype.setItemGraphicEl = function(idx, el) {
+ var seriesIndex = this.hostModel && this.hostModel.seriesIndex;
+ setCommonECData(seriesIndex, this.dataType, idx, el);
+ this._graphicEls[idx] = el;
+ };
+ SeriesData2.prototype.getItemGraphicEl = function(idx) {
+ return this._graphicEls[idx];
+ };
+ SeriesData2.prototype.eachItemGraphicEl = function(cb, context) {
+ each(this._graphicEls, function(el, idx) {
+ if (el) {
+ cb && cb.call(context, el, idx);
+ }
+ });
+ };
+ SeriesData2.prototype.cloneShallow = function(list) {
+ if (!list) {
+ list = new SeriesData2(this._schema ? this._schema : map2(this.dimensions, this._getDimInfo, this), this.hostModel);
+ }
+ transferProperties(list, this);
+ list._store = this._store;
+ return list;
+ };
+ SeriesData2.prototype.wrapMethod = function(methodName, injectFunction) {
+ var originalMethod = this[methodName];
+ if (!isFunction(originalMethod)) {
+ return;
+ }
+ this.__wrappedMethods = this.__wrappedMethods || [];
+ this.__wrappedMethods.push(methodName);
+ this[methodName] = function() {
+ var res = originalMethod.apply(this, arguments);
+ return injectFunction.apply(this, [res].concat(slice(arguments)));
+ };
+ };
+ SeriesData2.internalField = function() {
+ prepareInvertedIndex = function(data) {
+ var invertedIndicesMap = data._invertedIndicesMap;
+ each(invertedIndicesMap, function(invertedIndices, dim) {
+ var dimInfo = data._dimInfos[dim];
+ var ordinalMeta = dimInfo.ordinalMeta;
+ var store = data._store;
+ if (ordinalMeta) {
+ invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array2(ordinalMeta.categories.length);
+ for (var i = 0; i < invertedIndices.length; i++) {
+ invertedIndices[i] = INDEX_NOT_FOUND;
+ }
+ for (var i = 0; i < store.count(); i++) {
+ invertedIndices[store.get(dimInfo.storeDimIndex, i)] = i;
+ }
+ }
+ });
+ };
+ getIdNameFromStore = function(data, dimIdx, idx) {
+ return convertOptionIdName(data._getCategory(dimIdx, idx), null);
+ };
+ getId = function(data, rawIndex) {
+ var id = data._idList[rawIndex];
+ if (id == null && data._idDimIdx != null) {
+ id = getIdNameFromStore(data, data._idDimIdx, rawIndex);
+ }
+ if (id == null) {
+ id = ID_PREFIX + rawIndex;
+ }
+ return id;
+ };
+ normalizeDimensions = function(dimensions) {
+ if (!isArray(dimensions)) {
+ dimensions = dimensions != null ? [dimensions] : [];
+ }
+ return dimensions;
+ };
+ cloneListForMapAndSample = function(original) {
+ var list = new SeriesData2(original._schema ? original._schema : map2(original.dimensions, original._getDimInfo, original), original.hostModel);
+ transferProperties(list, original);
+ return list;
+ };
+ transferProperties = function(target, source) {
+ each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function(propName) {
+ if (source.hasOwnProperty(propName)) {
+ target[propName] = source[propName];
+ }
+ });
+ target.__wrappedMethods = source.__wrappedMethods;
+ each(CLONE_PROPERTIES, function(propName) {
+ target[propName] = clone(source[propName]);
+ });
+ target._calculationInfo = extend({}, source._calculationInfo);
+ };
+ makeIdFromName = function(data, idx) {
+ var nameList = data._nameList;
+ var idList = data._idList;
+ var nameDimIdx = data._nameDimIdx;
+ var idDimIdx = data._idDimIdx;
+ var name = nameList[idx];
+ var id = idList[idx];
+ if (name == null && nameDimIdx != null) {
+ nameList[idx] = name = getIdNameFromStore(data, nameDimIdx, idx);
+ }
+ if (id == null && idDimIdx != null) {
+ idList[idx] = id = getIdNameFromStore(data, idDimIdx, idx);
+ }
+ if (id == null && name != null) {
+ var nameRepeatCount = data._nameRepeatCount;
+ var nmCnt = nameRepeatCount[name] = (nameRepeatCount[name] || 0) + 1;
+ id = name;
+ if (nmCnt > 1) {
+ id += "__ec__" + nmCnt;
+ }
+ idList[idx] = id;
+ }
+ };
+ }();
+ return SeriesData2;
+}();
+var SeriesData_default = SeriesData;
+
+// node_modules/echarts/lib/export/api/helper.js
+var helper_exports2 = {};
+__export(helper_exports2, {
+ createDimensions: () => createDimensions,
+ createList: () => createList,
+ createScale: () => createScale,
+ createSymbol: () => createSymbol,
+ createTextStyle: () => createTextStyle2,
+ dataStack: () => dataStack2,
+ enableHoverEmphasis: () => enableHoverEmphasis,
+ getECData: () => getECData,
+ getLayoutRect: () => getLayoutRect,
+ mixinAxisModelCommonMethods: () => mixinAxisModelCommonMethods
+});
+
+// node_modules/echarts/lib/data/helper/createDimensions.js
+function createDimensions(source, opt) {
+ return prepareSeriesDataSchema(source, opt).dimensions;
+}
+function prepareSeriesDataSchema(source, opt) {
+ if (!isSourceInstance(source)) {
+ source = createSourceFromSeriesDataOption(source);
+ }
+ opt = opt || {};
+ var sysDims = opt.coordDimensions || [];
+ var dimsDef = opt.dimensionsDefine || source.dimensionsDefine || [];
+ var coordDimNameMap = createHashMap();
+ var resultList = [];
+ var dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount);
+ var omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);
+ var isUsingSourceDimensionsDef = dimsDef === source.dimensionsDefine;
+ var dataDimNameMap = isUsingSourceDimensionsDef ? ensureSourceDimNameMap(source) : createDimNameMap(dimsDef);
+ var encodeDef = opt.encodeDefine;
+ if (!encodeDef && opt.encodeDefaulter) {
+ encodeDef = opt.encodeDefaulter(source, dimCount);
+ }
+ var encodeDefMap = createHashMap(encodeDef);
+ var indicesMap = new CtorInt32Array(dimCount);
+ for (var i = 0; i < indicesMap.length; i++) {
+ indicesMap[i] = -1;
+ }
+ function getResultItem(dimIdx) {
+ var idx = indicesMap[dimIdx];
+ if (idx < 0) {
+ var dimDefItemRaw = dimsDef[dimIdx];
+ var dimDefItem = isObject(dimDefItemRaw) ? dimDefItemRaw : {
+ name: dimDefItemRaw
+ };
+ var resultItem2 = new SeriesDimensionDefine_default();
+ var userDimName = dimDefItem.name;
+ if (userDimName != null && dataDimNameMap.get(userDimName) != null) {
+ resultItem2.name = resultItem2.displayName = userDimName;
+ }
+ dimDefItem.type != null && (resultItem2.type = dimDefItem.type);
+ dimDefItem.displayName != null && (resultItem2.displayName = dimDefItem.displayName);
+ var newIdx = resultList.length;
+ indicesMap[dimIdx] = newIdx;
+ resultItem2.storeDimIndex = dimIdx;
+ resultList.push(resultItem2);
+ return resultItem2;
+ }
+ return resultList[idx];
+ }
+ if (!omitUnusedDimensions) {
+ for (var i = 0; i < dimCount; i++) {
+ getResultItem(i);
+ }
+ }
+ encodeDefMap.each(function(dataDimsRaw, coordDim2) {
+ var dataDims = normalizeToArray(dataDimsRaw).slice();
+ if (dataDims.length === 1 && !isString(dataDims[0]) && dataDims[0] < 0) {
+ encodeDefMap.set(coordDim2, false);
+ return;
+ }
+ var validDataDims = encodeDefMap.set(coordDim2, []);
+ each(dataDims, function(resultDimIdxOrName, idx) {
+ var resultDimIdx2 = isString(resultDimIdxOrName) ? dataDimNameMap.get(resultDimIdxOrName) : resultDimIdxOrName;
+ if (resultDimIdx2 != null && resultDimIdx2 < dimCount) {
+ validDataDims[idx] = resultDimIdx2;
+ applyDim(getResultItem(resultDimIdx2), coordDim2, idx);
+ }
+ });
+ });
+ var availDimIdx = 0;
+ each(sysDims, function(sysDimItemRaw) {
+ var coordDim2;
+ var sysDimItemDimsDef;
+ var sysDimItemOtherDims;
+ var sysDimItem;
+ if (isString(sysDimItemRaw)) {
+ coordDim2 = sysDimItemRaw;
+ sysDimItem = {};
+ } else {
+ sysDimItem = sysDimItemRaw;
+ coordDim2 = sysDimItem.name;
+ var ordinalMeta = sysDimItem.ordinalMeta;
+ sysDimItem.ordinalMeta = null;
+ sysDimItem = extend({}, sysDimItem);
+ sysDimItem.ordinalMeta = ordinalMeta;
+ sysDimItemDimsDef = sysDimItem.dimsDef;
+ sysDimItemOtherDims = sysDimItem.otherDims;
+ sysDimItem.name = sysDimItem.coordDim = sysDimItem.coordDimIndex = sysDimItem.dimsDef = sysDimItem.otherDims = null;
+ }
+ var dataDims = encodeDefMap.get(coordDim2);
+ if (dataDims === false) {
+ return;
+ }
+ dataDims = normalizeToArray(dataDims);
+ if (!dataDims.length) {
+ for (var i2 = 0; i2 < (sysDimItemDimsDef && sysDimItemDimsDef.length || 1); i2++) {
+ while (availDimIdx < dimCount && getResultItem(availDimIdx).coordDim != null) {
+ availDimIdx++;
+ }
+ availDimIdx < dimCount && dataDims.push(availDimIdx++);
+ }
+ }
+ each(dataDims, function(resultDimIdx2, coordDimIndex) {
+ var resultItem2 = getResultItem(resultDimIdx2);
+ if (isUsingSourceDimensionsDef && sysDimItem.type != null) {
+ resultItem2.type = sysDimItem.type;
+ }
+ applyDim(defaults(resultItem2, sysDimItem), coordDim2, coordDimIndex);
+ if (resultItem2.name == null && sysDimItemDimsDef) {
+ var sysDimItemDimsDefItem = sysDimItemDimsDef[coordDimIndex];
+ !isObject(sysDimItemDimsDefItem) && (sysDimItemDimsDefItem = {
+ name: sysDimItemDimsDefItem
+ });
+ resultItem2.name = resultItem2.displayName = sysDimItemDimsDefItem.name;
+ resultItem2.defaultTooltip = sysDimItemDimsDefItem.defaultTooltip;
+ }
+ sysDimItemOtherDims && defaults(resultItem2.otherDims, sysDimItemOtherDims);
+ });
+ });
+ function applyDim(resultItem2, coordDim2, coordDimIndex) {
+ if (VISUAL_DIMENSIONS.get(coordDim2) != null) {
+ resultItem2.otherDims[coordDim2] = coordDimIndex;
+ } else {
+ resultItem2.coordDim = coordDim2;
+ resultItem2.coordDimIndex = coordDimIndex;
+ coordDimNameMap.set(coordDim2, true);
+ }
+ }
+ var generateCoord = opt.generateCoord;
+ var generateCoordCount = opt.generateCoordCount;
+ var fromZero = generateCoordCount != null;
+ generateCoordCount = generateCoord ? generateCoordCount || 1 : 0;
+ var extra = generateCoord || "value";
+ function ifNoNameFillWithCoordName(resultItem2) {
+ if (resultItem2.name == null) {
+ resultItem2.name = resultItem2.coordDim;
+ }
+ }
+ if (!omitUnusedDimensions) {
+ for (var resultDimIdx = 0; resultDimIdx < dimCount; resultDimIdx++) {
+ var resultItem = getResultItem(resultDimIdx);
+ var coordDim = resultItem.coordDim;
+ if (coordDim == null) {
+ resultItem.coordDim = genCoordDimName(extra, coordDimNameMap, fromZero);
+ resultItem.coordDimIndex = 0;
+ if (!generateCoord || generateCoordCount <= 0) {
+ resultItem.isExtraCoord = true;
+ }
+ generateCoordCount--;
+ }
+ ifNoNameFillWithCoordName(resultItem);
+ if (resultItem.type == null && (guessOrdinal(source, resultDimIdx) === BE_ORDINAL.Must || resultItem.isExtraCoord && (resultItem.otherDims.itemName != null || resultItem.otherDims.seriesName != null))) {
+ resultItem.type = "ordinal";
+ }
+ }
+ } else {
+ each(resultList, function(resultItem2) {
+ ifNoNameFillWithCoordName(resultItem2);
+ });
+ resultList.sort(function(item0, item1) {
+ return item0.storeDimIndex - item1.storeDimIndex;
+ });
+ }
+ removeDuplication(resultList);
+ return new SeriesDataSchema({
+ source,
+ dimensions: resultList,
+ fullDimensionCount: dimCount,
+ dimensionOmitted: omitUnusedDimensions
+ });
+}
+function removeDuplication(result) {
+ var duplicationMap = createHashMap();
+ for (var i = 0; i < result.length; i++) {
+ var dim = result[i];
+ var dimOriginalName = dim.name;
+ var count2 = duplicationMap.get(dimOriginalName) || 0;
+ if (count2 > 0) {
+ dim.name = dimOriginalName + (count2 - 1);
+ }
+ count2++;
+ duplicationMap.set(dimOriginalName, count2);
+ }
+}
+function getDimCount(source, sysDims, dimsDef, optDimCount) {
+ var dimCount = Math.max(source.dimensionsDetectedCount || 1, sysDims.length, dimsDef.length, optDimCount || 0);
+ each(sysDims, function(sysDimItem) {
+ var sysDimItemDimsDef;
+ if (isObject(sysDimItem) && (sysDimItemDimsDef = sysDimItem.dimsDef)) {
+ dimCount = Math.max(dimCount, sysDimItemDimsDef.length);
+ }
+ });
+ return dimCount;
+}
+function genCoordDimName(name, map3, fromZero) {
+ if (fromZero || map3.hasKey(name)) {
+ var i = 0;
+ while (map3.hasKey(name + i)) {
+ i++;
+ }
+ name += i;
+ }
+ map3.set(name, true);
+ return name;
+}
+
+// node_modules/echarts/lib/model/referHelper.js
+var CoordSysInfo = function() {
+ function CoordSysInfo2(coordSysName) {
+ this.coordSysDims = [];
+ this.axisMap = createHashMap();
+ this.categoryAxisMap = createHashMap();
+ this.coordSysName = coordSysName;
+ }
+ return CoordSysInfo2;
+}();
+function getCoordSysInfoBySeries(seriesModel) {
+ var coordSysName = seriesModel.get("coordinateSystem");
+ var result = new CoordSysInfo(coordSysName);
+ var fetch = fetchers[coordSysName];
+ if (fetch) {
+ fetch(seriesModel, result, result.axisMap, result.categoryAxisMap);
+ return result;
+ }
+}
+var fetchers = {
+ cartesian2d: function(seriesModel, result, axisMap, categoryAxisMap) {
+ var xAxisModel = seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0];
+ var yAxisModel = seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0];
+ if (true) {
+ if (!xAxisModel) {
+ throw new Error('xAxis "' + retrieve(seriesModel.get("xAxisIndex"), seriesModel.get("xAxisId"), 0) + '" not found');
+ }
+ if (!yAxisModel) {
+ throw new Error('yAxis "' + retrieve(seriesModel.get("xAxisIndex"), seriesModel.get("yAxisId"), 0) + '" not found');
+ }
+ }
+ result.coordSysDims = ["x", "y"];
+ axisMap.set("x", xAxisModel);
+ axisMap.set("y", yAxisModel);
+ if (isCategory(xAxisModel)) {
+ categoryAxisMap.set("x", xAxisModel);
+ result.firstCategoryDimIndex = 0;
+ }
+ if (isCategory(yAxisModel)) {
+ categoryAxisMap.set("y", yAxisModel);
+ result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);
+ }
+ },
+ singleAxis: function(seriesModel, result, axisMap, categoryAxisMap) {
+ var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
+ if (true) {
+ if (!singleAxisModel) {
+ throw new Error("singleAxis should be specified.");
+ }
+ }
+ result.coordSysDims = ["single"];
+ axisMap.set("single", singleAxisModel);
+ if (isCategory(singleAxisModel)) {
+ categoryAxisMap.set("single", singleAxisModel);
+ result.firstCategoryDimIndex = 0;
+ }
+ },
+ polar: function(seriesModel, result, axisMap, categoryAxisMap) {
+ var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0];
+ var radiusAxisModel = polarModel.findAxisModel("radiusAxis");
+ var angleAxisModel = polarModel.findAxisModel("angleAxis");
+ if (true) {
+ if (!angleAxisModel) {
+ throw new Error("angleAxis option not found");
+ }
+ if (!radiusAxisModel) {
+ throw new Error("radiusAxis option not found");
+ }
+ }
+ result.coordSysDims = ["radius", "angle"];
+ axisMap.set("radius", radiusAxisModel);
+ axisMap.set("angle", angleAxisModel);
+ if (isCategory(radiusAxisModel)) {
+ categoryAxisMap.set("radius", radiusAxisModel);
+ result.firstCategoryDimIndex = 0;
+ }
+ if (isCategory(angleAxisModel)) {
+ categoryAxisMap.set("angle", angleAxisModel);
+ result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1);
+ }
+ },
+ geo: function(seriesModel, result, axisMap, categoryAxisMap) {
+ result.coordSysDims = ["lng", "lat"];
+ },
+ parallel: function(seriesModel, result, axisMap, categoryAxisMap) {
+ var ecModel = seriesModel.ecModel;
+ var parallelModel = ecModel.getComponent("parallel", seriesModel.get("parallelIndex"));
+ var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice();
+ each(parallelModel.parallelAxisIndex, function(axisIndex, index) {
+ var axisModel = ecModel.getComponent("parallelAxis", axisIndex);
+ var axisDim = coordSysDims[index];
+ axisMap.set(axisDim, axisModel);
+ if (isCategory(axisModel)) {
+ categoryAxisMap.set(axisDim, axisModel);
+ if (result.firstCategoryDimIndex == null) {
+ result.firstCategoryDimIndex = index;
+ }
+ }
+ });
+ }
+};
+function isCategory(axisModel) {
+ return axisModel.get("type") === "category";
+}
+
+// node_modules/echarts/lib/data/helper/dataStackHelper.js
+function enableDataStack(seriesModel, dimensionsInput, opt) {
+ opt = opt || {};
+ var byIndex = opt.byIndex;
+ var stackedCoordDimension = opt.stackedCoordDimension;
+ var dimensionDefineList;
+ var schema;
+ var store;
+ if (isLegacyDimensionsInput(dimensionsInput)) {
+ dimensionDefineList = dimensionsInput;
+ } else {
+ schema = dimensionsInput.schema;
+ dimensionDefineList = schema.dimensions;
+ store = dimensionsInput.store;
+ }
+ var mayStack = !!(seriesModel && seriesModel.get("stack"));
+ var stackedByDimInfo;
+ var stackedDimInfo;
+ var stackResultDimension;
+ var stackedOverDimension;
+ each(dimensionDefineList, function(dimensionInfo, index) {
+ if (isString(dimensionInfo)) {
+ dimensionDefineList[index] = dimensionInfo = {
+ name: dimensionInfo
+ };
+ }
+ if (mayStack && !dimensionInfo.isExtraCoord) {
+ if (!byIndex && !stackedByDimInfo && dimensionInfo.ordinalMeta) {
+ stackedByDimInfo = dimensionInfo;
+ }
+ if (!stackedDimInfo && dimensionInfo.type !== "ordinal" && dimensionInfo.type !== "time" && (!stackedCoordDimension || stackedCoordDimension === dimensionInfo.coordDim)) {
+ stackedDimInfo = dimensionInfo;
+ }
+ }
+ });
+ if (stackedDimInfo && !byIndex && !stackedByDimInfo) {
+ byIndex = true;
+ }
+ if (stackedDimInfo) {
+ stackResultDimension = "__\0ecstackresult_" + seriesModel.id;
+ stackedOverDimension = "__\0ecstackedover_" + seriesModel.id;
+ if (stackedByDimInfo) {
+ stackedByDimInfo.createInvertedIndices = true;
+ }
+ var stackedDimCoordDim_1 = stackedDimInfo.coordDim;
+ var stackedDimType = stackedDimInfo.type;
+ var stackedDimCoordIndex_1 = 0;
+ each(dimensionDefineList, function(dimensionInfo) {
+ if (dimensionInfo.coordDim === stackedDimCoordDim_1) {
+ stackedDimCoordIndex_1++;
+ }
+ });
+ var stackedOverDimensionDefine = {
+ name: stackResultDimension,
+ coordDim: stackedDimCoordDim_1,
+ coordDimIndex: stackedDimCoordIndex_1,
+ type: stackedDimType,
+ isExtraCoord: true,
+ isCalculationCoord: true,
+ storeDimIndex: dimensionDefineList.length
+ };
+ var stackResultDimensionDefine = {
+ name: stackedOverDimension,
+ coordDim: stackedOverDimension,
+ coordDimIndex: stackedDimCoordIndex_1 + 1,
+ type: stackedDimType,
+ isExtraCoord: true,
+ isCalculationCoord: true,
+ storeDimIndex: dimensionDefineList.length + 1
+ };
+ if (schema) {
+ if (store) {
+ stackedOverDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackedOverDimension, stackedDimType);
+ stackResultDimensionDefine.storeDimIndex = store.ensureCalculationDimension(stackResultDimension, stackedDimType);
+ }
+ schema.appendCalculationDimension(stackedOverDimensionDefine);
+ schema.appendCalculationDimension(stackResultDimensionDefine);
+ } else {
+ dimensionDefineList.push(stackedOverDimensionDefine);
+ dimensionDefineList.push(stackResultDimensionDefine);
+ }
+ }
+ return {
+ stackedDimension: stackedDimInfo && stackedDimInfo.name,
+ stackedByDimension: stackedByDimInfo && stackedByDimInfo.name,
+ isStackedByIndex: byIndex,
+ stackedOverDimension,
+ stackResultDimension
+ };
+}
+function isLegacyDimensionsInput(dimensionsInput) {
+ return !isSeriesDataSchema(dimensionsInput.schema);
+}
+function isDimensionStacked(data, stackedDim) {
+ return !!stackedDim && stackedDim === data.getCalculationInfo("stackedDimension");
+}
+function getStackedDimension(data, targetDim) {
+ return isDimensionStacked(data, targetDim) ? data.getCalculationInfo("stackResultDimension") : targetDim;
+}
+
+// node_modules/echarts/lib/chart/helper/createSeriesData.js
+function getCoordSysDimDefs(seriesModel, coordSysInfo) {
+ var coordSysName = seriesModel.get("coordinateSystem");
+ var registeredCoordSys = CoordinateSystem_default.get(coordSysName);
+ var coordSysDimDefs;
+ if (coordSysInfo && coordSysInfo.coordSysDims) {
+ coordSysDimDefs = map(coordSysInfo.coordSysDims, function(dim) {
+ var dimInfo = {
+ name: dim
+ };
+ var axisModel = coordSysInfo.axisMap.get(dim);
+ if (axisModel) {
+ var axisType = axisModel.get("type");
+ dimInfo.type = getDimensionTypeByAxis(axisType);
+ }
+ return dimInfo;
+ });
+ }
+ if (!coordSysDimDefs) {
+ coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"];
+ }
+ return coordSysDimDefs;
+}
+function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {
+ var firstCategoryDimIndex;
+ var hasNameEncode;
+ coordSysInfo && each(dimInfoList, function(dimInfo, dimIndex) {
+ var coordDim = dimInfo.coordDim;
+ var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);
+ if (categoryAxisModel) {
+ if (firstCategoryDimIndex == null) {
+ firstCategoryDimIndex = dimIndex;
+ }
+ dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();
+ if (createInvertedIndices) {
+ dimInfo.createInvertedIndices = true;
+ }
+ }
+ if (dimInfo.otherDims.itemName != null) {
+ hasNameEncode = true;
+ }
+ });
+ if (!hasNameEncode && firstCategoryDimIndex != null) {
+ dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;
+ }
+ return firstCategoryDimIndex;
+}
+function createSeriesData(sourceRaw, seriesModel, opt) {
+ opt = opt || {};
+ var sourceManager = seriesModel.getSourceManager();
+ var source;
+ var isOriginalSource = false;
+ if (sourceRaw) {
+ isOriginalSource = true;
+ source = createSourceFromSeriesDataOption(sourceRaw);
+ } else {
+ source = sourceManager.getSource();
+ isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;
+ }
+ var coordSysInfo = getCoordSysInfoBySeries(seriesModel);
+ var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);
+ var useEncodeDefaulter = opt.useEncodeDefaulter;
+ var encodeDefaulter = isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;
+ var createDimensionOptions = {
+ coordDimensions: coordSysDimDefs,
+ generateCoord: opt.generateCoord,
+ encodeDefine: seriesModel.getEncode(),
+ encodeDefaulter,
+ canOmitUnusedDimensions: !isOriginalSource
+ };
+ var schema = prepareSeriesDataSchema(source, createDimensionOptions);
+ var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);
+ var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;
+ var stackCalculationInfo = enableDataStack(seriesModel, {
+ schema,
+ store
+ });
+ var data = new SeriesData_default(schema, seriesModel);
+ data.setCalculationInfo(stackCalculationInfo);
+ var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function(itemOpt, dimName, dataIndex, dimIndex) {
+ return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);
+ } : null;
+ data.hasItemOption = false;
+ data.initData(
+ isOriginalSource ? source : store,
+ null,
+ dimValueGetter
+ );
+ return data;
+}
+function isNeedCompleteOrdinalData(source) {
+ if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {
+ var sampleItem = firstDataNotNull(source.data || []);
+ return !isArray(getDataItemValue(sampleItem));
+ }
+}
+function firstDataNotNull(arr) {
+ var i = 0;
+ while (i < arr.length && arr[i] == null) {
+ i++;
+ }
+ return arr[i];
+}
+var createSeriesData_default = createSeriesData;
+
+// node_modules/echarts/lib/scale/Scale.js
+var Scale = function() {
+ function Scale2(setting) {
+ this._setting = setting || {};
+ this._extent = [Infinity, -Infinity];
+ }
+ Scale2.prototype.getSetting = function(name) {
+ return this._setting[name];
+ };
+ Scale2.prototype.unionExtent = function(other) {
+ var extent3 = this._extent;
+ other[0] < extent3[0] && (extent3[0] = other[0]);
+ other[1] > extent3[1] && (extent3[1] = other[1]);
+ };
+ Scale2.prototype.unionExtentFromData = function(data, dim) {
+ this.unionExtent(data.getApproximateExtent(dim));
+ };
+ Scale2.prototype.getExtent = function() {
+ return this._extent.slice();
+ };
+ Scale2.prototype.setExtent = function(start2, end2) {
+ var thisExtent = this._extent;
+ if (!isNaN(start2)) {
+ thisExtent[0] = start2;
+ }
+ if (!isNaN(end2)) {
+ thisExtent[1] = end2;
+ }
+ };
+ Scale2.prototype.isInExtentRange = function(value) {
+ return this._extent[0] <= value && this._extent[1] >= value;
+ };
+ Scale2.prototype.isBlank = function() {
+ return this._isBlank;
+ };
+ Scale2.prototype.setBlank = function(isBlank) {
+ this._isBlank = isBlank;
+ };
+ return Scale2;
+}();
+enableClassManagement(Scale);
+var Scale_default = Scale;
+
+// node_modules/echarts/lib/data/OrdinalMeta.js
+var uidBase = 0;
+var OrdinalMeta = function() {
+ function OrdinalMeta2(opt) {
+ this.categories = opt.categories || [];
+ this._needCollect = opt.needCollect;
+ this._deduplication = opt.deduplication;
+ this.uid = ++uidBase;
+ }
+ OrdinalMeta2.createByAxisModel = function(axisModel) {
+ var option = axisModel.option;
+ var data = option.data;
+ var categories = data && map(data, getName);
+ return new OrdinalMeta2({
+ categories,
+ needCollect: !categories,
+ deduplication: option.dedplication !== false
+ });
+ };
+ ;
+ OrdinalMeta2.prototype.getOrdinal = function(category) {
+ return this._getOrCreateMap().get(category);
+ };
+ OrdinalMeta2.prototype.parseAndCollect = function(category) {
+ var index;
+ var needCollect = this._needCollect;
+ if (!isString(category) && !needCollect) {
+ return category;
+ }
+ if (needCollect && !this._deduplication) {
+ index = this.categories.length;
+ this.categories[index] = category;
+ return index;
+ }
+ var map3 = this._getOrCreateMap();
+ index = map3.get(category);
+ if (index == null) {
+ if (needCollect) {
+ index = this.categories.length;
+ this.categories[index] = category;
+ map3.set(category, index);
+ } else {
+ index = NaN;
+ }
+ }
+ return index;
+ };
+ OrdinalMeta2.prototype._getOrCreateMap = function() {
+ return this._map || (this._map = createHashMap(this.categories));
+ };
+ return OrdinalMeta2;
+}();
+function getName(obj) {
+ if (isObject(obj) && obj.value != null) {
+ return obj.value;
+ } else {
+ return obj + "";
+ }
+}
+var OrdinalMeta_default = OrdinalMeta;
+
+// node_modules/echarts/lib/scale/helper.js
+function isValueNice(val) {
+ var exp10 = Math.pow(10, quantityExponent(Math.abs(val)));
+ var f = Math.abs(val / exp10);
+ return f === 0 || f === 1 || f === 2 || f === 3 || f === 5;
+}
+function isIntervalOrLogScale(scale4) {
+ return scale4.type === "interval" || scale4.type === "log";
+}
+function intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval) {
+ var result = {};
+ var span = extent3[1] - extent3[0];
+ var interval = result.interval = nice(span / splitNumber, true);
+ if (minInterval != null && interval < minInterval) {
+ interval = result.interval = minInterval;
+ }
+ if (maxInterval != null && interval > maxInterval) {
+ interval = result.interval = maxInterval;
+ }
+ var precision = result.intervalPrecision = getIntervalPrecision(interval);
+ var niceTickExtent = result.niceTickExtent = [round(Math.ceil(extent3[0] / interval) * interval, precision), round(Math.floor(extent3[1] / interval) * interval, precision)];
+ fixExtent(niceTickExtent, extent3);
+ return result;
+}
+function increaseInterval(interval) {
+ var exp10 = Math.pow(10, quantityExponent(interval));
+ var f = interval / exp10;
+ if (!f) {
+ f = 1;
+ } else if (f === 2) {
+ f = 3;
+ } else if (f === 3) {
+ f = 5;
+ } else {
+ f *= 2;
+ }
+ return round(f * exp10);
+}
+function getIntervalPrecision(interval) {
+ return getPrecision(interval) + 2;
+}
+function clamp(niceTickExtent, idx, extent3) {
+ niceTickExtent[idx] = Math.max(Math.min(niceTickExtent[idx], extent3[1]), extent3[0]);
+}
+function fixExtent(niceTickExtent, extent3) {
+ !isFinite(niceTickExtent[0]) && (niceTickExtent[0] = extent3[0]);
+ !isFinite(niceTickExtent[1]) && (niceTickExtent[1] = extent3[1]);
+ clamp(niceTickExtent, 0, extent3);
+ clamp(niceTickExtent, 1, extent3);
+ if (niceTickExtent[0] > niceTickExtent[1]) {
+ niceTickExtent[0] = niceTickExtent[1];
+ }
+}
+function contain2(val, extent3) {
+ return val >= extent3[0] && val <= extent3[1];
+}
+function normalize2(val, extent3) {
+ if (extent3[1] === extent3[0]) {
+ return 0.5;
+ }
+ return (val - extent3[0]) / (extent3[1] - extent3[0]);
+}
+function scale3(val, extent3) {
+ return val * (extent3[1] - extent3[0]) + extent3[0];
+}
+
+// node_modules/echarts/lib/scale/Ordinal.js
+var OrdinalScale = function(_super) {
+ __extends(OrdinalScale2, _super);
+ function OrdinalScale2(setting) {
+ var _this = _super.call(this, setting) || this;
+ _this.type = "ordinal";
+ var ordinalMeta = _this.getSetting("ordinalMeta");
+ if (!ordinalMeta) {
+ ordinalMeta = new OrdinalMeta_default({});
+ }
+ if (isArray(ordinalMeta)) {
+ ordinalMeta = new OrdinalMeta_default({
+ categories: map(ordinalMeta, function(item) {
+ return isObject(item) ? item.value : item;
+ })
+ });
+ }
+ _this._ordinalMeta = ordinalMeta;
+ _this._extent = _this.getSetting("extent") || [0, ordinalMeta.categories.length - 1];
+ return _this;
+ }
+ OrdinalScale2.prototype.parse = function(val) {
+ if (val == null) {
+ return NaN;
+ }
+ return isString(val) ? this._ordinalMeta.getOrdinal(val) : Math.round(val);
+ };
+ OrdinalScale2.prototype.contain = function(rank) {
+ rank = this.parse(rank);
+ return contain2(rank, this._extent) && this._ordinalMeta.categories[rank] != null;
+ };
+ OrdinalScale2.prototype.normalize = function(val) {
+ val = this._getTickNumber(this.parse(val));
+ return normalize2(val, this._extent);
+ };
+ OrdinalScale2.prototype.scale = function(val) {
+ val = Math.round(scale3(val, this._extent));
+ return this.getRawOrdinalNumber(val);
+ };
+ OrdinalScale2.prototype.getTicks = function() {
+ var ticks = [];
+ var extent3 = this._extent;
+ var rank = extent3[0];
+ while (rank <= extent3[1]) {
+ ticks.push({
+ value: rank
+ });
+ rank++;
+ }
+ return ticks;
+ };
+ OrdinalScale2.prototype.getMinorTicks = function(splitNumber) {
+ return;
+ };
+ OrdinalScale2.prototype.setSortInfo = function(info) {
+ if (info == null) {
+ this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;
+ return;
+ }
+ var infoOrdinalNumbers = info.ordinalNumbers;
+ var ordinalsByTick = this._ordinalNumbersByTick = [];
+ var ticksByOrdinal = this._ticksByOrdinalNumber = [];
+ var tickNum = 0;
+ var allCategoryLen = this._ordinalMeta.categories.length;
+ for (var len2 = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len2; ++tickNum) {
+ var ordinalNumber = infoOrdinalNumbers[tickNum];
+ ordinalsByTick[tickNum] = ordinalNumber;
+ ticksByOrdinal[ordinalNumber] = tickNum;
+ }
+ var unusedOrdinal = 0;
+ for (; tickNum < allCategoryLen; ++tickNum) {
+ while (ticksByOrdinal[unusedOrdinal] != null) {
+ unusedOrdinal++;
+ }
+ ;
+ ordinalsByTick.push(unusedOrdinal);
+ ticksByOrdinal[unusedOrdinal] = tickNum;
+ }
+ };
+ OrdinalScale2.prototype._getTickNumber = function(ordinal) {
+ var ticksByOrdinalNumber = this._ticksByOrdinalNumber;
+ return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal;
+ };
+ OrdinalScale2.prototype.getRawOrdinalNumber = function(tickNumber) {
+ var ordinalNumbersByTick = this._ordinalNumbersByTick;
+ return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber;
+ };
+ OrdinalScale2.prototype.getLabel = function(tick) {
+ if (!this.isBlank()) {
+ var ordinalNumber = this.getRawOrdinalNumber(tick.value);
+ var cateogry = this._ordinalMeta.categories[ordinalNumber];
+ return cateogry == null ? "" : cateogry + "";
+ }
+ };
+ OrdinalScale2.prototype.count = function() {
+ return this._extent[1] - this._extent[0] + 1;
+ };
+ OrdinalScale2.prototype.unionExtentFromData = function(data, dim) {
+ this.unionExtent(data.getApproximateExtent(dim));
+ };
+ OrdinalScale2.prototype.isInExtentRange = function(value) {
+ value = this._getTickNumber(value);
+ return this._extent[0] <= value && this._extent[1] >= value;
+ };
+ OrdinalScale2.prototype.getOrdinalMeta = function() {
+ return this._ordinalMeta;
+ };
+ OrdinalScale2.prototype.calcNiceTicks = function() {
+ };
+ OrdinalScale2.prototype.calcNiceExtent = function() {
+ };
+ OrdinalScale2.type = "ordinal";
+ return OrdinalScale2;
+}(Scale_default);
+Scale_default.registerClass(OrdinalScale);
+var Ordinal_default = OrdinalScale;
+
+// node_modules/echarts/lib/scale/Interval.js
+var roundNumber = round;
+var IntervalScale = function(_super) {
+ __extends(IntervalScale2, _super);
+ function IntervalScale2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "interval";
+ _this._interval = 0;
+ _this._intervalPrecision = 2;
+ return _this;
+ }
+ IntervalScale2.prototype.parse = function(val) {
+ return val;
+ };
+ IntervalScale2.prototype.contain = function(val) {
+ return contain2(val, this._extent);
+ };
+ IntervalScale2.prototype.normalize = function(val) {
+ return normalize2(val, this._extent);
+ };
+ IntervalScale2.prototype.scale = function(val) {
+ return scale3(val, this._extent);
+ };
+ IntervalScale2.prototype.setExtent = function(start2, end2) {
+ var thisExtent = this._extent;
+ if (!isNaN(start2)) {
+ thisExtent[0] = parseFloat(start2);
+ }
+ if (!isNaN(end2)) {
+ thisExtent[1] = parseFloat(end2);
+ }
+ };
+ IntervalScale2.prototype.unionExtent = function(other) {
+ var extent3 = this._extent;
+ other[0] < extent3[0] && (extent3[0] = other[0]);
+ other[1] > extent3[1] && (extent3[1] = other[1]);
+ this.setExtent(extent3[0], extent3[1]);
+ };
+ IntervalScale2.prototype.getInterval = function() {
+ return this._interval;
+ };
+ IntervalScale2.prototype.setInterval = function(interval) {
+ this._interval = interval;
+ this._niceExtent = this._extent.slice();
+ this._intervalPrecision = getIntervalPrecision(interval);
+ };
+ IntervalScale2.prototype.getTicks = function(expandToNicedExtent) {
+ var interval = this._interval;
+ var extent3 = this._extent;
+ var niceTickExtent = this._niceExtent;
+ var intervalPrecision = this._intervalPrecision;
+ var ticks = [];
+ if (!interval) {
+ return ticks;
+ }
+ var safeLimit = 1e4;
+ if (extent3[0] < niceTickExtent[0]) {
+ if (expandToNicedExtent) {
+ ticks.push({
+ value: roundNumber(niceTickExtent[0] - interval, intervalPrecision)
+ });
+ } else {
+ ticks.push({
+ value: extent3[0]
+ });
+ }
+ }
+ var tick = niceTickExtent[0];
+ while (tick <= niceTickExtent[1]) {
+ ticks.push({
+ value: tick
+ });
+ tick = roundNumber(tick + interval, intervalPrecision);
+ if (tick === ticks[ticks.length - 1].value) {
+ break;
+ }
+ if (ticks.length > safeLimit) {
+ return [];
+ }
+ }
+ var lastNiceTick = ticks.length ? ticks[ticks.length - 1].value : niceTickExtent[1];
+ if (extent3[1] > lastNiceTick) {
+ if (expandToNicedExtent) {
+ ticks.push({
+ value: roundNumber(lastNiceTick + interval, intervalPrecision)
+ });
+ } else {
+ ticks.push({
+ value: extent3[1]
+ });
+ }
+ }
+ return ticks;
+ };
+ IntervalScale2.prototype.getMinorTicks = function(splitNumber) {
+ var ticks = this.getTicks(true);
+ var minorTicks = [];
+ var extent3 = this.getExtent();
+ for (var i = 1; i < ticks.length; i++) {
+ var nextTick = ticks[i];
+ var prevTick = ticks[i - 1];
+ var count2 = 0;
+ var minorTicksGroup = [];
+ var interval = nextTick.value - prevTick.value;
+ var minorInterval = interval / splitNumber;
+ while (count2 < splitNumber - 1) {
+ var minorTick = roundNumber(prevTick.value + (count2 + 1) * minorInterval);
+ if (minorTick > extent3[0] && minorTick < extent3[1]) {
+ minorTicksGroup.push(minorTick);
+ }
+ count2++;
+ }
+ minorTicks.push(minorTicksGroup);
+ }
+ return minorTicks;
+ };
+ IntervalScale2.prototype.getLabel = function(data, opt) {
+ if (data == null) {
+ return "";
+ }
+ var precision = opt && opt.precision;
+ if (precision == null) {
+ precision = getPrecision(data.value) || 0;
+ } else if (precision === "auto") {
+ precision = this._intervalPrecision;
+ }
+ var dataNum = roundNumber(data.value, precision, true);
+ return addCommas(dataNum);
+ };
+ IntervalScale2.prototype.calcNiceTicks = function(splitNumber, minInterval, maxInterval) {
+ splitNumber = splitNumber || 5;
+ var extent3 = this._extent;
+ var span = extent3[1] - extent3[0];
+ if (!isFinite(span)) {
+ return;
+ }
+ if (span < 0) {
+ span = -span;
+ extent3.reverse();
+ }
+ var result = intervalScaleNiceTicks(extent3, splitNumber, minInterval, maxInterval);
+ this._intervalPrecision = result.intervalPrecision;
+ this._interval = result.interval;
+ this._niceExtent = result.niceTickExtent;
+ };
+ IntervalScale2.prototype.calcNiceExtent = function(opt) {
+ var extent3 = this._extent;
+ if (extent3[0] === extent3[1]) {
+ if (extent3[0] !== 0) {
+ var expandSize = Math.abs(extent3[0]);
+ if (!opt.fixMax) {
+ extent3[1] += expandSize / 2;
+ extent3[0] -= expandSize / 2;
+ } else {
+ extent3[0] -= expandSize / 2;
+ }
+ } else {
+ extent3[1] = 1;
+ }
+ }
+ var span = extent3[1] - extent3[0];
+ if (!isFinite(span)) {
+ extent3[0] = 0;
+ extent3[1] = 1;
+ }
+ this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);
+ var interval = this._interval;
+ if (!opt.fixMin) {
+ extent3[0] = roundNumber(Math.floor(extent3[0] / interval) * interval);
+ }
+ if (!opt.fixMax) {
+ extent3[1] = roundNumber(Math.ceil(extent3[1] / interval) * interval);
+ }
+ };
+ IntervalScale2.prototype.setNiceExtent = function(min3, max3) {
+ this._niceExtent = [min3, max3];
+ };
+ IntervalScale2.type = "interval";
+ return IntervalScale2;
+}(Scale_default);
+Scale_default.registerClass(IntervalScale);
+var Interval_default = IntervalScale;
+
+// node_modules/echarts/lib/util/vendor.js
+var supportFloat32Array = typeof Float32Array !== "undefined";
+var Float32ArrayCtor = !supportFloat32Array ? Array : Float32Array;
+function createFloat32Array(arg) {
+ if (isArray(arg)) {
+ return supportFloat32Array ? new Float32Array(arg) : arg;
+ }
+ return new Float32ArrayCtor(arg);
+}
+
+// node_modules/echarts/lib/layout/barGrid.js
+var STACK_PREFIX = "__ec_stack_";
+function getSeriesStackId(seriesModel) {
+ return seriesModel.get("stack") || STACK_PREFIX + seriesModel.seriesIndex;
+}
+function getAxisKey(axis) {
+ return axis.dim + axis.index;
+}
+function getLayoutOnAxis(opt) {
+ var params = [];
+ var baseAxis = opt.axis;
+ var axisKey = "axis0";
+ if (baseAxis.type !== "category") {
+ return;
+ }
+ var bandWidth = baseAxis.getBandWidth();
+ for (var i = 0; i < opt.count || 0; i++) {
+ params.push(defaults({
+ bandWidth,
+ axisKey,
+ stackId: STACK_PREFIX + i
+ }, opt));
+ }
+ var widthAndOffsets = doCalBarWidthAndOffset(params);
+ var result = [];
+ for (var i = 0; i < opt.count; i++) {
+ var item = widthAndOffsets[axisKey][STACK_PREFIX + i];
+ item.offsetCenter = item.offset + item.width / 2;
+ result.push(item);
+ }
+ return result;
+}
+function prepareLayoutBarSeries(seriesType2, ecModel) {
+ var seriesModels = [];
+ ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
+ if (isOnCartesian(seriesModel)) {
+ seriesModels.push(seriesModel);
+ }
+ });
+ return seriesModels;
+}
+function getValueAxesMinGaps(barSeries) {
+ var axisValues = {};
+ each(barSeries, function(seriesModel) {
+ var cartesian = seriesModel.coordinateSystem;
+ var baseAxis = cartesian.getBaseAxis();
+ if (baseAxis.type !== "time" && baseAxis.type !== "value") {
+ return;
+ }
+ var data = seriesModel.getData();
+ var key2 = baseAxis.dim + "_" + baseAxis.index;
+ var dimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));
+ var store = data.getStore();
+ for (var i = 0, cnt = store.count(); i < cnt; ++i) {
+ var value = store.get(dimIdx, i);
+ if (!axisValues[key2]) {
+ axisValues[key2] = [value];
+ } else {
+ axisValues[key2].push(value);
+ }
+ }
+ });
+ var axisMinGaps = {};
+ for (var key in axisValues) {
+ if (axisValues.hasOwnProperty(key)) {
+ var valuesInAxis = axisValues[key];
+ if (valuesInAxis) {
+ valuesInAxis.sort(function(a, b) {
+ return a - b;
+ });
+ var min3 = null;
+ for (var j = 1; j < valuesInAxis.length; ++j) {
+ var delta = valuesInAxis[j] - valuesInAxis[j - 1];
+ if (delta > 0) {
+ min3 = min3 === null ? delta : Math.min(min3, delta);
+ }
+ }
+ axisMinGaps[key] = min3;
+ }
+ }
+ }
+ return axisMinGaps;
+}
+function makeColumnLayout(barSeries) {
+ var axisMinGaps = getValueAxesMinGaps(barSeries);
+ var seriesInfoList = [];
+ each(barSeries, function(seriesModel) {
+ var cartesian = seriesModel.coordinateSystem;
+ var baseAxis = cartesian.getBaseAxis();
+ var axisExtent = baseAxis.getExtent();
+ var bandWidth;
+ if (baseAxis.type === "category") {
+ bandWidth = baseAxis.getBandWidth();
+ } else if (baseAxis.type === "value" || baseAxis.type === "time") {
+ var key = baseAxis.dim + "_" + baseAxis.index;
+ var minGap = axisMinGaps[key];
+ var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);
+ var scale4 = baseAxis.scale.getExtent();
+ var scaleSpan = Math.abs(scale4[1] - scale4[0]);
+ bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan;
+ } else {
+ var data = seriesModel.getData();
+ bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();
+ }
+ var barWidth = parsePercent2(seriesModel.get("barWidth"), bandWidth);
+ var barMaxWidth = parsePercent2(seriesModel.get("barMaxWidth"), bandWidth);
+ var barMinWidth = parsePercent2(
+ seriesModel.get("barMinWidth") || (isInLargeMode(seriesModel) ? 0.5 : 1),
+ bandWidth
+ );
+ var barGap = seriesModel.get("barGap");
+ var barCategoryGap = seriesModel.get("barCategoryGap");
+ seriesInfoList.push({
+ bandWidth,
+ barWidth,
+ barMaxWidth,
+ barMinWidth,
+ barGap,
+ barCategoryGap,
+ axisKey: getAxisKey(baseAxis),
+ stackId: getSeriesStackId(seriesModel)
+ });
+ });
+ return doCalBarWidthAndOffset(seriesInfoList);
+}
+function doCalBarWidthAndOffset(seriesInfoList) {
+ var columnsMap = {};
+ each(seriesInfoList, function(seriesInfo, idx) {
+ var axisKey = seriesInfo.axisKey;
+ var bandWidth = seriesInfo.bandWidth;
+ var columnsOnAxis = columnsMap[axisKey] || {
+ bandWidth,
+ remainedWidth: bandWidth,
+ autoWidthCount: 0,
+ categoryGap: null,
+ gap: "20%",
+ stacks: {}
+ };
+ var stacks = columnsOnAxis.stacks;
+ columnsMap[axisKey] = columnsOnAxis;
+ var stackId = seriesInfo.stackId;
+ if (!stacks[stackId]) {
+ columnsOnAxis.autoWidthCount++;
+ }
+ stacks[stackId] = stacks[stackId] || {
+ width: 0,
+ maxWidth: 0
+ };
+ var barWidth = seriesInfo.barWidth;
+ if (barWidth && !stacks[stackId].width) {
+ stacks[stackId].width = barWidth;
+ barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);
+ columnsOnAxis.remainedWidth -= barWidth;
+ }
+ var barMaxWidth = seriesInfo.barMaxWidth;
+ barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);
+ var barMinWidth = seriesInfo.barMinWidth;
+ barMinWidth && (stacks[stackId].minWidth = barMinWidth);
+ var barGap = seriesInfo.barGap;
+ barGap != null && (columnsOnAxis.gap = barGap);
+ var barCategoryGap = seriesInfo.barCategoryGap;
+ barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);
+ });
+ var result = {};
+ each(columnsMap, function(columnsOnAxis, coordSysName) {
+ result[coordSysName] = {};
+ var stacks = columnsOnAxis.stacks;
+ var bandWidth = columnsOnAxis.bandWidth;
+ var categoryGapPercent = columnsOnAxis.categoryGap;
+ if (categoryGapPercent == null) {
+ var columnCount = keys(stacks).length;
+ categoryGapPercent = Math.max(35 - columnCount * 4, 15) + "%";
+ }
+ var categoryGap = parsePercent2(categoryGapPercent, bandWidth);
+ var barGapPercent = parsePercent2(columnsOnAxis.gap, 1);
+ var remainedWidth = columnsOnAxis.remainedWidth;
+ var autoWidthCount = columnsOnAxis.autoWidthCount;
+ var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
+ autoWidth = Math.max(autoWidth, 0);
+ each(stacks, function(column) {
+ var maxWidth = column.maxWidth;
+ var minWidth = column.minWidth;
+ if (!column.width) {
+ var finalWidth = autoWidth;
+ if (maxWidth && maxWidth < finalWidth) {
+ finalWidth = Math.min(maxWidth, remainedWidth);
+ }
+ if (minWidth && minWidth > finalWidth) {
+ finalWidth = minWidth;
+ }
+ if (finalWidth !== autoWidth) {
+ column.width = finalWidth;
+ remainedWidth -= finalWidth + barGapPercent * finalWidth;
+ autoWidthCount--;
+ }
+ } else {
+ var finalWidth = column.width;
+ if (maxWidth) {
+ finalWidth = Math.min(finalWidth, maxWidth);
+ }
+ if (minWidth) {
+ finalWidth = Math.max(finalWidth, minWidth);
+ }
+ column.width = finalWidth;
+ remainedWidth -= finalWidth + barGapPercent * finalWidth;
+ autoWidthCount--;
+ }
+ });
+ autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
+ autoWidth = Math.max(autoWidth, 0);
+ var widthSum = 0;
+ var lastColumn;
+ each(stacks, function(column, idx) {
+ if (!column.width) {
+ column.width = autoWidth;
+ }
+ lastColumn = column;
+ widthSum += column.width * (1 + barGapPercent);
+ });
+ if (lastColumn) {
+ widthSum -= lastColumn.width * barGapPercent;
+ }
+ var offset = -widthSum / 2;
+ each(stacks, function(column, stackId) {
+ result[coordSysName][stackId] = result[coordSysName][stackId] || {
+ bandWidth,
+ offset,
+ width: column.width
+ };
+ offset += column.width * (1 + barGapPercent);
+ });
+ });
+ return result;
+}
+function retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {
+ if (barWidthAndOffset && axis) {
+ var result = barWidthAndOffset[getAxisKey(axis)];
+ if (result != null && seriesModel != null) {
+ return result[getSeriesStackId(seriesModel)];
+ }
+ return result;
+ }
+}
+function layout(seriesType2, ecModel) {
+ var seriesModels = prepareLayoutBarSeries(seriesType2, ecModel);
+ var barWidthAndOffset = makeColumnLayout(seriesModels);
+ each(seriesModels, function(seriesModel) {
+ var data = seriesModel.getData();
+ var cartesian = seriesModel.coordinateSystem;
+ var baseAxis = cartesian.getBaseAxis();
+ var stackId = getSeriesStackId(seriesModel);
+ var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];
+ var columnOffset = columnLayoutInfo.offset;
+ var columnWidth = columnLayoutInfo.width;
+ data.setLayout({
+ bandWidth: columnLayoutInfo.bandWidth,
+ offset: columnOffset,
+ size: columnWidth
+ });
+ });
+}
+function createProgressiveLayout(seriesType2) {
+ return {
+ seriesType: seriesType2,
+ plan: createRenderPlanner(),
+ reset: function(seriesModel) {
+ if (!isOnCartesian(seriesModel)) {
+ return;
+ }
+ var data = seriesModel.getData();
+ var cartesian = seriesModel.coordinateSystem;
+ var baseAxis = cartesian.getBaseAxis();
+ var valueAxis2 = cartesian.getOtherAxis(baseAxis);
+ var valueDimIdx = data.getDimensionIndex(data.mapDimension(valueAxis2.dim));
+ var baseDimIdx = data.getDimensionIndex(data.mapDimension(baseAxis.dim));
+ var drawBackground = seriesModel.get("showBackground", true);
+ var valueDim = data.mapDimension(valueAxis2.dim);
+ var stackResultDim = data.getCalculationInfo("stackResultDimension");
+ var stacked = isDimensionStacked(data, valueDim) && !!data.getCalculationInfo("stackedOnSeries");
+ var isValueAxisH = valueAxis2.isHorizontal();
+ var valueAxisStart = getValueAxisStart(baseAxis, valueAxis2);
+ var isLarge = isInLargeMode(seriesModel);
+ var barMinHeight = seriesModel.get("barMinHeight") || 0;
+ var stackedDimIdx = stackResultDim && data.getDimensionIndex(stackResultDim);
+ var columnWidth = data.getLayout("size");
+ var columnOffset = data.getLayout("offset");
+ return {
+ progress: function(params, data2) {
+ var count2 = params.count;
+ var largePoints = isLarge && createFloat32Array(count2 * 3);
+ var largeBackgroundPoints = isLarge && drawBackground && createFloat32Array(count2 * 3);
+ var largeDataIndices = isLarge && createFloat32Array(count2);
+ var coordLayout = cartesian.master.getRect();
+ var bgSize = isValueAxisH ? coordLayout.width : coordLayout.height;
+ var dataIndex;
+ var store = data2.getStore();
+ var idxOffset = 0;
+ while ((dataIndex = params.next()) != null) {
+ var value = store.get(stacked ? stackedDimIdx : valueDimIdx, dataIndex);
+ var baseValue = store.get(baseDimIdx, dataIndex);
+ var baseCoord = valueAxisStart;
+ var stackStartValue = void 0;
+ if (stacked) {
+ stackStartValue = +value - store.get(valueDimIdx, dataIndex);
+ }
+ var x = void 0;
+ var y = void 0;
+ var width = void 0;
+ var height = void 0;
+ if (isValueAxisH) {
+ var coord = cartesian.dataToPoint([value, baseValue]);
+ if (stacked) {
+ var startCoord = cartesian.dataToPoint([stackStartValue, baseValue]);
+ baseCoord = startCoord[0];
+ }
+ x = baseCoord;
+ y = coord[1] + columnOffset;
+ width = coord[0] - baseCoord;
+ height = columnWidth;
+ if (Math.abs(width) < barMinHeight) {
+ width = (width < 0 ? -1 : 1) * barMinHeight;
+ }
+ } else {
+ var coord = cartesian.dataToPoint([baseValue, value]);
+ if (stacked) {
+ var startCoord = cartesian.dataToPoint([baseValue, stackStartValue]);
+ baseCoord = startCoord[1];
+ }
+ x = coord[0] + columnOffset;
+ y = baseCoord;
+ width = columnWidth;
+ height = coord[1] - baseCoord;
+ if (Math.abs(height) < barMinHeight) {
+ height = (height <= 0 ? -1 : 1) * barMinHeight;
+ }
+ }
+ if (!isLarge) {
+ data2.setItemLayout(dataIndex, {
+ x,
+ y,
+ width,
+ height
+ });
+ } else {
+ largePoints[idxOffset] = x;
+ largePoints[idxOffset + 1] = y;
+ largePoints[idxOffset + 2] = isValueAxisH ? width : height;
+ if (largeBackgroundPoints) {
+ largeBackgroundPoints[idxOffset] = isValueAxisH ? coordLayout.x : x;
+ largeBackgroundPoints[idxOffset + 1] = isValueAxisH ? y : coordLayout.y;
+ largeBackgroundPoints[idxOffset + 2] = bgSize;
+ }
+ largeDataIndices[dataIndex] = dataIndex;
+ }
+ idxOffset += 3;
+ }
+ if (isLarge) {
+ data2.setLayout({
+ largePoints,
+ largeDataIndices,
+ largeBackgroundPoints,
+ valueAxisHorizontal: isValueAxisH
+ });
+ }
+ }
+ };
+ }
+ };
+}
+function isOnCartesian(seriesModel) {
+ return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "cartesian2d";
+}
+function isInLargeMode(seriesModel) {
+ return seriesModel.pipelineContext && seriesModel.pipelineContext.large;
+}
+function getValueAxisStart(baseAxis, valueAxis2) {
+ var startValue = valueAxis2.model.get("startValue");
+ if (!startValue) {
+ startValue = 0;
+ }
+ return valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(valueAxis2.type === "log" ? startValue > 0 ? startValue : 1 : startValue));
+}
+
+// node_modules/echarts/lib/scale/Time.js
+var bisect = function(a, x, lo, hi) {
+ while (lo < hi) {
+ var mid = lo + hi >>> 1;
+ if (a[mid][1] < x) {
+ lo = mid + 1;
+ } else {
+ hi = mid;
+ }
+ }
+ return lo;
+};
+var TimeScale = function(_super) {
+ __extends(TimeScale2, _super);
+ function TimeScale2(settings) {
+ var _this = _super.call(this, settings) || this;
+ _this.type = "time";
+ return _this;
+ }
+ TimeScale2.prototype.getLabel = function(tick) {
+ var useUTC = this.getSetting("useUTC");
+ return format(tick.value, fullLeveledFormatter[getDefaultFormatPrecisionOfInterval(getPrimaryTimeUnit(this._minLevelUnit))] || fullLeveledFormatter.second, useUTC, this.getSetting("locale"));
+ };
+ TimeScale2.prototype.getFormattedLabel = function(tick, idx, labelFormatter) {
+ var isUTC = this.getSetting("useUTC");
+ var lang = this.getSetting("locale");
+ return leveledFormat(tick, idx, labelFormatter, lang, isUTC);
+ };
+ TimeScale2.prototype.getTicks = function() {
+ var interval = this._interval;
+ var extent3 = this._extent;
+ var ticks = [];
+ if (!interval) {
+ return ticks;
+ }
+ ticks.push({
+ value: extent3[0],
+ level: 0
+ });
+ var useUTC = this.getSetting("useUTC");
+ var innerTicks = getIntervalTicks(this._minLevelUnit, this._approxInterval, useUTC, extent3);
+ ticks = ticks.concat(innerTicks);
+ ticks.push({
+ value: extent3[1],
+ level: 0
+ });
+ return ticks;
+ };
+ TimeScale2.prototype.calcNiceExtent = function(opt) {
+ var extent3 = this._extent;
+ if (extent3[0] === extent3[1]) {
+ extent3[0] -= ONE_DAY;
+ extent3[1] += ONE_DAY;
+ }
+ if (extent3[1] === -Infinity && extent3[0] === Infinity) {
+ var d = new Date();
+ extent3[1] = +new Date(d.getFullYear(), d.getMonth(), d.getDate());
+ extent3[0] = extent3[1] - ONE_DAY;
+ }
+ this.calcNiceTicks(opt.splitNumber, opt.minInterval, opt.maxInterval);
+ };
+ TimeScale2.prototype.calcNiceTicks = function(approxTickNum, minInterval, maxInterval) {
+ approxTickNum = approxTickNum || 10;
+ var extent3 = this._extent;
+ var span = extent3[1] - extent3[0];
+ this._approxInterval = span / approxTickNum;
+ if (minInterval != null && this._approxInterval < minInterval) {
+ this._approxInterval = minInterval;
+ }
+ if (maxInterval != null && this._approxInterval > maxInterval) {
+ this._approxInterval = maxInterval;
+ }
+ var scaleIntervalsLen = scaleIntervals.length;
+ var idx = Math.min(bisect(scaleIntervals, this._approxInterval, 0, scaleIntervalsLen), scaleIntervalsLen - 1);
+ this._interval = scaleIntervals[idx][1];
+ this._minLevelUnit = scaleIntervals[Math.max(idx - 1, 0)][0];
+ };
+ TimeScale2.prototype.parse = function(val) {
+ return isNumber(val) ? val : +parseDate(val);
+ };
+ TimeScale2.prototype.contain = function(val) {
+ return contain2(this.parse(val), this._extent);
+ };
+ TimeScale2.prototype.normalize = function(val) {
+ return normalize2(this.parse(val), this._extent);
+ };
+ TimeScale2.prototype.scale = function(val) {
+ return scale3(val, this._extent);
+ };
+ TimeScale2.type = "time";
+ return TimeScale2;
+}(Interval_default);
+var scaleIntervals = [
+ ["second", ONE_SECOND],
+ ["minute", ONE_MINUTE],
+ ["hour", ONE_HOUR],
+ ["quarter-day", ONE_HOUR * 6],
+ ["half-day", ONE_HOUR * 12],
+ ["day", ONE_DAY * 1.2],
+ ["half-week", ONE_DAY * 3.5],
+ ["week", ONE_DAY * 7],
+ ["month", ONE_DAY * 31],
+ ["quarter", ONE_DAY * 95],
+ ["half-year", ONE_YEAR / 2],
+ ["year", ONE_YEAR]
+];
+function isUnitValueSame(unit, valueA, valueB, isUTC) {
+ var dateA = parseDate(valueA);
+ var dateB = parseDate(valueB);
+ var isSame = function(unit2) {
+ return getUnitValue(dateA, unit2, isUTC) === getUnitValue(dateB, unit2, isUTC);
+ };
+ var isSameYear = function() {
+ return isSame("year");
+ };
+ var isSameMonth = function() {
+ return isSameYear() && isSame("month");
+ };
+ var isSameDay = function() {
+ return isSameMonth() && isSame("day");
+ };
+ var isSameHour = function() {
+ return isSameDay() && isSame("hour");
+ };
+ var isSameMinute = function() {
+ return isSameHour() && isSame("minute");
+ };
+ var isSameSecond = function() {
+ return isSameMinute() && isSame("second");
+ };
+ var isSameMilliSecond = function() {
+ return isSameSecond() && isSame("millisecond");
+ };
+ switch (unit) {
+ case "year":
+ return isSameYear();
+ case "month":
+ return isSameMonth();
+ case "day":
+ return isSameDay();
+ case "hour":
+ return isSameHour();
+ case "minute":
+ return isSameMinute();
+ case "second":
+ return isSameSecond();
+ case "millisecond":
+ return isSameMilliSecond();
+ }
+}
+function getDateInterval(approxInterval, daysInMonth) {
+ approxInterval /= ONE_DAY;
+ return approxInterval > 16 ? 16 : approxInterval > 7.5 ? 7 : approxInterval > 3.5 ? 4 : approxInterval > 1.5 ? 2 : 1;
+}
+function getMonthInterval(approxInterval) {
+ var APPROX_ONE_MONTH = 30 * ONE_DAY;
+ approxInterval /= APPROX_ONE_MONTH;
+ return approxInterval > 6 ? 6 : approxInterval > 3 ? 3 : approxInterval > 2 ? 2 : 1;
+}
+function getHourInterval(approxInterval) {
+ approxInterval /= ONE_HOUR;
+ return approxInterval > 12 ? 12 : approxInterval > 6 ? 6 : approxInterval > 3.5 ? 4 : approxInterval > 2 ? 2 : 1;
+}
+function getMinutesAndSecondsInterval(approxInterval, isMinutes) {
+ approxInterval /= isMinutes ? ONE_MINUTE : ONE_SECOND;
+ return approxInterval > 30 ? 30 : approxInterval > 20 ? 20 : approxInterval > 15 ? 15 : approxInterval > 10 ? 10 : approxInterval > 5 ? 5 : approxInterval > 2 ? 2 : 1;
+}
+function getMillisecondsInterval(approxInterval) {
+ return nice(approxInterval, true);
+}
+function getFirstTimestampOfUnit(date, unitName, isUTC) {
+ var outDate = new Date(date);
+ switch (getPrimaryTimeUnit(unitName)) {
+ case "year":
+ case "month":
+ outDate[monthSetterName(isUTC)](0);
+ case "day":
+ outDate[dateSetterName(isUTC)](1);
+ case "hour":
+ outDate[hoursSetterName(isUTC)](0);
+ case "minute":
+ outDate[minutesSetterName(isUTC)](0);
+ case "second":
+ outDate[secondsSetterName(isUTC)](0);
+ outDate[millisecondsSetterName(isUTC)](0);
+ }
+ return outDate.getTime();
+}
+function getIntervalTicks(bottomUnitName, approxInterval, isUTC, extent3) {
+ var safeLimit = 1e4;
+ var unitNames = timeUnits;
+ var iter = 0;
+ function addTicksInSpan(interval, minTimestamp, maxTimestamp, getMethodName, setMethodName, isDate, out2) {
+ var date = new Date(minTimestamp);
+ var dateTime = minTimestamp;
+ var d = date[getMethodName]();
+ while (dateTime < maxTimestamp && dateTime <= extent3[1]) {
+ out2.push({
+ value: dateTime
+ });
+ d += interval;
+ date[setMethodName](d);
+ dateTime = date.getTime();
+ }
+ out2.push({
+ value: dateTime,
+ notAdd: true
+ });
+ }
+ function addLevelTicks(unitName, lastLevelTicks, levelTicks2) {
+ var newAddedTicks = [];
+ var isFirstLevel = !lastLevelTicks.length;
+ if (isUnitValueSame(getPrimaryTimeUnit(unitName), extent3[0], extent3[1], isUTC)) {
+ return;
+ }
+ if (isFirstLevel) {
+ lastLevelTicks = [{
+ value: getFirstTimestampOfUnit(new Date(extent3[0]), unitName, isUTC)
+ }, {
+ value: extent3[1]
+ }];
+ }
+ for (var i2 = 0; i2 < lastLevelTicks.length - 1; i2++) {
+ var startTick = lastLevelTicks[i2].value;
+ var endTick = lastLevelTicks[i2 + 1].value;
+ if (startTick === endTick) {
+ continue;
+ }
+ var interval = void 0;
+ var getterName = void 0;
+ var setterName = void 0;
+ var isDate = false;
+ switch (unitName) {
+ case "year":
+ interval = Math.max(1, Math.round(approxInterval / ONE_DAY / 365));
+ getterName = fullYearGetterName(isUTC);
+ setterName = fullYearSetterName(isUTC);
+ break;
+ case "half-year":
+ case "quarter":
+ case "month":
+ interval = getMonthInterval(approxInterval);
+ getterName = monthGetterName(isUTC);
+ setterName = monthSetterName(isUTC);
+ break;
+ case "week":
+ case "half-week":
+ case "day":
+ interval = getDateInterval(approxInterval, 31);
+ getterName = dateGetterName(isUTC);
+ setterName = dateSetterName(isUTC);
+ isDate = true;
+ break;
+ case "half-day":
+ case "quarter-day":
+ case "hour":
+ interval = getHourInterval(approxInterval);
+ getterName = hoursGetterName(isUTC);
+ setterName = hoursSetterName(isUTC);
+ break;
+ case "minute":
+ interval = getMinutesAndSecondsInterval(approxInterval, true);
+ getterName = minutesGetterName(isUTC);
+ setterName = minutesSetterName(isUTC);
+ break;
+ case "second":
+ interval = getMinutesAndSecondsInterval(approxInterval, false);
+ getterName = secondsGetterName(isUTC);
+ setterName = secondsSetterName(isUTC);
+ break;
+ case "millisecond":
+ interval = getMillisecondsInterval(approxInterval);
+ getterName = millisecondsGetterName(isUTC);
+ setterName = millisecondsSetterName(isUTC);
+ break;
+ }
+ addTicksInSpan(interval, startTick, endTick, getterName, setterName, isDate, newAddedTicks);
+ if (unitName === "year" && levelTicks2.length > 1 && i2 === 0) {
+ levelTicks2.unshift({
+ value: levelTicks2[0].value - interval
+ });
+ }
+ }
+ for (var i2 = 0; i2 < newAddedTicks.length; i2++) {
+ levelTicks2.push(newAddedTicks[i2]);
+ }
+ return newAddedTicks;
+ }
+ var levelsTicks = [];
+ var currentLevelTicks = [];
+ var tickCount = 0;
+ var lastLevelTickCount = 0;
+ for (var i = 0; i < unitNames.length && iter++ < safeLimit; ++i) {
+ var primaryTimeUnit = getPrimaryTimeUnit(unitNames[i]);
+ if (!isPrimaryTimeUnit(unitNames[i])) {
+ continue;
+ }
+ addLevelTicks(unitNames[i], levelsTicks[levelsTicks.length - 1] || [], currentLevelTicks);
+ var nextPrimaryTimeUnit = unitNames[i + 1] ? getPrimaryTimeUnit(unitNames[i + 1]) : null;
+ if (primaryTimeUnit !== nextPrimaryTimeUnit) {
+ if (currentLevelTicks.length) {
+ lastLevelTickCount = tickCount;
+ currentLevelTicks.sort(function(a, b) {
+ return a.value - b.value;
+ });
+ var levelTicksRemoveDuplicated = [];
+ for (var i_1 = 0; i_1 < currentLevelTicks.length; ++i_1) {
+ var tickValue = currentLevelTicks[i_1].value;
+ if (i_1 === 0 || currentLevelTicks[i_1 - 1].value !== tickValue) {
+ levelTicksRemoveDuplicated.push(currentLevelTicks[i_1]);
+ if (tickValue >= extent3[0] && tickValue <= extent3[1]) {
+ tickCount++;
+ }
+ }
+ }
+ var targetTickNum = (extent3[1] - extent3[0]) / approxInterval;
+ if (tickCount > targetTickNum * 1.5 && lastLevelTickCount > targetTickNum / 1.5) {
+ break;
+ }
+ levelsTicks.push(levelTicksRemoveDuplicated);
+ if (tickCount > targetTickNum || bottomUnitName === unitNames[i]) {
+ break;
+ }
+ }
+ currentLevelTicks = [];
+ }
+ }
+ if (true) {
+ if (iter >= safeLimit) {
+ warn("Exceed safe limit.");
+ }
+ }
+ var levelsTicksInExtent = filter(map(levelsTicks, function(levelTicks2) {
+ return filter(levelTicks2, function(tick) {
+ return tick.value >= extent3[0] && tick.value <= extent3[1] && !tick.notAdd;
+ });
+ }), function(levelTicks2) {
+ return levelTicks2.length > 0;
+ });
+ var ticks = [];
+ var maxLevel = levelsTicksInExtent.length - 1;
+ for (var i = 0; i < levelsTicksInExtent.length; ++i) {
+ var levelTicks = levelsTicksInExtent[i];
+ for (var k = 0; k < levelTicks.length; ++k) {
+ ticks.push({
+ value: levelTicks[k].value,
+ level: maxLevel - i
+ });
+ }
+ }
+ ticks.sort(function(a, b) {
+ return a.value - b.value;
+ });
+ var result = [];
+ for (var i = 0; i < ticks.length; ++i) {
+ if (i === 0 || ticks[i].value !== ticks[i - 1].value) {
+ result.push(ticks[i]);
+ }
+ }
+ return result;
+}
+Scale_default.registerClass(TimeScale);
+var Time_default = TimeScale;
+
+// node_modules/echarts/lib/scale/Log.js
+var scaleProto = Scale_default.prototype;
+var intervalScaleProto = Interval_default.prototype;
+var roundingErrorFix = round;
+var mathFloor = Math.floor;
+var mathCeil = Math.ceil;
+var mathPow2 = Math.pow;
+var mathLog = Math.log;
+var LogScale = function(_super) {
+ __extends(LogScale2, _super);
+ function LogScale2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "log";
+ _this.base = 10;
+ _this._originalScale = new Interval_default();
+ _this._interval = 0;
+ return _this;
+ }
+ LogScale2.prototype.getTicks = function(expandToNicedExtent) {
+ var originalScale = this._originalScale;
+ var extent3 = this._extent;
+ var originalExtent = originalScale.getExtent();
+ var ticks = intervalScaleProto.getTicks.call(this, expandToNicedExtent);
+ return map(ticks, function(tick) {
+ var val = tick.value;
+ var powVal = round(mathPow2(this.base, val));
+ powVal = val === extent3[0] && this._fixMin ? fixRoundingError(powVal, originalExtent[0]) : powVal;
+ powVal = val === extent3[1] && this._fixMax ? fixRoundingError(powVal, originalExtent[1]) : powVal;
+ return {
+ value: powVal
+ };
+ }, this);
+ };
+ LogScale2.prototype.setExtent = function(start2, end2) {
+ var base2 = mathLog(this.base);
+ start2 = mathLog(Math.max(0, start2)) / base2;
+ end2 = mathLog(Math.max(0, end2)) / base2;
+ intervalScaleProto.setExtent.call(this, start2, end2);
+ };
+ LogScale2.prototype.getExtent = function() {
+ var base2 = this.base;
+ var extent3 = scaleProto.getExtent.call(this);
+ extent3[0] = mathPow2(base2, extent3[0]);
+ extent3[1] = mathPow2(base2, extent3[1]);
+ var originalScale = this._originalScale;
+ var originalExtent = originalScale.getExtent();
+ this._fixMin && (extent3[0] = fixRoundingError(extent3[0], originalExtent[0]));
+ this._fixMax && (extent3[1] = fixRoundingError(extent3[1], originalExtent[1]));
+ return extent3;
+ };
+ LogScale2.prototype.unionExtent = function(extent3) {
+ this._originalScale.unionExtent(extent3);
+ var base2 = this.base;
+ extent3[0] = mathLog(extent3[0]) / mathLog(base2);
+ extent3[1] = mathLog(extent3[1]) / mathLog(base2);
+ scaleProto.unionExtent.call(this, extent3);
+ };
+ LogScale2.prototype.unionExtentFromData = function(data, dim) {
+ this.unionExtent(data.getApproximateExtent(dim));
+ };
+ LogScale2.prototype.calcNiceTicks = function(approxTickNum) {
+ approxTickNum = approxTickNum || 10;
+ var extent3 = this._extent;
+ var span = extent3[1] - extent3[0];
+ if (span === Infinity || span <= 0) {
+ return;
+ }
+ var interval = quantity(span);
+ var err = approxTickNum / span * interval;
+ if (err <= 0.5) {
+ interval *= 10;
+ }
+ while (!isNaN(interval) && Math.abs(interval) < 1 && Math.abs(interval) > 0) {
+ interval *= 10;
+ }
+ var niceExtent = [round(mathCeil(extent3[0] / interval) * interval), round(mathFloor(extent3[1] / interval) * interval)];
+ this._interval = interval;
+ this._niceExtent = niceExtent;
+ };
+ LogScale2.prototype.calcNiceExtent = function(opt) {
+ intervalScaleProto.calcNiceExtent.call(this, opt);
+ this._fixMin = opt.fixMin;
+ this._fixMax = opt.fixMax;
+ };
+ LogScale2.prototype.parse = function(val) {
+ return val;
+ };
+ LogScale2.prototype.contain = function(val) {
+ val = mathLog(val) / mathLog(this.base);
+ return contain2(val, this._extent);
+ };
+ LogScale2.prototype.normalize = function(val) {
+ val = mathLog(val) / mathLog(this.base);
+ return normalize2(val, this._extent);
+ };
+ LogScale2.prototype.scale = function(val) {
+ val = scale3(val, this._extent);
+ return mathPow2(this.base, val);
+ };
+ LogScale2.type = "log";
+ return LogScale2;
+}(Scale_default);
+var proto = LogScale.prototype;
+proto.getMinorTicks = intervalScaleProto.getMinorTicks;
+proto.getLabel = intervalScaleProto.getLabel;
+function fixRoundingError(val, originalVal) {
+ return roundingErrorFix(val, getPrecision(originalVal));
+}
+Scale_default.registerClass(LogScale);
+var Log_default = LogScale;
+
+// node_modules/echarts/lib/coord/scaleRawExtentInfo.js
+var ScaleRawExtentInfo = function() {
+ function ScaleRawExtentInfo2(scale4, model, originalExtent) {
+ this._prepareParams(scale4, model, originalExtent);
+ }
+ ScaleRawExtentInfo2.prototype._prepareParams = function(scale4, model, dataExtent) {
+ if (dataExtent[1] < dataExtent[0]) {
+ dataExtent = [NaN, NaN];
+ }
+ this._dataMin = dataExtent[0];
+ this._dataMax = dataExtent[1];
+ var isOrdinal = this._isOrdinal = scale4.type === "ordinal";
+ this._needCrossZero = scale4.type === "interval" && model.getNeedCrossZero && model.getNeedCrossZero();
+ var axisMinValue = model.get("min", true);
+ if (axisMinValue == null) {
+ axisMinValue = model.get("startValue", true);
+ }
+ var modelMinRaw = this._modelMinRaw = axisMinValue;
+ if (isFunction(modelMinRaw)) {
+ this._modelMinNum = parseAxisModelMinMax(scale4, modelMinRaw({
+ min: dataExtent[0],
+ max: dataExtent[1]
+ }));
+ } else if (modelMinRaw !== "dataMin") {
+ this._modelMinNum = parseAxisModelMinMax(scale4, modelMinRaw);
+ }
+ var modelMaxRaw = this._modelMaxRaw = model.get("max", true);
+ if (isFunction(modelMaxRaw)) {
+ this._modelMaxNum = parseAxisModelMinMax(scale4, modelMaxRaw({
+ min: dataExtent[0],
+ max: dataExtent[1]
+ }));
+ } else if (modelMaxRaw !== "dataMax") {
+ this._modelMaxNum = parseAxisModelMinMax(scale4, modelMaxRaw);
+ }
+ if (isOrdinal) {
+ this._axisDataLen = model.getCategories().length;
+ } else {
+ var boundaryGap = model.get("boundaryGap");
+ var boundaryGapArr = isArray(boundaryGap) ? boundaryGap : [boundaryGap || 0, boundaryGap || 0];
+ if (typeof boundaryGapArr[0] === "boolean" || typeof boundaryGapArr[1] === "boolean") {
+ if (true) {
+ console.warn('Boolean type for boundaryGap is only allowed for ordinal axis. Please use string in percentage instead, e.g., "20%". Currently, boundaryGap is set to be 0.');
+ }
+ this._boundaryGapInner = [0, 0];
+ } else {
+ this._boundaryGapInner = [parsePercent(boundaryGapArr[0], 1), parsePercent(boundaryGapArr[1], 1)];
+ }
+ }
+ };
+ ScaleRawExtentInfo2.prototype.calculate = function() {
+ var isOrdinal = this._isOrdinal;
+ var dataMin = this._dataMin;
+ var dataMax = this._dataMax;
+ var axisDataLen = this._axisDataLen;
+ var boundaryGapInner = this._boundaryGapInner;
+ var span = !isOrdinal ? dataMax - dataMin || Math.abs(dataMin) : null;
+ var min3 = this._modelMinRaw === "dataMin" ? dataMin : this._modelMinNum;
+ var max3 = this._modelMaxRaw === "dataMax" ? dataMax : this._modelMaxNum;
+ var minFixed = min3 != null;
+ var maxFixed = max3 != null;
+ if (min3 == null) {
+ min3 = isOrdinal ? axisDataLen ? 0 : NaN : dataMin - boundaryGapInner[0] * span;
+ }
+ if (max3 == null) {
+ max3 = isOrdinal ? axisDataLen ? axisDataLen - 1 : NaN : dataMax + boundaryGapInner[1] * span;
+ }
+ (min3 == null || !isFinite(min3)) && (min3 = NaN);
+ (max3 == null || !isFinite(max3)) && (max3 = NaN);
+ var isBlank = eqNaN(min3) || eqNaN(max3) || isOrdinal && !axisDataLen;
+ if (this._needCrossZero) {
+ if (min3 > 0 && max3 > 0 && !minFixed) {
+ min3 = 0;
+ }
+ if (min3 < 0 && max3 < 0 && !maxFixed) {
+ max3 = 0;
+ }
+ }
+ var determinedMin = this._determinedMin;
+ var determinedMax = this._determinedMax;
+ if (determinedMin != null) {
+ min3 = determinedMin;
+ minFixed = true;
+ }
+ if (determinedMax != null) {
+ max3 = determinedMax;
+ maxFixed = true;
+ }
+ return {
+ min: min3,
+ max: max3,
+ minFixed,
+ maxFixed,
+ isBlank
+ };
+ };
+ ScaleRawExtentInfo2.prototype.modifyDataMinMax = function(minMaxName, val) {
+ if (true) {
+ assert(!this.frozen);
+ }
+ this[DATA_MIN_MAX_ATTR[minMaxName]] = val;
+ };
+ ScaleRawExtentInfo2.prototype.setDeterminedMinMax = function(minMaxName, val) {
+ var attr = DETERMINED_MIN_MAX_ATTR[minMaxName];
+ if (true) {
+ assert(!this.frozen && this[attr] == null);
+ }
+ this[attr] = val;
+ };
+ ScaleRawExtentInfo2.prototype.freeze = function() {
+ this.frozen = true;
+ };
+ return ScaleRawExtentInfo2;
+}();
+var DETERMINED_MIN_MAX_ATTR = {
+ min: "_determinedMin",
+ max: "_determinedMax"
+};
+var DATA_MIN_MAX_ATTR = {
+ min: "_dataMin",
+ max: "_dataMax"
+};
+function ensureScaleRawExtentInfo(scale4, model, originalExtent) {
+ var rawExtentInfo = scale4.rawExtentInfo;
+ if (rawExtentInfo) {
+ return rawExtentInfo;
+ }
+ rawExtentInfo = new ScaleRawExtentInfo(scale4, model, originalExtent);
+ scale4.rawExtentInfo = rawExtentInfo;
+ return rawExtentInfo;
+}
+function parseAxisModelMinMax(scale4, minMax) {
+ return minMax == null ? null : eqNaN(minMax) ? NaN : scale4.parse(minMax);
+}
+
+// node_modules/echarts/lib/coord/axisHelper.js
+function getScaleExtent(scale4, model) {
+ var scaleType = scale4.type;
+ var rawExtentResult = ensureScaleRawExtentInfo(scale4, model, scale4.getExtent()).calculate();
+ scale4.setBlank(rawExtentResult.isBlank);
+ var min3 = rawExtentResult.min;
+ var max3 = rawExtentResult.max;
+ var ecModel = model.ecModel;
+ if (ecModel && scaleType === "time") {
+ var barSeriesModels = prepareLayoutBarSeries("bar", ecModel);
+ var isBaseAxisAndHasBarSeries_1 = false;
+ each(barSeriesModels, function(seriesModel) {
+ isBaseAxisAndHasBarSeries_1 = isBaseAxisAndHasBarSeries_1 || seriesModel.getBaseAxis() === model.axis;
+ });
+ if (isBaseAxisAndHasBarSeries_1) {
+ var barWidthAndOffset = makeColumnLayout(barSeriesModels);
+ var adjustedScale = adjustScaleForOverflow(min3, max3, model, barWidthAndOffset);
+ min3 = adjustedScale.min;
+ max3 = adjustedScale.max;
+ }
+ }
+ return {
+ extent: [min3, max3],
+ fixMin: rawExtentResult.minFixed,
+ fixMax: rawExtentResult.maxFixed
+ };
+}
+function adjustScaleForOverflow(min3, max3, model, barWidthAndOffset) {
+ var axisExtent = model.axis.getExtent();
+ var axisLength = Math.abs(axisExtent[1] - axisExtent[0]);
+ var barsOnCurrentAxis = retrieveColumnLayout(barWidthAndOffset, model.axis);
+ if (barsOnCurrentAxis === void 0) {
+ return {
+ min: min3,
+ max: max3
+ };
+ }
+ var minOverflow = Infinity;
+ each(barsOnCurrentAxis, function(item) {
+ minOverflow = Math.min(item.offset, minOverflow);
+ });
+ var maxOverflow = -Infinity;
+ each(barsOnCurrentAxis, function(item) {
+ maxOverflow = Math.max(item.offset + item.width, maxOverflow);
+ });
+ minOverflow = Math.abs(minOverflow);
+ maxOverflow = Math.abs(maxOverflow);
+ var totalOverFlow = minOverflow + maxOverflow;
+ var oldRange = max3 - min3;
+ var oldRangePercentOfNew = 1 - (minOverflow + maxOverflow) / axisLength;
+ var overflowBuffer = oldRange / oldRangePercentOfNew - oldRange;
+ max3 += overflowBuffer * (maxOverflow / totalOverFlow);
+ min3 -= overflowBuffer * (minOverflow / totalOverFlow);
+ return {
+ min: min3,
+ max: max3
+ };
+}
+function niceScaleExtent(scale4, inModel) {
+ var model = inModel;
+ var extentInfo = getScaleExtent(scale4, model);
+ var extent3 = extentInfo.extent;
+ var splitNumber = model.get("splitNumber");
+ if (scale4 instanceof Log_default) {
+ scale4.base = model.get("logBase");
+ }
+ var scaleType = scale4.type;
+ var interval = model.get("interval");
+ var isIntervalOrTime = scaleType === "interval" || scaleType === "time";
+ scale4.setExtent(extent3[0], extent3[1]);
+ scale4.calcNiceExtent({
+ splitNumber,
+ fixMin: extentInfo.fixMin,
+ fixMax: extentInfo.fixMax,
+ minInterval: isIntervalOrTime ? model.get("minInterval") : null,
+ maxInterval: isIntervalOrTime ? model.get("maxInterval") : null
+ });
+ if (interval != null) {
+ scale4.setInterval && scale4.setInterval(interval);
+ }
+}
+function createScaleByModel(model, axisType) {
+ axisType = axisType || model.get("type");
+ if (axisType) {
+ switch (axisType) {
+ case "category":
+ return new Ordinal_default({
+ ordinalMeta: model.getOrdinalMeta ? model.getOrdinalMeta() : model.getCategories(),
+ extent: [Infinity, -Infinity]
+ });
+ case "time":
+ return new Time_default({
+ locale: model.ecModel.getLocaleModel(),
+ useUTC: model.ecModel.get("useUTC")
+ });
+ default:
+ return new (Scale_default.getClass(axisType) || Interval_default)();
+ }
+ }
+}
+function ifAxisCrossZero(axis) {
+ var dataExtent = axis.scale.getExtent();
+ var min3 = dataExtent[0];
+ var max3 = dataExtent[1];
+ return !(min3 > 0 && max3 > 0 || min3 < 0 && max3 < 0);
+}
+function makeLabelFormatter(axis) {
+ var labelFormatter = axis.getLabelModel().get("formatter");
+ var categoryTickStart = axis.type === "category" ? axis.scale.getExtent()[0] : null;
+ if (axis.scale.type === "time") {
+ return function(tpl) {
+ return function(tick, idx) {
+ return axis.scale.getFormattedLabel(tick, idx, tpl);
+ };
+ }(labelFormatter);
+ } else if (isString(labelFormatter)) {
+ return function(tpl) {
+ return function(tick) {
+ var label = axis.scale.getLabel(tick);
+ var text = tpl.replace("{value}", label != null ? label : "");
+ return text;
+ };
+ }(labelFormatter);
+ } else if (isFunction(labelFormatter)) {
+ return function(cb) {
+ return function(tick, idx) {
+ if (categoryTickStart != null) {
+ idx = tick.value - categoryTickStart;
+ }
+ return cb(getAxisRawValue(axis, tick), idx, tick.level != null ? {
+ level: tick.level
+ } : null);
+ };
+ }(labelFormatter);
+ } else {
+ return function(tick) {
+ return axis.scale.getLabel(tick);
+ };
+ }
+}
+function getAxisRawValue(axis, tick) {
+ return axis.type === "category" ? axis.scale.getLabel(tick) : tick.value;
+}
+function estimateLabelUnionRect(axis) {
+ var axisModel = axis.model;
+ var scale4 = axis.scale;
+ if (!axisModel.get(["axisLabel", "show"]) || scale4.isBlank()) {
+ return;
+ }
+ var realNumberScaleTicks;
+ var tickCount;
+ var categoryScaleExtent = scale4.getExtent();
+ if (scale4 instanceof Ordinal_default) {
+ tickCount = scale4.count();
+ } else {
+ realNumberScaleTicks = scale4.getTicks();
+ tickCount = realNumberScaleTicks.length;
+ }
+ var axisLabelModel = axis.getLabelModel();
+ var labelFormatter = makeLabelFormatter(axis);
+ var rect;
+ var step = 1;
+ if (tickCount > 40) {
+ step = Math.ceil(tickCount / 40);
+ }
+ for (var i = 0; i < tickCount; i += step) {
+ var tick = realNumberScaleTicks ? realNumberScaleTicks[i] : {
+ value: categoryScaleExtent[0] + i
+ };
+ var label = labelFormatter(tick, i);
+ var unrotatedSingleRect = axisLabelModel.getTextRect(label);
+ var singleRect = rotateTextRect(unrotatedSingleRect, axisLabelModel.get("rotate") || 0);
+ rect ? rect.union(singleRect) : rect = singleRect;
+ }
+ return rect;
+}
+function rotateTextRect(textRect, rotate2) {
+ var rotateRadians = rotate2 * Math.PI / 180;
+ var beforeWidth = textRect.width;
+ var beforeHeight = textRect.height;
+ var afterWidth = beforeWidth * Math.abs(Math.cos(rotateRadians)) + Math.abs(beforeHeight * Math.sin(rotateRadians));
+ var afterHeight = beforeWidth * Math.abs(Math.sin(rotateRadians)) + Math.abs(beforeHeight * Math.cos(rotateRadians));
+ var rotatedRect = new BoundingRect_default(textRect.x, textRect.y, afterWidth, afterHeight);
+ return rotatedRect;
+}
+function getOptionCategoryInterval(model) {
+ var interval = model.get("interval");
+ return interval == null ? "auto" : interval;
+}
+function shouldShowAllLabels(axis) {
+ return axis.type === "category" && getOptionCategoryInterval(axis.getLabelModel()) === 0;
+}
+function getDataDimensionsOnAxis(data, axisDim) {
+ var dataDimMap = {};
+ each(data.mapDimensionsAll(axisDim), function(dataDim) {
+ dataDimMap[getStackedDimension(data, dataDim)] = true;
+ });
+ return keys(dataDimMap);
+}
+function unionAxisExtentFromData(dataExtent, data, axisDim) {
+ if (data) {
+ each(getDataDimensionsOnAxis(data, axisDim), function(dim) {
+ var seriesExtent = data.getApproximateExtent(dim);
+ seriesExtent[0] < dataExtent[0] && (dataExtent[0] = seriesExtent[0]);
+ seriesExtent[1] > dataExtent[1] && (dataExtent[1] = seriesExtent[1]);
+ });
+ }
+}
+
+// node_modules/echarts/lib/coord/axisModelCommonMixin.js
+var AxisModelCommonMixin = function() {
+ function AxisModelCommonMixin2() {
+ }
+ AxisModelCommonMixin2.prototype.getNeedCrossZero = function() {
+ var option = this.option;
+ return !option.scale;
+ };
+ AxisModelCommonMixin2.prototype.getCoordSysModel = function() {
+ return;
+ };
+ return AxisModelCommonMixin2;
+}();
+
+// node_modules/echarts/lib/export/api/helper.js
+function createList(seriesModel) {
+ return createSeriesData_default(null, seriesModel);
+}
+var dataStack2 = {
+ isDimensionStacked,
+ enableDataStack,
+ getStackedDimension
+};
+function createScale(dataExtent, option) {
+ var axisModel = option;
+ if (!(option instanceof Model_default)) {
+ axisModel = new Model_default(option);
+ }
+ var scale4 = createScaleByModel(axisModel);
+ scale4.setExtent(dataExtent[0], dataExtent[1]);
+ niceScaleExtent(scale4, axisModel);
+ return scale4;
+}
+function mixinAxisModelCommonMethods(Model2) {
+ mixin(Model2, AxisModelCommonMixin);
+}
+function createTextStyle2(textStyleModel, opts) {
+ opts = opts || {};
+ return createTextStyle(textStyleModel, null, null, opts.state !== "normal");
+}
+
+// node_modules/zrender/lib/contain/polygon.js
+var EPSILON5 = 1e-8;
+function isAroundEqual2(a, b) {
+ return Math.abs(a - b) < EPSILON5;
+}
+function contain3(points4, x, y) {
+ var w = 0;
+ var p = points4[0];
+ if (!p) {
+ return false;
+ }
+ for (var i = 1; i < points4.length; i++) {
+ var p2 = points4[i];
+ w += windingLine(p[0], p[1], p2[0], p2[1], x, y);
+ p = p2;
+ }
+ var p0 = points4[0];
+ if (!isAroundEqual2(p[0], p0[0]) || !isAroundEqual2(p[1], p0[1])) {
+ w += windingLine(p[0], p[1], p0[0], p0[1], x, y);
+ }
+ return w !== 0;
+}
+
+// node_modules/echarts/lib/coord/geo/Region.js
+var TMP_TRANSFORM = [];
+function transformPoints(points4, transform2) {
+ for (var p = 0; p < points4.length; p++) {
+ applyTransform(points4[p], points4[p], transform2);
+ }
+}
+function updateBBoxFromPoints(points4, min3, max3, projection) {
+ for (var i = 0; i < points4.length; i++) {
+ var p = points4[i];
+ if (projection) {
+ p = projection.project(p);
+ }
+ if (p && isFinite(p[0]) && isFinite(p[1])) {
+ min(min3, min3, p);
+ max(max3, max3, p);
+ }
+ }
+}
+function centroid(points4) {
+ var signedArea = 0;
+ var cx = 0;
+ var cy = 0;
+ var len2 = points4.length;
+ var x0 = points4[len2 - 1][0];
+ var y0 = points4[len2 - 1][1];
+ for (var i = 0; i < len2; i++) {
+ var x1 = points4[i][0];
+ var y1 = points4[i][1];
+ var a = x0 * y1 - x1 * y0;
+ signedArea += a;
+ cx += (x0 + x1) * a;
+ cy += (y0 + y1) * a;
+ x0 = x1;
+ y0 = y1;
+ }
+ return signedArea ? [cx / signedArea / 3, cy / signedArea / 3, signedArea] : [points4[0][0] || 0, points4[0][1] || 0];
+}
+var Region = function() {
+ function Region2(name) {
+ this.name = name;
+ }
+ Region2.prototype.setCenter = function(center3) {
+ this._center = center3;
+ };
+ Region2.prototype.getCenter = function() {
+ var center3 = this._center;
+ if (!center3) {
+ center3 = this._center = this.calcCenter();
+ }
+ return center3;
+ };
+ return Region2;
+}();
+var GeoJSONPolygonGeometry = function() {
+ function GeoJSONPolygonGeometry2(exterior, interiors) {
+ this.type = "polygon";
+ this.exterior = exterior;
+ this.interiors = interiors;
+ }
+ return GeoJSONPolygonGeometry2;
+}();
+var GeoJSONLineStringGeometry = function() {
+ function GeoJSONLineStringGeometry2(points4) {
+ this.type = "linestring";
+ this.points = points4;
+ }
+ return GeoJSONLineStringGeometry2;
+}();
+var GeoJSONRegion = function(_super) {
+ __extends(GeoJSONRegion2, _super);
+ function GeoJSONRegion2(name, geometries, cp) {
+ var _this = _super.call(this, name) || this;
+ _this.type = "geoJSON";
+ _this.geometries = geometries;
+ _this._center = cp && [cp[0], cp[1]];
+ return _this;
+ }
+ GeoJSONRegion2.prototype.calcCenter = function() {
+ var geometries = this.geometries;
+ var largestGeo;
+ var largestGeoSize = 0;
+ for (var i = 0; i < geometries.length; i++) {
+ var geo = geometries[i];
+ var exterior = geo.exterior;
+ var size = exterior && exterior.length;
+ if (size > largestGeoSize) {
+ largestGeo = geo;
+ largestGeoSize = size;
+ }
+ }
+ if (largestGeo) {
+ return centroid(largestGeo.exterior);
+ }
+ var rect = this.getBoundingRect();
+ return [rect.x + rect.width / 2, rect.y + rect.height / 2];
+ };
+ GeoJSONRegion2.prototype.getBoundingRect = function(projection) {
+ var rect = this._rect;
+ if (rect && !projection) {
+ return rect;
+ }
+ var min3 = [Infinity, Infinity];
+ var max3 = [-Infinity, -Infinity];
+ var geometries = this.geometries;
+ each(geometries, function(geo) {
+ if (geo.type === "polygon") {
+ updateBBoxFromPoints(geo.exterior, min3, max3, projection);
+ } else {
+ each(geo.points, function(points4) {
+ updateBBoxFromPoints(points4, min3, max3, projection);
+ });
+ }
+ });
+ if (!(isFinite(min3[0]) && isFinite(min3[1]) && isFinite(max3[0]) && isFinite(max3[1]))) {
+ min3[0] = min3[1] = max3[0] = max3[1] = 0;
+ }
+ rect = new BoundingRect_default(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]);
+ if (!projection) {
+ this._rect = rect;
+ }
+ return rect;
+ };
+ GeoJSONRegion2.prototype.contain = function(coord) {
+ var rect = this.getBoundingRect();
+ var geometries = this.geometries;
+ if (!rect.contain(coord[0], coord[1])) {
+ return false;
+ }
+ loopGeo:
+ for (var i = 0, len2 = geometries.length; i < len2; i++) {
+ var geo = geometries[i];
+ if (geo.type !== "polygon") {
+ continue;
+ }
+ var exterior = geo.exterior;
+ var interiors = geo.interiors;
+ if (contain3(exterior, coord[0], coord[1])) {
+ for (var k = 0; k < (interiors ? interiors.length : 0); k++) {
+ if (contain3(interiors[k], coord[0], coord[1])) {
+ continue loopGeo;
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ };
+ GeoJSONRegion2.prototype.transformTo = function(x, y, width, height) {
+ var rect = this.getBoundingRect();
+ var aspect = rect.width / rect.height;
+ if (!width) {
+ width = aspect * height;
+ } else if (!height) {
+ height = width / aspect;
+ }
+ var target = new BoundingRect_default(x, y, width, height);
+ var transform2 = rect.calculateTransform(target);
+ var geometries = this.geometries;
+ for (var i = 0; i < geometries.length; i++) {
+ var geo = geometries[i];
+ if (geo.type === "polygon") {
+ transformPoints(geo.exterior, transform2);
+ each(geo.interiors, function(interior) {
+ transformPoints(interior, transform2);
+ });
+ } else {
+ each(geo.points, function(points4) {
+ transformPoints(points4, transform2);
+ });
+ }
+ }
+ rect = this._rect;
+ rect.copy(target);
+ this._center = [rect.x + rect.width / 2, rect.y + rect.height / 2];
+ };
+ GeoJSONRegion2.prototype.cloneShallow = function(name) {
+ name == null && (name = this.name);
+ var newRegion = new GeoJSONRegion2(name, this.geometries, this._center);
+ newRegion._rect = this._rect;
+ newRegion.transformTo = null;
+ return newRegion;
+ };
+ return GeoJSONRegion2;
+}(Region);
+var GeoSVGRegion = function(_super) {
+ __extends(GeoSVGRegion2, _super);
+ function GeoSVGRegion2(name, elOnlyForCalculate) {
+ var _this = _super.call(this, name) || this;
+ _this.type = "geoSVG";
+ _this._elOnlyForCalculate = elOnlyForCalculate;
+ return _this;
+ }
+ GeoSVGRegion2.prototype.calcCenter = function() {
+ var el = this._elOnlyForCalculate;
+ var rect = el.getBoundingRect();
+ var center3 = [rect.x + rect.width / 2, rect.y + rect.height / 2];
+ var mat = identity(TMP_TRANSFORM);
+ var target = el;
+ while (target && !target.isGeoSVGGraphicRoot) {
+ mul2(mat, target.getLocalTransform(), mat);
+ target = target.parent;
+ }
+ invert(mat, mat);
+ applyTransform(center3, center3, mat);
+ return center3;
+ };
+ return GeoSVGRegion2;
+}(Region);
+
+// node_modules/echarts/lib/coord/geo/parseGeoJson.js
+function decode(json) {
+ if (!json.UTF8Encoding) {
+ return json;
+ }
+ var jsonCompressed = json;
+ var encodeScale = jsonCompressed.UTF8Scale;
+ if (encodeScale == null) {
+ encodeScale = 1024;
+ }
+ var features2 = jsonCompressed.features;
+ each(features2, function(feature) {
+ var geometry = feature.geometry;
+ var encodeOffsets = geometry.encodeOffsets;
+ var coordinates = geometry.coordinates;
+ if (!encodeOffsets) {
+ return;
+ }
+ switch (geometry.type) {
+ case "LineString":
+ geometry.coordinates = decodeRing(coordinates, encodeOffsets, encodeScale);
+ break;
+ case "Polygon":
+ decodeRings(coordinates, encodeOffsets, encodeScale);
+ break;
+ case "MultiLineString":
+ decodeRings(coordinates, encodeOffsets, encodeScale);
+ break;
+ case "MultiPolygon":
+ each(coordinates, function(rings, idx) {
+ return decodeRings(rings, encodeOffsets[idx], encodeScale);
+ });
+ }
+ });
+ jsonCompressed.UTF8Encoding = false;
+ return jsonCompressed;
+}
+function decodeRings(rings, encodeOffsets, encodeScale) {
+ for (var c = 0; c < rings.length; c++) {
+ rings[c] = decodeRing(rings[c], encodeOffsets[c], encodeScale);
+ }
+}
+function decodeRing(coordinate, encodeOffsets, encodeScale) {
+ var result = [];
+ var prevX = encodeOffsets[0];
+ var prevY = encodeOffsets[1];
+ for (var i = 0; i < coordinate.length; i += 2) {
+ var x = coordinate.charCodeAt(i) - 64;
+ var y = coordinate.charCodeAt(i + 1) - 64;
+ x = x >> 1 ^ -(x & 1);
+ y = y >> 1 ^ -(y & 1);
+ x += prevX;
+ y += prevY;
+ prevX = x;
+ prevY = y;
+ result.push([x / encodeScale, y / encodeScale]);
+ }
+ return result;
+}
+function parseGeoJSON(geoJson, nameProperty) {
+ geoJson = decode(geoJson);
+ return map(filter(geoJson.features, function(featureObj) {
+ return featureObj.geometry && featureObj.properties && featureObj.geometry.coordinates.length > 0;
+ }), function(featureObj) {
+ var properties = featureObj.properties;
+ var geo = featureObj.geometry;
+ var geometries = [];
+ switch (geo.type) {
+ case "Polygon":
+ var coordinates = geo.coordinates;
+ geometries.push(new GeoJSONPolygonGeometry(coordinates[0], coordinates.slice(1)));
+ break;
+ case "MultiPolygon":
+ each(geo.coordinates, function(item) {
+ if (item[0]) {
+ geometries.push(new GeoJSONPolygonGeometry(item[0], item.slice(1)));
+ }
+ });
+ break;
+ case "LineString":
+ geometries.push(new GeoJSONLineStringGeometry([geo.coordinates]));
+ break;
+ case "MultiLineString":
+ geometries.push(new GeoJSONLineStringGeometry(geo.coordinates));
+ }
+ var region = new GeoJSONRegion(properties[nameProperty || "name"], geometries, properties.cp);
+ region.properties = properties;
+ return region;
+ });
+}
+
+// node_modules/echarts/lib/export/api/number.js
+var number_exports2 = {};
+__export(number_exports2, {
+ MAX_SAFE_INTEGER: () => MAX_SAFE_INTEGER,
+ asc: () => asc,
+ getPercentWithPrecision: () => getPercentWithPrecision,
+ getPixelPrecision: () => getPixelPrecision,
+ getPrecision: () => getPrecision,
+ getPrecisionSafe: () => getPrecisionSafe,
+ isNumeric: () => isNumeric,
+ isRadianAroundZero: () => isRadianAroundZero,
+ linearMap: () => linearMap,
+ nice: () => nice,
+ numericToNumber: () => numericToNumber,
+ parseDate: () => parseDate,
+ quantile: () => quantile,
+ quantity: () => quantity,
+ quantityExponent: () => quantityExponent,
+ reformIntervals: () => reformIntervals,
+ remRadian: () => remRadian,
+ round: () => round
+});
+
+// node_modules/echarts/lib/export/api/time.js
+var time_exports = {};
+__export(time_exports, {
+ format: () => format,
+ parse: () => parseDate
+});
+
+// node_modules/echarts/lib/export/api/graphic.js
+var graphic_exports2 = {};
+__export(graphic_exports2, {
+ Arc: () => Arc_default,
+ BezierCurve: () => BezierCurve_default,
+ BoundingRect: () => BoundingRect_default,
+ Circle: () => Circle_default,
+ CompoundPath: () => CompoundPath_default,
+ Ellipse: () => Ellipse_default,
+ Group: () => Group_default,
+ Image: () => Image_default,
+ IncrementalDisplayable: () => IncrementalDisplayable_default,
+ Line: () => Line_default,
+ LinearGradient: () => LinearGradient_default,
+ Polygon: () => Polygon_default,
+ Polyline: () => Polyline_default,
+ RadialGradient: () => RadialGradient_default,
+ Rect: () => Rect_default,
+ Ring: () => Ring_default,
+ Sector: () => Sector_default,
+ Text: () => Text_default,
+ clipPointsByRect: () => clipPointsByRect,
+ clipRectByRect: () => clipRectByRect,
+ createIcon: () => createIcon,
+ extendPath: () => extendPath,
+ extendShape: () => extendShape,
+ getShapeClass: () => getShapeClass,
+ getTransform: () => getTransform,
+ initProps: () => initProps,
+ makeImage: () => makeImage,
+ makePath: () => makePath,
+ mergePath: () => mergePath2,
+ registerShape: () => registerShape,
+ resizePath: () => resizePath,
+ updateProps: () => updateProps
+});
+
+// node_modules/echarts/lib/export/api/format.js
+var format_exports2 = {};
+__export(format_exports2, {
+ addCommas: () => addCommas,
+ capitalFirst: () => capitalFirst,
+ encodeHTML: () => encodeHTML,
+ formatTime: () => formatTime,
+ formatTpl: () => formatTpl,
+ getTextRect: () => getTextRect,
+ getTooltipMarker: () => getTooltipMarker,
+ normalizeCssArray: () => normalizeCssArray2,
+ toCamelCase: () => toCamelCase,
+ truncateText: () => truncateText
+});
+
+// node_modules/echarts/lib/export/api/util.js
+var util_exports2 = {};
+__export(util_exports2, {
+ bind: () => bind,
+ clone: () => clone,
+ curry: () => curry,
+ defaults: () => defaults,
+ each: () => each,
+ extend: () => extend,
+ filter: () => filter,
+ indexOf: () => indexOf,
+ inherits: () => inherits,
+ isArray: () => isArray,
+ isFunction: () => isFunction,
+ isObject: () => isObject,
+ isString: () => isString,
+ map: () => map,
+ merge: () => merge,
+ reduce: () => reduce
+});
+
+// node_modules/echarts/lib/coord/axisTickLabelBuilder.js
+var inner6 = makeInner();
+function tickValuesToNumbers(axis, values) {
+ var nums = map(values, function(val) {
+ return axis.scale.parse(val);
+ });
+ if (axis.type === "time" && nums.length > 0) {
+ nums.sort();
+ nums.unshift(nums[0]);
+ nums.push(nums[nums.length - 1]);
+ }
+ return nums;
+}
+function createAxisLabels(axis) {
+ var custom = axis.getLabelModel().get("customValues");
+ if (custom) {
+ var labelFormatter_1 = makeLabelFormatter(axis);
+ var extent_1 = axis.scale.getExtent();
+ var tickNumbers = tickValuesToNumbers(axis, custom);
+ var ticks = filter(tickNumbers, function(val) {
+ return val >= extent_1[0] && val <= extent_1[1];
+ });
+ return {
+ labels: map(ticks, function(numval) {
+ var tick = {
+ value: numval
+ };
+ return {
+ formattedLabel: labelFormatter_1(tick),
+ rawLabel: axis.scale.getLabel(tick),
+ tickValue: numval
+ };
+ })
+ };
+ }
+ return axis.type === "category" ? makeCategoryLabels(axis) : makeRealNumberLabels(axis);
+}
+function createAxisTicks(axis, tickModel) {
+ var custom = axis.getTickModel().get("customValues");
+ if (custom) {
+ var extent_2 = axis.scale.getExtent();
+ var tickNumbers = tickValuesToNumbers(axis, custom);
+ return {
+ ticks: filter(tickNumbers, function(val) {
+ return val >= extent_2[0] && val <= extent_2[1];
+ })
+ };
+ }
+ return axis.type === "category" ? makeCategoryTicks(axis, tickModel) : {
+ ticks: map(axis.scale.getTicks(), function(tick) {
+ return tick.value;
+ })
+ };
+}
+function makeCategoryLabels(axis) {
+ var labelModel = axis.getLabelModel();
+ var result = makeCategoryLabelsActually(axis, labelModel);
+ return !labelModel.get("show") || axis.scale.isBlank() ? {
+ labels: [],
+ labelCategoryInterval: result.labelCategoryInterval
+ } : result;
+}
+function makeCategoryLabelsActually(axis, labelModel) {
+ var labelsCache = getListCache(axis, "labels");
+ var optionLabelInterval = getOptionCategoryInterval(labelModel);
+ var result = listCacheGet(labelsCache, optionLabelInterval);
+ if (result) {
+ return result;
+ }
+ var labels;
+ var numericLabelInterval;
+ if (isFunction(optionLabelInterval)) {
+ labels = makeLabelsByCustomizedCategoryInterval(axis, optionLabelInterval);
+ } else {
+ numericLabelInterval = optionLabelInterval === "auto" ? makeAutoCategoryInterval(axis) : optionLabelInterval;
+ labels = makeLabelsByNumericCategoryInterval(axis, numericLabelInterval);
+ }
+ return listCacheSet(labelsCache, optionLabelInterval, {
+ labels,
+ labelCategoryInterval: numericLabelInterval
+ });
+}
+function makeCategoryTicks(axis, tickModel) {
+ var ticksCache = getListCache(axis, "ticks");
+ var optionTickInterval = getOptionCategoryInterval(tickModel);
+ var result = listCacheGet(ticksCache, optionTickInterval);
+ if (result) {
+ return result;
+ }
+ var ticks;
+ var tickCategoryInterval;
+ if (!tickModel.get("show") || axis.scale.isBlank()) {
+ ticks = [];
+ }
+ if (isFunction(optionTickInterval)) {
+ ticks = makeLabelsByCustomizedCategoryInterval(axis, optionTickInterval, true);
+ } else if (optionTickInterval === "auto") {
+ var labelsResult = makeCategoryLabelsActually(axis, axis.getLabelModel());
+ tickCategoryInterval = labelsResult.labelCategoryInterval;
+ ticks = map(labelsResult.labels, function(labelItem) {
+ return labelItem.tickValue;
+ });
+ } else {
+ tickCategoryInterval = optionTickInterval;
+ ticks = makeLabelsByNumericCategoryInterval(axis, tickCategoryInterval, true);
+ }
+ return listCacheSet(ticksCache, optionTickInterval, {
+ ticks,
+ tickCategoryInterval
+ });
+}
+function makeRealNumberLabels(axis) {
+ var ticks = axis.scale.getTicks();
+ var labelFormatter = makeLabelFormatter(axis);
+ return {
+ labels: map(ticks, function(tick, idx) {
+ return {
+ level: tick.level,
+ formattedLabel: labelFormatter(tick, idx),
+ rawLabel: axis.scale.getLabel(tick),
+ tickValue: tick.value
+ };
+ })
+ };
+}
+function getListCache(axis, prop) {
+ return inner6(axis)[prop] || (inner6(axis)[prop] = []);
+}
+function listCacheGet(cache, key) {
+ for (var i = 0; i < cache.length; i++) {
+ if (cache[i].key === key) {
+ return cache[i].value;
+ }
+ }
+}
+function listCacheSet(cache, key, value) {
+ cache.push({
+ key,
+ value
+ });
+ return value;
+}
+function makeAutoCategoryInterval(axis) {
+ var result = inner6(axis).autoInterval;
+ return result != null ? result : inner6(axis).autoInterval = axis.calculateCategoryInterval();
+}
+function calculateCategoryInterval(axis) {
+ var params = fetchAutoCategoryIntervalCalculationParams(axis);
+ var labelFormatter = makeLabelFormatter(axis);
+ var rotation = (params.axisRotate - params.labelRotate) / 180 * Math.PI;
+ var ordinalScale = axis.scale;
+ var ordinalExtent = ordinalScale.getExtent();
+ var tickCount = ordinalScale.count();
+ if (ordinalExtent[1] - ordinalExtent[0] < 1) {
+ return 0;
+ }
+ var step = 1;
+ if (tickCount > 40) {
+ step = Math.max(1, Math.floor(tickCount / 40));
+ }
+ var tickValue = ordinalExtent[0];
+ var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);
+ var unitW = Math.abs(unitSpan * Math.cos(rotation));
+ var unitH = Math.abs(unitSpan * Math.sin(rotation));
+ var maxW = 0;
+ var maxH = 0;
+ for (; tickValue <= ordinalExtent[1]; tickValue += step) {
+ var width = 0;
+ var height = 0;
+ var rect = getBoundingRect(labelFormatter({
+ value: tickValue
+ }), params.font, "center", "top");
+ width = rect.width * 1.3;
+ height = rect.height * 1.3;
+ maxW = Math.max(maxW, width, 7);
+ maxH = Math.max(maxH, height, 7);
+ }
+ var dw = maxW / unitW;
+ var dh = maxH / unitH;
+ isNaN(dw) && (dw = Infinity);
+ isNaN(dh) && (dh = Infinity);
+ var interval = Math.max(0, Math.floor(Math.min(dw, dh)));
+ var cache = inner6(axis.model);
+ var axisExtent = axis.getExtent();
+ var lastAutoInterval = cache.lastAutoInterval;
+ var lastTickCount = cache.lastTickCount;
+ if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval && cache.axisExtent0 === axisExtent[0] && cache.axisExtent1 === axisExtent[1]) {
+ interval = lastAutoInterval;
+ } else {
+ cache.lastTickCount = tickCount;
+ cache.lastAutoInterval = interval;
+ cache.axisExtent0 = axisExtent[0];
+ cache.axisExtent1 = axisExtent[1];
+ }
+ return interval;
+}
+function fetchAutoCategoryIntervalCalculationParams(axis) {
+ var labelModel = axis.getLabelModel();
+ return {
+ axisRotate: axis.getRotate ? axis.getRotate() : axis.isHorizontal && !axis.isHorizontal() ? 90 : 0,
+ labelRotate: labelModel.get("rotate") || 0,
+ font: labelModel.getFont()
+ };
+}
+function makeLabelsByNumericCategoryInterval(axis, categoryInterval, onlyTick) {
+ var labelFormatter = makeLabelFormatter(axis);
+ var ordinalScale = axis.scale;
+ var ordinalExtent = ordinalScale.getExtent();
+ var labelModel = axis.getLabelModel();
+ var result = [];
+ var step = Math.max((categoryInterval || 0) + 1, 1);
+ var startTick = ordinalExtent[0];
+ var tickCount = ordinalScale.count();
+ if (startTick !== 0 && step > 1 && tickCount / step > 2) {
+ startTick = Math.round(Math.ceil(startTick / step) * step);
+ }
+ var showAllLabel = shouldShowAllLabels(axis);
+ var includeMinLabel = labelModel.get("showMinLabel") || showAllLabel;
+ var includeMaxLabel = labelModel.get("showMaxLabel") || showAllLabel;
+ if (includeMinLabel && startTick !== ordinalExtent[0]) {
+ addItem(ordinalExtent[0]);
+ }
+ var tickValue = startTick;
+ for (; tickValue <= ordinalExtent[1]; tickValue += step) {
+ addItem(tickValue);
+ }
+ if (includeMaxLabel && tickValue - step !== ordinalExtent[1]) {
+ addItem(ordinalExtent[1]);
+ }
+ function addItem(tickValue2) {
+ var tickObj = {
+ value: tickValue2
+ };
+ result.push(onlyTick ? tickValue2 : {
+ formattedLabel: labelFormatter(tickObj),
+ rawLabel: ordinalScale.getLabel(tickObj),
+ tickValue: tickValue2
+ });
+ }
+ return result;
+}
+function makeLabelsByCustomizedCategoryInterval(axis, categoryInterval, onlyTick) {
+ var ordinalScale = axis.scale;
+ var labelFormatter = makeLabelFormatter(axis);
+ var result = [];
+ each(ordinalScale.getTicks(), function(tick) {
+ var rawLabel = ordinalScale.getLabel(tick);
+ var tickValue = tick.value;
+ if (categoryInterval(tick.value, rawLabel)) {
+ result.push(onlyTick ? tickValue : {
+ formattedLabel: labelFormatter(tick),
+ rawLabel,
+ tickValue
+ });
+ }
+ });
+ return result;
+}
+
+// node_modules/echarts/lib/coord/Axis.js
+var NORMALIZED_EXTENT = [0, 1];
+var Axis = function() {
+ function Axis2(dim, scale4, extent3) {
+ this.onBand = false;
+ this.inverse = false;
+ this.dim = dim;
+ this.scale = scale4;
+ this._extent = extent3 || [0, 0];
+ }
+ Axis2.prototype.contain = function(coord) {
+ var extent3 = this._extent;
+ var min3 = Math.min(extent3[0], extent3[1]);
+ var max3 = Math.max(extent3[0], extent3[1]);
+ return coord >= min3 && coord <= max3;
+ };
+ Axis2.prototype.containData = function(data) {
+ return this.scale.contain(data);
+ };
+ Axis2.prototype.getExtent = function() {
+ return this._extent.slice();
+ };
+ Axis2.prototype.getPixelPrecision = function(dataExtent) {
+ return getPixelPrecision(dataExtent || this.scale.getExtent(), this._extent);
+ };
+ Axis2.prototype.setExtent = function(start2, end2) {
+ var extent3 = this._extent;
+ extent3[0] = start2;
+ extent3[1] = end2;
+ };
+ Axis2.prototype.dataToCoord = function(data, clamp2) {
+ var extent3 = this._extent;
+ var scale4 = this.scale;
+ data = scale4.normalize(data);
+ if (this.onBand && scale4.type === "ordinal") {
+ extent3 = extent3.slice();
+ fixExtentWithBands(extent3, scale4.count());
+ }
+ return linearMap(data, NORMALIZED_EXTENT, extent3, clamp2);
+ };
+ Axis2.prototype.coordToData = function(coord, clamp2) {
+ var extent3 = this._extent;
+ var scale4 = this.scale;
+ if (this.onBand && scale4.type === "ordinal") {
+ extent3 = extent3.slice();
+ fixExtentWithBands(extent3, scale4.count());
+ }
+ var t = linearMap(coord, extent3, NORMALIZED_EXTENT, clamp2);
+ return this.scale.scale(t);
+ };
+ Axis2.prototype.pointToData = function(point, clamp2) {
+ return;
+ };
+ Axis2.prototype.getTicksCoords = function(opt) {
+ opt = opt || {};
+ var tickModel = opt.tickModel || this.getTickModel();
+ var result = createAxisTicks(this, tickModel);
+ var ticks = result.ticks;
+ var ticksCoords = map(ticks, function(tickVal) {
+ return {
+ coord: this.dataToCoord(this.scale.type === "ordinal" ? this.scale.getRawOrdinalNumber(tickVal) : tickVal),
+ tickValue: tickVal
+ };
+ }, this);
+ var alignWithLabel = tickModel.get("alignWithLabel");
+ fixOnBandTicksCoords(this, ticksCoords, alignWithLabel, opt.clamp);
+ return ticksCoords;
+ };
+ Axis2.prototype.getMinorTicksCoords = function() {
+ if (this.scale.type === "ordinal") {
+ return [];
+ }
+ var minorTickModel = this.model.getModel("minorTick");
+ var splitNumber = minorTickModel.get("splitNumber");
+ if (!(splitNumber > 0 && splitNumber < 100)) {
+ splitNumber = 5;
+ }
+ var minorTicks = this.scale.getMinorTicks(splitNumber);
+ var minorTicksCoords = map(minorTicks, function(minorTicksGroup) {
+ return map(minorTicksGroup, function(minorTick) {
+ return {
+ coord: this.dataToCoord(minorTick),
+ tickValue: minorTick
+ };
+ }, this);
+ }, this);
+ return minorTicksCoords;
+ };
+ Axis2.prototype.getViewLabels = function() {
+ return createAxisLabels(this).labels;
+ };
+ Axis2.prototype.getLabelModel = function() {
+ return this.model.getModel("axisLabel");
+ };
+ Axis2.prototype.getTickModel = function() {
+ return this.model.getModel("axisTick");
+ };
+ Axis2.prototype.getBandWidth = function() {
+ var axisExtent = this._extent;
+ var dataExtent = this.scale.getExtent();
+ var len2 = dataExtent[1] - dataExtent[0] + (this.onBand ? 1 : 0);
+ len2 === 0 && (len2 = 1);
+ var size = Math.abs(axisExtent[1] - axisExtent[0]);
+ return Math.abs(size) / len2;
+ };
+ Axis2.prototype.calculateCategoryInterval = function() {
+ return calculateCategoryInterval(this);
+ };
+ return Axis2;
+}();
+function fixExtentWithBands(extent3, nTick) {
+ var size = extent3[1] - extent3[0];
+ var len2 = nTick;
+ var margin = size / len2 / 2;
+ extent3[0] += margin;
+ extent3[1] -= margin;
+}
+function fixOnBandTicksCoords(axis, ticksCoords, alignWithLabel, clamp2) {
+ var ticksLen = ticksCoords.length;
+ if (!axis.onBand || alignWithLabel || !ticksLen) {
+ return;
+ }
+ var axisExtent = axis.getExtent();
+ var last;
+ var diffSize;
+ if (ticksLen === 1) {
+ ticksCoords[0].coord = axisExtent[0];
+ last = ticksCoords[1] = {
+ coord: axisExtent[1],
+ tickValue: ticksCoords[0].tickValue
+ };
+ } else {
+ var crossLen = ticksCoords[ticksLen - 1].tickValue - ticksCoords[0].tickValue;
+ var shift_1 = (ticksCoords[ticksLen - 1].coord - ticksCoords[0].coord) / crossLen;
+ each(ticksCoords, function(ticksItem) {
+ ticksItem.coord -= shift_1 / 2;
+ });
+ var dataExtent = axis.scale.getExtent();
+ diffSize = 1 + dataExtent[1] - ticksCoords[ticksLen - 1].tickValue;
+ last = {
+ coord: ticksCoords[ticksLen - 1].coord + shift_1 * diffSize,
+ tickValue: dataExtent[1] + 1
+ };
+ ticksCoords.push(last);
+ }
+ var inverse = axisExtent[0] > axisExtent[1];
+ if (littleThan2(ticksCoords[0].coord, axisExtent[0])) {
+ clamp2 ? ticksCoords[0].coord = axisExtent[0] : ticksCoords.shift();
+ }
+ if (clamp2 && littleThan2(axisExtent[0], ticksCoords[0].coord)) {
+ ticksCoords.unshift({
+ coord: axisExtent[0]
+ });
+ }
+ if (littleThan2(axisExtent[1], last.coord)) {
+ clamp2 ? last.coord = axisExtent[1] : ticksCoords.pop();
+ }
+ if (clamp2 && littleThan2(last.coord, axisExtent[1])) {
+ ticksCoords.push({
+ coord: axisExtent[1]
+ });
+ }
+ function littleThan2(a, b) {
+ a = round(a);
+ b = round(b);
+ return inverse ? a > b : a < b;
+ }
+}
+var Axis_default = Axis;
+
+// node_modules/echarts/lib/export/api.js
+function extendComponentModel(proto2) {
+ var Model2 = Component_default.extend(proto2);
+ Component_default.registerClass(Model2);
+ return Model2;
+}
+function extendComponentView(proto2) {
+ var View2 = Component_default2.extend(proto2);
+ Component_default2.registerClass(View2);
+ return View2;
+}
+function extendSeriesModel(proto2) {
+ var Model2 = Series_default.extend(proto2);
+ Series_default.registerClass(Model2);
+ return Model2;
+}
+function extendChartView(proto2) {
+ var View2 = Chart_default.extend(proto2);
+ Chart_default.registerClass(View2);
+ return View2;
+}
+
+// node_modules/echarts/lib/label/labelGuideHelper.js
+var PI27 = Math.PI * 2;
+var CMD4 = PathProxy_default.CMD;
+var DEFAULT_SEARCH_SPACE = ["top", "right", "bottom", "left"];
+function getCandidateAnchor(pos, distance2, rect, outPt, outDir) {
+ var width = rect.width;
+ var height = rect.height;
+ switch (pos) {
+ case "top":
+ outPt.set(rect.x + width / 2, rect.y - distance2);
+ outDir.set(0, -1);
+ break;
+ case "bottom":
+ outPt.set(rect.x + width / 2, rect.y + height + distance2);
+ outDir.set(0, 1);
+ break;
+ case "left":
+ outPt.set(rect.x - distance2, rect.y + height / 2);
+ outDir.set(-1, 0);
+ break;
+ case "right":
+ outPt.set(rect.x + width + distance2, rect.y + height / 2);
+ outDir.set(1, 0);
+ break;
+ }
+}
+function projectPointToArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y, out2) {
+ x -= cx;
+ y -= cy;
+ var d = Math.sqrt(x * x + y * y);
+ x /= d;
+ y /= d;
+ var ox = x * r + cx;
+ var oy = y * r + cy;
+ if (Math.abs(startAngle - endAngle) % PI27 < 1e-4) {
+ out2[0] = ox;
+ out2[1] = oy;
+ return d - r;
+ }
+ if (anticlockwise) {
+ var tmp = startAngle;
+ startAngle = normalizeRadian(endAngle);
+ endAngle = normalizeRadian(tmp);
+ } else {
+ startAngle = normalizeRadian(startAngle);
+ endAngle = normalizeRadian(endAngle);
+ }
+ if (startAngle > endAngle) {
+ endAngle += PI27;
+ }
+ var angle = Math.atan2(y, x);
+ if (angle < 0) {
+ angle += PI27;
+ }
+ if (angle >= startAngle && angle <= endAngle || angle + PI27 >= startAngle && angle + PI27 <= endAngle) {
+ out2[0] = ox;
+ out2[1] = oy;
+ return d - r;
+ }
+ var x1 = r * Math.cos(startAngle) + cx;
+ var y1 = r * Math.sin(startAngle) + cy;
+ var x2 = r * Math.cos(endAngle) + cx;
+ var y2 = r * Math.sin(endAngle) + cy;
+ var d1 = (x1 - x) * (x1 - x) + (y1 - y) * (y1 - y);
+ var d2 = (x2 - x) * (x2 - x) + (y2 - y) * (y2 - y);
+ if (d1 < d2) {
+ out2[0] = x1;
+ out2[1] = y1;
+ return Math.sqrt(d1);
+ } else {
+ out2[0] = x2;
+ out2[1] = y2;
+ return Math.sqrt(d2);
+ }
+}
+function projectPointToLine(x1, y1, x2, y2, x, y, out2, limitToEnds) {
+ var dx = x - x1;
+ var dy = y - y1;
+ var dx1 = x2 - x1;
+ var dy1 = y2 - y1;
+ var lineLen = Math.sqrt(dx1 * dx1 + dy1 * dy1);
+ dx1 /= lineLen;
+ dy1 /= lineLen;
+ var projectedLen = dx * dx1 + dy * dy1;
+ var t = projectedLen / lineLen;
+ if (limitToEnds) {
+ t = Math.min(Math.max(t, 0), 1);
+ }
+ t *= lineLen;
+ var ox = out2[0] = x1 + t * dx1;
+ var oy = out2[1] = y1 + t * dy1;
+ return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));
+}
+function projectPointToRect(x1, y1, width, height, x, y, out2) {
+ if (width < 0) {
+ x1 = x1 + width;
+ width = -width;
+ }
+ if (height < 0) {
+ y1 = y1 + height;
+ height = -height;
+ }
+ var x2 = x1 + width;
+ var y2 = y1 + height;
+ var ox = out2[0] = Math.min(Math.max(x, x1), x2);
+ var oy = out2[1] = Math.min(Math.max(y, y1), y2);
+ return Math.sqrt((ox - x) * (ox - x) + (oy - y) * (oy - y));
+}
+var tmpPt = [];
+function nearestPointOnRect(pt, rect, out2) {
+ var dist3 = projectPointToRect(rect.x, rect.y, rect.width, rect.height, pt.x, pt.y, tmpPt);
+ out2.set(tmpPt[0], tmpPt[1]);
+ return dist3;
+}
+function nearestPointOnPath(pt, path, out2) {
+ var xi = 0;
+ var yi = 0;
+ var x0 = 0;
+ var y0 = 0;
+ var x1;
+ var y1;
+ var minDist = Infinity;
+ var data = path.data;
+ var x = pt.x;
+ var y = pt.y;
+ for (var i = 0; i < data.length; ) {
+ var cmd = data[i++];
+ if (i === 1) {
+ xi = data[i];
+ yi = data[i + 1];
+ x0 = xi;
+ y0 = yi;
+ }
+ var d = minDist;
+ switch (cmd) {
+ case CMD4.M:
+ x0 = data[i++];
+ y0 = data[i++];
+ xi = x0;
+ yi = y0;
+ break;
+ case CMD4.L:
+ d = projectPointToLine(xi, yi, data[i], data[i + 1], x, y, tmpPt, true);
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD4.C:
+ d = cubicProjectPoint(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD4.Q:
+ d = quadraticProjectPoint(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y, tmpPt);
+ xi = data[i++];
+ yi = data[i++];
+ break;
+ case CMD4.A:
+ var cx = data[i++];
+ var cy = data[i++];
+ var rx = data[i++];
+ var ry = data[i++];
+ var theta = data[i++];
+ var dTheta = data[i++];
+ i += 1;
+ var anticlockwise = !!(1 - data[i++]);
+ x1 = Math.cos(theta) * rx + cx;
+ y1 = Math.sin(theta) * ry + cy;
+ if (i <= 1) {
+ x0 = x1;
+ y0 = y1;
+ }
+ var _x = (x - cx) * ry / rx + cx;
+ d = projectPointToArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y, tmpPt);
+ xi = Math.cos(theta + dTheta) * rx + cx;
+ yi = Math.sin(theta + dTheta) * ry + cy;
+ break;
+ case CMD4.R:
+ x0 = xi = data[i++];
+ y0 = yi = data[i++];
+ var width = data[i++];
+ var height = data[i++];
+ d = projectPointToRect(x0, y0, width, height, x, y, tmpPt);
+ break;
+ case CMD4.Z:
+ d = projectPointToLine(xi, yi, x0, y0, x, y, tmpPt, true);
+ xi = x0;
+ yi = y0;
+ break;
+ }
+ if (d < minDist) {
+ minDist = d;
+ out2.set(tmpPt[0], tmpPt[1]);
+ }
+ }
+ return minDist;
+}
+var pt0 = new Point_default();
+var pt1 = new Point_default();
+var pt2 = new Point_default();
+var dir = new Point_default();
+var dir2 = new Point_default();
+function updateLabelLinePoints(target, labelLineModel) {
+ if (!target) {
+ return;
+ }
+ var labelLine = target.getTextGuideLine();
+ var label = target.getTextContent();
+ if (!(label && labelLine)) {
+ return;
+ }
+ var labelGuideConfig = target.textGuideLineConfig || {};
+ var points4 = [[0, 0], [0, 0], [0, 0]];
+ var searchSpace = labelGuideConfig.candidates || DEFAULT_SEARCH_SPACE;
+ var labelRect = label.getBoundingRect().clone();
+ labelRect.applyTransform(label.getComputedTransform());
+ var minDist = Infinity;
+ var anchorPoint = labelGuideConfig.anchor;
+ var targetTransform = target.getComputedTransform();
+ var targetInversedTransform = targetTransform && invert([], targetTransform);
+ var len2 = labelLineModel.get("length2") || 0;
+ if (anchorPoint) {
+ pt2.copy(anchorPoint);
+ }
+ for (var i = 0; i < searchSpace.length; i++) {
+ var candidate = searchSpace[i];
+ getCandidateAnchor(candidate, 0, labelRect, pt0, dir);
+ Point_default.scaleAndAdd(pt1, pt0, dir, len2);
+ pt1.transform(targetInversedTransform);
+ var boundingRect = target.getBoundingRect();
+ var dist3 = anchorPoint ? anchorPoint.distance(pt1) : target instanceof Path_default ? nearestPointOnPath(pt1, target.path, pt2) : nearestPointOnRect(pt1, boundingRect, pt2);
+ if (dist3 < minDist) {
+ minDist = dist3;
+ pt1.transform(targetTransform);
+ pt2.transform(targetTransform);
+ pt2.toArray(points4[0]);
+ pt1.toArray(points4[1]);
+ pt0.toArray(points4[2]);
+ }
+ }
+ limitTurnAngle(points4, labelLineModel.get("minTurnAngle"));
+ labelLine.setShape({
+ points: points4
+ });
+}
+var tmpArr = [];
+var tmpProjPoint = new Point_default();
+function limitTurnAngle(linePoints, minTurnAngle) {
+ if (!(minTurnAngle <= 180 && minTurnAngle > 0)) {
+ return;
+ }
+ minTurnAngle = minTurnAngle / 180 * Math.PI;
+ pt0.fromArray(linePoints[0]);
+ pt1.fromArray(linePoints[1]);
+ pt2.fromArray(linePoints[2]);
+ Point_default.sub(dir, pt0, pt1);
+ Point_default.sub(dir2, pt2, pt1);
+ var len1 = dir.len();
+ var len2 = dir2.len();
+ if (len1 < 1e-3 || len2 < 1e-3) {
+ return;
+ }
+ dir.scale(1 / len1);
+ dir2.scale(1 / len2);
+ var angleCos = dir.dot(dir2);
+ var minTurnAngleCos = Math.cos(minTurnAngle);
+ if (minTurnAngleCos < angleCos) {
+ var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);
+ tmpProjPoint.fromArray(tmpArr);
+ tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI - minTurnAngle));
+ var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);
+ if (isNaN(t)) {
+ return;
+ }
+ if (t < 0) {
+ Point_default.copy(tmpProjPoint, pt1);
+ } else if (t > 1) {
+ Point_default.copy(tmpProjPoint, pt2);
+ }
+ tmpProjPoint.toArray(linePoints[1]);
+ }
+}
+function limitSurfaceAngle(linePoints, surfaceNormal, maxSurfaceAngle) {
+ if (!(maxSurfaceAngle <= 180 && maxSurfaceAngle > 0)) {
+ return;
+ }
+ maxSurfaceAngle = maxSurfaceAngle / 180 * Math.PI;
+ pt0.fromArray(linePoints[0]);
+ pt1.fromArray(linePoints[1]);
+ pt2.fromArray(linePoints[2]);
+ Point_default.sub(dir, pt1, pt0);
+ Point_default.sub(dir2, pt2, pt1);
+ var len1 = dir.len();
+ var len2 = dir2.len();
+ if (len1 < 1e-3 || len2 < 1e-3) {
+ return;
+ }
+ dir.scale(1 / len1);
+ dir2.scale(1 / len2);
+ var angleCos = dir.dot(surfaceNormal);
+ var maxSurfaceAngleCos = Math.cos(maxSurfaceAngle);
+ if (angleCos < maxSurfaceAngleCos) {
+ var d = projectPointToLine(pt1.x, pt1.y, pt2.x, pt2.y, pt0.x, pt0.y, tmpArr, false);
+ tmpProjPoint.fromArray(tmpArr);
+ var HALF_PI = Math.PI / 2;
+ var angle2 = Math.acos(dir2.dot(surfaceNormal));
+ var newAngle = HALF_PI + angle2 - maxSurfaceAngle;
+ if (newAngle >= HALF_PI) {
+ Point_default.copy(tmpProjPoint, pt2);
+ } else {
+ tmpProjPoint.scaleAndAdd(dir2, d / Math.tan(Math.PI / 2 - newAngle));
+ var t = pt2.x !== pt1.x ? (tmpProjPoint.x - pt1.x) / (pt2.x - pt1.x) : (tmpProjPoint.y - pt1.y) / (pt2.y - pt1.y);
+ if (isNaN(t)) {
+ return;
+ }
+ if (t < 0) {
+ Point_default.copy(tmpProjPoint, pt1);
+ } else if (t > 1) {
+ Point_default.copy(tmpProjPoint, pt2);
+ }
+ }
+ tmpProjPoint.toArray(linePoints[1]);
+ }
+}
+function setLabelLineState(labelLine, ignore, stateName, stateModel) {
+ var isNormal = stateName === "normal";
+ var stateObj = isNormal ? labelLine : labelLine.ensureState(stateName);
+ stateObj.ignore = ignore;
+ var smooth = stateModel.get("smooth");
+ if (smooth && smooth === true) {
+ smooth = 0.3;
+ }
+ stateObj.shape = stateObj.shape || {};
+ if (smooth > 0) {
+ stateObj.shape.smooth = smooth;
+ }
+ var styleObj = stateModel.getModel("lineStyle").getLineStyle();
+ isNormal ? labelLine.useStyle(styleObj) : stateObj.style = styleObj;
+}
+function buildLabelLinePath(path, shape) {
+ var smooth = shape.smooth;
+ var points4 = shape.points;
+ if (!points4) {
+ return;
+ }
+ path.moveTo(points4[0][0], points4[0][1]);
+ if (smooth > 0 && points4.length >= 3) {
+ var len1 = dist(points4[0], points4[1]);
+ var len2 = dist(points4[1], points4[2]);
+ if (!len1 || !len2) {
+ path.lineTo(points4[1][0], points4[1][1]);
+ path.lineTo(points4[2][0], points4[2][1]);
+ return;
+ }
+ var moveLen = Math.min(len1, len2) * smooth;
+ var midPoint0 = lerp([], points4[1], points4[0], moveLen / len1);
+ var midPoint2 = lerp([], points4[1], points4[2], moveLen / len2);
+ var midPoint1 = lerp([], midPoint0, midPoint2, 0.5);
+ path.bezierCurveTo(midPoint0[0], midPoint0[1], midPoint0[0], midPoint0[1], midPoint1[0], midPoint1[1]);
+ path.bezierCurveTo(midPoint2[0], midPoint2[1], midPoint2[0], midPoint2[1], points4[2][0], points4[2][1]);
+ } else {
+ for (var i = 1; i < points4.length; i++) {
+ path.lineTo(points4[i][0], points4[i][1]);
+ }
+ }
+}
+function setLabelLineStyle(targetEl, statesModels, defaultStyle) {
+ var labelLine = targetEl.getTextGuideLine();
+ var label = targetEl.getTextContent();
+ if (!label) {
+ if (labelLine) {
+ targetEl.removeTextGuideLine();
+ }
+ return;
+ }
+ var normalModel = statesModels.normal;
+ var showNormal = normalModel.get("show");
+ var labelIgnoreNormal = label.ignore;
+ for (var i = 0; i < DISPLAY_STATES.length; i++) {
+ var stateName = DISPLAY_STATES[i];
+ var stateModel = statesModels[stateName];
+ var isNormal = stateName === "normal";
+ if (stateModel) {
+ var stateShow = stateModel.get("show");
+ var isLabelIgnored = isNormal ? labelIgnoreNormal : retrieve2(label.states[stateName] && label.states[stateName].ignore, labelIgnoreNormal);
+ if (isLabelIgnored || !retrieve2(stateShow, showNormal)) {
+ var stateObj = isNormal ? labelLine : labelLine && labelLine.states[stateName];
+ if (stateObj) {
+ stateObj.ignore = true;
+ }
+ if (!!labelLine) {
+ setLabelLineState(labelLine, true, stateName, stateModel);
+ }
+ continue;
+ }
+ if (!labelLine) {
+ labelLine = new Polyline_default();
+ targetEl.setTextGuideLine(labelLine);
+ if (!isNormal && (labelIgnoreNormal || !showNormal)) {
+ setLabelLineState(labelLine, true, "normal", statesModels.normal);
+ }
+ if (targetEl.stateProxy) {
+ labelLine.stateProxy = targetEl.stateProxy;
+ }
+ }
+ setLabelLineState(labelLine, false, stateName, stateModel);
+ }
+ }
+ if (labelLine) {
+ defaults(labelLine.style, defaultStyle);
+ labelLine.style.fill = null;
+ var showAbove = normalModel.get("showAbove");
+ var labelLineConfig = targetEl.textGuideLineConfig = targetEl.textGuideLineConfig || {};
+ labelLineConfig.showAbove = showAbove || false;
+ labelLine.buildPath = buildLabelLinePath;
+ }
+}
+function getLabelLineStatesModels(itemModel, labelLineName) {
+ labelLineName = labelLineName || "labelLine";
+ var statesModels = {
+ normal: itemModel.getModel(labelLineName)
+ };
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ var stateName = SPECIAL_STATES[i];
+ statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);
+ }
+ return statesModels;
+}
+
+// node_modules/echarts/lib/label/labelLayoutHelper.js
+function prepareLayoutList(input) {
+ var list = [];
+ for (var i = 0; i < input.length; i++) {
+ var rawItem = input[i];
+ if (rawItem.defaultAttr.ignore) {
+ continue;
+ }
+ var label = rawItem.label;
+ var transform2 = label.getComputedTransform();
+ var localRect = label.getBoundingRect();
+ var isAxisAligned = !transform2 || transform2[1] < 1e-5 && transform2[2] < 1e-5;
+ var minMargin = label.style.margin || 0;
+ var globalRect = localRect.clone();
+ globalRect.applyTransform(transform2);
+ globalRect.x -= minMargin / 2;
+ globalRect.y -= minMargin / 2;
+ globalRect.width += minMargin;
+ globalRect.height += minMargin;
+ var obb = isAxisAligned ? new OrientedBoundingRect_default(localRect, transform2) : null;
+ list.push({
+ label,
+ labelLine: rawItem.labelLine,
+ rect: globalRect,
+ localRect,
+ obb,
+ priority: rawItem.priority,
+ defaultAttr: rawItem.defaultAttr,
+ layoutOption: rawItem.computedLayoutOption,
+ axisAligned: isAxisAligned,
+ transform: transform2
+ });
+ }
+ return list;
+}
+function shiftLayout(list, xyDim, sizeDim, minBound, maxBound, balanceShift) {
+ var len2 = list.length;
+ if (len2 < 2) {
+ return;
+ }
+ list.sort(function(a, b) {
+ return a.rect[xyDim] - b.rect[xyDim];
+ });
+ var lastPos = 0;
+ var delta;
+ var adjusted = false;
+ var shifts = [];
+ var totalShifts = 0;
+ for (var i = 0; i < len2; i++) {
+ var item = list[i];
+ var rect = item.rect;
+ delta = rect[xyDim] - lastPos;
+ if (delta < 0) {
+ rect[xyDim] -= delta;
+ item.label[xyDim] -= delta;
+ adjusted = true;
+ }
+ var shift = Math.max(-delta, 0);
+ shifts.push(shift);
+ totalShifts += shift;
+ lastPos = rect[xyDim] + rect[sizeDim];
+ }
+ if (totalShifts > 0 && balanceShift) {
+ shiftList(-totalShifts / len2, 0, len2);
+ }
+ var first = list[0];
+ var last = list[len2 - 1];
+ var minGap;
+ var maxGap;
+ updateMinMaxGap();
+ minGap < 0 && squeezeGaps(-minGap, 0.8);
+ maxGap < 0 && squeezeGaps(maxGap, 0.8);
+ updateMinMaxGap();
+ takeBoundsGap(minGap, maxGap, 1);
+ takeBoundsGap(maxGap, minGap, -1);
+ updateMinMaxGap();
+ if (minGap < 0) {
+ squeezeWhenBailout(-minGap);
+ }
+ if (maxGap < 0) {
+ squeezeWhenBailout(maxGap);
+ }
+ function updateMinMaxGap() {
+ minGap = first.rect[xyDim] - minBound;
+ maxGap = maxBound - last.rect[xyDim] - last.rect[sizeDim];
+ }
+ function takeBoundsGap(gapThisBound, gapOtherBound, moveDir) {
+ if (gapThisBound < 0) {
+ var moveFromMaxGap = Math.min(gapOtherBound, -gapThisBound);
+ if (moveFromMaxGap > 0) {
+ shiftList(moveFromMaxGap * moveDir, 0, len2);
+ var remained = moveFromMaxGap + gapThisBound;
+ if (remained < 0) {
+ squeezeGaps(-remained * moveDir, 1);
+ }
+ } else {
+ squeezeGaps(-gapThisBound * moveDir, 1);
+ }
+ }
+ }
+ function shiftList(delta2, start2, end2) {
+ if (delta2 !== 0) {
+ adjusted = true;
+ }
+ for (var i2 = start2; i2 < end2; i2++) {
+ var item2 = list[i2];
+ var rect2 = item2.rect;
+ rect2[xyDim] += delta2;
+ item2.label[xyDim] += delta2;
+ }
+ }
+ function squeezeGaps(delta2, maxSqeezePercent) {
+ var gaps = [];
+ var totalGaps = 0;
+ for (var i2 = 1; i2 < len2; i2++) {
+ var prevItemRect = list[i2 - 1].rect;
+ var gap = Math.max(list[i2].rect[xyDim] - prevItemRect[xyDim] - prevItemRect[sizeDim], 0);
+ gaps.push(gap);
+ totalGaps += gap;
+ }
+ if (!totalGaps) {
+ return;
+ }
+ var squeezePercent = Math.min(Math.abs(delta2) / totalGaps, maxSqeezePercent);
+ if (delta2 > 0) {
+ for (var i2 = 0; i2 < len2 - 1; i2++) {
+ var movement = gaps[i2] * squeezePercent;
+ shiftList(movement, 0, i2 + 1);
+ }
+ } else {
+ for (var i2 = len2 - 1; i2 > 0; i2--) {
+ var movement = gaps[i2 - 1] * squeezePercent;
+ shiftList(-movement, i2, len2);
+ }
+ }
+ }
+ function squeezeWhenBailout(delta2) {
+ var dir3 = delta2 < 0 ? -1 : 1;
+ delta2 = Math.abs(delta2);
+ var moveForEachLabel = Math.ceil(delta2 / (len2 - 1));
+ for (var i2 = 0; i2 < len2 - 1; i2++) {
+ if (dir3 > 0) {
+ shiftList(moveForEachLabel, 0, i2 + 1);
+ } else {
+ shiftList(-moveForEachLabel, len2 - i2 - 1, len2);
+ }
+ delta2 -= moveForEachLabel;
+ if (delta2 <= 0) {
+ return;
+ }
+ }
+ }
+ return adjusted;
+}
+function shiftLayoutOnX(list, leftBound, rightBound, balanceShift) {
+ return shiftLayout(list, "x", "width", leftBound, rightBound, balanceShift);
+}
+function shiftLayoutOnY(list, topBound, bottomBound, balanceShift) {
+ return shiftLayout(list, "y", "height", topBound, bottomBound, balanceShift);
+}
+function hideOverlap(labelList) {
+ var displayedLabels = [];
+ labelList.sort(function(a, b) {
+ return b.priority - a.priority;
+ });
+ var globalRect = new BoundingRect_default(0, 0, 0, 0);
+ function hideEl(el) {
+ if (!el.ignore) {
+ var emphasisState = el.ensureState("emphasis");
+ if (emphasisState.ignore == null) {
+ emphasisState.ignore = false;
+ }
+ }
+ el.ignore = true;
+ }
+ for (var i = 0; i < labelList.length; i++) {
+ var labelItem = labelList[i];
+ var isAxisAligned = labelItem.axisAligned;
+ var localRect = labelItem.localRect;
+ var transform2 = labelItem.transform;
+ var label = labelItem.label;
+ var labelLine = labelItem.labelLine;
+ globalRect.copy(labelItem.rect);
+ globalRect.width -= 0.1;
+ globalRect.height -= 0.1;
+ globalRect.x += 0.05;
+ globalRect.y += 0.05;
+ var obb = labelItem.obb;
+ var overlapped = false;
+ for (var j = 0; j < displayedLabels.length; j++) {
+ var existsTextCfg = displayedLabels[j];
+ if (!globalRect.intersect(existsTextCfg.rect)) {
+ continue;
+ }
+ if (isAxisAligned && existsTextCfg.axisAligned) {
+ overlapped = true;
+ break;
+ }
+ if (!existsTextCfg.obb) {
+ existsTextCfg.obb = new OrientedBoundingRect_default(existsTextCfg.localRect, existsTextCfg.transform);
+ }
+ if (!obb) {
+ obb = new OrientedBoundingRect_default(localRect, transform2);
+ }
+ if (obb.intersect(existsTextCfg.obb)) {
+ overlapped = true;
+ break;
+ }
+ }
+ if (overlapped) {
+ hideEl(label);
+ labelLine && hideEl(labelLine);
+ } else {
+ label.attr("ignore", labelItem.defaultAttr.ignore);
+ labelLine && labelLine.attr("ignore", labelItem.defaultAttr.labelGuideIgnore);
+ displayedLabels.push(labelItem);
+ }
+ }
+}
+
+// node_modules/echarts/lib/label/LabelManager.js
+function cloneArr(points4) {
+ if (points4) {
+ var newPoints = [];
+ for (var i = 0; i < points4.length; i++) {
+ newPoints.push(points4[i].slice());
+ }
+ return newPoints;
+ }
+}
+function prepareLayoutCallbackParams(labelItem, hostEl) {
+ var label = labelItem.label;
+ var labelLine = hostEl && hostEl.getTextGuideLine();
+ return {
+ dataIndex: labelItem.dataIndex,
+ dataType: labelItem.dataType,
+ seriesIndex: labelItem.seriesModel.seriesIndex,
+ text: labelItem.label.style.text,
+ rect: labelItem.hostRect,
+ labelRect: labelItem.rect,
+ align: label.style.align,
+ verticalAlign: label.style.verticalAlign,
+ labelLinePoints: cloneArr(labelLine && labelLine.shape.points)
+ };
+}
+var LABEL_OPTION_TO_STYLE_KEYS = ["align", "verticalAlign", "width", "height", "fontSize"];
+var dummyTransformable = new Transformable_default();
+var labelLayoutInnerStore = makeInner();
+var labelLineAnimationStore = makeInner();
+function extendWithKeys(target, source, keys2) {
+ for (var i = 0; i < keys2.length; i++) {
+ var key = keys2[i];
+ if (source[key] != null) {
+ target[key] = source[key];
+ }
+ }
+}
+var LABEL_LAYOUT_PROPS = ["x", "y", "rotation"];
+var LabelManager = function() {
+ function LabelManager2() {
+ this._labelList = [];
+ this._chartViewList = [];
+ }
+ LabelManager2.prototype.clearLabels = function() {
+ this._labelList = [];
+ this._chartViewList = [];
+ };
+ LabelManager2.prototype._addLabel = function(dataIndex, dataType, seriesModel, label, layoutOption) {
+ var labelStyle = label.style;
+ var hostEl = label.__hostTarget;
+ var textConfig = hostEl.textConfig || {};
+ var labelTransform = label.getComputedTransform();
+ var labelRect = label.getBoundingRect().plain();
+ BoundingRect_default.applyTransform(labelRect, labelRect, labelTransform);
+ if (labelTransform) {
+ dummyTransformable.setLocalTransform(labelTransform);
+ } else {
+ dummyTransformable.x = dummyTransformable.y = dummyTransformable.rotation = dummyTransformable.originX = dummyTransformable.originY = 0;
+ dummyTransformable.scaleX = dummyTransformable.scaleY = 1;
+ }
+ dummyTransformable.rotation = normalizeRadian(dummyTransformable.rotation);
+ var host = label.__hostTarget;
+ var hostRect;
+ if (host) {
+ hostRect = host.getBoundingRect().plain();
+ var transform2 = host.getComputedTransform();
+ BoundingRect_default.applyTransform(hostRect, hostRect, transform2);
+ }
+ var labelGuide = hostRect && host.getTextGuideLine();
+ this._labelList.push({
+ label,
+ labelLine: labelGuide,
+ seriesModel,
+ dataIndex,
+ dataType,
+ layoutOption,
+ computedLayoutOption: null,
+ rect: labelRect,
+ hostRect,
+ priority: hostRect ? hostRect.width * hostRect.height : 0,
+ defaultAttr: {
+ ignore: label.ignore,
+ labelGuideIgnore: labelGuide && labelGuide.ignore,
+ x: dummyTransformable.x,
+ y: dummyTransformable.y,
+ scaleX: dummyTransformable.scaleX,
+ scaleY: dummyTransformable.scaleY,
+ rotation: dummyTransformable.rotation,
+ style: {
+ x: labelStyle.x,
+ y: labelStyle.y,
+ align: labelStyle.align,
+ verticalAlign: labelStyle.verticalAlign,
+ width: labelStyle.width,
+ height: labelStyle.height,
+ fontSize: labelStyle.fontSize
+ },
+ cursor: label.cursor,
+ attachedPos: textConfig.position,
+ attachedRot: textConfig.rotation
+ }
+ });
+ };
+ LabelManager2.prototype.addLabelsOfSeries = function(chartView) {
+ var _this = this;
+ this._chartViewList.push(chartView);
+ var seriesModel = chartView.__model;
+ var layoutOption = seriesModel.get("labelLayout");
+ if (!(isFunction(layoutOption) || keys(layoutOption).length)) {
+ return;
+ }
+ chartView.group.traverse(function(child) {
+ if (child.ignore) {
+ return true;
+ }
+ var textEl = child.getTextContent();
+ var ecData = getECData(child);
+ if (textEl && !textEl.disableLabelLayout) {
+ _this._addLabel(ecData.dataIndex, ecData.dataType, seriesModel, textEl, layoutOption);
+ }
+ });
+ };
+ LabelManager2.prototype.updateLayoutConfig = function(api) {
+ var width = api.getWidth();
+ var height = api.getHeight();
+ function createDragHandler(el, labelLineModel) {
+ return function() {
+ updateLabelLinePoints(el, labelLineModel);
+ };
+ }
+ for (var i = 0; i < this._labelList.length; i++) {
+ var labelItem = this._labelList[i];
+ var label = labelItem.label;
+ var hostEl = label.__hostTarget;
+ var defaultLabelAttr = labelItem.defaultAttr;
+ var layoutOption = void 0;
+ if (isFunction(labelItem.layoutOption)) {
+ layoutOption = labelItem.layoutOption(prepareLayoutCallbackParams(labelItem, hostEl));
+ } else {
+ layoutOption = labelItem.layoutOption;
+ }
+ layoutOption = layoutOption || {};
+ labelItem.computedLayoutOption = layoutOption;
+ var degreeToRadian = Math.PI / 180;
+ if (hostEl) {
+ hostEl.setTextConfig({
+ local: false,
+ position: layoutOption.x != null || layoutOption.y != null ? null : defaultLabelAttr.attachedPos,
+ rotation: layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.attachedRot,
+ offset: [layoutOption.dx || 0, layoutOption.dy || 0]
+ });
+ }
+ var needsUpdateLabelLine = false;
+ if (layoutOption.x != null) {
+ label.x = parsePercent2(layoutOption.x, width);
+ label.setStyle("x", 0);
+ needsUpdateLabelLine = true;
+ } else {
+ label.x = defaultLabelAttr.x;
+ label.setStyle("x", defaultLabelAttr.style.x);
+ }
+ if (layoutOption.y != null) {
+ label.y = parsePercent2(layoutOption.y, height);
+ label.setStyle("y", 0);
+ needsUpdateLabelLine = true;
+ } else {
+ label.y = defaultLabelAttr.y;
+ label.setStyle("y", defaultLabelAttr.style.y);
+ }
+ if (layoutOption.labelLinePoints) {
+ var guideLine = hostEl.getTextGuideLine();
+ if (guideLine) {
+ guideLine.setShape({
+ points: layoutOption.labelLinePoints
+ });
+ needsUpdateLabelLine = false;
+ }
+ }
+ var labelLayoutStore = labelLayoutInnerStore(label);
+ labelLayoutStore.needsUpdateLabelLine = needsUpdateLabelLine;
+ label.rotation = layoutOption.rotate != null ? layoutOption.rotate * degreeToRadian : defaultLabelAttr.rotation;
+ label.scaleX = defaultLabelAttr.scaleX;
+ label.scaleY = defaultLabelAttr.scaleY;
+ for (var k = 0; k < LABEL_OPTION_TO_STYLE_KEYS.length; k++) {
+ var key = LABEL_OPTION_TO_STYLE_KEYS[k];
+ label.setStyle(key, layoutOption[key] != null ? layoutOption[key] : defaultLabelAttr.style[key]);
+ }
+ if (layoutOption.draggable) {
+ label.draggable = true;
+ label.cursor = "move";
+ if (hostEl) {
+ var hostModel = labelItem.seriesModel;
+ if (labelItem.dataIndex != null) {
+ var data = labelItem.seriesModel.getData(labelItem.dataType);
+ hostModel = data.getItemModel(labelItem.dataIndex);
+ }
+ label.on("drag", createDragHandler(hostEl, hostModel.getModel("labelLine")));
+ }
+ } else {
+ label.off("drag");
+ label.cursor = defaultLabelAttr.cursor;
+ }
+ }
+ };
+ LabelManager2.prototype.layout = function(api) {
+ var width = api.getWidth();
+ var height = api.getHeight();
+ var labelList = prepareLayoutList(this._labelList);
+ var labelsNeedsAdjustOnX = filter(labelList, function(item) {
+ return item.layoutOption.moveOverlap === "shiftX";
+ });
+ var labelsNeedsAdjustOnY = filter(labelList, function(item) {
+ return item.layoutOption.moveOverlap === "shiftY";
+ });
+ shiftLayoutOnX(labelsNeedsAdjustOnX, 0, width);
+ shiftLayoutOnY(labelsNeedsAdjustOnY, 0, height);
+ var labelsNeedsHideOverlap = filter(labelList, function(item) {
+ return item.layoutOption.hideOverlap;
+ });
+ hideOverlap(labelsNeedsHideOverlap);
+ };
+ LabelManager2.prototype.processLabelsOverall = function() {
+ var _this = this;
+ each(this._chartViewList, function(chartView) {
+ var seriesModel = chartView.__model;
+ var ignoreLabelLineUpdate = chartView.ignoreLabelLineUpdate;
+ var animationEnabled = seriesModel.isAnimationEnabled();
+ chartView.group.traverse(function(child) {
+ if (child.ignore && !child.forceLabelAnimation) {
+ return true;
+ }
+ var needsUpdateLabelLine = !ignoreLabelLineUpdate;
+ var label = child.getTextContent();
+ if (!needsUpdateLabelLine && label) {
+ needsUpdateLabelLine = labelLayoutInnerStore(label).needsUpdateLabelLine;
+ }
+ if (needsUpdateLabelLine) {
+ _this._updateLabelLine(child, seriesModel);
+ }
+ if (animationEnabled) {
+ _this._animateLabels(child, seriesModel);
+ }
+ });
+ });
+ };
+ LabelManager2.prototype._updateLabelLine = function(el, seriesModel) {
+ var textEl = el.getTextContent();
+ var ecData = getECData(el);
+ var dataIndex = ecData.dataIndex;
+ if (textEl && dataIndex != null) {
+ var data = seriesModel.getData(ecData.dataType);
+ var itemModel = data.getItemModel(dataIndex);
+ var defaultStyle = {};
+ var visualStyle = data.getItemVisual(dataIndex, "style");
+ if (visualStyle) {
+ var visualType = data.getVisual("drawType");
+ defaultStyle.stroke = visualStyle[visualType];
+ }
+ var labelLineModel = itemModel.getModel("labelLine");
+ setLabelLineStyle(el, getLabelLineStatesModels(itemModel), defaultStyle);
+ updateLabelLinePoints(el, labelLineModel);
+ }
+ };
+ LabelManager2.prototype._animateLabels = function(el, seriesModel) {
+ var textEl = el.getTextContent();
+ var guideLine = el.getTextGuideLine();
+ if (textEl && (el.forceLabelAnimation || !textEl.ignore && !textEl.invisible && !el.disableLabelAnimation && !isElementRemoved(el))) {
+ var layoutStore = labelLayoutInnerStore(textEl);
+ var oldLayout = layoutStore.oldLayout;
+ var ecData = getECData(el);
+ var dataIndex = ecData.dataIndex;
+ var newProps = {
+ x: textEl.x,
+ y: textEl.y,
+ rotation: textEl.rotation
+ };
+ var data = seriesModel.getData(ecData.dataType);
+ if (!oldLayout) {
+ textEl.attr(newProps);
+ if (!labelInner(textEl).valueAnimation) {
+ var oldOpacity = retrieve2(textEl.style.opacity, 1);
+ textEl.style.opacity = 0;
+ initProps(textEl, {
+ style: {
+ opacity: oldOpacity
+ }
+ }, seriesModel, dataIndex);
+ }
+ } else {
+ textEl.attr(oldLayout);
+ var prevStates = el.prevStates;
+ if (prevStates) {
+ if (indexOf(prevStates, "select") >= 0) {
+ textEl.attr(layoutStore.oldLayoutSelect);
+ }
+ if (indexOf(prevStates, "emphasis") >= 0) {
+ textEl.attr(layoutStore.oldLayoutEmphasis);
+ }
+ }
+ updateProps(textEl, newProps, seriesModel, dataIndex);
+ }
+ layoutStore.oldLayout = newProps;
+ if (textEl.states.select) {
+ var layoutSelect = layoutStore.oldLayoutSelect = {};
+ extendWithKeys(layoutSelect, newProps, LABEL_LAYOUT_PROPS);
+ extendWithKeys(layoutSelect, textEl.states.select, LABEL_LAYOUT_PROPS);
+ }
+ if (textEl.states.emphasis) {
+ var layoutEmphasis = layoutStore.oldLayoutEmphasis = {};
+ extendWithKeys(layoutEmphasis, newProps, LABEL_LAYOUT_PROPS);
+ extendWithKeys(layoutEmphasis, textEl.states.emphasis, LABEL_LAYOUT_PROPS);
+ }
+ animateLabelValue(textEl, dataIndex, data, seriesModel, seriesModel);
+ }
+ if (guideLine && !guideLine.ignore && !guideLine.invisible) {
+ var layoutStore = labelLineAnimationStore(guideLine);
+ var oldLayout = layoutStore.oldLayout;
+ var newLayout = {
+ points: guideLine.shape.points
+ };
+ if (!oldLayout) {
+ guideLine.setShape(newLayout);
+ guideLine.style.strokePercent = 0;
+ initProps(guideLine, {
+ style: {
+ strokePercent: 1
+ }
+ }, seriesModel);
+ } else {
+ guideLine.attr({
+ shape: oldLayout
+ });
+ updateProps(guideLine, {
+ shape: newLayout
+ }, seriesModel);
+ }
+ layoutStore.oldLayout = newLayout;
+ }
+ };
+ return LabelManager2;
+}();
+var LabelManager_default = LabelManager;
+
+// node_modules/echarts/lib/label/installLabelLayout.js
+var getLabelManager = makeInner();
+function installLabelLayout(registers) {
+ registers.registerUpdateLifecycle("series:beforeupdate", function(ecModel, api, params) {
+ var labelManager = getLabelManager(api).labelManager;
+ if (!labelManager) {
+ labelManager = getLabelManager(api).labelManager = new LabelManager_default();
+ }
+ labelManager.clearLabels();
+ });
+ registers.registerUpdateLifecycle("series:layoutlabels", function(ecModel, api, params) {
+ var labelManager = getLabelManager(api).labelManager;
+ params.updatedSeries.forEach(function(series) {
+ labelManager.addLabelsOfSeries(api.getViewOfSeriesModel(series));
+ });
+ labelManager.updateLayoutConfig(api);
+ labelManager.layout(api);
+ labelManager.processLabelsOverall();
+ });
+}
+
+// node_modules/echarts/lib/export/core.js
+use(installLabelLayout);
+
+// node_modules/zrender/lib/svg/SVGPathRebuilder.js
+var mathSin5 = Math.sin;
+var mathCos5 = Math.cos;
+var PI6 = Math.PI;
+var PI28 = Math.PI * 2;
+var degree = 180 / PI6;
+var SVGPathRebuilder = function() {
+ function SVGPathRebuilder2() {
+ }
+ SVGPathRebuilder2.prototype.reset = function(precision) {
+ this._start = true;
+ this._d = [];
+ this._str = "";
+ this._p = Math.pow(10, precision || 4);
+ };
+ SVGPathRebuilder2.prototype.moveTo = function(x, y) {
+ this._add("M", x, y);
+ };
+ SVGPathRebuilder2.prototype.lineTo = function(x, y) {
+ this._add("L", x, y);
+ };
+ SVGPathRebuilder2.prototype.bezierCurveTo = function(x, y, x2, y2, x3, y3) {
+ this._add("C", x, y, x2, y2, x3, y3);
+ };
+ SVGPathRebuilder2.prototype.quadraticCurveTo = function(x, y, x2, y2) {
+ this._add("Q", x, y, x2, y2);
+ };
+ SVGPathRebuilder2.prototype.arc = function(cx, cy, r, startAngle, endAngle, anticlockwise) {
+ this.ellipse(cx, cy, r, r, 0, startAngle, endAngle, anticlockwise);
+ };
+ SVGPathRebuilder2.prototype.ellipse = function(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise) {
+ var dTheta = endAngle - startAngle;
+ var clockwise = !anticlockwise;
+ var dThetaPositive = Math.abs(dTheta);
+ var isCircle = isAroundZero2(dThetaPositive - PI28) || (clockwise ? dTheta >= PI28 : -dTheta >= PI28);
+ var unifiedTheta = dTheta > 0 ? dTheta % PI28 : dTheta % PI28 + PI28;
+ var large = false;
+ if (isCircle) {
+ large = true;
+ } else if (isAroundZero2(dThetaPositive)) {
+ large = false;
+ } else {
+ large = unifiedTheta >= PI6 === !!clockwise;
+ }
+ var x0 = cx + rx * mathCos5(startAngle);
+ var y0 = cy + ry * mathSin5(startAngle);
+ if (this._start) {
+ this._add("M", x0, y0);
+ }
+ var xRot = Math.round(psi * degree);
+ if (isCircle) {
+ var p = 1 / this._p;
+ var dTheta_1 = (clockwise ? 1 : -1) * (PI28 - p);
+ this._add("A", rx, ry, xRot, 1, +clockwise, cx + rx * mathCos5(startAngle + dTheta_1), cy + ry * mathSin5(startAngle + dTheta_1));
+ if (p > 0.01) {
+ this._add("A", rx, ry, xRot, 0, +clockwise, x0, y0);
+ }
+ } else {
+ var x = cx + rx * mathCos5(endAngle);
+ var y = cy + ry * mathSin5(endAngle);
+ this._add("A", rx, ry, xRot, +large, +clockwise, x, y);
+ }
+ };
+ SVGPathRebuilder2.prototype.rect = function(x, y, w, h) {
+ this._add("M", x, y);
+ this._add("l", w, 0);
+ this._add("l", 0, h);
+ this._add("l", -w, 0);
+ this._add("Z");
+ };
+ SVGPathRebuilder2.prototype.closePath = function() {
+ if (this._d.length > 0) {
+ this._add("Z");
+ }
+ };
+ SVGPathRebuilder2.prototype._add = function(cmd, a, b, c, d, e2, f, g, h) {
+ var vals = [];
+ var p = this._p;
+ for (var i = 1; i < arguments.length; i++) {
+ var val = arguments[i];
+ if (isNaN(val)) {
+ this._invalid = true;
+ return;
+ }
+ vals.push(Math.round(val * p) / p);
+ }
+ this._d.push(cmd + vals.join(" "));
+ this._start = cmd === "Z";
+ };
+ SVGPathRebuilder2.prototype.generateStr = function() {
+ this._str = this._invalid ? "" : this._d.join("");
+ this._d = [];
+ };
+ SVGPathRebuilder2.prototype.getStr = function() {
+ return this._str;
+ };
+ return SVGPathRebuilder2;
+}();
+var SVGPathRebuilder_default = SVGPathRebuilder;
+
+// node_modules/zrender/lib/svg/mapStyleToAttrs.js
+var NONE = "none";
+var mathRound2 = Math.round;
+function pathHasFill(style) {
+ var fill = style.fill;
+ return fill != null && fill !== NONE;
+}
+function pathHasStroke(style) {
+ var stroke = style.stroke;
+ return stroke != null && stroke !== NONE;
+}
+var strokeProps = ["lineCap", "miterLimit", "lineJoin"];
+var svgStrokeProps = map(strokeProps, function(prop) {
+ return "stroke-" + prop.toLowerCase();
+});
+function mapStyleToAttrs(updateAttr2, style, el, forceUpdate) {
+ var opacity = style.opacity == null ? 1 : style.opacity;
+ if (el instanceof Image_default) {
+ updateAttr2("opacity", opacity);
+ return;
+ }
+ if (pathHasFill(style)) {
+ var fill = normalizeColor(style.fill);
+ updateAttr2("fill", fill.color);
+ var fillOpacity = style.fillOpacity != null ? style.fillOpacity * fill.opacity * opacity : fill.opacity * opacity;
+ if (forceUpdate || fillOpacity < 1) {
+ updateAttr2("fill-opacity", fillOpacity);
+ }
+ } else {
+ updateAttr2("fill", NONE);
+ }
+ if (pathHasStroke(style)) {
+ var stroke = normalizeColor(style.stroke);
+ updateAttr2("stroke", stroke.color);
+ var strokeScale = style.strokeNoScale ? el.getLineScale() : 1;
+ var strokeWidth = strokeScale ? (style.lineWidth || 0) / strokeScale : 0;
+ var strokeOpacity = style.strokeOpacity != null ? style.strokeOpacity * stroke.opacity * opacity : stroke.opacity * opacity;
+ var strokeFirst = style.strokeFirst;
+ if (forceUpdate || strokeWidth !== 1) {
+ updateAttr2("stroke-width", strokeWidth);
+ }
+ if (forceUpdate || strokeFirst) {
+ updateAttr2("paint-order", strokeFirst ? "stroke" : "fill");
+ }
+ if (forceUpdate || strokeOpacity < 1) {
+ updateAttr2("stroke-opacity", strokeOpacity);
+ }
+ if (style.lineDash) {
+ var _a2 = getLineDash(el), lineDash = _a2[0], lineDashOffset = _a2[1];
+ if (lineDash) {
+ lineDashOffset = mathRound2(lineDashOffset || 0);
+ updateAttr2("stroke-dasharray", lineDash.join(","));
+ if (lineDashOffset || forceUpdate) {
+ updateAttr2("stroke-dashoffset", lineDashOffset);
+ }
+ }
+ } else if (forceUpdate) {
+ updateAttr2("stroke-dasharray", NONE);
+ }
+ for (var i = 0; i < strokeProps.length; i++) {
+ var propName = strokeProps[i];
+ if (forceUpdate || style[propName] !== DEFAULT_PATH_STYLE[propName]) {
+ var val = style[propName] || DEFAULT_PATH_STYLE[propName];
+ val && updateAttr2(svgStrokeProps[i], val);
+ }
+ }
+ } else if (forceUpdate) {
+ updateAttr2("stroke", NONE);
+ }
+}
+
+// node_modules/zrender/lib/svg/core.js
+var SVGNS = "http://www.w3.org/2000/svg";
+var XLINKNS = "http://www.w3.org/1999/xlink";
+var XMLNS = "http://www.w3.org/2000/xmlns/";
+var XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace";
+var META_DATA_PREFIX = "ecmeta_";
+function createElement(name) {
+ return document.createElementNS(SVGNS, name);
+}
+function createVNode(tag, key, attrs, children, text) {
+ return {
+ tag,
+ attrs: attrs || {},
+ children,
+ text,
+ key
+ };
+}
+function createElementOpen(name, attrs) {
+ var attrsStr = [];
+ if (attrs) {
+ for (var key in attrs) {
+ var val = attrs[key];
+ var part = key;
+ if (val === false) {
+ continue;
+ } else if (val !== true && val != null) {
+ part += '="' + val + '"';
+ }
+ attrsStr.push(part);
+ }
+ }
+ return "<" + name + " " + attrsStr.join(" ") + ">";
+}
+function createElementClose(name) {
+ return "" + name + ">";
+}
+function vNodeToString(el, opts) {
+ opts = opts || {};
+ var S = opts.newline ? "\n" : "";
+ function convertElToString(el2) {
+ var children = el2.children, tag = el2.tag, attrs = el2.attrs, text = el2.text;
+ return createElementOpen(tag, attrs) + (tag !== "style" ? encodeHTML(text) : text || "") + (children ? "" + S + map(children, function(child) {
+ return convertElToString(child);
+ }).join(S) + S : "") + createElementClose(tag);
+ }
+ return convertElToString(el);
+}
+function getCssString(selectorNodes, animationNodes, opts) {
+ opts = opts || {};
+ var S = opts.newline ? "\n" : "";
+ var bracketBegin = " {" + S;
+ var bracketEnd = S + "}";
+ var selectors = map(keys(selectorNodes), function(className) {
+ return className + bracketBegin + map(keys(selectorNodes[className]), function(attrName) {
+ return attrName + ":" + selectorNodes[className][attrName] + ";";
+ }).join(S) + bracketEnd;
+ }).join(S);
+ var animations = map(keys(animationNodes), function(animationName) {
+ return "@keyframes " + animationName + bracketBegin + map(keys(animationNodes[animationName]), function(percent) {
+ return percent + bracketBegin + map(keys(animationNodes[animationName][percent]), function(attrName) {
+ var val = animationNodes[animationName][percent][attrName];
+ if (attrName === "d") {
+ val = 'path("' + val + '")';
+ }
+ return attrName + ":" + val + ";";
+ }).join(S) + bracketEnd;
+ }).join(S) + bracketEnd;
+ }).join(S);
+ if (!selectors && !animations) {
+ return "";
+ }
+ return [""].join(S);
+}
+function createBrushScope(zrId) {
+ return {
+ zrId,
+ shadowCache: {},
+ patternCache: {},
+ gradientCache: {},
+ clipPathCache: {},
+ defs: {},
+ cssNodes: {},
+ cssAnims: {},
+ cssStyleCache: {},
+ cssAnimIdx: 0,
+ shadowIdx: 0,
+ gradientIdx: 0,
+ patternIdx: 0,
+ clipPathIdx: 0
+ };
+}
+function createSVGVNode(width, height, children, useViewBox) {
+ return createVNode("svg", "root", {
+ "width": width,
+ "height": height,
+ "xmlns": SVGNS,
+ "xmlns:xlink": XLINKNS,
+ "version": "1.1",
+ "baseProfile": "full",
+ "viewBox": useViewBox ? "0 0 " + width + " " + height : false
+ }, children);
+}
+
+// node_modules/zrender/lib/svg/cssClassId.js
+var cssClassIdx = 0;
+function getClassId() {
+ return cssClassIdx++;
+}
+
+// node_modules/zrender/lib/svg/cssAnimation.js
+var EASING_MAP = {
+ cubicIn: "0.32,0,0.67,0",
+ cubicOut: "0.33,1,0.68,1",
+ cubicInOut: "0.65,0,0.35,1",
+ quadraticIn: "0.11,0,0.5,0",
+ quadraticOut: "0.5,1,0.89,1",
+ quadraticInOut: "0.45,0,0.55,1",
+ quarticIn: "0.5,0,0.75,0",
+ quarticOut: "0.25,1,0.5,1",
+ quarticInOut: "0.76,0,0.24,1",
+ quinticIn: "0.64,0,0.78,0",
+ quinticOut: "0.22,1,0.36,1",
+ quinticInOut: "0.83,0,0.17,1",
+ sinusoidalIn: "0.12,0,0.39,0",
+ sinusoidalOut: "0.61,1,0.88,1",
+ sinusoidalInOut: "0.37,0,0.63,1",
+ exponentialIn: "0.7,0,0.84,0",
+ exponentialOut: "0.16,1,0.3,1",
+ exponentialInOut: "0.87,0,0.13,1",
+ circularIn: "0.55,0,1,0.45",
+ circularOut: "0,0.55,0.45,1",
+ circularInOut: "0.85,0,0.15,1"
+};
+var transformOriginKey = "transform-origin";
+function buildPathString(el, kfShape, path) {
+ var shape = extend({}, el.shape);
+ extend(shape, kfShape);
+ el.buildPath(path, shape);
+ var svgPathBuilder = new SVGPathRebuilder_default();
+ svgPathBuilder.reset(getPathPrecision(el));
+ path.rebuildPath(svgPathBuilder, 1);
+ svgPathBuilder.generateStr();
+ return svgPathBuilder.getStr();
+}
+function setTransformOrigin(target, transform2) {
+ var originX = transform2.originX, originY = transform2.originY;
+ if (originX || originY) {
+ target[transformOriginKey] = originX + "px " + originY + "px";
+ }
+}
+var ANIMATE_STYLE_MAP = {
+ fill: "fill",
+ opacity: "opacity",
+ lineWidth: "stroke-width",
+ lineDashOffset: "stroke-dashoffset"
+};
+function addAnimation(cssAnim, scope) {
+ var animationName = scope.zrId + "-ani-" + scope.cssAnimIdx++;
+ scope.cssAnims[animationName] = cssAnim;
+ return animationName;
+}
+function createCompoundPathCSSAnimation(el, attrs, scope) {
+ var paths = el.shape.paths;
+ var composedAnim = {};
+ var cssAnimationCfg;
+ var cssAnimationName;
+ each(paths, function(path) {
+ var subScope = createBrushScope(scope.zrId);
+ subScope.animation = true;
+ createCSSAnimation(path, {}, subScope, true);
+ var cssAnims = subScope.cssAnims;
+ var cssNodes = subScope.cssNodes;
+ var animNames = keys(cssAnims);
+ var len2 = animNames.length;
+ if (!len2) {
+ return;
+ }
+ cssAnimationName = animNames[len2 - 1];
+ var lastAnim = cssAnims[cssAnimationName];
+ for (var percent in lastAnim) {
+ var kf = lastAnim[percent];
+ composedAnim[percent] = composedAnim[percent] || { d: "" };
+ composedAnim[percent].d += kf.d || "";
+ }
+ for (var className in cssNodes) {
+ var val = cssNodes[className].animation;
+ if (val.indexOf(cssAnimationName) >= 0) {
+ cssAnimationCfg = val;
+ }
+ }
+ });
+ if (!cssAnimationCfg) {
+ return;
+ }
+ attrs.d = false;
+ var animationName = addAnimation(composedAnim, scope);
+ return cssAnimationCfg.replace(cssAnimationName, animationName);
+}
+function getEasingFunc(easing) {
+ return isString(easing) ? EASING_MAP[easing] ? "cubic-bezier(" + EASING_MAP[easing] + ")" : createCubicEasingFunc(easing) ? easing : "" : "";
+}
+function createCSSAnimation(el, attrs, scope, onlyShape) {
+ var animators = el.animators;
+ var len2 = animators.length;
+ var cssAnimations = [];
+ if (el instanceof CompoundPath_default) {
+ var animationCfg = createCompoundPathCSSAnimation(el, attrs, scope);
+ if (animationCfg) {
+ cssAnimations.push(animationCfg);
+ } else if (!len2) {
+ return;
+ }
+ } else if (!len2) {
+ return;
+ }
+ var groupAnimators = {};
+ for (var i = 0; i < len2; i++) {
+ var animator = animators[i];
+ var cfgArr = [animator.getMaxTime() / 1e3 + "s"];
+ var easing = getEasingFunc(animator.getClip().easing);
+ var delay = animator.getDelay();
+ if (easing) {
+ cfgArr.push(easing);
+ } else {
+ cfgArr.push("linear");
+ }
+ if (delay) {
+ cfgArr.push(delay / 1e3 + "s");
+ }
+ if (animator.getLoop()) {
+ cfgArr.push("infinite");
+ }
+ var cfg = cfgArr.join(" ");
+ groupAnimators[cfg] = groupAnimators[cfg] || [cfg, []];
+ groupAnimators[cfg][1].push(animator);
+ }
+ function createSingleCSSAnimation(groupAnimator) {
+ var animators2 = groupAnimator[1];
+ var len3 = animators2.length;
+ var transformKfs = {};
+ var shapeKfs = {};
+ var finalKfs = {};
+ var animationTimingFunctionAttrName = "animation-timing-function";
+ function saveAnimatorTrackToCssKfs(animator3, cssKfs, toCssAttrName) {
+ var tracks = animator3.getTracks();
+ var maxTime = animator3.getMaxTime();
+ for (var k = 0; k < tracks.length; k++) {
+ var track = tracks[k];
+ if (track.needsAnimate()) {
+ var kfs = track.keyframes;
+ var attrName = track.propName;
+ toCssAttrName && (attrName = toCssAttrName(attrName));
+ if (attrName) {
+ for (var i3 = 0; i3 < kfs.length; i3++) {
+ var kf = kfs[i3];
+ var percent2 = Math.round(kf.time / maxTime * 100) + "%";
+ var kfEasing = getEasingFunc(kf.easing);
+ var rawValue = kf.rawValue;
+ if (isString(rawValue) || isNumber(rawValue)) {
+ cssKfs[percent2] = cssKfs[percent2] || {};
+ cssKfs[percent2][attrName] = kf.rawValue;
+ if (kfEasing) {
+ cssKfs[percent2][animationTimingFunctionAttrName] = kfEasing;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ for (var i2 = 0; i2 < len3; i2++) {
+ var animator2 = animators2[i2];
+ var targetProp = animator2.targetName;
+ if (!targetProp) {
+ !onlyShape && saveAnimatorTrackToCssKfs(animator2, transformKfs);
+ } else if (targetProp === "shape") {
+ saveAnimatorTrackToCssKfs(animator2, shapeKfs);
+ }
+ }
+ for (var percent in transformKfs) {
+ var transform2 = {};
+ copyTransform(transform2, el);
+ extend(transform2, transformKfs[percent]);
+ var str = getSRTTransformString(transform2);
+ var timingFunction = transformKfs[percent][animationTimingFunctionAttrName];
+ finalKfs[percent] = str ? {
+ transform: str
+ } : {};
+ setTransformOrigin(finalKfs[percent], transform2);
+ if (timingFunction) {
+ finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;
+ }
+ }
+ ;
+ var path;
+ var canAnimateShape = true;
+ for (var percent in shapeKfs) {
+ finalKfs[percent] = finalKfs[percent] || {};
+ var isFirst = !path;
+ var timingFunction = shapeKfs[percent][animationTimingFunctionAttrName];
+ if (isFirst) {
+ path = new PathProxy_default();
+ }
+ var len_1 = path.len();
+ path.reset();
+ finalKfs[percent].d = buildPathString(el, shapeKfs[percent], path);
+ var newLen = path.len();
+ if (!isFirst && len_1 !== newLen) {
+ canAnimateShape = false;
+ break;
+ }
+ if (timingFunction) {
+ finalKfs[percent][animationTimingFunctionAttrName] = timingFunction;
+ }
+ }
+ ;
+ if (!canAnimateShape) {
+ for (var percent in finalKfs) {
+ delete finalKfs[percent].d;
+ }
+ }
+ if (!onlyShape) {
+ for (var i2 = 0; i2 < len3; i2++) {
+ var animator2 = animators2[i2];
+ var targetProp = animator2.targetName;
+ if (targetProp === "style") {
+ saveAnimatorTrackToCssKfs(animator2, finalKfs, function(propName) {
+ return ANIMATE_STYLE_MAP[propName];
+ });
+ }
+ }
+ }
+ var percents = keys(finalKfs);
+ var allTransformOriginSame = true;
+ var transformOrigin;
+ for (var i2 = 1; i2 < percents.length; i2++) {
+ var p0 = percents[i2 - 1];
+ var p1 = percents[i2];
+ if (finalKfs[p0][transformOriginKey] !== finalKfs[p1][transformOriginKey]) {
+ allTransformOriginSame = false;
+ break;
+ }
+ transformOrigin = finalKfs[p0][transformOriginKey];
+ }
+ if (allTransformOriginSame && transformOrigin) {
+ for (var percent in finalKfs) {
+ if (finalKfs[percent][transformOriginKey]) {
+ delete finalKfs[percent][transformOriginKey];
+ }
+ }
+ attrs[transformOriginKey] = transformOrigin;
+ }
+ if (filter(percents, function(percent2) {
+ return keys(finalKfs[percent2]).length > 0;
+ }).length) {
+ var animationName = addAnimation(finalKfs, scope);
+ return animationName + " " + groupAnimator[0] + " both";
+ }
+ }
+ for (var key in groupAnimators) {
+ var animationCfg = createSingleCSSAnimation(groupAnimators[key]);
+ if (animationCfg) {
+ cssAnimations.push(animationCfg);
+ }
+ }
+ if (cssAnimations.length) {
+ var className = scope.zrId + "-cls-" + getClassId();
+ scope.cssNodes["." + className] = {
+ animation: cssAnimations.join(",")
+ };
+ attrs["class"] = className;
+ }
+}
+
+// node_modules/zrender/lib/svg/cssEmphasis.js
+function createCSSEmphasis(el, attrs, scope) {
+ if (!el.ignore) {
+ if (el.isSilent()) {
+ var style = {
+ "pointer-events": "none"
+ };
+ setClassAttribute(style, attrs, scope, true);
+ } else {
+ var emphasisStyle = el.states.emphasis && el.states.emphasis.style ? el.states.emphasis.style : {};
+ var fill = emphasisStyle.fill;
+ if (!fill) {
+ var normalFill = el.style && el.style.fill;
+ var selectFill = el.states.select && el.states.select.style && el.states.select.style.fill;
+ var fromFill = el.currentStates.indexOf("select") >= 0 ? selectFill || normalFill : normalFill;
+ if (fromFill) {
+ fill = liftColor(fromFill);
+ }
+ }
+ var lineWidth = emphasisStyle.lineWidth;
+ if (lineWidth) {
+ var scaleX = !emphasisStyle.strokeNoScale && el.transform ? el.transform[0] : 1;
+ lineWidth = lineWidth / scaleX;
+ }
+ var style = {
+ cursor: "pointer"
+ };
+ if (fill) {
+ style.fill = fill;
+ }
+ if (emphasisStyle.stroke) {
+ style.stroke = emphasisStyle.stroke;
+ }
+ if (lineWidth) {
+ style["stroke-width"] = lineWidth;
+ }
+ setClassAttribute(style, attrs, scope, true);
+ }
+ }
+}
+function setClassAttribute(style, attrs, scope, withHover) {
+ var styleKey = JSON.stringify(style);
+ var className = scope.cssStyleCache[styleKey];
+ if (!className) {
+ className = scope.zrId + "-cls-" + getClassId();
+ scope.cssStyleCache[styleKey] = className;
+ scope.cssNodes["." + className + (withHover ? ":hover" : "")] = style;
+ }
+ attrs["class"] = attrs["class"] ? attrs["class"] + " " + className : className;
+}
+
+// node_modules/zrender/lib/svg/graphic.js
+var round5 = Math.round;
+function isImageLike2(val) {
+ return val && isString(val.src);
+}
+function isCanvasLike(val) {
+ return val && isFunction(val.toDataURL);
+}
+function setStyleAttrs(attrs, style, el, scope) {
+ mapStyleToAttrs(function(key, val) {
+ var isFillStroke = key === "fill" || key === "stroke";
+ if (isFillStroke && isGradient(val)) {
+ setGradient(style, attrs, key, scope);
+ } else if (isFillStroke && isPattern(val)) {
+ setPattern(el, attrs, key, scope);
+ } else {
+ attrs[key] = val;
+ }
+ if (isFillStroke && scope.ssr && val === "none") {
+ attrs["pointer-events"] = "visible";
+ }
+ }, style, el, false);
+ setShadow(el, attrs, scope);
+}
+function setMetaData(attrs, el) {
+ var metaData = getElementSSRData(el);
+ if (metaData) {
+ metaData.each(function(val, key) {
+ val != null && (attrs[(META_DATA_PREFIX + key).toLowerCase()] = val + "");
+ });
+ if (el.isSilent()) {
+ attrs[META_DATA_PREFIX + "silent"] = "true";
+ }
+ }
+}
+function noRotateScale(m2) {
+ return isAroundZero2(m2[0] - 1) && isAroundZero2(m2[1]) && isAroundZero2(m2[2]) && isAroundZero2(m2[3] - 1);
+}
+function noTranslate(m2) {
+ return isAroundZero2(m2[4]) && isAroundZero2(m2[5]);
+}
+function setTransform(attrs, m2, compress) {
+ if (m2 && !(noTranslate(m2) && noRotateScale(m2))) {
+ var mul3 = compress ? 10 : 1e4;
+ attrs.transform = noRotateScale(m2) ? "translate(" + round5(m2[4] * mul3) / mul3 + " " + round5(m2[5] * mul3) / mul3 + ")" : getMatrixStr(m2);
+ }
+}
+function convertPolyShape(shape, attrs, mul3) {
+ var points4 = shape.points;
+ var strArr = [];
+ for (var i = 0; i < points4.length; i++) {
+ strArr.push(round5(points4[i][0] * mul3) / mul3);
+ strArr.push(round5(points4[i][1] * mul3) / mul3);
+ }
+ attrs.points = strArr.join(" ");
+}
+function validatePolyShape(shape) {
+ return !shape.smooth;
+}
+function createAttrsConvert(desc) {
+ var normalizedDesc = map(desc, function(item) {
+ return typeof item === "string" ? [item, item] : item;
+ });
+ return function(shape, attrs, mul3) {
+ for (var i = 0; i < normalizedDesc.length; i++) {
+ var item = normalizedDesc[i];
+ var val = shape[item[0]];
+ if (val != null) {
+ attrs[item[1]] = round5(val * mul3) / mul3;
+ }
+ }
+ };
+}
+var builtinShapesDef = {
+ circle: [createAttrsConvert(["cx", "cy", "r"])],
+ polyline: [convertPolyShape, validatePolyShape],
+ polygon: [convertPolyShape, validatePolyShape]
+};
+function hasShapeAnimation(el) {
+ var animators = el.animators;
+ for (var i = 0; i < animators.length; i++) {
+ if (animators[i].targetName === "shape") {
+ return true;
+ }
+ }
+ return false;
+}
+function brushSVGPath(el, scope) {
+ var style = el.style;
+ var shape = el.shape;
+ var builtinShpDef = builtinShapesDef[el.type];
+ var attrs = {};
+ var needsAnimate = scope.animation;
+ var svgElType = "path";
+ var strokePercent = el.style.strokePercent;
+ var precision = scope.compress && getPathPrecision(el) || 4;
+ if (builtinShpDef && !scope.willUpdate && !(builtinShpDef[1] && !builtinShpDef[1](shape)) && !(needsAnimate && hasShapeAnimation(el)) && !(strokePercent < 1)) {
+ svgElType = el.type;
+ var mul3 = Math.pow(10, precision);
+ builtinShpDef[0](shape, attrs, mul3);
+ } else {
+ var needBuildPath = !el.path || el.shapeChanged();
+ if (!el.path) {
+ el.createPathProxy();
+ }
+ var path = el.path;
+ if (needBuildPath) {
+ path.beginPath();
+ el.buildPath(path, el.shape);
+ el.pathUpdated();
+ }
+ var pathVersion = path.getVersion();
+ var elExt = el;
+ var svgPathBuilder = elExt.__svgPathBuilder;
+ if (elExt.__svgPathVersion !== pathVersion || !svgPathBuilder || strokePercent !== elExt.__svgPathStrokePercent) {
+ if (!svgPathBuilder) {
+ svgPathBuilder = elExt.__svgPathBuilder = new SVGPathRebuilder_default();
+ }
+ svgPathBuilder.reset(precision);
+ path.rebuildPath(svgPathBuilder, strokePercent);
+ svgPathBuilder.generateStr();
+ elExt.__svgPathVersion = pathVersion;
+ elExt.__svgPathStrokePercent = strokePercent;
+ }
+ attrs.d = svgPathBuilder.getStr();
+ }
+ setTransform(attrs, el.transform);
+ setStyleAttrs(attrs, style, el, scope);
+ setMetaData(attrs, el);
+ scope.animation && createCSSAnimation(el, attrs, scope);
+ scope.emphasis && createCSSEmphasis(el, attrs, scope);
+ return createVNode(svgElType, el.id + "", attrs);
+}
+function brushSVGImage(el, scope) {
+ var style = el.style;
+ var image = style.image;
+ if (image && !isString(image)) {
+ if (isImageLike2(image)) {
+ image = image.src;
+ } else if (isCanvasLike(image)) {
+ image = image.toDataURL();
+ }
+ }
+ if (!image) {
+ return;
+ }
+ var x = style.x || 0;
+ var y = style.y || 0;
+ var dw = style.width;
+ var dh = style.height;
+ var attrs = {
+ href: image,
+ width: dw,
+ height: dh
+ };
+ if (x) {
+ attrs.x = x;
+ }
+ if (y) {
+ attrs.y = y;
+ }
+ setTransform(attrs, el.transform);
+ setStyleAttrs(attrs, style, el, scope);
+ setMetaData(attrs, el);
+ scope.animation && createCSSAnimation(el, attrs, scope);
+ return createVNode("image", el.id + "", attrs);
+}
+function brushSVGTSpan(el, scope) {
+ var style = el.style;
+ var text = style.text;
+ text != null && (text += "");
+ if (!text || isNaN(style.x) || isNaN(style.y)) {
+ return;
+ }
+ var font = style.font || DEFAULT_FONT;
+ var x = style.x || 0;
+ var y = adjustTextY(style.y || 0, getLineHeight(font), style.textBaseline);
+ var textAlign = TEXT_ALIGN_TO_ANCHOR[style.textAlign] || style.textAlign;
+ var attrs = {
+ "dominant-baseline": "central",
+ "text-anchor": textAlign
+ };
+ if (hasSeparateFont(style)) {
+ var separatedFontStr = "";
+ var fontStyle = style.fontStyle;
+ var fontSize = parseFontSize(style.fontSize);
+ if (!parseFloat(fontSize)) {
+ return;
+ }
+ var fontFamily = style.fontFamily || DEFAULT_FONT_FAMILY;
+ var fontWeight = style.fontWeight;
+ separatedFontStr += "font-size:" + fontSize + ";font-family:" + fontFamily + ";";
+ if (fontStyle && fontStyle !== "normal") {
+ separatedFontStr += "font-style:" + fontStyle + ";";
+ }
+ if (fontWeight && fontWeight !== "normal") {
+ separatedFontStr += "font-weight:" + fontWeight + ";";
+ }
+ attrs.style = separatedFontStr;
+ } else {
+ attrs.style = "font: " + font;
+ }
+ if (text.match(/\s/)) {
+ attrs["xml:space"] = "preserve";
+ }
+ if (x) {
+ attrs.x = x;
+ }
+ if (y) {
+ attrs.y = y;
+ }
+ setTransform(attrs, el.transform);
+ setStyleAttrs(attrs, style, el, scope);
+ setMetaData(attrs, el);
+ scope.animation && createCSSAnimation(el, attrs, scope);
+ return createVNode("text", el.id + "", attrs, void 0, text);
+}
+function brush2(el, scope) {
+ if (el instanceof Path_default) {
+ return brushSVGPath(el, scope);
+ } else if (el instanceof Image_default) {
+ return brushSVGImage(el, scope);
+ } else if (el instanceof TSpan_default) {
+ return brushSVGTSpan(el, scope);
+ }
+}
+function setShadow(el, attrs, scope) {
+ var style = el.style;
+ if (hasShadow(style)) {
+ var shadowKey = getShadowKey(el);
+ var shadowCache = scope.shadowCache;
+ var shadowId = shadowCache[shadowKey];
+ if (!shadowId) {
+ var globalScale = el.getGlobalScale();
+ var scaleX = globalScale[0];
+ var scaleY = globalScale[1];
+ if (!scaleX || !scaleY) {
+ return;
+ }
+ var offsetX = style.shadowOffsetX || 0;
+ var offsetY = style.shadowOffsetY || 0;
+ var blur_1 = style.shadowBlur;
+ var _a2 = normalizeColor(style.shadowColor), opacity = _a2.opacity, color = _a2.color;
+ var stdDx = blur_1 / 2 / scaleX;
+ var stdDy = blur_1 / 2 / scaleY;
+ var stdDeviation = stdDx + " " + stdDy;
+ shadowId = scope.zrId + "-s" + scope.shadowIdx++;
+ scope.defs[shadowId] = createVNode("filter", shadowId, {
+ "id": shadowId,
+ "x": "-100%",
+ "y": "-100%",
+ "width": "300%",
+ "height": "300%"
+ }, [
+ createVNode("feDropShadow", "", {
+ "dx": offsetX / scaleX,
+ "dy": offsetY / scaleY,
+ "stdDeviation": stdDeviation,
+ "flood-color": color,
+ "flood-opacity": opacity
+ })
+ ]);
+ shadowCache[shadowKey] = shadowId;
+ }
+ attrs.filter = getIdURL(shadowId);
+ }
+}
+function setGradient(style, attrs, target, scope) {
+ var val = style[target];
+ var gradientTag;
+ var gradientAttrs = {
+ "gradientUnits": val.global ? "userSpaceOnUse" : "objectBoundingBox"
+ };
+ if (isLinearGradient(val)) {
+ gradientTag = "linearGradient";
+ gradientAttrs.x1 = val.x;
+ gradientAttrs.y1 = val.y;
+ gradientAttrs.x2 = val.x2;
+ gradientAttrs.y2 = val.y2;
+ } else if (isRadialGradient(val)) {
+ gradientTag = "radialGradient";
+ gradientAttrs.cx = retrieve2(val.x, 0.5);
+ gradientAttrs.cy = retrieve2(val.y, 0.5);
+ gradientAttrs.r = retrieve2(val.r, 0.5);
+ } else {
+ if (true) {
+ logError("Illegal gradient type.");
+ }
+ return;
+ }
+ var colors = val.colorStops;
+ var colorStops = [];
+ for (var i = 0, len2 = colors.length; i < len2; ++i) {
+ var offset = round4(colors[i].offset) * 100 + "%";
+ var stopColor = colors[i].color;
+ var _a2 = normalizeColor(stopColor), color = _a2.color, opacity = _a2.opacity;
+ var stopsAttrs = {
+ "offset": offset
+ };
+ stopsAttrs["stop-color"] = color;
+ if (opacity < 1) {
+ stopsAttrs["stop-opacity"] = opacity;
+ }
+ colorStops.push(createVNode("stop", i + "", stopsAttrs));
+ }
+ var gradientVNode = createVNode(gradientTag, "", gradientAttrs, colorStops);
+ var gradientKey = vNodeToString(gradientVNode);
+ var gradientCache = scope.gradientCache;
+ var gradientId = gradientCache[gradientKey];
+ if (!gradientId) {
+ gradientId = scope.zrId + "-g" + scope.gradientIdx++;
+ gradientCache[gradientKey] = gradientId;
+ gradientAttrs.id = gradientId;
+ scope.defs[gradientId] = createVNode(gradientTag, gradientId, gradientAttrs, colorStops);
+ }
+ attrs[target] = getIdURL(gradientId);
+}
+function setPattern(el, attrs, target, scope) {
+ var val = el.style[target];
+ var boundingRect = el.getBoundingRect();
+ var patternAttrs = {};
+ var repeat = val.repeat;
+ var noRepeat = repeat === "no-repeat";
+ var repeatX = repeat === "repeat-x";
+ var repeatY = repeat === "repeat-y";
+ var child;
+ if (isImagePattern(val)) {
+ var imageWidth_1 = val.imageWidth;
+ var imageHeight_1 = val.imageHeight;
+ var imageSrc = void 0;
+ var patternImage = val.image;
+ if (isString(patternImage)) {
+ imageSrc = patternImage;
+ } else if (isImageLike2(patternImage)) {
+ imageSrc = patternImage.src;
+ } else if (isCanvasLike(patternImage)) {
+ imageSrc = patternImage.toDataURL();
+ }
+ if (typeof Image === "undefined") {
+ var errMsg = "Image width/height must been given explictly in svg-ssr renderer.";
+ assert(imageWidth_1, errMsg);
+ assert(imageHeight_1, errMsg);
+ } else if (imageWidth_1 == null || imageHeight_1 == null) {
+ var setSizeToVNode_1 = function(vNode, img) {
+ if (vNode) {
+ var svgEl = vNode.elm;
+ var width = imageWidth_1 || img.width;
+ var height = imageHeight_1 || img.height;
+ if (vNode.tag === "pattern") {
+ if (repeatX) {
+ height = 1;
+ width /= boundingRect.width;
+ } else if (repeatY) {
+ width = 1;
+ height /= boundingRect.height;
+ }
+ }
+ vNode.attrs.width = width;
+ vNode.attrs.height = height;
+ if (svgEl) {
+ svgEl.setAttribute("width", width);
+ svgEl.setAttribute("height", height);
+ }
+ }
+ };
+ var createdImage = createOrUpdateImage(imageSrc, null, el, function(img) {
+ noRepeat || setSizeToVNode_1(patternVNode, img);
+ setSizeToVNode_1(child, img);
+ });
+ if (createdImage && createdImage.width && createdImage.height) {
+ imageWidth_1 = imageWidth_1 || createdImage.width;
+ imageHeight_1 = imageHeight_1 || createdImage.height;
+ }
+ }
+ child = createVNode("image", "img", {
+ href: imageSrc,
+ width: imageWidth_1,
+ height: imageHeight_1
+ });
+ patternAttrs.width = imageWidth_1;
+ patternAttrs.height = imageHeight_1;
+ } else if (val.svgElement) {
+ child = clone(val.svgElement);
+ patternAttrs.width = val.svgWidth;
+ patternAttrs.height = val.svgHeight;
+ }
+ if (!child) {
+ return;
+ }
+ var patternWidth;
+ var patternHeight;
+ if (noRepeat) {
+ patternWidth = patternHeight = 1;
+ } else if (repeatX) {
+ patternHeight = 1;
+ patternWidth = patternAttrs.width / boundingRect.width;
+ } else if (repeatY) {
+ patternWidth = 1;
+ patternHeight = patternAttrs.height / boundingRect.height;
+ } else {
+ patternAttrs.patternUnits = "userSpaceOnUse";
+ }
+ if (patternWidth != null && !isNaN(patternWidth)) {
+ patternAttrs.width = patternWidth;
+ }
+ if (patternHeight != null && !isNaN(patternHeight)) {
+ patternAttrs.height = patternHeight;
+ }
+ var patternTransform = getSRTTransformString(val);
+ patternTransform && (patternAttrs.patternTransform = patternTransform);
+ var patternVNode = createVNode("pattern", "", patternAttrs, [child]);
+ var patternKey = vNodeToString(patternVNode);
+ var patternCache = scope.patternCache;
+ var patternId = patternCache[patternKey];
+ if (!patternId) {
+ patternId = scope.zrId + "-p" + scope.patternIdx++;
+ patternCache[patternKey] = patternId;
+ patternAttrs.id = patternId;
+ patternVNode = scope.defs[patternId] = createVNode("pattern", patternId, patternAttrs, [child]);
+ }
+ attrs[target] = getIdURL(patternId);
+}
+function setClipPath(clipPath, attrs, scope) {
+ var clipPathCache = scope.clipPathCache, defs = scope.defs;
+ var clipPathId = clipPathCache[clipPath.id];
+ if (!clipPathId) {
+ clipPathId = scope.zrId + "-c" + scope.clipPathIdx++;
+ var clipPathAttrs = {
+ id: clipPathId
+ };
+ clipPathCache[clipPath.id] = clipPathId;
+ defs[clipPathId] = createVNode("clipPath", clipPathId, clipPathAttrs, [brushSVGPath(clipPath, scope)]);
+ }
+ attrs["clip-path"] = getIdURL(clipPathId);
+}
+
+// node_modules/zrender/lib/svg/domapi.js
+function createTextNode(text) {
+ return document.createTextNode(text);
+}
+function insertBefore(parentNode2, newNode, referenceNode) {
+ parentNode2.insertBefore(newNode, referenceNode);
+}
+function removeChild(node, child) {
+ node.removeChild(child);
+}
+function appendChild(node, child) {
+ node.appendChild(child);
+}
+function parentNode(node) {
+ return node.parentNode;
+}
+function nextSibling(node) {
+ return node.nextSibling;
+}
+function setTextContent(node, text) {
+ node.textContent = text;
+}
+
+// node_modules/zrender/lib/svg/patch.js
+var colonChar = 58;
+var xChar = 120;
+var emptyNode = createVNode("", "");
+function isUndef(s) {
+ return s === void 0;
+}
+function isDef(s) {
+ return s !== void 0;
+}
+function createKeyToOldIdx(children, beginIdx, endIdx) {
+ var map3 = {};
+ for (var i = beginIdx; i <= endIdx; ++i) {
+ var key = children[i].key;
+ if (key !== void 0) {
+ if (true) {
+ if (map3[key] != null) {
+ console.error("Duplicate key " + key);
+ }
+ }
+ map3[key] = i;
+ }
+ }
+ return map3;
+}
+function sameVnode(vnode1, vnode2) {
+ var isSameKey = vnode1.key === vnode2.key;
+ var isSameTag = vnode1.tag === vnode2.tag;
+ return isSameTag && isSameKey;
+}
+function createElm(vnode) {
+ var i;
+ var children = vnode.children;
+ var tag = vnode.tag;
+ if (isDef(tag)) {
+ var elm = vnode.elm = createElement(tag);
+ updateAttrs(emptyNode, vnode);
+ if (isArray(children)) {
+ for (i = 0; i < children.length; ++i) {
+ var ch = children[i];
+ if (ch != null) {
+ appendChild(elm, createElm(ch));
+ }
+ }
+ } else if (isDef(vnode.text) && !isObject(vnode.text)) {
+ appendChild(elm, createTextNode(vnode.text));
+ }
+ } else {
+ vnode.elm = createTextNode(vnode.text);
+ }
+ return vnode.elm;
+}
+function addVnodes(parentElm, before, vnodes, startIdx, endIdx) {
+ for (; startIdx <= endIdx; ++startIdx) {
+ var ch = vnodes[startIdx];
+ if (ch != null) {
+ insertBefore(parentElm, createElm(ch), before);
+ }
+ }
+}
+function removeVnodes(parentElm, vnodes, startIdx, endIdx) {
+ for (; startIdx <= endIdx; ++startIdx) {
+ var ch = vnodes[startIdx];
+ if (ch != null) {
+ if (isDef(ch.tag)) {
+ var parent_1 = parentNode(ch.elm);
+ removeChild(parent_1, ch.elm);
+ } else {
+ removeChild(parentElm, ch.elm);
+ }
+ }
+ }
+}
+function updateAttrs(oldVnode, vnode) {
+ var key;
+ var elm = vnode.elm;
+ var oldAttrs = oldVnode && oldVnode.attrs || {};
+ var attrs = vnode.attrs || {};
+ if (oldAttrs === attrs) {
+ return;
+ }
+ for (key in attrs) {
+ var cur = attrs[key];
+ var old = oldAttrs[key];
+ if (old !== cur) {
+ if (cur === true) {
+ elm.setAttribute(key, "");
+ } else if (cur === false) {
+ elm.removeAttribute(key);
+ } else {
+ if (key === "style") {
+ elm.style.cssText = cur;
+ } else if (key.charCodeAt(0) !== xChar) {
+ elm.setAttribute(key, cur);
+ } else if (key === "xmlns:xlink" || key === "xmlns") {
+ elm.setAttributeNS(XMLNS, key, cur);
+ } else if (key.charCodeAt(3) === colonChar) {
+ elm.setAttributeNS(XML_NAMESPACE, key, cur);
+ } else if (key.charCodeAt(5) === colonChar) {
+ elm.setAttributeNS(XLINKNS, key, cur);
+ } else {
+ elm.setAttribute(key, cur);
+ }
+ }
+ }
+ }
+ for (key in oldAttrs) {
+ if (!(key in attrs)) {
+ elm.removeAttribute(key);
+ }
+ }
+}
+function updateChildren(parentElm, oldCh, newCh) {
+ var oldStartIdx = 0;
+ var newStartIdx = 0;
+ var oldEndIdx = oldCh.length - 1;
+ var oldStartVnode = oldCh[0];
+ var oldEndVnode = oldCh[oldEndIdx];
+ var newEndIdx = newCh.length - 1;
+ var newStartVnode = newCh[0];
+ var newEndVnode = newCh[newEndIdx];
+ var oldKeyToIdx;
+ var idxInOld;
+ var elmToMove;
+ var before;
+ while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
+ if (oldStartVnode == null) {
+ oldStartVnode = oldCh[++oldStartIdx];
+ } else if (oldEndVnode == null) {
+ oldEndVnode = oldCh[--oldEndIdx];
+ } else if (newStartVnode == null) {
+ newStartVnode = newCh[++newStartIdx];
+ } else if (newEndVnode == null) {
+ newEndVnode = newCh[--newEndIdx];
+ } else if (sameVnode(oldStartVnode, newStartVnode)) {
+ patchVnode(oldStartVnode, newStartVnode);
+ oldStartVnode = oldCh[++oldStartIdx];
+ newStartVnode = newCh[++newStartIdx];
+ } else if (sameVnode(oldEndVnode, newEndVnode)) {
+ patchVnode(oldEndVnode, newEndVnode);
+ oldEndVnode = oldCh[--oldEndIdx];
+ newEndVnode = newCh[--newEndIdx];
+ } else if (sameVnode(oldStartVnode, newEndVnode)) {
+ patchVnode(oldStartVnode, newEndVnode);
+ insertBefore(parentElm, oldStartVnode.elm, nextSibling(oldEndVnode.elm));
+ oldStartVnode = oldCh[++oldStartIdx];
+ newEndVnode = newCh[--newEndIdx];
+ } else if (sameVnode(oldEndVnode, newStartVnode)) {
+ patchVnode(oldEndVnode, newStartVnode);
+ insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
+ oldEndVnode = oldCh[--oldEndIdx];
+ newStartVnode = newCh[++newStartIdx];
+ } else {
+ if (isUndef(oldKeyToIdx)) {
+ oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
+ }
+ idxInOld = oldKeyToIdx[newStartVnode.key];
+ if (isUndef(idxInOld)) {
+ insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);
+ } else {
+ elmToMove = oldCh[idxInOld];
+ if (elmToMove.tag !== newStartVnode.tag) {
+ insertBefore(parentElm, createElm(newStartVnode), oldStartVnode.elm);
+ } else {
+ patchVnode(elmToMove, newStartVnode);
+ oldCh[idxInOld] = void 0;
+ insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);
+ }
+ }
+ newStartVnode = newCh[++newStartIdx];
+ }
+ }
+ if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {
+ if (oldStartIdx > oldEndIdx) {
+ before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;
+ addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx);
+ } else {
+ removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
+ }
+ }
+}
+function patchVnode(oldVnode, vnode) {
+ var elm = vnode.elm = oldVnode.elm;
+ var oldCh = oldVnode.children;
+ var ch = vnode.children;
+ if (oldVnode === vnode) {
+ return;
+ }
+ updateAttrs(oldVnode, vnode);
+ if (isUndef(vnode.text)) {
+ if (isDef(oldCh) && isDef(ch)) {
+ if (oldCh !== ch) {
+ updateChildren(elm, oldCh, ch);
+ }
+ } else if (isDef(ch)) {
+ if (isDef(oldVnode.text)) {
+ setTextContent(elm, "");
+ }
+ addVnodes(elm, null, ch, 0, ch.length - 1);
+ } else if (isDef(oldCh)) {
+ removeVnodes(elm, oldCh, 0, oldCh.length - 1);
+ } else if (isDef(oldVnode.text)) {
+ setTextContent(elm, "");
+ }
+ } else if (oldVnode.text !== vnode.text) {
+ if (isDef(oldCh)) {
+ removeVnodes(elm, oldCh, 0, oldCh.length - 1);
+ }
+ setTextContent(elm, vnode.text);
+ }
+}
+function patch(oldVnode, vnode) {
+ if (sameVnode(oldVnode, vnode)) {
+ patchVnode(oldVnode, vnode);
+ } else {
+ var elm = oldVnode.elm;
+ var parent_2 = parentNode(elm);
+ createElm(vnode);
+ if (parent_2 !== null) {
+ insertBefore(parent_2, vnode.elm, nextSibling(elm));
+ removeVnodes(parent_2, [oldVnode], 0, 0);
+ }
+ }
+ return vnode;
+}
+
+// node_modules/zrender/lib/svg/Painter.js
+var svgId = 0;
+var SVGPainter = function() {
+ function SVGPainter2(root, storage2, opts) {
+ this.type = "svg";
+ this.refreshHover = createMethodNotSupport("refreshHover");
+ this.configLayer = createMethodNotSupport("configLayer");
+ this.storage = storage2;
+ this._opts = opts = extend({}, opts);
+ this.root = root;
+ this._id = "zr" + svgId++;
+ this._oldVNode = createSVGVNode(opts.width, opts.height);
+ if (root && !opts.ssr) {
+ var viewport = this._viewport = document.createElement("div");
+ viewport.style.cssText = "position:relative;overflow:hidden";
+ var svgDom = this._svgDom = this._oldVNode.elm = createElement("svg");
+ updateAttrs(null, this._oldVNode);
+ viewport.appendChild(svgDom);
+ root.appendChild(viewport);
+ }
+ this.resize(opts.width, opts.height);
+ }
+ SVGPainter2.prototype.getType = function() {
+ return this.type;
+ };
+ SVGPainter2.prototype.getViewportRoot = function() {
+ return this._viewport;
+ };
+ SVGPainter2.prototype.getViewportRootOffset = function() {
+ var viewportRoot = this.getViewportRoot();
+ if (viewportRoot) {
+ return {
+ offsetLeft: viewportRoot.offsetLeft || 0,
+ offsetTop: viewportRoot.offsetTop || 0
+ };
+ }
+ };
+ SVGPainter2.prototype.getSvgDom = function() {
+ return this._svgDom;
+ };
+ SVGPainter2.prototype.refresh = function() {
+ if (this.root) {
+ var vnode = this.renderToVNode({
+ willUpdate: true
+ });
+ vnode.attrs.style = "position:absolute;left:0;top:0;user-select:none";
+ patch(this._oldVNode, vnode);
+ this._oldVNode = vnode;
+ }
+ };
+ SVGPainter2.prototype.renderOneToVNode = function(el) {
+ return brush2(el, createBrushScope(this._id));
+ };
+ SVGPainter2.prototype.renderToVNode = function(opts) {
+ opts = opts || {};
+ var list = this.storage.getDisplayList(true);
+ var width = this._width;
+ var height = this._height;
+ var scope = createBrushScope(this._id);
+ scope.animation = opts.animation;
+ scope.willUpdate = opts.willUpdate;
+ scope.compress = opts.compress;
+ scope.emphasis = opts.emphasis;
+ scope.ssr = this._opts.ssr;
+ var children = [];
+ var bgVNode = this._bgVNode = createBackgroundVNode(width, height, this._backgroundColor, scope);
+ bgVNode && children.push(bgVNode);
+ var mainVNode = !opts.compress ? this._mainVNode = createVNode("g", "main", {}, []) : null;
+ this._paintList(list, scope, mainVNode ? mainVNode.children : children);
+ mainVNode && children.push(mainVNode);
+ var defs = map(keys(scope.defs), function(id) {
+ return scope.defs[id];
+ });
+ if (defs.length) {
+ children.push(createVNode("defs", "defs", {}, defs));
+ }
+ if (opts.animation) {
+ var animationCssStr = getCssString(scope.cssNodes, scope.cssAnims, { newline: true });
+ if (animationCssStr) {
+ var styleNode = createVNode("style", "stl", {}, [], animationCssStr);
+ children.push(styleNode);
+ }
+ }
+ return createSVGVNode(width, height, children, opts.useViewBox);
+ };
+ SVGPainter2.prototype.renderToString = function(opts) {
+ opts = opts || {};
+ return vNodeToString(this.renderToVNode({
+ animation: retrieve2(opts.cssAnimation, true),
+ emphasis: retrieve2(opts.cssEmphasis, true),
+ willUpdate: false,
+ compress: true,
+ useViewBox: retrieve2(opts.useViewBox, true)
+ }), { newline: true });
+ };
+ SVGPainter2.prototype.setBackgroundColor = function(backgroundColor2) {
+ this._backgroundColor = backgroundColor2;
+ };
+ SVGPainter2.prototype.getSvgRoot = function() {
+ return this._mainVNode && this._mainVNode.elm;
+ };
+ SVGPainter2.prototype._paintList = function(list, scope, out2) {
+ var listLen = list.length;
+ var clipPathsGroupsStack = [];
+ var clipPathsGroupsStackDepth = 0;
+ var currentClipPathGroup;
+ var prevClipPaths;
+ var clipGroupNodeIdx = 0;
+ for (var i = 0; i < listLen; i++) {
+ var displayable = list[i];
+ if (!displayable.invisible) {
+ var clipPaths = displayable.__clipPaths;
+ var len2 = clipPaths && clipPaths.length || 0;
+ var prevLen = prevClipPaths && prevClipPaths.length || 0;
+ var lca = void 0;
+ for (lca = Math.max(len2 - 1, prevLen - 1); lca >= 0; lca--) {
+ if (clipPaths && prevClipPaths && clipPaths[lca] === prevClipPaths[lca]) {
+ break;
+ }
+ }
+ for (var i_1 = prevLen - 1; i_1 > lca; i_1--) {
+ clipPathsGroupsStackDepth--;
+ currentClipPathGroup = clipPathsGroupsStack[clipPathsGroupsStackDepth - 1];
+ }
+ for (var i_2 = lca + 1; i_2 < len2; i_2++) {
+ var groupAttrs = {};
+ setClipPath(clipPaths[i_2], groupAttrs, scope);
+ var g = createVNode("g", "clip-g-" + clipGroupNodeIdx++, groupAttrs, []);
+ (currentClipPathGroup ? currentClipPathGroup.children : out2).push(g);
+ clipPathsGroupsStack[clipPathsGroupsStackDepth++] = g;
+ currentClipPathGroup = g;
+ }
+ prevClipPaths = clipPaths;
+ var ret = brush2(displayable, scope);
+ if (ret) {
+ (currentClipPathGroup ? currentClipPathGroup.children : out2).push(ret);
+ }
+ }
+ }
+ };
+ SVGPainter2.prototype.resize = function(width, height) {
+ var opts = this._opts;
+ var root = this.root;
+ var viewport = this._viewport;
+ width != null && (opts.width = width);
+ height != null && (opts.height = height);
+ if (root && viewport) {
+ viewport.style.display = "none";
+ width = getSize(root, 0, opts);
+ height = getSize(root, 1, opts);
+ viewport.style.display = "";
+ }
+ if (this._width !== width || this._height !== height) {
+ this._width = width;
+ this._height = height;
+ if (viewport) {
+ var viewportStyle = viewport.style;
+ viewportStyle.width = width + "px";
+ viewportStyle.height = height + "px";
+ }
+ if (!isPattern(this._backgroundColor)) {
+ var svgDom = this._svgDom;
+ if (svgDom) {
+ svgDom.setAttribute("width", width);
+ svgDom.setAttribute("height", height);
+ }
+ var bgEl = this._bgVNode && this._bgVNode.elm;
+ if (bgEl) {
+ bgEl.setAttribute("width", width);
+ bgEl.setAttribute("height", height);
+ }
+ } else {
+ this.refresh();
+ }
+ }
+ };
+ SVGPainter2.prototype.getWidth = function() {
+ return this._width;
+ };
+ SVGPainter2.prototype.getHeight = function() {
+ return this._height;
+ };
+ SVGPainter2.prototype.dispose = function() {
+ if (this.root) {
+ this.root.innerHTML = "";
+ }
+ this._svgDom = this._viewport = this.storage = this._oldVNode = this._bgVNode = this._mainVNode = null;
+ };
+ SVGPainter2.prototype.clear = function() {
+ if (this._svgDom) {
+ this._svgDom.innerHTML = null;
+ }
+ this._oldVNode = null;
+ };
+ SVGPainter2.prototype.toDataURL = function(base64) {
+ var str = this.renderToString();
+ var prefix = "data:image/svg+xml;";
+ if (base64) {
+ str = encodeBase64(str);
+ return str && prefix + "base64," + str;
+ }
+ return prefix + "charset=UTF-8," + encodeURIComponent(str);
+ };
+ return SVGPainter2;
+}();
+function createMethodNotSupport(method) {
+ return function() {
+ if (true) {
+ logError('In SVG mode painter not support method "' + method + '"');
+ }
+ };
+}
+function createBackgroundVNode(width, height, backgroundColor2, scope) {
+ var bgVNode;
+ if (backgroundColor2 && backgroundColor2 !== "none") {
+ bgVNode = createVNode("rect", "bg", {
+ width,
+ height,
+ x: "0",
+ y: "0"
+ });
+ if (isGradient(backgroundColor2)) {
+ setGradient({ fill: backgroundColor2 }, bgVNode.attrs, "fill", scope);
+ } else if (isPattern(backgroundColor2)) {
+ setPattern({
+ style: {
+ fill: backgroundColor2
+ },
+ dirty: noop,
+ getBoundingRect: function() {
+ return { width, height };
+ }
+ }, bgVNode.attrs, "fill", scope);
+ } else {
+ var _a2 = normalizeColor(backgroundColor2), color = _a2.color, opacity = _a2.opacity;
+ bgVNode.attrs.fill = color;
+ opacity < 1 && (bgVNode.attrs["fill-opacity"] = opacity);
+ }
+ }
+ return bgVNode;
+}
+var Painter_default = SVGPainter;
+
+// node_modules/echarts/lib/renderer/installSVGRenderer.js
+function install(registers) {
+ registers.registerPainter("svg", Painter_default);
+}
+
+// node_modules/zrender/lib/canvas/Layer.js
+function createDom(id, painter, dpr2) {
+ var newDom = platformApi.createCanvas();
+ var width = painter.getWidth();
+ var height = painter.getHeight();
+ var newDomStyle = newDom.style;
+ if (newDomStyle) {
+ newDomStyle.position = "absolute";
+ newDomStyle.left = "0";
+ newDomStyle.top = "0";
+ newDomStyle.width = width + "px";
+ newDomStyle.height = height + "px";
+ newDom.setAttribute("data-zr-dom-id", id);
+ }
+ newDom.width = width * dpr2;
+ newDom.height = height * dpr2;
+ return newDom;
+}
+var Layer = function(_super) {
+ __extends(Layer2, _super);
+ function Layer2(id, painter, dpr2) {
+ var _this = _super.call(this) || this;
+ _this.motionBlur = false;
+ _this.lastFrameAlpha = 0.7;
+ _this.dpr = 1;
+ _this.virtual = false;
+ _this.config = {};
+ _this.incremental = false;
+ _this.zlevel = 0;
+ _this.maxRepaintRectCount = 5;
+ _this.__dirty = true;
+ _this.__firstTimePaint = true;
+ _this.__used = false;
+ _this.__drawIndex = 0;
+ _this.__startIndex = 0;
+ _this.__endIndex = 0;
+ _this.__prevStartIndex = null;
+ _this.__prevEndIndex = null;
+ var dom;
+ dpr2 = dpr2 || devicePixelRatio;
+ if (typeof id === "string") {
+ dom = createDom(id, painter, dpr2);
+ } else if (isObject(id)) {
+ dom = id;
+ id = dom.id;
+ }
+ _this.id = id;
+ _this.dom = dom;
+ var domStyle = dom.style;
+ if (domStyle) {
+ disableUserSelect(dom);
+ dom.onselectstart = function() {
+ return false;
+ };
+ domStyle.padding = "0";
+ domStyle.margin = "0";
+ domStyle.borderWidth = "0";
+ }
+ _this.painter = painter;
+ _this.dpr = dpr2;
+ return _this;
+ }
+ Layer2.prototype.getElementCount = function() {
+ return this.__endIndex - this.__startIndex;
+ };
+ Layer2.prototype.afterBrush = function() {
+ this.__prevStartIndex = this.__startIndex;
+ this.__prevEndIndex = this.__endIndex;
+ };
+ Layer2.prototype.initContext = function() {
+ this.ctx = this.dom.getContext("2d");
+ this.ctx.dpr = this.dpr;
+ };
+ Layer2.prototype.setUnpainted = function() {
+ this.__firstTimePaint = true;
+ };
+ Layer2.prototype.createBackBuffer = function() {
+ var dpr2 = this.dpr;
+ this.domBack = createDom("back-" + this.id, this.painter, dpr2);
+ this.ctxBack = this.domBack.getContext("2d");
+ if (dpr2 !== 1) {
+ this.ctxBack.scale(dpr2, dpr2);
+ }
+ };
+ Layer2.prototype.createRepaintRects = function(displayList, prevList, viewWidth, viewHeight) {
+ if (this.__firstTimePaint) {
+ this.__firstTimePaint = false;
+ return null;
+ }
+ var mergedRepaintRects = [];
+ var maxRepaintRectCount = this.maxRepaintRectCount;
+ var full = false;
+ var pendingRect = new BoundingRect_default(0, 0, 0, 0);
+ function addRectToMergePool(rect) {
+ if (!rect.isFinite() || rect.isZero()) {
+ return;
+ }
+ if (mergedRepaintRects.length === 0) {
+ var boundingRect = new BoundingRect_default(0, 0, 0, 0);
+ boundingRect.copy(rect);
+ mergedRepaintRects.push(boundingRect);
+ } else {
+ var isMerged = false;
+ var minDeltaArea = Infinity;
+ var bestRectToMergeIdx = 0;
+ for (var i2 = 0; i2 < mergedRepaintRects.length; ++i2) {
+ var mergedRect = mergedRepaintRects[i2];
+ if (mergedRect.intersect(rect)) {
+ var pendingRect_1 = new BoundingRect_default(0, 0, 0, 0);
+ pendingRect_1.copy(mergedRect);
+ pendingRect_1.union(rect);
+ mergedRepaintRects[i2] = pendingRect_1;
+ isMerged = true;
+ break;
+ } else if (full) {
+ pendingRect.copy(rect);
+ pendingRect.union(mergedRect);
+ var aArea = rect.width * rect.height;
+ var bArea = mergedRect.width * mergedRect.height;
+ var pendingArea = pendingRect.width * pendingRect.height;
+ var deltaArea = pendingArea - aArea - bArea;
+ if (deltaArea < minDeltaArea) {
+ minDeltaArea = deltaArea;
+ bestRectToMergeIdx = i2;
+ }
+ }
+ }
+ if (full) {
+ mergedRepaintRects[bestRectToMergeIdx].union(rect);
+ isMerged = true;
+ }
+ if (!isMerged) {
+ var boundingRect = new BoundingRect_default(0, 0, 0, 0);
+ boundingRect.copy(rect);
+ mergedRepaintRects.push(boundingRect);
+ }
+ if (!full) {
+ full = mergedRepaintRects.length >= maxRepaintRectCount;
+ }
+ }
+ }
+ for (var i = this.__startIndex; i < this.__endIndex; ++i) {
+ var el = displayList[i];
+ if (el) {
+ var shouldPaint = el.shouldBePainted(viewWidth, viewHeight, true, true);
+ var prevRect = el.__isRendered && (el.__dirty & REDRAW_BIT || !shouldPaint) ? el.getPrevPaintRect() : null;
+ if (prevRect) {
+ addRectToMergePool(prevRect);
+ }
+ var curRect = shouldPaint && (el.__dirty & REDRAW_BIT || !el.__isRendered) ? el.getPaintRect() : null;
+ if (curRect) {
+ addRectToMergePool(curRect);
+ }
+ }
+ }
+ for (var i = this.__prevStartIndex; i < this.__prevEndIndex; ++i) {
+ var el = prevList[i];
+ var shouldPaint = el && el.shouldBePainted(viewWidth, viewHeight, true, true);
+ if (el && (!shouldPaint || !el.__zr) && el.__isRendered) {
+ var prevRect = el.getPrevPaintRect();
+ if (prevRect) {
+ addRectToMergePool(prevRect);
+ }
+ }
+ }
+ var hasIntersections;
+ do {
+ hasIntersections = false;
+ for (var i = 0; i < mergedRepaintRects.length; ) {
+ if (mergedRepaintRects[i].isZero()) {
+ mergedRepaintRects.splice(i, 1);
+ continue;
+ }
+ for (var j = i + 1; j < mergedRepaintRects.length; ) {
+ if (mergedRepaintRects[i].intersect(mergedRepaintRects[j])) {
+ hasIntersections = true;
+ mergedRepaintRects[i].union(mergedRepaintRects[j]);
+ mergedRepaintRects.splice(j, 1);
+ } else {
+ j++;
+ }
+ }
+ i++;
+ }
+ } while (hasIntersections);
+ this._paintRects = mergedRepaintRects;
+ return mergedRepaintRects;
+ };
+ Layer2.prototype.debugGetPaintRects = function() {
+ return (this._paintRects || []).slice();
+ };
+ Layer2.prototype.resize = function(width, height) {
+ var dpr2 = this.dpr;
+ var dom = this.dom;
+ var domStyle = dom.style;
+ var domBack = this.domBack;
+ if (domStyle) {
+ domStyle.width = width + "px";
+ domStyle.height = height + "px";
+ }
+ dom.width = width * dpr2;
+ dom.height = height * dpr2;
+ if (domBack) {
+ domBack.width = width * dpr2;
+ domBack.height = height * dpr2;
+ if (dpr2 !== 1) {
+ this.ctxBack.scale(dpr2, dpr2);
+ }
+ }
+ };
+ Layer2.prototype.clear = function(clearAll, clearColor, repaintRects) {
+ var dom = this.dom;
+ var ctx = this.ctx;
+ var width = dom.width;
+ var height = dom.height;
+ clearColor = clearColor || this.clearColor;
+ var haveMotionBLur = this.motionBlur && !clearAll;
+ var lastFrameAlpha = this.lastFrameAlpha;
+ var dpr2 = this.dpr;
+ var self2 = this;
+ if (haveMotionBLur) {
+ if (!this.domBack) {
+ this.createBackBuffer();
+ }
+ this.ctxBack.globalCompositeOperation = "copy";
+ this.ctxBack.drawImage(dom, 0, 0, width / dpr2, height / dpr2);
+ }
+ var domBack = this.domBack;
+ function doClear(x, y, width2, height2) {
+ ctx.clearRect(x, y, width2, height2);
+ if (clearColor && clearColor !== "transparent") {
+ var clearColorGradientOrPattern = void 0;
+ if (isGradientObject(clearColor)) {
+ var shouldCache = clearColor.global || clearColor.__width === width2 && clearColor.__height === height2;
+ clearColorGradientOrPattern = shouldCache && clearColor.__canvasGradient || getCanvasGradient(ctx, clearColor, {
+ x: 0,
+ y: 0,
+ width: width2,
+ height: height2
+ });
+ clearColor.__canvasGradient = clearColorGradientOrPattern;
+ clearColor.__width = width2;
+ clearColor.__height = height2;
+ } else if (isImagePatternObject(clearColor)) {
+ clearColor.scaleX = clearColor.scaleX || dpr2;
+ clearColor.scaleY = clearColor.scaleY || dpr2;
+ clearColorGradientOrPattern = createCanvasPattern(ctx, clearColor, {
+ dirty: function() {
+ self2.setUnpainted();
+ self2.painter.refresh();
+ }
+ });
+ }
+ ctx.save();
+ ctx.fillStyle = clearColorGradientOrPattern || clearColor;
+ ctx.fillRect(x, y, width2, height2);
+ ctx.restore();
+ }
+ if (haveMotionBLur) {
+ ctx.save();
+ ctx.globalAlpha = lastFrameAlpha;
+ ctx.drawImage(domBack, x, y, width2, height2);
+ ctx.restore();
+ }
+ }
+ ;
+ if (!repaintRects || haveMotionBLur) {
+ doClear(0, 0, width, height);
+ } else if (repaintRects.length) {
+ each(repaintRects, function(rect) {
+ doClear(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2);
+ });
+ }
+ };
+ return Layer2;
+}(Eventful_default);
+var Layer_default = Layer;
+
+// node_modules/zrender/lib/canvas/Painter.js
+var HOVER_LAYER_ZLEVEL = 1e5;
+var CANVAS_ZLEVEL = 314159;
+var EL_AFTER_INCREMENTAL_INC = 0.01;
+var INCREMENTAL_INC = 1e-3;
+function isLayerValid(layer) {
+ if (!layer) {
+ return false;
+ }
+ if (layer.__builtin__) {
+ return true;
+ }
+ if (typeof layer.resize !== "function" || typeof layer.refresh !== "function") {
+ return false;
+ }
+ return true;
+}
+function createRoot(width, height) {
+ var domRoot = document.createElement("div");
+ domRoot.style.cssText = [
+ "position:relative",
+ "width:" + width + "px",
+ "height:" + height + "px",
+ "padding:0",
+ "margin:0",
+ "border-width:0"
+ ].join(";") + ";";
+ return domRoot;
+}
+var CanvasPainter = function() {
+ function CanvasPainter2(root, storage2, opts, id) {
+ this.type = "canvas";
+ this._zlevelList = [];
+ this._prevDisplayList = [];
+ this._layers = {};
+ this._layerConfig = {};
+ this._needsManuallyCompositing = false;
+ this.type = "canvas";
+ var singleCanvas = !root.nodeName || root.nodeName.toUpperCase() === "CANVAS";
+ this._opts = opts = extend({}, opts || {});
+ this.dpr = opts.devicePixelRatio || devicePixelRatio;
+ this._singleCanvas = singleCanvas;
+ this.root = root;
+ var rootStyle = root.style;
+ if (rootStyle) {
+ disableUserSelect(root);
+ root.innerHTML = "";
+ }
+ this.storage = storage2;
+ var zlevelList = this._zlevelList;
+ this._prevDisplayList = [];
+ var layers = this._layers;
+ if (!singleCanvas) {
+ this._width = getSize(root, 0, opts);
+ this._height = getSize(root, 1, opts);
+ var domRoot = this._domRoot = createRoot(this._width, this._height);
+ root.appendChild(domRoot);
+ } else {
+ var rootCanvas = root;
+ var width = rootCanvas.width;
+ var height = rootCanvas.height;
+ if (opts.width != null) {
+ width = opts.width;
+ }
+ if (opts.height != null) {
+ height = opts.height;
+ }
+ this.dpr = opts.devicePixelRatio || 1;
+ rootCanvas.width = width * this.dpr;
+ rootCanvas.height = height * this.dpr;
+ this._width = width;
+ this._height = height;
+ var mainLayer = new Layer_default(rootCanvas, this, this.dpr);
+ mainLayer.__builtin__ = true;
+ mainLayer.initContext();
+ layers[CANVAS_ZLEVEL] = mainLayer;
+ mainLayer.zlevel = CANVAS_ZLEVEL;
+ zlevelList.push(CANVAS_ZLEVEL);
+ this._domRoot = root;
+ }
+ }
+ CanvasPainter2.prototype.getType = function() {
+ return "canvas";
+ };
+ CanvasPainter2.prototype.isSingleCanvas = function() {
+ return this._singleCanvas;
+ };
+ CanvasPainter2.prototype.getViewportRoot = function() {
+ return this._domRoot;
+ };
+ CanvasPainter2.prototype.getViewportRootOffset = function() {
+ var viewportRoot = this.getViewportRoot();
+ if (viewportRoot) {
+ return {
+ offsetLeft: viewportRoot.offsetLeft || 0,
+ offsetTop: viewportRoot.offsetTop || 0
+ };
+ }
+ };
+ CanvasPainter2.prototype.refresh = function(paintAll) {
+ var list = this.storage.getDisplayList(true);
+ var prevList = this._prevDisplayList;
+ var zlevelList = this._zlevelList;
+ this._redrawId = Math.random();
+ this._paintList(list, prevList, paintAll, this._redrawId);
+ for (var i = 0; i < zlevelList.length; i++) {
+ var z = zlevelList[i];
+ var layer = this._layers[z];
+ if (!layer.__builtin__ && layer.refresh) {
+ var clearColor = i === 0 ? this._backgroundColor : null;
+ layer.refresh(clearColor);
+ }
+ }
+ if (this._opts.useDirtyRect) {
+ this._prevDisplayList = list.slice();
+ }
+ return this;
+ };
+ CanvasPainter2.prototype.refreshHover = function() {
+ this._paintHoverList(this.storage.getDisplayList(false));
+ };
+ CanvasPainter2.prototype._paintHoverList = function(list) {
+ var len2 = list.length;
+ var hoverLayer = this._hoverlayer;
+ hoverLayer && hoverLayer.clear();
+ if (!len2) {
+ return;
+ }
+ var scope = {
+ inHover: true,
+ viewWidth: this._width,
+ viewHeight: this._height
+ };
+ var ctx;
+ for (var i = 0; i < len2; i++) {
+ var el = list[i];
+ if (el.__inHover) {
+ if (!hoverLayer) {
+ hoverLayer = this._hoverlayer = this.getLayer(HOVER_LAYER_ZLEVEL);
+ }
+ if (!ctx) {
+ ctx = hoverLayer.ctx;
+ ctx.save();
+ }
+ brush(ctx, el, scope, i === len2 - 1);
+ }
+ }
+ if (ctx) {
+ ctx.restore();
+ }
+ };
+ CanvasPainter2.prototype.getHoverLayer = function() {
+ return this.getLayer(HOVER_LAYER_ZLEVEL);
+ };
+ CanvasPainter2.prototype.paintOne = function(ctx, el) {
+ brushSingle(ctx, el);
+ };
+ CanvasPainter2.prototype._paintList = function(list, prevList, paintAll, redrawId) {
+ if (this._redrawId !== redrawId) {
+ return;
+ }
+ paintAll = paintAll || false;
+ this._updateLayerStatus(list);
+ var _a2 = this._doPaintList(list, prevList, paintAll), finished = _a2.finished, needsRefreshHover = _a2.needsRefreshHover;
+ if (this._needsManuallyCompositing) {
+ this._compositeManually();
+ }
+ if (needsRefreshHover) {
+ this._paintHoverList(list);
+ }
+ if (!finished) {
+ var self_1 = this;
+ requestAnimationFrame_default(function() {
+ self_1._paintList(list, prevList, paintAll, redrawId);
+ });
+ } else {
+ this.eachLayer(function(layer) {
+ layer.afterBrush && layer.afterBrush();
+ });
+ }
+ };
+ CanvasPainter2.prototype._compositeManually = function() {
+ var ctx = this.getLayer(CANVAS_ZLEVEL).ctx;
+ var width = this._domRoot.width;
+ var height = this._domRoot.height;
+ ctx.clearRect(0, 0, width, height);
+ this.eachBuiltinLayer(function(layer) {
+ if (layer.virtual) {
+ ctx.drawImage(layer.dom, 0, 0, width, height);
+ }
+ });
+ };
+ CanvasPainter2.prototype._doPaintList = function(list, prevList, paintAll) {
+ var _this = this;
+ var layerList = [];
+ var useDirtyRect = this._opts.useDirtyRect;
+ for (var zi = 0; zi < this._zlevelList.length; zi++) {
+ var zlevel = this._zlevelList[zi];
+ var layer = this._layers[zlevel];
+ if (layer.__builtin__ && layer !== this._hoverlayer && (layer.__dirty || paintAll)) {
+ layerList.push(layer);
+ }
+ }
+ var finished = true;
+ var needsRefreshHover = false;
+ var _loop_1 = function(k2) {
+ var layer2 = layerList[k2];
+ var ctx = layer2.ctx;
+ var repaintRects = useDirtyRect && layer2.createRepaintRects(list, prevList, this_1._width, this_1._height);
+ var start2 = paintAll ? layer2.__startIndex : layer2.__drawIndex;
+ var useTimer = !paintAll && layer2.incremental && Date.now;
+ var startTime = useTimer && Date.now();
+ var clearColor = layer2.zlevel === this_1._zlevelList[0] ? this_1._backgroundColor : null;
+ if (layer2.__startIndex === layer2.__endIndex) {
+ layer2.clear(false, clearColor, repaintRects);
+ } else if (start2 === layer2.__startIndex) {
+ var firstEl = list[start2];
+ if (!firstEl.incremental || !firstEl.notClear || paintAll) {
+ layer2.clear(false, clearColor, repaintRects);
+ }
+ }
+ if (start2 === -1) {
+ console.error("For some unknown reason. drawIndex is -1");
+ start2 = layer2.__startIndex;
+ }
+ var i;
+ var repaint = function(repaintRect) {
+ var scope = {
+ inHover: false,
+ allClipped: false,
+ prevEl: null,
+ viewWidth: _this._width,
+ viewHeight: _this._height
+ };
+ for (i = start2; i < layer2.__endIndex; i++) {
+ var el = list[i];
+ if (el.__inHover) {
+ needsRefreshHover = true;
+ }
+ _this._doPaintEl(el, layer2, useDirtyRect, repaintRect, scope, i === layer2.__endIndex - 1);
+ if (useTimer) {
+ var dTime = Date.now() - startTime;
+ if (dTime > 15) {
+ break;
+ }
+ }
+ }
+ if (scope.prevElClipPaths) {
+ ctx.restore();
+ }
+ };
+ if (repaintRects) {
+ if (repaintRects.length === 0) {
+ i = layer2.__endIndex;
+ } else {
+ var dpr2 = this_1.dpr;
+ for (var r = 0; r < repaintRects.length; ++r) {
+ var rect = repaintRects[r];
+ ctx.save();
+ ctx.beginPath();
+ ctx.rect(rect.x * dpr2, rect.y * dpr2, rect.width * dpr2, rect.height * dpr2);
+ ctx.clip();
+ repaint(rect);
+ ctx.restore();
+ }
+ }
+ } else {
+ ctx.save();
+ repaint();
+ ctx.restore();
+ }
+ layer2.__drawIndex = i;
+ if (layer2.__drawIndex < layer2.__endIndex) {
+ finished = false;
+ }
+ };
+ var this_1 = this;
+ for (var k = 0; k < layerList.length; k++) {
+ _loop_1(k);
+ }
+ if (env_default.wxa) {
+ each(this._layers, function(layer2) {
+ if (layer2 && layer2.ctx && layer2.ctx.draw) {
+ layer2.ctx.draw();
+ }
+ });
+ }
+ return {
+ finished,
+ needsRefreshHover
+ };
+ };
+ CanvasPainter2.prototype._doPaintEl = function(el, currentLayer, useDirtyRect, repaintRect, scope, isLast) {
+ var ctx = currentLayer.ctx;
+ if (useDirtyRect) {
+ var paintRect = el.getPaintRect();
+ if (!repaintRect || paintRect && paintRect.intersect(repaintRect)) {
+ brush(ctx, el, scope, isLast);
+ el.setPrevPaintRect(paintRect);
+ }
+ } else {
+ brush(ctx, el, scope, isLast);
+ }
+ };
+ CanvasPainter2.prototype.getLayer = function(zlevel, virtual) {
+ if (this._singleCanvas && !this._needsManuallyCompositing) {
+ zlevel = CANVAS_ZLEVEL;
+ }
+ var layer = this._layers[zlevel];
+ if (!layer) {
+ layer = new Layer_default("zr_" + zlevel, this, this.dpr);
+ layer.zlevel = zlevel;
+ layer.__builtin__ = true;
+ if (this._layerConfig[zlevel]) {
+ merge(layer, this._layerConfig[zlevel], true);
+ } else if (this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC]) {
+ merge(layer, this._layerConfig[zlevel - EL_AFTER_INCREMENTAL_INC], true);
+ }
+ if (virtual) {
+ layer.virtual = virtual;
+ }
+ this.insertLayer(zlevel, layer);
+ layer.initContext();
+ }
+ return layer;
+ };
+ CanvasPainter2.prototype.insertLayer = function(zlevel, layer) {
+ var layersMap = this._layers;
+ var zlevelList = this._zlevelList;
+ var len2 = zlevelList.length;
+ var domRoot = this._domRoot;
+ var prevLayer = null;
+ var i = -1;
+ if (layersMap[zlevel]) {
+ if (true) {
+ logError("ZLevel " + zlevel + " has been used already");
+ }
+ return;
+ }
+ if (!isLayerValid(layer)) {
+ if (true) {
+ logError("Layer of zlevel " + zlevel + " is not valid");
+ }
+ return;
+ }
+ if (len2 > 0 && zlevel > zlevelList[0]) {
+ for (i = 0; i < len2 - 1; i++) {
+ if (zlevelList[i] < zlevel && zlevelList[i + 1] > zlevel) {
+ break;
+ }
+ }
+ prevLayer = layersMap[zlevelList[i]];
+ }
+ zlevelList.splice(i + 1, 0, zlevel);
+ layersMap[zlevel] = layer;
+ if (!layer.virtual) {
+ if (prevLayer) {
+ var prevDom = prevLayer.dom;
+ if (prevDom.nextSibling) {
+ domRoot.insertBefore(layer.dom, prevDom.nextSibling);
+ } else {
+ domRoot.appendChild(layer.dom);
+ }
+ } else {
+ if (domRoot.firstChild) {
+ domRoot.insertBefore(layer.dom, domRoot.firstChild);
+ } else {
+ domRoot.appendChild(layer.dom);
+ }
+ }
+ }
+ layer.painter || (layer.painter = this);
+ };
+ CanvasPainter2.prototype.eachLayer = function(cb, context) {
+ var zlevelList = this._zlevelList;
+ for (var i = 0; i < zlevelList.length; i++) {
+ var z = zlevelList[i];
+ cb.call(context, this._layers[z], z);
+ }
+ };
+ CanvasPainter2.prototype.eachBuiltinLayer = function(cb, context) {
+ var zlevelList = this._zlevelList;
+ for (var i = 0; i < zlevelList.length; i++) {
+ var z = zlevelList[i];
+ var layer = this._layers[z];
+ if (layer.__builtin__) {
+ cb.call(context, layer, z);
+ }
+ }
+ };
+ CanvasPainter2.prototype.eachOtherLayer = function(cb, context) {
+ var zlevelList = this._zlevelList;
+ for (var i = 0; i < zlevelList.length; i++) {
+ var z = zlevelList[i];
+ var layer = this._layers[z];
+ if (!layer.__builtin__) {
+ cb.call(context, layer, z);
+ }
+ }
+ };
+ CanvasPainter2.prototype.getLayers = function() {
+ return this._layers;
+ };
+ CanvasPainter2.prototype._updateLayerStatus = function(list) {
+ this.eachBuiltinLayer(function(layer2, z) {
+ layer2.__dirty = layer2.__used = false;
+ });
+ function updatePrevLayer(idx) {
+ if (prevLayer) {
+ if (prevLayer.__endIndex !== idx) {
+ prevLayer.__dirty = true;
+ }
+ prevLayer.__endIndex = idx;
+ }
+ }
+ if (this._singleCanvas) {
+ for (var i_1 = 1; i_1 < list.length; i_1++) {
+ var el = list[i_1];
+ if (el.zlevel !== list[i_1 - 1].zlevel || el.incremental) {
+ this._needsManuallyCompositing = true;
+ break;
+ }
+ }
+ }
+ var prevLayer = null;
+ var incrementalLayerCount = 0;
+ var prevZlevel;
+ var i;
+ for (i = 0; i < list.length; i++) {
+ var el = list[i];
+ var zlevel = el.zlevel;
+ var layer = void 0;
+ if (prevZlevel !== zlevel) {
+ prevZlevel = zlevel;
+ incrementalLayerCount = 0;
+ }
+ if (el.incremental) {
+ layer = this.getLayer(zlevel + INCREMENTAL_INC, this._needsManuallyCompositing);
+ layer.incremental = true;
+ incrementalLayerCount = 1;
+ } else {
+ layer = this.getLayer(zlevel + (incrementalLayerCount > 0 ? EL_AFTER_INCREMENTAL_INC : 0), this._needsManuallyCompositing);
+ }
+ if (!layer.__builtin__) {
+ logError("ZLevel " + zlevel + " has been used by unkown layer " + layer.id);
+ }
+ if (layer !== prevLayer) {
+ layer.__used = true;
+ if (layer.__startIndex !== i) {
+ layer.__dirty = true;
+ }
+ layer.__startIndex = i;
+ if (!layer.incremental) {
+ layer.__drawIndex = i;
+ } else {
+ layer.__drawIndex = -1;
+ }
+ updatePrevLayer(i);
+ prevLayer = layer;
+ }
+ if (el.__dirty & REDRAW_BIT && !el.__inHover) {
+ layer.__dirty = true;
+ if (layer.incremental && layer.__drawIndex < 0) {
+ layer.__drawIndex = i;
+ }
+ }
+ }
+ updatePrevLayer(i);
+ this.eachBuiltinLayer(function(layer2, z) {
+ if (!layer2.__used && layer2.getElementCount() > 0) {
+ layer2.__dirty = true;
+ layer2.__startIndex = layer2.__endIndex = layer2.__drawIndex = 0;
+ }
+ if (layer2.__dirty && layer2.__drawIndex < 0) {
+ layer2.__drawIndex = layer2.__startIndex;
+ }
+ });
+ };
+ CanvasPainter2.prototype.clear = function() {
+ this.eachBuiltinLayer(this._clearLayer);
+ return this;
+ };
+ CanvasPainter2.prototype._clearLayer = function(layer) {
+ layer.clear();
+ };
+ CanvasPainter2.prototype.setBackgroundColor = function(backgroundColor2) {
+ this._backgroundColor = backgroundColor2;
+ each(this._layers, function(layer) {
+ layer.setUnpainted();
+ });
+ };
+ CanvasPainter2.prototype.configLayer = function(zlevel, config) {
+ if (config) {
+ var layerConfig = this._layerConfig;
+ if (!layerConfig[zlevel]) {
+ layerConfig[zlevel] = config;
+ } else {
+ merge(layerConfig[zlevel], config, true);
+ }
+ for (var i = 0; i < this._zlevelList.length; i++) {
+ var _zlevel = this._zlevelList[i];
+ if (_zlevel === zlevel || _zlevel === zlevel + EL_AFTER_INCREMENTAL_INC) {
+ var layer = this._layers[_zlevel];
+ merge(layer, layerConfig[zlevel], true);
+ }
+ }
+ }
+ };
+ CanvasPainter2.prototype.delLayer = function(zlevel) {
+ var layers = this._layers;
+ var zlevelList = this._zlevelList;
+ var layer = layers[zlevel];
+ if (!layer) {
+ return;
+ }
+ layer.dom.parentNode.removeChild(layer.dom);
+ delete layers[zlevel];
+ zlevelList.splice(indexOf(zlevelList, zlevel), 1);
+ };
+ CanvasPainter2.prototype.resize = function(width, height) {
+ if (!this._domRoot.style) {
+ if (width == null || height == null) {
+ return;
+ }
+ this._width = width;
+ this._height = height;
+ this.getLayer(CANVAS_ZLEVEL).resize(width, height);
+ } else {
+ var domRoot = this._domRoot;
+ domRoot.style.display = "none";
+ var opts = this._opts;
+ var root = this.root;
+ width != null && (opts.width = width);
+ height != null && (opts.height = height);
+ width = getSize(root, 0, opts);
+ height = getSize(root, 1, opts);
+ domRoot.style.display = "";
+ if (this._width !== width || height !== this._height) {
+ domRoot.style.width = width + "px";
+ domRoot.style.height = height + "px";
+ for (var id in this._layers) {
+ if (this._layers.hasOwnProperty(id)) {
+ this._layers[id].resize(width, height);
+ }
+ }
+ this.refresh(true);
+ }
+ this._width = width;
+ this._height = height;
+ }
+ return this;
+ };
+ CanvasPainter2.prototype.clearLayer = function(zlevel) {
+ var layer = this._layers[zlevel];
+ if (layer) {
+ layer.clear();
+ }
+ };
+ CanvasPainter2.prototype.dispose = function() {
+ this.root.innerHTML = "";
+ this.root = this.storage = this._domRoot = this._layers = null;
+ };
+ CanvasPainter2.prototype.getRenderedCanvas = function(opts) {
+ opts = opts || {};
+ if (this._singleCanvas && !this._compositeManually) {
+ return this._layers[CANVAS_ZLEVEL].dom;
+ }
+ var imageLayer = new Layer_default("image", this, opts.pixelRatio || this.dpr);
+ imageLayer.initContext();
+ imageLayer.clear(false, opts.backgroundColor || this._backgroundColor);
+ var ctx = imageLayer.ctx;
+ if (opts.pixelRatio <= this.dpr) {
+ this.refresh();
+ var width_1 = imageLayer.dom.width;
+ var height_1 = imageLayer.dom.height;
+ this.eachLayer(function(layer) {
+ if (layer.__builtin__) {
+ ctx.drawImage(layer.dom, 0, 0, width_1, height_1);
+ } else if (layer.renderToCanvas) {
+ ctx.save();
+ layer.renderToCanvas(ctx);
+ ctx.restore();
+ }
+ });
+ } else {
+ var scope = {
+ inHover: false,
+ viewWidth: this._width,
+ viewHeight: this._height
+ };
+ var displayList = this.storage.getDisplayList(true);
+ for (var i = 0, len2 = displayList.length; i < len2; i++) {
+ var el = displayList[i];
+ brush(ctx, el, scope, i === len2 - 1);
+ }
+ }
+ return imageLayer.dom;
+ };
+ CanvasPainter2.prototype.getWidth = function() {
+ return this._width;
+ };
+ CanvasPainter2.prototype.getHeight = function() {
+ return this._height;
+ };
+ return CanvasPainter2;
+}();
+var Painter_default2 = CanvasPainter;
+
+// node_modules/echarts/lib/renderer/installCanvasRenderer.js
+function install2(registers) {
+ registers.registerPainter("canvas", Painter_default2);
+}
+
+// node_modules/echarts/lib/chart/line/LineSeries.js
+var LineSeriesModel = function(_super) {
+ __extends(LineSeriesModel2, _super);
+ function LineSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = LineSeriesModel2.type;
+ _this.hasSymbolVisual = true;
+ return _this;
+ }
+ LineSeriesModel2.prototype.getInitialData = function(option) {
+ if (true) {
+ var coordSys = option.coordinateSystem;
+ if (coordSys !== "polar" && coordSys !== "cartesian2d") {
+ throw new Error("Line not support coordinateSystem besides cartesian and polar");
+ }
+ }
+ return createSeriesData_default(null, this, {
+ useEncodeDefaulter: true
+ });
+ };
+ LineSeriesModel2.prototype.getLegendIcon = function(opt) {
+ var group = new Group_default();
+ var line = createSymbol("line", 0, opt.itemHeight / 2, opt.itemWidth, 0, opt.lineStyle.stroke, false);
+ group.add(line);
+ line.setStyle(opt.lineStyle);
+ var visualType = this.getData().getVisual("symbol");
+ var visualRotate = this.getData().getVisual("symbolRotate");
+ var symbolType = visualType === "none" ? "circle" : visualType;
+ var size = opt.itemHeight * 0.8;
+ var symbol = createSymbol(symbolType, (opt.itemWidth - size) / 2, (opt.itemHeight - size) / 2, size, size, opt.itemStyle.fill);
+ group.add(symbol);
+ symbol.setStyle(opt.itemStyle);
+ var symbolRotate = opt.iconRotate === "inherit" ? visualRotate : opt.iconRotate || 0;
+ symbol.rotation = symbolRotate * Math.PI / 180;
+ symbol.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);
+ if (symbolType.indexOf("empty") > -1) {
+ symbol.style.stroke = symbol.style.fill;
+ symbol.style.fill = "#fff";
+ symbol.style.lineWidth = 2;
+ }
+ return group;
+ };
+ LineSeriesModel2.type = "series.line";
+ LineSeriesModel2.dependencies = ["grid", "polar"];
+ LineSeriesModel2.defaultOption = {
+ z: 3,
+ coordinateSystem: "cartesian2d",
+ legendHoverLink: true,
+ clip: true,
+ label: {
+ position: "top"
+ },
+ endLabel: {
+ show: false,
+ valueAnimation: true,
+ distance: 8
+ },
+ lineStyle: {
+ width: 2,
+ type: "solid"
+ },
+ emphasis: {
+ scale: true
+ },
+ step: false,
+ smooth: false,
+ smoothMonotone: null,
+ symbol: "emptyCircle",
+ symbolSize: 4,
+ symbolRotate: null,
+ showSymbol: true,
+ showAllSymbol: "auto",
+ connectNulls: false,
+ sampling: "none",
+ animationEasing: "linear",
+ progressive: 0,
+ hoverLayerThreshold: Infinity,
+ universalTransition: {
+ divideShape: "clone"
+ },
+ triggerLineEvent: false
+ };
+ return LineSeriesModel2;
+}(Series_default);
+var LineSeries_default = LineSeriesModel;
+
+// node_modules/echarts/lib/chart/helper/labelHelper.js
+function getDefaultLabel(data, dataIndex) {
+ var labelDims = data.mapDimensionsAll("defaultedLabel");
+ var len2 = labelDims.length;
+ if (len2 === 1) {
+ var rawVal = retrieveRawValue(data, dataIndex, labelDims[0]);
+ return rawVal != null ? rawVal + "" : null;
+ } else if (len2) {
+ var vals = [];
+ for (var i = 0; i < labelDims.length; i++) {
+ vals.push(retrieveRawValue(data, dataIndex, labelDims[i]));
+ }
+ return vals.join(" ");
+ }
+}
+function getDefaultInterpolatedLabel(data, interpolatedValue) {
+ var labelDims = data.mapDimensionsAll("defaultedLabel");
+ if (!isArray(interpolatedValue)) {
+ return interpolatedValue + "";
+ }
+ var vals = [];
+ for (var i = 0; i < labelDims.length; i++) {
+ var dimIndex = data.getDimensionIndex(labelDims[i]);
+ if (dimIndex >= 0) {
+ vals.push(interpolatedValue[dimIndex]);
+ }
+ }
+ return vals.join(" ");
+}
+
+// node_modules/echarts/lib/chart/helper/Symbol.js
+var Symbol2 = function(_super) {
+ __extends(Symbol3, _super);
+ function Symbol3(data, idx, seriesScope, opts) {
+ var _this = _super.call(this) || this;
+ _this.updateData(data, idx, seriesScope, opts);
+ return _this;
+ }
+ Symbol3.prototype._createSymbol = function(symbolType, data, idx, symbolSize, keepAspect) {
+ this.removeAll();
+ var symbolPath = createSymbol(symbolType, -1, -1, 2, 2, null, keepAspect);
+ symbolPath.attr({
+ z2: 100,
+ culling: true,
+ scaleX: symbolSize[0] / 2,
+ scaleY: symbolSize[1] / 2
+ });
+ symbolPath.drift = driftSymbol;
+ this._symbolType = symbolType;
+ this.add(symbolPath);
+ };
+ Symbol3.prototype.stopSymbolAnimation = function(toLastFrame) {
+ this.childAt(0).stopAnimation(null, toLastFrame);
+ };
+ Symbol3.prototype.getSymbolType = function() {
+ return this._symbolType;
+ };
+ Symbol3.prototype.getSymbolPath = function() {
+ return this.childAt(0);
+ };
+ Symbol3.prototype.highlight = function() {
+ enterEmphasis(this.childAt(0));
+ };
+ Symbol3.prototype.downplay = function() {
+ leaveEmphasis(this.childAt(0));
+ };
+ Symbol3.prototype.setZ = function(zlevel, z) {
+ var symbolPath = this.childAt(0);
+ symbolPath.zlevel = zlevel;
+ symbolPath.z = z;
+ };
+ Symbol3.prototype.setDraggable = function(draggable, hasCursorOption) {
+ var symbolPath = this.childAt(0);
+ symbolPath.draggable = draggable;
+ symbolPath.cursor = !hasCursorOption && draggable ? "move" : symbolPath.cursor;
+ };
+ Symbol3.prototype.updateData = function(data, idx, seriesScope, opts) {
+ this.silent = false;
+ var symbolType = data.getItemVisual(idx, "symbol") || "circle";
+ var seriesModel = data.hostModel;
+ var symbolSize = Symbol3.getSymbolSize(data, idx);
+ var isInit = symbolType !== this._symbolType;
+ var disableAnimation = opts && opts.disableAnimation;
+ if (isInit) {
+ var keepAspect = data.getItemVisual(idx, "symbolKeepAspect");
+ this._createSymbol(symbolType, data, idx, symbolSize, keepAspect);
+ } else {
+ var symbolPath = this.childAt(0);
+ symbolPath.silent = false;
+ var target = {
+ scaleX: symbolSize[0] / 2,
+ scaleY: symbolSize[1] / 2
+ };
+ disableAnimation ? symbolPath.attr(target) : updateProps(symbolPath, target, seriesModel, idx);
+ saveOldStyle(symbolPath);
+ }
+ this._updateCommon(data, idx, symbolSize, seriesScope, opts);
+ if (isInit) {
+ var symbolPath = this.childAt(0);
+ if (!disableAnimation) {
+ var target = {
+ scaleX: this._sizeX,
+ scaleY: this._sizeY,
+ style: {
+ opacity: symbolPath.style.opacity
+ }
+ };
+ symbolPath.scaleX = symbolPath.scaleY = 0;
+ symbolPath.style.opacity = 0;
+ initProps(symbolPath, target, seriesModel, idx);
+ }
+ }
+ if (disableAnimation) {
+ this.childAt(0).stopAnimation("leave");
+ }
+ };
+ Symbol3.prototype._updateCommon = function(data, idx, symbolSize, seriesScope, opts) {
+ var symbolPath = this.childAt(0);
+ var seriesModel = data.hostModel;
+ var emphasisItemStyle;
+ var blurItemStyle;
+ var selectItemStyle;
+ var focus;
+ var blurScope;
+ var emphasisDisabled;
+ var labelStatesModels;
+ var hoverScale;
+ var cursorStyle;
+ if (seriesScope) {
+ emphasisItemStyle = seriesScope.emphasisItemStyle;
+ blurItemStyle = seriesScope.blurItemStyle;
+ selectItemStyle = seriesScope.selectItemStyle;
+ focus = seriesScope.focus;
+ blurScope = seriesScope.blurScope;
+ labelStatesModels = seriesScope.labelStatesModels;
+ hoverScale = seriesScope.hoverScale;
+ cursorStyle = seriesScope.cursorStyle;
+ emphasisDisabled = seriesScope.emphasisDisabled;
+ }
+ if (!seriesScope || data.hasItemOption) {
+ var itemModel = seriesScope && seriesScope.itemModel ? seriesScope.itemModel : data.getItemModel(idx);
+ var emphasisModel = itemModel.getModel("emphasis");
+ emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle();
+ selectItemStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
+ blurItemStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
+ focus = emphasisModel.get("focus");
+ blurScope = emphasisModel.get("blurScope");
+ emphasisDisabled = emphasisModel.get("disabled");
+ labelStatesModels = getLabelStatesModels(itemModel);
+ hoverScale = emphasisModel.getShallow("scale");
+ cursorStyle = itemModel.getShallow("cursor");
+ }
+ var symbolRotate = data.getItemVisual(idx, "symbolRotate");
+ symbolPath.attr("rotation", (symbolRotate || 0) * Math.PI / 180 || 0);
+ var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize);
+ if (symbolOffset) {
+ symbolPath.x = symbolOffset[0];
+ symbolPath.y = symbolOffset[1];
+ }
+ cursorStyle && symbolPath.attr("cursor", cursorStyle);
+ var symbolStyle = data.getItemVisual(idx, "style");
+ var visualColor = symbolStyle.fill;
+ if (symbolPath instanceof Image_default) {
+ var pathStyle = symbolPath.style;
+ symbolPath.useStyle(extend({
+ image: pathStyle.image,
+ x: pathStyle.x,
+ y: pathStyle.y,
+ width: pathStyle.width,
+ height: pathStyle.height
+ }, symbolStyle));
+ } else {
+ if (symbolPath.__isEmptyBrush) {
+ symbolPath.useStyle(extend({}, symbolStyle));
+ } else {
+ symbolPath.useStyle(symbolStyle);
+ }
+ symbolPath.style.decal = null;
+ symbolPath.setColor(visualColor, opts && opts.symbolInnerColor);
+ symbolPath.style.strokeNoScale = true;
+ }
+ var liftZ = data.getItemVisual(idx, "liftZ");
+ var z2Origin = this._z2;
+ if (liftZ != null) {
+ if (z2Origin == null) {
+ this._z2 = symbolPath.z2;
+ symbolPath.z2 += liftZ;
+ }
+ } else if (z2Origin != null) {
+ symbolPath.z2 = z2Origin;
+ this._z2 = null;
+ }
+ var useNameLabel = opts && opts.useNameLabel;
+ setLabelStyle(symbolPath, labelStatesModels, {
+ labelFetcher: seriesModel,
+ labelDataIndex: idx,
+ defaultText: getLabelDefaultText,
+ inheritColor: visualColor,
+ defaultOpacity: symbolStyle.opacity
+ });
+ function getLabelDefaultText(idx2) {
+ return useNameLabel ? data.getName(idx2) : getDefaultLabel(data, idx2);
+ }
+ this._sizeX = symbolSize[0] / 2;
+ this._sizeY = symbolSize[1] / 2;
+ var emphasisState = symbolPath.ensureState("emphasis");
+ emphasisState.style = emphasisItemStyle;
+ symbolPath.ensureState("select").style = selectItemStyle;
+ symbolPath.ensureState("blur").style = blurItemStyle;
+ var scaleRatio = hoverScale == null || hoverScale === true ? Math.max(1.1, 3 / this._sizeY) : isFinite(hoverScale) && hoverScale > 0 ? +hoverScale : 1;
+ emphasisState.scaleX = this._sizeX * scaleRatio;
+ emphasisState.scaleY = this._sizeY * scaleRatio;
+ this.setSymbolScale(1);
+ toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
+ };
+ Symbol3.prototype.setSymbolScale = function(scale4) {
+ this.scaleX = this.scaleY = scale4;
+ };
+ Symbol3.prototype.fadeOut = function(cb, seriesModel, opt) {
+ var symbolPath = this.childAt(0);
+ var dataIndex = getECData(this).dataIndex;
+ var animationOpt = opt && opt.animation;
+ this.silent = symbolPath.silent = true;
+ if (opt && opt.fadeLabel) {
+ var textContent = symbolPath.getTextContent();
+ if (textContent) {
+ removeElement(textContent, {
+ style: {
+ opacity: 0
+ }
+ }, seriesModel, {
+ dataIndex,
+ removeOpt: animationOpt,
+ cb: function() {
+ symbolPath.removeTextContent();
+ }
+ });
+ }
+ } else {
+ symbolPath.removeTextContent();
+ }
+ removeElement(symbolPath, {
+ style: {
+ opacity: 0
+ },
+ scaleX: 0,
+ scaleY: 0
+ }, seriesModel, {
+ dataIndex,
+ cb,
+ removeOpt: animationOpt
+ });
+ };
+ Symbol3.getSymbolSize = function(data, idx) {
+ return normalizeSymbolSize(data.getItemVisual(idx, "symbolSize"));
+ };
+ return Symbol3;
+}(Group_default);
+function driftSymbol(dx, dy) {
+ this.parent.drift(dx, dy);
+}
+var Symbol_default = Symbol2;
+
+// node_modules/echarts/lib/chart/helper/SymbolDraw.js
+function symbolNeedsDraw(data, point, idx, opt) {
+ return point && !isNaN(point[0]) && !isNaN(point[1]) && !(opt.isIgnore && opt.isIgnore(idx)) && !(opt.clipShape && !opt.clipShape.contain(point[0], point[1])) && data.getItemVisual(idx, "symbol") !== "none";
+}
+function normalizeUpdateOpt(opt) {
+ if (opt != null && !isObject(opt)) {
+ opt = {
+ isIgnore: opt
+ };
+ }
+ return opt || {};
+}
+function makeSeriesScope(data) {
+ var seriesModel = data.hostModel;
+ var emphasisModel = seriesModel.getModel("emphasis");
+ return {
+ emphasisItemStyle: emphasisModel.getModel("itemStyle").getItemStyle(),
+ blurItemStyle: seriesModel.getModel(["blur", "itemStyle"]).getItemStyle(),
+ selectItemStyle: seriesModel.getModel(["select", "itemStyle"]).getItemStyle(),
+ focus: emphasisModel.get("focus"),
+ blurScope: emphasisModel.get("blurScope"),
+ emphasisDisabled: emphasisModel.get("disabled"),
+ hoverScale: emphasisModel.get("scale"),
+ labelStatesModels: getLabelStatesModels(seriesModel),
+ cursorStyle: seriesModel.get("cursor")
+ };
+}
+var SymbolDraw = function() {
+ function SymbolDraw2(SymbolCtor) {
+ this.group = new Group_default();
+ this._SymbolCtor = SymbolCtor || Symbol_default;
+ }
+ SymbolDraw2.prototype.updateData = function(data, opt) {
+ this._progressiveEls = null;
+ opt = normalizeUpdateOpt(opt);
+ var group = this.group;
+ var seriesModel = data.hostModel;
+ var oldData = this._data;
+ var SymbolCtor = this._SymbolCtor;
+ var disableAnimation = opt.disableAnimation;
+ var seriesScope = makeSeriesScope(data);
+ var symbolUpdateOpt = {
+ disableAnimation
+ };
+ var getSymbolPoint = opt.getSymbolPoint || function(idx) {
+ return data.getItemLayout(idx);
+ };
+ if (!oldData) {
+ group.removeAll();
+ }
+ data.diff(oldData).add(function(newIdx) {
+ var point = getSymbolPoint(newIdx);
+ if (symbolNeedsDraw(data, point, newIdx, opt)) {
+ var symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);
+ symbolEl.setPosition(point);
+ data.setItemGraphicEl(newIdx, symbolEl);
+ group.add(symbolEl);
+ }
+ }).update(function(newIdx, oldIdx) {
+ var symbolEl = oldData.getItemGraphicEl(oldIdx);
+ var point = getSymbolPoint(newIdx);
+ if (!symbolNeedsDraw(data, point, newIdx, opt)) {
+ group.remove(symbolEl);
+ return;
+ }
+ var newSymbolType = data.getItemVisual(newIdx, "symbol") || "circle";
+ var oldSymbolType = symbolEl && symbolEl.getSymbolType && symbolEl.getSymbolType();
+ if (!symbolEl || oldSymbolType && oldSymbolType !== newSymbolType) {
+ group.remove(symbolEl);
+ symbolEl = new SymbolCtor(data, newIdx, seriesScope, symbolUpdateOpt);
+ symbolEl.setPosition(point);
+ } else {
+ symbolEl.updateData(data, newIdx, seriesScope, symbolUpdateOpt);
+ var target = {
+ x: point[0],
+ y: point[1]
+ };
+ disableAnimation ? symbolEl.attr(target) : updateProps(symbolEl, target, seriesModel);
+ }
+ group.add(symbolEl);
+ data.setItemGraphicEl(newIdx, symbolEl);
+ }).remove(function(oldIdx) {
+ var el = oldData.getItemGraphicEl(oldIdx);
+ el && el.fadeOut(function() {
+ group.remove(el);
+ }, seriesModel);
+ }).execute();
+ this._getSymbolPoint = getSymbolPoint;
+ this._data = data;
+ };
+ ;
+ SymbolDraw2.prototype.updateLayout = function() {
+ var _this = this;
+ var data = this._data;
+ if (data) {
+ data.eachItemGraphicEl(function(el, idx) {
+ var point = _this._getSymbolPoint(idx);
+ el.setPosition(point);
+ el.markRedraw();
+ });
+ }
+ };
+ ;
+ SymbolDraw2.prototype.incrementalPrepareUpdate = function(data) {
+ this._seriesScope = makeSeriesScope(data);
+ this._data = null;
+ this.group.removeAll();
+ };
+ ;
+ SymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) {
+ this._progressiveEls = [];
+ opt = normalizeUpdateOpt(opt);
+ function updateIncrementalAndHover(el2) {
+ if (!el2.isGroup) {
+ el2.incremental = true;
+ el2.ensureState("emphasis").hoverLayer = true;
+ }
+ }
+ for (var idx = taskParams.start; idx < taskParams.end; idx++) {
+ var point = data.getItemLayout(idx);
+ if (symbolNeedsDraw(data, point, idx, opt)) {
+ var el = new this._SymbolCtor(data, idx, this._seriesScope);
+ el.traverse(updateIncrementalAndHover);
+ el.setPosition(point);
+ this.group.add(el);
+ data.setItemGraphicEl(idx, el);
+ this._progressiveEls.push(el);
+ }
+ }
+ };
+ ;
+ SymbolDraw2.prototype.eachRendered = function(cb) {
+ traverseElements(this._progressiveEls || this.group, cb);
+ };
+ SymbolDraw2.prototype.remove = function(enableAnimation) {
+ var group = this.group;
+ var data = this._data;
+ if (data && enableAnimation) {
+ data.eachItemGraphicEl(function(el) {
+ el.fadeOut(function() {
+ group.remove(el);
+ }, data.hostModel);
+ });
+ } else {
+ group.removeAll();
+ }
+ };
+ ;
+ return SymbolDraw2;
+}();
+var SymbolDraw_default = SymbolDraw;
+
+// node_modules/echarts/lib/chart/line/helper.js
+function prepareDataCoordInfo(coordSys, data, valueOrigin) {
+ var baseAxis = coordSys.getBaseAxis();
+ var valueAxis2 = coordSys.getOtherAxis(baseAxis);
+ var valueStart = getValueStart(valueAxis2, valueOrigin);
+ var baseAxisDim = baseAxis.dim;
+ var valueAxisDim = valueAxis2.dim;
+ var valueDim = data.mapDimension(valueAxisDim);
+ var baseDim = data.mapDimension(baseAxisDim);
+ var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0;
+ var dims = map(coordSys.dimensions, function(coordDim) {
+ return data.mapDimension(coordDim);
+ });
+ var stacked = false;
+ var stackResultDim = data.getCalculationInfo("stackResultDimension");
+ if (isDimensionStacked(data, dims[0])) {
+ stacked = true;
+ dims[0] = stackResultDim;
+ }
+ if (isDimensionStacked(data, dims[1])) {
+ stacked = true;
+ dims[1] = stackResultDim;
+ }
+ return {
+ dataDimsForPoint: dims,
+ valueStart,
+ valueAxisDim,
+ baseAxisDim,
+ stacked: !!stacked,
+ valueDim,
+ baseDim,
+ baseDataOffset,
+ stackedOverDimension: data.getCalculationInfo("stackedOverDimension")
+ };
+}
+function getValueStart(valueAxis2, valueOrigin) {
+ var valueStart = 0;
+ var extent3 = valueAxis2.scale.getExtent();
+ if (valueOrigin === "start") {
+ valueStart = extent3[0];
+ } else if (valueOrigin === "end") {
+ valueStart = extent3[1];
+ } else if (isNumber(valueOrigin) && !isNaN(valueOrigin)) {
+ valueStart = valueOrigin;
+ } else {
+ if (extent3[0] > 0) {
+ valueStart = extent3[0];
+ } else if (extent3[1] < 0) {
+ valueStart = extent3[1];
+ }
+ }
+ return valueStart;
+}
+function getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {
+ var value = NaN;
+ if (dataCoordInfo.stacked) {
+ value = data.get(data.getCalculationInfo("stackedOverDimension"), idx);
+ }
+ if (isNaN(value)) {
+ value = dataCoordInfo.valueStart;
+ }
+ var baseDataOffset = dataCoordInfo.baseDataOffset;
+ var stackedData = [];
+ stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);
+ stackedData[1 - baseDataOffset] = value;
+ return coordSys.dataToPoint(stackedData);
+}
+
+// node_modules/echarts/lib/chart/line/lineAnimationDiff.js
+function diffData(oldData, newData) {
+ var diffResult = [];
+ newData.diff(oldData).add(function(idx) {
+ diffResult.push({
+ cmd: "+",
+ idx
+ });
+ }).update(function(newIdx, oldIdx) {
+ diffResult.push({
+ cmd: "=",
+ idx: oldIdx,
+ idx1: newIdx
+ });
+ }).remove(function(idx) {
+ diffResult.push({
+ cmd: "-",
+ idx
+ });
+ }).execute();
+ return diffResult;
+}
+function lineAnimationDiff(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {
+ var diff = diffData(oldData, newData);
+ var currPoints = [];
+ var nextPoints = [];
+ var currStackedPoints = [];
+ var nextStackedPoints = [];
+ var status = [];
+ var sortedIndices = [];
+ var rawIndices = [];
+ var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);
+ var oldPoints = oldData.getLayout("points") || [];
+ var newPoints = newData.getLayout("points") || [];
+ for (var i = 0; i < diff.length; i++) {
+ var diffItem = diff[i];
+ var pointAdded = true;
+ var oldIdx2 = void 0;
+ var newIdx2 = void 0;
+ switch (diffItem.cmd) {
+ case "=":
+ oldIdx2 = diffItem.idx * 2;
+ newIdx2 = diffItem.idx1 * 2;
+ var currentX = oldPoints[oldIdx2];
+ var currentY = oldPoints[oldIdx2 + 1];
+ var nextX = newPoints[newIdx2];
+ var nextY = newPoints[newIdx2 + 1];
+ if (isNaN(currentX) || isNaN(currentY)) {
+ currentX = nextX;
+ currentY = nextY;
+ }
+ currPoints.push(currentX, currentY);
+ nextPoints.push(nextX, nextY);
+ currStackedPoints.push(oldStackedOnPoints[oldIdx2], oldStackedOnPoints[oldIdx2 + 1]);
+ nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);
+ rawIndices.push(newData.getRawIndex(diffItem.idx1));
+ break;
+ case "+":
+ var newIdx = diffItem.idx;
+ var newDataDimsForPoint = newDataOldCoordInfo.dataDimsForPoint;
+ var oldPt = oldCoordSys.dataToPoint([newData.get(newDataDimsForPoint[0], newIdx), newData.get(newDataDimsForPoint[1], newIdx)]);
+ newIdx2 = newIdx * 2;
+ currPoints.push(oldPt[0], oldPt[1]);
+ nextPoints.push(newPoints[newIdx2], newPoints[newIdx2 + 1]);
+ var stackedOnPoint = getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, newIdx);
+ currStackedPoints.push(stackedOnPoint[0], stackedOnPoint[1]);
+ nextStackedPoints.push(newStackedOnPoints[newIdx2], newStackedOnPoints[newIdx2 + 1]);
+ rawIndices.push(newData.getRawIndex(newIdx));
+ break;
+ case "-":
+ pointAdded = false;
+ }
+ if (pointAdded) {
+ status.push(diffItem);
+ sortedIndices.push(sortedIndices.length);
+ }
+ }
+ sortedIndices.sort(function(a, b) {
+ return rawIndices[a] - rawIndices[b];
+ });
+ var len2 = currPoints.length;
+ var sortedCurrPoints = createFloat32Array(len2);
+ var sortedNextPoints = createFloat32Array(len2);
+ var sortedCurrStackedPoints = createFloat32Array(len2);
+ var sortedNextStackedPoints = createFloat32Array(len2);
+ var sortedStatus = [];
+ for (var i = 0; i < sortedIndices.length; i++) {
+ var idx = sortedIndices[i];
+ var i2 = i * 2;
+ var idx2 = idx * 2;
+ sortedCurrPoints[i2] = currPoints[idx2];
+ sortedCurrPoints[i2 + 1] = currPoints[idx2 + 1];
+ sortedNextPoints[i2] = nextPoints[idx2];
+ sortedNextPoints[i2 + 1] = nextPoints[idx2 + 1];
+ sortedCurrStackedPoints[i2] = currStackedPoints[idx2];
+ sortedCurrStackedPoints[i2 + 1] = currStackedPoints[idx2 + 1];
+ sortedNextStackedPoints[i2] = nextStackedPoints[idx2];
+ sortedNextStackedPoints[i2 + 1] = nextStackedPoints[idx2 + 1];
+ sortedStatus[i] = status[idx];
+ }
+ return {
+ current: sortedCurrPoints,
+ next: sortedNextPoints,
+ stackedOnCurrent: sortedCurrStackedPoints,
+ stackedOnNext: sortedNextStackedPoints,
+ status: sortedStatus
+ };
+}
+
+// node_modules/echarts/lib/chart/line/poly.js
+var mathMin6 = Math.min;
+var mathMax6 = Math.max;
+function isPointNull(x, y) {
+ return isNaN(x) || isNaN(y);
+}
+function drawSegment(ctx, points4, start2, segLen, allLen, dir3, smooth, smoothMonotone, connectNulls) {
+ var prevX;
+ var prevY;
+ var cpx0;
+ var cpy0;
+ var cpx1;
+ var cpy1;
+ var idx = start2;
+ var k = 0;
+ for (; k < segLen; k++) {
+ var x = points4[idx * 2];
+ var y = points4[idx * 2 + 1];
+ if (idx >= allLen || idx < 0) {
+ break;
+ }
+ if (isPointNull(x, y)) {
+ if (connectNulls) {
+ idx += dir3;
+ continue;
+ }
+ break;
+ }
+ if (idx === start2) {
+ ctx[dir3 > 0 ? "moveTo" : "lineTo"](x, y);
+ cpx0 = x;
+ cpy0 = y;
+ } else {
+ var dx = x - prevX;
+ var dy = y - prevY;
+ if (dx * dx + dy * dy < 0.5) {
+ idx += dir3;
+ continue;
+ }
+ if (smooth > 0) {
+ var nextIdx = idx + dir3;
+ var nextX = points4[nextIdx * 2];
+ var nextY = points4[nextIdx * 2 + 1];
+ while (nextX === x && nextY === y && k < segLen) {
+ k++;
+ nextIdx += dir3;
+ idx += dir3;
+ nextX = points4[nextIdx * 2];
+ nextY = points4[nextIdx * 2 + 1];
+ x = points4[idx * 2];
+ y = points4[idx * 2 + 1];
+ dx = x - prevX;
+ dy = y - prevY;
+ }
+ var tmpK = k + 1;
+ if (connectNulls) {
+ while (isPointNull(nextX, nextY) && tmpK < segLen) {
+ tmpK++;
+ nextIdx += dir3;
+ nextX = points4[nextIdx * 2];
+ nextY = points4[nextIdx * 2 + 1];
+ }
+ }
+ var ratioNextSeg = 0.5;
+ var vx = 0;
+ var vy = 0;
+ var nextCpx0 = void 0;
+ var nextCpy0 = void 0;
+ if (tmpK >= segLen || isPointNull(nextX, nextY)) {
+ cpx1 = x;
+ cpy1 = y;
+ } else {
+ vx = nextX - prevX;
+ vy = nextY - prevY;
+ var dx0 = x - prevX;
+ var dx1 = nextX - x;
+ var dy0 = y - prevY;
+ var dy1 = nextY - y;
+ var lenPrevSeg = void 0;
+ var lenNextSeg = void 0;
+ if (smoothMonotone === "x") {
+ lenPrevSeg = Math.abs(dx0);
+ lenNextSeg = Math.abs(dx1);
+ var dir_1 = vx > 0 ? 1 : -1;
+ cpx1 = x - dir_1 * lenPrevSeg * smooth;
+ cpy1 = y;
+ nextCpx0 = x + dir_1 * lenNextSeg * smooth;
+ nextCpy0 = y;
+ } else if (smoothMonotone === "y") {
+ lenPrevSeg = Math.abs(dy0);
+ lenNextSeg = Math.abs(dy1);
+ var dir_2 = vy > 0 ? 1 : -1;
+ cpx1 = x;
+ cpy1 = y - dir_2 * lenPrevSeg * smooth;
+ nextCpx0 = x;
+ nextCpy0 = y + dir_2 * lenNextSeg * smooth;
+ } else {
+ lenPrevSeg = Math.sqrt(dx0 * dx0 + dy0 * dy0);
+ lenNextSeg = Math.sqrt(dx1 * dx1 + dy1 * dy1);
+ ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);
+ cpx1 = x - vx * smooth * (1 - ratioNextSeg);
+ cpy1 = y - vy * smooth * (1 - ratioNextSeg);
+ nextCpx0 = x + vx * smooth * ratioNextSeg;
+ nextCpy0 = y + vy * smooth * ratioNextSeg;
+ nextCpx0 = mathMin6(nextCpx0, mathMax6(nextX, x));
+ nextCpy0 = mathMin6(nextCpy0, mathMax6(nextY, y));
+ nextCpx0 = mathMax6(nextCpx0, mathMin6(nextX, x));
+ nextCpy0 = mathMax6(nextCpy0, mathMin6(nextY, y));
+ vx = nextCpx0 - x;
+ vy = nextCpy0 - y;
+ cpx1 = x - vx * lenPrevSeg / lenNextSeg;
+ cpy1 = y - vy * lenPrevSeg / lenNextSeg;
+ cpx1 = mathMin6(cpx1, mathMax6(prevX, x));
+ cpy1 = mathMin6(cpy1, mathMax6(prevY, y));
+ cpx1 = mathMax6(cpx1, mathMin6(prevX, x));
+ cpy1 = mathMax6(cpy1, mathMin6(prevY, y));
+ vx = x - cpx1;
+ vy = y - cpy1;
+ nextCpx0 = x + vx * lenNextSeg / lenPrevSeg;
+ nextCpy0 = y + vy * lenNextSeg / lenPrevSeg;
+ }
+ }
+ ctx.bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y);
+ cpx0 = nextCpx0;
+ cpy0 = nextCpy0;
+ } else {
+ ctx.lineTo(x, y);
+ }
+ }
+ prevX = x;
+ prevY = y;
+ idx += dir3;
+ }
+ return k;
+}
+var ECPolylineShape = function() {
+ function ECPolylineShape2() {
+ this.smooth = 0;
+ this.smoothConstraint = true;
+ }
+ return ECPolylineShape2;
+}();
+var ECPolyline = function(_super) {
+ __extends(ECPolyline2, _super);
+ function ECPolyline2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "ec-polyline";
+ return _this;
+ }
+ ECPolyline2.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ ECPolyline2.prototype.getDefaultShape = function() {
+ return new ECPolylineShape();
+ };
+ ECPolyline2.prototype.buildPath = function(ctx, shape) {
+ var points4 = shape.points;
+ var i = 0;
+ var len2 = points4.length / 2;
+ if (shape.connectNulls) {
+ for (; len2 > 0; len2--) {
+ if (!isPointNull(points4[len2 * 2 - 2], points4[len2 * 2 - 1])) {
+ break;
+ }
+ }
+ for (; i < len2; i++) {
+ if (!isPointNull(points4[i * 2], points4[i * 2 + 1])) {
+ break;
+ }
+ }
+ }
+ while (i < len2) {
+ i += drawSegment(ctx, points4, i, len2, len2, 1, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;
+ }
+ };
+ ECPolyline2.prototype.getPointOn = function(xOrY, dim) {
+ if (!this.path) {
+ this.createPathProxy();
+ this.buildPath(this.path, this.shape);
+ }
+ var path = this.path;
+ var data = path.data;
+ var CMD6 = PathProxy_default.CMD;
+ var x0;
+ var y0;
+ var isDimX = dim === "x";
+ var roots2 = [];
+ for (var i = 0; i < data.length; ) {
+ var cmd = data[i++];
+ var x = void 0;
+ var y = void 0;
+ var x2 = void 0;
+ var y2 = void 0;
+ var x3 = void 0;
+ var y3 = void 0;
+ var t = void 0;
+ switch (cmd) {
+ case CMD6.M:
+ x0 = data[i++];
+ y0 = data[i++];
+ break;
+ case CMD6.L:
+ x = data[i++];
+ y = data[i++];
+ t = isDimX ? (xOrY - x0) / (x - x0) : (xOrY - y0) / (y - y0);
+ if (t <= 1 && t >= 0) {
+ var val = isDimX ? (y - y0) * t + y0 : (x - x0) * t + x0;
+ return isDimX ? [xOrY, val] : [val, xOrY];
+ }
+ x0 = x;
+ y0 = y;
+ break;
+ case CMD6.C:
+ x = data[i++];
+ y = data[i++];
+ x2 = data[i++];
+ y2 = data[i++];
+ x3 = data[i++];
+ y3 = data[i++];
+ var nRoot = isDimX ? cubicRootAt(x0, x, x2, x3, xOrY, roots2) : cubicRootAt(y0, y, y2, y3, xOrY, roots2);
+ if (nRoot > 0) {
+ for (var i_1 = 0; i_1 < nRoot; i_1++) {
+ var t_1 = roots2[i_1];
+ if (t_1 <= 1 && t_1 >= 0) {
+ var val = isDimX ? cubicAt(y0, y, y2, y3, t_1) : cubicAt(x0, x, x2, x3, t_1);
+ return isDimX ? [xOrY, val] : [val, xOrY];
+ }
+ }
+ }
+ x0 = x3;
+ y0 = y3;
+ break;
+ }
+ }
+ };
+ return ECPolyline2;
+}(Path_default);
+var ECPolygonShape = function(_super) {
+ __extends(ECPolygonShape2, _super);
+ function ECPolygonShape2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return ECPolygonShape2;
+}(ECPolylineShape);
+var ECPolygon = function(_super) {
+ __extends(ECPolygon2, _super);
+ function ECPolygon2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "ec-polygon";
+ return _this;
+ }
+ ECPolygon2.prototype.getDefaultShape = function() {
+ return new ECPolygonShape();
+ };
+ ECPolygon2.prototype.buildPath = function(ctx, shape) {
+ var points4 = shape.points;
+ var stackedOnPoints = shape.stackedOnPoints;
+ var i = 0;
+ var len2 = points4.length / 2;
+ var smoothMonotone = shape.smoothMonotone;
+ if (shape.connectNulls) {
+ for (; len2 > 0; len2--) {
+ if (!isPointNull(points4[len2 * 2 - 2], points4[len2 * 2 - 1])) {
+ break;
+ }
+ }
+ for (; i < len2; i++) {
+ if (!isPointNull(points4[i * 2], points4[i * 2 + 1])) {
+ break;
+ }
+ }
+ }
+ while (i < len2) {
+ var k = drawSegment(ctx, points4, i, len2, len2, 1, shape.smooth, smoothMonotone, shape.connectNulls);
+ drawSegment(ctx, stackedOnPoints, i + k - 1, k, len2, -1, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);
+ i += k + 1;
+ ctx.closePath();
+ }
+ };
+ return ECPolygon2;
+}(Path_default);
+
+// node_modules/echarts/lib/chart/helper/createClipPathFromCoordSys.js
+function createGridClipPath(cartesian, hasAnimation, seriesModel, done, during) {
+ var rect = cartesian.getArea();
+ var x = rect.x;
+ var y = rect.y;
+ var width = rect.width;
+ var height = rect.height;
+ var lineWidth = seriesModel.get(["lineStyle", "width"]) || 0;
+ x -= lineWidth / 2;
+ y -= lineWidth / 2;
+ width += lineWidth;
+ height += lineWidth;
+ width = Math.ceil(width);
+ if (x !== Math.floor(x)) {
+ x = Math.floor(x);
+ width++;
+ }
+ var clipPath = new Rect_default({
+ shape: {
+ x,
+ y,
+ width,
+ height
+ }
+ });
+ if (hasAnimation) {
+ var baseAxis = cartesian.getBaseAxis();
+ var isHorizontal = baseAxis.isHorizontal();
+ var isAxisInversed = baseAxis.inverse;
+ if (isHorizontal) {
+ if (isAxisInversed) {
+ clipPath.shape.x += width;
+ }
+ clipPath.shape.width = 0;
+ } else {
+ if (!isAxisInversed) {
+ clipPath.shape.y += height;
+ }
+ clipPath.shape.height = 0;
+ }
+ var duringCb = isFunction(during) ? function(percent) {
+ during(percent, clipPath);
+ } : null;
+ initProps(clipPath, {
+ shape: {
+ width,
+ height,
+ x,
+ y
+ }
+ }, seriesModel, null, done, duringCb);
+ }
+ return clipPath;
+}
+function createPolarClipPath(polar, hasAnimation, seriesModel) {
+ var sectorArea = polar.getArea();
+ var r0 = round(sectorArea.r0, 1);
+ var r = round(sectorArea.r, 1);
+ var clipPath = new Sector_default({
+ shape: {
+ cx: round(polar.cx, 1),
+ cy: round(polar.cy, 1),
+ r0,
+ r,
+ startAngle: sectorArea.startAngle,
+ endAngle: sectorArea.endAngle,
+ clockwise: sectorArea.clockwise
+ }
+ });
+ if (hasAnimation) {
+ var isRadial = polar.getBaseAxis().dim === "angle";
+ if (isRadial) {
+ clipPath.shape.endAngle = sectorArea.startAngle;
+ } else {
+ clipPath.shape.r = r0;
+ }
+ initProps(clipPath, {
+ shape: {
+ endAngle: sectorArea.endAngle,
+ r
+ }
+ }, seriesModel);
+ }
+ return clipPath;
+}
+function createClipPath(coordSys, hasAnimation, seriesModel, done, during) {
+ if (!coordSys) {
+ return null;
+ } else if (coordSys.type === "polar") {
+ return createPolarClipPath(coordSys, hasAnimation, seriesModel);
+ } else if (coordSys.type === "cartesian2d") {
+ return createGridClipPath(coordSys, hasAnimation, seriesModel, done, during);
+ }
+ return null;
+}
+
+// node_modules/echarts/lib/coord/CoordinateSystem.js
+function isCoordinateSystemType(coordSys, type) {
+ return coordSys.type === type;
+}
+
+// node_modules/echarts/lib/chart/line/LineView.js
+function isPointsSame(points1, points22) {
+ if (points1.length !== points22.length) {
+ return;
+ }
+ for (var i = 0; i < points1.length; i++) {
+ if (points1[i] !== points22[i]) {
+ return;
+ }
+ }
+ return true;
+}
+function bboxFromPoints(points4) {
+ var minX = Infinity;
+ var minY = Infinity;
+ var maxX = -Infinity;
+ var maxY = -Infinity;
+ for (var i = 0; i < points4.length; ) {
+ var x = points4[i++];
+ var y = points4[i++];
+ if (!isNaN(x)) {
+ minX = Math.min(x, minX);
+ maxX = Math.max(x, maxX);
+ }
+ if (!isNaN(y)) {
+ minY = Math.min(y, minY);
+ maxY = Math.max(y, maxY);
+ }
+ }
+ return [[minX, minY], [maxX, maxY]];
+}
+function getBoundingDiff(points1, points22) {
+ var _a2 = bboxFromPoints(points1), min1 = _a2[0], max1 = _a2[1];
+ var _b2 = bboxFromPoints(points22), min23 = _b2[0], max23 = _b2[1];
+ return Math.max(Math.abs(min1[0] - min23[0]), Math.abs(min1[1] - min23[1]), Math.abs(max1[0] - max23[0]), Math.abs(max1[1] - max23[1]));
+}
+function getSmooth(smooth) {
+ return isNumber(smooth) ? smooth : smooth ? 0.5 : 0;
+}
+function getStackedOnPoints(coordSys, data, dataCoordInfo) {
+ if (!dataCoordInfo.valueDim) {
+ return [];
+ }
+ var len2 = data.count();
+ var points4 = createFloat32Array(len2 * 2);
+ for (var idx = 0; idx < len2; idx++) {
+ var pt = getStackedOnPoint(dataCoordInfo, coordSys, data, idx);
+ points4[idx * 2] = pt[0];
+ points4[idx * 2 + 1] = pt[1];
+ }
+ return points4;
+}
+function turnPointsIntoStep(points4, basePoints, coordSys, stepTurnAt, connectNulls) {
+ var baseAxis = coordSys.getBaseAxis();
+ var baseIndex = baseAxis.dim === "x" || baseAxis.dim === "radius" ? 0 : 1;
+ var stepPoints = [];
+ var i = 0;
+ var stepPt = [];
+ var pt = [];
+ var nextPt = [];
+ var filteredPoints = [];
+ if (connectNulls) {
+ for (i = 0; i < points4.length; i += 2) {
+ var reference = basePoints || points4;
+ if (!isNaN(reference[i]) && !isNaN(reference[i + 1])) {
+ filteredPoints.push(points4[i], points4[i + 1]);
+ }
+ }
+ points4 = filteredPoints;
+ }
+ for (i = 0; i < points4.length - 2; i += 2) {
+ nextPt[0] = points4[i + 2];
+ nextPt[1] = points4[i + 3];
+ pt[0] = points4[i];
+ pt[1] = points4[i + 1];
+ stepPoints.push(pt[0], pt[1]);
+ switch (stepTurnAt) {
+ case "end":
+ stepPt[baseIndex] = nextPt[baseIndex];
+ stepPt[1 - baseIndex] = pt[1 - baseIndex];
+ stepPoints.push(stepPt[0], stepPt[1]);
+ break;
+ case "middle":
+ var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;
+ var stepPt2 = [];
+ stepPt[baseIndex] = stepPt2[baseIndex] = middle;
+ stepPt[1 - baseIndex] = pt[1 - baseIndex];
+ stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];
+ stepPoints.push(stepPt[0], stepPt[1]);
+ stepPoints.push(stepPt2[0], stepPt2[1]);
+ break;
+ default:
+ stepPt[baseIndex] = pt[baseIndex];
+ stepPt[1 - baseIndex] = nextPt[1 - baseIndex];
+ stepPoints.push(stepPt[0], stepPt[1]);
+ }
+ }
+ stepPoints.push(points4[i++], points4[i++]);
+ return stepPoints;
+}
+function clipColorStops(colorStops, maxSize) {
+ var newColorStops = [];
+ var len2 = colorStops.length;
+ var prevOutOfRangeColorStop;
+ var prevInRangeColorStop;
+ function lerpStop(stop0, stop1, clippedCoord) {
+ var coord0 = stop0.coord;
+ var p = (clippedCoord - coord0) / (stop1.coord - coord0);
+ var color = lerp2(p, [stop0.color, stop1.color]);
+ return {
+ coord: clippedCoord,
+ color
+ };
+ }
+ for (var i = 0; i < len2; i++) {
+ var stop_1 = colorStops[i];
+ var coord = stop_1.coord;
+ if (coord < 0) {
+ prevOutOfRangeColorStop = stop_1;
+ } else if (coord > maxSize) {
+ if (prevInRangeColorStop) {
+ newColorStops.push(lerpStop(prevInRangeColorStop, stop_1, maxSize));
+ } else if (prevOutOfRangeColorStop) {
+ newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0), lerpStop(prevOutOfRangeColorStop, stop_1, maxSize));
+ }
+ break;
+ } else {
+ if (prevOutOfRangeColorStop) {
+ newColorStops.push(lerpStop(prevOutOfRangeColorStop, stop_1, 0));
+ prevOutOfRangeColorStop = null;
+ }
+ newColorStops.push(stop_1);
+ prevInRangeColorStop = stop_1;
+ }
+ }
+ return newColorStops;
+}
+function getVisualGradient(data, coordSys, api) {
+ var visualMetaList = data.getVisual("visualMeta");
+ if (!visualMetaList || !visualMetaList.length || !data.count()) {
+ return;
+ }
+ if (coordSys.type !== "cartesian2d") {
+ if (true) {
+ console.warn("Visual map on line style is only supported on cartesian2d.");
+ }
+ return;
+ }
+ var coordDim;
+ var visualMeta;
+ for (var i = visualMetaList.length - 1; i >= 0; i--) {
+ var dimInfo = data.getDimensionInfo(visualMetaList[i].dimension);
+ coordDim = dimInfo && dimInfo.coordDim;
+ if (coordDim === "x" || coordDim === "y") {
+ visualMeta = visualMetaList[i];
+ break;
+ }
+ }
+ if (!visualMeta) {
+ if (true) {
+ console.warn("Visual map on line style only support x or y dimension.");
+ }
+ return;
+ }
+ var axis = coordSys.getAxis(coordDim);
+ var colorStops = map(visualMeta.stops, function(stop2) {
+ return {
+ coord: axis.toGlobalCoord(axis.dataToCoord(stop2.value)),
+ color: stop2.color
+ };
+ });
+ var stopLen = colorStops.length;
+ var outerColors = visualMeta.outerColors.slice();
+ if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {
+ colorStops.reverse();
+ outerColors.reverse();
+ }
+ var colorStopsInRange = clipColorStops(colorStops, coordDim === "x" ? api.getWidth() : api.getHeight());
+ var inRangeStopLen = colorStopsInRange.length;
+ if (!inRangeStopLen && stopLen) {
+ return colorStops[0].coord < 0 ? outerColors[1] ? outerColors[1] : colorStops[stopLen - 1].color : outerColors[0] ? outerColors[0] : colorStops[0].color;
+ }
+ var tinyExtent = 10;
+ var minCoord = colorStopsInRange[0].coord - tinyExtent;
+ var maxCoord = colorStopsInRange[inRangeStopLen - 1].coord + tinyExtent;
+ var coordSpan = maxCoord - minCoord;
+ if (coordSpan < 1e-3) {
+ return "transparent";
+ }
+ each(colorStopsInRange, function(stop2) {
+ stop2.offset = (stop2.coord - minCoord) / coordSpan;
+ });
+ colorStopsInRange.push({
+ offset: inRangeStopLen ? colorStopsInRange[inRangeStopLen - 1].offset : 0.5,
+ color: outerColors[1] || "transparent"
+ });
+ colorStopsInRange.unshift({
+ offset: inRangeStopLen ? colorStopsInRange[0].offset : 0.5,
+ color: outerColors[0] || "transparent"
+ });
+ var gradient = new LinearGradient_default(0, 0, 0, 0, colorStopsInRange, true);
+ gradient[coordDim] = minCoord;
+ gradient[coordDim + "2"] = maxCoord;
+ return gradient;
+}
+function getIsIgnoreFunc(seriesModel, data, coordSys) {
+ var showAllSymbol = seriesModel.get("showAllSymbol");
+ var isAuto = showAllSymbol === "auto";
+ if (showAllSymbol && !isAuto) {
+ return;
+ }
+ var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0];
+ if (!categoryAxis2) {
+ return;
+ }
+ if (isAuto && canShowAllSymbolForCategory(categoryAxis2, data)) {
+ return;
+ }
+ var categoryDataDim = data.mapDimension(categoryAxis2.dim);
+ var labelMap = {};
+ each(categoryAxis2.getViewLabels(), function(labelItem) {
+ var ordinalNumber = categoryAxis2.scale.getRawOrdinalNumber(labelItem.tickValue);
+ labelMap[ordinalNumber] = 1;
+ });
+ return function(dataIndex) {
+ return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));
+ };
+}
+function canShowAllSymbolForCategory(categoryAxis2, data) {
+ var axisExtent = categoryAxis2.getExtent();
+ var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis2.scale.count();
+ isNaN(availSize) && (availSize = 0);
+ var dataLen = data.count();
+ var step = Math.max(1, Math.round(dataLen / 5));
+ for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {
+ if (Symbol_default.getSymbolSize(
+ data,
+ dataIndex
+ )[categoryAxis2.isHorizontal() ? 1 : 0] * 1.5 > availSize) {
+ return false;
+ }
+ }
+ return true;
+}
+function isPointNull2(x, y) {
+ return isNaN(x) || isNaN(y);
+}
+function getLastIndexNotNull(points4) {
+ var len2 = points4.length / 2;
+ for (; len2 > 0; len2--) {
+ if (!isPointNull2(points4[len2 * 2 - 2], points4[len2 * 2 - 1])) {
+ break;
+ }
+ }
+ return len2 - 1;
+}
+function getPointAtIndex(points4, idx) {
+ return [points4[idx * 2], points4[idx * 2 + 1]];
+}
+function getIndexRange(points4, xOrY, dim) {
+ var len2 = points4.length / 2;
+ var dimIdx = dim === "x" ? 0 : 1;
+ var a;
+ var b;
+ var prevIndex = 0;
+ var nextIndex = -1;
+ for (var i = 0; i < len2; i++) {
+ b = points4[i * 2 + dimIdx];
+ if (isNaN(b) || isNaN(points4[i * 2 + 1 - dimIdx])) {
+ continue;
+ }
+ if (i === 0) {
+ a = b;
+ continue;
+ }
+ if (a <= xOrY && b >= xOrY || a >= xOrY && b <= xOrY) {
+ nextIndex = i;
+ break;
+ }
+ prevIndex = i;
+ a = b;
+ }
+ return {
+ range: [prevIndex, nextIndex],
+ t: (xOrY - a) / (b - a)
+ };
+}
+function anyStateShowEndLabel(seriesModel) {
+ if (seriesModel.get(["endLabel", "show"])) {
+ return true;
+ }
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ if (seriesModel.get([SPECIAL_STATES[i], "endLabel", "show"])) {
+ return true;
+ }
+ }
+ return false;
+}
+function createLineClipPath(lineView, coordSys, hasAnimation, seriesModel) {
+ if (isCoordinateSystemType(coordSys, "cartesian2d")) {
+ var endLabelModel_1 = seriesModel.getModel("endLabel");
+ var valueAnimation_1 = endLabelModel_1.get("valueAnimation");
+ var data_1 = seriesModel.getData();
+ var labelAnimationRecord_1 = {
+ lastFrameIndex: 0
+ };
+ var during = anyStateShowEndLabel(seriesModel) ? function(percent, clipRect) {
+ lineView._endLabelOnDuring(percent, clipRect, data_1, labelAnimationRecord_1, valueAnimation_1, endLabelModel_1, coordSys);
+ } : null;
+ var isHorizontal = coordSys.getBaseAxis().isHorizontal();
+ var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel, function() {
+ var endLabel = lineView._endLabel;
+ if (endLabel && hasAnimation) {
+ if (labelAnimationRecord_1.originalX != null) {
+ endLabel.attr({
+ x: labelAnimationRecord_1.originalX,
+ y: labelAnimationRecord_1.originalY
+ });
+ }
+ }
+ }, during);
+ if (!seriesModel.get("clip", true)) {
+ var rectShape = clipPath.shape;
+ var expandSize = Math.max(rectShape.width, rectShape.height);
+ if (isHorizontal) {
+ rectShape.y -= expandSize;
+ rectShape.height += expandSize * 2;
+ } else {
+ rectShape.x -= expandSize;
+ rectShape.width += expandSize * 2;
+ }
+ }
+ if (during) {
+ during(1, clipPath);
+ }
+ return clipPath;
+ } else {
+ if (true) {
+ if (seriesModel.get(["endLabel", "show"])) {
+ console.warn("endLabel is not supported for lines in polar systems.");
+ }
+ }
+ return createPolarClipPath(coordSys, hasAnimation, seriesModel);
+ }
+}
+function getEndLabelStateSpecified(endLabelModel, coordSys) {
+ var baseAxis = coordSys.getBaseAxis();
+ var isHorizontal = baseAxis.isHorizontal();
+ var isBaseInversed = baseAxis.inverse;
+ var align = isHorizontal ? isBaseInversed ? "right" : "left" : "center";
+ var verticalAlign = isHorizontal ? "middle" : isBaseInversed ? "top" : "bottom";
+ return {
+ normal: {
+ align: endLabelModel.get("align") || align,
+ verticalAlign: endLabelModel.get("verticalAlign") || verticalAlign
+ }
+ };
+}
+var LineView = function(_super) {
+ __extends(LineView2, _super);
+ function LineView2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ LineView2.prototype.init = function() {
+ var lineGroup = new Group_default();
+ var symbolDraw = new SymbolDraw_default();
+ this.group.add(symbolDraw.group);
+ this._symbolDraw = symbolDraw;
+ this._lineGroup = lineGroup;
+ this._changePolyState = bind(this._changePolyState, this);
+ };
+ LineView2.prototype.render = function(seriesModel, ecModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ var group = this.group;
+ var data = seriesModel.getData();
+ var lineStyleModel = seriesModel.getModel("lineStyle");
+ var areaStyleModel = seriesModel.getModel("areaStyle");
+ var points4 = data.getLayout("points") || [];
+ var isCoordSysPolar = coordSys.type === "polar";
+ var prevCoordSys = this._coordSys;
+ var symbolDraw = this._symbolDraw;
+ var polyline = this._polyline;
+ var polygon = this._polygon;
+ var lineGroup = this._lineGroup;
+ var hasAnimation = !ecModel.ssr && seriesModel.get("animation");
+ var isAreaChart = !areaStyleModel.isEmpty();
+ var valueOrigin = areaStyleModel.get("origin");
+ var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);
+ var stackedOnPoints = isAreaChart && getStackedOnPoints(coordSys, data, dataCoordInfo);
+ var showSymbol = seriesModel.get("showSymbol");
+ var connectNulls = seriesModel.get("connectNulls");
+ var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys);
+ var oldData = this._data;
+ oldData && oldData.eachItemGraphicEl(function(el, idx) {
+ if (el.__temp) {
+ group.remove(el);
+ oldData.setItemGraphicEl(idx, null);
+ }
+ });
+ if (!showSymbol) {
+ symbolDraw.remove();
+ }
+ group.add(lineGroup);
+ var step = !isCoordSysPolar ? seriesModel.get("step") : false;
+ var clipShapeForSymbol;
+ if (coordSys && coordSys.getArea && seriesModel.get("clip", true)) {
+ clipShapeForSymbol = coordSys.getArea();
+ if (clipShapeForSymbol.width != null) {
+ clipShapeForSymbol.x -= 0.1;
+ clipShapeForSymbol.y -= 0.1;
+ clipShapeForSymbol.width += 0.2;
+ clipShapeForSymbol.height += 0.2;
+ } else if (clipShapeForSymbol.r0) {
+ clipShapeForSymbol.r0 -= 0.5;
+ clipShapeForSymbol.r += 0.5;
+ }
+ }
+ this._clipShapeForSymbol = clipShapeForSymbol;
+ var visualColor = getVisualGradient(data, coordSys, api) || data.getVisual("style")[data.getVisual("drawType")];
+ if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {
+ showSymbol && symbolDraw.updateData(data, {
+ isIgnore: isIgnoreFunc,
+ clipShape: clipShapeForSymbol,
+ disableAnimation: true,
+ getSymbolPoint: function(idx) {
+ return [points4[idx * 2], points4[idx * 2 + 1]];
+ }
+ });
+ hasAnimation && this._initSymbolLabelAnimation(data, coordSys, clipShapeForSymbol);
+ if (step) {
+ if (stackedOnPoints) {
+ stackedOnPoints = turnPointsIntoStep(stackedOnPoints, points4, coordSys, step, connectNulls);
+ }
+ points4 = turnPointsIntoStep(points4, null, coordSys, step, connectNulls);
+ }
+ polyline = this._newPolyline(points4);
+ if (isAreaChart) {
+ polygon = this._newPolygon(points4, stackedOnPoints);
+ } else if (polygon) {
+ lineGroup.remove(polygon);
+ polygon = this._polygon = null;
+ }
+ if (!isCoordSysPolar) {
+ this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));
+ }
+ lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));
+ } else {
+ if (isAreaChart && !polygon) {
+ polygon = this._newPolygon(points4, stackedOnPoints);
+ } else if (polygon && !isAreaChart) {
+ lineGroup.remove(polygon);
+ polygon = this._polygon = null;
+ }
+ if (!isCoordSysPolar) {
+ this._initOrUpdateEndLabel(seriesModel, coordSys, convertToColorString(visualColor));
+ }
+ var oldClipPath = lineGroup.getClipPath();
+ if (oldClipPath) {
+ var newClipPath = createLineClipPath(this, coordSys, false, seriesModel);
+ initProps(oldClipPath, {
+ shape: newClipPath.shape
+ }, seriesModel);
+ } else {
+ lineGroup.setClipPath(createLineClipPath(this, coordSys, true, seriesModel));
+ }
+ showSymbol && symbolDraw.updateData(data, {
+ isIgnore: isIgnoreFunc,
+ clipShape: clipShapeForSymbol,
+ disableAnimation: true,
+ getSymbolPoint: function(idx) {
+ return [points4[idx * 2], points4[idx * 2 + 1]];
+ }
+ });
+ if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points4)) {
+ if (hasAnimation) {
+ this._doUpdateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls);
+ } else {
+ if (step) {
+ if (stackedOnPoints) {
+ stackedOnPoints = turnPointsIntoStep(stackedOnPoints, points4, coordSys, step, connectNulls);
+ }
+ points4 = turnPointsIntoStep(points4, null, coordSys, step, connectNulls);
+ }
+ polyline.setShape({
+ points: points4
+ });
+ polygon && polygon.setShape({
+ points: points4,
+ stackedOnPoints
+ });
+ }
+ }
+ }
+ var emphasisModel = seriesModel.getModel("emphasis");
+ var focus = emphasisModel.get("focus");
+ var blurScope = emphasisModel.get("blurScope");
+ var emphasisDisabled = emphasisModel.get("disabled");
+ polyline.useStyle(defaults(
+ lineStyleModel.getLineStyle(),
+ {
+ fill: "none",
+ stroke: visualColor,
+ lineJoin: "bevel"
+ }
+ ));
+ setStatesStylesFromModel(polyline, seriesModel, "lineStyle");
+ if (polyline.style.lineWidth > 0 && seriesModel.get(["emphasis", "lineStyle", "width"]) === "bolder") {
+ var emphasisLineStyle = polyline.getState("emphasis").style;
+ emphasisLineStyle.lineWidth = +polyline.style.lineWidth + 1;
+ }
+ getECData(polyline).seriesIndex = seriesModel.seriesIndex;
+ toggleHoverEmphasis(polyline, focus, blurScope, emphasisDisabled);
+ var smooth = getSmooth(seriesModel.get("smooth"));
+ var smoothMonotone = seriesModel.get("smoothMonotone");
+ polyline.setShape({
+ smooth,
+ smoothMonotone,
+ connectNulls
+ });
+ if (polygon) {
+ var stackedOnSeries = data.getCalculationInfo("stackedOnSeries");
+ var stackedOnSmooth = 0;
+ polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {
+ fill: visualColor,
+ opacity: 0.7,
+ lineJoin: "bevel",
+ decal: data.getVisual("style").decal
+ }));
+ if (stackedOnSeries) {
+ stackedOnSmooth = getSmooth(stackedOnSeries.get("smooth"));
+ }
+ polygon.setShape({
+ smooth,
+ stackedOnSmooth,
+ smoothMonotone,
+ connectNulls
+ });
+ setStatesStylesFromModel(polygon, seriesModel, "areaStyle");
+ getECData(polygon).seriesIndex = seriesModel.seriesIndex;
+ toggleHoverEmphasis(polygon, focus, blurScope, emphasisDisabled);
+ }
+ var changePolyState = this._changePolyState;
+ data.eachItemGraphicEl(function(el) {
+ el && (el.onHoverStateChange = changePolyState);
+ });
+ this._polyline.onHoverStateChange = changePolyState;
+ this._data = data;
+ this._coordSys = coordSys;
+ this._stackedOnPoints = stackedOnPoints;
+ this._points = points4;
+ this._step = step;
+ this._valueOrigin = valueOrigin;
+ if (seriesModel.get("triggerLineEvent")) {
+ this.packEventData(seriesModel, polyline);
+ polygon && this.packEventData(seriesModel, polygon);
+ }
+ };
+ LineView2.prototype.packEventData = function(seriesModel, el) {
+ getECData(el).eventData = {
+ componentType: "series",
+ componentSubType: "line",
+ componentIndex: seriesModel.componentIndex,
+ seriesIndex: seriesModel.seriesIndex,
+ seriesName: seriesModel.name,
+ seriesType: "line"
+ };
+ };
+ LineView2.prototype.highlight = function(seriesModel, ecModel, api, payload) {
+ var data = seriesModel.getData();
+ var dataIndex = queryDataIndex(data, payload);
+ this._changePolyState("emphasis");
+ if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {
+ var points4 = data.getLayout("points");
+ var symbol = data.getItemGraphicEl(dataIndex);
+ if (!symbol) {
+ var x = points4[dataIndex * 2];
+ var y = points4[dataIndex * 2 + 1];
+ if (isNaN(x) || isNaN(y)) {
+ return;
+ }
+ if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {
+ return;
+ }
+ var zlevel = seriesModel.get("zlevel") || 0;
+ var z = seriesModel.get("z") || 0;
+ symbol = new Symbol_default(data, dataIndex);
+ symbol.x = x;
+ symbol.y = y;
+ symbol.setZ(zlevel, z);
+ var symbolLabel = symbol.getSymbolPath().getTextContent();
+ if (symbolLabel) {
+ symbolLabel.zlevel = zlevel;
+ symbolLabel.z = z;
+ symbolLabel.z2 = this._polyline.z2 + 1;
+ }
+ symbol.__temp = true;
+ data.setItemGraphicEl(dataIndex, symbol);
+ symbol.stopSymbolAnimation(true);
+ this.group.add(symbol);
+ }
+ symbol.highlight();
+ } else {
+ Chart_default.prototype.highlight.call(this, seriesModel, ecModel, api, payload);
+ }
+ };
+ LineView2.prototype.downplay = function(seriesModel, ecModel, api, payload) {
+ var data = seriesModel.getData();
+ var dataIndex = queryDataIndex(data, payload);
+ this._changePolyState("normal");
+ if (dataIndex != null && dataIndex >= 0) {
+ var symbol = data.getItemGraphicEl(dataIndex);
+ if (symbol) {
+ if (symbol.__temp) {
+ data.setItemGraphicEl(dataIndex, null);
+ this.group.remove(symbol);
+ } else {
+ symbol.downplay();
+ }
+ }
+ } else {
+ Chart_default.prototype.downplay.call(this, seriesModel, ecModel, api, payload);
+ }
+ };
+ LineView2.prototype._changePolyState = function(toState) {
+ var polygon = this._polygon;
+ setStatesFlag(this._polyline, toState);
+ polygon && setStatesFlag(polygon, toState);
+ };
+ LineView2.prototype._newPolyline = function(points4) {
+ var polyline = this._polyline;
+ if (polyline) {
+ this._lineGroup.remove(polyline);
+ }
+ polyline = new ECPolyline({
+ shape: {
+ points: points4
+ },
+ segmentIgnoreThreshold: 2,
+ z2: 10
+ });
+ this._lineGroup.add(polyline);
+ this._polyline = polyline;
+ return polyline;
+ };
+ LineView2.prototype._newPolygon = function(points4, stackedOnPoints) {
+ var polygon = this._polygon;
+ if (polygon) {
+ this._lineGroup.remove(polygon);
+ }
+ polygon = new ECPolygon({
+ shape: {
+ points: points4,
+ stackedOnPoints
+ },
+ segmentIgnoreThreshold: 2
+ });
+ this._lineGroup.add(polygon);
+ this._polygon = polygon;
+ return polygon;
+ };
+ LineView2.prototype._initSymbolLabelAnimation = function(data, coordSys, clipShape) {
+ var isHorizontalOrRadial;
+ var isCoordSysPolar;
+ var baseAxis = coordSys.getBaseAxis();
+ var isAxisInverse = baseAxis.inverse;
+ if (coordSys.type === "cartesian2d") {
+ isHorizontalOrRadial = baseAxis.isHorizontal();
+ isCoordSysPolar = false;
+ } else if (coordSys.type === "polar") {
+ isHorizontalOrRadial = baseAxis.dim === "angle";
+ isCoordSysPolar = true;
+ }
+ var seriesModel = data.hostModel;
+ var seriesDuration = seriesModel.get("animationDuration");
+ if (isFunction(seriesDuration)) {
+ seriesDuration = seriesDuration(null);
+ }
+ var seriesDelay = seriesModel.get("animationDelay") || 0;
+ var seriesDelayValue = isFunction(seriesDelay) ? seriesDelay(null) : seriesDelay;
+ data.eachItemGraphicEl(function(symbol, idx) {
+ var el = symbol;
+ if (el) {
+ var point = [symbol.x, symbol.y];
+ var start2 = void 0;
+ var end2 = void 0;
+ var current = void 0;
+ if (clipShape) {
+ if (isCoordSysPolar) {
+ var polarClip = clipShape;
+ var coord = coordSys.pointToCoord(point);
+ if (isHorizontalOrRadial) {
+ start2 = polarClip.startAngle;
+ end2 = polarClip.endAngle;
+ current = -coord[1] / 180 * Math.PI;
+ } else {
+ start2 = polarClip.r0;
+ end2 = polarClip.r;
+ current = coord[0];
+ }
+ } else {
+ var gridClip = clipShape;
+ if (isHorizontalOrRadial) {
+ start2 = gridClip.x;
+ end2 = gridClip.x + gridClip.width;
+ current = symbol.x;
+ } else {
+ start2 = gridClip.y + gridClip.height;
+ end2 = gridClip.y;
+ current = symbol.y;
+ }
+ }
+ }
+ var ratio = end2 === start2 ? 0 : (current - start2) / (end2 - start2);
+ if (isAxisInverse) {
+ ratio = 1 - ratio;
+ }
+ var delay = isFunction(seriesDelay) ? seriesDelay(idx) : seriesDuration * ratio + seriesDelayValue;
+ var symbolPath = el.getSymbolPath();
+ var text = symbolPath.getTextContent();
+ el.attr({
+ scaleX: 0,
+ scaleY: 0
+ });
+ el.animateTo({
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 200,
+ setToFinal: true,
+ delay
+ });
+ if (text) {
+ text.animateFrom({
+ style: {
+ opacity: 0
+ }
+ }, {
+ duration: 300,
+ delay
+ });
+ }
+ symbolPath.disableLabelAnimation = true;
+ }
+ });
+ };
+ LineView2.prototype._initOrUpdateEndLabel = function(seriesModel, coordSys, inheritColor) {
+ var endLabelModel = seriesModel.getModel("endLabel");
+ if (anyStateShowEndLabel(seriesModel)) {
+ var data_2 = seriesModel.getData();
+ var polyline = this._polyline;
+ var points4 = data_2.getLayout("points");
+ if (!points4) {
+ polyline.removeTextContent();
+ this._endLabel = null;
+ return;
+ }
+ var endLabel = this._endLabel;
+ if (!endLabel) {
+ endLabel = this._endLabel = new Text_default({
+ z2: 200
+ });
+ endLabel.ignoreClip = true;
+ polyline.setTextContent(this._endLabel);
+ polyline.disableLabelAnimation = true;
+ }
+ var dataIndex = getLastIndexNotNull(points4);
+ if (dataIndex >= 0) {
+ setLabelStyle(polyline, getLabelStatesModels(seriesModel, "endLabel"), {
+ inheritColor,
+ labelFetcher: seriesModel,
+ labelDataIndex: dataIndex,
+ defaultText: function(dataIndex2, opt, interpolatedValue) {
+ return interpolatedValue != null ? getDefaultInterpolatedLabel(data_2, interpolatedValue) : getDefaultLabel(data_2, dataIndex2);
+ },
+ enableTextSetter: true
+ }, getEndLabelStateSpecified(endLabelModel, coordSys));
+ polyline.textConfig.position = null;
+ }
+ } else if (this._endLabel) {
+ this._polyline.removeTextContent();
+ this._endLabel = null;
+ }
+ };
+ LineView2.prototype._endLabelOnDuring = function(percent, clipRect, data, animationRecord, valueAnimation, endLabelModel, coordSys) {
+ var endLabel = this._endLabel;
+ var polyline = this._polyline;
+ if (endLabel) {
+ if (percent < 1 && animationRecord.originalX == null) {
+ animationRecord.originalX = endLabel.x;
+ animationRecord.originalY = endLabel.y;
+ }
+ var points4 = data.getLayout("points");
+ var seriesModel = data.hostModel;
+ var connectNulls = seriesModel.get("connectNulls");
+ var precision = endLabelModel.get("precision");
+ var distance2 = endLabelModel.get("distance") || 0;
+ var baseAxis = coordSys.getBaseAxis();
+ var isHorizontal = baseAxis.isHorizontal();
+ var isBaseInversed = baseAxis.inverse;
+ var clipShape = clipRect.shape;
+ var xOrY = isBaseInversed ? isHorizontal ? clipShape.x : clipShape.y + clipShape.height : isHorizontal ? clipShape.x + clipShape.width : clipShape.y;
+ var distanceX = (isHorizontal ? distance2 : 0) * (isBaseInversed ? -1 : 1);
+ var distanceY = (isHorizontal ? 0 : -distance2) * (isBaseInversed ? -1 : 1);
+ var dim = isHorizontal ? "x" : "y";
+ var dataIndexRange = getIndexRange(points4, xOrY, dim);
+ var indices = dataIndexRange.range;
+ var diff = indices[1] - indices[0];
+ var value = void 0;
+ if (diff >= 1) {
+ if (diff > 1 && !connectNulls) {
+ var pt = getPointAtIndex(points4, indices[0]);
+ endLabel.attr({
+ x: pt[0] + distanceX,
+ y: pt[1] + distanceY
+ });
+ valueAnimation && (value = seriesModel.getRawValue(indices[0]));
+ } else {
+ var pt = polyline.getPointOn(xOrY, dim);
+ pt && endLabel.attr({
+ x: pt[0] + distanceX,
+ y: pt[1] + distanceY
+ });
+ var startValue = seriesModel.getRawValue(indices[0]);
+ var endValue = seriesModel.getRawValue(indices[1]);
+ valueAnimation && (value = interpolateRawValues(data, precision, startValue, endValue, dataIndexRange.t));
+ }
+ animationRecord.lastFrameIndex = indices[0];
+ } else {
+ var idx = percent === 1 || animationRecord.lastFrameIndex > 0 ? indices[0] : 0;
+ var pt = getPointAtIndex(points4, idx);
+ valueAnimation && (value = seriesModel.getRawValue(idx));
+ endLabel.attr({
+ x: pt[0] + distanceX,
+ y: pt[1] + distanceY
+ });
+ }
+ if (valueAnimation) {
+ var inner23 = labelInner(endLabel);
+ if (typeof inner23.setLabelText === "function") {
+ inner23.setLabelText(value);
+ }
+ }
+ }
+ };
+ LineView2.prototype._doUpdateAnimation = function(data, stackedOnPoints, coordSys, api, step, valueOrigin, connectNulls) {
+ var polyline = this._polyline;
+ var polygon = this._polygon;
+ var seriesModel = data.hostModel;
+ var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);
+ var current = diff.current;
+ var stackedOnCurrent = diff.stackedOnCurrent;
+ var next = diff.next;
+ var stackedOnNext = diff.stackedOnNext;
+ if (step) {
+ stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, diff.current, coordSys, step, connectNulls);
+ current = turnPointsIntoStep(diff.current, null, coordSys, step, connectNulls);
+ stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, diff.next, coordSys, step, connectNulls);
+ next = turnPointsIntoStep(diff.next, null, coordSys, step, connectNulls);
+ }
+ if (getBoundingDiff(current, next) > 3e3 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3e3) {
+ polyline.stopAnimation();
+ polyline.setShape({
+ points: next
+ });
+ if (polygon) {
+ polygon.stopAnimation();
+ polygon.setShape({
+ points: next,
+ stackedOnPoints: stackedOnNext
+ });
+ }
+ return;
+ }
+ polyline.shape.__points = diff.current;
+ polyline.shape.points = current;
+ var target = {
+ shape: {
+ points: next
+ }
+ };
+ if (diff.current !== current) {
+ target.shape.__points = diff.next;
+ }
+ polyline.stopAnimation();
+ updateProps(polyline, target, seriesModel);
+ if (polygon) {
+ polygon.setShape({
+ points: current,
+ stackedOnPoints: stackedOnCurrent
+ });
+ polygon.stopAnimation();
+ updateProps(polygon, {
+ shape: {
+ stackedOnPoints: stackedOnNext
+ }
+ }, seriesModel);
+ if (polyline.shape.points !== polygon.shape.points) {
+ polygon.shape.points = polyline.shape.points;
+ }
+ }
+ var updatedDataInfo = [];
+ var diffStatus = diff.status;
+ for (var i = 0; i < diffStatus.length; i++) {
+ var cmd = diffStatus[i].cmd;
+ if (cmd === "=") {
+ var el = data.getItemGraphicEl(diffStatus[i].idx1);
+ if (el) {
+ updatedDataInfo.push({
+ el,
+ ptIdx: i
+ });
+ }
+ }
+ }
+ if (polyline.animators && polyline.animators.length) {
+ polyline.animators[0].during(function() {
+ polygon && polygon.dirtyShape();
+ var points4 = polyline.shape.__points;
+ for (var i2 = 0; i2 < updatedDataInfo.length; i2++) {
+ var el2 = updatedDataInfo[i2].el;
+ var offset = updatedDataInfo[i2].ptIdx * 2;
+ el2.x = points4[offset];
+ el2.y = points4[offset + 1];
+ el2.markRedraw();
+ }
+ });
+ }
+ };
+ LineView2.prototype.remove = function(ecModel) {
+ var group = this.group;
+ var oldData = this._data;
+ this._lineGroup.removeAll();
+ this._symbolDraw.remove(true);
+ oldData && oldData.eachItemGraphicEl(function(el, idx) {
+ if (el.__temp) {
+ group.remove(el);
+ oldData.setItemGraphicEl(idx, null);
+ }
+ });
+ this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._endLabel = this._data = null;
+ };
+ LineView2.type = "line";
+ return LineView2;
+}(Chart_default);
+var LineView_default = LineView;
+
+// node_modules/echarts/lib/layout/points.js
+function pointsLayout(seriesType2, forceStoreInTypedArray) {
+ return {
+ seriesType: seriesType2,
+ plan: createRenderPlanner(),
+ reset: function(seriesModel) {
+ var data = seriesModel.getData();
+ var coordSys = seriesModel.coordinateSystem;
+ var pipelineContext = seriesModel.pipelineContext;
+ var useTypedArray = forceStoreInTypedArray || pipelineContext.large;
+ if (!coordSys) {
+ return;
+ }
+ var dims = map(coordSys.dimensions, function(dim) {
+ return data.mapDimension(dim);
+ }).slice(0, 2);
+ var dimLen = dims.length;
+ var stackResultDim = data.getCalculationInfo("stackResultDimension");
+ if (isDimensionStacked(data, dims[0])) {
+ dims[0] = stackResultDim;
+ }
+ if (isDimensionStacked(data, dims[1])) {
+ dims[1] = stackResultDim;
+ }
+ var store = data.getStore();
+ var dimIdx0 = data.getDimensionIndex(dims[0]);
+ var dimIdx1 = data.getDimensionIndex(dims[1]);
+ return dimLen && {
+ progress: function(params, data2) {
+ var segCount = params.end - params.start;
+ var points4 = useTypedArray && createFloat32Array(segCount * dimLen);
+ var tmpIn = [];
+ var tmpOut = [];
+ for (var i = params.start, offset = 0; i < params.end; i++) {
+ var point = void 0;
+ if (dimLen === 1) {
+ var x = store.get(dimIdx0, i);
+ point = coordSys.dataToPoint(x, null, tmpOut);
+ } else {
+ tmpIn[0] = store.get(dimIdx0, i);
+ tmpIn[1] = store.get(dimIdx1, i);
+ point = coordSys.dataToPoint(tmpIn, null, tmpOut);
+ }
+ if (useTypedArray) {
+ points4[offset++] = point[0];
+ points4[offset++] = point[1];
+ } else {
+ data2.setItemLayout(i, point.slice());
+ }
+ }
+ useTypedArray && data2.setLayout("points", points4);
+ }
+ };
+ }
+ };
+}
+
+// node_modules/echarts/lib/processor/dataSample.js
+var samplers = {
+ average: function(frame) {
+ var sum2 = 0;
+ var count2 = 0;
+ for (var i = 0; i < frame.length; i++) {
+ if (!isNaN(frame[i])) {
+ sum2 += frame[i];
+ count2++;
+ }
+ }
+ return count2 === 0 ? NaN : sum2 / count2;
+ },
+ sum: function(frame) {
+ var sum2 = 0;
+ for (var i = 0; i < frame.length; i++) {
+ sum2 += frame[i] || 0;
+ }
+ return sum2;
+ },
+ max: function(frame) {
+ var max3 = -Infinity;
+ for (var i = 0; i < frame.length; i++) {
+ frame[i] > max3 && (max3 = frame[i]);
+ }
+ return isFinite(max3) ? max3 : NaN;
+ },
+ min: function(frame) {
+ var min3 = Infinity;
+ for (var i = 0; i < frame.length; i++) {
+ frame[i] < min3 && (min3 = frame[i]);
+ }
+ return isFinite(min3) ? min3 : NaN;
+ },
+ nearest: function(frame) {
+ return frame[0];
+ }
+};
+var indexSampler = function(frame) {
+ return Math.round(frame.length / 2);
+};
+function dataSample(seriesType2) {
+ return {
+ seriesType: seriesType2,
+ reset: function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var sampling = seriesModel.get("sampling");
+ var coordSys = seriesModel.coordinateSystem;
+ var count2 = data.count();
+ if (count2 > 10 && coordSys.type === "cartesian2d" && sampling) {
+ var baseAxis = coordSys.getBaseAxis();
+ var valueAxis2 = coordSys.getOtherAxis(baseAxis);
+ var extent3 = baseAxis.getExtent();
+ var dpr2 = api.getDevicePixelRatio();
+ var size = Math.abs(extent3[1] - extent3[0]) * (dpr2 || 1);
+ var rate = Math.round(count2 / size);
+ if (isFinite(rate) && rate > 1) {
+ if (sampling === "lttb") {
+ seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis2.dim), 1 / rate));
+ } else if (sampling === "minmax") {
+ seriesModel.setData(data.minmaxDownSample(data.mapDimension(valueAxis2.dim), 1 / rate));
+ }
+ var sampler = void 0;
+ if (isString(sampling)) {
+ sampler = samplers[sampling];
+ } else if (isFunction(sampling)) {
+ sampler = sampling;
+ }
+ if (sampler) {
+ seriesModel.setData(data.downSample(data.mapDimension(valueAxis2.dim), 1 / rate, sampler, indexSampler));
+ }
+ }
+ }
+ }
+ };
+}
+
+// node_modules/echarts/lib/chart/line/install.js
+function install3(registers) {
+ registers.registerChartView(LineView_default);
+ registers.registerSeriesModel(LineSeries_default);
+ registers.registerLayout(pointsLayout("line", true));
+ registers.registerVisual({
+ seriesType: "line",
+ reset: function(seriesModel) {
+ var data = seriesModel.getData();
+ var lineStyle = seriesModel.getModel("lineStyle").getLineStyle();
+ if (lineStyle && !lineStyle.stroke) {
+ lineStyle.stroke = data.getVisual("style").fill;
+ }
+ data.setVisual("legendLineStyle", lineStyle);
+ }
+ });
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("line"));
+}
+
+// node_modules/echarts/lib/chart/bar/BaseBarSeries.js
+var BaseBarSeriesModel = function(_super) {
+ __extends(BaseBarSeriesModel2, _super);
+ function BaseBarSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = BaseBarSeriesModel2.type;
+ return _this;
+ }
+ BaseBarSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesData_default(null, this, {
+ useEncodeDefaulter: true
+ });
+ };
+ BaseBarSeriesModel2.prototype.getMarkerPosition = function(value, dims, startingAtTick) {
+ var coordSys = this.coordinateSystem;
+ if (coordSys && coordSys.clampData) {
+ var clampData_1 = coordSys.clampData(value);
+ var pt_1 = coordSys.dataToPoint(clampData_1);
+ if (startingAtTick) {
+ each(coordSys.getAxes(), function(axis, idx) {
+ if (axis.type === "category" && dims != null) {
+ var tickCoords = axis.getTicksCoords();
+ var alignTicksWithLabel = axis.getTickModel().get("alignWithLabel");
+ var targetTickId = clampData_1[idx];
+ var isEnd = dims[idx] === "x1" || dims[idx] === "y1";
+ if (isEnd && !alignTicksWithLabel) {
+ targetTickId += 1;
+ }
+ if (tickCoords.length < 2) {
+ return;
+ } else if (tickCoords.length === 2) {
+ pt_1[idx] = axis.toGlobalCoord(axis.getExtent()[isEnd ? 1 : 0]);
+ return;
+ }
+ var leftCoord = void 0;
+ var coord = void 0;
+ var stepTickValue = 1;
+ for (var i = 0; i < tickCoords.length; i++) {
+ var tickCoord = tickCoords[i].coord;
+ var tickValue = i === tickCoords.length - 1 ? tickCoords[i - 1].tickValue + stepTickValue : tickCoords[i].tickValue;
+ if (tickValue === targetTickId) {
+ coord = tickCoord;
+ break;
+ } else if (tickValue < targetTickId) {
+ leftCoord = tickCoord;
+ } else if (leftCoord != null && tickValue > targetTickId) {
+ coord = (tickCoord + leftCoord) / 2;
+ break;
+ }
+ if (i === 1) {
+ stepTickValue = tickValue - tickCoords[0].tickValue;
+ }
+ }
+ if (coord == null) {
+ if (!leftCoord) {
+ coord = tickCoords[0].coord;
+ } else if (leftCoord) {
+ coord = tickCoords[tickCoords.length - 1].coord;
+ }
+ }
+ pt_1[idx] = axis.toGlobalCoord(coord);
+ }
+ });
+ } else {
+ var data = this.getData();
+ var offset = data.getLayout("offset");
+ var size = data.getLayout("size");
+ var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;
+ pt_1[offsetIndex] += offset + size / 2;
+ }
+ return pt_1;
+ }
+ return [NaN, NaN];
+ };
+ BaseBarSeriesModel2.type = "series.__base_bar__";
+ BaseBarSeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "cartesian2d",
+ legendHoverLink: true,
+ barMinHeight: 0,
+ barMinAngle: 0,
+ large: false,
+ largeThreshold: 400,
+ progressive: 3e3,
+ progressiveChunkMode: "mod"
+ };
+ return BaseBarSeriesModel2;
+}(Series_default);
+Series_default.registerClass(BaseBarSeriesModel);
+var BaseBarSeries_default = BaseBarSeriesModel;
+
+// node_modules/echarts/lib/chart/bar/BarSeries.js
+var BarSeriesModel = function(_super) {
+ __extends(BarSeriesModel2, _super);
+ function BarSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = BarSeriesModel2.type;
+ return _this;
+ }
+ BarSeriesModel2.prototype.getInitialData = function() {
+ return createSeriesData_default(null, this, {
+ useEncodeDefaulter: true,
+ createInvertedIndices: !!this.get("realtimeSort", true) || null
+ });
+ };
+ BarSeriesModel2.prototype.getProgressive = function() {
+ return this.get("large") ? this.get("progressive") : false;
+ };
+ BarSeriesModel2.prototype.getProgressiveThreshold = function() {
+ var progressiveThreshold = this.get("progressiveThreshold");
+ var largeThreshold = this.get("largeThreshold");
+ if (largeThreshold > progressiveThreshold) {
+ progressiveThreshold = largeThreshold;
+ }
+ return progressiveThreshold;
+ };
+ BarSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
+ return selectors.rect(data.getItemLayout(dataIndex));
+ };
+ BarSeriesModel2.type = "series.bar";
+ BarSeriesModel2.dependencies = ["grid", "polar"];
+ BarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeries_default.defaultOption, {
+ clip: true,
+ roundCap: false,
+ showBackground: false,
+ backgroundStyle: {
+ color: "rgba(180, 180, 180, 0.2)",
+ borderColor: null,
+ borderWidth: 0,
+ borderType: "solid",
+ borderRadius: 0,
+ shadowBlur: 0,
+ shadowColor: null,
+ shadowOffsetX: 0,
+ shadowOffsetY: 0,
+ opacity: 1
+ },
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ },
+ realtimeSort: false
+ });
+ return BarSeriesModel2;
+}(BaseBarSeries_default);
+var BarSeries_default = BarSeriesModel;
+
+// node_modules/echarts/lib/util/shape/sausage.js
+var SausageShape = function() {
+ function SausageShape2() {
+ this.cx = 0;
+ this.cy = 0;
+ this.r0 = 0;
+ this.r = 0;
+ this.startAngle = 0;
+ this.endAngle = Math.PI * 2;
+ this.clockwise = true;
+ }
+ return SausageShape2;
+}();
+var SausagePath = function(_super) {
+ __extends(SausagePath2, _super);
+ function SausagePath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "sausage";
+ return _this;
+ }
+ SausagePath2.prototype.getDefaultShape = function() {
+ return new SausageShape();
+ };
+ SausagePath2.prototype.buildPath = function(ctx, shape) {
+ var cx = shape.cx;
+ var cy = shape.cy;
+ var r0 = Math.max(shape.r0 || 0, 0);
+ var r = Math.max(shape.r, 0);
+ var dr = (r - r0) * 0.5;
+ var rCenter = r0 + dr;
+ var startAngle = shape.startAngle;
+ var endAngle = shape.endAngle;
+ var clockwise = shape.clockwise;
+ var PI210 = Math.PI * 2;
+ var lessThanCircle = clockwise ? endAngle - startAngle < PI210 : startAngle - endAngle < PI210;
+ if (!lessThanCircle) {
+ startAngle = endAngle - (clockwise ? PI210 : -PI210);
+ }
+ var unitStartX = Math.cos(startAngle);
+ var unitStartY = Math.sin(startAngle);
+ var unitEndX = Math.cos(endAngle);
+ var unitEndY = Math.sin(endAngle);
+ if (lessThanCircle) {
+ ctx.moveTo(unitStartX * r0 + cx, unitStartY * r0 + cy);
+ ctx.arc(unitStartX * rCenter + cx, unitStartY * rCenter + cy, dr, -Math.PI + startAngle, startAngle, !clockwise);
+ } else {
+ ctx.moveTo(unitStartX * r + cx, unitStartY * r + cy);
+ }
+ ctx.arc(cx, cy, r, startAngle, endAngle, !clockwise);
+ ctx.arc(unitEndX * rCenter + cx, unitEndY * rCenter + cy, dr, endAngle - Math.PI * 2, endAngle - Math.PI, !clockwise);
+ if (r0 !== 0) {
+ ctx.arc(cx, cy, r0, endAngle, startAngle, clockwise);
+ }
+ };
+ return SausagePath2;
+}(Path_default);
+var sausage_default = SausagePath;
+
+// node_modules/echarts/lib/label/sectorLabel.js
+function createSectorCalculateTextPosition(positionMapping, opts) {
+ opts = opts || {};
+ var isRoundCap = opts.isRoundCap;
+ return function(out2, opts2, boundingRect) {
+ var textPosition = opts2.position;
+ if (!textPosition || textPosition instanceof Array) {
+ return calculateTextPosition(out2, opts2, boundingRect);
+ }
+ var mappedSectorPosition = positionMapping(textPosition);
+ var distance2 = opts2.distance != null ? opts2.distance : 5;
+ var sector = this.shape;
+ var cx = sector.cx;
+ var cy = sector.cy;
+ var r = sector.r;
+ var r0 = sector.r0;
+ var middleR = (r + r0) / 2;
+ var startAngle = sector.startAngle;
+ var endAngle = sector.endAngle;
+ var middleAngle = (startAngle + endAngle) / 2;
+ var extraDist = isRoundCap ? Math.abs(r - r0) / 2 : 0;
+ var mathCos6 = Math.cos;
+ var mathSin6 = Math.sin;
+ var x = cx + r * mathCos6(startAngle);
+ var y = cy + r * mathSin6(startAngle);
+ var textAlign = "left";
+ var textVerticalAlign = "top";
+ switch (mappedSectorPosition) {
+ case "startArc":
+ x = cx + (r0 - distance2) * mathCos6(middleAngle);
+ y = cy + (r0 - distance2) * mathSin6(middleAngle);
+ textAlign = "center";
+ textVerticalAlign = "top";
+ break;
+ case "insideStartArc":
+ x = cx + (r0 + distance2) * mathCos6(middleAngle);
+ y = cy + (r0 + distance2) * mathSin6(middleAngle);
+ textAlign = "center";
+ textVerticalAlign = "bottom";
+ break;
+ case "startAngle":
+ x = cx + middleR * mathCos6(startAngle) + adjustAngleDistanceX(startAngle, distance2 + extraDist, false);
+ y = cy + middleR * mathSin6(startAngle) + adjustAngleDistanceY(startAngle, distance2 + extraDist, false);
+ textAlign = "right";
+ textVerticalAlign = "middle";
+ break;
+ case "insideStartAngle":
+ x = cx + middleR * mathCos6(startAngle) + adjustAngleDistanceX(startAngle, -distance2 + extraDist, false);
+ y = cy + middleR * mathSin6(startAngle) + adjustAngleDistanceY(startAngle, -distance2 + extraDist, false);
+ textAlign = "left";
+ textVerticalAlign = "middle";
+ break;
+ case "middle":
+ x = cx + middleR * mathCos6(middleAngle);
+ y = cy + middleR * mathSin6(middleAngle);
+ textAlign = "center";
+ textVerticalAlign = "middle";
+ break;
+ case "endArc":
+ x = cx + (r + distance2) * mathCos6(middleAngle);
+ y = cy + (r + distance2) * mathSin6(middleAngle);
+ textAlign = "center";
+ textVerticalAlign = "bottom";
+ break;
+ case "insideEndArc":
+ x = cx + (r - distance2) * mathCos6(middleAngle);
+ y = cy + (r - distance2) * mathSin6(middleAngle);
+ textAlign = "center";
+ textVerticalAlign = "top";
+ break;
+ case "endAngle":
+ x = cx + middleR * mathCos6(endAngle) + adjustAngleDistanceX(endAngle, distance2 + extraDist, true);
+ y = cy + middleR * mathSin6(endAngle) + adjustAngleDistanceY(endAngle, distance2 + extraDist, true);
+ textAlign = "left";
+ textVerticalAlign = "middle";
+ break;
+ case "insideEndAngle":
+ x = cx + middleR * mathCos6(endAngle) + adjustAngleDistanceX(endAngle, -distance2 + extraDist, true);
+ y = cy + middleR * mathSin6(endAngle) + adjustAngleDistanceY(endAngle, -distance2 + extraDist, true);
+ textAlign = "right";
+ textVerticalAlign = "middle";
+ break;
+ default:
+ return calculateTextPosition(out2, opts2, boundingRect);
+ }
+ out2 = out2 || {};
+ out2.x = x;
+ out2.y = y;
+ out2.align = textAlign;
+ out2.verticalAlign = textVerticalAlign;
+ return out2;
+ };
+}
+function setSectorTextRotation(sector, textPosition, positionMapping, rotateType) {
+ if (isNumber(rotateType)) {
+ sector.setTextConfig({
+ rotation: rotateType
+ });
+ return;
+ } else if (isArray(textPosition)) {
+ sector.setTextConfig({
+ rotation: 0
+ });
+ return;
+ }
+ var shape = sector.shape;
+ var startAngle = shape.clockwise ? shape.startAngle : shape.endAngle;
+ var endAngle = shape.clockwise ? shape.endAngle : shape.startAngle;
+ var middleAngle = (startAngle + endAngle) / 2;
+ var anchorAngle;
+ var mappedSectorPosition = positionMapping(textPosition);
+ switch (mappedSectorPosition) {
+ case "startArc":
+ case "insideStartArc":
+ case "middle":
+ case "insideEndArc":
+ case "endArc":
+ anchorAngle = middleAngle;
+ break;
+ case "startAngle":
+ case "insideStartAngle":
+ anchorAngle = startAngle;
+ break;
+ case "endAngle":
+ case "insideEndAngle":
+ anchorAngle = endAngle;
+ break;
+ default:
+ sector.setTextConfig({
+ rotation: 0
+ });
+ return;
+ }
+ var rotate2 = Math.PI * 1.5 - anchorAngle;
+ if (mappedSectorPosition === "middle" && rotate2 > Math.PI / 2 && rotate2 < Math.PI * 1.5) {
+ rotate2 -= Math.PI;
+ }
+ sector.setTextConfig({
+ rotation: rotate2
+ });
+}
+function adjustAngleDistanceX(angle, distance2, isEnd) {
+ return distance2 * Math.sin(angle) * (isEnd ? -1 : 1);
+}
+function adjustAngleDistanceY(angle, distance2, isEnd) {
+ return distance2 * Math.cos(angle) * (isEnd ? 1 : -1);
+}
+
+// node_modules/echarts/lib/chart/helper/sectorHelper.js
+function getSectorCornerRadius(model, shape, zeroIfNull) {
+ var cornerRadius = model.get("borderRadius");
+ if (cornerRadius == null) {
+ return zeroIfNull ? {
+ cornerRadius: 0
+ } : null;
+ }
+ if (!isArray(cornerRadius)) {
+ cornerRadius = [cornerRadius, cornerRadius, cornerRadius, cornerRadius];
+ }
+ var dr = Math.abs(shape.r || 0 - shape.r0 || 0);
+ return {
+ cornerRadius: map(cornerRadius, function(cr) {
+ return parsePercent(cr, dr);
+ })
+ };
+}
+
+// node_modules/echarts/lib/chart/bar/BarView.js
+var mathMax7 = Math.max;
+var mathMin7 = Math.min;
+function getClipArea(coord, data) {
+ var coordSysClipArea = coord.getArea && coord.getArea();
+ if (isCoordinateSystemType(coord, "cartesian2d")) {
+ var baseAxis = coord.getBaseAxis();
+ if (baseAxis.type !== "category" || !baseAxis.onBand) {
+ var expandWidth = data.getLayout("bandWidth");
+ if (baseAxis.isHorizontal()) {
+ coordSysClipArea.x -= expandWidth;
+ coordSysClipArea.width += expandWidth * 2;
+ } else {
+ coordSysClipArea.y -= expandWidth;
+ coordSysClipArea.height += expandWidth * 2;
+ }
+ }
+ }
+ return coordSysClipArea;
+}
+var BarView = function(_super) {
+ __extends(BarView2, _super);
+ function BarView2() {
+ var _this = _super.call(this) || this;
+ _this.type = BarView2.type;
+ _this._isFirstFrame = true;
+ return _this;
+ }
+ BarView2.prototype.render = function(seriesModel, ecModel, api, payload) {
+ this._model = seriesModel;
+ this._removeOnRenderedListener(api);
+ this._updateDrawMode(seriesModel);
+ var coordinateSystemType = seriesModel.get("coordinateSystem");
+ if (coordinateSystemType === "cartesian2d" || coordinateSystemType === "polar") {
+ this._progressiveEls = null;
+ this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api, payload);
+ } else if (true) {
+ warn("Only cartesian2d and polar supported for bar.");
+ }
+ };
+ BarView2.prototype.incrementalPrepareRender = function(seriesModel) {
+ this._clear();
+ this._updateDrawMode(seriesModel);
+ this._updateLargeClip(seriesModel);
+ };
+ BarView2.prototype.incrementalRender = function(params, seriesModel) {
+ this._progressiveEls = [];
+ this._incrementalRenderLarge(params, seriesModel);
+ };
+ BarView2.prototype.eachRendered = function(cb) {
+ traverseElements(this._progressiveEls || this.group, cb);
+ };
+ BarView2.prototype._updateDrawMode = function(seriesModel) {
+ var isLargeDraw = seriesModel.pipelineContext.large;
+ if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
+ this._isLargeDraw = isLargeDraw;
+ this._clear();
+ }
+ };
+ BarView2.prototype._renderNormal = function(seriesModel, ecModel, api, payload) {
+ var group = this.group;
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ var coord = seriesModel.coordinateSystem;
+ var baseAxis = coord.getBaseAxis();
+ var isHorizontalOrRadial;
+ if (coord.type === "cartesian2d") {
+ isHorizontalOrRadial = baseAxis.isHorizontal();
+ } else if (coord.type === "polar") {
+ isHorizontalOrRadial = baseAxis.dim === "angle";
+ }
+ var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;
+ var realtimeSortCfg = shouldRealtimeSort(seriesModel, coord);
+ if (realtimeSortCfg) {
+ this._enableRealtimeSort(realtimeSortCfg, data, api);
+ }
+ var needsClip = seriesModel.get("clip", true) || realtimeSortCfg;
+ var coordSysClipArea = getClipArea(coord, data);
+ group.removeClipPath();
+ var roundCap = seriesModel.get("roundCap", true);
+ var drawBackground = seriesModel.get("showBackground", true);
+ var backgroundModel = seriesModel.getModel("backgroundStyle");
+ var barBorderRadius = backgroundModel.get("borderRadius") || 0;
+ var bgEls = [];
+ var oldBgEls = this._backgroundEls;
+ var isInitSort = payload && payload.isInitSort;
+ var isChangeOrder = payload && payload.type === "changeAxisOrder";
+ function createBackground(dataIndex) {
+ var bgLayout = getLayout[coord.type](data, dataIndex);
+ var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);
+ bgEl.useStyle(backgroundModel.getItemStyle());
+ if (coord.type === "cartesian2d") {
+ bgEl.setShape("r", barBorderRadius);
+ } else {
+ bgEl.setShape("cornerRadius", barBorderRadius);
+ }
+ bgEls[dataIndex] = bgEl;
+ return bgEl;
+ }
+ ;
+ data.diff(oldData).add(function(dataIndex) {
+ var itemModel = data.getItemModel(dataIndex);
+ var layout5 = getLayout[coord.type](data, dataIndex, itemModel);
+ if (drawBackground) {
+ createBackground(dataIndex);
+ }
+ if (!data.hasValue(dataIndex) || !isValidLayout[coord.type](layout5)) {
+ return;
+ }
+ var isClipped = false;
+ if (needsClip) {
+ isClipped = clip[coord.type](coordSysClipArea, layout5);
+ }
+ var el = elementCreator[coord.type](seriesModel, data, dataIndex, layout5, isHorizontalOrRadial, animationModel, baseAxis.model, false, roundCap);
+ if (realtimeSortCfg) {
+ el.forceLabelAnimation = true;
+ }
+ updateStyle(el, data, dataIndex, itemModel, layout5, seriesModel, isHorizontalOrRadial, coord.type === "polar");
+ if (isInitSort) {
+ el.attr({
+ shape: layout5
+ });
+ } else if (realtimeSortCfg) {
+ updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout5, dataIndex, isHorizontalOrRadial, false, false);
+ } else {
+ initProps(el, {
+ shape: layout5
+ }, seriesModel, dataIndex);
+ }
+ data.setItemGraphicEl(dataIndex, el);
+ group.add(el);
+ el.ignore = isClipped;
+ }).update(function(newIndex, oldIndex) {
+ var itemModel = data.getItemModel(newIndex);
+ var layout5 = getLayout[coord.type](data, newIndex, itemModel);
+ if (drawBackground) {
+ var bgEl = void 0;
+ if (oldBgEls.length === 0) {
+ bgEl = createBackground(oldIndex);
+ } else {
+ bgEl = oldBgEls[oldIndex];
+ bgEl.useStyle(backgroundModel.getItemStyle());
+ if (coord.type === "cartesian2d") {
+ bgEl.setShape("r", barBorderRadius);
+ } else {
+ bgEl.setShape("cornerRadius", barBorderRadius);
+ }
+ bgEls[newIndex] = bgEl;
+ }
+ var bgLayout = getLayout[coord.type](data, newIndex);
+ var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);
+ updateProps(bgEl, {
+ shape
+ }, animationModel, newIndex);
+ }
+ var el = oldData.getItemGraphicEl(oldIndex);
+ if (!data.hasValue(newIndex) || !isValidLayout[coord.type](layout5)) {
+ group.remove(el);
+ return;
+ }
+ var isClipped = false;
+ if (needsClip) {
+ isClipped = clip[coord.type](coordSysClipArea, layout5);
+ if (isClipped) {
+ group.remove(el);
+ }
+ }
+ if (!el) {
+ el = elementCreator[coord.type](seriesModel, data, newIndex, layout5, isHorizontalOrRadial, animationModel, baseAxis.model, !!el, roundCap);
+ } else {
+ saveOldStyle(el);
+ }
+ if (realtimeSortCfg) {
+ el.forceLabelAnimation = true;
+ }
+ if (isChangeOrder) {
+ var textEl = el.getTextContent();
+ if (textEl) {
+ var labelInnerStore = labelInner(textEl);
+ if (labelInnerStore.prevValue != null) {
+ labelInnerStore.prevValue = labelInnerStore.value;
+ }
+ }
+ } else {
+ updateStyle(el, data, newIndex, itemModel, layout5, seriesModel, isHorizontalOrRadial, coord.type === "polar");
+ }
+ if (isInitSort) {
+ el.attr({
+ shape: layout5
+ });
+ } else if (realtimeSortCfg) {
+ updateRealtimeAnimation(realtimeSortCfg, animationModel, el, layout5, newIndex, isHorizontalOrRadial, true, isChangeOrder);
+ } else {
+ updateProps(el, {
+ shape: layout5
+ }, seriesModel, newIndex, null);
+ }
+ data.setItemGraphicEl(newIndex, el);
+ el.ignore = isClipped;
+ group.add(el);
+ }).remove(function(dataIndex) {
+ var el = oldData.getItemGraphicEl(dataIndex);
+ el && removeElementWithFadeOut(el, seriesModel, dataIndex);
+ }).execute();
+ var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group_default());
+ bgGroup.removeAll();
+ for (var i = 0; i < bgEls.length; ++i) {
+ bgGroup.add(bgEls[i]);
+ }
+ group.add(bgGroup);
+ this._backgroundEls = bgEls;
+ this._data = data;
+ };
+ BarView2.prototype._renderLarge = function(seriesModel, ecModel, api) {
+ this._clear();
+ createLarge(seriesModel, this.group);
+ this._updateLargeClip(seriesModel);
+ };
+ BarView2.prototype._incrementalRenderLarge = function(params, seriesModel) {
+ this._removeBackground();
+ createLarge(seriesModel, this.group, this._progressiveEls, true);
+ };
+ BarView2.prototype._updateLargeClip = function(seriesModel) {
+ var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);
+ var group = this.group;
+ if (clipPath) {
+ group.setClipPath(clipPath);
+ } else {
+ group.removeClipPath();
+ }
+ };
+ BarView2.prototype._enableRealtimeSort = function(realtimeSortCfg, data, api) {
+ var _this = this;
+ if (!data.count()) {
+ return;
+ }
+ var baseAxis = realtimeSortCfg.baseAxis;
+ if (this._isFirstFrame) {
+ this._dispatchInitSort(data, realtimeSortCfg, api);
+ this._isFirstFrame = false;
+ } else {
+ var orderMapping_1 = function(idx) {
+ var el = data.getItemGraphicEl(idx);
+ var shape = el && el.shape;
+ return shape && Math.abs(baseAxis.isHorizontal() ? shape.height : shape.width) || 0;
+ };
+ this._onRendered = function() {
+ _this._updateSortWithinSameData(data, orderMapping_1, baseAxis, api);
+ };
+ api.getZr().on("rendered", this._onRendered);
+ }
+ };
+ BarView2.prototype._dataSort = function(data, baseAxis, orderMapping) {
+ var info = [];
+ data.each(data.mapDimension(baseAxis.dim), function(ordinalNumber, dataIdx) {
+ var mappedValue = orderMapping(dataIdx);
+ mappedValue = mappedValue == null ? NaN : mappedValue;
+ info.push({
+ dataIndex: dataIdx,
+ mappedValue,
+ ordinalNumber
+ });
+ });
+ info.sort(function(a, b) {
+ return b.mappedValue - a.mappedValue;
+ });
+ return {
+ ordinalNumbers: map(info, function(item) {
+ return item.ordinalNumber;
+ })
+ };
+ };
+ BarView2.prototype._isOrderChangedWithinSameData = function(data, orderMapping, baseAxis) {
+ var scale4 = baseAxis.scale;
+ var ordinalDataDim = data.mapDimension(baseAxis.dim);
+ var lastValue = Number.MAX_VALUE;
+ for (var tickNum = 0, len2 = scale4.getOrdinalMeta().categories.length; tickNum < len2; ++tickNum) {
+ var rawIdx = data.rawIndexOf(ordinalDataDim, scale4.getRawOrdinalNumber(tickNum));
+ var value = rawIdx < 0 ? Number.MIN_VALUE : orderMapping(data.indexOfRawIndex(rawIdx));
+ if (value > lastValue) {
+ return true;
+ }
+ lastValue = value;
+ }
+ return false;
+ };
+ BarView2.prototype._isOrderDifferentInView = function(orderInfo, baseAxis) {
+ var scale4 = baseAxis.scale;
+ var extent3 = scale4.getExtent();
+ var tickNum = Math.max(0, extent3[0]);
+ var tickMax = Math.min(extent3[1], scale4.getOrdinalMeta().categories.length - 1);
+ for (; tickNum <= tickMax; ++tickNum) {
+ if (orderInfo.ordinalNumbers[tickNum] !== scale4.getRawOrdinalNumber(tickNum)) {
+ return true;
+ }
+ }
+ };
+ BarView2.prototype._updateSortWithinSameData = function(data, orderMapping, baseAxis, api) {
+ if (!this._isOrderChangedWithinSameData(data, orderMapping, baseAxis)) {
+ return;
+ }
+ var sortInfo = this._dataSort(data, baseAxis, orderMapping);
+ if (this._isOrderDifferentInView(sortInfo, baseAxis)) {
+ this._removeOnRenderedListener(api);
+ api.dispatchAction({
+ type: "changeAxisOrder",
+ componentType: baseAxis.dim + "Axis",
+ axisId: baseAxis.index,
+ sortInfo
+ });
+ }
+ };
+ BarView2.prototype._dispatchInitSort = function(data, realtimeSortCfg, api) {
+ var baseAxis = realtimeSortCfg.baseAxis;
+ var sortResult = this._dataSort(data, baseAxis, function(dataIdx) {
+ return data.get(data.mapDimension(realtimeSortCfg.otherAxis.dim), dataIdx);
+ });
+ api.dispatchAction({
+ type: "changeAxisOrder",
+ componentType: baseAxis.dim + "Axis",
+ isInitSort: true,
+ axisId: baseAxis.index,
+ sortInfo: sortResult
+ });
+ };
+ BarView2.prototype.remove = function(ecModel, api) {
+ this._clear(this._model);
+ this._removeOnRenderedListener(api);
+ };
+ BarView2.prototype.dispose = function(ecModel, api) {
+ this._removeOnRenderedListener(api);
+ };
+ BarView2.prototype._removeOnRenderedListener = function(api) {
+ if (this._onRendered) {
+ api.getZr().off("rendered", this._onRendered);
+ this._onRendered = null;
+ }
+ };
+ BarView2.prototype._clear = function(model) {
+ var group = this.group;
+ var data = this._data;
+ if (model && model.isAnimationEnabled() && data && !this._isLargeDraw) {
+ this._removeBackground();
+ this._backgroundEls = [];
+ data.eachItemGraphicEl(function(el) {
+ removeElementWithFadeOut(el, model, getECData(el).dataIndex);
+ });
+ } else {
+ group.removeAll();
+ }
+ this._data = null;
+ this._isFirstFrame = true;
+ };
+ BarView2.prototype._removeBackground = function() {
+ this.group.remove(this._backgroundGroup);
+ this._backgroundGroup = null;
+ };
+ BarView2.type = "bar";
+ return BarView2;
+}(Chart_default);
+var clip = {
+ cartesian2d: function(coordSysBoundingRect, layout5) {
+ var signWidth = layout5.width < 0 ? -1 : 1;
+ var signHeight = layout5.height < 0 ? -1 : 1;
+ if (signWidth < 0) {
+ layout5.x += layout5.width;
+ layout5.width = -layout5.width;
+ }
+ if (signHeight < 0) {
+ layout5.y += layout5.height;
+ layout5.height = -layout5.height;
+ }
+ var coordSysX2 = coordSysBoundingRect.x + coordSysBoundingRect.width;
+ var coordSysY2 = coordSysBoundingRect.y + coordSysBoundingRect.height;
+ var x = mathMax7(layout5.x, coordSysBoundingRect.x);
+ var x2 = mathMin7(layout5.x + layout5.width, coordSysX2);
+ var y = mathMax7(layout5.y, coordSysBoundingRect.y);
+ var y2 = mathMin7(layout5.y + layout5.height, coordSysY2);
+ var xClipped = x2 < x;
+ var yClipped = y2 < y;
+ layout5.x = xClipped && x > coordSysX2 ? x2 : x;
+ layout5.y = yClipped && y > coordSysY2 ? y2 : y;
+ layout5.width = xClipped ? 0 : x2 - x;
+ layout5.height = yClipped ? 0 : y2 - y;
+ if (signWidth < 0) {
+ layout5.x += layout5.width;
+ layout5.width = -layout5.width;
+ }
+ if (signHeight < 0) {
+ layout5.y += layout5.height;
+ layout5.height = -layout5.height;
+ }
+ return xClipped || yClipped;
+ },
+ polar: function(coordSysClipArea, layout5) {
+ var signR = layout5.r0 <= layout5.r ? 1 : -1;
+ if (signR < 0) {
+ var tmp = layout5.r;
+ layout5.r = layout5.r0;
+ layout5.r0 = tmp;
+ }
+ var r = mathMin7(layout5.r, coordSysClipArea.r);
+ var r0 = mathMax7(layout5.r0, coordSysClipArea.r0);
+ layout5.r = r;
+ layout5.r0 = r0;
+ var clipped = r - r0 < 0;
+ if (signR < 0) {
+ var tmp = layout5.r;
+ layout5.r = layout5.r0;
+ layout5.r0 = tmp;
+ }
+ return clipped;
+ }
+};
+var elementCreator = {
+ cartesian2d: function(seriesModel, data, newIndex, layout5, isHorizontal, animationModel, axisModel, isUpdate, roundCap) {
+ var rect = new Rect_default({
+ shape: extend({}, layout5),
+ z2: 1
+ });
+ rect.__dataIndex = newIndex;
+ rect.name = "item";
+ if (animationModel) {
+ var rectShape = rect.shape;
+ var animateProperty = isHorizontal ? "height" : "width";
+ rectShape[animateProperty] = 0;
+ }
+ return rect;
+ },
+ polar: function(seriesModel, data, newIndex, layout5, isRadial, animationModel, axisModel, isUpdate, roundCap) {
+ var ShapeClass = !isRadial && roundCap ? sausage_default : Sector_default;
+ var sector = new ShapeClass({
+ shape: layout5,
+ z2: 1
+ });
+ sector.name = "item";
+ var positionMap = createPolarPositionMapping(isRadial);
+ sector.calculateTextPosition = createSectorCalculateTextPosition(positionMap, {
+ isRoundCap: ShapeClass === sausage_default
+ });
+ if (animationModel) {
+ var sectorShape = sector.shape;
+ var animateProperty = isRadial ? "r" : "endAngle";
+ var animateTarget = {};
+ sectorShape[animateProperty] = isRadial ? layout5.r0 : layout5.startAngle;
+ animateTarget[animateProperty] = layout5[animateProperty];
+ (isUpdate ? updateProps : initProps)(sector, {
+ shape: animateTarget
+ }, animationModel);
+ }
+ return sector;
+ }
+};
+function shouldRealtimeSort(seriesModel, coordSys) {
+ var realtimeSortOption = seriesModel.get("realtimeSort", true);
+ var baseAxis = coordSys.getBaseAxis();
+ if (true) {
+ if (realtimeSortOption) {
+ if (baseAxis.type !== "category") {
+ warn("`realtimeSort` will not work because this bar series is not based on a category axis.");
+ }
+ if (coordSys.type !== "cartesian2d") {
+ warn("`realtimeSort` will not work because this bar series is not on cartesian2d.");
+ }
+ }
+ }
+ if (realtimeSortOption && baseAxis.type === "category" && coordSys.type === "cartesian2d") {
+ return {
+ baseAxis,
+ otherAxis: coordSys.getOtherAxis(baseAxis)
+ };
+ }
+}
+function updateRealtimeAnimation(realtimeSortCfg, seriesAnimationModel, el, layout5, newIndex, isHorizontal, isUpdate, isChangeOrder) {
+ var seriesTarget;
+ var axisTarget;
+ if (isHorizontal) {
+ axisTarget = {
+ x: layout5.x,
+ width: layout5.width
+ };
+ seriesTarget = {
+ y: layout5.y,
+ height: layout5.height
+ };
+ } else {
+ axisTarget = {
+ y: layout5.y,
+ height: layout5.height
+ };
+ seriesTarget = {
+ x: layout5.x,
+ width: layout5.width
+ };
+ }
+ if (!isChangeOrder) {
+ (isUpdate ? updateProps : initProps)(el, {
+ shape: seriesTarget
+ }, seriesAnimationModel, newIndex, null);
+ }
+ var axisAnimationModel = seriesAnimationModel ? realtimeSortCfg.baseAxis.model : null;
+ (isUpdate ? updateProps : initProps)(el, {
+ shape: axisTarget
+ }, axisAnimationModel, newIndex);
+}
+function checkPropertiesNotValid(obj, props) {
+ for (var i = 0; i < props.length; i++) {
+ if (!isFinite(obj[props[i]])) {
+ return true;
+ }
+ }
+ return false;
+}
+var rectPropties = ["x", "y", "width", "height"];
+var polarPropties = ["cx", "cy", "r", "startAngle", "endAngle"];
+var isValidLayout = {
+ cartesian2d: function(layout5) {
+ return !checkPropertiesNotValid(layout5, rectPropties);
+ },
+ polar: function(layout5) {
+ return !checkPropertiesNotValid(layout5, polarPropties);
+ }
+};
+var getLayout = {
+ cartesian2d: function(data, dataIndex, itemModel) {
+ var layout5 = data.getItemLayout(dataIndex);
+ var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout5) : 0;
+ var signX = layout5.width > 0 ? 1 : -1;
+ var signY = layout5.height > 0 ? 1 : -1;
+ return {
+ x: layout5.x + signX * fixedLineWidth / 2,
+ y: layout5.y + signY * fixedLineWidth / 2,
+ width: layout5.width - signX * fixedLineWidth,
+ height: layout5.height - signY * fixedLineWidth
+ };
+ },
+ polar: function(data, dataIndex, itemModel) {
+ var layout5 = data.getItemLayout(dataIndex);
+ return {
+ cx: layout5.cx,
+ cy: layout5.cy,
+ r0: layout5.r0,
+ r: layout5.r,
+ startAngle: layout5.startAngle,
+ endAngle: layout5.endAngle,
+ clockwise: layout5.clockwise
+ };
+ }
+};
+function isZeroOnPolar(layout5) {
+ return layout5.startAngle != null && layout5.endAngle != null && layout5.startAngle === layout5.endAngle;
+}
+function createPolarPositionMapping(isRadial) {
+ return function(isRadial2) {
+ var arcOrAngle = isRadial2 ? "Arc" : "Angle";
+ return function(position2) {
+ switch (position2) {
+ case "start":
+ case "insideStart":
+ case "end":
+ case "insideEnd":
+ return position2 + arcOrAngle;
+ default:
+ return position2;
+ }
+ };
+ }(isRadial);
+}
+function updateStyle(el, data, dataIndex, itemModel, layout5, seriesModel, isHorizontalOrRadial, isPolar) {
+ var style = data.getItemVisual(dataIndex, "style");
+ if (!isPolar) {
+ var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0;
+ el.setShape("r", borderRadius);
+ } else if (!seriesModel.get("roundCap")) {
+ var sectorShape = el.shape;
+ var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true);
+ extend(sectorShape, cornerRadius);
+ el.setShape(sectorShape);
+ }
+ el.useStyle(style);
+ var cursorStyle = itemModel.getShallow("cursor");
+ cursorStyle && el.attr("cursor", cursorStyle);
+ var labelPositionOutside = isPolar ? isHorizontalOrRadial ? layout5.r >= layout5.r0 ? "endArc" : "startArc" : layout5.endAngle >= layout5.startAngle ? "endAngle" : "startAngle" : isHorizontalOrRadial ? layout5.height >= 0 ? "bottom" : "top" : layout5.width >= 0 ? "right" : "left";
+ var labelStatesModels = getLabelStatesModels(itemModel);
+ setLabelStyle(el, labelStatesModels, {
+ labelFetcher: seriesModel,
+ labelDataIndex: dataIndex,
+ defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),
+ inheritColor: style.fill,
+ defaultOpacity: style.opacity,
+ defaultOutsidePosition: labelPositionOutside
+ });
+ var label = el.getTextContent();
+ if (isPolar && label) {
+ var position2 = itemModel.get(["label", "position"]);
+ el.textConfig.inside = position2 === "middle" ? true : null;
+ setSectorTextRotation(el, position2 === "outside" ? labelPositionOutside : position2, createPolarPositionMapping(isHorizontalOrRadial), itemModel.get(["label", "rotate"]));
+ }
+ setLabelValueAnimation(label, labelStatesModels, seriesModel.getRawValue(dataIndex), function(value) {
+ return getDefaultInterpolatedLabel(data, value);
+ });
+ var emphasisModel = itemModel.getModel(["emphasis"]);
+ toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ setStatesStylesFromModel(el, itemModel);
+ if (isZeroOnPolar(layout5)) {
+ el.style.fill = "none";
+ el.style.stroke = "none";
+ each(el.states, function(state) {
+ if (state.style) {
+ state.style.fill = state.style.stroke = "none";
+ }
+ });
+ }
+}
+function getLineWidth(itemModel, rawLayout) {
+ var borderColor = itemModel.get(["itemStyle", "borderColor"]);
+ if (!borderColor || borderColor === "none") {
+ return 0;
+ }
+ var lineWidth = itemModel.get(["itemStyle", "borderWidth"]) || 0;
+ var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);
+ var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);
+ return Math.min(lineWidth, width, height);
+}
+var LagePathShape = function() {
+ function LagePathShape2() {
+ }
+ return LagePathShape2;
+}();
+var LargePath = function(_super) {
+ __extends(LargePath2, _super);
+ function LargePath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "largeBar";
+ return _this;
+ }
+ LargePath2.prototype.getDefaultShape = function() {
+ return new LagePathShape();
+ };
+ LargePath2.prototype.buildPath = function(ctx, shape) {
+ var points4 = shape.points;
+ var baseDimIdx = this.baseDimIdx;
+ var valueDimIdx = 1 - this.baseDimIdx;
+ var startPoint = [];
+ var size = [];
+ var barWidth = this.barWidth;
+ for (var i = 0; i < points4.length; i += 3) {
+ size[baseDimIdx] = barWidth;
+ size[valueDimIdx] = points4[i + 2];
+ startPoint[baseDimIdx] = points4[i + baseDimIdx];
+ startPoint[valueDimIdx] = points4[i + valueDimIdx];
+ ctx.rect(startPoint[0], startPoint[1], size[0], size[1]);
+ }
+ };
+ return LargePath2;
+}(Path_default);
+function createLarge(seriesModel, group, progressiveEls, incremental) {
+ var data = seriesModel.getData();
+ var baseDimIdx = data.getLayout("valueAxisHorizontal") ? 1 : 0;
+ var largeDataIndices = data.getLayout("largeDataIndices");
+ var barWidth = data.getLayout("size");
+ var backgroundModel = seriesModel.getModel("backgroundStyle");
+ var bgPoints = data.getLayout("largeBackgroundPoints");
+ if (bgPoints) {
+ var bgEl = new LargePath({
+ shape: {
+ points: bgPoints
+ },
+ incremental: !!incremental,
+ silent: true,
+ z2: 0
+ });
+ bgEl.baseDimIdx = baseDimIdx;
+ bgEl.largeDataIndices = largeDataIndices;
+ bgEl.barWidth = barWidth;
+ bgEl.useStyle(backgroundModel.getItemStyle());
+ group.add(bgEl);
+ progressiveEls && progressiveEls.push(bgEl);
+ }
+ var el = new LargePath({
+ shape: {
+ points: data.getLayout("largePoints")
+ },
+ incremental: !!incremental,
+ ignoreCoarsePointer: true,
+ z2: 1
+ });
+ el.baseDimIdx = baseDimIdx;
+ el.largeDataIndices = largeDataIndices;
+ el.barWidth = barWidth;
+ group.add(el);
+ el.useStyle(data.getVisual("style"));
+ el.style.stroke = null;
+ getECData(el).seriesIndex = seriesModel.seriesIndex;
+ if (!seriesModel.get("silent")) {
+ el.on("mousedown", largePathUpdateDataIndex);
+ el.on("mousemove", largePathUpdateDataIndex);
+ }
+ progressiveEls && progressiveEls.push(el);
+}
+var largePathUpdateDataIndex = throttle(function(event) {
+ var largePath = this;
+ var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);
+ getECData(largePath).dataIndex = dataIndex >= 0 ? dataIndex : null;
+}, 30, false);
+function largePathFindDataIndex(largePath, x, y) {
+ var baseDimIdx = largePath.baseDimIdx;
+ var valueDimIdx = 1 - baseDimIdx;
+ var points4 = largePath.shape.points;
+ var largeDataIndices = largePath.largeDataIndices;
+ var startPoint = [];
+ var size = [];
+ var barWidth = largePath.barWidth;
+ for (var i = 0, len2 = points4.length / 3; i < len2; i++) {
+ var ii = i * 3;
+ size[baseDimIdx] = barWidth;
+ size[valueDimIdx] = points4[ii + 2];
+ startPoint[baseDimIdx] = points4[ii + baseDimIdx];
+ startPoint[valueDimIdx] = points4[ii + valueDimIdx];
+ if (size[valueDimIdx] < 0) {
+ startPoint[valueDimIdx] += size[valueDimIdx];
+ size[valueDimIdx] = -size[valueDimIdx];
+ }
+ if (x >= startPoint[0] && x <= startPoint[0] + size[0] && y >= startPoint[1] && y <= startPoint[1] + size[1]) {
+ return largeDataIndices[i];
+ }
+ }
+ return -1;
+}
+function createBackgroundShape(isHorizontalOrRadial, layout5, coord) {
+ if (isCoordinateSystemType(coord, "cartesian2d")) {
+ var rectShape = layout5;
+ var coordLayout = coord.getArea();
+ return {
+ x: isHorizontalOrRadial ? rectShape.x : coordLayout.x,
+ y: isHorizontalOrRadial ? coordLayout.y : rectShape.y,
+ width: isHorizontalOrRadial ? rectShape.width : coordLayout.width,
+ height: isHorizontalOrRadial ? coordLayout.height : rectShape.height
+ };
+ } else {
+ var coordLayout = coord.getArea();
+ var sectorShape = layout5;
+ return {
+ cx: coordLayout.cx,
+ cy: coordLayout.cy,
+ r0: isHorizontalOrRadial ? coordLayout.r0 : sectorShape.r0,
+ r: isHorizontalOrRadial ? coordLayout.r : sectorShape.r,
+ startAngle: isHorizontalOrRadial ? sectorShape.startAngle : 0,
+ endAngle: isHorizontalOrRadial ? sectorShape.endAngle : Math.PI * 2
+ };
+ }
+}
+function createBackgroundEl(coord, isHorizontalOrRadial, layout5) {
+ var ElementClz = coord.type === "polar" ? Sector_default : Rect_default;
+ return new ElementClz({
+ shape: createBackgroundShape(isHorizontalOrRadial, layout5, coord),
+ silent: true,
+ z2: 0
+ });
+}
+var BarView_default = BarView;
+
+// node_modules/echarts/lib/chart/bar/install.js
+function install4(registers) {
+ registers.registerChartView(BarView_default);
+ registers.registerSeriesModel(BarSeries_default);
+ registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, "bar"));
+ registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("bar"));
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, dataSample("bar"));
+ registers.registerAction({
+ type: "changeAxisOrder",
+ event: "changeAxisOrder",
+ update: "update"
+ }, function(payload, ecModel) {
+ var componentType = payload.componentType || "series";
+ ecModel.eachComponent({
+ mainType: componentType,
+ query: payload
+ }, function(componentModel) {
+ if (payload.sortInfo) {
+ componentModel.axis.setCategorySortInfo(payload.sortInfo);
+ }
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/pie/pieLayout.js
+var PI29 = Math.PI * 2;
+var RADIAN = Math.PI / 180;
+function getViewRect(seriesModel, api) {
+ return getLayoutRect(seriesModel.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+}
+function getBasicPieLayout(seriesModel, api) {
+ var viewRect2 = getViewRect(seriesModel, api);
+ var center3 = seriesModel.get("center");
+ var radius = seriesModel.get("radius");
+ if (!isArray(radius)) {
+ radius = [0, radius];
+ }
+ var width = parsePercent2(viewRect2.width, api.getWidth());
+ var height = parsePercent2(viewRect2.height, api.getHeight());
+ var size = Math.min(width, height);
+ var r0 = parsePercent2(radius[0], size / 2);
+ var r = parsePercent2(radius[1], size / 2);
+ var cx;
+ var cy;
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys) {
+ var point = coordSys.dataToPoint(center3);
+ cx = point[0] || 0;
+ cy = point[1] || 0;
+ } else {
+ if (!isArray(center3)) {
+ center3 = [center3, center3];
+ }
+ cx = parsePercent2(center3[0], width) + viewRect2.x;
+ cy = parsePercent2(center3[1], height) + viewRect2.y;
+ }
+ return {
+ cx,
+ cy,
+ r0,
+ r
+ };
+}
+function pieLayout(seriesType2, ecModel, api) {
+ ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
+ var data = seriesModel.getData();
+ var valueDim = data.mapDimension("value");
+ var viewRect2 = getViewRect(seriesModel, api);
+ var _a2 = getBasicPieLayout(seriesModel, api), cx = _a2.cx, cy = _a2.cy, r = _a2.r, r0 = _a2.r0;
+ var startAngle = -seriesModel.get("startAngle") * RADIAN;
+ var endAngle = seriesModel.get("endAngle");
+ var padAngle = seriesModel.get("padAngle") * RADIAN;
+ endAngle = endAngle === "auto" ? startAngle - PI29 : -endAngle * RADIAN;
+ var minAngle = seriesModel.get("minAngle") * RADIAN;
+ var minAndPadAngle = minAngle + padAngle;
+ var validDataCount = 0;
+ data.each(valueDim, function(value) {
+ !isNaN(value) && validDataCount++;
+ });
+ var sum2 = data.getSum(valueDim);
+ var unitRadian = Math.PI / (sum2 || validDataCount) * 2;
+ var clockwise = seriesModel.get("clockwise");
+ var roseType = seriesModel.get("roseType");
+ var stillShowZeroSum = seriesModel.get("stillShowZeroSum");
+ var extent3 = data.getDataExtent(valueDim);
+ extent3[0] = 0;
+ var dir3 = clockwise ? 1 : -1;
+ var angles = [startAngle, endAngle];
+ var halfPadAngle = dir3 * padAngle / 2;
+ normalizeArcAngles(angles, !clockwise);
+ startAngle = angles[0], endAngle = angles[1];
+ var layoutData = getSeriesLayoutData(seriesModel);
+ layoutData.startAngle = startAngle;
+ layoutData.endAngle = endAngle;
+ layoutData.clockwise = clockwise;
+ var angleRange = Math.abs(endAngle - startAngle);
+ var restAngle = angleRange;
+ var valueSumLargerThanMinAngle = 0;
+ var currentAngle = startAngle;
+ data.setLayout({
+ viewRect: viewRect2,
+ r
+ });
+ data.each(valueDim, function(value, idx) {
+ var angle;
+ if (isNaN(value)) {
+ data.setItemLayout(idx, {
+ angle: NaN,
+ startAngle: NaN,
+ endAngle: NaN,
+ clockwise,
+ cx,
+ cy,
+ r0,
+ r: roseType ? NaN : r
+ });
+ return;
+ }
+ if (roseType !== "area") {
+ angle = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;
+ } else {
+ angle = angleRange / validDataCount;
+ }
+ if (angle < minAndPadAngle) {
+ angle = minAndPadAngle;
+ restAngle -= minAndPadAngle;
+ } else {
+ valueSumLargerThanMinAngle += value;
+ }
+ var endAngle2 = currentAngle + dir3 * angle;
+ var actualStartAngle = 0;
+ var actualEndAngle = 0;
+ if (padAngle > angle) {
+ actualStartAngle = currentAngle + dir3 * angle / 2;
+ actualEndAngle = actualStartAngle;
+ } else {
+ actualStartAngle = currentAngle + halfPadAngle;
+ actualEndAngle = endAngle2 - halfPadAngle;
+ }
+ data.setItemLayout(idx, {
+ angle,
+ startAngle: actualStartAngle,
+ endAngle: actualEndAngle,
+ clockwise,
+ cx,
+ cy,
+ r0,
+ r: roseType ? linearMap(value, extent3, [r0, r]) : r
+ });
+ currentAngle = endAngle2;
+ });
+ if (restAngle < PI29 && validDataCount) {
+ if (restAngle <= 1e-3) {
+ var angle_1 = angleRange / validDataCount;
+ data.each(valueDim, function(value, idx) {
+ if (!isNaN(value)) {
+ var layout_1 = data.getItemLayout(idx);
+ layout_1.angle = angle_1;
+ var actualStartAngle = 0;
+ var actualEndAngle = 0;
+ if (angle_1 < padAngle) {
+ actualStartAngle = startAngle + dir3 * (idx + 1 / 2) * angle_1;
+ actualEndAngle = actualStartAngle;
+ } else {
+ actualStartAngle = startAngle + dir3 * idx * angle_1 + halfPadAngle;
+ actualEndAngle = startAngle + dir3 * (idx + 1) * angle_1 - halfPadAngle;
+ }
+ layout_1.startAngle = actualStartAngle;
+ layout_1.endAngle = actualEndAngle;
+ }
+ });
+ } else {
+ unitRadian = restAngle / valueSumLargerThanMinAngle;
+ currentAngle = startAngle;
+ data.each(valueDim, function(value, idx) {
+ if (!isNaN(value)) {
+ var layout_2 = data.getItemLayout(idx);
+ var angle = layout_2.angle === minAndPadAngle ? minAndPadAngle : value * unitRadian;
+ var actualStartAngle = 0;
+ var actualEndAngle = 0;
+ if (angle < padAngle) {
+ actualStartAngle = currentAngle + dir3 * angle / 2;
+ actualEndAngle = actualStartAngle;
+ } else {
+ actualStartAngle = currentAngle + halfPadAngle;
+ actualEndAngle = currentAngle + dir3 * angle - halfPadAngle;
+ }
+ layout_2.startAngle = actualStartAngle;
+ layout_2.endAngle = actualEndAngle;
+ currentAngle += dir3 * angle;
+ }
+ });
+ }
+ }
+ });
+}
+var getSeriesLayoutData = makeInner();
+
+// node_modules/echarts/lib/processor/dataFilter.js
+function dataFilter(seriesType2) {
+ return {
+ seriesType: seriesType2,
+ reset: function(seriesModel, ecModel) {
+ var legendModels = ecModel.findComponents({
+ mainType: "legend"
+ });
+ if (!legendModels || !legendModels.length) {
+ return;
+ }
+ var data = seriesModel.getData();
+ data.filterSelf(function(idx) {
+ var name = data.getName(idx);
+ for (var i = 0; i < legendModels.length; i++) {
+ if (!legendModels[i].isSelected(name)) {
+ return false;
+ }
+ }
+ return true;
+ });
+ }
+ };
+}
+
+// node_modules/echarts/lib/chart/pie/labelLayout.js
+var RADIAN2 = Math.PI / 180;
+function adjustSingleSide(list, cx, cy, r, dir3, viewWidth, viewHeight, viewLeft, viewTop, farthestX) {
+ if (list.length < 2) {
+ return;
+ }
+ ;
+ function recalculateXOnSemiToAlignOnEllipseCurve(semi) {
+ var rB = semi.rB;
+ var rB2 = rB * rB;
+ for (var i2 = 0; i2 < semi.list.length; i2++) {
+ var item = semi.list[i2];
+ var dy = Math.abs(item.label.y - cy);
+ var rA = r + item.len;
+ var rA2 = rA * rA;
+ var dx2 = Math.sqrt(Math.abs((1 - dy * dy / rB2) * rA2));
+ var newX = cx + (dx2 + item.len2) * dir3;
+ var deltaX = newX - item.label.x;
+ var newTargetWidth = item.targetTextWidth - deltaX * dir3;
+ constrainTextWidth(item, newTargetWidth, true);
+ item.label.x = newX;
+ }
+ }
+ function recalculateX(items) {
+ var topSemi = {
+ list: [],
+ maxY: 0
+ };
+ var bottomSemi = {
+ list: [],
+ maxY: 0
+ };
+ for (var i2 = 0; i2 < items.length; i2++) {
+ if (items[i2].labelAlignTo !== "none") {
+ continue;
+ }
+ var item = items[i2];
+ var semi = item.label.y > cy ? bottomSemi : topSemi;
+ var dy = Math.abs(item.label.y - cy);
+ if (dy >= semi.maxY) {
+ var dx2 = item.label.x - cx - item.len2 * dir3;
+ var rA = r + item.len;
+ var rB = Math.abs(dx2) < rA ? Math.sqrt(dy * dy / (1 - dx2 * dx2 / rA / rA)) : rA;
+ semi.rB = rB;
+ semi.maxY = dy;
+ }
+ semi.list.push(item);
+ }
+ recalculateXOnSemiToAlignOnEllipseCurve(topSemi);
+ recalculateXOnSemiToAlignOnEllipseCurve(bottomSemi);
+ }
+ var len2 = list.length;
+ for (var i = 0; i < len2; i++) {
+ if (list[i].position === "outer" && list[i].labelAlignTo === "labelLine") {
+ var dx = list[i].label.x - farthestX;
+ list[i].linePoints[1][0] += dx;
+ list[i].label.x = farthestX;
+ }
+ }
+ if (shiftLayoutOnY(list, viewTop, viewTop + viewHeight)) {
+ recalculateX(list);
+ }
+}
+function avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop) {
+ var leftList = [];
+ var rightList = [];
+ var leftmostX = Number.MAX_VALUE;
+ var rightmostX = -Number.MAX_VALUE;
+ for (var i = 0; i < labelLayoutList.length; i++) {
+ var label = labelLayoutList[i].label;
+ if (isPositionCenter(labelLayoutList[i])) {
+ continue;
+ }
+ if (label.x < cx) {
+ leftmostX = Math.min(leftmostX, label.x);
+ leftList.push(labelLayoutList[i]);
+ } else {
+ rightmostX = Math.max(rightmostX, label.x);
+ rightList.push(labelLayoutList[i]);
+ }
+ }
+ for (var i = 0; i < labelLayoutList.length; i++) {
+ var layout5 = labelLayoutList[i];
+ if (!isPositionCenter(layout5) && layout5.linePoints) {
+ if (layout5.labelStyleWidth != null) {
+ continue;
+ }
+ var label = layout5.label;
+ var linePoints = layout5.linePoints;
+ var targetTextWidth = void 0;
+ if (layout5.labelAlignTo === "edge") {
+ if (label.x < cx) {
+ targetTextWidth = linePoints[2][0] - layout5.labelDistance - viewLeft - layout5.edgeDistance;
+ } else {
+ targetTextWidth = viewLeft + viewWidth - layout5.edgeDistance - linePoints[2][0] - layout5.labelDistance;
+ }
+ } else if (layout5.labelAlignTo === "labelLine") {
+ if (label.x < cx) {
+ targetTextWidth = leftmostX - viewLeft - layout5.bleedMargin;
+ } else {
+ targetTextWidth = viewLeft + viewWidth - rightmostX - layout5.bleedMargin;
+ }
+ } else {
+ if (label.x < cx) {
+ targetTextWidth = label.x - viewLeft - layout5.bleedMargin;
+ } else {
+ targetTextWidth = viewLeft + viewWidth - label.x - layout5.bleedMargin;
+ }
+ }
+ layout5.targetTextWidth = targetTextWidth;
+ constrainTextWidth(layout5, targetTextWidth);
+ }
+ }
+ adjustSingleSide(rightList, cx, cy, r, 1, viewWidth, viewHeight, viewLeft, viewTop, rightmostX);
+ adjustSingleSide(leftList, cx, cy, r, -1, viewWidth, viewHeight, viewLeft, viewTop, leftmostX);
+ for (var i = 0; i < labelLayoutList.length; i++) {
+ var layout5 = labelLayoutList[i];
+ if (!isPositionCenter(layout5) && layout5.linePoints) {
+ var label = layout5.label;
+ var linePoints = layout5.linePoints;
+ var isAlignToEdge = layout5.labelAlignTo === "edge";
+ var padding = label.style.padding;
+ var paddingH = padding ? padding[1] + padding[3] : 0;
+ var extraPaddingH = label.style.backgroundColor ? 0 : paddingH;
+ var realTextWidth = layout5.rect.width + extraPaddingH;
+ var dist3 = linePoints[1][0] - linePoints[2][0];
+ if (isAlignToEdge) {
+ if (label.x < cx) {
+ linePoints[2][0] = viewLeft + layout5.edgeDistance + realTextWidth + layout5.labelDistance;
+ } else {
+ linePoints[2][0] = viewLeft + viewWidth - layout5.edgeDistance - realTextWidth - layout5.labelDistance;
+ }
+ } else {
+ if (label.x < cx) {
+ linePoints[2][0] = label.x + layout5.labelDistance;
+ } else {
+ linePoints[2][0] = label.x - layout5.labelDistance;
+ }
+ linePoints[1][0] = linePoints[2][0] + dist3;
+ }
+ linePoints[1][1] = linePoints[2][1] = label.y;
+ }
+ }
+}
+function constrainTextWidth(layout5, availableWidth, forceRecalculate) {
+ if (forceRecalculate === void 0) {
+ forceRecalculate = false;
+ }
+ if (layout5.labelStyleWidth != null) {
+ return;
+ }
+ var label = layout5.label;
+ var style = label.style;
+ var textRect = layout5.rect;
+ var bgColor = style.backgroundColor;
+ var padding = style.padding;
+ var paddingH = padding ? padding[1] + padding[3] : 0;
+ var overflow = style.overflow;
+ var oldOuterWidth = textRect.width + (bgColor ? 0 : paddingH);
+ if (availableWidth < oldOuterWidth || forceRecalculate) {
+ var oldHeight = textRect.height;
+ if (overflow && overflow.match("break")) {
+ label.setStyle("backgroundColor", null);
+ label.setStyle("width", availableWidth - paddingH);
+ var innerRect = label.getBoundingRect();
+ label.setStyle("width", Math.ceil(innerRect.width));
+ label.setStyle("backgroundColor", bgColor);
+ } else {
+ var availableInnerWidth = availableWidth - paddingH;
+ var newWidth = availableWidth < oldOuterWidth ? availableInnerWidth : forceRecalculate ? availableInnerWidth > layout5.unconstrainedWidth ? null : availableInnerWidth : null;
+ label.setStyle("width", newWidth);
+ }
+ var newRect = label.getBoundingRect();
+ textRect.width = newRect.width;
+ var margin = (label.style.margin || 0) + 2.1;
+ textRect.height = newRect.height + margin;
+ textRect.y -= (textRect.height - oldHeight) / 2;
+ }
+}
+function isPositionCenter(sectorShape) {
+ return sectorShape.position === "center";
+}
+function pieLabelLayout(seriesModel) {
+ var data = seriesModel.getData();
+ var labelLayoutList = [];
+ var cx;
+ var cy;
+ var hasLabelRotate = false;
+ var minShowLabelRadian = (seriesModel.get("minShowLabelAngle") || 0) * RADIAN2;
+ var viewRect2 = data.getLayout("viewRect");
+ var r = data.getLayout("r");
+ var viewWidth = viewRect2.width;
+ var viewLeft = viewRect2.x;
+ var viewTop = viewRect2.y;
+ var viewHeight = viewRect2.height;
+ function setNotShow(el) {
+ el.ignore = true;
+ }
+ function isLabelShown(label2) {
+ if (!label2.ignore) {
+ return true;
+ }
+ for (var key in label2.states) {
+ if (label2.states[key].ignore === false) {
+ return true;
+ }
+ }
+ return false;
+ }
+ data.each(function(idx) {
+ var sector = data.getItemGraphicEl(idx);
+ var sectorShape = sector.shape;
+ var label2 = sector.getTextContent();
+ var labelLine2 = sector.getTextGuideLine();
+ var itemModel = data.getItemModel(idx);
+ var labelModel = itemModel.getModel("label");
+ var labelPosition = labelModel.get("position") || itemModel.get(["emphasis", "label", "position"]);
+ var labelDistance = labelModel.get("distanceToLabelLine");
+ var labelAlignTo = labelModel.get("alignTo");
+ var edgeDistance = parsePercent2(labelModel.get("edgeDistance"), viewWidth);
+ var bleedMargin = labelModel.get("bleedMargin");
+ var labelLineModel = itemModel.getModel("labelLine");
+ var labelLineLen = labelLineModel.get("length");
+ labelLineLen = parsePercent2(labelLineLen, viewWidth);
+ var labelLineLen2 = labelLineModel.get("length2");
+ labelLineLen2 = parsePercent2(labelLineLen2, viewWidth);
+ if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {
+ each(label2.states, setNotShow);
+ label2.ignore = true;
+ if (labelLine2) {
+ each(labelLine2.states, setNotShow);
+ labelLine2.ignore = true;
+ }
+ return;
+ }
+ if (!isLabelShown(label2)) {
+ return;
+ }
+ var midAngle = (sectorShape.startAngle + sectorShape.endAngle) / 2;
+ var nx = Math.cos(midAngle);
+ var ny = Math.sin(midAngle);
+ var textX;
+ var textY;
+ var linePoints2;
+ var textAlign;
+ cx = sectorShape.cx;
+ cy = sectorShape.cy;
+ var isLabelInside = labelPosition === "inside" || labelPosition === "inner";
+ if (labelPosition === "center") {
+ textX = sectorShape.cx;
+ textY = sectorShape.cy;
+ textAlign = "center";
+ } else {
+ var x1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * nx : sectorShape.r * nx) + cx;
+ var y1 = (isLabelInside ? (sectorShape.r + sectorShape.r0) / 2 * ny : sectorShape.r * ny) + cy;
+ textX = x1 + nx * 3;
+ textY = y1 + ny * 3;
+ if (!isLabelInside) {
+ var x2 = x1 + nx * (labelLineLen + r - sectorShape.r);
+ var y2 = y1 + ny * (labelLineLen + r - sectorShape.r);
+ var x3 = x2 + (nx < 0 ? -1 : 1) * labelLineLen2;
+ var y3 = y2;
+ if (labelAlignTo === "edge") {
+ textX = nx < 0 ? viewLeft + edgeDistance : viewLeft + viewWidth - edgeDistance;
+ } else {
+ textX = x3 + (nx < 0 ? -labelDistance : labelDistance);
+ }
+ textY = y3;
+ linePoints2 = [[x1, y1], [x2, y2], [x3, y3]];
+ }
+ textAlign = isLabelInside ? "center" : labelAlignTo === "edge" ? nx > 0 ? "right" : "left" : nx > 0 ? "left" : "right";
+ }
+ var PI11 = Math.PI;
+ var labelRotate = 0;
+ var rotate2 = labelModel.get("rotate");
+ if (isNumber(rotate2)) {
+ labelRotate = rotate2 * (PI11 / 180);
+ } else if (labelPosition === "center") {
+ labelRotate = 0;
+ } else if (rotate2 === "radial" || rotate2 === true) {
+ var radialAngle = nx < 0 ? -midAngle + PI11 : -midAngle;
+ labelRotate = radialAngle;
+ } else if (rotate2 === "tangential" && labelPosition !== "outside" && labelPosition !== "outer") {
+ var rad = Math.atan2(nx, ny);
+ if (rad < 0) {
+ rad = PI11 * 2 + rad;
+ }
+ var isDown = ny > 0;
+ if (isDown) {
+ rad = PI11 + rad;
+ }
+ labelRotate = rad - PI11;
+ }
+ hasLabelRotate = !!labelRotate;
+ label2.x = textX;
+ label2.y = textY;
+ label2.rotation = labelRotate;
+ label2.setStyle({
+ verticalAlign: "middle"
+ });
+ if (!isLabelInside) {
+ var textRect = label2.getBoundingRect().clone();
+ textRect.applyTransform(label2.getComputedTransform());
+ var margin = (label2.style.margin || 0) + 2.1;
+ textRect.y -= margin / 2;
+ textRect.height += margin;
+ labelLayoutList.push({
+ label: label2,
+ labelLine: labelLine2,
+ position: labelPosition,
+ len: labelLineLen,
+ len2: labelLineLen2,
+ minTurnAngle: labelLineModel.get("minTurnAngle"),
+ maxSurfaceAngle: labelLineModel.get("maxSurfaceAngle"),
+ surfaceNormal: new Point_default(nx, ny),
+ linePoints: linePoints2,
+ textAlign,
+ labelDistance,
+ labelAlignTo,
+ edgeDistance,
+ bleedMargin,
+ rect: textRect,
+ unconstrainedWidth: textRect.width,
+ labelStyleWidth: label2.style.width
+ });
+ } else {
+ label2.setStyle({
+ align: textAlign
+ });
+ var selectState2 = label2.states.select;
+ if (selectState2) {
+ selectState2.x += label2.x;
+ selectState2.y += label2.y;
+ }
+ }
+ sector.setTextConfig({
+ inside: isLabelInside
+ });
+ });
+ if (!hasLabelRotate && seriesModel.get("avoidLabelOverlap")) {
+ avoidOverlap(labelLayoutList, cx, cy, r, viewWidth, viewHeight, viewLeft, viewTop);
+ }
+ for (var i = 0; i < labelLayoutList.length; i++) {
+ var layout5 = labelLayoutList[i];
+ var label = layout5.label;
+ var labelLine = layout5.labelLine;
+ var notShowLabel = isNaN(label.x) || isNaN(label.y);
+ if (label) {
+ label.setStyle({
+ align: layout5.textAlign
+ });
+ if (notShowLabel) {
+ each(label.states, setNotShow);
+ label.ignore = true;
+ }
+ var selectState = label.states.select;
+ if (selectState) {
+ selectState.x += label.x;
+ selectState.y += label.y;
+ }
+ }
+ if (labelLine) {
+ var linePoints = layout5.linePoints;
+ if (notShowLabel || !linePoints) {
+ each(labelLine.states, setNotShow);
+ labelLine.ignore = true;
+ } else {
+ limitTurnAngle(linePoints, layout5.minTurnAngle);
+ limitSurfaceAngle(linePoints, layout5.surfaceNormal, layout5.maxSurfaceAngle);
+ labelLine.setShape({
+ points: linePoints
+ });
+ label.__hostTarget.textGuideLineConfig = {
+ anchor: new Point_default(linePoints[0][0], linePoints[0][1])
+ };
+ }
+ }
+ }
+}
+
+// node_modules/echarts/lib/chart/pie/PieView.js
+var PiePiece = function(_super) {
+ __extends(PiePiece2, _super);
+ function PiePiece2(data, idx, startAngle) {
+ var _this = _super.call(this) || this;
+ _this.z2 = 2;
+ var text = new Text_default();
+ _this.setTextContent(text);
+ _this.updateData(data, idx, startAngle, true);
+ return _this;
+ }
+ PiePiece2.prototype.updateData = function(data, idx, startAngle, firstCreate) {
+ var sector = this;
+ var seriesModel = data.hostModel;
+ var itemModel = data.getItemModel(idx);
+ var emphasisModel = itemModel.getModel("emphasis");
+ var layout5 = data.getItemLayout(idx);
+ var sectorShape = extend(getSectorCornerRadius(itemModel.getModel("itemStyle"), layout5, true), layout5);
+ if (isNaN(sectorShape.startAngle)) {
+ sector.setShape(sectorShape);
+ return;
+ }
+ if (firstCreate) {
+ sector.setShape(sectorShape);
+ var animationType = seriesModel.getShallow("animationType");
+ if (seriesModel.ecModel.ssr) {
+ initProps(sector, {
+ scaleX: 0,
+ scaleY: 0
+ }, seriesModel, {
+ dataIndex: idx,
+ isFrom: true
+ });
+ sector.originX = sectorShape.cx;
+ sector.originY = sectorShape.cy;
+ } else if (animationType === "scale") {
+ sector.shape.r = layout5.r0;
+ initProps(sector, {
+ shape: {
+ r: layout5.r
+ }
+ }, seriesModel, idx);
+ } else {
+ if (startAngle != null) {
+ sector.setShape({
+ startAngle,
+ endAngle: startAngle
+ });
+ initProps(sector, {
+ shape: {
+ startAngle: layout5.startAngle,
+ endAngle: layout5.endAngle
+ }
+ }, seriesModel, idx);
+ } else {
+ sector.shape.endAngle = layout5.startAngle;
+ updateProps(sector, {
+ shape: {
+ endAngle: layout5.endAngle
+ }
+ }, seriesModel, idx);
+ }
+ }
+ } else {
+ saveOldStyle(sector);
+ updateProps(sector, {
+ shape: sectorShape
+ }, seriesModel, idx);
+ }
+ sector.useStyle(data.getItemVisual(idx, "style"));
+ setStatesStylesFromModel(sector, itemModel);
+ var midAngle = (layout5.startAngle + layout5.endAngle) / 2;
+ var offset = seriesModel.get("selectedOffset");
+ var dx = Math.cos(midAngle) * offset;
+ var dy = Math.sin(midAngle) * offset;
+ var cursorStyle = itemModel.getShallow("cursor");
+ cursorStyle && sector.attr("cursor", cursorStyle);
+ this._updateLabel(seriesModel, data, idx);
+ sector.ensureState("emphasis").shape = extend({
+ r: layout5.r + (emphasisModel.get("scale") ? emphasisModel.get("scaleSize") || 0 : 0)
+ }, getSectorCornerRadius(emphasisModel.getModel("itemStyle"), layout5));
+ extend(sector.ensureState("select"), {
+ x: dx,
+ y: dy,
+ shape: getSectorCornerRadius(itemModel.getModel(["select", "itemStyle"]), layout5)
+ });
+ extend(sector.ensureState("blur"), {
+ shape: getSectorCornerRadius(itemModel.getModel(["blur", "itemStyle"]), layout5)
+ });
+ var labelLine = sector.getTextGuideLine();
+ var labelText = sector.getTextContent();
+ labelLine && extend(labelLine.ensureState("select"), {
+ x: dx,
+ y: dy
+ });
+ extend(labelText.ensureState("select"), {
+ x: dx,
+ y: dy
+ });
+ toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ };
+ PiePiece2.prototype._updateLabel = function(seriesModel, data, idx) {
+ var sector = this;
+ var itemModel = data.getItemModel(idx);
+ var labelLineModel = itemModel.getModel("labelLine");
+ var style = data.getItemVisual(idx, "style");
+ var visualColor = style && style.fill;
+ var visualOpacity = style && style.opacity;
+ setLabelStyle(sector, getLabelStatesModels(itemModel), {
+ labelFetcher: data.hostModel,
+ labelDataIndex: idx,
+ inheritColor: visualColor,
+ defaultOpacity: visualOpacity,
+ defaultText: seriesModel.getFormattedLabel(idx, "normal") || data.getName(idx)
+ });
+ var labelText = sector.getTextContent();
+ sector.setTextConfig({
+ position: null,
+ rotation: null
+ });
+ labelText.attr({
+ z2: 10
+ });
+ var labelPosition = seriesModel.get(["label", "position"]);
+ if (labelPosition !== "outside" && labelPosition !== "outer") {
+ sector.removeTextGuideLine();
+ } else {
+ var polyline = this.getTextGuideLine();
+ if (!polyline) {
+ polyline = new Polyline_default();
+ this.setTextGuideLine(polyline);
+ }
+ setLabelLineStyle(this, getLabelLineStatesModels(itemModel), {
+ stroke: visualColor,
+ opacity: retrieve3(labelLineModel.get(["lineStyle", "opacity"]), visualOpacity, 1)
+ });
+ }
+ };
+ return PiePiece2;
+}(Sector_default);
+var PieView = function(_super) {
+ __extends(PieView2, _super);
+ function PieView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.ignoreLabelLineUpdate = true;
+ return _this;
+ }
+ PieView2.prototype.render = function(seriesModel, ecModel, api, payload) {
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ var group = this.group;
+ var startAngle;
+ if (!oldData && data.count() > 0) {
+ var shape = data.getItemLayout(0);
+ for (var s = 1; isNaN(shape && shape.startAngle) && s < data.count(); ++s) {
+ shape = data.getItemLayout(s);
+ }
+ if (shape) {
+ startAngle = shape.startAngle;
+ }
+ }
+ if (this._emptyCircleSector) {
+ group.remove(this._emptyCircleSector);
+ }
+ if (data.count() === 0 && seriesModel.get("showEmptyCircle")) {
+ var layoutData = getSeriesLayoutData(seriesModel);
+ var sector = new Sector_default({
+ shape: extend(getBasicPieLayout(seriesModel, api), layoutData)
+ });
+ sector.useStyle(seriesModel.getModel("emptyCircleStyle").getItemStyle());
+ this._emptyCircleSector = sector;
+ group.add(sector);
+ }
+ data.diff(oldData).add(function(idx) {
+ var piePiece = new PiePiece(data, idx, startAngle);
+ data.setItemGraphicEl(idx, piePiece);
+ group.add(piePiece);
+ }).update(function(newIdx, oldIdx) {
+ var piePiece = oldData.getItemGraphicEl(oldIdx);
+ piePiece.updateData(data, newIdx, startAngle);
+ piePiece.off("click");
+ group.add(piePiece);
+ data.setItemGraphicEl(newIdx, piePiece);
+ }).remove(function(idx) {
+ var piePiece = oldData.getItemGraphicEl(idx);
+ removeElementWithFadeOut(piePiece, seriesModel, idx);
+ }).execute();
+ pieLabelLayout(seriesModel);
+ if (seriesModel.get("animationTypeUpdate") !== "expansion") {
+ this._data = data;
+ }
+ };
+ PieView2.prototype.dispose = function() {
+ };
+ PieView2.prototype.containPoint = function(point, seriesModel) {
+ var data = seriesModel.getData();
+ var itemLayout = data.getItemLayout(0);
+ if (itemLayout) {
+ var dx = point[0] - itemLayout.cx;
+ var dy = point[1] - itemLayout.cy;
+ var radius = Math.sqrt(dx * dx + dy * dy);
+ return radius <= itemLayout.r && radius >= itemLayout.r0;
+ }
+ };
+ PieView2.type = "pie";
+ return PieView2;
+}(Chart_default);
+var PieView_default = PieView;
+
+// node_modules/echarts/lib/chart/helper/createSeriesDataSimply.js
+function createSeriesDataSimply(seriesModel, opt, nameList) {
+ opt = isArray(opt) && {
+ coordDimensions: opt
+ } || extend({
+ encodeDefine: seriesModel.getEncode()
+ }, opt);
+ var source = seriesModel.getSource();
+ var dimensions = prepareSeriesDataSchema(source, opt).dimensions;
+ var list = new SeriesData_default(dimensions, seriesModel);
+ list.initData(source, nameList);
+ return list;
+}
+
+// node_modules/echarts/lib/visual/LegendVisualProvider.js
+var LegendVisualProvider = function() {
+ function LegendVisualProvider2(getDataWithEncodedVisual, getRawData2) {
+ this._getDataWithEncodedVisual = getDataWithEncodedVisual;
+ this._getRawData = getRawData2;
+ }
+ LegendVisualProvider2.prototype.getAllNames = function() {
+ var rawData = this._getRawData();
+ return rawData.mapArray(rawData.getName);
+ };
+ LegendVisualProvider2.prototype.containName = function(name) {
+ var rawData = this._getRawData();
+ return rawData.indexOfName(name) >= 0;
+ };
+ LegendVisualProvider2.prototype.indexOfName = function(name) {
+ var dataWithEncodedVisual = this._getDataWithEncodedVisual();
+ return dataWithEncodedVisual.indexOfName(name);
+ };
+ LegendVisualProvider2.prototype.getItemVisual = function(dataIndex, key) {
+ var dataWithEncodedVisual = this._getDataWithEncodedVisual();
+ return dataWithEncodedVisual.getItemVisual(dataIndex, key);
+ };
+ return LegendVisualProvider2;
+}();
+var LegendVisualProvider_default = LegendVisualProvider;
+
+// node_modules/echarts/lib/chart/pie/PieSeries.js
+var innerData = makeInner();
+var PieSeriesModel = function(_super) {
+ __extends(PieSeriesModel2, _super);
+ function PieSeriesModel2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ PieSeriesModel2.prototype.init = function(option) {
+ _super.prototype.init.apply(this, arguments);
+ this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
+ this._defaultLabelLine(option);
+ };
+ PieSeriesModel2.prototype.mergeOption = function() {
+ _super.prototype.mergeOption.apply(this, arguments);
+ };
+ PieSeriesModel2.prototype.getInitialData = function() {
+ return createSeriesDataSimply(this, {
+ coordDimensions: ["value"],
+ encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
+ });
+ };
+ PieSeriesModel2.prototype.getDataParams = function(dataIndex) {
+ var data = this.getData();
+ var dataInner = innerData(data);
+ var seats = dataInner.seats;
+ if (!seats) {
+ var valueList_1 = [];
+ data.each(data.mapDimension("value"), function(value) {
+ valueList_1.push(value);
+ });
+ seats = dataInner.seats = getPercentSeats(valueList_1, data.hostModel.get("percentPrecision"));
+ }
+ var params = _super.prototype.getDataParams.call(this, dataIndex);
+ params.percent = seats[dataIndex] || 0;
+ params.$vars.push("percent");
+ return params;
+ };
+ PieSeriesModel2.prototype._defaultLabelLine = function(option) {
+ defaultEmphasis(option, "labelLine", ["show"]);
+ var labelLineNormalOpt = option.labelLine;
+ var labelLineEmphasisOpt = option.emphasis.labelLine;
+ labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;
+ labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;
+ };
+ PieSeriesModel2.type = "series.pie";
+ PieSeriesModel2.defaultOption = {
+ z: 2,
+ legendHoverLink: true,
+ colorBy: "data",
+ center: ["50%", "50%"],
+ radius: [0, "75%"],
+ clockwise: true,
+ startAngle: 90,
+ endAngle: "auto",
+ padAngle: 0,
+ minAngle: 0,
+ minShowLabelAngle: 0,
+ selectedOffset: 10,
+ percentPrecision: 2,
+ stillShowZeroSum: true,
+ left: 0,
+ top: 0,
+ right: 0,
+ bottom: 0,
+ width: null,
+ height: null,
+ label: {
+ rotate: 0,
+ show: true,
+ overflow: "truncate",
+ position: "outer",
+ alignTo: "none",
+ edgeDistance: "25%",
+ bleedMargin: 10,
+ distanceToLabelLine: 5
+ },
+ labelLine: {
+ show: true,
+ length: 15,
+ length2: 15,
+ smooth: false,
+ minTurnAngle: 90,
+ maxSurfaceAngle: 90,
+ lineStyle: {
+ width: 1,
+ type: "solid"
+ }
+ },
+ itemStyle: {
+ borderWidth: 1,
+ borderJoin: "round"
+ },
+ showEmptyCircle: true,
+ emptyCircleStyle: {
+ color: "lightgray",
+ opacity: 1
+ },
+ labelLayout: {
+ hideOverlap: true
+ },
+ emphasis: {
+ scale: true,
+ scaleSize: 5
+ },
+ avoidLabelOverlap: true,
+ animationType: "expansion",
+ animationDuration: 1e3,
+ animationTypeUpdate: "transition",
+ animationEasingUpdate: "cubicInOut",
+ animationDurationUpdate: 500,
+ animationEasing: "cubicInOut"
+ };
+ return PieSeriesModel2;
+}(Series_default);
+var PieSeries_default = PieSeriesModel;
+
+// node_modules/echarts/lib/processor/negativeDataFilter.js
+function negativeDataFilter(seriesType2) {
+ return {
+ seriesType: seriesType2,
+ reset: function(seriesModel, ecModel) {
+ var data = seriesModel.getData();
+ data.filterSelf(function(idx) {
+ var valueDim = data.mapDimension("value");
+ var curValue = data.get(valueDim, idx);
+ if (isNumber(curValue) && !isNaN(curValue) && curValue < 0) {
+ return false;
+ }
+ return true;
+ });
+ }
+ };
+}
+
+// node_modules/echarts/lib/chart/pie/install.js
+function install5(registers) {
+ registers.registerChartView(PieView_default);
+ registers.registerSeriesModel(PieSeries_default);
+ createLegacyDataSelectAction("pie", registers.registerAction);
+ registers.registerLayout(curry(pieLayout, "pie"));
+ registers.registerProcessor(dataFilter("pie"));
+ registers.registerProcessor(negativeDataFilter("pie"));
+}
+
+// node_modules/echarts/lib/chart/scatter/ScatterSeries.js
+var ScatterSeriesModel = function(_super) {
+ __extends(ScatterSeriesModel2, _super);
+ function ScatterSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ScatterSeriesModel2.type;
+ _this.hasSymbolVisual = true;
+ return _this;
+ }
+ ScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesData_default(null, this, {
+ useEncodeDefaulter: true
+ });
+ };
+ ScatterSeriesModel2.prototype.getProgressive = function() {
+ var progressive = this.option.progressive;
+ if (progressive == null) {
+ return this.option.large ? 5e3 : this.get("progressive");
+ }
+ return progressive;
+ };
+ ScatterSeriesModel2.prototype.getProgressiveThreshold = function() {
+ var progressiveThreshold = this.option.progressiveThreshold;
+ if (progressiveThreshold == null) {
+ return this.option.large ? 1e4 : this.get("progressiveThreshold");
+ }
+ return progressiveThreshold;
+ };
+ ScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
+ return selectors.point(data.getItemLayout(dataIndex));
+ };
+ ScatterSeriesModel2.prototype.getZLevelKey = function() {
+ return this.getData().count() > this.getProgressiveThreshold() ? this.id : "";
+ };
+ ScatterSeriesModel2.type = "series.scatter";
+ ScatterSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
+ ScatterSeriesModel2.defaultOption = {
+ coordinateSystem: "cartesian2d",
+ z: 2,
+ legendHoverLink: true,
+ symbolSize: 10,
+ large: false,
+ largeThreshold: 2e3,
+ itemStyle: {
+ opacity: 0.8
+ },
+ emphasis: {
+ scale: true
+ },
+ clip: true,
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ },
+ universalTransition: {
+ divideShape: "clone"
+ }
+ };
+ return ScatterSeriesModel2;
+}(Series_default);
+var ScatterSeries_default = ScatterSeriesModel;
+
+// node_modules/echarts/lib/chart/helper/LargeSymbolDraw.js
+var BOOST_SIZE_THRESHOLD = 4;
+var LargeSymbolPathShape = function() {
+ function LargeSymbolPathShape2() {
+ }
+ return LargeSymbolPathShape2;
+}();
+var LargeSymbolPath = function(_super) {
+ __extends(LargeSymbolPath2, _super);
+ function LargeSymbolPath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this._off = 0;
+ _this.hoverDataIdx = -1;
+ return _this;
+ }
+ LargeSymbolPath2.prototype.getDefaultShape = function() {
+ return new LargeSymbolPathShape();
+ };
+ LargeSymbolPath2.prototype.reset = function() {
+ this.notClear = false;
+ this._off = 0;
+ };
+ LargeSymbolPath2.prototype.buildPath = function(path, shape) {
+ var points4 = shape.points;
+ var size = shape.size;
+ var symbolProxy = this.symbolProxy;
+ var symbolProxyShape = symbolProxy.shape;
+ var ctx = path.getContext ? path.getContext() : path;
+ var canBoost = ctx && size[0] < BOOST_SIZE_THRESHOLD;
+ var softClipShape = this.softClipShape;
+ var i;
+ if (canBoost) {
+ this._ctx = ctx;
+ return;
+ }
+ this._ctx = null;
+ for (i = this._off; i < points4.length; ) {
+ var x = points4[i++];
+ var y = points4[i++];
+ if (isNaN(x) || isNaN(y)) {
+ continue;
+ }
+ if (softClipShape && !softClipShape.contain(x, y)) {
+ continue;
+ }
+ symbolProxyShape.x = x - size[0] / 2;
+ symbolProxyShape.y = y - size[1] / 2;
+ symbolProxyShape.width = size[0];
+ symbolProxyShape.height = size[1];
+ symbolProxy.buildPath(path, symbolProxyShape, true);
+ }
+ if (this.incremental) {
+ this._off = i;
+ this.notClear = true;
+ }
+ };
+ LargeSymbolPath2.prototype.afterBrush = function() {
+ var shape = this.shape;
+ var points4 = shape.points;
+ var size = shape.size;
+ var ctx = this._ctx;
+ var softClipShape = this.softClipShape;
+ var i;
+ if (!ctx) {
+ return;
+ }
+ for (i = this._off; i < points4.length; ) {
+ var x = points4[i++];
+ var y = points4[i++];
+ if (isNaN(x) || isNaN(y)) {
+ continue;
+ }
+ if (softClipShape && !softClipShape.contain(x, y)) {
+ continue;
+ }
+ ctx.fillRect(x - size[0] / 2, y - size[1] / 2, size[0], size[1]);
+ }
+ if (this.incremental) {
+ this._off = i;
+ this.notClear = true;
+ }
+ };
+ LargeSymbolPath2.prototype.findDataIndex = function(x, y) {
+ var shape = this.shape;
+ var points4 = shape.points;
+ var size = shape.size;
+ var w = Math.max(size[0], 4);
+ var h = Math.max(size[1], 4);
+ for (var idx = points4.length / 2 - 1; idx >= 0; idx--) {
+ var i = idx * 2;
+ var x0 = points4[i] - w / 2;
+ var y0 = points4[i + 1] - h / 2;
+ if (x >= x0 && y >= y0 && x <= x0 + w && y <= y0 + h) {
+ return idx;
+ }
+ }
+ return -1;
+ };
+ LargeSymbolPath2.prototype.contain = function(x, y) {
+ var localPos = this.transformCoordToLocal(x, y);
+ var rect = this.getBoundingRect();
+ x = localPos[0];
+ y = localPos[1];
+ if (rect.contain(x, y)) {
+ var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y);
+ return dataIdx >= 0;
+ }
+ this.hoverDataIdx = -1;
+ return false;
+ };
+ LargeSymbolPath2.prototype.getBoundingRect = function() {
+ var rect = this._rect;
+ if (!rect) {
+ var shape = this.shape;
+ var points4 = shape.points;
+ var size = shape.size;
+ var w = size[0];
+ var h = size[1];
+ var minX = Infinity;
+ var minY = Infinity;
+ var maxX = -Infinity;
+ var maxY = -Infinity;
+ for (var i = 0; i < points4.length; ) {
+ var x = points4[i++];
+ var y = points4[i++];
+ minX = Math.min(x, minX);
+ maxX = Math.max(x, maxX);
+ minY = Math.min(y, minY);
+ maxY = Math.max(y, maxY);
+ }
+ rect = this._rect = new BoundingRect_default(minX - w / 2, minY - h / 2, maxX - minX + w, maxY - minY + h);
+ }
+ return rect;
+ };
+ return LargeSymbolPath2;
+}(Path_default);
+var LargeSymbolDraw = function() {
+ function LargeSymbolDraw2() {
+ this.group = new Group_default();
+ }
+ LargeSymbolDraw2.prototype.updateData = function(data, opt) {
+ this._clear();
+ var symbolEl = this._create();
+ symbolEl.setShape({
+ points: data.getLayout("points")
+ });
+ this._setCommon(symbolEl, data, opt);
+ };
+ LargeSymbolDraw2.prototype.updateLayout = function(data) {
+ var points4 = data.getLayout("points");
+ this.group.eachChild(function(child) {
+ if (child.startIndex != null) {
+ var len2 = (child.endIndex - child.startIndex) * 2;
+ var byteOffset = child.startIndex * 4 * 2;
+ points4 = new Float32Array(points4.buffer, byteOffset, len2);
+ }
+ child.setShape("points", points4);
+ child.reset();
+ });
+ };
+ LargeSymbolDraw2.prototype.incrementalPrepareUpdate = function(data) {
+ this._clear();
+ };
+ LargeSymbolDraw2.prototype.incrementalUpdate = function(taskParams, data, opt) {
+ var lastAdded = this._newAdded[0];
+ var points4 = data.getLayout("points");
+ var oldPoints = lastAdded && lastAdded.shape.points;
+ if (oldPoints && oldPoints.length < 2e4) {
+ var oldLen = oldPoints.length;
+ var newPoints = new Float32Array(oldLen + points4.length);
+ newPoints.set(oldPoints);
+ newPoints.set(points4, oldLen);
+ lastAdded.endIndex = taskParams.end;
+ lastAdded.setShape({
+ points: newPoints
+ });
+ } else {
+ this._newAdded = [];
+ var symbolEl = this._create();
+ symbolEl.startIndex = taskParams.start;
+ symbolEl.endIndex = taskParams.end;
+ symbolEl.incremental = true;
+ symbolEl.setShape({
+ points: points4
+ });
+ this._setCommon(symbolEl, data, opt);
+ }
+ };
+ LargeSymbolDraw2.prototype.eachRendered = function(cb) {
+ this._newAdded[0] && cb(this._newAdded[0]);
+ };
+ LargeSymbolDraw2.prototype._create = function() {
+ var symbolEl = new LargeSymbolPath({
+ cursor: "default"
+ });
+ symbolEl.ignoreCoarsePointer = true;
+ this.group.add(symbolEl);
+ this._newAdded.push(symbolEl);
+ return symbolEl;
+ };
+ LargeSymbolDraw2.prototype._setCommon = function(symbolEl, data, opt) {
+ var hostModel = data.hostModel;
+ opt = opt || {};
+ var size = data.getVisual("symbolSize");
+ symbolEl.setShape("size", size instanceof Array ? size : [size, size]);
+ symbolEl.softClipShape = opt.clipShape || null;
+ symbolEl.symbolProxy = createSymbol(data.getVisual("symbol"), 0, 0, 0, 0);
+ symbolEl.setColor = symbolEl.symbolProxy.setColor;
+ var extrudeShadow = symbolEl.shape.size[0] < BOOST_SIZE_THRESHOLD;
+ symbolEl.useStyle(
+ hostModel.getModel("itemStyle").getItemStyle(extrudeShadow ? ["color", "shadowBlur", "shadowColor"] : ["color"])
+ );
+ var globalStyle = data.getVisual("style");
+ var visualColor = globalStyle && globalStyle.fill;
+ if (visualColor) {
+ symbolEl.setColor(visualColor);
+ }
+ var ecData = getECData(symbolEl);
+ ecData.seriesIndex = hostModel.seriesIndex;
+ symbolEl.on("mousemove", function(e2) {
+ ecData.dataIndex = null;
+ var dataIndex = symbolEl.hoverDataIdx;
+ if (dataIndex >= 0) {
+ ecData.dataIndex = dataIndex + (symbolEl.startIndex || 0);
+ }
+ });
+ };
+ LargeSymbolDraw2.prototype.remove = function() {
+ this._clear();
+ };
+ LargeSymbolDraw2.prototype._clear = function() {
+ this._newAdded = [];
+ this.group.removeAll();
+ };
+ return LargeSymbolDraw2;
+}();
+var LargeSymbolDraw_default = LargeSymbolDraw;
+
+// node_modules/echarts/lib/chart/scatter/ScatterView.js
+var ScatterView = function(_super) {
+ __extends(ScatterView2, _super);
+ function ScatterView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ScatterView2.type;
+ return _this;
+ }
+ ScatterView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var symbolDraw = this._updateSymbolDraw(data, seriesModel);
+ symbolDraw.updateData(data, {
+ clipShape: this._getClipShape(seriesModel)
+ });
+ this._finished = true;
+ };
+ ScatterView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var symbolDraw = this._updateSymbolDraw(data, seriesModel);
+ symbolDraw.incrementalPrepareUpdate(data);
+ this._finished = false;
+ };
+ ScatterView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
+ this._symbolDraw.incrementalUpdate(taskParams, seriesModel.getData(), {
+ clipShape: this._getClipShape(seriesModel)
+ });
+ this._finished = taskParams.end === seriesModel.getData().count();
+ };
+ ScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ this.group.dirty();
+ if (!this._finished || data.count() > 1e4) {
+ return {
+ update: true
+ };
+ } else {
+ var res = pointsLayout("").reset(seriesModel, ecModel, api);
+ if (res.progress) {
+ res.progress({
+ start: 0,
+ end: data.count(),
+ count: data.count()
+ }, data);
+ }
+ this._symbolDraw.updateLayout(data);
+ }
+ };
+ ScatterView2.prototype.eachRendered = function(cb) {
+ this._symbolDraw && this._symbolDraw.eachRendered(cb);
+ };
+ ScatterView2.prototype._getClipShape = function(seriesModel) {
+ if (!seriesModel.get("clip", true)) {
+ return;
+ }
+ var coordSys = seriesModel.coordinateSystem;
+ return coordSys && coordSys.getArea && coordSys.getArea(0.1);
+ };
+ ScatterView2.prototype._updateSymbolDraw = function(data, seriesModel) {
+ var symbolDraw = this._symbolDraw;
+ var pipelineContext = seriesModel.pipelineContext;
+ var isLargeDraw = pipelineContext.large;
+ if (!symbolDraw || isLargeDraw !== this._isLargeDraw) {
+ symbolDraw && symbolDraw.remove();
+ symbolDraw = this._symbolDraw = isLargeDraw ? new LargeSymbolDraw_default() : new SymbolDraw_default();
+ this._isLargeDraw = isLargeDraw;
+ this.group.removeAll();
+ }
+ this.group.add(symbolDraw.group);
+ return symbolDraw;
+ };
+ ScatterView2.prototype.remove = function(ecModel, api) {
+ this._symbolDraw && this._symbolDraw.remove(true);
+ this._symbolDraw = null;
+ };
+ ScatterView2.prototype.dispose = function() {
+ };
+ ScatterView2.type = "scatter";
+ return ScatterView2;
+}(Chart_default);
+var ScatterView_default = ScatterView;
+
+// node_modules/echarts/lib/coord/cartesian/GridModel.js
+var GridModel = function(_super) {
+ __extends(GridModel2, _super);
+ function GridModel2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ GridModel2.type = "grid";
+ GridModel2.dependencies = ["xAxis", "yAxis"];
+ GridModel2.layoutMode = "box";
+ GridModel2.defaultOption = {
+ show: false,
+ z: 0,
+ left: "10%",
+ top: 60,
+ right: "10%",
+ bottom: 70,
+ containLabel: false,
+ backgroundColor: "rgba(0,0,0,0)",
+ borderWidth: 1,
+ borderColor: "#ccc"
+ };
+ return GridModel2;
+}(Component_default);
+var GridModel_default = GridModel;
+
+// node_modules/echarts/lib/coord/cartesian/AxisModel.js
+var CartesianAxisModel = function(_super) {
+ __extends(CartesianAxisModel2, _super);
+ function CartesianAxisModel2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ CartesianAxisModel2.prototype.getCoordSysModel = function() {
+ return this.getReferringComponents("grid", SINGLE_REFERRING).models[0];
+ };
+ CartesianAxisModel2.type = "cartesian2dAxis";
+ return CartesianAxisModel2;
+}(Component_default);
+mixin(CartesianAxisModel, AxisModelCommonMixin);
+
+// node_modules/echarts/lib/coord/axisDefault.js
+var defaultOption = {
+ show: true,
+ z: 0,
+ inverse: false,
+ name: "",
+ nameLocation: "end",
+ nameRotate: null,
+ nameTruncate: {
+ maxWidth: null,
+ ellipsis: "...",
+ placeholder: "."
+ },
+ nameTextStyle: {},
+ nameGap: 15,
+ silent: false,
+ triggerEvent: false,
+ tooltip: {
+ show: false
+ },
+ axisPointer: {},
+ axisLine: {
+ show: true,
+ onZero: true,
+ onZeroAxisIndex: null,
+ lineStyle: {
+ color: "#6E7079",
+ width: 1,
+ type: "solid"
+ },
+ symbol: ["none", "none"],
+ symbolSize: [10, 15]
+ },
+ axisTick: {
+ show: true,
+ inside: false,
+ length: 5,
+ lineStyle: {
+ width: 1
+ }
+ },
+ axisLabel: {
+ show: true,
+ inside: false,
+ rotate: 0,
+ showMinLabel: null,
+ showMaxLabel: null,
+ margin: 8,
+ fontSize: 12
+ },
+ splitLine: {
+ show: true,
+ showMinLine: true,
+ showMaxLine: true,
+ lineStyle: {
+ color: ["#E0E6F1"],
+ width: 1,
+ type: "solid"
+ }
+ },
+ splitArea: {
+ show: false,
+ areaStyle: {
+ color: ["rgba(250,250,250,0.2)", "rgba(210,219,238,0.2)"]
+ }
+ }
+};
+var categoryAxis = merge({
+ boundaryGap: true,
+ deduplication: null,
+ splitLine: {
+ show: false
+ },
+ axisTick: {
+ alignWithLabel: false,
+ interval: "auto"
+ },
+ axisLabel: {
+ interval: "auto"
+ }
+}, defaultOption);
+var valueAxis = merge({
+ boundaryGap: [0, 0],
+ axisLine: {
+ show: "auto"
+ },
+ axisTick: {
+ show: "auto"
+ },
+ splitNumber: 5,
+ minorTick: {
+ show: false,
+ splitNumber: 5,
+ length: 3,
+ lineStyle: {}
+ },
+ minorSplitLine: {
+ show: false,
+ lineStyle: {
+ color: "#F4F7FD",
+ width: 1
+ }
+ }
+}, defaultOption);
+var timeAxis = merge({
+ splitNumber: 6,
+ axisLabel: {
+ showMinLabel: false,
+ showMaxLabel: false,
+ rich: {
+ primary: {
+ fontWeight: "bold"
+ }
+ }
+ },
+ splitLine: {
+ show: false
+ }
+}, valueAxis);
+var logAxis = defaults({
+ logBase: 10
+}, valueAxis);
+var axisDefault_default = {
+ category: categoryAxis,
+ value: valueAxis,
+ time: timeAxis,
+ log: logAxis
+};
+
+// node_modules/echarts/lib/coord/axisCommonTypes.js
+var AXIS_TYPES = {
+ value: 1,
+ category: 1,
+ time: 1,
+ log: 1
+};
+
+// node_modules/echarts/lib/coord/axisModelCreator.js
+function axisModelCreator(registers, axisName, BaseAxisModelClass, extraDefaultOption) {
+ each(AXIS_TYPES, function(v, axisType) {
+ var defaultOption3 = merge(merge({}, axisDefault_default[axisType], true), extraDefaultOption, true);
+ var AxisModel = function(_super) {
+ __extends(AxisModel2, _super);
+ function AxisModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = axisName + "Axis." + axisType;
+ return _this;
+ }
+ AxisModel2.prototype.mergeDefaultAndTheme = function(option, ecModel) {
+ var layoutMode = fetchLayoutMode(this);
+ var inputPositionParams = layoutMode ? getLayoutParams(option) : {};
+ var themeModel = ecModel.getTheme();
+ merge(option, themeModel.get(axisType + "Axis"));
+ merge(option, this.getDefaultOption());
+ option.type = getAxisType(option);
+ if (layoutMode) {
+ mergeLayoutParam(option, inputPositionParams, layoutMode);
+ }
+ };
+ AxisModel2.prototype.optionUpdated = function() {
+ var thisOption = this.option;
+ if (thisOption.type === "category") {
+ this.__ordinalMeta = OrdinalMeta_default.createByAxisModel(this);
+ }
+ };
+ AxisModel2.prototype.getCategories = function(rawData) {
+ var option = this.option;
+ if (option.type === "category") {
+ if (rawData) {
+ return option.data;
+ }
+ return this.__ordinalMeta.categories;
+ }
+ };
+ AxisModel2.prototype.getOrdinalMeta = function() {
+ return this.__ordinalMeta;
+ };
+ AxisModel2.type = axisName + "Axis." + axisType;
+ AxisModel2.defaultOption = defaultOption3;
+ return AxisModel2;
+ }(BaseAxisModelClass);
+ registers.registerComponentModel(AxisModel);
+ });
+ registers.registerSubTypeDefaulter(axisName + "Axis", getAxisType);
+}
+function getAxisType(option) {
+ return option.type || (option.data ? "category" : "value");
+}
+
+// node_modules/echarts/lib/coord/cartesian/Cartesian.js
+var Cartesian = function() {
+ function Cartesian2(name) {
+ this.type = "cartesian";
+ this._dimList = [];
+ this._axes = {};
+ this.name = name || "";
+ }
+ Cartesian2.prototype.getAxis = function(dim) {
+ return this._axes[dim];
+ };
+ Cartesian2.prototype.getAxes = function() {
+ return map(this._dimList, function(dim) {
+ return this._axes[dim];
+ }, this);
+ };
+ Cartesian2.prototype.getAxesByScale = function(scaleType) {
+ scaleType = scaleType.toLowerCase();
+ return filter(this.getAxes(), function(axis) {
+ return axis.scale.type === scaleType;
+ });
+ };
+ Cartesian2.prototype.addAxis = function(axis) {
+ var dim = axis.dim;
+ this._axes[dim] = axis;
+ this._dimList.push(dim);
+ };
+ return Cartesian2;
+}();
+var Cartesian_default = Cartesian;
+
+// node_modules/echarts/lib/coord/cartesian/Cartesian2D.js
+var cartesian2DDimensions = ["x", "y"];
+function canCalculateAffineTransform(scale4) {
+ return scale4.type === "interval" || scale4.type === "time";
+}
+var Cartesian2D = function(_super) {
+ __extends(Cartesian2D2, _super);
+ function Cartesian2D2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "cartesian2d";
+ _this.dimensions = cartesian2DDimensions;
+ return _this;
+ }
+ Cartesian2D2.prototype.calcAffineTransform = function() {
+ this._transform = this._invTransform = null;
+ var xAxisScale = this.getAxis("x").scale;
+ var yAxisScale = this.getAxis("y").scale;
+ if (!canCalculateAffineTransform(xAxisScale) || !canCalculateAffineTransform(yAxisScale)) {
+ return;
+ }
+ var xScaleExtent = xAxisScale.getExtent();
+ var yScaleExtent = yAxisScale.getExtent();
+ var start2 = this.dataToPoint([xScaleExtent[0], yScaleExtent[0]]);
+ var end2 = this.dataToPoint([xScaleExtent[1], yScaleExtent[1]]);
+ var xScaleSpan = xScaleExtent[1] - xScaleExtent[0];
+ var yScaleSpan = yScaleExtent[1] - yScaleExtent[0];
+ if (!xScaleSpan || !yScaleSpan) {
+ return;
+ }
+ var scaleX = (end2[0] - start2[0]) / xScaleSpan;
+ var scaleY = (end2[1] - start2[1]) / yScaleSpan;
+ var translateX = start2[0] - xScaleExtent[0] * scaleX;
+ var translateY = start2[1] - yScaleExtent[0] * scaleY;
+ var m2 = this._transform = [scaleX, 0, 0, scaleY, translateX, translateY];
+ this._invTransform = invert([], m2);
+ };
+ Cartesian2D2.prototype.getBaseAxis = function() {
+ return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x");
+ };
+ Cartesian2D2.prototype.containPoint = function(point) {
+ var axisX = this.getAxis("x");
+ var axisY = this.getAxis("y");
+ return axisX.contain(axisX.toLocalCoord(point[0])) && axisY.contain(axisY.toLocalCoord(point[1]));
+ };
+ Cartesian2D2.prototype.containData = function(data) {
+ return this.getAxis("x").containData(data[0]) && this.getAxis("y").containData(data[1]);
+ };
+ Cartesian2D2.prototype.containZone = function(data1, data2) {
+ var zoneDiag1 = this.dataToPoint(data1);
+ var zoneDiag2 = this.dataToPoint(data2);
+ var area = this.getArea();
+ var zone = new BoundingRect_default(zoneDiag1[0], zoneDiag1[1], zoneDiag2[0] - zoneDiag1[0], zoneDiag2[1] - zoneDiag1[1]);
+ return area.intersect(zone);
+ };
+ Cartesian2D2.prototype.dataToPoint = function(data, clamp2, out2) {
+ out2 = out2 || [];
+ var xVal = data[0];
+ var yVal = data[1];
+ if (this._transform && xVal != null && isFinite(xVal) && yVal != null && isFinite(yVal)) {
+ return applyTransform(out2, data, this._transform);
+ }
+ var xAxis = this.getAxis("x");
+ var yAxis = this.getAxis("y");
+ out2[0] = xAxis.toGlobalCoord(xAxis.dataToCoord(xVal, clamp2));
+ out2[1] = yAxis.toGlobalCoord(yAxis.dataToCoord(yVal, clamp2));
+ return out2;
+ };
+ Cartesian2D2.prototype.clampData = function(data, out2) {
+ var xScale = this.getAxis("x").scale;
+ var yScale = this.getAxis("y").scale;
+ var xAxisExtent = xScale.getExtent();
+ var yAxisExtent = yScale.getExtent();
+ var x = xScale.parse(data[0]);
+ var y = yScale.parse(data[1]);
+ out2 = out2 || [];
+ out2[0] = Math.min(Math.max(Math.min(xAxisExtent[0], xAxisExtent[1]), x), Math.max(xAxisExtent[0], xAxisExtent[1]));
+ out2[1] = Math.min(Math.max(Math.min(yAxisExtent[0], yAxisExtent[1]), y), Math.max(yAxisExtent[0], yAxisExtent[1]));
+ return out2;
+ };
+ Cartesian2D2.prototype.pointToData = function(point, clamp2) {
+ var out2 = [];
+ if (this._invTransform) {
+ return applyTransform(out2, point, this._invTransform);
+ }
+ var xAxis = this.getAxis("x");
+ var yAxis = this.getAxis("y");
+ out2[0] = xAxis.coordToData(xAxis.toLocalCoord(point[0]), clamp2);
+ out2[1] = yAxis.coordToData(yAxis.toLocalCoord(point[1]), clamp2);
+ return out2;
+ };
+ Cartesian2D2.prototype.getOtherAxis = function(axis) {
+ return this.getAxis(axis.dim === "x" ? "y" : "x");
+ };
+ Cartesian2D2.prototype.getArea = function(tolerance) {
+ tolerance = tolerance || 0;
+ var xExtent = this.getAxis("x").getGlobalExtent();
+ var yExtent = this.getAxis("y").getGlobalExtent();
+ var x = Math.min(xExtent[0], xExtent[1]) - tolerance;
+ var y = Math.min(yExtent[0], yExtent[1]) - tolerance;
+ var width = Math.max(xExtent[0], xExtent[1]) - x + tolerance;
+ var height = Math.max(yExtent[0], yExtent[1]) - y + tolerance;
+ return new BoundingRect_default(x, y, width, height);
+ };
+ return Cartesian2D2;
+}(Cartesian_default);
+var Cartesian2D_default = Cartesian2D;
+
+// node_modules/echarts/lib/coord/cartesian/Axis2D.js
+var Axis2D = function(_super) {
+ __extends(Axis2D2, _super);
+ function Axis2D2(dim, scale4, coordExtent, axisType, position2) {
+ var _this = _super.call(this, dim, scale4, coordExtent) || this;
+ _this.index = 0;
+ _this.type = axisType || "value";
+ _this.position = position2 || "bottom";
+ return _this;
+ }
+ Axis2D2.prototype.isHorizontal = function() {
+ var position2 = this.position;
+ return position2 === "top" || position2 === "bottom";
+ };
+ Axis2D2.prototype.getGlobalExtent = function(asc4) {
+ var ret = this.getExtent();
+ ret[0] = this.toGlobalCoord(ret[0]);
+ ret[1] = this.toGlobalCoord(ret[1]);
+ asc4 && ret[0] > ret[1] && ret.reverse();
+ return ret;
+ };
+ Axis2D2.prototype.pointToData = function(point, clamp2) {
+ return this.coordToData(this.toLocalCoord(point[this.dim === "x" ? 0 : 1]), clamp2);
+ };
+ Axis2D2.prototype.setCategorySortInfo = function(info) {
+ if (this.type !== "category") {
+ return false;
+ }
+ this.model.option.categorySortInfo = info;
+ this.scale.setSortInfo(info);
+ };
+ return Axis2D2;
+}(Axis_default);
+var Axis2D_default = Axis2D;
+
+// node_modules/echarts/lib/coord/cartesian/cartesianAxisHelper.js
+function layout2(gridModel, axisModel, opt) {
+ opt = opt || {};
+ var grid = gridModel.coordinateSystem;
+ var axis = axisModel.axis;
+ var layout5 = {};
+ var otherAxisOnZeroOf = axis.getAxesOnZeroOf()[0];
+ var rawAxisPosition = axis.position;
+ var axisPosition = otherAxisOnZeroOf ? "onZero" : rawAxisPosition;
+ var axisDim = axis.dim;
+ var rect = grid.getRect();
+ var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
+ var idx = {
+ left: 0,
+ right: 1,
+ top: 0,
+ bottom: 1,
+ onZero: 2
+ };
+ var axisOffset = axisModel.get("offset") || 0;
+ var posBound = axisDim === "x" ? [rectBound[2] - axisOffset, rectBound[3] + axisOffset] : [rectBound[0] - axisOffset, rectBound[1] + axisOffset];
+ if (otherAxisOnZeroOf) {
+ var onZeroCoord = otherAxisOnZeroOf.toGlobalCoord(otherAxisOnZeroOf.dataToCoord(0));
+ posBound[idx.onZero] = Math.max(Math.min(onZeroCoord, posBound[1]), posBound[0]);
+ }
+ layout5.position = [axisDim === "y" ? posBound[idx[axisPosition]] : rectBound[0], axisDim === "x" ? posBound[idx[axisPosition]] : rectBound[3]];
+ layout5.rotation = Math.PI / 2 * (axisDim === "x" ? 0 : 1);
+ var dirMap = {
+ top: -1,
+ bottom: 1,
+ left: -1,
+ right: 1
+ };
+ layout5.labelDirection = layout5.tickDirection = layout5.nameDirection = dirMap[rawAxisPosition];
+ layout5.labelOffset = otherAxisOnZeroOf ? posBound[idx[rawAxisPosition]] - posBound[idx.onZero] : 0;
+ if (axisModel.get(["axisTick", "inside"])) {
+ layout5.tickDirection = -layout5.tickDirection;
+ }
+ if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) {
+ layout5.labelDirection = -layout5.labelDirection;
+ }
+ var labelRotate = axisModel.get(["axisLabel", "rotate"]);
+ layout5.labelRotate = axisPosition === "top" ? -labelRotate : labelRotate;
+ layout5.z2 = 1;
+ return layout5;
+}
+function isCartesian2DSeries(seriesModel) {
+ return seriesModel.get("coordinateSystem") === "cartesian2d";
+}
+function findAxisModels(seriesModel) {
+ var axisModelMap = {
+ xAxisModel: null,
+ yAxisModel: null
+ };
+ each(axisModelMap, function(v, key) {
+ var axisType = key.replace(/Model$/, "");
+ var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];
+ if (true) {
+ if (!axisModel) {
+ throw new Error(axisType + ' "' + retrieve3(seriesModel.get(axisType + "Index"), seriesModel.get(axisType + "Id"), 0) + '" not found');
+ }
+ }
+ axisModelMap[key] = axisModel;
+ });
+ return axisModelMap;
+}
+
+// node_modules/echarts/lib/coord/axisAlignTicks.js
+var mathLog2 = Math.log;
+function alignScaleTicks(scale4, axisModel, alignToScale) {
+ var intervalScaleProto2 = Interval_default.prototype;
+ var alignToTicks = intervalScaleProto2.getTicks.call(alignToScale);
+ var alignToNicedTicks = intervalScaleProto2.getTicks.call(alignToScale, true);
+ var alignToSplitNumber = alignToTicks.length - 1;
+ var alignToInterval = intervalScaleProto2.getInterval.call(alignToScale);
+ var scaleExtent = getScaleExtent(scale4, axisModel);
+ var rawExtent = scaleExtent.extent;
+ var isMinFixed = scaleExtent.fixMin;
+ var isMaxFixed = scaleExtent.fixMax;
+ if (scale4.type === "log") {
+ var logBase = mathLog2(scale4.base);
+ rawExtent = [mathLog2(rawExtent[0]) / logBase, mathLog2(rawExtent[1]) / logBase];
+ }
+ scale4.setExtent(rawExtent[0], rawExtent[1]);
+ scale4.calcNiceExtent({
+ splitNumber: alignToSplitNumber,
+ fixMin: isMinFixed,
+ fixMax: isMaxFixed
+ });
+ var extent3 = intervalScaleProto2.getExtent.call(scale4);
+ if (isMinFixed) {
+ rawExtent[0] = extent3[0];
+ }
+ if (isMaxFixed) {
+ rawExtent[1] = extent3[1];
+ }
+ var interval = intervalScaleProto2.getInterval.call(scale4);
+ var min3 = rawExtent[0];
+ var max3 = rawExtent[1];
+ if (isMinFixed && isMaxFixed) {
+ interval = (max3 - min3) / alignToSplitNumber;
+ } else if (isMinFixed) {
+ max3 = rawExtent[0] + interval * alignToSplitNumber;
+ while (max3 < rawExtent[1] && isFinite(max3) && isFinite(rawExtent[1])) {
+ interval = increaseInterval(interval);
+ max3 = rawExtent[0] + interval * alignToSplitNumber;
+ }
+ } else if (isMaxFixed) {
+ min3 = rawExtent[1] - interval * alignToSplitNumber;
+ while (min3 > rawExtent[0] && isFinite(min3) && isFinite(rawExtent[0])) {
+ interval = increaseInterval(interval);
+ min3 = rawExtent[1] - interval * alignToSplitNumber;
+ }
+ } else {
+ var nicedSplitNumber = scale4.getTicks().length - 1;
+ if (nicedSplitNumber > alignToSplitNumber) {
+ interval = increaseInterval(interval);
+ }
+ var range = interval * alignToSplitNumber;
+ max3 = Math.ceil(rawExtent[1] / interval) * interval;
+ min3 = round(max3 - range);
+ if (min3 < 0 && rawExtent[0] >= 0) {
+ min3 = 0;
+ max3 = round(range);
+ } else if (max3 > 0 && rawExtent[1] <= 0) {
+ max3 = 0;
+ min3 = -round(range);
+ }
+ }
+ var t0 = (alignToTicks[0].value - alignToNicedTicks[0].value) / alignToInterval;
+ var t1 = (alignToTicks[alignToSplitNumber].value - alignToNicedTicks[alignToSplitNumber].value) / alignToInterval;
+ intervalScaleProto2.setExtent.call(scale4, min3 + interval * t0, max3 + interval * t1);
+ intervalScaleProto2.setInterval.call(scale4, interval);
+ if (t0 || t1) {
+ intervalScaleProto2.setNiceExtent.call(scale4, min3 + interval, max3 - interval);
+ }
+ if (true) {
+ var ticks = intervalScaleProto2.getTicks.call(scale4);
+ if (ticks[1] && (!isValueNice(interval) || getPrecisionSafe(ticks[1].value) > getPrecisionSafe(interval))) {
+ warn(
+ "The ticks may be not readable when set min: " + axisModel.get("min") + ", max: " + axisModel.get("max") + " and alignTicks: true"
+ );
+ }
+ }
+}
+
+// node_modules/echarts/lib/coord/cartesian/Grid.js
+var Grid = function() {
+ function Grid2(gridModel, ecModel, api) {
+ this.type = "grid";
+ this._coordsMap = {};
+ this._coordsList = [];
+ this._axesMap = {};
+ this._axesList = [];
+ this.axisPointerEnabled = true;
+ this.dimensions = cartesian2DDimensions;
+ this._initCartesian(gridModel, ecModel, api);
+ this.model = gridModel;
+ }
+ Grid2.prototype.getRect = function() {
+ return this._rect;
+ };
+ Grid2.prototype.update = function(ecModel, api) {
+ var axesMap = this._axesMap;
+ this._updateScale(ecModel, this.model);
+ function updateAxisTicks(axes) {
+ var alignTo;
+ var axesIndices = keys(axes);
+ var len2 = axesIndices.length;
+ if (!len2) {
+ return;
+ }
+ var axisNeedsAlign = [];
+ for (var i = len2 - 1; i >= 0; i--) {
+ var idx = +axesIndices[i];
+ var axis = axes[idx];
+ var model = axis.model;
+ var scale4 = axis.scale;
+ if (isIntervalOrLogScale(scale4) && model.get("alignTicks") && model.get("interval") == null) {
+ axisNeedsAlign.push(axis);
+ } else {
+ niceScaleExtent(scale4, model);
+ if (isIntervalOrLogScale(scale4)) {
+ alignTo = axis;
+ }
+ }
+ }
+ ;
+ if (axisNeedsAlign.length) {
+ if (!alignTo) {
+ alignTo = axisNeedsAlign.pop();
+ niceScaleExtent(alignTo.scale, alignTo.model);
+ }
+ each(axisNeedsAlign, function(axis2) {
+ alignScaleTicks(axis2.scale, axis2.model, alignTo.scale);
+ });
+ }
+ }
+ updateAxisTicks(axesMap.x);
+ updateAxisTicks(axesMap.y);
+ var onZeroRecords = {};
+ each(axesMap.x, function(xAxis) {
+ fixAxisOnZero(axesMap, "y", xAxis, onZeroRecords);
+ });
+ each(axesMap.y, function(yAxis) {
+ fixAxisOnZero(axesMap, "x", yAxis, onZeroRecords);
+ });
+ this.resize(this.model, api);
+ };
+ Grid2.prototype.resize = function(gridModel, api, ignoreContainLabel) {
+ var boxLayoutParams = gridModel.getBoxLayoutParams();
+ var isContainLabel = !ignoreContainLabel && gridModel.get("containLabel");
+ var gridRect = getLayoutRect(boxLayoutParams, {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+ this._rect = gridRect;
+ var axesList = this._axesList;
+ adjustAxes();
+ if (isContainLabel) {
+ each(axesList, function(axis) {
+ if (!axis.model.get(["axisLabel", "inside"])) {
+ var labelUnionRect = estimateLabelUnionRect(axis);
+ if (labelUnionRect) {
+ var dim = axis.isHorizontal() ? "height" : "width";
+ var margin = axis.model.get(["axisLabel", "margin"]);
+ gridRect[dim] -= labelUnionRect[dim] + margin;
+ if (axis.position === "top") {
+ gridRect.y += labelUnionRect.height + margin;
+ } else if (axis.position === "left") {
+ gridRect.x += labelUnionRect.width + margin;
+ }
+ }
+ }
+ });
+ adjustAxes();
+ }
+ each(this._coordsList, function(coord) {
+ coord.calcAffineTransform();
+ });
+ function adjustAxes() {
+ each(axesList, function(axis) {
+ var isHorizontal = axis.isHorizontal();
+ var extent3 = isHorizontal ? [0, gridRect.width] : [0, gridRect.height];
+ var idx = axis.inverse ? 1 : 0;
+ axis.setExtent(extent3[idx], extent3[1 - idx]);
+ updateAxisTransform(axis, isHorizontal ? gridRect.x : gridRect.y);
+ });
+ }
+ };
+ Grid2.prototype.getAxis = function(dim, axisIndex) {
+ var axesMapOnDim = this._axesMap[dim];
+ if (axesMapOnDim != null) {
+ return axesMapOnDim[axisIndex || 0];
+ }
+ };
+ Grid2.prototype.getAxes = function() {
+ return this._axesList.slice();
+ };
+ Grid2.prototype.getCartesian = function(xAxisIndex, yAxisIndex) {
+ if (xAxisIndex != null && yAxisIndex != null) {
+ var key = "x" + xAxisIndex + "y" + yAxisIndex;
+ return this._coordsMap[key];
+ }
+ if (isObject(xAxisIndex)) {
+ yAxisIndex = xAxisIndex.yAxisIndex;
+ xAxisIndex = xAxisIndex.xAxisIndex;
+ }
+ for (var i = 0, coordList = this._coordsList; i < coordList.length; i++) {
+ if (coordList[i].getAxis("x").index === xAxisIndex || coordList[i].getAxis("y").index === yAxisIndex) {
+ return coordList[i];
+ }
+ }
+ };
+ Grid2.prototype.getCartesians = function() {
+ return this._coordsList.slice();
+ };
+ Grid2.prototype.convertToPixel = function(ecModel, finder, value) {
+ var target = this._findConvertTarget(finder);
+ return target.cartesian ? target.cartesian.dataToPoint(value) : target.axis ? target.axis.toGlobalCoord(target.axis.dataToCoord(value)) : null;
+ };
+ Grid2.prototype.convertFromPixel = function(ecModel, finder, value) {
+ var target = this._findConvertTarget(finder);
+ return target.cartesian ? target.cartesian.pointToData(value) : target.axis ? target.axis.coordToData(target.axis.toLocalCoord(value)) : null;
+ };
+ Grid2.prototype._findConvertTarget = function(finder) {
+ var seriesModel = finder.seriesModel;
+ var xAxisModel = finder.xAxisModel || seriesModel && seriesModel.getReferringComponents("xAxis", SINGLE_REFERRING).models[0];
+ var yAxisModel = finder.yAxisModel || seriesModel && seriesModel.getReferringComponents("yAxis", SINGLE_REFERRING).models[0];
+ var gridModel = finder.gridModel;
+ var coordsList = this._coordsList;
+ var cartesian;
+ var axis;
+ if (seriesModel) {
+ cartesian = seriesModel.coordinateSystem;
+ indexOf(coordsList, cartesian) < 0 && (cartesian = null);
+ } else if (xAxisModel && yAxisModel) {
+ cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);
+ } else if (xAxisModel) {
+ axis = this.getAxis("x", xAxisModel.componentIndex);
+ } else if (yAxisModel) {
+ axis = this.getAxis("y", yAxisModel.componentIndex);
+ } else if (gridModel) {
+ var grid = gridModel.coordinateSystem;
+ if (grid === this) {
+ cartesian = this._coordsList[0];
+ }
+ }
+ return {
+ cartesian,
+ axis
+ };
+ };
+ Grid2.prototype.containPoint = function(point) {
+ var coord = this._coordsList[0];
+ if (coord) {
+ return coord.containPoint(point);
+ }
+ };
+ Grid2.prototype._initCartesian = function(gridModel, ecModel, api) {
+ var _this = this;
+ var grid = this;
+ var axisPositionUsed = {
+ left: false,
+ right: false,
+ top: false,
+ bottom: false
+ };
+ var axesMap = {
+ x: {},
+ y: {}
+ };
+ var axesCount = {
+ x: 0,
+ y: 0
+ };
+ ecModel.eachComponent("xAxis", createAxisCreator("x"), this);
+ ecModel.eachComponent("yAxis", createAxisCreator("y"), this);
+ if (!axesCount.x || !axesCount.y) {
+ this._axesMap = {};
+ this._axesList = [];
+ return;
+ }
+ this._axesMap = axesMap;
+ each(axesMap.x, function(xAxis, xAxisIndex) {
+ each(axesMap.y, function(yAxis, yAxisIndex) {
+ var key = "x" + xAxisIndex + "y" + yAxisIndex;
+ var cartesian = new Cartesian2D_default(key);
+ cartesian.master = _this;
+ cartesian.model = gridModel;
+ _this._coordsMap[key] = cartesian;
+ _this._coordsList.push(cartesian);
+ cartesian.addAxis(xAxis);
+ cartesian.addAxis(yAxis);
+ });
+ });
+ function createAxisCreator(dimName) {
+ return function(axisModel, idx) {
+ if (!isAxisUsedInTheGrid(axisModel, gridModel)) {
+ return;
+ }
+ var axisPosition = axisModel.get("position");
+ if (dimName === "x") {
+ if (axisPosition !== "top" && axisPosition !== "bottom") {
+ axisPosition = axisPositionUsed.bottom ? "top" : "bottom";
+ }
+ } else {
+ if (axisPosition !== "left" && axisPosition !== "right") {
+ axisPosition = axisPositionUsed.left ? "right" : "left";
+ }
+ }
+ axisPositionUsed[axisPosition] = true;
+ var axis = new Axis2D_default(dimName, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisPosition);
+ var isCategory2 = axis.type === "category";
+ axis.onBand = isCategory2 && axisModel.get("boundaryGap");
+ axis.inverse = axisModel.get("inverse");
+ axisModel.axis = axis;
+ axis.model = axisModel;
+ axis.grid = grid;
+ axis.index = idx;
+ grid._axesList.push(axis);
+ axesMap[dimName][idx] = axis;
+ axesCount[dimName]++;
+ };
+ }
+ };
+ Grid2.prototype._updateScale = function(ecModel, gridModel) {
+ each(this._axesList, function(axis) {
+ axis.scale.setExtent(Infinity, -Infinity);
+ if (axis.type === "category") {
+ var categorySortInfo = axis.model.get("categorySortInfo");
+ axis.scale.setSortInfo(categorySortInfo);
+ }
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ if (isCartesian2DSeries(seriesModel)) {
+ var axesModelMap = findAxisModels(seriesModel);
+ var xAxisModel = axesModelMap.xAxisModel;
+ var yAxisModel = axesModelMap.yAxisModel;
+ if (!isAxisUsedInTheGrid(xAxisModel, gridModel) || !isAxisUsedInTheGrid(yAxisModel, gridModel)) {
+ return;
+ }
+ var cartesian = this.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);
+ var data = seriesModel.getData();
+ var xAxis = cartesian.getAxis("x");
+ var yAxis = cartesian.getAxis("y");
+ unionExtent(data, xAxis);
+ unionExtent(data, yAxis);
+ }
+ }, this);
+ function unionExtent(data, axis) {
+ each(getDataDimensionsOnAxis(data, axis.dim), function(dim) {
+ axis.scale.unionExtentFromData(data, dim);
+ });
+ }
+ };
+ Grid2.prototype.getTooltipAxes = function(dim) {
+ var baseAxes = [];
+ var otherAxes = [];
+ each(this.getCartesians(), function(cartesian) {
+ var baseAxis = dim != null && dim !== "auto" ? cartesian.getAxis(dim) : cartesian.getBaseAxis();
+ var otherAxis = cartesian.getOtherAxis(baseAxis);
+ indexOf(baseAxes, baseAxis) < 0 && baseAxes.push(baseAxis);
+ indexOf(otherAxes, otherAxis) < 0 && otherAxes.push(otherAxis);
+ });
+ return {
+ baseAxes,
+ otherAxes
+ };
+ };
+ Grid2.create = function(ecModel, api) {
+ var grids = [];
+ ecModel.eachComponent("grid", function(gridModel, idx) {
+ var grid = new Grid2(gridModel, ecModel, api);
+ grid.name = "grid_" + idx;
+ grid.resize(gridModel, api, true);
+ gridModel.coordinateSystem = grid;
+ grids.push(grid);
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ if (!isCartesian2DSeries(seriesModel)) {
+ return;
+ }
+ var axesModelMap = findAxisModels(seriesModel);
+ var xAxisModel = axesModelMap.xAxisModel;
+ var yAxisModel = axesModelMap.yAxisModel;
+ var gridModel = xAxisModel.getCoordSysModel();
+ if (true) {
+ if (!gridModel) {
+ throw new Error('Grid "' + retrieve3(xAxisModel.get("gridIndex"), xAxisModel.get("gridId"), 0) + '" not found');
+ }
+ if (xAxisModel.getCoordSysModel() !== yAxisModel.getCoordSysModel()) {
+ throw new Error("xAxis and yAxis must use the same grid");
+ }
+ }
+ var grid = gridModel.coordinateSystem;
+ seriesModel.coordinateSystem = grid.getCartesian(xAxisModel.componentIndex, yAxisModel.componentIndex);
+ });
+ return grids;
+ };
+ Grid2.dimensions = cartesian2DDimensions;
+ return Grid2;
+}();
+function isAxisUsedInTheGrid(axisModel, gridModel) {
+ return axisModel.getCoordSysModel() === gridModel;
+}
+function fixAxisOnZero(axesMap, otherAxisDim, axis, onZeroRecords) {
+ axis.getAxesOnZeroOf = function() {
+ return otherAxisOnZeroOf ? [otherAxisOnZeroOf] : [];
+ };
+ var otherAxes = axesMap[otherAxisDim];
+ var otherAxisOnZeroOf;
+ var axisModel = axis.model;
+ var onZero = axisModel.get(["axisLine", "onZero"]);
+ var onZeroAxisIndex = axisModel.get(["axisLine", "onZeroAxisIndex"]);
+ if (!onZero) {
+ return;
+ }
+ if (onZeroAxisIndex != null) {
+ if (canOnZeroToAxis(otherAxes[onZeroAxisIndex])) {
+ otherAxisOnZeroOf = otherAxes[onZeroAxisIndex];
+ }
+ } else {
+ for (var idx in otherAxes) {
+ if (otherAxes.hasOwnProperty(idx) && canOnZeroToAxis(otherAxes[idx]) && !onZeroRecords[getOnZeroRecordKey(otherAxes[idx])]) {
+ otherAxisOnZeroOf = otherAxes[idx];
+ break;
+ }
+ }
+ }
+ if (otherAxisOnZeroOf) {
+ onZeroRecords[getOnZeroRecordKey(otherAxisOnZeroOf)] = true;
+ }
+ function getOnZeroRecordKey(axis2) {
+ return axis2.dim + "_" + axis2.index;
+ }
+}
+function canOnZeroToAxis(axis) {
+ return axis && axis.type !== "category" && axis.type !== "time" && ifAxisCrossZero(axis);
+}
+function updateAxisTransform(axis, coordBase) {
+ var axisExtent = axis.getExtent();
+ var axisExtentSum = axisExtent[0] + axisExtent[1];
+ axis.toGlobalCoord = axis.dim === "x" ? function(coord) {
+ return coord + coordBase;
+ } : function(coord) {
+ return axisExtentSum - coord + coordBase;
+ };
+ axis.toLocalCoord = axis.dim === "x" ? function(coord) {
+ return coord - coordBase;
+ } : function(coord) {
+ return axisExtentSum - coord + coordBase;
+ };
+}
+var Grid_default = Grid;
+
+// node_modules/echarts/lib/component/axis/AxisBuilder.js
+var PI7 = Math.PI;
+var AxisBuilder = function() {
+ function AxisBuilder2(axisModel, opt) {
+ this.group = new Group_default();
+ this.opt = opt;
+ this.axisModel = axisModel;
+ defaults(opt, {
+ labelOffset: 0,
+ nameDirection: 1,
+ tickDirection: 1,
+ labelDirection: 1,
+ silent: true,
+ handleAutoShown: function() {
+ return true;
+ }
+ });
+ var transformGroup = new Group_default({
+ x: opt.position[0],
+ y: opt.position[1],
+ rotation: opt.rotation
+ });
+ transformGroup.updateTransform();
+ this._transformGroup = transformGroup;
+ }
+ AxisBuilder2.prototype.hasBuilder = function(name) {
+ return !!builders[name];
+ };
+ AxisBuilder2.prototype.add = function(name) {
+ builders[name](this.opt, this.axisModel, this.group, this._transformGroup);
+ };
+ AxisBuilder2.prototype.getGroup = function() {
+ return this.group;
+ };
+ AxisBuilder2.innerTextLayout = function(axisRotation, textRotation, direction) {
+ var rotationDiff = remRadian(textRotation - axisRotation);
+ var textAlign;
+ var textVerticalAlign;
+ if (isRadianAroundZero(rotationDiff)) {
+ textVerticalAlign = direction > 0 ? "top" : "bottom";
+ textAlign = "center";
+ } else if (isRadianAroundZero(rotationDiff - PI7)) {
+ textVerticalAlign = direction > 0 ? "bottom" : "top";
+ textAlign = "center";
+ } else {
+ textVerticalAlign = "middle";
+ if (rotationDiff > 0 && rotationDiff < PI7) {
+ textAlign = direction > 0 ? "right" : "left";
+ } else {
+ textAlign = direction > 0 ? "left" : "right";
+ }
+ }
+ return {
+ rotation: rotationDiff,
+ textAlign,
+ textVerticalAlign
+ };
+ };
+ AxisBuilder2.makeAxisEventDataBase = function(axisModel) {
+ var eventData = {
+ componentType: axisModel.mainType,
+ componentIndex: axisModel.componentIndex
+ };
+ eventData[axisModel.mainType + "Index"] = axisModel.componentIndex;
+ return eventData;
+ };
+ AxisBuilder2.isLabelSilent = function(axisModel) {
+ var tooltipOpt = axisModel.get("tooltip");
+ return axisModel.get("silent") || !(axisModel.get("triggerEvent") || tooltipOpt && tooltipOpt.show);
+ };
+ return AxisBuilder2;
+}();
+var builders = {
+ axisLine: function(opt, axisModel, group, transformGroup) {
+ var shown = axisModel.get(["axisLine", "show"]);
+ if (shown === "auto" && opt.handleAutoShown) {
+ shown = opt.handleAutoShown("axisLine");
+ }
+ if (!shown) {
+ return;
+ }
+ var extent3 = axisModel.axis.getExtent();
+ var matrix = transformGroup.transform;
+ var pt12 = [extent3[0], 0];
+ var pt22 = [extent3[1], 0];
+ var inverse = pt12[0] > pt22[0];
+ if (matrix) {
+ applyTransform(pt12, pt12, matrix);
+ applyTransform(pt22, pt22, matrix);
+ }
+ var lineStyle = extend({
+ lineCap: "round"
+ }, axisModel.getModel(["axisLine", "lineStyle"]).getLineStyle());
+ var line = new Line_default({
+ shape: {
+ x1: pt12[0],
+ y1: pt12[1],
+ x2: pt22[0],
+ y2: pt22[1]
+ },
+ style: lineStyle,
+ strokeContainThreshold: opt.strokeContainThreshold || 5,
+ silent: true,
+ z2: 1
+ });
+ subPixelOptimizeLine2(line.shape, line.style.lineWidth);
+ line.anid = "line";
+ group.add(line);
+ var arrows = axisModel.get(["axisLine", "symbol"]);
+ if (arrows != null) {
+ var arrowSize = axisModel.get(["axisLine", "symbolSize"]);
+ if (isString(arrows)) {
+ arrows = [arrows, arrows];
+ }
+ if (isString(arrowSize) || isNumber(arrowSize)) {
+ arrowSize = [arrowSize, arrowSize];
+ }
+ var arrowOffset = normalizeSymbolOffset(axisModel.get(["axisLine", "symbolOffset"]) || 0, arrowSize);
+ var symbolWidth_1 = arrowSize[0];
+ var symbolHeight_1 = arrowSize[1];
+ each([{
+ rotate: opt.rotation + Math.PI / 2,
+ offset: arrowOffset[0],
+ r: 0
+ }, {
+ rotate: opt.rotation - Math.PI / 2,
+ offset: arrowOffset[1],
+ r: Math.sqrt((pt12[0] - pt22[0]) * (pt12[0] - pt22[0]) + (pt12[1] - pt22[1]) * (pt12[1] - pt22[1]))
+ }], function(point, index) {
+ if (arrows[index] !== "none" && arrows[index] != null) {
+ var symbol = createSymbol(arrows[index], -symbolWidth_1 / 2, -symbolHeight_1 / 2, symbolWidth_1, symbolHeight_1, lineStyle.stroke, true);
+ var r = point.r + point.offset;
+ var pt = inverse ? pt22 : pt12;
+ symbol.attr({
+ rotation: point.rotate,
+ x: pt[0] + r * Math.cos(opt.rotation),
+ y: pt[1] - r * Math.sin(opt.rotation),
+ silent: true,
+ z2: 11
+ });
+ group.add(symbol);
+ }
+ });
+ }
+ },
+ axisTickLabel: function(opt, axisModel, group, transformGroup) {
+ var ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);
+ var labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);
+ fixMinMaxLabelShow(axisModel, labelEls, ticksEls);
+ buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);
+ if (axisModel.get(["axisLabel", "hideOverlap"])) {
+ var labelList = prepareLayoutList(map(labelEls, function(label) {
+ return {
+ label,
+ priority: label.z2,
+ defaultAttr: {
+ ignore: label.ignore
+ }
+ };
+ }));
+ hideOverlap(labelList);
+ }
+ },
+ axisName: function(opt, axisModel, group, transformGroup) {
+ var name = retrieve(opt.axisName, axisModel.get("name"));
+ if (!name) {
+ return;
+ }
+ var nameLocation = axisModel.get("nameLocation");
+ var nameDirection = opt.nameDirection;
+ var textStyleModel = axisModel.getModel("nameTextStyle");
+ var gap = axisModel.get("nameGap") || 0;
+ var extent3 = axisModel.axis.getExtent();
+ var gapSignal = extent3[0] > extent3[1] ? -1 : 1;
+ var pos = [
+ nameLocation === "start" ? extent3[0] - gapSignal * gap : nameLocation === "end" ? extent3[1] + gapSignal * gap : (extent3[0] + extent3[1]) / 2,
+ isNameLocationCenter(nameLocation) ? opt.labelOffset + nameDirection * gap : 0
+ ];
+ var labelLayout2;
+ var nameRotation = axisModel.get("nameRotate");
+ if (nameRotation != null) {
+ nameRotation = nameRotation * PI7 / 180;
+ }
+ var axisNameAvailableWidth;
+ if (isNameLocationCenter(nameLocation)) {
+ labelLayout2 = AxisBuilder.innerTextLayout(
+ opt.rotation,
+ nameRotation != null ? nameRotation : opt.rotation,
+ nameDirection
+ );
+ } else {
+ labelLayout2 = endTextLayout(opt.rotation, nameLocation, nameRotation || 0, extent3);
+ axisNameAvailableWidth = opt.axisNameAvailableWidth;
+ if (axisNameAvailableWidth != null) {
+ axisNameAvailableWidth = Math.abs(axisNameAvailableWidth / Math.sin(labelLayout2.rotation));
+ !isFinite(axisNameAvailableWidth) && (axisNameAvailableWidth = null);
+ }
+ }
+ var textFont = textStyleModel.getFont();
+ var truncateOpt = axisModel.get("nameTruncate", true) || {};
+ var ellipsis = truncateOpt.ellipsis;
+ var maxWidth = retrieve(opt.nameTruncateMaxWidth, truncateOpt.maxWidth, axisNameAvailableWidth);
+ var textEl = new Text_default({
+ x: pos[0],
+ y: pos[1],
+ rotation: labelLayout2.rotation,
+ silent: AxisBuilder.isLabelSilent(axisModel),
+ style: createTextStyle(textStyleModel, {
+ text: name,
+ font: textFont,
+ overflow: "truncate",
+ width: maxWidth,
+ ellipsis,
+ fill: textStyleModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]),
+ align: textStyleModel.get("align") || labelLayout2.textAlign,
+ verticalAlign: textStyleModel.get("verticalAlign") || labelLayout2.textVerticalAlign
+ }),
+ z2: 1
+ });
+ setTooltipConfig({
+ el: textEl,
+ componentModel: axisModel,
+ itemName: name
+ });
+ textEl.__fullText = name;
+ textEl.anid = "name";
+ if (axisModel.get("triggerEvent")) {
+ var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);
+ eventData.targetType = "axisName";
+ eventData.name = name;
+ getECData(textEl).eventData = eventData;
+ }
+ transformGroup.add(textEl);
+ textEl.updateTransform();
+ group.add(textEl);
+ textEl.decomposeTransform();
+ }
+};
+function endTextLayout(rotation, textPosition, textRotate, extent3) {
+ var rotationDiff = remRadian(textRotate - rotation);
+ var textAlign;
+ var textVerticalAlign;
+ var inverse = extent3[0] > extent3[1];
+ var onLeft = textPosition === "start" && !inverse || textPosition !== "start" && inverse;
+ if (isRadianAroundZero(rotationDiff - PI7 / 2)) {
+ textVerticalAlign = onLeft ? "bottom" : "top";
+ textAlign = "center";
+ } else if (isRadianAroundZero(rotationDiff - PI7 * 1.5)) {
+ textVerticalAlign = onLeft ? "top" : "bottom";
+ textAlign = "center";
+ } else {
+ textVerticalAlign = "middle";
+ if (rotationDiff < PI7 * 1.5 && rotationDiff > PI7 / 2) {
+ textAlign = onLeft ? "left" : "right";
+ } else {
+ textAlign = onLeft ? "right" : "left";
+ }
+ }
+ return {
+ rotation: rotationDiff,
+ textAlign,
+ textVerticalAlign
+ };
+}
+function fixMinMaxLabelShow(axisModel, labelEls, tickEls) {
+ if (shouldShowAllLabels(axisModel.axis)) {
+ return;
+ }
+ var showMinLabel = axisModel.get(["axisLabel", "showMinLabel"]);
+ var showMaxLabel = axisModel.get(["axisLabel", "showMaxLabel"]);
+ labelEls = labelEls || [];
+ tickEls = tickEls || [];
+ var firstLabel = labelEls[0];
+ var nextLabel = labelEls[1];
+ var lastLabel = labelEls[labelEls.length - 1];
+ var prevLabel = labelEls[labelEls.length - 2];
+ var firstTick = tickEls[0];
+ var nextTick = tickEls[1];
+ var lastTick = tickEls[tickEls.length - 1];
+ var prevTick = tickEls[tickEls.length - 2];
+ if (showMinLabel === false) {
+ ignoreEl(firstLabel);
+ ignoreEl(firstTick);
+ } else if (isTwoLabelOverlapped(firstLabel, nextLabel)) {
+ if (showMinLabel) {
+ ignoreEl(nextLabel);
+ ignoreEl(nextTick);
+ } else {
+ ignoreEl(firstLabel);
+ ignoreEl(firstTick);
+ }
+ }
+ if (showMaxLabel === false) {
+ ignoreEl(lastLabel);
+ ignoreEl(lastTick);
+ } else if (isTwoLabelOverlapped(prevLabel, lastLabel)) {
+ if (showMaxLabel) {
+ ignoreEl(prevLabel);
+ ignoreEl(prevTick);
+ } else {
+ ignoreEl(lastLabel);
+ ignoreEl(lastTick);
+ }
+ }
+}
+function ignoreEl(el) {
+ el && (el.ignore = true);
+}
+function isTwoLabelOverlapped(current, next) {
+ var firstRect = current && current.getBoundingRect().clone();
+ var nextRect = next && next.getBoundingRect().clone();
+ if (!firstRect || !nextRect) {
+ return;
+ }
+ var mRotationBack = identity([]);
+ rotate(mRotationBack, mRotationBack, -current.rotation);
+ firstRect.applyTransform(mul2([], mRotationBack, current.getLocalTransform()));
+ nextRect.applyTransform(mul2([], mRotationBack, next.getLocalTransform()));
+ return firstRect.intersect(nextRect);
+}
+function isNameLocationCenter(nameLocation) {
+ return nameLocation === "middle" || nameLocation === "center";
+}
+function createTicks(ticksCoords, tickTransform, tickEndCoord, tickLineStyle, anidPrefix) {
+ var tickEls = [];
+ var pt12 = [];
+ var pt22 = [];
+ for (var i = 0; i < ticksCoords.length; i++) {
+ var tickCoord = ticksCoords[i].coord;
+ pt12[0] = tickCoord;
+ pt12[1] = 0;
+ pt22[0] = tickCoord;
+ pt22[1] = tickEndCoord;
+ if (tickTransform) {
+ applyTransform(pt12, pt12, tickTransform);
+ applyTransform(pt22, pt22, tickTransform);
+ }
+ var tickEl = new Line_default({
+ shape: {
+ x1: pt12[0],
+ y1: pt12[1],
+ x2: pt22[0],
+ y2: pt22[1]
+ },
+ style: tickLineStyle,
+ z2: 2,
+ autoBatch: true,
+ silent: true
+ });
+ subPixelOptimizeLine2(tickEl.shape, tickEl.style.lineWidth);
+ tickEl.anid = anidPrefix + "_" + ticksCoords[i].tickValue;
+ tickEls.push(tickEl);
+ }
+ return tickEls;
+}
+function buildAxisMajorTicks(group, transformGroup, axisModel, opt) {
+ var axis = axisModel.axis;
+ var tickModel = axisModel.getModel("axisTick");
+ var shown = tickModel.get("show");
+ if (shown === "auto" && opt.handleAutoShown) {
+ shown = opt.handleAutoShown("axisTick");
+ }
+ if (!shown || axis.scale.isBlank()) {
+ return;
+ }
+ var lineStyleModel = tickModel.getModel("lineStyle");
+ var tickEndCoord = opt.tickDirection * tickModel.get("length");
+ var ticksCoords = axis.getTicksCoords();
+ var ticksEls = createTicks(ticksCoords, transformGroup.transform, tickEndCoord, defaults(lineStyleModel.getLineStyle(), {
+ stroke: axisModel.get(["axisLine", "lineStyle", "color"])
+ }), "ticks");
+ for (var i = 0; i < ticksEls.length; i++) {
+ group.add(ticksEls[i]);
+ }
+ return ticksEls;
+}
+function buildAxisMinorTicks(group, transformGroup, axisModel, tickDirection) {
+ var axis = axisModel.axis;
+ var minorTickModel = axisModel.getModel("minorTick");
+ if (!minorTickModel.get("show") || axis.scale.isBlank()) {
+ return;
+ }
+ var minorTicksCoords = axis.getMinorTicksCoords();
+ if (!minorTicksCoords.length) {
+ return;
+ }
+ var lineStyleModel = minorTickModel.getModel("lineStyle");
+ var tickEndCoord = tickDirection * minorTickModel.get("length");
+ var minorTickLineStyle = defaults(lineStyleModel.getLineStyle(), defaults(axisModel.getModel("axisTick").getLineStyle(), {
+ stroke: axisModel.get(["axisLine", "lineStyle", "color"])
+ }));
+ for (var i = 0; i < minorTicksCoords.length; i++) {
+ var minorTicksEls = createTicks(minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, "minorticks_" + i);
+ for (var k = 0; k < minorTicksEls.length; k++) {
+ group.add(minorTicksEls[k]);
+ }
+ }
+}
+function buildAxisLabel(group, transformGroup, axisModel, opt) {
+ var axis = axisModel.axis;
+ var show = retrieve(opt.axisLabelShow, axisModel.get(["axisLabel", "show"]));
+ if (!show || axis.scale.isBlank()) {
+ return;
+ }
+ var labelModel = axisModel.getModel("axisLabel");
+ var labelMargin = labelModel.get("margin");
+ var labels = axis.getViewLabels();
+ var labelRotation = (retrieve(opt.labelRotate, labelModel.get("rotate")) || 0) * PI7 / 180;
+ var labelLayout2 = AxisBuilder.innerTextLayout(opt.rotation, labelRotation, opt.labelDirection);
+ var rawCategoryData = axisModel.getCategories && axisModel.getCategories(true);
+ var labelEls = [];
+ var silent = AxisBuilder.isLabelSilent(axisModel);
+ var triggerEvent = axisModel.get("triggerEvent");
+ each(labels, function(labelItem, index) {
+ var tickValue = axis.scale.type === "ordinal" ? axis.scale.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;
+ var formattedLabel = labelItem.formattedLabel;
+ var rawLabel = labelItem.rawLabel;
+ var itemLabelModel = labelModel;
+ if (rawCategoryData && rawCategoryData[tickValue]) {
+ var rawCategoryItem = rawCategoryData[tickValue];
+ if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {
+ itemLabelModel = new Model_default(rawCategoryItem.textStyle, labelModel, axisModel.ecModel);
+ }
+ }
+ var textColor = itemLabelModel.getTextColor() || axisModel.get(["axisLine", "lineStyle", "color"]);
+ var tickCoord = axis.dataToCoord(tickValue);
+ var align = itemLabelModel.getShallow("align", true) || labelLayout2.textAlign;
+ var alignMin = retrieve2(itemLabelModel.getShallow("alignMinLabel", true), align);
+ var alignMax = retrieve2(itemLabelModel.getShallow("alignMaxLabel", true), align);
+ var verticalAlign = itemLabelModel.getShallow("verticalAlign", true) || itemLabelModel.getShallow("baseline", true) || labelLayout2.textVerticalAlign;
+ var verticalAlignMin = retrieve2(itemLabelModel.getShallow("verticalAlignMinLabel", true), verticalAlign);
+ var verticalAlignMax = retrieve2(itemLabelModel.getShallow("verticalAlignMaxLabel", true), verticalAlign);
+ var textEl = new Text_default({
+ x: tickCoord,
+ y: opt.labelOffset + opt.labelDirection * labelMargin,
+ rotation: labelLayout2.rotation,
+ silent,
+ z2: 10 + (labelItem.level || 0),
+ style: createTextStyle(itemLabelModel, {
+ text: formattedLabel,
+ align: index === 0 ? alignMin : index === labels.length - 1 ? alignMax : align,
+ verticalAlign: index === 0 ? verticalAlignMin : index === labels.length - 1 ? verticalAlignMax : verticalAlign,
+ fill: isFunction(textColor) ? textColor(
+ axis.type === "category" ? rawLabel : axis.type === "value" ? tickValue + "" : tickValue,
+ index
+ ) : textColor
+ })
+ });
+ textEl.anid = "label_" + tickValue;
+ setTooltipConfig({
+ el: textEl,
+ componentModel: axisModel,
+ itemName: formattedLabel,
+ formatterParamsExtra: {
+ isTruncated: function() {
+ return textEl.isTruncated;
+ },
+ value: rawLabel,
+ tickIndex: index
+ }
+ });
+ if (triggerEvent) {
+ var eventData = AxisBuilder.makeAxisEventDataBase(axisModel);
+ eventData.targetType = "axisLabel";
+ eventData.value = rawLabel;
+ eventData.tickIndex = index;
+ if (axis.type === "category") {
+ eventData.dataIndex = tickValue;
+ }
+ getECData(textEl).eventData = eventData;
+ }
+ transformGroup.add(textEl);
+ textEl.updateTransform();
+ labelEls.push(textEl);
+ group.add(textEl);
+ textEl.decomposeTransform();
+ });
+ return labelEls;
+}
+var AxisBuilder_default = AxisBuilder;
+
+// node_modules/echarts/lib/component/axisPointer/modelHelper.js
+function collect(ecModel, api) {
+ var result = {
+ axesInfo: {},
+ seriesInvolved: false,
+ coordSysAxesInfo: {},
+ coordSysMap: {}
+ };
+ collectAxesInfo(result, ecModel, api);
+ result.seriesInvolved && collectSeriesInfo(result, ecModel);
+ return result;
+}
+function collectAxesInfo(result, ecModel, api) {
+ var globalTooltipModel = ecModel.getComponent("tooltip");
+ var globalAxisPointerModel = ecModel.getComponent("axisPointer");
+ var linksOption = globalAxisPointerModel.get("link", true) || [];
+ var linkGroups = [];
+ each(api.getCoordinateSystems(), function(coordSys) {
+ if (!coordSys.axisPointerEnabled) {
+ return;
+ }
+ var coordSysKey = makeKey(coordSys.model);
+ var axesInfoInCoordSys = result.coordSysAxesInfo[coordSysKey] = {};
+ result.coordSysMap[coordSysKey] = coordSys;
+ var coordSysModel = coordSys.model;
+ var baseTooltipModel = coordSysModel.getModel("tooltip", globalTooltipModel);
+ each(coordSys.getAxes(), curry(saveTooltipAxisInfo, false, null));
+ if (coordSys.getTooltipAxes && globalTooltipModel && baseTooltipModel.get("show")) {
+ var triggerAxis = baseTooltipModel.get("trigger") === "axis";
+ var cross = baseTooltipModel.get(["axisPointer", "type"]) === "cross";
+ var tooltipAxes = coordSys.getTooltipAxes(baseTooltipModel.get(["axisPointer", "axis"]));
+ if (triggerAxis || cross) {
+ each(tooltipAxes.baseAxes, curry(saveTooltipAxisInfo, cross ? "cross" : true, triggerAxis));
+ }
+ if (cross) {
+ each(tooltipAxes.otherAxes, curry(saveTooltipAxisInfo, "cross", false));
+ }
+ }
+ function saveTooltipAxisInfo(fromTooltip, triggerTooltip, axis) {
+ var axisPointerModel = axis.model.getModel("axisPointer", globalAxisPointerModel);
+ var axisPointerShow = axisPointerModel.get("show");
+ if (!axisPointerShow || axisPointerShow === "auto" && !fromTooltip && !isHandleTrigger(axisPointerModel)) {
+ return;
+ }
+ if (triggerTooltip == null) {
+ triggerTooltip = axisPointerModel.get("triggerTooltip");
+ }
+ axisPointerModel = fromTooltip ? makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) : axisPointerModel;
+ var snap = axisPointerModel.get("snap");
+ var triggerEmphasis = axisPointerModel.get("triggerEmphasis");
+ var axisKey = makeKey(axis.model);
+ var involveSeries = triggerTooltip || snap || axis.type === "category";
+ var axisInfo = result.axesInfo[axisKey] = {
+ key: axisKey,
+ axis,
+ coordSys,
+ axisPointerModel,
+ triggerTooltip,
+ triggerEmphasis,
+ involveSeries,
+ snap,
+ useHandle: isHandleTrigger(axisPointerModel),
+ seriesModels: [],
+ linkGroup: null
+ };
+ axesInfoInCoordSys[axisKey] = axisInfo;
+ result.seriesInvolved = result.seriesInvolved || involveSeries;
+ var groupIndex = getLinkGroupIndex(linksOption, axis);
+ if (groupIndex != null) {
+ var linkGroup = linkGroups[groupIndex] || (linkGroups[groupIndex] = {
+ axesInfo: {}
+ });
+ linkGroup.axesInfo[axisKey] = axisInfo;
+ linkGroup.mapper = linksOption[groupIndex].mapper;
+ axisInfo.linkGroup = linkGroup;
+ }
+ }
+ });
+}
+function makeAxisPointerModel(axis, baseTooltipModel, globalAxisPointerModel, ecModel, fromTooltip, triggerTooltip) {
+ var tooltipAxisPointerModel = baseTooltipModel.getModel("axisPointer");
+ var fields = ["type", "snap", "lineStyle", "shadowStyle", "label", "animation", "animationDurationUpdate", "animationEasingUpdate", "z"];
+ var volatileOption = {};
+ each(fields, function(field) {
+ volatileOption[field] = clone(tooltipAxisPointerModel.get(field));
+ });
+ volatileOption.snap = axis.type !== "category" && !!triggerTooltip;
+ if (tooltipAxisPointerModel.get("type") === "cross") {
+ volatileOption.type = "line";
+ }
+ var labelOption = volatileOption.label || (volatileOption.label = {});
+ labelOption.show == null && (labelOption.show = false);
+ if (fromTooltip === "cross") {
+ var tooltipAxisPointerLabelShow = tooltipAxisPointerModel.get(["label", "show"]);
+ labelOption.show = tooltipAxisPointerLabelShow != null ? tooltipAxisPointerLabelShow : true;
+ if (!triggerTooltip) {
+ var crossStyle = volatileOption.lineStyle = tooltipAxisPointerModel.get("crossStyle");
+ crossStyle && defaults(labelOption, crossStyle.textStyle);
+ }
+ }
+ return axis.model.getModel("axisPointer", new Model_default(volatileOption, globalAxisPointerModel, ecModel));
+}
+function collectSeriesInfo(result, ecModel) {
+ ecModel.eachSeries(function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ var seriesTooltipTrigger = seriesModel.get(["tooltip", "trigger"], true);
+ var seriesTooltipShow = seriesModel.get(["tooltip", "show"], true);
+ if (!coordSys || seriesTooltipTrigger === "none" || seriesTooltipTrigger === false || seriesTooltipTrigger === "item" || seriesTooltipShow === false || seriesModel.get(["axisPointer", "show"], true) === false) {
+ return;
+ }
+ each(result.coordSysAxesInfo[makeKey(coordSys.model)], function(axisInfo) {
+ var axis = axisInfo.axis;
+ if (coordSys.getAxis(axis.dim) === axis) {
+ axisInfo.seriesModels.push(seriesModel);
+ axisInfo.seriesDataCount == null && (axisInfo.seriesDataCount = 0);
+ axisInfo.seriesDataCount += seriesModel.getData().count();
+ }
+ });
+ });
+}
+function getLinkGroupIndex(linksOption, axis) {
+ var axisModel = axis.model;
+ var dim = axis.dim;
+ for (var i = 0; i < linksOption.length; i++) {
+ var linkOption = linksOption[i] || {};
+ if (checkPropInLink(linkOption[dim + "AxisId"], axisModel.id) || checkPropInLink(linkOption[dim + "AxisIndex"], axisModel.componentIndex) || checkPropInLink(linkOption[dim + "AxisName"], axisModel.name)) {
+ return i;
+ }
+ }
+}
+function checkPropInLink(linkPropValue, axisPropValue) {
+ return linkPropValue === "all" || isArray(linkPropValue) && indexOf(linkPropValue, axisPropValue) >= 0 || linkPropValue === axisPropValue;
+}
+function fixValue(axisModel) {
+ var axisInfo = getAxisInfo(axisModel);
+ if (!axisInfo) {
+ return;
+ }
+ var axisPointerModel = axisInfo.axisPointerModel;
+ var scale4 = axisInfo.axis.scale;
+ var option = axisPointerModel.option;
+ var status = axisPointerModel.get("status");
+ var value = axisPointerModel.get("value");
+ if (value != null) {
+ value = scale4.parse(value);
+ }
+ var useHandle = isHandleTrigger(axisPointerModel);
+ if (status == null) {
+ option.status = useHandle ? "show" : "hide";
+ }
+ var extent3 = scale4.getExtent().slice();
+ extent3[0] > extent3[1] && extent3.reverse();
+ if (value == null || value > extent3[1]) {
+ value = extent3[1];
+ }
+ if (value < extent3[0]) {
+ value = extent3[0];
+ }
+ option.value = value;
+ if (useHandle) {
+ option.status = axisInfo.axis.scale.isBlank() ? "hide" : "show";
+ }
+}
+function getAxisInfo(axisModel) {
+ var coordSysAxesInfo = (axisModel.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
+ return coordSysAxesInfo && coordSysAxesInfo.axesInfo[makeKey(axisModel)];
+}
+function getAxisPointerModel(axisModel) {
+ var axisInfo = getAxisInfo(axisModel);
+ return axisInfo && axisInfo.axisPointerModel;
+}
+function isHandleTrigger(axisPointerModel) {
+ return !!axisPointerModel.get(["handle", "show"]);
+}
+function makeKey(model) {
+ return model.type + "||" + model.id;
+}
+
+// node_modules/echarts/lib/component/axis/AxisView.js
+var axisPointerClazz = {};
+var AxisView = function(_super) {
+ __extends(AxisView2, _super);
+ function AxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = AxisView2.type;
+ return _this;
+ }
+ AxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
+ this.axisPointerClass && fixValue(axisModel);
+ _super.prototype.render.apply(this, arguments);
+ this._doUpdateAxisPointerClass(axisModel, api, true);
+ };
+ AxisView2.prototype.updateAxisPointer = function(axisModel, ecModel, api, payload) {
+ this._doUpdateAxisPointerClass(axisModel, api, false);
+ };
+ AxisView2.prototype.remove = function(ecModel, api) {
+ var axisPointer = this._axisPointer;
+ axisPointer && axisPointer.remove(api);
+ };
+ AxisView2.prototype.dispose = function(ecModel, api) {
+ this._disposeAxisPointer(api);
+ _super.prototype.dispose.apply(this, arguments);
+ };
+ AxisView2.prototype._doUpdateAxisPointerClass = function(axisModel, api, forceRender) {
+ var Clazz = AxisView2.getAxisPointerClass(this.axisPointerClass);
+ if (!Clazz) {
+ return;
+ }
+ var axisPointerModel = getAxisPointerModel(axisModel);
+ axisPointerModel ? (this._axisPointer || (this._axisPointer = new Clazz())).render(axisModel, axisPointerModel, api, forceRender) : this._disposeAxisPointer(api);
+ };
+ AxisView2.prototype._disposeAxisPointer = function(api) {
+ this._axisPointer && this._axisPointer.dispose(api);
+ this._axisPointer = null;
+ };
+ AxisView2.registerAxisPointerClass = function(type, clazz) {
+ if (true) {
+ if (axisPointerClazz[type]) {
+ throw new Error("axisPointer " + type + " exists");
+ }
+ }
+ axisPointerClazz[type] = clazz;
+ };
+ ;
+ AxisView2.getAxisPointerClass = function(type) {
+ return type && axisPointerClazz[type];
+ };
+ ;
+ AxisView2.type = "axis";
+ return AxisView2;
+}(Component_default2);
+var AxisView_default = AxisView;
+
+// node_modules/echarts/lib/component/axis/axisSplitHelper.js
+var inner7 = makeInner();
+function rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel) {
+ var axis = axisModel.axis;
+ if (axis.scale.isBlank()) {
+ return;
+ }
+ var splitAreaModel = axisModel.getModel("splitArea");
+ var areaStyleModel = splitAreaModel.getModel("areaStyle");
+ var areaColors = areaStyleModel.get("color");
+ var gridRect = gridModel.coordinateSystem.getRect();
+ var ticksCoords = axis.getTicksCoords({
+ tickModel: splitAreaModel,
+ clamp: true
+ });
+ if (!ticksCoords.length) {
+ return;
+ }
+ var areaColorsLen = areaColors.length;
+ var lastSplitAreaColors = inner7(axisView).splitAreaColors;
+ var newSplitAreaColors = createHashMap();
+ var colorIndex = 0;
+ if (lastSplitAreaColors) {
+ for (var i = 0; i < ticksCoords.length; i++) {
+ var cIndex = lastSplitAreaColors.get(ticksCoords[i].tickValue);
+ if (cIndex != null) {
+ colorIndex = (cIndex + (areaColorsLen - 1) * i) % areaColorsLen;
+ break;
+ }
+ }
+ }
+ var prev = axis.toGlobalCoord(ticksCoords[0].coord);
+ var areaStyle = areaStyleModel.getAreaStyle();
+ areaColors = isArray(areaColors) ? areaColors : [areaColors];
+ for (var i = 1; i < ticksCoords.length; i++) {
+ var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
+ var x = void 0;
+ var y = void 0;
+ var width = void 0;
+ var height = void 0;
+ if (axis.isHorizontal()) {
+ x = prev;
+ y = gridRect.y;
+ width = tickCoord - x;
+ height = gridRect.height;
+ prev = x + width;
+ } else {
+ x = gridRect.x;
+ y = prev;
+ width = gridRect.width;
+ height = tickCoord - y;
+ prev = y + height;
+ }
+ var tickValue = ticksCoords[i - 1].tickValue;
+ tickValue != null && newSplitAreaColors.set(tickValue, colorIndex);
+ axisGroup.add(new Rect_default({
+ anid: tickValue != null ? "area_" + tickValue : null,
+ shape: {
+ x,
+ y,
+ width,
+ height
+ },
+ style: defaults({
+ fill: areaColors[colorIndex]
+ }, areaStyle),
+ autoBatch: true,
+ silent: true
+ }));
+ colorIndex = (colorIndex + 1) % areaColorsLen;
+ }
+ inner7(axisView).splitAreaColors = newSplitAreaColors;
+}
+function rectCoordAxisHandleRemove(axisView) {
+ inner7(axisView).splitAreaColors = null;
+}
+
+// node_modules/echarts/lib/component/axis/CartesianAxisView.js
+var axisBuilderAttrs = ["axisLine", "axisTickLabel", "axisName"];
+var selfBuilderAttrs = ["splitArea", "splitLine", "minorSplitLine"];
+var CartesianAxisView = function(_super) {
+ __extends(CartesianAxisView2, _super);
+ function CartesianAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CartesianAxisView2.type;
+ _this.axisPointerClass = "CartesianAxisPointer";
+ return _this;
+ }
+ CartesianAxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
+ this.group.removeAll();
+ var oldAxisGroup = this._axisGroup;
+ this._axisGroup = new Group_default();
+ this.group.add(this._axisGroup);
+ if (!axisModel.get("show")) {
+ return;
+ }
+ var gridModel = axisModel.getCoordSysModel();
+ var layout5 = layout2(gridModel, axisModel);
+ var axisBuilder = new AxisBuilder_default(axisModel, extend({
+ handleAutoShown: function(elementType) {
+ var cartesians = gridModel.coordinateSystem.getCartesians();
+ for (var i = 0; i < cartesians.length; i++) {
+ if (isIntervalOrLogScale(cartesians[i].getOtherAxis(axisModel.axis).scale)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }, layout5));
+ each(axisBuilderAttrs, axisBuilder.add, axisBuilder);
+ this._axisGroup.add(axisBuilder.getGroup());
+ each(selfBuilderAttrs, function(name) {
+ if (axisModel.get([name, "show"])) {
+ axisElementBuilders[name](this, this._axisGroup, axisModel, gridModel);
+ }
+ }, this);
+ var isInitialSortFromBarRacing = payload && payload.type === "changeAxisOrder" && payload.isInitSort;
+ if (!isInitialSortFromBarRacing) {
+ groupTransition(oldAxisGroup, this._axisGroup, axisModel);
+ }
+ _super.prototype.render.call(this, axisModel, ecModel, api, payload);
+ };
+ CartesianAxisView2.prototype.remove = function() {
+ rectCoordAxisHandleRemove(this);
+ };
+ CartesianAxisView2.type = "cartesianAxis";
+ return CartesianAxisView2;
+}(AxisView_default);
+var axisElementBuilders = {
+ splitLine: function(axisView, axisGroup, axisModel, gridModel) {
+ var axis = axisModel.axis;
+ if (axis.scale.isBlank()) {
+ return;
+ }
+ var splitLineModel = axisModel.getModel("splitLine");
+ var lineStyleModel = splitLineModel.getModel("lineStyle");
+ var lineColors = lineStyleModel.get("color");
+ var showMinLine = splitLineModel.get("showMinLine") !== false;
+ var showMaxLine = splitLineModel.get("showMaxLine") !== false;
+ lineColors = isArray(lineColors) ? lineColors : [lineColors];
+ var gridRect = gridModel.coordinateSystem.getRect();
+ var isHorizontal = axis.isHorizontal();
+ var lineCount = 0;
+ var ticksCoords = axis.getTicksCoords({
+ tickModel: splitLineModel
+ });
+ var p1 = [];
+ var p2 = [];
+ var lineStyle = lineStyleModel.getLineStyle();
+ for (var i = 0; i < ticksCoords.length; i++) {
+ var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
+ if (i === 0 && !showMinLine || i === ticksCoords.length - 1 && !showMaxLine) {
+ continue;
+ }
+ var tickValue = ticksCoords[i].tickValue;
+ if (isHorizontal) {
+ p1[0] = tickCoord;
+ p1[1] = gridRect.y;
+ p2[0] = tickCoord;
+ p2[1] = gridRect.y + gridRect.height;
+ } else {
+ p1[0] = gridRect.x;
+ p1[1] = tickCoord;
+ p2[0] = gridRect.x + gridRect.width;
+ p2[1] = tickCoord;
+ }
+ var colorIndex = lineCount++ % lineColors.length;
+ var line = new Line_default({
+ anid: tickValue != null ? "line_" + tickValue : null,
+ autoBatch: true,
+ shape: {
+ x1: p1[0],
+ y1: p1[1],
+ x2: p2[0],
+ y2: p2[1]
+ },
+ style: defaults({
+ stroke: lineColors[colorIndex]
+ }, lineStyle),
+ silent: true
+ });
+ subPixelOptimizeLine2(line.shape, lineStyle.lineWidth);
+ axisGroup.add(line);
+ }
+ },
+ minorSplitLine: function(axisView, axisGroup, axisModel, gridModel) {
+ var axis = axisModel.axis;
+ var minorSplitLineModel = axisModel.getModel("minorSplitLine");
+ var lineStyleModel = minorSplitLineModel.getModel("lineStyle");
+ var gridRect = gridModel.coordinateSystem.getRect();
+ var isHorizontal = axis.isHorizontal();
+ var minorTicksCoords = axis.getMinorTicksCoords();
+ if (!minorTicksCoords.length) {
+ return;
+ }
+ var p1 = [];
+ var p2 = [];
+ var lineStyle = lineStyleModel.getLineStyle();
+ for (var i = 0; i < minorTicksCoords.length; i++) {
+ for (var k = 0; k < minorTicksCoords[i].length; k++) {
+ var tickCoord = axis.toGlobalCoord(minorTicksCoords[i][k].coord);
+ if (isHorizontal) {
+ p1[0] = tickCoord;
+ p1[1] = gridRect.y;
+ p2[0] = tickCoord;
+ p2[1] = gridRect.y + gridRect.height;
+ } else {
+ p1[0] = gridRect.x;
+ p1[1] = tickCoord;
+ p2[0] = gridRect.x + gridRect.width;
+ p2[1] = tickCoord;
+ }
+ var line = new Line_default({
+ anid: "minor_line_" + minorTicksCoords[i][k].tickValue,
+ autoBatch: true,
+ shape: {
+ x1: p1[0],
+ y1: p1[1],
+ x2: p2[0],
+ y2: p2[1]
+ },
+ style: lineStyle,
+ silent: true
+ });
+ subPixelOptimizeLine2(line.shape, lineStyle.lineWidth);
+ axisGroup.add(line);
+ }
+ }
+ },
+ splitArea: function(axisView, axisGroup, axisModel, gridModel) {
+ rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, gridModel);
+ }
+};
+var CartesianXAxisView = function(_super) {
+ __extends(CartesianXAxisView2, _super);
+ function CartesianXAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CartesianXAxisView2.type;
+ return _this;
+ }
+ CartesianXAxisView2.type = "xAxis";
+ return CartesianXAxisView2;
+}(CartesianAxisView);
+var CartesianYAxisView = function(_super) {
+ __extends(CartesianYAxisView2, _super);
+ function CartesianYAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CartesianXAxisView.type;
+ return _this;
+ }
+ CartesianYAxisView2.type = "yAxis";
+ return CartesianYAxisView2;
+}(CartesianAxisView);
+
+// node_modules/echarts/lib/component/grid/installSimple.js
+var GridView = function(_super) {
+ __extends(GridView2, _super);
+ function GridView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "grid";
+ return _this;
+ }
+ GridView2.prototype.render = function(gridModel, ecModel) {
+ this.group.removeAll();
+ if (gridModel.get("show")) {
+ this.group.add(new Rect_default({
+ shape: gridModel.coordinateSystem.getRect(),
+ style: defaults({
+ fill: gridModel.get("backgroundColor")
+ }, gridModel.getItemStyle()),
+ silent: true,
+ z2: -1
+ }));
+ }
+ };
+ GridView2.type = "grid";
+ return GridView2;
+}(Component_default2);
+var extraOption = {
+ offset: 0
+};
+function install6(registers) {
+ registers.registerComponentView(GridView);
+ registers.registerComponentModel(GridModel_default);
+ registers.registerCoordinateSystem("cartesian2d", Grid_default);
+ axisModelCreator(registers, "x", CartesianAxisModel, extraOption);
+ axisModelCreator(registers, "y", CartesianAxisModel, extraOption);
+ registers.registerComponentView(CartesianXAxisView);
+ registers.registerComponentView(CartesianYAxisView);
+ registers.registerPreprocessor(function(option) {
+ if (option.xAxis && option.yAxis && !option.grid) {
+ option.grid = {};
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/scatter/install.js
+function install7(registers) {
+ use(install6);
+ registers.registerSeriesModel(ScatterSeries_default);
+ registers.registerChartView(ScatterView_default);
+ registers.registerLayout(pointsLayout("scatter"));
+}
+
+// node_modules/echarts/lib/chart/radar/radarLayout.js
+function radarLayout(ecModel) {
+ ecModel.eachSeriesByType("radar", function(seriesModel) {
+ var data = seriesModel.getData();
+ var points4 = [];
+ var coordSys = seriesModel.coordinateSystem;
+ if (!coordSys) {
+ return;
+ }
+ var axes = coordSys.getIndicatorAxes();
+ each(axes, function(axis, axisIndex) {
+ data.each(data.mapDimension(axes[axisIndex].dim), function(val, dataIndex) {
+ points4[dataIndex] = points4[dataIndex] || [];
+ var point = coordSys.dataToPoint(val, axisIndex);
+ points4[dataIndex][axisIndex] = isValidPoint(point) ? point : getValueMissingPoint(coordSys);
+ });
+ });
+ data.each(function(idx) {
+ var firstPoint = find(points4[idx], function(point) {
+ return isValidPoint(point);
+ }) || getValueMissingPoint(coordSys);
+ points4[idx].push(firstPoint.slice());
+ data.setItemLayout(idx, points4[idx]);
+ });
+ });
+}
+function isValidPoint(point) {
+ return !isNaN(point[0]) && !isNaN(point[1]);
+}
+function getValueMissingPoint(coordSys) {
+ return [coordSys.cx, coordSys.cy];
+}
+
+// node_modules/echarts/lib/chart/radar/backwardCompat.js
+function radarBackwardCompat(option) {
+ var polarOptArr = option.polar;
+ if (polarOptArr) {
+ if (!isArray(polarOptArr)) {
+ polarOptArr = [polarOptArr];
+ }
+ var polarNotRadar_1 = [];
+ each(polarOptArr, function(polarOpt, idx) {
+ if (polarOpt.indicator) {
+ if (polarOpt.type && !polarOpt.shape) {
+ polarOpt.shape = polarOpt.type;
+ }
+ option.radar = option.radar || [];
+ if (!isArray(option.radar)) {
+ option.radar = [option.radar];
+ }
+ option.radar.push(polarOpt);
+ } else {
+ polarNotRadar_1.push(polarOpt);
+ }
+ });
+ option.polar = polarNotRadar_1;
+ }
+ each(option.series, function(seriesOpt) {
+ if (seriesOpt && seriesOpt.type === "radar" && seriesOpt.polarIndex) {
+ seriesOpt.radarIndex = seriesOpt.polarIndex;
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/radar/RadarView.js
+var RadarView = function(_super) {
+ __extends(RadarView3, _super);
+ function RadarView3() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = RadarView3.type;
+ return _this;
+ }
+ RadarView3.prototype.render = function(seriesModel, ecModel, api) {
+ var polar = seriesModel.coordinateSystem;
+ var group = this.group;
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ function createSymbol3(data2, idx) {
+ var symbolType = data2.getItemVisual(idx, "symbol") || "circle";
+ if (symbolType === "none") {
+ return;
+ }
+ var symbolSize = normalizeSymbolSize(data2.getItemVisual(idx, "symbolSize"));
+ var symbolPath = createSymbol(symbolType, -1, -1, 2, 2);
+ var symbolRotate = data2.getItemVisual(idx, "symbolRotate") || 0;
+ symbolPath.attr({
+ style: {
+ strokeNoScale: true
+ },
+ z2: 100,
+ scaleX: symbolSize[0] / 2,
+ scaleY: symbolSize[1] / 2,
+ rotation: symbolRotate * Math.PI / 180 || 0
+ });
+ return symbolPath;
+ }
+ function updateSymbols(oldPoints, newPoints, symbolGroup, data2, idx, isInit) {
+ symbolGroup.removeAll();
+ for (var i = 0; i < newPoints.length - 1; i++) {
+ var symbolPath = createSymbol3(data2, idx);
+ if (symbolPath) {
+ symbolPath.__dimIdx = i;
+ if (oldPoints[i]) {
+ symbolPath.setPosition(oldPoints[i]);
+ graphic_exports[isInit ? "initProps" : "updateProps"](symbolPath, {
+ x: newPoints[i][0],
+ y: newPoints[i][1]
+ }, seriesModel, idx);
+ } else {
+ symbolPath.setPosition(newPoints[i]);
+ }
+ symbolGroup.add(symbolPath);
+ }
+ }
+ }
+ function getInitialPoints(points4) {
+ return map(points4, function(pt) {
+ return [polar.cx, polar.cy];
+ });
+ }
+ data.diff(oldData).add(function(idx) {
+ var points4 = data.getItemLayout(idx);
+ if (!points4) {
+ return;
+ }
+ var polygon = new Polygon_default();
+ var polyline = new Polyline_default();
+ var target = {
+ shape: {
+ points: points4
+ }
+ };
+ polygon.shape.points = getInitialPoints(points4);
+ polyline.shape.points = getInitialPoints(points4);
+ initProps(polygon, target, seriesModel, idx);
+ initProps(polyline, target, seriesModel, idx);
+ var itemGroup = new Group_default();
+ var symbolGroup = new Group_default();
+ itemGroup.add(polyline);
+ itemGroup.add(polygon);
+ itemGroup.add(symbolGroup);
+ updateSymbols(polyline.shape.points, points4, symbolGroup, data, idx, true);
+ data.setItemGraphicEl(idx, itemGroup);
+ }).update(function(newIdx, oldIdx) {
+ var itemGroup = oldData.getItemGraphicEl(oldIdx);
+ var polyline = itemGroup.childAt(0);
+ var polygon = itemGroup.childAt(1);
+ var symbolGroup = itemGroup.childAt(2);
+ var target = {
+ shape: {
+ points: data.getItemLayout(newIdx)
+ }
+ };
+ if (!target.shape.points) {
+ return;
+ }
+ updateSymbols(polyline.shape.points, target.shape.points, symbolGroup, data, newIdx, false);
+ saveOldStyle(polygon);
+ saveOldStyle(polyline);
+ updateProps(polyline, target, seriesModel);
+ updateProps(polygon, target, seriesModel);
+ data.setItemGraphicEl(newIdx, itemGroup);
+ }).remove(function(idx) {
+ group.remove(oldData.getItemGraphicEl(idx));
+ }).execute();
+ data.eachItemGraphicEl(function(itemGroup, idx) {
+ var itemModel = data.getItemModel(idx);
+ var polyline = itemGroup.childAt(0);
+ var polygon = itemGroup.childAt(1);
+ var symbolGroup = itemGroup.childAt(2);
+ var itemStyle = data.getItemVisual(idx, "style");
+ var color = itemStyle.fill;
+ group.add(itemGroup);
+ polyline.useStyle(defaults(itemModel.getModel("lineStyle").getLineStyle(), {
+ fill: "none",
+ stroke: color
+ }));
+ setStatesStylesFromModel(polyline, itemModel, "lineStyle");
+ setStatesStylesFromModel(polygon, itemModel, "areaStyle");
+ var areaStyleModel = itemModel.getModel("areaStyle");
+ var polygonIgnore = areaStyleModel.isEmpty() && areaStyleModel.parentModel.isEmpty();
+ polygon.ignore = polygonIgnore;
+ each(["emphasis", "select", "blur"], function(stateName) {
+ var stateModel = itemModel.getModel([stateName, "areaStyle"]);
+ var stateIgnore = stateModel.isEmpty() && stateModel.parentModel.isEmpty();
+ polygon.ensureState(stateName).ignore = stateIgnore && polygonIgnore;
+ });
+ polygon.useStyle(defaults(areaStyleModel.getAreaStyle(), {
+ fill: color,
+ opacity: 0.7,
+ decal: itemStyle.decal
+ }));
+ var emphasisModel = itemModel.getModel("emphasis");
+ var itemHoverStyle = emphasisModel.getModel("itemStyle").getItemStyle();
+ symbolGroup.eachChild(function(symbolPath) {
+ if (symbolPath instanceof Image_default) {
+ var pathStyle = symbolPath.style;
+ symbolPath.useStyle(extend({
+ image: pathStyle.image,
+ x: pathStyle.x,
+ y: pathStyle.y,
+ width: pathStyle.width,
+ height: pathStyle.height
+ }, itemStyle));
+ } else {
+ symbolPath.useStyle(itemStyle);
+ symbolPath.setColor(color);
+ symbolPath.style.strokeNoScale = true;
+ }
+ var pathEmphasisState = symbolPath.ensureState("emphasis");
+ pathEmphasisState.style = clone(itemHoverStyle);
+ var defaultText = data.getStore().get(data.getDimensionIndex(symbolPath.__dimIdx), idx);
+ (defaultText == null || isNaN(defaultText)) && (defaultText = "");
+ setLabelStyle(symbolPath, getLabelStatesModels(itemModel), {
+ labelFetcher: data.hostModel,
+ labelDataIndex: idx,
+ labelDimIndex: symbolPath.__dimIdx,
+ defaultText,
+ inheritColor: color,
+ defaultOpacity: itemStyle.opacity
+ });
+ });
+ toggleHoverEmphasis(itemGroup, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ });
+ this._data = data;
+ };
+ RadarView3.prototype.remove = function() {
+ this.group.removeAll();
+ this._data = null;
+ };
+ RadarView3.type = "radar";
+ return RadarView3;
+}(Chart_default);
+var RadarView_default = RadarView;
+
+// node_modules/echarts/lib/chart/radar/RadarSeries.js
+var RadarSeriesModel = function(_super) {
+ __extends(RadarSeriesModel2, _super);
+ function RadarSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = RadarSeriesModel2.type;
+ _this.hasSymbolVisual = true;
+ return _this;
+ }
+ RadarSeriesModel2.prototype.init = function(option) {
+ _super.prototype.init.apply(this, arguments);
+ this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
+ };
+ RadarSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesDataSimply(this, {
+ generateCoord: "indicator_",
+ generateCoordCount: Infinity
+ });
+ };
+ RadarSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var data = this.getData();
+ var coordSys = this.coordinateSystem;
+ var indicatorAxes = coordSys.getIndicatorAxes();
+ var name = this.getData().getName(dataIndex);
+ var nameToDisplay = name === "" ? this.name : name;
+ var markerColor = retrieveVisualColorForTooltipMarker(this, dataIndex);
+ return createTooltipMarkup("section", {
+ header: nameToDisplay,
+ sortBlocks: true,
+ blocks: map(indicatorAxes, function(axis) {
+ var val = data.get(data.mapDimension(axis.dim), dataIndex);
+ return createTooltipMarkup("nameValue", {
+ markerType: "subItem",
+ markerColor,
+ name: axis.name,
+ value: val,
+ sortParam: val
+ });
+ })
+ });
+ };
+ RadarSeriesModel2.prototype.getTooltipPosition = function(dataIndex) {
+ if (dataIndex != null) {
+ var data_1 = this.getData();
+ var coordSys = this.coordinateSystem;
+ var values = data_1.getValues(map(coordSys.dimensions, function(dim) {
+ return data_1.mapDimension(dim);
+ }), dataIndex);
+ for (var i = 0, len2 = values.length; i < len2; i++) {
+ if (!isNaN(values[i])) {
+ var indicatorAxes = coordSys.getIndicatorAxes();
+ return coordSys.coordToPoint(indicatorAxes[i].dataToCoord(values[i]), i);
+ }
+ }
+ }
+ };
+ RadarSeriesModel2.type = "series.radar";
+ RadarSeriesModel2.dependencies = ["radar"];
+ RadarSeriesModel2.defaultOption = {
+ z: 2,
+ colorBy: "data",
+ coordinateSystem: "radar",
+ legendHoverLink: true,
+ radarIndex: 0,
+ lineStyle: {
+ width: 2,
+ type: "solid",
+ join: "round"
+ },
+ label: {
+ position: "top"
+ },
+ symbolSize: 8
+ };
+ return RadarSeriesModel2;
+}(Series_default);
+var RadarSeries_default = RadarSeriesModel;
+
+// node_modules/echarts/lib/coord/radar/RadarModel.js
+var valueAxisDefault = axisDefault_default.value;
+function defaultsShow(opt, show) {
+ return defaults({
+ show
+ }, opt);
+}
+var RadarModel = function(_super) {
+ __extends(RadarModel2, _super);
+ function RadarModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = RadarModel2.type;
+ return _this;
+ }
+ RadarModel2.prototype.optionUpdated = function() {
+ var boundaryGap = this.get("boundaryGap");
+ var splitNumber = this.get("splitNumber");
+ var scale4 = this.get("scale");
+ var axisLine = this.get("axisLine");
+ var axisTick = this.get("axisTick");
+ var axisLabel = this.get("axisLabel");
+ var nameTextStyle = this.get("axisName");
+ var showName = this.get(["axisName", "show"]);
+ var nameFormatter = this.get(["axisName", "formatter"]);
+ var nameGap = this.get("axisNameGap");
+ var triggerEvent = this.get("triggerEvent");
+ var indicatorModels = map(this.get("indicator") || [], function(indicatorOpt) {
+ if (indicatorOpt.max != null && indicatorOpt.max > 0 && !indicatorOpt.min) {
+ indicatorOpt.min = 0;
+ } else if (indicatorOpt.min != null && indicatorOpt.min < 0 && !indicatorOpt.max) {
+ indicatorOpt.max = 0;
+ }
+ var iNameTextStyle = nameTextStyle;
+ if (indicatorOpt.color != null) {
+ iNameTextStyle = defaults({
+ color: indicatorOpt.color
+ }, nameTextStyle);
+ }
+ var innerIndicatorOpt = merge(clone(indicatorOpt), {
+ boundaryGap,
+ splitNumber,
+ scale: scale4,
+ axisLine,
+ axisTick,
+ axisLabel,
+ name: indicatorOpt.text,
+ showName,
+ nameLocation: "end",
+ nameGap,
+ nameTextStyle: iNameTextStyle,
+ triggerEvent
+ }, false);
+ if (isString(nameFormatter)) {
+ var indName = innerIndicatorOpt.name;
+ innerIndicatorOpt.name = nameFormatter.replace("{value}", indName != null ? indName : "");
+ } else if (isFunction(nameFormatter)) {
+ innerIndicatorOpt.name = nameFormatter(innerIndicatorOpt.name, innerIndicatorOpt);
+ }
+ var model = new Model_default(innerIndicatorOpt, null, this.ecModel);
+ mixin(model, AxisModelCommonMixin.prototype);
+ model.mainType = "radar";
+ model.componentIndex = this.componentIndex;
+ return model;
+ }, this);
+ this._indicatorModels = indicatorModels;
+ };
+ RadarModel2.prototype.getIndicatorModels = function() {
+ return this._indicatorModels;
+ };
+ RadarModel2.type = "radar";
+ RadarModel2.defaultOption = {
+ z: 0,
+ center: ["50%", "50%"],
+ radius: "75%",
+ startAngle: 90,
+ axisName: {
+ show: true
+ },
+ boundaryGap: [0, 0],
+ splitNumber: 5,
+ axisNameGap: 15,
+ scale: false,
+ shape: "polygon",
+ axisLine: merge({
+ lineStyle: {
+ color: "#bbb"
+ }
+ }, valueAxisDefault.axisLine),
+ axisLabel: defaultsShow(valueAxisDefault.axisLabel, false),
+ axisTick: defaultsShow(valueAxisDefault.axisTick, false),
+ splitLine: defaultsShow(valueAxisDefault.splitLine, true),
+ splitArea: defaultsShow(valueAxisDefault.splitArea, true),
+ indicator: []
+ };
+ return RadarModel2;
+}(Component_default);
+var RadarModel_default = RadarModel;
+
+// node_modules/echarts/lib/component/radar/RadarView.js
+var axisBuilderAttrs2 = ["axisLine", "axisTickLabel", "axisName"];
+var RadarView2 = function(_super) {
+ __extends(RadarView3, _super);
+ function RadarView3() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = RadarView3.type;
+ return _this;
+ }
+ RadarView3.prototype.render = function(radarModel, ecModel, api) {
+ var group = this.group;
+ group.removeAll();
+ this._buildAxes(radarModel);
+ this._buildSplitLineAndArea(radarModel);
+ };
+ RadarView3.prototype._buildAxes = function(radarModel) {
+ var radar = radarModel.coordinateSystem;
+ var indicatorAxes = radar.getIndicatorAxes();
+ var axisBuilders = map(indicatorAxes, function(indicatorAxis) {
+ var axisName = indicatorAxis.model.get("showName") ? indicatorAxis.name : "";
+ var axisBuilder = new AxisBuilder_default(indicatorAxis.model, {
+ axisName,
+ position: [radar.cx, radar.cy],
+ rotation: indicatorAxis.angle,
+ labelDirection: -1,
+ tickDirection: -1,
+ nameDirection: 1
+ });
+ return axisBuilder;
+ });
+ each(axisBuilders, function(axisBuilder) {
+ each(axisBuilderAttrs2, axisBuilder.add, axisBuilder);
+ this.group.add(axisBuilder.getGroup());
+ }, this);
+ };
+ RadarView3.prototype._buildSplitLineAndArea = function(radarModel) {
+ var radar = radarModel.coordinateSystem;
+ var indicatorAxes = radar.getIndicatorAxes();
+ if (!indicatorAxes.length) {
+ return;
+ }
+ var shape = radarModel.get("shape");
+ var splitLineModel = radarModel.getModel("splitLine");
+ var splitAreaModel = radarModel.getModel("splitArea");
+ var lineStyleModel = splitLineModel.getModel("lineStyle");
+ var areaStyleModel = splitAreaModel.getModel("areaStyle");
+ var showSplitLine = splitLineModel.get("show");
+ var showSplitArea = splitAreaModel.get("show");
+ var splitLineColors = lineStyleModel.get("color");
+ var splitAreaColors = areaStyleModel.get("color");
+ var splitLineColorsArr = isArray(splitLineColors) ? splitLineColors : [splitLineColors];
+ var splitAreaColorsArr = isArray(splitAreaColors) ? splitAreaColors : [splitAreaColors];
+ var splitLines = [];
+ var splitAreas = [];
+ function getColorIndex(areaOrLine, areaOrLineColorList, idx) {
+ var colorIndex2 = idx % areaOrLineColorList.length;
+ areaOrLine[colorIndex2] = areaOrLine[colorIndex2] || [];
+ return colorIndex2;
+ }
+ if (shape === "circle") {
+ var ticksRadius = indicatorAxes[0].getTicksCoords();
+ var cx = radar.cx;
+ var cy = radar.cy;
+ for (var i = 0; i < ticksRadius.length; i++) {
+ if (showSplitLine) {
+ var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);
+ splitLines[colorIndex].push(new Circle_default({
+ shape: {
+ cx,
+ cy,
+ r: ticksRadius[i].coord
+ }
+ }));
+ }
+ if (showSplitArea && i < ticksRadius.length - 1) {
+ var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i);
+ splitAreas[colorIndex].push(new Ring_default({
+ shape: {
+ cx,
+ cy,
+ r0: ticksRadius[i].coord,
+ r: ticksRadius[i + 1].coord
+ }
+ }));
+ }
+ }
+ } else {
+ var realSplitNumber_1;
+ var axesTicksPoints = map(indicatorAxes, function(indicatorAxis, idx) {
+ var ticksCoords = indicatorAxis.getTicksCoords();
+ realSplitNumber_1 = realSplitNumber_1 == null ? ticksCoords.length - 1 : Math.min(ticksCoords.length - 1, realSplitNumber_1);
+ return map(ticksCoords, function(tickCoord) {
+ return radar.coordToPoint(tickCoord.coord, idx);
+ });
+ });
+ var prevPoints = [];
+ for (var i = 0; i <= realSplitNumber_1; i++) {
+ var points4 = [];
+ for (var j = 0; j < indicatorAxes.length; j++) {
+ points4.push(axesTicksPoints[j][i]);
+ }
+ if (points4[0]) {
+ points4.push(points4[0].slice());
+ } else {
+ if (true) {
+ console.error("Can't draw value axis " + i);
+ }
+ }
+ if (showSplitLine) {
+ var colorIndex = getColorIndex(splitLines, splitLineColorsArr, i);
+ splitLines[colorIndex].push(new Polyline_default({
+ shape: {
+ points: points4
+ }
+ }));
+ }
+ if (showSplitArea && prevPoints) {
+ var colorIndex = getColorIndex(splitAreas, splitAreaColorsArr, i - 1);
+ splitAreas[colorIndex].push(new Polygon_default({
+ shape: {
+ points: points4.concat(prevPoints)
+ }
+ }));
+ }
+ prevPoints = points4.slice().reverse();
+ }
+ }
+ var lineStyle = lineStyleModel.getLineStyle();
+ var areaStyle = areaStyleModel.getAreaStyle();
+ each(splitAreas, function(splitAreas2, idx) {
+ this.group.add(mergePath2(splitAreas2, {
+ style: defaults({
+ stroke: "none",
+ fill: splitAreaColorsArr[idx % splitAreaColorsArr.length]
+ }, areaStyle),
+ silent: true
+ }));
+ }, this);
+ each(splitLines, function(splitLines2, idx) {
+ this.group.add(mergePath2(splitLines2, {
+ style: defaults({
+ fill: "none",
+ stroke: splitLineColorsArr[idx % splitLineColorsArr.length]
+ }, lineStyle),
+ silent: true
+ }));
+ }, this);
+ };
+ RadarView3.type = "radar";
+ return RadarView3;
+}(Component_default2);
+var RadarView_default2 = RadarView2;
+
+// node_modules/echarts/lib/coord/radar/IndicatorAxis.js
+var IndicatorAxis = function(_super) {
+ __extends(IndicatorAxis2, _super);
+ function IndicatorAxis2(dim, scale4, radiusExtent) {
+ var _this = _super.call(this, dim, scale4, radiusExtent) || this;
+ _this.type = "value";
+ _this.angle = 0;
+ _this.name = "";
+ return _this;
+ }
+ return IndicatorAxis2;
+}(Axis_default);
+var IndicatorAxis_default = IndicatorAxis;
+
+// node_modules/echarts/lib/coord/radar/Radar.js
+var Radar = function() {
+ function Radar2(radarModel, ecModel, api) {
+ this.dimensions = [];
+ this._model = radarModel;
+ this._indicatorAxes = map(radarModel.getIndicatorModels(), function(indicatorModel, idx) {
+ var dim = "indicator_" + idx;
+ var indicatorAxis = new IndicatorAxis_default(
+ dim,
+ new Interval_default()
+ );
+ indicatorAxis.name = indicatorModel.get("name");
+ indicatorAxis.model = indicatorModel;
+ indicatorModel.axis = indicatorAxis;
+ this.dimensions.push(dim);
+ return indicatorAxis;
+ }, this);
+ this.resize(radarModel, api);
+ }
+ Radar2.prototype.getIndicatorAxes = function() {
+ return this._indicatorAxes;
+ };
+ Radar2.prototype.dataToPoint = function(value, indicatorIndex) {
+ var indicatorAxis = this._indicatorAxes[indicatorIndex];
+ return this.coordToPoint(indicatorAxis.dataToCoord(value), indicatorIndex);
+ };
+ Radar2.prototype.coordToPoint = function(coord, indicatorIndex) {
+ var indicatorAxis = this._indicatorAxes[indicatorIndex];
+ var angle = indicatorAxis.angle;
+ var x = this.cx + coord * Math.cos(angle);
+ var y = this.cy - coord * Math.sin(angle);
+ return [x, y];
+ };
+ Radar2.prototype.pointToData = function(pt) {
+ var dx = pt[0] - this.cx;
+ var dy = pt[1] - this.cy;
+ var radius = Math.sqrt(dx * dx + dy * dy);
+ dx /= radius;
+ dy /= radius;
+ var radian = Math.atan2(-dy, dx);
+ var minRadianDiff = Infinity;
+ var closestAxis;
+ var closestAxisIdx = -1;
+ for (var i = 0; i < this._indicatorAxes.length; i++) {
+ var indicatorAxis = this._indicatorAxes[i];
+ var diff = Math.abs(radian - indicatorAxis.angle);
+ if (diff < minRadianDiff) {
+ closestAxis = indicatorAxis;
+ closestAxisIdx = i;
+ minRadianDiff = diff;
+ }
+ }
+ return [closestAxisIdx, +(closestAxis && closestAxis.coordToData(radius))];
+ };
+ Radar2.prototype.resize = function(radarModel, api) {
+ var center3 = radarModel.get("center");
+ var viewWidth = api.getWidth();
+ var viewHeight = api.getHeight();
+ var viewSize = Math.min(viewWidth, viewHeight) / 2;
+ this.cx = parsePercent2(center3[0], viewWidth);
+ this.cy = parsePercent2(center3[1], viewHeight);
+ this.startAngle = radarModel.get("startAngle") * Math.PI / 180;
+ var radius = radarModel.get("radius");
+ if (isString(radius) || isNumber(radius)) {
+ radius = [0, radius];
+ }
+ this.r0 = parsePercent2(radius[0], viewSize);
+ this.r = parsePercent2(radius[1], viewSize);
+ each(this._indicatorAxes, function(indicatorAxis, idx) {
+ indicatorAxis.setExtent(this.r0, this.r);
+ var angle = this.startAngle + idx * Math.PI * 2 / this._indicatorAxes.length;
+ angle = Math.atan2(Math.sin(angle), Math.cos(angle));
+ indicatorAxis.angle = angle;
+ }, this);
+ };
+ Radar2.prototype.update = function(ecModel, api) {
+ var indicatorAxes = this._indicatorAxes;
+ var radarModel = this._model;
+ each(indicatorAxes, function(indicatorAxis) {
+ indicatorAxis.scale.setExtent(Infinity, -Infinity);
+ });
+ ecModel.eachSeriesByType("radar", function(radarSeries, idx) {
+ if (radarSeries.get("coordinateSystem") !== "radar" || ecModel.getComponent("radar", radarSeries.get("radarIndex")) !== radarModel) {
+ return;
+ }
+ var data = radarSeries.getData();
+ each(indicatorAxes, function(indicatorAxis) {
+ indicatorAxis.scale.unionExtentFromData(data, data.mapDimension(indicatorAxis.dim));
+ });
+ }, this);
+ var splitNumber = radarModel.get("splitNumber");
+ var dummyScale = new Interval_default();
+ dummyScale.setExtent(0, splitNumber);
+ dummyScale.setInterval(1);
+ each(indicatorAxes, function(indicatorAxis, idx) {
+ alignScaleTicks(indicatorAxis.scale, indicatorAxis.model, dummyScale);
+ });
+ };
+ Radar2.prototype.convertToPixel = function(ecModel, finder, value) {
+ console.warn("Not implemented.");
+ return null;
+ };
+ Radar2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
+ console.warn("Not implemented.");
+ return null;
+ };
+ Radar2.prototype.containPoint = function(point) {
+ console.warn("Not implemented.");
+ return false;
+ };
+ Radar2.create = function(ecModel, api) {
+ var radarList = [];
+ ecModel.eachComponent("radar", function(radarModel) {
+ var radar = new Radar2(radarModel, ecModel, api);
+ radarList.push(radar);
+ radarModel.coordinateSystem = radar;
+ });
+ ecModel.eachSeriesByType("radar", function(radarSeries) {
+ if (radarSeries.get("coordinateSystem") === "radar") {
+ radarSeries.coordinateSystem = radarList[radarSeries.get("radarIndex") || 0];
+ }
+ });
+ return radarList;
+ };
+ Radar2.dimensions = [];
+ return Radar2;
+}();
+var Radar_default = Radar;
+
+// node_modules/echarts/lib/component/radar/install.js
+function install8(registers) {
+ registers.registerCoordinateSystem("radar", Radar_default);
+ registers.registerComponentModel(RadarModel_default);
+ registers.registerComponentView(RadarView_default2);
+ registers.registerVisual({
+ seriesType: "radar",
+ reset: function(seriesModel) {
+ var data = seriesModel.getData();
+ data.each(function(idx) {
+ data.setItemVisual(idx, "legendIcon", "roundRect");
+ });
+ data.setVisual("legendIcon", "roundRect");
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/radar/install.js
+function install9(registers) {
+ use(install8);
+ registers.registerChartView(RadarView_default);
+ registers.registerSeriesModel(RadarSeries_default);
+ registers.registerLayout(radarLayout);
+ registers.registerProcessor(dataFilter("radar"));
+ registers.registerPreprocessor(radarBackwardCompat);
+}
+
+// node_modules/echarts/lib/component/helper/interactionMutex.js
+var ATTR = "\0_ec_interaction_mutex";
+function take(zr, resourceKey, userKey) {
+ var store = getStore(zr);
+ store[resourceKey] = userKey;
+}
+function release(zr, resourceKey, userKey) {
+ var store = getStore(zr);
+ var uKey = store[resourceKey];
+ if (uKey === userKey) {
+ store[resourceKey] = null;
+ }
+}
+function isTaken(zr, resourceKey) {
+ return !!getStore(zr)[resourceKey];
+}
+function getStore(zr) {
+ return zr[ATTR] || (zr[ATTR] = {});
+}
+registerAction({
+ type: "takeGlobalCursor",
+ event: "globalCursorTaken",
+ update: "update"
+}, noop);
+
+// node_modules/echarts/lib/component/helper/RoamController.js
+var RoamController = function(_super) {
+ __extends(RoamController2, _super);
+ function RoamController2(zr) {
+ var _this = _super.call(this) || this;
+ _this._zr = zr;
+ var mousedownHandler = bind(_this._mousedownHandler, _this);
+ var mousemoveHandler = bind(_this._mousemoveHandler, _this);
+ var mouseupHandler = bind(_this._mouseupHandler, _this);
+ var mousewheelHandler = bind(_this._mousewheelHandler, _this);
+ var pinchHandler = bind(_this._pinchHandler, _this);
+ _this.enable = function(controlType, opt) {
+ this.disable();
+ this._opt = defaults(clone(opt) || {}, {
+ zoomOnMouseWheel: true,
+ moveOnMouseMove: true,
+ moveOnMouseWheel: false,
+ preventDefaultMouseMove: true
+ });
+ if (controlType == null) {
+ controlType = true;
+ }
+ if (controlType === true || controlType === "move" || controlType === "pan") {
+ zr.on("mousedown", mousedownHandler);
+ zr.on("mousemove", mousemoveHandler);
+ zr.on("mouseup", mouseupHandler);
+ }
+ if (controlType === true || controlType === "scale" || controlType === "zoom") {
+ zr.on("mousewheel", mousewheelHandler);
+ zr.on("pinch", pinchHandler);
+ }
+ };
+ _this.disable = function() {
+ zr.off("mousedown", mousedownHandler);
+ zr.off("mousemove", mousemoveHandler);
+ zr.off("mouseup", mouseupHandler);
+ zr.off("mousewheel", mousewheelHandler);
+ zr.off("pinch", pinchHandler);
+ };
+ return _this;
+ }
+ RoamController2.prototype.isDragging = function() {
+ return this._dragging;
+ };
+ RoamController2.prototype.isPinching = function() {
+ return this._pinching;
+ };
+ RoamController2.prototype.setPointerChecker = function(pointerChecker) {
+ this.pointerChecker = pointerChecker;
+ };
+ RoamController2.prototype.dispose = function() {
+ this.disable();
+ };
+ RoamController2.prototype._mousedownHandler = function(e2) {
+ if (isMiddleOrRightButtonOnMouseUpDown(e2)) {
+ return;
+ }
+ var el = e2.target;
+ while (el) {
+ if (el.draggable) {
+ return;
+ }
+ el = el.__hostTarget || el.parent;
+ }
+ var x = e2.offsetX;
+ var y = e2.offsetY;
+ if (this.pointerChecker && this.pointerChecker(e2, x, y)) {
+ this._x = x;
+ this._y = y;
+ this._dragging = true;
+ }
+ };
+ RoamController2.prototype._mousemoveHandler = function(e2) {
+ if (!this._dragging || !isAvailableBehavior("moveOnMouseMove", e2, this._opt) || e2.gestureEvent === "pinch" || isTaken(this._zr, "globalPan")) {
+ return;
+ }
+ var x = e2.offsetX;
+ var y = e2.offsetY;
+ var oldX = this._x;
+ var oldY = this._y;
+ var dx = x - oldX;
+ var dy = y - oldY;
+ this._x = x;
+ this._y = y;
+ this._opt.preventDefaultMouseMove && stop(e2.event);
+ trigger(this, "pan", "moveOnMouseMove", e2, {
+ dx,
+ dy,
+ oldX,
+ oldY,
+ newX: x,
+ newY: y,
+ isAvailableBehavior: null
+ });
+ };
+ RoamController2.prototype._mouseupHandler = function(e2) {
+ if (!isMiddleOrRightButtonOnMouseUpDown(e2)) {
+ this._dragging = false;
+ }
+ };
+ RoamController2.prototype._mousewheelHandler = function(e2) {
+ var shouldZoom = isAvailableBehavior("zoomOnMouseWheel", e2, this._opt);
+ var shouldMove = isAvailableBehavior("moveOnMouseWheel", e2, this._opt);
+ var wheelDelta = e2.wheelDelta;
+ var absWheelDeltaDelta = Math.abs(wheelDelta);
+ var originX = e2.offsetX;
+ var originY = e2.offsetY;
+ if (wheelDelta === 0 || !shouldZoom && !shouldMove) {
+ return;
+ }
+ if (shouldZoom) {
+ var factor = absWheelDeltaDelta > 3 ? 1.4 : absWheelDeltaDelta > 1 ? 1.2 : 1.1;
+ var scale4 = wheelDelta > 0 ? factor : 1 / factor;
+ checkPointerAndTrigger(this, "zoom", "zoomOnMouseWheel", e2, {
+ scale: scale4,
+ originX,
+ originY,
+ isAvailableBehavior: null
+ });
+ }
+ if (shouldMove) {
+ var absDelta = Math.abs(wheelDelta);
+ var scrollDelta = (wheelDelta > 0 ? 1 : -1) * (absDelta > 3 ? 0.4 : absDelta > 1 ? 0.15 : 0.05);
+ checkPointerAndTrigger(this, "scrollMove", "moveOnMouseWheel", e2, {
+ scrollDelta,
+ originX,
+ originY,
+ isAvailableBehavior: null
+ });
+ }
+ };
+ RoamController2.prototype._pinchHandler = function(e2) {
+ if (isTaken(this._zr, "globalPan")) {
+ return;
+ }
+ var scale4 = e2.pinchScale > 1 ? 1.1 : 1 / 1.1;
+ checkPointerAndTrigger(this, "zoom", null, e2, {
+ scale: scale4,
+ originX: e2.pinchX,
+ originY: e2.pinchY,
+ isAvailableBehavior: null
+ });
+ };
+ return RoamController2;
+}(Eventful_default);
+function checkPointerAndTrigger(controller, eventName, behaviorToCheck, e2, contollerEvent) {
+ if (controller.pointerChecker && controller.pointerChecker(e2, contollerEvent.originX, contollerEvent.originY)) {
+ stop(e2.event);
+ trigger(controller, eventName, behaviorToCheck, e2, contollerEvent);
+ }
+}
+function trigger(controller, eventName, behaviorToCheck, e2, contollerEvent) {
+ contollerEvent.isAvailableBehavior = bind(isAvailableBehavior, null, behaviorToCheck, e2);
+ controller.trigger(eventName, contollerEvent);
+}
+function isAvailableBehavior(behaviorToCheck, e2, settings) {
+ var setting = settings[behaviorToCheck];
+ return !behaviorToCheck || setting && (!isString(setting) || e2.event[setting + "Key"]);
+}
+var RoamController_default = RoamController;
+
+// node_modules/echarts/lib/component/helper/roamHelper.js
+function updateViewOnPan(controllerHost, dx, dy) {
+ var target = controllerHost.target;
+ target.x += dx;
+ target.y += dy;
+ target.dirty();
+}
+function updateViewOnZoom(controllerHost, zoomDelta, zoomX, zoomY) {
+ var target = controllerHost.target;
+ var zoomLimit = controllerHost.zoomLimit;
+ var newZoom = controllerHost.zoom = controllerHost.zoom || 1;
+ newZoom *= zoomDelta;
+ if (zoomLimit) {
+ var zoomMin = zoomLimit.min || 0;
+ var zoomMax = zoomLimit.max || Infinity;
+ newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);
+ }
+ var zoomScale = newZoom / controllerHost.zoom;
+ controllerHost.zoom = newZoom;
+ target.x -= (zoomX - target.x) * (zoomScale - 1);
+ target.y -= (zoomY - target.y) * (zoomScale - 1);
+ target.scaleX *= zoomScale;
+ target.scaleY *= zoomScale;
+ target.dirty();
+}
+
+// node_modules/echarts/lib/component/helper/cursorHelper.js
+var IRRELEVANT_EXCLUDES = {
+ "axisPointer": 1,
+ "tooltip": 1,
+ "brush": 1
+};
+function onIrrelevantElement(e2, api, targetCoordSysModel) {
+ var model = api.getComponentByElement(e2.topTarget);
+ var coordSys = model && model.coordinateSystem;
+ return model && model !== targetCoordSysModel && !IRRELEVANT_EXCLUDES.hasOwnProperty(model.mainType) && coordSys && coordSys.model !== targetCoordSysModel;
+}
+
+// node_modules/zrender/lib/tool/parseXML.js
+function parseXML(svg) {
+ if (isString(svg)) {
+ var parser = new DOMParser();
+ svg = parser.parseFromString(svg, "text/xml");
+ }
+ var svgNode = svg;
+ if (svgNode.nodeType === 9) {
+ svgNode = svgNode.firstChild;
+ }
+ while (svgNode.nodeName.toLowerCase() !== "svg" || svgNode.nodeType !== 1) {
+ svgNode = svgNode.nextSibling;
+ }
+ return svgNode;
+}
+
+// node_modules/zrender/lib/tool/parseSVG.js
+var nodeParsers;
+var INHERITABLE_STYLE_ATTRIBUTES_MAP = {
+ "fill": "fill",
+ "stroke": "stroke",
+ "stroke-width": "lineWidth",
+ "opacity": "opacity",
+ "fill-opacity": "fillOpacity",
+ "stroke-opacity": "strokeOpacity",
+ "stroke-dasharray": "lineDash",
+ "stroke-dashoffset": "lineDashOffset",
+ "stroke-linecap": "lineCap",
+ "stroke-linejoin": "lineJoin",
+ "stroke-miterlimit": "miterLimit",
+ "font-family": "fontFamily",
+ "font-size": "fontSize",
+ "font-style": "fontStyle",
+ "font-weight": "fontWeight",
+ "text-anchor": "textAlign",
+ "visibility": "visibility",
+ "display": "display"
+};
+var INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS = keys(INHERITABLE_STYLE_ATTRIBUTES_MAP);
+var SELF_STYLE_ATTRIBUTES_MAP = {
+ "alignment-baseline": "textBaseline",
+ "stop-color": "stopColor"
+};
+var SELF_STYLE_ATTRIBUTES_MAP_KEYS = keys(SELF_STYLE_ATTRIBUTES_MAP);
+var SVGParser = function() {
+ function SVGParser2() {
+ this._defs = {};
+ this._root = null;
+ }
+ SVGParser2.prototype.parse = function(xml, opt) {
+ opt = opt || {};
+ var svg = parseXML(xml);
+ if (true) {
+ if (!svg) {
+ throw new Error("Illegal svg");
+ }
+ }
+ this._defsUsePending = [];
+ var root = new Group_default();
+ this._root = root;
+ var named = [];
+ var viewBox = svg.getAttribute("viewBox") || "";
+ var width = parseFloat(svg.getAttribute("width") || opt.width);
+ var height = parseFloat(svg.getAttribute("height") || opt.height);
+ isNaN(width) && (width = null);
+ isNaN(height) && (height = null);
+ parseAttributes(svg, root, null, true, false);
+ var child = svg.firstChild;
+ while (child) {
+ this._parseNode(child, root, named, null, false, false);
+ child = child.nextSibling;
+ }
+ applyDefs(this._defs, this._defsUsePending);
+ this._defsUsePending = [];
+ var viewBoxRect;
+ var viewBoxTransform;
+ if (viewBox) {
+ var viewBoxArr = splitNumberSequence(viewBox);
+ if (viewBoxArr.length >= 4) {
+ viewBoxRect = {
+ x: parseFloat(viewBoxArr[0] || 0),
+ y: parseFloat(viewBoxArr[1] || 0),
+ width: parseFloat(viewBoxArr[2]),
+ height: parseFloat(viewBoxArr[3])
+ };
+ }
+ }
+ if (viewBoxRect && width != null && height != null) {
+ viewBoxTransform = makeViewBoxTransform(viewBoxRect, { x: 0, y: 0, width, height });
+ if (!opt.ignoreViewBox) {
+ var elRoot = root;
+ root = new Group_default();
+ root.add(elRoot);
+ elRoot.scaleX = elRoot.scaleY = viewBoxTransform.scale;
+ elRoot.x = viewBoxTransform.x;
+ elRoot.y = viewBoxTransform.y;
+ }
+ }
+ if (!opt.ignoreRootClip && width != null && height != null) {
+ root.setClipPath(new Rect_default({
+ shape: { x: 0, y: 0, width, height }
+ }));
+ }
+ return {
+ root,
+ width,
+ height,
+ viewBoxRect,
+ viewBoxTransform,
+ named
+ };
+ };
+ SVGParser2.prototype._parseNode = function(xmlNode, parentGroup, named, namedFrom, isInDefs, isInText) {
+ var nodeName = xmlNode.nodeName.toLowerCase();
+ var el;
+ var namedFromForSub = namedFrom;
+ if (nodeName === "defs") {
+ isInDefs = true;
+ }
+ if (nodeName === "text") {
+ isInText = true;
+ }
+ if (nodeName === "defs" || nodeName === "switch") {
+ el = parentGroup;
+ } else {
+ if (!isInDefs) {
+ var parser_1 = nodeParsers[nodeName];
+ if (parser_1 && hasOwn(nodeParsers, nodeName)) {
+ el = parser_1.call(this, xmlNode, parentGroup);
+ var nameAttr = xmlNode.getAttribute("name");
+ if (nameAttr) {
+ var newNamed = {
+ name: nameAttr,
+ namedFrom: null,
+ svgNodeTagLower: nodeName,
+ el
+ };
+ named.push(newNamed);
+ if (nodeName === "g") {
+ namedFromForSub = newNamed;
+ }
+ } else if (namedFrom) {
+ named.push({
+ name: namedFrom.name,
+ namedFrom,
+ svgNodeTagLower: nodeName,
+ el
+ });
+ }
+ parentGroup.add(el);
+ }
+ }
+ var parser = paintServerParsers[nodeName];
+ if (parser && hasOwn(paintServerParsers, nodeName)) {
+ var def = parser.call(this, xmlNode);
+ var id = xmlNode.getAttribute("id");
+ if (id) {
+ this._defs[id] = def;
+ }
+ }
+ }
+ if (el && el.isGroup) {
+ var child = xmlNode.firstChild;
+ while (child) {
+ if (child.nodeType === 1) {
+ this._parseNode(child, el, named, namedFromForSub, isInDefs, isInText);
+ } else if (child.nodeType === 3 && isInText) {
+ this._parseText(child, el);
+ }
+ child = child.nextSibling;
+ }
+ }
+ };
+ SVGParser2.prototype._parseText = function(xmlNode, parentGroup) {
+ var text = new TSpan_default({
+ style: {
+ text: xmlNode.textContent
+ },
+ silent: true,
+ x: this._textX || 0,
+ y: this._textY || 0
+ });
+ inheritStyle(parentGroup, text);
+ parseAttributes(xmlNode, text, this._defsUsePending, false, false);
+ applyTextAlignment(text, parentGroup);
+ var textStyle = text.style;
+ var fontSize = textStyle.fontSize;
+ if (fontSize && fontSize < 9) {
+ textStyle.fontSize = 9;
+ text.scaleX *= fontSize / 9;
+ text.scaleY *= fontSize / 9;
+ }
+ var font = (textStyle.fontSize || textStyle.fontFamily) && [
+ textStyle.fontStyle,
+ textStyle.fontWeight,
+ (textStyle.fontSize || 12) + "px",
+ textStyle.fontFamily || "sans-serif"
+ ].join(" ");
+ textStyle.font = font;
+ var rect = text.getBoundingRect();
+ this._textX += rect.width;
+ parentGroup.add(text);
+ return text;
+ };
+ SVGParser2.internalField = function() {
+ nodeParsers = {
+ "g": function(xmlNode, parentGroup) {
+ var g = new Group_default();
+ inheritStyle(parentGroup, g);
+ parseAttributes(xmlNode, g, this._defsUsePending, false, false);
+ return g;
+ },
+ "rect": function(xmlNode, parentGroup) {
+ var rect = new Rect_default();
+ inheritStyle(parentGroup, rect);
+ parseAttributes(xmlNode, rect, this._defsUsePending, false, false);
+ rect.setShape({
+ x: parseFloat(xmlNode.getAttribute("x") || "0"),
+ y: parseFloat(xmlNode.getAttribute("y") || "0"),
+ width: parseFloat(xmlNode.getAttribute("width") || "0"),
+ height: parseFloat(xmlNode.getAttribute("height") || "0")
+ });
+ rect.silent = true;
+ return rect;
+ },
+ "circle": function(xmlNode, parentGroup) {
+ var circle = new Circle_default();
+ inheritStyle(parentGroup, circle);
+ parseAttributes(xmlNode, circle, this._defsUsePending, false, false);
+ circle.setShape({
+ cx: parseFloat(xmlNode.getAttribute("cx") || "0"),
+ cy: parseFloat(xmlNode.getAttribute("cy") || "0"),
+ r: parseFloat(xmlNode.getAttribute("r") || "0")
+ });
+ circle.silent = true;
+ return circle;
+ },
+ "line": function(xmlNode, parentGroup) {
+ var line = new Line_default();
+ inheritStyle(parentGroup, line);
+ parseAttributes(xmlNode, line, this._defsUsePending, false, false);
+ line.setShape({
+ x1: parseFloat(xmlNode.getAttribute("x1") || "0"),
+ y1: parseFloat(xmlNode.getAttribute("y1") || "0"),
+ x2: parseFloat(xmlNode.getAttribute("x2") || "0"),
+ y2: parseFloat(xmlNode.getAttribute("y2") || "0")
+ });
+ line.silent = true;
+ return line;
+ },
+ "ellipse": function(xmlNode, parentGroup) {
+ var ellipse = new Ellipse_default();
+ inheritStyle(parentGroup, ellipse);
+ parseAttributes(xmlNode, ellipse, this._defsUsePending, false, false);
+ ellipse.setShape({
+ cx: parseFloat(xmlNode.getAttribute("cx") || "0"),
+ cy: parseFloat(xmlNode.getAttribute("cy") || "0"),
+ rx: parseFloat(xmlNode.getAttribute("rx") || "0"),
+ ry: parseFloat(xmlNode.getAttribute("ry") || "0")
+ });
+ ellipse.silent = true;
+ return ellipse;
+ },
+ "polygon": function(xmlNode, parentGroup) {
+ var pointsStr = xmlNode.getAttribute("points");
+ var pointsArr;
+ if (pointsStr) {
+ pointsArr = parsePoints(pointsStr);
+ }
+ var polygon = new Polygon_default({
+ shape: {
+ points: pointsArr || []
+ },
+ silent: true
+ });
+ inheritStyle(parentGroup, polygon);
+ parseAttributes(xmlNode, polygon, this._defsUsePending, false, false);
+ return polygon;
+ },
+ "polyline": function(xmlNode, parentGroup) {
+ var pointsStr = xmlNode.getAttribute("points");
+ var pointsArr;
+ if (pointsStr) {
+ pointsArr = parsePoints(pointsStr);
+ }
+ var polyline = new Polyline_default({
+ shape: {
+ points: pointsArr || []
+ },
+ silent: true
+ });
+ inheritStyle(parentGroup, polyline);
+ parseAttributes(xmlNode, polyline, this._defsUsePending, false, false);
+ return polyline;
+ },
+ "image": function(xmlNode, parentGroup) {
+ var img = new Image_default();
+ inheritStyle(parentGroup, img);
+ parseAttributes(xmlNode, img, this._defsUsePending, false, false);
+ img.setStyle({
+ image: xmlNode.getAttribute("xlink:href") || xmlNode.getAttribute("href"),
+ x: +xmlNode.getAttribute("x"),
+ y: +xmlNode.getAttribute("y"),
+ width: +xmlNode.getAttribute("width"),
+ height: +xmlNode.getAttribute("height")
+ });
+ img.silent = true;
+ return img;
+ },
+ "text": function(xmlNode, parentGroup) {
+ var x = xmlNode.getAttribute("x") || "0";
+ var y = xmlNode.getAttribute("y") || "0";
+ var dx = xmlNode.getAttribute("dx") || "0";
+ var dy = xmlNode.getAttribute("dy") || "0";
+ this._textX = parseFloat(x) + parseFloat(dx);
+ this._textY = parseFloat(y) + parseFloat(dy);
+ var g = new Group_default();
+ inheritStyle(parentGroup, g);
+ parseAttributes(xmlNode, g, this._defsUsePending, false, true);
+ return g;
+ },
+ "tspan": function(xmlNode, parentGroup) {
+ var x = xmlNode.getAttribute("x");
+ var y = xmlNode.getAttribute("y");
+ if (x != null) {
+ this._textX = parseFloat(x);
+ }
+ if (y != null) {
+ this._textY = parseFloat(y);
+ }
+ var dx = xmlNode.getAttribute("dx") || "0";
+ var dy = xmlNode.getAttribute("dy") || "0";
+ var g = new Group_default();
+ inheritStyle(parentGroup, g);
+ parseAttributes(xmlNode, g, this._defsUsePending, false, true);
+ this._textX += parseFloat(dx);
+ this._textY += parseFloat(dy);
+ return g;
+ },
+ "path": function(xmlNode, parentGroup) {
+ var d = xmlNode.getAttribute("d") || "";
+ var path = createFromString(d);
+ inheritStyle(parentGroup, path);
+ parseAttributes(xmlNode, path, this._defsUsePending, false, false);
+ path.silent = true;
+ return path;
+ }
+ };
+ }();
+ return SVGParser2;
+}();
+var paintServerParsers = {
+ "lineargradient": function(xmlNode) {
+ var x1 = parseInt(xmlNode.getAttribute("x1") || "0", 10);
+ var y1 = parseInt(xmlNode.getAttribute("y1") || "0", 10);
+ var x2 = parseInt(xmlNode.getAttribute("x2") || "10", 10);
+ var y2 = parseInt(xmlNode.getAttribute("y2") || "0", 10);
+ var gradient = new LinearGradient_default(x1, y1, x2, y2);
+ parsePaintServerUnit(xmlNode, gradient);
+ parseGradientColorStops(xmlNode, gradient);
+ return gradient;
+ },
+ "radialgradient": function(xmlNode) {
+ var cx = parseInt(xmlNode.getAttribute("cx") || "0", 10);
+ var cy = parseInt(xmlNode.getAttribute("cy") || "0", 10);
+ var r = parseInt(xmlNode.getAttribute("r") || "0", 10);
+ var gradient = new RadialGradient_default(cx, cy, r);
+ parsePaintServerUnit(xmlNode, gradient);
+ parseGradientColorStops(xmlNode, gradient);
+ return gradient;
+ }
+};
+function parsePaintServerUnit(xmlNode, gradient) {
+ var gradientUnits = xmlNode.getAttribute("gradientUnits");
+ if (gradientUnits === "userSpaceOnUse") {
+ gradient.global = true;
+ }
+}
+function parseGradientColorStops(xmlNode, gradient) {
+ var stop2 = xmlNode.firstChild;
+ while (stop2) {
+ if (stop2.nodeType === 1 && stop2.nodeName.toLocaleLowerCase() === "stop") {
+ var offsetStr = stop2.getAttribute("offset");
+ var offset = void 0;
+ if (offsetStr && offsetStr.indexOf("%") > 0) {
+ offset = parseInt(offsetStr, 10) / 100;
+ } else if (offsetStr) {
+ offset = parseFloat(offsetStr);
+ } else {
+ offset = 0;
+ }
+ var styleVals = {};
+ parseInlineStyle(stop2, styleVals, styleVals);
+ var stopColor = styleVals.stopColor || stop2.getAttribute("stop-color") || "#000000";
+ gradient.colorStops.push({
+ offset,
+ color: stopColor
+ });
+ }
+ stop2 = stop2.nextSibling;
+ }
+}
+function inheritStyle(parent, child) {
+ if (parent && parent.__inheritedStyle) {
+ if (!child.__inheritedStyle) {
+ child.__inheritedStyle = {};
+ }
+ defaults(child.__inheritedStyle, parent.__inheritedStyle);
+ }
+}
+function parsePoints(pointsString) {
+ var list = splitNumberSequence(pointsString);
+ var points4 = [];
+ for (var i = 0; i < list.length; i += 2) {
+ var x = parseFloat(list[i]);
+ var y = parseFloat(list[i + 1]);
+ points4.push([x, y]);
+ }
+ return points4;
+}
+function parseAttributes(xmlNode, el, defsUsePending, onlyInlineStyle, isTextGroup) {
+ var disp = el;
+ var inheritedStyle = disp.__inheritedStyle = disp.__inheritedStyle || {};
+ var selfStyle = {};
+ if (xmlNode.nodeType === 1) {
+ parseTransformAttribute(xmlNode, el);
+ parseInlineStyle(xmlNode, inheritedStyle, selfStyle);
+ if (!onlyInlineStyle) {
+ parseAttributeStyle(xmlNode, inheritedStyle, selfStyle);
+ }
+ }
+ disp.style = disp.style || {};
+ if (inheritedStyle.fill != null) {
+ disp.style.fill = getFillStrokeStyle(disp, "fill", inheritedStyle.fill, defsUsePending);
+ }
+ if (inheritedStyle.stroke != null) {
+ disp.style.stroke = getFillStrokeStyle(disp, "stroke", inheritedStyle.stroke, defsUsePending);
+ }
+ each([
+ "lineWidth",
+ "opacity",
+ "fillOpacity",
+ "strokeOpacity",
+ "miterLimit",
+ "fontSize"
+ ], function(propName) {
+ if (inheritedStyle[propName] != null) {
+ disp.style[propName] = parseFloat(inheritedStyle[propName]);
+ }
+ });
+ each([
+ "lineDashOffset",
+ "lineCap",
+ "lineJoin",
+ "fontWeight",
+ "fontFamily",
+ "fontStyle",
+ "textAlign"
+ ], function(propName) {
+ if (inheritedStyle[propName] != null) {
+ disp.style[propName] = inheritedStyle[propName];
+ }
+ });
+ if (isTextGroup) {
+ disp.__selfStyle = selfStyle;
+ }
+ if (inheritedStyle.lineDash) {
+ disp.style.lineDash = map(splitNumberSequence(inheritedStyle.lineDash), function(str) {
+ return parseFloat(str);
+ });
+ }
+ if (inheritedStyle.visibility === "hidden" || inheritedStyle.visibility === "collapse") {
+ disp.invisible = true;
+ }
+ if (inheritedStyle.display === "none") {
+ disp.ignore = true;
+ }
+}
+function applyTextAlignment(text, parentGroup) {
+ var parentSelfStyle = parentGroup.__selfStyle;
+ if (parentSelfStyle) {
+ var textBaseline = parentSelfStyle.textBaseline;
+ var zrTextBaseline = textBaseline;
+ if (!textBaseline || textBaseline === "auto") {
+ zrTextBaseline = "alphabetic";
+ } else if (textBaseline === "baseline") {
+ zrTextBaseline = "alphabetic";
+ } else if (textBaseline === "before-edge" || textBaseline === "text-before-edge") {
+ zrTextBaseline = "top";
+ } else if (textBaseline === "after-edge" || textBaseline === "text-after-edge") {
+ zrTextBaseline = "bottom";
+ } else if (textBaseline === "central" || textBaseline === "mathematical") {
+ zrTextBaseline = "middle";
+ }
+ text.style.textBaseline = zrTextBaseline;
+ }
+ var parentInheritedStyle = parentGroup.__inheritedStyle;
+ if (parentInheritedStyle) {
+ var textAlign = parentInheritedStyle.textAlign;
+ var zrTextAlign = textAlign;
+ if (textAlign) {
+ if (textAlign === "middle") {
+ zrTextAlign = "center";
+ }
+ text.style.textAlign = zrTextAlign;
+ }
+ }
+}
+var urlRegex = /^url\(\s*#(.*?)\)/;
+function getFillStrokeStyle(el, method, str, defsUsePending) {
+ var urlMatch = str && str.match(urlRegex);
+ if (urlMatch) {
+ var url = trim(urlMatch[1]);
+ defsUsePending.push([el, method, url]);
+ return;
+ }
+ if (str === "none") {
+ str = null;
+ }
+ return str;
+}
+function applyDefs(defs, defsUsePending) {
+ for (var i = 0; i < defsUsePending.length; i++) {
+ var item = defsUsePending[i];
+ item[0].style[item[1]] = defs[item[2]];
+ }
+}
+var numberReg2 = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;
+function splitNumberSequence(rawStr) {
+ return rawStr.match(numberReg2) || [];
+}
+var transformRegex = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.eE,]*)\)/g;
+var DEGREE_TO_ANGLE = Math.PI / 180;
+function parseTransformAttribute(xmlNode, node) {
+ var transform2 = xmlNode.getAttribute("transform");
+ if (transform2) {
+ transform2 = transform2.replace(/,/g, " ");
+ var transformOps_1 = [];
+ var mt = null;
+ transform2.replace(transformRegex, function(str, type2, value2) {
+ transformOps_1.push(type2, value2);
+ return "";
+ });
+ for (var i = transformOps_1.length - 1; i > 0; i -= 2) {
+ var value = transformOps_1[i];
+ var type = transformOps_1[i - 1];
+ var valueArr = splitNumberSequence(value);
+ mt = mt || create2();
+ switch (type) {
+ case "translate":
+ translate(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || "0")]);
+ break;
+ case "scale":
+ scale2(mt, mt, [parseFloat(valueArr[0]), parseFloat(valueArr[1] || valueArr[0])]);
+ break;
+ case "rotate":
+ rotate(mt, mt, -parseFloat(valueArr[0]) * DEGREE_TO_ANGLE, [
+ parseFloat(valueArr[1] || "0"),
+ parseFloat(valueArr[2] || "0")
+ ]);
+ break;
+ case "skewX":
+ var sx = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);
+ mul2(mt, [1, 0, sx, 1, 0, 0], mt);
+ break;
+ case "skewY":
+ var sy = Math.tan(parseFloat(valueArr[0]) * DEGREE_TO_ANGLE);
+ mul2(mt, [1, sy, 0, 1, 0, 0], mt);
+ break;
+ case "matrix":
+ mt[0] = parseFloat(valueArr[0]);
+ mt[1] = parseFloat(valueArr[1]);
+ mt[2] = parseFloat(valueArr[2]);
+ mt[3] = parseFloat(valueArr[3]);
+ mt[4] = parseFloat(valueArr[4]);
+ mt[5] = parseFloat(valueArr[5]);
+ break;
+ }
+ }
+ node.setLocalTransform(mt);
+ }
+}
+var styleRegex = /([^\s:;]+)\s*:\s*([^:;]+)/g;
+function parseInlineStyle(xmlNode, inheritableStyleResult, selfStyleResult) {
+ var style = xmlNode.getAttribute("style");
+ if (!style) {
+ return;
+ }
+ styleRegex.lastIndex = 0;
+ var styleRegResult;
+ while ((styleRegResult = styleRegex.exec(style)) != null) {
+ var svgStlAttr = styleRegResult[1];
+ var zrInheritableStlAttr = hasOwn(INHERITABLE_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? INHERITABLE_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null;
+ if (zrInheritableStlAttr) {
+ inheritableStyleResult[zrInheritableStlAttr] = styleRegResult[2];
+ }
+ var zrSelfStlAttr = hasOwn(SELF_STYLE_ATTRIBUTES_MAP, svgStlAttr) ? SELF_STYLE_ATTRIBUTES_MAP[svgStlAttr] : null;
+ if (zrSelfStlAttr) {
+ selfStyleResult[zrSelfStlAttr] = styleRegResult[2];
+ }
+ }
+}
+function parseAttributeStyle(xmlNode, inheritableStyleResult, selfStyleResult) {
+ for (var i = 0; i < INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {
+ var svgAttrName = INHERITABLE_STYLE_ATTRIBUTES_MAP_KEYS[i];
+ var attrValue = xmlNode.getAttribute(svgAttrName);
+ if (attrValue != null) {
+ inheritableStyleResult[INHERITABLE_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;
+ }
+ }
+ for (var i = 0; i < SELF_STYLE_ATTRIBUTES_MAP_KEYS.length; i++) {
+ var svgAttrName = SELF_STYLE_ATTRIBUTES_MAP_KEYS[i];
+ var attrValue = xmlNode.getAttribute(svgAttrName);
+ if (attrValue != null) {
+ selfStyleResult[SELF_STYLE_ATTRIBUTES_MAP[svgAttrName]] = attrValue;
+ }
+ }
+}
+function makeViewBoxTransform(viewBoxRect, boundingRect) {
+ var scaleX = boundingRect.width / viewBoxRect.width;
+ var scaleY = boundingRect.height / viewBoxRect.height;
+ var scale4 = Math.min(scaleX, scaleY);
+ return {
+ scale: scale4,
+ x: -(viewBoxRect.x + viewBoxRect.width / 2) * scale4 + (boundingRect.x + boundingRect.width / 2),
+ y: -(viewBoxRect.y + viewBoxRect.height / 2) * scale4 + (boundingRect.y + boundingRect.height / 2)
+ };
+}
+function parseSVG(xml, opt) {
+ var parser = new SVGParser();
+ return parser.parse(xml, opt);
+}
+
+// node_modules/echarts/lib/coord/geo/GeoSVGResource.js
+var REGION_AVAILABLE_SVG_TAG_MAP = createHashMap([
+ "rect",
+ "circle",
+ "line",
+ "ellipse",
+ "polygon",
+ "polyline",
+ "path",
+ "text",
+ "tspan",
+ "g"
+]);
+var GeoSVGResource = function() {
+ function GeoSVGResource2(mapName, svg) {
+ this.type = "geoSVG";
+ this._usedGraphicMap = createHashMap();
+ this._freedGraphics = [];
+ this._mapName = mapName;
+ this._parsedXML = parseXML(svg);
+ }
+ GeoSVGResource2.prototype.load = function() {
+ var firstGraphic = this._firstGraphic;
+ if (!firstGraphic) {
+ firstGraphic = this._firstGraphic = this._buildGraphic(this._parsedXML);
+ this._freedGraphics.push(firstGraphic);
+ this._boundingRect = this._firstGraphic.boundingRect.clone();
+ var _a2 = createRegions(firstGraphic.named), regions = _a2.regions, regionsMap = _a2.regionsMap;
+ this._regions = regions;
+ this._regionsMap = regionsMap;
+ }
+ return {
+ boundingRect: this._boundingRect,
+ regions: this._regions,
+ regionsMap: this._regionsMap
+ };
+ };
+ GeoSVGResource2.prototype._buildGraphic = function(svgXML) {
+ var result;
+ var rootFromParse;
+ try {
+ result = svgXML && parseSVG(svgXML, {
+ ignoreViewBox: true,
+ ignoreRootClip: true
+ }) || {};
+ rootFromParse = result.root;
+ assert(rootFromParse != null);
+ } catch (e2) {
+ throw new Error("Invalid svg format\n" + e2.message);
+ }
+ var root = new Group_default();
+ root.add(rootFromParse);
+ root.isGeoSVGGraphicRoot = true;
+ var svgWidth = result.width;
+ var svgHeight = result.height;
+ var viewBoxRect = result.viewBoxRect;
+ var boundingRect = this._boundingRect;
+ if (!boundingRect) {
+ var bRectX = void 0;
+ var bRectY = void 0;
+ var bRectWidth = void 0;
+ var bRectHeight = void 0;
+ if (svgWidth != null) {
+ bRectX = 0;
+ bRectWidth = svgWidth;
+ } else if (viewBoxRect) {
+ bRectX = viewBoxRect.x;
+ bRectWidth = viewBoxRect.width;
+ }
+ if (svgHeight != null) {
+ bRectY = 0;
+ bRectHeight = svgHeight;
+ } else if (viewBoxRect) {
+ bRectY = viewBoxRect.y;
+ bRectHeight = viewBoxRect.height;
+ }
+ if (bRectX == null || bRectY == null) {
+ var calculatedBoundingRect = rootFromParse.getBoundingRect();
+ if (bRectX == null) {
+ bRectX = calculatedBoundingRect.x;
+ bRectWidth = calculatedBoundingRect.width;
+ }
+ if (bRectY == null) {
+ bRectY = calculatedBoundingRect.y;
+ bRectHeight = calculatedBoundingRect.height;
+ }
+ }
+ boundingRect = this._boundingRect = new BoundingRect_default(bRectX, bRectY, bRectWidth, bRectHeight);
+ }
+ if (viewBoxRect) {
+ var viewBoxTransform = makeViewBoxTransform(viewBoxRect, boundingRect);
+ rootFromParse.scaleX = rootFromParse.scaleY = viewBoxTransform.scale;
+ rootFromParse.x = viewBoxTransform.x;
+ rootFromParse.y = viewBoxTransform.y;
+ }
+ root.setClipPath(new Rect_default({
+ shape: boundingRect.plain()
+ }));
+ var named = [];
+ each(result.named, function(namedItem) {
+ if (REGION_AVAILABLE_SVG_TAG_MAP.get(namedItem.svgNodeTagLower) != null) {
+ named.push(namedItem);
+ setSilent(namedItem.el);
+ }
+ });
+ return {
+ root,
+ boundingRect,
+ named
+ };
+ };
+ GeoSVGResource2.prototype.useGraphic = function(hostKey) {
+ var usedRootMap = this._usedGraphicMap;
+ var svgGraphic = usedRootMap.get(hostKey);
+ if (svgGraphic) {
+ return svgGraphic;
+ }
+ svgGraphic = this._freedGraphics.pop() || this._buildGraphic(this._parsedXML);
+ usedRootMap.set(hostKey, svgGraphic);
+ return svgGraphic;
+ };
+ GeoSVGResource2.prototype.freeGraphic = function(hostKey) {
+ var usedRootMap = this._usedGraphicMap;
+ var svgGraphic = usedRootMap.get(hostKey);
+ if (svgGraphic) {
+ usedRootMap.removeKey(hostKey);
+ this._freedGraphics.push(svgGraphic);
+ }
+ };
+ return GeoSVGResource2;
+}();
+function setSilent(el) {
+ el.silent = false;
+ if (el.isGroup) {
+ el.traverse(function(child) {
+ child.silent = false;
+ });
+ }
+}
+function createRegions(named) {
+ var regions = [];
+ var regionsMap = createHashMap();
+ each(named, function(namedItem) {
+ if (namedItem.namedFrom != null) {
+ return;
+ }
+ var region = new GeoSVGRegion(namedItem.name, namedItem.el);
+ regions.push(region);
+ regionsMap.set(namedItem.name, region);
+ });
+ return {
+ regions,
+ regionsMap
+ };
+}
+
+// node_modules/echarts/lib/coord/geo/fix/nanhai.js
+var geoCoord = [126, 25];
+var nanhaiName = "\u5357\u6D77\u8BF8\u5C9B";
+var points2 = [[[0, 3.5], [7, 11.2], [15, 11.9], [30, 7], [42, 0.7], [52, 0.7], [56, 7.7], [59, 0.7], [64, 0.7], [64, 0], [5, 0], [0, 3.5]], [[13, 16.1], [19, 14.7], [16, 21.7], [11, 23.1], [13, 16.1]], [[12, 32.2], [14, 38.5], [15, 38.5], [13, 32.2], [12, 32.2]], [[16, 47.6], [12, 53.2], [13, 53.2], [18, 47.6], [16, 47.6]], [[6, 64.4], [8, 70], [9, 70], [8, 64.4], [6, 64.4]], [[23, 82.6], [29, 79.8], [30, 79.8], [25, 82.6], [23, 82.6]], [[37, 70.7], [43, 62.3], [44, 62.3], [39, 70.7], [37, 70.7]], [[48, 51.1], [51, 45.5], [53, 45.5], [50, 51.1], [48, 51.1]], [[51, 35], [51, 28.7], [53, 28.7], [53, 35], [51, 35]], [[52, 22.4], [55, 17.5], [56, 17.5], [53, 22.4], [52, 22.4]], [[58, 12.6], [62, 7], [63, 7], [60, 12.6], [58, 12.6]], [[0, 3.5], [0, 93.1], [64, 93.1], [64, 0], [63, 0], [63, 92.4], [1, 92.4], [1, 3.5], [0, 3.5]]];
+for (i = 0; i < points2.length; i++) {
+ for (k = 0; k < points2[i].length; k++) {
+ points2[i][k][0] /= 10.5;
+ points2[i][k][1] /= -10.5 / 0.75;
+ points2[i][k][0] += geoCoord[0];
+ points2[i][k][1] += geoCoord[1];
+ }
+}
+var k;
+var i;
+function fixNanhai(mapType, regions) {
+ if (mapType === "china") {
+ for (var i = 0; i < regions.length; i++) {
+ if (regions[i].name === nanhaiName) {
+ return;
+ }
+ }
+ regions.push(new GeoJSONRegion(nanhaiName, map(points2, function(exterior) {
+ return {
+ type: "polygon",
+ exterior
+ };
+ }), geoCoord));
+ }
+}
+
+// node_modules/echarts/lib/coord/geo/fix/textCoord.js
+var coordsOffsetMap = {
+ "\u5357\u6D77\u8BF8\u5C9B": [32, 80],
+ "\u5E7F\u4E1C": [0, -10],
+ "\u9999\u6E2F": [10, 5],
+ "\u6FB3\u95E8": [-10, 10],
+ "\u5929\u6D25": [5, 5]
+};
+function fixTextCoords(mapType, region) {
+ if (mapType === "china") {
+ var coordFix = coordsOffsetMap[region.name];
+ if (coordFix) {
+ var cp = region.getCenter();
+ cp[0] += coordFix[0] / 10.5;
+ cp[1] += -coordFix[1] / (10.5 / 0.75);
+ region.setCenter(cp);
+ }
+ }
+}
+
+// node_modules/echarts/lib/coord/geo/fix/diaoyuIsland.js
+var points3 = [[[123.45165252685547, 25.73527164402261], [123.49731445312499, 25.73527164402261], [123.49731445312499, 25.750734064600884], [123.45165252685547, 25.750734064600884], [123.45165252685547, 25.73527164402261]]];
+function fixDiaoyuIsland(mapType, region) {
+ if (mapType === "china" && region.name === "\u53F0\u6E7E") {
+ region.geometries.push({
+ type: "polygon",
+ exterior: points3[0]
+ });
+ }
+}
+
+// node_modules/echarts/lib/coord/geo/GeoJSONResource.js
+var DEFAULT_NAME_PROPERTY = "name";
+var GeoJSONResource = function() {
+ function GeoJSONResource2(mapName, geoJSON, specialAreas) {
+ this.type = "geoJSON";
+ this._parsedMap = createHashMap();
+ this._mapName = mapName;
+ this._specialAreas = specialAreas;
+ this._geoJSON = parseInput(geoJSON);
+ }
+ GeoJSONResource2.prototype.load = function(nameMap, nameProperty) {
+ nameProperty = nameProperty || DEFAULT_NAME_PROPERTY;
+ var parsed = this._parsedMap.get(nameProperty);
+ if (!parsed) {
+ var rawRegions = this._parseToRegions(nameProperty);
+ parsed = this._parsedMap.set(nameProperty, {
+ regions: rawRegions,
+ boundingRect: calculateBoundingRect(rawRegions)
+ });
+ }
+ var regionsMap = createHashMap();
+ var finalRegions = [];
+ each(parsed.regions, function(region) {
+ var regionName = region.name;
+ if (nameMap && hasOwn(nameMap, regionName)) {
+ region = region.cloneShallow(regionName = nameMap[regionName]);
+ }
+ finalRegions.push(region);
+ regionsMap.set(regionName, region);
+ });
+ return {
+ regions: finalRegions,
+ boundingRect: parsed.boundingRect || new BoundingRect_default(0, 0, 0, 0),
+ regionsMap
+ };
+ };
+ GeoJSONResource2.prototype._parseToRegions = function(nameProperty) {
+ var mapName = this._mapName;
+ var geoJSON = this._geoJSON;
+ var rawRegions;
+ try {
+ rawRegions = geoJSON ? parseGeoJSON(geoJSON, nameProperty) : [];
+ } catch (e2) {
+ throw new Error("Invalid geoJson format\n" + e2.message);
+ }
+ fixNanhai(mapName, rawRegions);
+ each(rawRegions, function(region) {
+ var regionName = region.name;
+ fixTextCoords(mapName, region);
+ fixDiaoyuIsland(mapName, region);
+ var specialArea = this._specialAreas && this._specialAreas[regionName];
+ if (specialArea) {
+ region.transformTo(specialArea.left, specialArea.top, specialArea.width, specialArea.height);
+ }
+ }, this);
+ return rawRegions;
+ };
+ GeoJSONResource2.prototype.getMapForUser = function() {
+ return {
+ geoJson: this._geoJSON,
+ geoJSON: this._geoJSON,
+ specialAreas: this._specialAreas
+ };
+ };
+ return GeoJSONResource2;
+}();
+function calculateBoundingRect(regions) {
+ var rect;
+ for (var i = 0; i < regions.length; i++) {
+ var regionRect = regions[i].getBoundingRect();
+ rect = rect || regionRect.clone();
+ rect.union(regionRect);
+ }
+ return rect;
+}
+function parseInput(source) {
+ return !isString(source) ? source : typeof JSON !== "undefined" && JSON.parse ? JSON.parse(source) : new Function("return (" + source + ");")();
+}
+
+// node_modules/echarts/lib/coord/geo/geoSourceManager.js
+var storage = createHashMap();
+var geoSourceManager_default = {
+ registerMap: function(mapName, rawDef, rawSpecialAreas) {
+ if (rawDef.svg) {
+ var resource = new GeoSVGResource(mapName, rawDef.svg);
+ storage.set(mapName, resource);
+ } else {
+ var geoJSON = rawDef.geoJson || rawDef.geoJSON;
+ if (geoJSON && !rawDef.features) {
+ rawSpecialAreas = rawDef.specialAreas;
+ } else {
+ geoJSON = rawDef;
+ }
+ var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas);
+ storage.set(mapName, resource);
+ }
+ },
+ getGeoResource: function(mapName) {
+ return storage.get(mapName);
+ },
+ getMapForUser: function(mapName) {
+ var resource = storage.get(mapName);
+ return resource && resource.type === "geoJSON" && resource.getMapForUser();
+ },
+ load: function(mapName, nameMap, nameProperty) {
+ var resource = storage.get(mapName);
+ if (!resource) {
+ if (true) {
+ console.error("Map " + mapName + " not exists. The GeoJSON of the map must be provided.");
+ }
+ return;
+ }
+ return resource.load(nameMap, nameProperty);
+ }
+};
+
+// node_modules/echarts/lib/component/helper/MapDraw.js
+var OPTION_STYLE_ENABLED_TAGS = ["rect", "circle", "line", "ellipse", "polygon", "polyline", "path"];
+var OPTION_STYLE_ENABLED_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS);
+var STATE_TRIGGER_TAG_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"]));
+var LABEL_HOST_MAP = createHashMap(OPTION_STYLE_ENABLED_TAGS.concat(["g"]));
+var mapLabelRaw = makeInner();
+function getFixedItemStyle(model) {
+ var itemStyle = model.getItemStyle();
+ var areaColor = model.get("areaColor");
+ if (areaColor != null) {
+ itemStyle.fill = areaColor;
+ }
+ return itemStyle;
+}
+function fixLineStyle(styleHost) {
+ var style = styleHost.style;
+ if (style) {
+ style.stroke = style.stroke || style.fill;
+ style.fill = null;
+ }
+}
+var MapDraw = function() {
+ function MapDraw2(api) {
+ var group = new Group_default();
+ this.uid = getUID("ec_map_draw");
+ this._controller = new RoamController_default(api.getZr());
+ this._controllerHost = {
+ target: group
+ };
+ this.group = group;
+ group.add(this._regionsGroup = new Group_default());
+ group.add(this._svgGroup = new Group_default());
+ }
+ MapDraw2.prototype.draw = function(mapOrGeoModel, ecModel, api, fromView, payload) {
+ var isGeo = mapOrGeoModel.mainType === "geo";
+ var data = mapOrGeoModel.getData && mapOrGeoModel.getData();
+ isGeo && ecModel.eachComponent({
+ mainType: "series",
+ subType: "map"
+ }, function(mapSeries) {
+ if (!data && mapSeries.getHostGeoModel() === mapOrGeoModel) {
+ data = mapSeries.getData();
+ }
+ });
+ var geo = mapOrGeoModel.coordinateSystem;
+ var regionsGroup = this._regionsGroup;
+ var group = this.group;
+ var transformInfo = geo.getTransformInfo();
+ var transformInfoRaw = transformInfo.raw;
+ var transformInfoRoam = transformInfo.roam;
+ var isFirstDraw = !regionsGroup.childAt(0) || payload;
+ if (isFirstDraw) {
+ group.x = transformInfoRoam.x;
+ group.y = transformInfoRoam.y;
+ group.scaleX = transformInfoRoam.scaleX;
+ group.scaleY = transformInfoRoam.scaleY;
+ group.dirty();
+ } else {
+ updateProps(group, transformInfoRoam, mapOrGeoModel);
+ }
+ var isVisualEncodedByVisualMap = data && data.getVisual("visualMeta") && data.getVisual("visualMeta").length > 0;
+ var viewBuildCtx = {
+ api,
+ geo,
+ mapOrGeoModel,
+ data,
+ isVisualEncodedByVisualMap,
+ isGeo,
+ transformInfoRaw
+ };
+ if (geo.resourceType === "geoJSON") {
+ this._buildGeoJSON(viewBuildCtx);
+ } else if (geo.resourceType === "geoSVG") {
+ this._buildSVG(viewBuildCtx);
+ }
+ this._updateController(mapOrGeoModel, ecModel, api);
+ this._updateMapSelectHandler(mapOrGeoModel, regionsGroup, api, fromView);
+ };
+ MapDraw2.prototype._buildGeoJSON = function(viewBuildCtx) {
+ var regionsGroupByName = this._regionsGroupByName = createHashMap();
+ var regionsInfoByName = createHashMap();
+ var regionsGroup = this._regionsGroup;
+ var transformInfoRaw = viewBuildCtx.transformInfoRaw;
+ var mapOrGeoModel = viewBuildCtx.mapOrGeoModel;
+ var data = viewBuildCtx.data;
+ var projection = viewBuildCtx.geo.projection;
+ var projectionStream = projection && projection.stream;
+ function transformPoint(point, project) {
+ if (project) {
+ point = project(point);
+ }
+ return point && [point[0] * transformInfoRaw.scaleX + transformInfoRaw.x, point[1] * transformInfoRaw.scaleY + transformInfoRaw.y];
+ }
+ ;
+ function transformPolygonPoints(inPoints) {
+ var outPoints = [];
+ var project = !projectionStream && projection && projection.project;
+ for (var i = 0; i < inPoints.length; ++i) {
+ var newPt = transformPoint(inPoints[i], project);
+ newPt && outPoints.push(newPt);
+ }
+ return outPoints;
+ }
+ function getPolyShape(points4) {
+ return {
+ shape: {
+ points: transformPolygonPoints(points4)
+ }
+ };
+ }
+ regionsGroup.removeAll();
+ each(viewBuildCtx.geo.regions, function(region) {
+ var regionName = region.name;
+ var regionGroup = regionsGroupByName.get(regionName);
+ var _a2 = regionsInfoByName.get(regionName) || {}, dataIdx = _a2.dataIdx, regionModel = _a2.regionModel;
+ if (!regionGroup) {
+ regionGroup = regionsGroupByName.set(regionName, new Group_default());
+ regionsGroup.add(regionGroup);
+ dataIdx = data ? data.indexOfName(regionName) : null;
+ regionModel = viewBuildCtx.isGeo ? mapOrGeoModel.getRegionModel(regionName) : data ? data.getItemModel(dataIdx) : null;
+ var silent = regionModel.get("silent", true);
+ silent != null && (regionGroup.silent = silent);
+ regionsInfoByName.set(regionName, {
+ dataIdx,
+ regionModel
+ });
+ }
+ var polygonSubpaths = [];
+ var polylineSubpaths = [];
+ each(region.geometries, function(geometry) {
+ if (geometry.type === "polygon") {
+ var polys = [geometry.exterior].concat(geometry.interiors || []);
+ if (projectionStream) {
+ polys = projectPolys(polys, projectionStream);
+ }
+ each(polys, function(poly) {
+ polygonSubpaths.push(new Polygon_default(getPolyShape(poly)));
+ });
+ } else {
+ var points4 = geometry.points;
+ if (projectionStream) {
+ points4 = projectPolys(points4, projectionStream, true);
+ }
+ each(points4, function(points5) {
+ polylineSubpaths.push(new Polyline_default(getPolyShape(points5)));
+ });
+ }
+ });
+ var centerPt = transformPoint(region.getCenter(), projection && projection.project);
+ function createCompoundPath(subpaths, isLine) {
+ if (!subpaths.length) {
+ return;
+ }
+ var compoundPath = new CompoundPath_default({
+ culling: true,
+ segmentIgnoreThreshold: 1,
+ shape: {
+ paths: subpaths
+ }
+ });
+ regionGroup.add(compoundPath);
+ applyOptionStyleForRegion(viewBuildCtx, compoundPath, dataIdx, regionModel);
+ resetLabelForRegion(viewBuildCtx, compoundPath, regionName, regionModel, mapOrGeoModel, dataIdx, centerPt);
+ if (isLine) {
+ fixLineStyle(compoundPath);
+ each(compoundPath.states, fixLineStyle);
+ }
+ }
+ createCompoundPath(polygonSubpaths);
+ createCompoundPath(polylineSubpaths, true);
+ });
+ regionsGroupByName.each(function(regionGroup, regionName) {
+ var _a2 = regionsInfoByName.get(regionName), dataIdx = _a2.dataIdx, regionModel = _a2.regionModel;
+ resetEventTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel, dataIdx);
+ resetTooltipForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel);
+ resetStateTriggerForRegion(viewBuildCtx, regionGroup, regionName, regionModel, mapOrGeoModel);
+ }, this);
+ };
+ MapDraw2.prototype._buildSVG = function(viewBuildCtx) {
+ var mapName = viewBuildCtx.geo.map;
+ var transformInfoRaw = viewBuildCtx.transformInfoRaw;
+ this._svgGroup.x = transformInfoRaw.x;
+ this._svgGroup.y = transformInfoRaw.y;
+ this._svgGroup.scaleX = transformInfoRaw.scaleX;
+ this._svgGroup.scaleY = transformInfoRaw.scaleY;
+ if (this._svgResourceChanged(mapName)) {
+ this._freeSVG();
+ this._useSVG(mapName);
+ }
+ var svgDispatcherMap = this._svgDispatcherMap = createHashMap();
+ var focusSelf = false;
+ each(this._svgGraphicRecord.named, function(namedItem) {
+ var regionName = namedItem.name;
+ var mapOrGeoModel = viewBuildCtx.mapOrGeoModel;
+ var data = viewBuildCtx.data;
+ var svgNodeTagLower = namedItem.svgNodeTagLower;
+ var el = namedItem.el;
+ var dataIdx = data ? data.indexOfName(regionName) : null;
+ var regionModel = mapOrGeoModel.getRegionModel(regionName);
+ if (OPTION_STYLE_ENABLED_TAG_MAP.get(svgNodeTagLower) != null && el instanceof Displayable_default) {
+ applyOptionStyleForRegion(viewBuildCtx, el, dataIdx, regionModel);
+ }
+ if (el instanceof Displayable_default) {
+ el.culling = true;
+ }
+ var silent = regionModel.get("silent", true);
+ silent != null && (el.silent = silent);
+ el.z2EmphasisLift = 0;
+ if (!namedItem.namedFrom) {
+ if (LABEL_HOST_MAP.get(svgNodeTagLower) != null) {
+ resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, null);
+ }
+ resetEventTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx);
+ resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel);
+ if (STATE_TRIGGER_TAG_MAP.get(svgNodeTagLower) != null) {
+ var focus_1 = resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel);
+ if (focus_1 === "self") {
+ focusSelf = true;
+ }
+ var els = svgDispatcherMap.get(regionName) || svgDispatcherMap.set(regionName, []);
+ els.push(el);
+ }
+ }
+ }, this);
+ this._enableBlurEntireSVG(focusSelf, viewBuildCtx);
+ };
+ MapDraw2.prototype._enableBlurEntireSVG = function(focusSelf, viewBuildCtx) {
+ if (focusSelf && viewBuildCtx.isGeo) {
+ var blurStyle = viewBuildCtx.mapOrGeoModel.getModel(["blur", "itemStyle"]).getItemStyle();
+ var opacity_1 = blurStyle.opacity;
+ this._svgGraphicRecord.root.traverse(function(el) {
+ if (!el.isGroup) {
+ setDefaultStateProxy(el);
+ var style = el.ensureState("blur").style || {};
+ if (style.opacity == null && opacity_1 != null) {
+ style.opacity = opacity_1;
+ }
+ el.ensureState("emphasis");
+ }
+ });
+ }
+ };
+ MapDraw2.prototype.remove = function() {
+ this._regionsGroup.removeAll();
+ this._regionsGroupByName = null;
+ this._svgGroup.removeAll();
+ this._freeSVG();
+ this._controller.dispose();
+ this._controllerHost = null;
+ };
+ MapDraw2.prototype.findHighDownDispatchers = function(name, geoModel) {
+ if (name == null) {
+ return [];
+ }
+ var geo = geoModel.coordinateSystem;
+ if (geo.resourceType === "geoJSON") {
+ var regionsGroupByName = this._regionsGroupByName;
+ if (regionsGroupByName) {
+ var regionGroup = regionsGroupByName.get(name);
+ return regionGroup ? [regionGroup] : [];
+ }
+ } else if (geo.resourceType === "geoSVG") {
+ return this._svgDispatcherMap && this._svgDispatcherMap.get(name) || [];
+ }
+ };
+ MapDraw2.prototype._svgResourceChanged = function(mapName) {
+ return this._svgMapName !== mapName;
+ };
+ MapDraw2.prototype._useSVG = function(mapName) {
+ var resource = geoSourceManager_default.getGeoResource(mapName);
+ if (resource && resource.type === "geoSVG") {
+ var svgGraphic = resource.useGraphic(this.uid);
+ this._svgGroup.add(svgGraphic.root);
+ this._svgGraphicRecord = svgGraphic;
+ this._svgMapName = mapName;
+ }
+ };
+ MapDraw2.prototype._freeSVG = function() {
+ var mapName = this._svgMapName;
+ if (mapName == null) {
+ return;
+ }
+ var resource = geoSourceManager_default.getGeoResource(mapName);
+ if (resource && resource.type === "geoSVG") {
+ resource.freeGraphic(this.uid);
+ }
+ this._svgGraphicRecord = null;
+ this._svgDispatcherMap = null;
+ this._svgGroup.removeAll();
+ this._svgMapName = null;
+ };
+ MapDraw2.prototype._updateController = function(mapOrGeoModel, ecModel, api) {
+ var geo = mapOrGeoModel.coordinateSystem;
+ var controller = this._controller;
+ var controllerHost = this._controllerHost;
+ controllerHost.zoomLimit = mapOrGeoModel.get("scaleLimit");
+ controllerHost.zoom = geo.getZoom();
+ controller.enable(mapOrGeoModel.get("roam") || false);
+ var mainType = mapOrGeoModel.mainType;
+ function makeActionBase() {
+ var action = {
+ type: "geoRoam",
+ componentType: mainType
+ };
+ action[mainType + "Id"] = mapOrGeoModel.id;
+ return action;
+ }
+ controller.off("pan").on("pan", function(e2) {
+ this._mouseDownFlag = false;
+ updateViewOnPan(controllerHost, e2.dx, e2.dy);
+ api.dispatchAction(extend(makeActionBase(), {
+ dx: e2.dx,
+ dy: e2.dy,
+ animation: {
+ duration: 0
+ }
+ }));
+ }, this);
+ controller.off("zoom").on("zoom", function(e2) {
+ this._mouseDownFlag = false;
+ updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY);
+ api.dispatchAction(extend(makeActionBase(), {
+ totalZoom: controllerHost.zoom,
+ zoom: e2.scale,
+ originX: e2.originX,
+ originY: e2.originY,
+ animation: {
+ duration: 0
+ }
+ }));
+ }, this);
+ controller.setPointerChecker(function(e2, x, y) {
+ return geo.containPoint([x, y]) && !onIrrelevantElement(e2, api, mapOrGeoModel);
+ });
+ };
+ MapDraw2.prototype.resetForLabelLayout = function() {
+ this.group.traverse(function(el) {
+ var label = el.getTextContent();
+ if (label) {
+ label.ignore = mapLabelRaw(label).ignore;
+ }
+ });
+ };
+ MapDraw2.prototype._updateMapSelectHandler = function(mapOrGeoModel, regionsGroup, api, fromView) {
+ var mapDraw = this;
+ regionsGroup.off("mousedown");
+ regionsGroup.off("click");
+ if (mapOrGeoModel.get("selectedMode")) {
+ regionsGroup.on("mousedown", function() {
+ mapDraw._mouseDownFlag = true;
+ });
+ regionsGroup.on("click", function(e2) {
+ if (!mapDraw._mouseDownFlag) {
+ return;
+ }
+ mapDraw._mouseDownFlag = false;
+ });
+ }
+ };
+ return MapDraw2;
+}();
+function applyOptionStyleForRegion(viewBuildCtx, el, dataIndex, regionModel) {
+ var normalStyleModel = regionModel.getModel("itemStyle");
+ var emphasisStyleModel = regionModel.getModel(["emphasis", "itemStyle"]);
+ var blurStyleModel = regionModel.getModel(["blur", "itemStyle"]);
+ var selectStyleModel = regionModel.getModel(["select", "itemStyle"]);
+ var normalStyle = getFixedItemStyle(normalStyleModel);
+ var emphasisStyle = getFixedItemStyle(emphasisStyleModel);
+ var selectStyle = getFixedItemStyle(selectStyleModel);
+ var blurStyle = getFixedItemStyle(blurStyleModel);
+ var data = viewBuildCtx.data;
+ if (data) {
+ var style = data.getItemVisual(dataIndex, "style");
+ var decal = data.getItemVisual(dataIndex, "decal");
+ if (viewBuildCtx.isVisualEncodedByVisualMap && style.fill) {
+ normalStyle.fill = style.fill;
+ }
+ if (decal) {
+ normalStyle.decal = createOrUpdatePatternFromDecal(decal, viewBuildCtx.api);
+ }
+ }
+ el.setStyle(normalStyle);
+ el.style.strokeNoScale = true;
+ el.ensureState("emphasis").style = emphasisStyle;
+ el.ensureState("select").style = selectStyle;
+ el.ensureState("blur").style = blurStyle;
+ setDefaultStateProxy(el);
+}
+function resetLabelForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel, dataIdx, labelXY) {
+ var data = viewBuildCtx.data;
+ var isGeo = viewBuildCtx.isGeo;
+ var isDataNaN = data && isNaN(data.get(data.mapDimension("value"), dataIdx));
+ var itemLayout = data && data.getItemLayout(dataIdx);
+ if (isGeo || isDataNaN || itemLayout && itemLayout.showLabel) {
+ var query = !isGeo ? dataIdx : regionName;
+ var labelFetcher = void 0;
+ if (!data || dataIdx >= 0) {
+ labelFetcher = mapOrGeoModel;
+ }
+ var specifiedTextOpt = labelXY ? {
+ normal: {
+ align: "center",
+ verticalAlign: "middle"
+ }
+ } : null;
+ setLabelStyle(el, getLabelStatesModels(regionModel), {
+ labelFetcher,
+ labelDataIndex: query,
+ defaultText: regionName
+ }, specifiedTextOpt);
+ var textEl = el.getTextContent();
+ if (textEl) {
+ mapLabelRaw(textEl).ignore = textEl.ignore;
+ if (el.textConfig && labelXY) {
+ var rect = el.getBoundingRect().clone();
+ el.textConfig.layoutRect = rect;
+ el.textConfig.position = [(labelXY[0] - rect.x) / rect.width * 100 + "%", (labelXY[1] - rect.y) / rect.height * 100 + "%"];
+ }
+ }
+ el.disableLabelAnimation = true;
+ } else {
+ el.removeTextContent();
+ el.removeTextConfig();
+ el.disableLabelAnimation = null;
+ }
+}
+function resetEventTriggerForRegion(viewBuildCtx, eventTrigger, regionName, regionModel, mapOrGeoModel, dataIdx) {
+ if (viewBuildCtx.data) {
+ viewBuildCtx.data.setItemGraphicEl(dataIdx, eventTrigger);
+ } else {
+ getECData(eventTrigger).eventData = {
+ componentType: "geo",
+ componentIndex: mapOrGeoModel.componentIndex,
+ geoIndex: mapOrGeoModel.componentIndex,
+ name: regionName,
+ region: regionModel && regionModel.option || {}
+ };
+ }
+}
+function resetTooltipForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) {
+ if (!viewBuildCtx.data) {
+ setTooltipConfig({
+ el,
+ componentModel: mapOrGeoModel,
+ itemName: regionName,
+ itemTooltipOption: regionModel.get("tooltip")
+ });
+ }
+}
+function resetStateTriggerForRegion(viewBuildCtx, el, regionName, regionModel, mapOrGeoModel) {
+ el.highDownSilentOnTouch = !!mapOrGeoModel.get("selectedMode");
+ var emphasisModel = regionModel.getModel("emphasis");
+ var focus = emphasisModel.get("focus");
+ toggleHoverEmphasis(el, focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ if (viewBuildCtx.isGeo) {
+ enableComponentHighDownFeatures(el, mapOrGeoModel, regionName);
+ }
+ return focus;
+}
+function projectPolys(rings, createStream, isLine) {
+ var polygons = [];
+ var curPoly;
+ function startPolygon() {
+ curPoly = [];
+ }
+ function endPolygon() {
+ if (curPoly.length) {
+ polygons.push(curPoly);
+ curPoly = [];
+ }
+ }
+ var stream = createStream({
+ polygonStart: startPolygon,
+ polygonEnd: endPolygon,
+ lineStart: startPolygon,
+ lineEnd: endPolygon,
+ point: function(x, y) {
+ if (isFinite(x) && isFinite(y)) {
+ curPoly.push([x, y]);
+ }
+ },
+ sphere: function() {
+ }
+ });
+ !isLine && stream.polygonStart();
+ each(rings, function(ring) {
+ stream.lineStart();
+ for (var i = 0; i < ring.length; i++) {
+ stream.point(ring[i][0], ring[i][1]);
+ }
+ stream.lineEnd();
+ });
+ !isLine && stream.polygonEnd();
+ return polygons;
+}
+var MapDraw_default = MapDraw;
+
+// node_modules/echarts/lib/chart/map/MapView.js
+var MapView = function(_super) {
+ __extends(MapView2, _super);
+ function MapView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MapView2.type;
+ return _this;
+ }
+ MapView2.prototype.render = function(mapModel, ecModel, api, payload) {
+ if (payload && payload.type === "mapToggleSelect" && payload.from === this.uid) {
+ return;
+ }
+ var group = this.group;
+ group.removeAll();
+ if (mapModel.getHostGeoModel()) {
+ return;
+ }
+ if (this._mapDraw && payload && payload.type === "geoRoam") {
+ this._mapDraw.resetForLabelLayout();
+ }
+ if (!(payload && payload.type === "geoRoam" && payload.componentType === "series" && payload.seriesId === mapModel.id)) {
+ if (mapModel.needsDrawMap) {
+ var mapDraw = this._mapDraw || new MapDraw_default(api);
+ group.add(mapDraw.group);
+ mapDraw.draw(mapModel, ecModel, api, this, payload);
+ this._mapDraw = mapDraw;
+ } else {
+ this._mapDraw && this._mapDraw.remove();
+ this._mapDraw = null;
+ }
+ } else {
+ var mapDraw = this._mapDraw;
+ mapDraw && group.add(mapDraw.group);
+ }
+ mapModel.get("showLegendSymbol") && ecModel.getComponent("legend") && this._renderSymbols(mapModel, ecModel, api);
+ };
+ MapView2.prototype.remove = function() {
+ this._mapDraw && this._mapDraw.remove();
+ this._mapDraw = null;
+ this.group.removeAll();
+ };
+ MapView2.prototype.dispose = function() {
+ this._mapDraw && this._mapDraw.remove();
+ this._mapDraw = null;
+ };
+ MapView2.prototype._renderSymbols = function(mapModel, ecModel, api) {
+ var originalData = mapModel.originalData;
+ var group = this.group;
+ originalData.each(originalData.mapDimension("value"), function(value, originalDataIndex) {
+ if (isNaN(value)) {
+ return;
+ }
+ var layout5 = originalData.getItemLayout(originalDataIndex);
+ if (!layout5 || !layout5.point) {
+ return;
+ }
+ var point = layout5.point;
+ var offset = layout5.offset;
+ var circle = new Circle_default({
+ style: {
+ fill: mapModel.getData().getVisual("style").fill
+ },
+ shape: {
+ cx: point[0] + offset * 9,
+ cy: point[1],
+ r: 3
+ },
+ silent: true,
+ z2: 8 + (!offset ? Z2_EMPHASIS_LIFT + 1 : 0)
+ });
+ if (!offset) {
+ var fullData = mapModel.mainSeries.getData();
+ var name_1 = originalData.getName(originalDataIndex);
+ var fullIndex_1 = fullData.indexOfName(name_1);
+ var itemModel = originalData.getItemModel(originalDataIndex);
+ var labelModel = itemModel.getModel("label");
+ var regionGroup = fullData.getItemGraphicEl(fullIndex_1);
+ setLabelStyle(circle, getLabelStatesModels(itemModel), {
+ labelFetcher: {
+ getFormattedLabel: function(idx, state) {
+ return mapModel.getFormattedLabel(fullIndex_1, state);
+ }
+ },
+ defaultText: name_1
+ });
+ circle.disableLabelAnimation = true;
+ if (!labelModel.get("position")) {
+ circle.setTextConfig({
+ position: "bottom"
+ });
+ }
+ regionGroup.onHoverStateChange = function(toState) {
+ setStatesFlag(circle, toState);
+ };
+ }
+ group.add(circle);
+ });
+ };
+ MapView2.type = "map";
+ return MapView2;
+}(Chart_default);
+var MapView_default = MapView;
+
+// node_modules/echarts/lib/chart/map/MapSeries.js
+var MapSeries = function(_super) {
+ __extends(MapSeries2, _super);
+ function MapSeries2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MapSeries2.type;
+ _this.needsDrawMap = false;
+ _this.seriesGroup = [];
+ _this.getTooltipPosition = function(dataIndex) {
+ if (dataIndex != null) {
+ var name_1 = this.getData().getName(dataIndex);
+ var geo = this.coordinateSystem;
+ var region = geo.getRegion(name_1);
+ return region && geo.dataToPoint(region.getCenter());
+ }
+ };
+ return _this;
+ }
+ MapSeries2.prototype.getInitialData = function(option) {
+ var data = createSeriesDataSimply(this, {
+ coordDimensions: ["value"],
+ encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
+ });
+ var dataNameIndexMap = createHashMap();
+ var toAppendItems = [];
+ for (var i = 0, len2 = data.count(); i < len2; i++) {
+ var name_2 = data.getName(i);
+ dataNameIndexMap.set(name_2, i);
+ }
+ var geoSource = geoSourceManager_default.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);
+ each(geoSource.regions, function(region) {
+ var name = region.name;
+ var dataNameIdx = dataNameIndexMap.get(name);
+ var specifiedGeoJSONRegionStyle = region.properties && region.properties.echartsStyle;
+ var dataItem;
+ if (dataNameIdx == null) {
+ dataItem = {
+ name
+ };
+ toAppendItems.push(dataItem);
+ } else {
+ dataItem = data.getRawDataItem(dataNameIdx);
+ }
+ specifiedGeoJSONRegionStyle && merge(dataItem, specifiedGeoJSONRegionStyle);
+ });
+ data.appendData(toAppendItems);
+ return data;
+ };
+ MapSeries2.prototype.getHostGeoModel = function() {
+ var geoIndex = this.option.geoIndex;
+ return geoIndex != null ? this.ecModel.getComponent("geo", geoIndex) : null;
+ };
+ MapSeries2.prototype.getMapType = function() {
+ return (this.getHostGeoModel() || this).option.map;
+ };
+ MapSeries2.prototype.getRawValue = function(dataIndex) {
+ var data = this.getData();
+ return data.get(data.mapDimension("value"), dataIndex);
+ };
+ MapSeries2.prototype.getRegionModel = function(regionName) {
+ var data = this.getData();
+ return data.getItemModel(data.indexOfName(regionName));
+ };
+ MapSeries2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var data = this.getData();
+ var value = this.getRawValue(dataIndex);
+ var name = data.getName(dataIndex);
+ var seriesGroup = this.seriesGroup;
+ var seriesNames = [];
+ for (var i = 0; i < seriesGroup.length; i++) {
+ var otherIndex = seriesGroup[i].originalData.indexOfName(name);
+ var valueDim = data.mapDimension("value");
+ if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {
+ seriesNames.push(seriesGroup[i].name);
+ }
+ }
+ return createTooltipMarkup("section", {
+ header: seriesNames.join(", "),
+ noHeader: !seriesNames.length,
+ blocks: [createTooltipMarkup("nameValue", {
+ name,
+ value
+ })]
+ });
+ };
+ MapSeries2.prototype.setZoom = function(zoom) {
+ this.option.zoom = zoom;
+ };
+ MapSeries2.prototype.setCenter = function(center3) {
+ this.option.center = center3;
+ };
+ MapSeries2.prototype.getLegendIcon = function(opt) {
+ var iconType = opt.icon || "roundRect";
+ var icon = createSymbol(iconType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill);
+ icon.setStyle(opt.itemStyle);
+ icon.style.stroke = "none";
+ if (iconType.indexOf("empty") > -1) {
+ icon.style.stroke = icon.style.fill;
+ icon.style.fill = "#fff";
+ icon.style.lineWidth = 2;
+ }
+ return icon;
+ };
+ MapSeries2.type = "series.map";
+ MapSeries2.dependencies = ["geo"];
+ MapSeries2.layoutMode = "box";
+ MapSeries2.defaultOption = {
+ z: 2,
+ coordinateSystem: "geo",
+ map: "",
+ left: "center",
+ top: "center",
+ aspectScale: null,
+ showLegendSymbol: true,
+ boundingCoords: null,
+ center: null,
+ zoom: 1,
+ scaleLimit: null,
+ selectedMode: true,
+ label: {
+ show: false,
+ color: "#000"
+ },
+ itemStyle: {
+ borderWidth: 0.5,
+ borderColor: "#444",
+ areaColor: "#eee"
+ },
+ emphasis: {
+ label: {
+ show: true,
+ color: "rgb(100,0,0)"
+ },
+ itemStyle: {
+ areaColor: "rgba(255,215,0,0.8)"
+ }
+ },
+ select: {
+ label: {
+ show: true,
+ color: "rgb(100,0,0)"
+ },
+ itemStyle: {
+ color: "rgba(255,215,0,0.8)"
+ }
+ },
+ nameProperty: "name"
+ };
+ return MapSeries2;
+}(Series_default);
+var MapSeries_default = MapSeries;
+
+// node_modules/echarts/lib/chart/map/mapDataStatistic.js
+function dataStatistics(datas, statisticType) {
+ var dataNameMap = {};
+ each(datas, function(data) {
+ data.each(data.mapDimension("value"), function(value, idx) {
+ var mapKey = "ec-" + data.getName(idx);
+ dataNameMap[mapKey] = dataNameMap[mapKey] || [];
+ if (!isNaN(value)) {
+ dataNameMap[mapKey].push(value);
+ }
+ });
+ });
+ return datas[0].map(datas[0].mapDimension("value"), function(value, idx) {
+ var mapKey = "ec-" + datas[0].getName(idx);
+ var sum2 = 0;
+ var min3 = Infinity;
+ var max3 = -Infinity;
+ var len2 = dataNameMap[mapKey].length;
+ for (var i = 0; i < len2; i++) {
+ min3 = Math.min(min3, dataNameMap[mapKey][i]);
+ max3 = Math.max(max3, dataNameMap[mapKey][i]);
+ sum2 += dataNameMap[mapKey][i];
+ }
+ var result;
+ if (statisticType === "min") {
+ result = min3;
+ } else if (statisticType === "max") {
+ result = max3;
+ } else if (statisticType === "average") {
+ result = sum2 / len2;
+ } else {
+ result = sum2;
+ }
+ return len2 === 0 ? NaN : result;
+ });
+}
+function mapDataStatistic(ecModel) {
+ var seriesGroups = {};
+ ecModel.eachSeriesByType("map", function(seriesModel) {
+ var hostGeoModel = seriesModel.getHostGeoModel();
+ var key = hostGeoModel ? "o" + hostGeoModel.id : "i" + seriesModel.getMapType();
+ (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);
+ });
+ each(seriesGroups, function(seriesList, key) {
+ var data = dataStatistics(map(seriesList, function(seriesModel) {
+ return seriesModel.getData();
+ }), seriesList[0].get("mapValueCalculation"));
+ for (var i = 0; i < seriesList.length; i++) {
+ seriesList[i].originalData = seriesList[i].getData();
+ }
+ for (var i = 0; i < seriesList.length; i++) {
+ seriesList[i].seriesGroup = seriesList;
+ seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();
+ seriesList[i].setData(data.cloneShallow());
+ seriesList[i].mainSeries = seriesList[0];
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/map/mapSymbolLayout.js
+function mapSymbolLayout(ecModel) {
+ var processedMapType = {};
+ ecModel.eachSeriesByType("map", function(mapSeries) {
+ var mapType = mapSeries.getMapType();
+ if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {
+ return;
+ }
+ var mapSymbolOffsets = {};
+ each(mapSeries.seriesGroup, function(subMapSeries) {
+ var geo = subMapSeries.coordinateSystem;
+ var data2 = subMapSeries.originalData;
+ if (subMapSeries.get("showLegendSymbol") && ecModel.getComponent("legend")) {
+ data2.each(data2.mapDimension("value"), function(value, idx) {
+ var name = data2.getName(idx);
+ var region = geo.getRegion(name);
+ if (!region || isNaN(value)) {
+ return;
+ }
+ var offset = mapSymbolOffsets[name] || 0;
+ var point = geo.dataToPoint(region.getCenter());
+ mapSymbolOffsets[name] = offset + 1;
+ data2.setItemLayout(idx, {
+ point,
+ offset
+ });
+ });
+ }
+ });
+ var data = mapSeries.getData();
+ data.each(function(idx) {
+ var name = data.getName(idx);
+ var layout5 = data.getItemLayout(idx) || {};
+ layout5.showLabel = !mapSymbolOffsets[name];
+ data.setItemLayout(idx, layout5);
+ });
+ processedMapType[mapType] = true;
+ });
+}
+
+// node_modules/echarts/lib/coord/View.js
+var v2ApplyTransform = applyTransform;
+var View = function(_super) {
+ __extends(View2, _super);
+ function View2(name) {
+ var _this = _super.call(this) || this;
+ _this.type = "view";
+ _this.dimensions = ["x", "y"];
+ _this._roamTransformable = new Transformable_default();
+ _this._rawTransformable = new Transformable_default();
+ _this.name = name;
+ return _this;
+ }
+ View2.prototype.setBoundingRect = function(x, y, width, height) {
+ this._rect = new BoundingRect_default(x, y, width, height);
+ return this._rect;
+ };
+ View2.prototype.getBoundingRect = function() {
+ return this._rect;
+ };
+ View2.prototype.setViewRect = function(x, y, width, height) {
+ this._transformTo(x, y, width, height);
+ this._viewRect = new BoundingRect_default(x, y, width, height);
+ };
+ View2.prototype._transformTo = function(x, y, width, height) {
+ var rect = this.getBoundingRect();
+ var rawTransform = this._rawTransformable;
+ rawTransform.transform = rect.calculateTransform(new BoundingRect_default(x, y, width, height));
+ var rawParent = rawTransform.parent;
+ rawTransform.parent = null;
+ rawTransform.decomposeTransform();
+ rawTransform.parent = rawParent;
+ this._updateTransform();
+ };
+ View2.prototype.setCenter = function(centerCoord, api) {
+ if (!centerCoord) {
+ return;
+ }
+ this._center = [parsePercent2(centerCoord[0], api.getWidth()), parsePercent2(centerCoord[1], api.getHeight())];
+ this._updateCenterAndZoom();
+ };
+ View2.prototype.setZoom = function(zoom) {
+ zoom = zoom || 1;
+ var zoomLimit = this.zoomLimit;
+ if (zoomLimit) {
+ if (zoomLimit.max != null) {
+ zoom = Math.min(zoomLimit.max, zoom);
+ }
+ if (zoomLimit.min != null) {
+ zoom = Math.max(zoomLimit.min, zoom);
+ }
+ }
+ this._zoom = zoom;
+ this._updateCenterAndZoom();
+ };
+ View2.prototype.getDefaultCenter = function() {
+ var rawRect = this.getBoundingRect();
+ var cx = rawRect.x + rawRect.width / 2;
+ var cy = rawRect.y + rawRect.height / 2;
+ return [cx, cy];
+ };
+ View2.prototype.getCenter = function() {
+ return this._center || this.getDefaultCenter();
+ };
+ View2.prototype.getZoom = function() {
+ return this._zoom || 1;
+ };
+ View2.prototype.getRoamTransform = function() {
+ return this._roamTransformable.getLocalTransform();
+ };
+ View2.prototype._updateCenterAndZoom = function() {
+ var rawTransformMatrix = this._rawTransformable.getLocalTransform();
+ var roamTransform = this._roamTransformable;
+ var defaultCenter = this.getDefaultCenter();
+ var center3 = this.getCenter();
+ var zoom = this.getZoom();
+ center3 = applyTransform([], center3, rawTransformMatrix);
+ defaultCenter = applyTransform([], defaultCenter, rawTransformMatrix);
+ roamTransform.originX = center3[0];
+ roamTransform.originY = center3[1];
+ roamTransform.x = defaultCenter[0] - center3[0];
+ roamTransform.y = defaultCenter[1] - center3[1];
+ roamTransform.scaleX = roamTransform.scaleY = zoom;
+ this._updateTransform();
+ };
+ View2.prototype._updateTransform = function() {
+ var roamTransformable = this._roamTransformable;
+ var rawTransformable = this._rawTransformable;
+ rawTransformable.parent = roamTransformable;
+ roamTransformable.updateTransform();
+ rawTransformable.updateTransform();
+ copy2(this.transform || (this.transform = []), rawTransformable.transform || create2());
+ this._rawTransform = rawTransformable.getLocalTransform();
+ this.invTransform = this.invTransform || [];
+ invert(this.invTransform, this.transform);
+ this.decomposeTransform();
+ };
+ View2.prototype.getTransformInfo = function() {
+ var rawTransformable = this._rawTransformable;
+ var roamTransformable = this._roamTransformable;
+ var dummyTransformable2 = new Transformable_default();
+ dummyTransformable2.transform = roamTransformable.transform;
+ dummyTransformable2.decomposeTransform();
+ return {
+ roam: {
+ x: dummyTransformable2.x,
+ y: dummyTransformable2.y,
+ scaleX: dummyTransformable2.scaleX,
+ scaleY: dummyTransformable2.scaleY
+ },
+ raw: {
+ x: rawTransformable.x,
+ y: rawTransformable.y,
+ scaleX: rawTransformable.scaleX,
+ scaleY: rawTransformable.scaleY
+ }
+ };
+ };
+ View2.prototype.getViewRect = function() {
+ return this._viewRect;
+ };
+ View2.prototype.getViewRectAfterRoam = function() {
+ var rect = this.getBoundingRect().clone();
+ rect.applyTransform(this.transform);
+ return rect;
+ };
+ View2.prototype.dataToPoint = function(data, noRoam, out2) {
+ var transform2 = noRoam ? this._rawTransform : this.transform;
+ out2 = out2 || [];
+ return transform2 ? v2ApplyTransform(out2, data, transform2) : copy(out2, data);
+ };
+ View2.prototype.pointToData = function(point) {
+ var invTransform = this.invTransform;
+ return invTransform ? v2ApplyTransform([], point, invTransform) : [point[0], point[1]];
+ };
+ View2.prototype.convertToPixel = function(ecModel, finder, value) {
+ var coordSys = getCoordSys(finder);
+ return coordSys === this ? coordSys.dataToPoint(value) : null;
+ };
+ View2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
+ var coordSys = getCoordSys(finder);
+ return coordSys === this ? coordSys.pointToData(pixel) : null;
+ };
+ View2.prototype.containPoint = function(point) {
+ return this.getViewRectAfterRoam().contain(point[0], point[1]);
+ };
+ View2.dimensions = ["x", "y"];
+ return View2;
+}(Transformable_default);
+function getCoordSys(finder) {
+ var seriesModel = finder.seriesModel;
+ return seriesModel ? seriesModel.coordinateSystem : null;
+}
+var View_default = View;
+
+// node_modules/echarts/lib/coord/geo/Geo.js
+var GEO_DEFAULT_PARAMS = {
+ "geoJSON": {
+ aspectScale: 0.75,
+ invertLongitute: true
+ },
+ "geoSVG": {
+ aspectScale: 1,
+ invertLongitute: false
+ }
+};
+var geo2DDimensions = ["lng", "lat"];
+var Geo = function(_super) {
+ __extends(Geo2, _super);
+ function Geo2(name, map3, opt) {
+ var _this = _super.call(this, name) || this;
+ _this.dimensions = geo2DDimensions;
+ _this.type = "geo";
+ _this._nameCoordMap = createHashMap();
+ _this.map = map3;
+ var projection = opt.projection;
+ var source = geoSourceManager_default.load(map3, opt.nameMap, opt.nameProperty);
+ var resource = geoSourceManager_default.getGeoResource(map3);
+ var resourceType = _this.resourceType = resource ? resource.type : null;
+ var regions = _this.regions = source.regions;
+ var defaultParams = GEO_DEFAULT_PARAMS[resource.type];
+ _this._regionsMap = source.regionsMap;
+ _this.regions = source.regions;
+ if (projection) {
+ if (resourceType === "geoSVG") {
+ if (true) {
+ warn("Map " + map3 + " with SVG source can't use projection. Only GeoJSON source supports projection.");
+ }
+ projection = null;
+ }
+ if (!(projection.project && projection.unproject)) {
+ if (true) {
+ warn("project and unproject must be both provided in the projeciton.");
+ }
+ projection = null;
+ }
+ }
+ _this.projection = projection;
+ var boundingRect;
+ if (projection) {
+ for (var i = 0; i < regions.length; i++) {
+ var regionRect = regions[i].getBoundingRect(projection);
+ boundingRect = boundingRect || regionRect.clone();
+ boundingRect.union(regionRect);
+ }
+ } else {
+ boundingRect = source.boundingRect;
+ }
+ _this.setBoundingRect(boundingRect.x, boundingRect.y, boundingRect.width, boundingRect.height);
+ _this.aspectScale = projection ? 1 : retrieve2(opt.aspectScale, defaultParams.aspectScale);
+ _this._invertLongitute = projection ? false : defaultParams.invertLongitute;
+ return _this;
+ }
+ Geo2.prototype._transformTo = function(x, y, width, height) {
+ var rect = this.getBoundingRect();
+ var invertLongitute = this._invertLongitute;
+ rect = rect.clone();
+ if (invertLongitute) {
+ rect.y = -rect.y - rect.height;
+ }
+ var rawTransformable = this._rawTransformable;
+ rawTransformable.transform = rect.calculateTransform(new BoundingRect_default(x, y, width, height));
+ var rawParent = rawTransformable.parent;
+ rawTransformable.parent = null;
+ rawTransformable.decomposeTransform();
+ rawTransformable.parent = rawParent;
+ if (invertLongitute) {
+ rawTransformable.scaleY = -rawTransformable.scaleY;
+ }
+ this._updateTransform();
+ };
+ Geo2.prototype.getRegion = function(name) {
+ return this._regionsMap.get(name);
+ };
+ Geo2.prototype.getRegionByCoord = function(coord) {
+ var regions = this.regions;
+ for (var i = 0; i < regions.length; i++) {
+ var region = regions[i];
+ if (region.type === "geoJSON" && region.contain(coord)) {
+ return regions[i];
+ }
+ }
+ };
+ Geo2.prototype.addGeoCoord = function(name, geoCoord2) {
+ this._nameCoordMap.set(name, geoCoord2);
+ };
+ Geo2.prototype.getGeoCoord = function(name) {
+ var region = this._regionsMap.get(name);
+ return this._nameCoordMap.get(name) || region && region.getCenter();
+ };
+ Geo2.prototype.dataToPoint = function(data, noRoam, out2) {
+ if (isString(data)) {
+ data = this.getGeoCoord(data);
+ }
+ if (data) {
+ var projection = this.projection;
+ if (projection) {
+ data = projection.project(data);
+ }
+ return data && this.projectedToPoint(data, noRoam, out2);
+ }
+ };
+ Geo2.prototype.pointToData = function(point) {
+ var projection = this.projection;
+ if (projection) {
+ point = projection.unproject(point);
+ }
+ return point && this.pointToProjected(point);
+ };
+ Geo2.prototype.pointToProjected = function(point) {
+ return _super.prototype.pointToData.call(this, point);
+ };
+ Geo2.prototype.projectedToPoint = function(projected, noRoam, out2) {
+ return _super.prototype.dataToPoint.call(this, projected, noRoam, out2);
+ };
+ Geo2.prototype.convertToPixel = function(ecModel, finder, value) {
+ var coordSys = getCoordSys2(finder);
+ return coordSys === this ? coordSys.dataToPoint(value) : null;
+ };
+ Geo2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
+ var coordSys = getCoordSys2(finder);
+ return coordSys === this ? coordSys.pointToData(pixel) : null;
+ };
+ return Geo2;
+}(View_default);
+mixin(Geo, View_default);
+function getCoordSys2(finder) {
+ var geoModel = finder.geoModel;
+ var seriesModel = finder.seriesModel;
+ return geoModel ? geoModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem || (seriesModel.getReferringComponents("geo", SINGLE_REFERRING).models[0] || {}).coordinateSystem : null;
+}
+var Geo_default = Geo;
+
+// node_modules/echarts/lib/coord/geo/geoCreator.js
+function resizeGeo(geoModel, api) {
+ var boundingCoords = geoModel.get("boundingCoords");
+ if (boundingCoords != null) {
+ var leftTop_1 = boundingCoords[0];
+ var rightBottom_1 = boundingCoords[1];
+ if (!(isFinite(leftTop_1[0]) && isFinite(leftTop_1[1]) && isFinite(rightBottom_1[0]) && isFinite(rightBottom_1[1]))) {
+ if (true) {
+ console.error("Invalid boundingCoords");
+ }
+ } else {
+ var projection_1 = this.projection;
+ if (projection_1) {
+ var xMin = leftTop_1[0];
+ var yMin = leftTop_1[1];
+ var xMax = rightBottom_1[0];
+ var yMax = rightBottom_1[1];
+ leftTop_1 = [Infinity, Infinity];
+ rightBottom_1 = [-Infinity, -Infinity];
+ var sampleLine = function(x0, y0, x1, y1) {
+ var dx = x1 - x0;
+ var dy = y1 - y0;
+ for (var i = 0; i <= 100; i++) {
+ var p = i / 100;
+ var pt = projection_1.project([x0 + dx * p, y0 + dy * p]);
+ min(leftTop_1, leftTop_1, pt);
+ max(rightBottom_1, rightBottom_1, pt);
+ }
+ };
+ sampleLine(xMin, yMin, xMax, yMin);
+ sampleLine(xMax, yMin, xMax, yMax);
+ sampleLine(xMax, yMax, xMin, yMax);
+ sampleLine(xMin, yMax, xMax, yMin);
+ }
+ this.setBoundingRect(leftTop_1[0], leftTop_1[1], rightBottom_1[0] - leftTop_1[0], rightBottom_1[1] - leftTop_1[1]);
+ }
+ }
+ var rect = this.getBoundingRect();
+ var centerOption = geoModel.get("layoutCenter");
+ var sizeOption = geoModel.get("layoutSize");
+ var viewWidth = api.getWidth();
+ var viewHeight = api.getHeight();
+ var aspect = rect.width / rect.height * this.aspectScale;
+ var useCenterAndSize = false;
+ var center3;
+ var size;
+ if (centerOption && sizeOption) {
+ center3 = [parsePercent2(centerOption[0], viewWidth), parsePercent2(centerOption[1], viewHeight)];
+ size = parsePercent2(sizeOption, Math.min(viewWidth, viewHeight));
+ if (!isNaN(center3[0]) && !isNaN(center3[1]) && !isNaN(size)) {
+ useCenterAndSize = true;
+ } else {
+ if (true) {
+ console.warn("Given layoutCenter or layoutSize data are invalid. Use left/top/width/height instead.");
+ }
+ }
+ }
+ var viewRect2;
+ if (useCenterAndSize) {
+ viewRect2 = {};
+ if (aspect > 1) {
+ viewRect2.width = size;
+ viewRect2.height = size / aspect;
+ } else {
+ viewRect2.height = size;
+ viewRect2.width = size * aspect;
+ }
+ viewRect2.y = center3[1] - viewRect2.height / 2;
+ viewRect2.x = center3[0] - viewRect2.width / 2;
+ } else {
+ var boxLayoutOption = geoModel.getBoxLayoutParams();
+ boxLayoutOption.aspect = aspect;
+ viewRect2 = getLayoutRect(boxLayoutOption, {
+ width: viewWidth,
+ height: viewHeight
+ });
+ }
+ this.setViewRect(viewRect2.x, viewRect2.y, viewRect2.width, viewRect2.height);
+ this.setCenter(geoModel.get("center"), api);
+ this.setZoom(geoModel.get("zoom"));
+}
+function setGeoCoords(geo, model) {
+ each(model.get("geoCoord"), function(geoCoord2, name) {
+ geo.addGeoCoord(name, geoCoord2);
+ });
+}
+var GeoCreator = function() {
+ function GeoCreator2() {
+ this.dimensions = geo2DDimensions;
+ }
+ GeoCreator2.prototype.create = function(ecModel, api) {
+ var geoList = [];
+ function getCommonGeoProperties(model) {
+ return {
+ nameProperty: model.get("nameProperty"),
+ aspectScale: model.get("aspectScale"),
+ projection: model.get("projection")
+ };
+ }
+ ecModel.eachComponent("geo", function(geoModel, idx) {
+ var mapName = geoModel.get("map");
+ var geo = new Geo_default(mapName + idx, mapName, extend({
+ nameMap: geoModel.get("nameMap")
+ }, getCommonGeoProperties(geoModel)));
+ geo.zoomLimit = geoModel.get("scaleLimit");
+ geoList.push(geo);
+ geoModel.coordinateSystem = geo;
+ geo.model = geoModel;
+ geo.resize = resizeGeo;
+ geo.resize(geoModel, api);
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ var coordSys = seriesModel.get("coordinateSystem");
+ if (coordSys === "geo") {
+ var geoIndex = seriesModel.get("geoIndex") || 0;
+ seriesModel.coordinateSystem = geoList[geoIndex];
+ }
+ });
+ var mapModelGroupBySeries = {};
+ ecModel.eachSeriesByType("map", function(seriesModel) {
+ if (!seriesModel.getHostGeoModel()) {
+ var mapType = seriesModel.getMapType();
+ mapModelGroupBySeries[mapType] = mapModelGroupBySeries[mapType] || [];
+ mapModelGroupBySeries[mapType].push(seriesModel);
+ }
+ });
+ each(mapModelGroupBySeries, function(mapSeries, mapType) {
+ var nameMapList = map(mapSeries, function(singleMapSeries) {
+ return singleMapSeries.get("nameMap");
+ });
+ var geo = new Geo_default(mapType, mapType, extend({
+ nameMap: mergeAll(nameMapList)
+ }, getCommonGeoProperties(mapSeries[0])));
+ geo.zoomLimit = retrieve.apply(null, map(mapSeries, function(singleMapSeries) {
+ return singleMapSeries.get("scaleLimit");
+ }));
+ geoList.push(geo);
+ geo.resize = resizeGeo;
+ geo.resize(mapSeries[0], api);
+ each(mapSeries, function(singleMapSeries) {
+ singleMapSeries.coordinateSystem = geo;
+ setGeoCoords(geo, singleMapSeries);
+ });
+ });
+ return geoList;
+ };
+ GeoCreator2.prototype.getFilledRegions = function(originRegionArr, mapName, nameMap, nameProperty) {
+ var regionsArr = (originRegionArr || []).slice();
+ var dataNameMap = createHashMap();
+ for (var i = 0; i < regionsArr.length; i++) {
+ dataNameMap.set(regionsArr[i].name, regionsArr[i]);
+ }
+ var source = geoSourceManager_default.load(mapName, nameMap, nameProperty);
+ each(source.regions, function(region) {
+ var name = region.name;
+ var regionOption = dataNameMap.get(name);
+ var specifiedGeoJSONRegionStyle = region.properties && region.properties.echartsStyle;
+ if (!regionOption) {
+ regionOption = {
+ name
+ };
+ regionsArr.push(regionOption);
+ }
+ specifiedGeoJSONRegionStyle && merge(regionOption, specifiedGeoJSONRegionStyle);
+ });
+ return regionsArr;
+ };
+ return GeoCreator2;
+}();
+var geoCreator = new GeoCreator();
+var geoCreator_default = geoCreator;
+
+// node_modules/echarts/lib/coord/geo/GeoModel.js
+var GeoModel = function(_super) {
+ __extends(GeoModel2, _super);
+ function GeoModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GeoModel2.type;
+ return _this;
+ }
+ GeoModel2.prototype.init = function(option, parentModel, ecModel) {
+ var source = geoSourceManager_default.getGeoResource(option.map);
+ if (source && source.type === "geoJSON") {
+ var itemStyle = option.itemStyle = option.itemStyle || {};
+ if (!("color" in itemStyle)) {
+ itemStyle.color = "#eee";
+ }
+ }
+ this.mergeDefaultAndTheme(option, ecModel);
+ defaultEmphasis(option, "label", ["show"]);
+ };
+ GeoModel2.prototype.optionUpdated = function() {
+ var _this = this;
+ var option = this.option;
+ option.regions = geoCreator_default.getFilledRegions(option.regions, option.map, option.nameMap, option.nameProperty);
+ var selectedMap = {};
+ this._optionModelMap = reduce(option.regions || [], function(optionModelMap, regionOpt) {
+ var regionName = regionOpt.name;
+ if (regionName) {
+ optionModelMap.set(regionName, new Model_default(regionOpt, _this, _this.ecModel));
+ if (regionOpt.selected) {
+ selectedMap[regionName] = true;
+ }
+ }
+ return optionModelMap;
+ }, createHashMap());
+ if (!option.selectedMap) {
+ option.selectedMap = selectedMap;
+ }
+ };
+ GeoModel2.prototype.getRegionModel = function(name) {
+ return this._optionModelMap.get(name) || new Model_default(null, this, this.ecModel);
+ };
+ GeoModel2.prototype.getFormattedLabel = function(name, status) {
+ var regionModel = this.getRegionModel(name);
+ var formatter = status === "normal" ? regionModel.get(["label", "formatter"]) : regionModel.get(["emphasis", "label", "formatter"]);
+ var params = {
+ name
+ };
+ if (isFunction(formatter)) {
+ params.status = status;
+ return formatter(params);
+ } else if (isString(formatter)) {
+ return formatter.replace("{a}", name != null ? name : "");
+ }
+ };
+ GeoModel2.prototype.setZoom = function(zoom) {
+ this.option.zoom = zoom;
+ };
+ GeoModel2.prototype.setCenter = function(center3) {
+ this.option.center = center3;
+ };
+ GeoModel2.prototype.select = function(name) {
+ var option = this.option;
+ var selectedMode = option.selectedMode;
+ if (!selectedMode) {
+ return;
+ }
+ if (selectedMode !== "multiple") {
+ option.selectedMap = null;
+ }
+ var selectedMap = option.selectedMap || (option.selectedMap = {});
+ selectedMap[name] = true;
+ };
+ GeoModel2.prototype.unSelect = function(name) {
+ var selectedMap = this.option.selectedMap;
+ if (selectedMap) {
+ selectedMap[name] = false;
+ }
+ };
+ GeoModel2.prototype.toggleSelected = function(name) {
+ this[this.isSelected(name) ? "unSelect" : "select"](name);
+ };
+ GeoModel2.prototype.isSelected = function(name) {
+ var selectedMap = this.option.selectedMap;
+ return !!(selectedMap && selectedMap[name]);
+ };
+ GeoModel2.type = "geo";
+ GeoModel2.layoutMode = "box";
+ GeoModel2.defaultOption = {
+ z: 0,
+ show: true,
+ left: "center",
+ top: "center",
+ aspectScale: null,
+ silent: false,
+ map: "",
+ boundingCoords: null,
+ center: null,
+ zoom: 1,
+ scaleLimit: null,
+ label: {
+ show: false,
+ color: "#000"
+ },
+ itemStyle: {
+ borderWidth: 0.5,
+ borderColor: "#444"
+ },
+ emphasis: {
+ label: {
+ show: true,
+ color: "rgb(100,0,0)"
+ },
+ itemStyle: {
+ color: "rgba(255,215,0,0.8)"
+ }
+ },
+ select: {
+ label: {
+ show: true,
+ color: "rgb(100,0,0)"
+ },
+ itemStyle: {
+ color: "rgba(255,215,0,0.8)"
+ }
+ },
+ regions: []
+ };
+ return GeoModel2;
+}(Component_default);
+var GeoModel_default = GeoModel;
+
+// node_modules/echarts/lib/action/roamHelper.js
+function getCenterCoord(view, point) {
+ return view.pointToProjected ? view.pointToProjected(point) : view.pointToData(point);
+}
+function updateCenterAndZoom(view, payload, zoomLimit, api) {
+ var previousZoom = view.getZoom();
+ var center3 = view.getCenter();
+ var zoom = payload.zoom;
+ var point = view.projectedToPoint ? view.projectedToPoint(center3) : view.dataToPoint(center3);
+ if (payload.dx != null && payload.dy != null) {
+ point[0] -= payload.dx;
+ point[1] -= payload.dy;
+ view.setCenter(getCenterCoord(view, point), api);
+ }
+ if (zoom != null) {
+ if (zoomLimit) {
+ var zoomMin = zoomLimit.min || 0;
+ var zoomMax = zoomLimit.max || Infinity;
+ zoom = Math.max(Math.min(previousZoom * zoom, zoomMax), zoomMin) / previousZoom;
+ }
+ view.scaleX *= zoom;
+ view.scaleY *= zoom;
+ var fixX = (payload.originX - view.x) * (zoom - 1);
+ var fixY = (payload.originY - view.y) * (zoom - 1);
+ view.x -= fixX;
+ view.y -= fixY;
+ view.updateTransform();
+ view.setCenter(getCenterCoord(view, point), api);
+ view.setZoom(zoom * previousZoom);
+ }
+ return {
+ center: view.getCenter(),
+ zoom: view.getZoom()
+ };
+}
+
+// node_modules/echarts/lib/component/geo/GeoView.js
+var GeoView = function(_super) {
+ __extends(GeoView2, _super);
+ function GeoView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GeoView2.type;
+ _this.focusBlurEnabled = true;
+ return _this;
+ }
+ GeoView2.prototype.init = function(ecModel, api) {
+ this._api = api;
+ };
+ GeoView2.prototype.render = function(geoModel, ecModel, api, payload) {
+ this._model = geoModel;
+ if (!geoModel.get("show")) {
+ this._mapDraw && this._mapDraw.remove();
+ this._mapDraw = null;
+ return;
+ }
+ if (!this._mapDraw) {
+ this._mapDraw = new MapDraw_default(api);
+ }
+ var mapDraw = this._mapDraw;
+ mapDraw.draw(geoModel, ecModel, api, this, payload);
+ mapDraw.group.on("click", this._handleRegionClick, this);
+ mapDraw.group.silent = geoModel.get("silent");
+ this.group.add(mapDraw.group);
+ this.updateSelectStatus(geoModel, ecModel, api);
+ };
+ GeoView2.prototype._handleRegionClick = function(e2) {
+ var eventData;
+ findEventDispatcher(e2.target, function(current) {
+ return (eventData = getECData(current).eventData) != null;
+ }, true);
+ if (eventData) {
+ this._api.dispatchAction({
+ type: "geoToggleSelect",
+ geoId: this._model.id,
+ name: eventData.name
+ });
+ }
+ };
+ GeoView2.prototype.updateSelectStatus = function(model, ecModel, api) {
+ var _this = this;
+ this._mapDraw.group.traverse(function(node) {
+ var eventData = getECData(node).eventData;
+ if (eventData) {
+ _this._model.isSelected(eventData.name) ? api.enterSelect(node) : api.leaveSelect(node);
+ return true;
+ }
+ });
+ };
+ GeoView2.prototype.findHighDownDispatchers = function(name) {
+ return this._mapDraw && this._mapDraw.findHighDownDispatchers(name, this._model);
+ };
+ GeoView2.prototype.dispose = function() {
+ this._mapDraw && this._mapDraw.remove();
+ };
+ GeoView2.type = "geo";
+ return GeoView2;
+}(Component_default2);
+var GeoView_default = GeoView;
+
+// node_modules/echarts/lib/component/geo/install.js
+function registerMap2(mapName, geoJson, specialAreas) {
+ geoSourceManager_default.registerMap(mapName, geoJson, specialAreas);
+}
+function install10(registers) {
+ registers.registerCoordinateSystem("geo", geoCreator_default);
+ registers.registerComponentModel(GeoModel_default);
+ registers.registerComponentView(GeoView_default);
+ registers.registerImpl("registerMap", registerMap2);
+ registers.registerImpl("getMap", function(mapName) {
+ return geoSourceManager_default.getMapForUser(mapName);
+ });
+ function makeAction(method, actionInfo3) {
+ actionInfo3.update = "geo:updateSelectStatus";
+ registers.registerAction(actionInfo3, function(payload, ecModel) {
+ var selected = {};
+ var allSelected = [];
+ ecModel.eachComponent({
+ mainType: "geo",
+ query: payload
+ }, function(geoModel) {
+ geoModel[method](payload.name);
+ var geo = geoModel.coordinateSystem;
+ each(geo.regions, function(region) {
+ selected[region.name] = geoModel.isSelected(region.name) || false;
+ });
+ var names = [];
+ each(selected, function(v, name) {
+ selected[name] && names.push(name);
+ });
+ allSelected.push({
+ geoIndex: geoModel.componentIndex,
+ name: names
+ });
+ });
+ return {
+ selected,
+ allSelected,
+ name: payload.name
+ };
+ });
+ }
+ makeAction("toggleSelected", {
+ type: "geoToggleSelect",
+ event: "geoselectchanged"
+ });
+ makeAction("select", {
+ type: "geoSelect",
+ event: "geoselected"
+ });
+ makeAction("unSelect", {
+ type: "geoUnSelect",
+ event: "geounselected"
+ });
+ registers.registerAction({
+ type: "geoRoam",
+ event: "geoRoam",
+ update: "updateTransform"
+ }, function(payload, ecModel, api) {
+ var componentType = payload.componentType || "series";
+ ecModel.eachComponent({
+ mainType: componentType,
+ query: payload
+ }, function(componentModel) {
+ var geo = componentModel.coordinateSystem;
+ if (geo.type !== "geo") {
+ return;
+ }
+ var res = updateCenterAndZoom(geo, payload, componentModel.get("scaleLimit"), api);
+ componentModel.setCenter && componentModel.setCenter(res.center);
+ componentModel.setZoom && componentModel.setZoom(res.zoom);
+ if (componentType === "series") {
+ each(componentModel.seriesGroup, function(seriesModel) {
+ seriesModel.setCenter(res.center);
+ seriesModel.setZoom(res.zoom);
+ });
+ }
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/map/install.js
+function install11(registers) {
+ use(install10);
+ registers.registerChartView(MapView_default);
+ registers.registerSeriesModel(MapSeries_default);
+ registers.registerLayout(mapSymbolLayout);
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);
+ createLegacyDataSelectAction("map", registers.registerAction);
+}
+
+// node_modules/echarts/lib/chart/tree/layoutHelper.js
+function init3(inRoot) {
+ var root = inRoot;
+ root.hierNode = {
+ defaultAncestor: null,
+ ancestor: root,
+ prelim: 0,
+ modifier: 0,
+ change: 0,
+ shift: 0,
+ i: 0,
+ thread: null
+ };
+ var nodes = [root];
+ var node;
+ var children;
+ while (node = nodes.pop()) {
+ children = node.children;
+ if (node.isExpand && children.length) {
+ var n = children.length;
+ for (var i = n - 1; i >= 0; i--) {
+ var child = children[i];
+ child.hierNode = {
+ defaultAncestor: null,
+ ancestor: child,
+ prelim: 0,
+ modifier: 0,
+ change: 0,
+ shift: 0,
+ i,
+ thread: null
+ };
+ nodes.push(child);
+ }
+ }
+ }
+}
+function firstWalk(node, separation2) {
+ var children = node.isExpand ? node.children : [];
+ var siblings = node.parentNode.children;
+ var subtreeW = node.hierNode.i ? siblings[node.hierNode.i - 1] : null;
+ if (children.length) {
+ executeShifts(node);
+ var midPoint = (children[0].hierNode.prelim + children[children.length - 1].hierNode.prelim) / 2;
+ if (subtreeW) {
+ node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW);
+ node.hierNode.modifier = node.hierNode.prelim - midPoint;
+ } else {
+ node.hierNode.prelim = midPoint;
+ }
+ } else if (subtreeW) {
+ node.hierNode.prelim = subtreeW.hierNode.prelim + separation2(node, subtreeW);
+ }
+ node.parentNode.hierNode.defaultAncestor = apportion(node, subtreeW, node.parentNode.hierNode.defaultAncestor || siblings[0], separation2);
+}
+function secondWalk(node) {
+ var nodeX = node.hierNode.prelim + node.parentNode.hierNode.modifier;
+ node.setLayout({
+ x: nodeX
+ }, true);
+ node.hierNode.modifier += node.parentNode.hierNode.modifier;
+}
+function separation(cb) {
+ return arguments.length ? cb : defaultSeparation;
+}
+function radialCoordinate(rad, r) {
+ rad -= Math.PI / 2;
+ return {
+ x: r * Math.cos(rad),
+ y: r * Math.sin(rad)
+ };
+}
+function getViewRect2(seriesModel, api) {
+ return getLayoutRect(seriesModel.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+}
+function executeShifts(node) {
+ var children = node.children;
+ var n = children.length;
+ var shift = 0;
+ var change = 0;
+ while (--n >= 0) {
+ var child = children[n];
+ child.hierNode.prelim += shift;
+ child.hierNode.modifier += shift;
+ change += child.hierNode.change;
+ shift += child.hierNode.shift + change;
+ }
+}
+function apportion(subtreeV, subtreeW, ancestor, separation2) {
+ if (subtreeW) {
+ var nodeOutRight = subtreeV;
+ var nodeInRight = subtreeV;
+ var nodeOutLeft = nodeInRight.parentNode.children[0];
+ var nodeInLeft = subtreeW;
+ var sumOutRight = nodeOutRight.hierNode.modifier;
+ var sumInRight = nodeInRight.hierNode.modifier;
+ var sumOutLeft = nodeOutLeft.hierNode.modifier;
+ var sumInLeft = nodeInLeft.hierNode.modifier;
+ while (nodeInLeft = nextRight(nodeInLeft), nodeInRight = nextLeft(nodeInRight), nodeInLeft && nodeInRight) {
+ nodeOutRight = nextRight(nodeOutRight);
+ nodeOutLeft = nextLeft(nodeOutLeft);
+ nodeOutRight.hierNode.ancestor = subtreeV;
+ var shift = nodeInLeft.hierNode.prelim + sumInLeft - nodeInRight.hierNode.prelim - sumInRight + separation2(nodeInLeft, nodeInRight);
+ if (shift > 0) {
+ moveSubtree(nextAncestor(nodeInLeft, subtreeV, ancestor), subtreeV, shift);
+ sumInRight += shift;
+ sumOutRight += shift;
+ }
+ sumInLeft += nodeInLeft.hierNode.modifier;
+ sumInRight += nodeInRight.hierNode.modifier;
+ sumOutRight += nodeOutRight.hierNode.modifier;
+ sumOutLeft += nodeOutLeft.hierNode.modifier;
+ }
+ if (nodeInLeft && !nextRight(nodeOutRight)) {
+ nodeOutRight.hierNode.thread = nodeInLeft;
+ nodeOutRight.hierNode.modifier += sumInLeft - sumOutRight;
+ }
+ if (nodeInRight && !nextLeft(nodeOutLeft)) {
+ nodeOutLeft.hierNode.thread = nodeInRight;
+ nodeOutLeft.hierNode.modifier += sumInRight - sumOutLeft;
+ ancestor = subtreeV;
+ }
+ }
+ return ancestor;
+}
+function nextRight(node) {
+ var children = node.children;
+ return children.length && node.isExpand ? children[children.length - 1] : node.hierNode.thread;
+}
+function nextLeft(node) {
+ var children = node.children;
+ return children.length && node.isExpand ? children[0] : node.hierNode.thread;
+}
+function nextAncestor(nodeInLeft, node, ancestor) {
+ return nodeInLeft.hierNode.ancestor.parentNode === node.parentNode ? nodeInLeft.hierNode.ancestor : ancestor;
+}
+function moveSubtree(wl, wr, shift) {
+ var change = shift / (wr.hierNode.i - wl.hierNode.i);
+ wr.hierNode.change -= change;
+ wr.hierNode.shift += shift;
+ wr.hierNode.modifier += shift;
+ wr.hierNode.prelim += shift;
+ wl.hierNode.change += change;
+}
+function defaultSeparation(node1, node2) {
+ return node1.parentNode === node2.parentNode ? 1 : 2;
+}
+
+// node_modules/echarts/lib/chart/tree/TreeView.js
+var TreeEdgeShape = function() {
+ function TreeEdgeShape2() {
+ this.parentPoint = [];
+ this.childPoints = [];
+ }
+ return TreeEdgeShape2;
+}();
+var TreePath = function(_super) {
+ __extends(TreePath2, _super);
+ function TreePath2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ TreePath2.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ TreePath2.prototype.getDefaultShape = function() {
+ return new TreeEdgeShape();
+ };
+ TreePath2.prototype.buildPath = function(ctx, shape) {
+ var childPoints = shape.childPoints;
+ var childLen = childPoints.length;
+ var parentPoint = shape.parentPoint;
+ var firstChildPos = childPoints[0];
+ var lastChildPos = childPoints[childLen - 1];
+ if (childLen === 1) {
+ ctx.moveTo(parentPoint[0], parentPoint[1]);
+ ctx.lineTo(firstChildPos[0], firstChildPos[1]);
+ return;
+ }
+ var orient = shape.orient;
+ var forkDim = orient === "TB" || orient === "BT" ? 0 : 1;
+ var otherDim = 1 - forkDim;
+ var forkPosition = parsePercent2(shape.forkPosition, 1);
+ var tmpPoint = [];
+ tmpPoint[forkDim] = parentPoint[forkDim];
+ tmpPoint[otherDim] = parentPoint[otherDim] + (lastChildPos[otherDim] - parentPoint[otherDim]) * forkPosition;
+ ctx.moveTo(parentPoint[0], parentPoint[1]);
+ ctx.lineTo(tmpPoint[0], tmpPoint[1]);
+ ctx.moveTo(firstChildPos[0], firstChildPos[1]);
+ tmpPoint[forkDim] = firstChildPos[forkDim];
+ ctx.lineTo(tmpPoint[0], tmpPoint[1]);
+ tmpPoint[forkDim] = lastChildPos[forkDim];
+ ctx.lineTo(tmpPoint[0], tmpPoint[1]);
+ ctx.lineTo(lastChildPos[0], lastChildPos[1]);
+ for (var i = 1; i < childLen - 1; i++) {
+ var point = childPoints[i];
+ ctx.moveTo(point[0], point[1]);
+ tmpPoint[forkDim] = point[forkDim];
+ ctx.lineTo(tmpPoint[0], tmpPoint[1]);
+ }
+ };
+ return TreePath2;
+}(Path_default);
+var TreeView = function(_super) {
+ __extends(TreeView2, _super);
+ function TreeView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TreeView2.type;
+ _this._mainGroup = new Group_default();
+ return _this;
+ }
+ TreeView2.prototype.init = function(ecModel, api) {
+ this._controller = new RoamController_default(api.getZr());
+ this._controllerHost = {
+ target: this.group
+ };
+ this.group.add(this._mainGroup);
+ };
+ TreeView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var layoutInfo = seriesModel.layoutInfo;
+ var group = this._mainGroup;
+ var layout5 = seriesModel.get("layout");
+ if (layout5 === "radial") {
+ group.x = layoutInfo.x + layoutInfo.width / 2;
+ group.y = layoutInfo.y + layoutInfo.height / 2;
+ } else {
+ group.x = layoutInfo.x;
+ group.y = layoutInfo.y;
+ }
+ this._updateViewCoordSys(seriesModel, api);
+ this._updateController(seriesModel, ecModel, api);
+ var oldData = this._data;
+ data.diff(oldData).add(function(newIdx) {
+ if (symbolNeedsDraw2(data, newIdx)) {
+ updateNode(data, newIdx, null, group, seriesModel);
+ }
+ }).update(function(newIdx, oldIdx) {
+ var symbolEl = oldData.getItemGraphicEl(oldIdx);
+ if (!symbolNeedsDraw2(data, newIdx)) {
+ symbolEl && removeNode(oldData, oldIdx, symbolEl, group, seriesModel);
+ return;
+ }
+ updateNode(data, newIdx, symbolEl, group, seriesModel);
+ }).remove(function(oldIdx) {
+ var symbolEl = oldData.getItemGraphicEl(oldIdx);
+ if (symbolEl) {
+ removeNode(oldData, oldIdx, symbolEl, group, seriesModel);
+ }
+ }).execute();
+ this._nodeScaleRatio = seriesModel.get("nodeScaleRatio");
+ this._updateNodeAndLinkScale(seriesModel);
+ if (seriesModel.get("expandAndCollapse") === true) {
+ data.eachItemGraphicEl(function(el, dataIndex) {
+ el.off("click").on("click", function() {
+ api.dispatchAction({
+ type: "treeExpandAndCollapse",
+ seriesId: seriesModel.id,
+ dataIndex
+ });
+ });
+ });
+ }
+ this._data = data;
+ };
+ TreeView2.prototype._updateViewCoordSys = function(seriesModel, api) {
+ var data = seriesModel.getData();
+ var points4 = [];
+ data.each(function(idx) {
+ var layout5 = data.getItemLayout(idx);
+ if (layout5 && !isNaN(layout5.x) && !isNaN(layout5.y)) {
+ points4.push([+layout5.x, +layout5.y]);
+ }
+ });
+ var min3 = [];
+ var max3 = [];
+ fromPoints(points4, min3, max3);
+ var oldMin = this._min;
+ var oldMax = this._max;
+ if (max3[0] - min3[0] === 0) {
+ min3[0] = oldMin ? oldMin[0] : min3[0] - 1;
+ max3[0] = oldMax ? oldMax[0] : max3[0] + 1;
+ }
+ if (max3[1] - min3[1] === 0) {
+ min3[1] = oldMin ? oldMin[1] : min3[1] - 1;
+ max3[1] = oldMax ? oldMax[1] : max3[1] + 1;
+ }
+ var viewCoordSys = seriesModel.coordinateSystem = new View_default();
+ viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
+ viewCoordSys.setBoundingRect(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]);
+ viewCoordSys.setCenter(seriesModel.get("center"), api);
+ viewCoordSys.setZoom(seriesModel.get("zoom"));
+ this.group.attr({
+ x: viewCoordSys.x,
+ y: viewCoordSys.y,
+ scaleX: viewCoordSys.scaleX,
+ scaleY: viewCoordSys.scaleY
+ });
+ this._min = min3;
+ this._max = max3;
+ };
+ TreeView2.prototype._updateController = function(seriesModel, ecModel, api) {
+ var _this = this;
+ var controller = this._controller;
+ var controllerHost = this._controllerHost;
+ var group = this.group;
+ controller.setPointerChecker(function(e2, x, y) {
+ var rect = group.getBoundingRect();
+ rect.applyTransform(group.transform);
+ return rect.contain(x, y) && !onIrrelevantElement(e2, api, seriesModel);
+ });
+ controller.enable(seriesModel.get("roam"));
+ controllerHost.zoomLimit = seriesModel.get("scaleLimit");
+ controllerHost.zoom = seriesModel.coordinateSystem.getZoom();
+ controller.off("pan").off("zoom").on("pan", function(e2) {
+ updateViewOnPan(controllerHost, e2.dx, e2.dy);
+ api.dispatchAction({
+ seriesId: seriesModel.id,
+ type: "treeRoam",
+ dx: e2.dx,
+ dy: e2.dy
+ });
+ }).on("zoom", function(e2) {
+ updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY);
+ api.dispatchAction({
+ seriesId: seriesModel.id,
+ type: "treeRoam",
+ zoom: e2.scale,
+ originX: e2.originX,
+ originY: e2.originY
+ });
+ _this._updateNodeAndLinkScale(seriesModel);
+ api.updateLabelLayout();
+ });
+ };
+ TreeView2.prototype._updateNodeAndLinkScale = function(seriesModel) {
+ var data = seriesModel.getData();
+ var nodeScale = this._getNodeGlobalScale(seriesModel);
+ data.eachItemGraphicEl(function(el, idx) {
+ el.setSymbolScale(nodeScale);
+ });
+ };
+ TreeView2.prototype._getNodeGlobalScale = function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys.type !== "view") {
+ return 1;
+ }
+ var nodeScaleRatio = this._nodeScaleRatio;
+ var groupZoom = coordSys.scaleX || 1;
+ var roamZoom = coordSys.getZoom();
+ var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;
+ return nodeScale / groupZoom;
+ };
+ TreeView2.prototype.dispose = function() {
+ this._controller && this._controller.dispose();
+ this._controllerHost = null;
+ };
+ TreeView2.prototype.remove = function() {
+ this._mainGroup.removeAll();
+ this._data = null;
+ };
+ TreeView2.type = "tree";
+ return TreeView2;
+}(Chart_default);
+function symbolNeedsDraw2(data, dataIndex) {
+ var layout5 = data.getItemLayout(dataIndex);
+ return layout5 && !isNaN(layout5.x) && !isNaN(layout5.y);
+}
+function updateNode(data, dataIndex, symbolEl, group, seriesModel) {
+ var isInit = !symbolEl;
+ var node = data.tree.getNodeByDataIndex(dataIndex);
+ var itemModel = node.getModel();
+ var visualColor = node.getVisual("style").fill;
+ var symbolInnerColor = node.isExpand === false && node.children.length !== 0 ? visualColor : "#fff";
+ var virtualRoot = data.tree.root;
+ var source = node.parentNode === virtualRoot ? node : node.parentNode || node;
+ var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);
+ var sourceLayout = source.getLayout();
+ var sourceOldLayout = sourceSymbolEl ? {
+ x: sourceSymbolEl.__oldX,
+ y: sourceSymbolEl.__oldY,
+ rawX: sourceSymbolEl.__radialOldRawX,
+ rawY: sourceSymbolEl.__radialOldRawY
+ } : sourceLayout;
+ var targetLayout = node.getLayout();
+ if (isInit) {
+ symbolEl = new Symbol_default(data, dataIndex, null, {
+ symbolInnerColor,
+ useNameLabel: true
+ });
+ symbolEl.x = sourceOldLayout.x;
+ symbolEl.y = sourceOldLayout.y;
+ } else {
+ symbolEl.updateData(data, dataIndex, null, {
+ symbolInnerColor,
+ useNameLabel: true
+ });
+ }
+ symbolEl.__radialOldRawX = symbolEl.__radialRawX;
+ symbolEl.__radialOldRawY = symbolEl.__radialRawY;
+ symbolEl.__radialRawX = targetLayout.rawX;
+ symbolEl.__radialRawY = targetLayout.rawY;
+ group.add(symbolEl);
+ data.setItemGraphicEl(dataIndex, symbolEl);
+ symbolEl.__oldX = symbolEl.x;
+ symbolEl.__oldY = symbolEl.y;
+ updateProps(symbolEl, {
+ x: targetLayout.x,
+ y: targetLayout.y
+ }, seriesModel);
+ var symbolPath = symbolEl.getSymbolPath();
+ if (seriesModel.get("layout") === "radial") {
+ var realRoot = virtualRoot.children[0];
+ var rootLayout = realRoot.getLayout();
+ var length_1 = realRoot.children.length;
+ var rad = void 0;
+ var isLeft = void 0;
+ if (targetLayout.x === rootLayout.x && node.isExpand === true && realRoot.children.length) {
+ var center3 = {
+ x: (realRoot.children[0].getLayout().x + realRoot.children[length_1 - 1].getLayout().x) / 2,
+ y: (realRoot.children[0].getLayout().y + realRoot.children[length_1 - 1].getLayout().y) / 2
+ };
+ rad = Math.atan2(center3.y - rootLayout.y, center3.x - rootLayout.x);
+ if (rad < 0) {
+ rad = Math.PI * 2 + rad;
+ }
+ isLeft = center3.x < rootLayout.x;
+ if (isLeft) {
+ rad = rad - Math.PI;
+ }
+ } else {
+ rad = Math.atan2(targetLayout.y - rootLayout.y, targetLayout.x - rootLayout.x);
+ if (rad < 0) {
+ rad = Math.PI * 2 + rad;
+ }
+ if (node.children.length === 0 || node.children.length !== 0 && node.isExpand === false) {
+ isLeft = targetLayout.x < rootLayout.x;
+ if (isLeft) {
+ rad = rad - Math.PI;
+ }
+ } else {
+ isLeft = targetLayout.x > rootLayout.x;
+ if (!isLeft) {
+ rad = rad - Math.PI;
+ }
+ }
+ }
+ var textPosition = isLeft ? "left" : "right";
+ var normalLabelModel = itemModel.getModel("label");
+ var rotate2 = normalLabelModel.get("rotate");
+ var labelRotateRadian = rotate2 * (Math.PI / 180);
+ var textContent = symbolPath.getTextContent();
+ if (textContent) {
+ symbolPath.setTextConfig({
+ position: normalLabelModel.get("position") || textPosition,
+ rotation: rotate2 == null ? -rad : labelRotateRadian,
+ origin: "center"
+ });
+ textContent.setStyle("verticalAlign", "middle");
+ }
+ }
+ var focus = itemModel.get(["emphasis", "focus"]);
+ var focusDataIndices = focus === "relative" ? concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : null;
+ if (focusDataIndices) {
+ getECData(symbolEl).focus = focusDataIndices;
+ }
+ drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group);
+ if (symbolEl.__edge) {
+ symbolEl.onHoverStateChange = function(toState) {
+ if (toState !== "blur") {
+ var parentEl = node.parentNode && data.getItemGraphicEl(node.parentNode.dataIndex);
+ if (!(parentEl && parentEl.hoverState === HOVER_STATE_BLUR)) {
+ setStatesFlag(symbolEl.__edge, toState);
+ }
+ }
+ };
+ }
+}
+function drawEdge(seriesModel, node, virtualRoot, symbolEl, sourceOldLayout, sourceLayout, targetLayout, group) {
+ var itemModel = node.getModel();
+ var edgeShape = seriesModel.get("edgeShape");
+ var layout5 = seriesModel.get("layout");
+ var orient = seriesModel.getOrient();
+ var curvature = seriesModel.get(["lineStyle", "curveness"]);
+ var edgeForkPosition = seriesModel.get("edgeForkPosition");
+ var lineStyle = itemModel.getModel("lineStyle").getLineStyle();
+ var edge = symbolEl.__edge;
+ if (edgeShape === "curve") {
+ if (node.parentNode && node.parentNode !== virtualRoot) {
+ if (!edge) {
+ edge = symbolEl.__edge = new BezierCurve_default({
+ shape: getEdgeShape(layout5, orient, curvature, sourceOldLayout, sourceOldLayout)
+ });
+ }
+ updateProps(edge, {
+ shape: getEdgeShape(layout5, orient, curvature, sourceLayout, targetLayout)
+ }, seriesModel);
+ }
+ } else if (edgeShape === "polyline") {
+ if (layout5 === "orthogonal") {
+ if (node !== virtualRoot && node.children && node.children.length !== 0 && node.isExpand === true) {
+ var children = node.children;
+ var childPoints = [];
+ for (var i = 0; i < children.length; i++) {
+ var childLayout = children[i].getLayout();
+ childPoints.push([childLayout.x, childLayout.y]);
+ }
+ if (!edge) {
+ edge = symbolEl.__edge = new TreePath({
+ shape: {
+ parentPoint: [targetLayout.x, targetLayout.y],
+ childPoints: [[targetLayout.x, targetLayout.y]],
+ orient,
+ forkPosition: edgeForkPosition
+ }
+ });
+ }
+ updateProps(edge, {
+ shape: {
+ parentPoint: [targetLayout.x, targetLayout.y],
+ childPoints
+ }
+ }, seriesModel);
+ }
+ } else {
+ if (true) {
+ throw new Error("The polyline edgeShape can only be used in orthogonal layout");
+ }
+ }
+ }
+ if (edge && !(edgeShape === "polyline" && !node.isExpand)) {
+ edge.useStyle(defaults({
+ strokeNoScale: true,
+ fill: null
+ }, lineStyle));
+ setStatesStylesFromModel(edge, itemModel, "lineStyle");
+ setDefaultStateProxy(edge);
+ group.add(edge);
+ }
+}
+function removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt) {
+ var virtualRoot = data.tree.root;
+ var _a2 = getSourceNode(virtualRoot, node), source = _a2.source, sourceLayout = _a2.sourceLayout;
+ var symbolEl = data.getItemGraphicEl(node.dataIndex);
+ if (!symbolEl) {
+ return;
+ }
+ var sourceSymbolEl = data.getItemGraphicEl(source.dataIndex);
+ var sourceEdge = sourceSymbolEl.__edge;
+ var edge = symbolEl.__edge || (source.isExpand === false || source.children.length === 1 ? sourceEdge : void 0);
+ var edgeShape = seriesModel.get("edgeShape");
+ var layoutOpt = seriesModel.get("layout");
+ var orient = seriesModel.get("orient");
+ var curvature = seriesModel.get(["lineStyle", "curveness"]);
+ if (edge) {
+ if (edgeShape === "curve") {
+ removeElement(edge, {
+ shape: getEdgeShape(layoutOpt, orient, curvature, sourceLayout, sourceLayout),
+ style: {
+ opacity: 0
+ }
+ }, seriesModel, {
+ cb: function() {
+ group.remove(edge);
+ },
+ removeOpt: removeAnimationOpt
+ });
+ } else if (edgeShape === "polyline" && seriesModel.get("layout") === "orthogonal") {
+ removeElement(edge, {
+ shape: {
+ parentPoint: [sourceLayout.x, sourceLayout.y],
+ childPoints: [[sourceLayout.x, sourceLayout.y]]
+ },
+ style: {
+ opacity: 0
+ }
+ }, seriesModel, {
+ cb: function() {
+ group.remove(edge);
+ },
+ removeOpt: removeAnimationOpt
+ });
+ }
+ }
+}
+function getSourceNode(virtualRoot, node) {
+ var source = node.parentNode === virtualRoot ? node : node.parentNode || node;
+ var sourceLayout;
+ while (sourceLayout = source.getLayout(), sourceLayout == null) {
+ source = source.parentNode === virtualRoot ? source : source.parentNode || source;
+ }
+ return {
+ source,
+ sourceLayout
+ };
+}
+function removeNode(data, dataIndex, symbolEl, group, seriesModel) {
+ var node = data.tree.getNodeByDataIndex(dataIndex);
+ var virtualRoot = data.tree.root;
+ var sourceLayout = getSourceNode(virtualRoot, node).sourceLayout;
+ var removeAnimationOpt = {
+ duration: seriesModel.get("animationDurationUpdate"),
+ easing: seriesModel.get("animationEasingUpdate")
+ };
+ removeElement(symbolEl, {
+ x: sourceLayout.x + 1,
+ y: sourceLayout.y + 1
+ }, seriesModel, {
+ cb: function() {
+ group.remove(symbolEl);
+ data.setItemGraphicEl(dataIndex, null);
+ },
+ removeOpt: removeAnimationOpt
+ });
+ symbolEl.fadeOut(null, data.hostModel, {
+ fadeLabel: true,
+ animation: removeAnimationOpt
+ });
+ node.children.forEach(function(childNode) {
+ removeNodeEdge(childNode, data, group, seriesModel, removeAnimationOpt);
+ });
+ removeNodeEdge(node, data, group, seriesModel, removeAnimationOpt);
+}
+function getEdgeShape(layoutOpt, orient, curvature, sourceLayout, targetLayout) {
+ var cpx1;
+ var cpy1;
+ var cpx2;
+ var cpy2;
+ var x1;
+ var x2;
+ var y1;
+ var y2;
+ if (layoutOpt === "radial") {
+ x1 = sourceLayout.rawX;
+ y1 = sourceLayout.rawY;
+ x2 = targetLayout.rawX;
+ y2 = targetLayout.rawY;
+ var radialCoor1 = radialCoordinate(x1, y1);
+ var radialCoor2 = radialCoordinate(x1, y1 + (y2 - y1) * curvature);
+ var radialCoor3 = radialCoordinate(x2, y2 + (y1 - y2) * curvature);
+ var radialCoor4 = radialCoordinate(x2, y2);
+ return {
+ x1: radialCoor1.x || 0,
+ y1: radialCoor1.y || 0,
+ x2: radialCoor4.x || 0,
+ y2: radialCoor4.y || 0,
+ cpx1: radialCoor2.x || 0,
+ cpy1: radialCoor2.y || 0,
+ cpx2: radialCoor3.x || 0,
+ cpy2: radialCoor3.y || 0
+ };
+ } else {
+ x1 = sourceLayout.x;
+ y1 = sourceLayout.y;
+ x2 = targetLayout.x;
+ y2 = targetLayout.y;
+ if (orient === "LR" || orient === "RL") {
+ cpx1 = x1 + (x2 - x1) * curvature;
+ cpy1 = y1;
+ cpx2 = x2 + (x1 - x2) * curvature;
+ cpy2 = y2;
+ }
+ if (orient === "TB" || orient === "BT") {
+ cpx1 = x1;
+ cpy1 = y1 + (y2 - y1) * curvature;
+ cpx2 = x2;
+ cpy2 = y2 + (y1 - y2) * curvature;
+ }
+ }
+ return {
+ x1,
+ y1,
+ x2,
+ y2,
+ cpx1,
+ cpy1,
+ cpx2,
+ cpy2
+ };
+}
+var TreeView_default = TreeView;
+
+// node_modules/echarts/lib/data/helper/linkSeriesData.js
+var inner8 = makeInner();
+function linkSeriesData(opt) {
+ var mainData = opt.mainData;
+ var datas = opt.datas;
+ if (!datas) {
+ datas = {
+ main: mainData
+ };
+ opt.datasAttr = {
+ main: "data"
+ };
+ }
+ opt.datas = opt.mainData = null;
+ linkAll(mainData, datas, opt);
+ each(datas, function(data) {
+ each(mainData.TRANSFERABLE_METHODS, function(methodName) {
+ data.wrapMethod(methodName, curry(transferInjection, opt));
+ });
+ });
+ mainData.wrapMethod("cloneShallow", curry(cloneShallowInjection, opt));
+ each(mainData.CHANGABLE_METHODS, function(methodName) {
+ mainData.wrapMethod(methodName, curry(changeInjection, opt));
+ });
+ assert(datas[mainData.dataType] === mainData);
+}
+function transferInjection(opt, res) {
+ if (isMainData(this)) {
+ var datas = extend({}, inner8(this).datas);
+ datas[this.dataType] = res;
+ linkAll(res, datas, opt);
+ } else {
+ linkSingle(res, this.dataType, inner8(this).mainData, opt);
+ }
+ return res;
+}
+function changeInjection(opt, res) {
+ opt.struct && opt.struct.update();
+ return res;
+}
+function cloneShallowInjection(opt, res) {
+ each(inner8(res).datas, function(data, dataType) {
+ data !== res && linkSingle(data.cloneShallow(), dataType, res, opt);
+ });
+ return res;
+}
+function getLinkedData(dataType) {
+ var mainData = inner8(this).mainData;
+ return dataType == null || mainData == null ? mainData : inner8(mainData).datas[dataType];
+}
+function getLinkedDataAll() {
+ var mainData = inner8(this).mainData;
+ return mainData == null ? [{
+ data: mainData
+ }] : map(keys(inner8(mainData).datas), function(type) {
+ return {
+ type,
+ data: inner8(mainData).datas[type]
+ };
+ });
+}
+function isMainData(data) {
+ return inner8(data).mainData === data;
+}
+function linkAll(mainData, datas, opt) {
+ inner8(mainData).datas = {};
+ each(datas, function(data, dataType) {
+ linkSingle(data, dataType, mainData, opt);
+ });
+}
+function linkSingle(data, dataType, mainData, opt) {
+ inner8(mainData).datas[dataType] = data;
+ inner8(data).mainData = mainData;
+ data.dataType = dataType;
+ if (opt.struct) {
+ data[opt.structAttr] = opt.struct;
+ opt.struct[opt.datasAttr[dataType]] = data;
+ }
+ data.getLinkedData = getLinkedData;
+ data.getLinkedDataAll = getLinkedDataAll;
+}
+var linkSeriesData_default = linkSeriesData;
+
+// node_modules/echarts/lib/data/Tree.js
+var TreeNode = function() {
+ function TreeNode2(name, hostTree) {
+ this.depth = 0;
+ this.height = 0;
+ this.dataIndex = -1;
+ this.children = [];
+ this.viewChildren = [];
+ this.isExpand = false;
+ this.name = name || "";
+ this.hostTree = hostTree;
+ }
+ TreeNode2.prototype.isRemoved = function() {
+ return this.dataIndex < 0;
+ };
+ TreeNode2.prototype.eachNode = function(options, cb, context) {
+ if (isFunction(options)) {
+ context = cb;
+ cb = options;
+ options = null;
+ }
+ options = options || {};
+ if (isString(options)) {
+ options = {
+ order: options
+ };
+ }
+ var order = options.order || "preorder";
+ var children = this[options.attr || "children"];
+ var suppressVisitSub;
+ order === "preorder" && (suppressVisitSub = cb.call(context, this));
+ for (var i = 0; !suppressVisitSub && i < children.length; i++) {
+ children[i].eachNode(options, cb, context);
+ }
+ order === "postorder" && cb.call(context, this);
+ };
+ TreeNode2.prototype.updateDepthAndHeight = function(depth) {
+ var height = 0;
+ this.depth = depth;
+ for (var i = 0; i < this.children.length; i++) {
+ var child = this.children[i];
+ child.updateDepthAndHeight(depth + 1);
+ if (child.height > height) {
+ height = child.height;
+ }
+ }
+ this.height = height + 1;
+ };
+ TreeNode2.prototype.getNodeById = function(id) {
+ if (this.getId() === id) {
+ return this;
+ }
+ for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) {
+ var res = children[i].getNodeById(id);
+ if (res) {
+ return res;
+ }
+ }
+ };
+ TreeNode2.prototype.contains = function(node) {
+ if (node === this) {
+ return true;
+ }
+ for (var i = 0, children = this.children, len2 = children.length; i < len2; i++) {
+ var res = children[i].contains(node);
+ if (res) {
+ return res;
+ }
+ }
+ };
+ TreeNode2.prototype.getAncestors = function(includeSelf) {
+ var ancestors = [];
+ var node = includeSelf ? this : this.parentNode;
+ while (node) {
+ ancestors.push(node);
+ node = node.parentNode;
+ }
+ ancestors.reverse();
+ return ancestors;
+ };
+ TreeNode2.prototype.getAncestorsIndices = function() {
+ var indices = [];
+ var currNode = this;
+ while (currNode) {
+ indices.push(currNode.dataIndex);
+ currNode = currNode.parentNode;
+ }
+ indices.reverse();
+ return indices;
+ };
+ TreeNode2.prototype.getDescendantIndices = function() {
+ var indices = [];
+ this.eachNode(function(childNode) {
+ indices.push(childNode.dataIndex);
+ });
+ return indices;
+ };
+ TreeNode2.prototype.getValue = function(dimension) {
+ var data = this.hostTree.data;
+ return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex);
+ };
+ TreeNode2.prototype.setLayout = function(layout5, merge2) {
+ this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout5, merge2);
+ };
+ TreeNode2.prototype.getLayout = function() {
+ return this.hostTree.data.getItemLayout(this.dataIndex);
+ };
+ TreeNode2.prototype.getModel = function(path) {
+ if (this.dataIndex < 0) {
+ return;
+ }
+ var hostTree = this.hostTree;
+ var itemModel = hostTree.data.getItemModel(this.dataIndex);
+ return itemModel.getModel(path);
+ };
+ TreeNode2.prototype.getLevelModel = function() {
+ return (this.hostTree.levelModels || [])[this.depth];
+ };
+ TreeNode2.prototype.setVisual = function(key, value) {
+ this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);
+ };
+ TreeNode2.prototype.getVisual = function(key) {
+ return this.hostTree.data.getItemVisual(this.dataIndex, key);
+ };
+ TreeNode2.prototype.getRawIndex = function() {
+ return this.hostTree.data.getRawIndex(this.dataIndex);
+ };
+ TreeNode2.prototype.getId = function() {
+ return this.hostTree.data.getId(this.dataIndex);
+ };
+ TreeNode2.prototype.getChildIndex = function() {
+ if (this.parentNode) {
+ var children = this.parentNode.children;
+ for (var i = 0; i < children.length; ++i) {
+ if (children[i] === this) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ return -1;
+ };
+ TreeNode2.prototype.isAncestorOf = function(node) {
+ var parent = node.parentNode;
+ while (parent) {
+ if (parent === this) {
+ return true;
+ }
+ parent = parent.parentNode;
+ }
+ return false;
+ };
+ TreeNode2.prototype.isDescendantOf = function(node) {
+ return node !== this && node.isAncestorOf(this);
+ };
+ return TreeNode2;
+}();
+var Tree = function() {
+ function Tree2(hostModel) {
+ this.type = "tree";
+ this._nodes = [];
+ this.hostModel = hostModel;
+ }
+ Tree2.prototype.eachNode = function(options, cb, context) {
+ this.root.eachNode(options, cb, context);
+ };
+ Tree2.prototype.getNodeByDataIndex = function(dataIndex) {
+ var rawIndex = this.data.getRawIndex(dataIndex);
+ return this._nodes[rawIndex];
+ };
+ Tree2.prototype.getNodeById = function(name) {
+ return this.root.getNodeById(name);
+ };
+ Tree2.prototype.update = function() {
+ var data = this.data;
+ var nodes = this._nodes;
+ for (var i = 0, len2 = nodes.length; i < len2; i++) {
+ nodes[i].dataIndex = -1;
+ }
+ for (var i = 0, len2 = data.count(); i < len2; i++) {
+ nodes[data.getRawIndex(i)].dataIndex = i;
+ }
+ };
+ Tree2.prototype.clearLayouts = function() {
+ this.data.clearItemLayouts();
+ };
+ Tree2.createTree = function(dataRoot, hostModel, beforeLink) {
+ var tree = new Tree2(hostModel);
+ var listData = [];
+ var dimMax = 1;
+ buildHierarchy(dataRoot);
+ function buildHierarchy(dataNode, parentNode2) {
+ var value = dataNode.value;
+ dimMax = Math.max(dimMax, isArray(value) ? value.length : 1);
+ listData.push(dataNode);
+ var node = new TreeNode(convertOptionIdName(dataNode.name, ""), tree);
+ parentNode2 ? addChild(node, parentNode2) : tree.root = node;
+ tree._nodes.push(node);
+ var children = dataNode.children;
+ if (children) {
+ for (var i = 0; i < children.length; i++) {
+ buildHierarchy(children[i], node);
+ }
+ }
+ }
+ tree.root.updateDepthAndHeight(0);
+ var dimensions = prepareSeriesDataSchema(listData, {
+ coordDimensions: ["value"],
+ dimensionsCount: dimMax
+ }).dimensions;
+ var list = new SeriesData_default(dimensions, hostModel);
+ list.initData(listData);
+ beforeLink && beforeLink(list);
+ linkSeriesData_default({
+ mainData: list,
+ struct: tree,
+ structAttr: "tree"
+ });
+ tree.update();
+ return tree;
+ };
+ return Tree2;
+}();
+function addChild(child, node) {
+ var children = node.children;
+ if (child.parentNode === node) {
+ return;
+ }
+ children.push(child);
+ child.parentNode = node;
+}
+var Tree_default = Tree;
+
+// node_modules/echarts/lib/chart/helper/treeHelper.js
+function retrieveTargetInfo(payload, validPayloadTypes, seriesModel) {
+ if (payload && indexOf(validPayloadTypes, payload.type) >= 0) {
+ var root = seriesModel.getData().tree.root;
+ var targetNode = payload.targetNode;
+ if (isString(targetNode)) {
+ targetNode = root.getNodeById(targetNode);
+ }
+ if (targetNode && root.contains(targetNode)) {
+ return {
+ node: targetNode
+ };
+ }
+ var targetNodeId = payload.targetNodeId;
+ if (targetNodeId != null && (targetNode = root.getNodeById(targetNodeId))) {
+ return {
+ node: targetNode
+ };
+ }
+ }
+}
+function getPathToRoot(node) {
+ var path = [];
+ while (node) {
+ node = node.parentNode;
+ node && path.push(node);
+ }
+ return path.reverse();
+}
+function aboveViewRoot(viewRoot, node) {
+ var viewPath = getPathToRoot(viewRoot);
+ return indexOf(viewPath, node) >= 0;
+}
+function wrapTreePathInfo(node, seriesModel) {
+ var treePathInfo = [];
+ while (node) {
+ var nodeDataIndex = node.dataIndex;
+ treePathInfo.push({
+ name: node.name,
+ dataIndex: nodeDataIndex,
+ value: seriesModel.getRawValue(nodeDataIndex)
+ });
+ node = node.parentNode;
+ }
+ treePathInfo.reverse();
+ return treePathInfo;
+}
+
+// node_modules/echarts/lib/chart/tree/TreeSeries.js
+var TreeSeriesModel = function(_super) {
+ __extends(TreeSeriesModel2, _super);
+ function TreeSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.hasSymbolVisual = true;
+ _this.ignoreStyleOnData = true;
+ return _this;
+ }
+ TreeSeriesModel2.prototype.getInitialData = function(option) {
+ var root = {
+ name: option.name,
+ children: option.data
+ };
+ var leaves = option.leaves || {};
+ var leavesModel = new Model_default(leaves, this, this.ecModel);
+ var tree = Tree_default.createTree(root, this, beforeLink);
+ function beforeLink(nodeData) {
+ nodeData.wrapMethod("getItemModel", function(model, idx) {
+ var node = tree.getNodeByDataIndex(idx);
+ if (!(node && node.children.length && node.isExpand)) {
+ model.parentModel = leavesModel;
+ }
+ return model;
+ });
+ }
+ var treeDepth = 0;
+ tree.eachNode("preorder", function(node) {
+ if (node.depth > treeDepth) {
+ treeDepth = node.depth;
+ }
+ });
+ var expandAndCollapse = option.expandAndCollapse;
+ var expandTreeDepth = expandAndCollapse && option.initialTreeDepth >= 0 ? option.initialTreeDepth : treeDepth;
+ tree.root.eachNode("preorder", function(node) {
+ var item = node.hostTree.data.getRawDataItem(node.dataIndex);
+ node.isExpand = item && item.collapsed != null ? !item.collapsed : node.depth <= expandTreeDepth;
+ });
+ return tree.data;
+ };
+ TreeSeriesModel2.prototype.getOrient = function() {
+ var orient = this.get("orient");
+ if (orient === "horizontal") {
+ orient = "LR";
+ } else if (orient === "vertical") {
+ orient = "TB";
+ }
+ return orient;
+ };
+ TreeSeriesModel2.prototype.setZoom = function(zoom) {
+ this.option.zoom = zoom;
+ };
+ TreeSeriesModel2.prototype.setCenter = function(center3) {
+ this.option.center = center3;
+ };
+ TreeSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var tree = this.getData().tree;
+ var realRoot = tree.root.children[0];
+ var node = tree.getNodeByDataIndex(dataIndex);
+ var value = node.getValue();
+ var name = node.name;
+ while (node && node !== realRoot) {
+ name = node.parentNode.name + "." + name;
+ node = node.parentNode;
+ }
+ return createTooltipMarkup("nameValue", {
+ name,
+ value,
+ noValue: isNaN(value) || value == null
+ });
+ };
+ TreeSeriesModel2.prototype.getDataParams = function(dataIndex) {
+ var params = _super.prototype.getDataParams.apply(this, arguments);
+ var node = this.getData().tree.getNodeByDataIndex(dataIndex);
+ params.treeAncestors = wrapTreePathInfo(node, this);
+ params.collapsed = !node.isExpand;
+ return params;
+ };
+ TreeSeriesModel2.type = "series.tree";
+ TreeSeriesModel2.layoutMode = "box";
+ TreeSeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "view",
+ left: "12%",
+ top: "12%",
+ right: "12%",
+ bottom: "12%",
+ layout: "orthogonal",
+ edgeShape: "curve",
+ edgeForkPosition: "50%",
+ roam: false,
+ nodeScaleRatio: 0.4,
+ center: null,
+ zoom: 1,
+ orient: "LR",
+ symbol: "emptyCircle",
+ symbolSize: 7,
+ expandAndCollapse: true,
+ initialTreeDepth: 2,
+ lineStyle: {
+ color: "#ccc",
+ width: 1.5,
+ curveness: 0.5
+ },
+ itemStyle: {
+ color: "lightsteelblue",
+ borderWidth: 1.5
+ },
+ label: {
+ show: true
+ },
+ animationEasing: "linear",
+ animationDuration: 700,
+ animationDurationUpdate: 500
+ };
+ return TreeSeriesModel2;
+}(Series_default);
+var TreeSeries_default = TreeSeriesModel;
+
+// node_modules/echarts/lib/chart/tree/traversalHelper.js
+function eachAfter(root, callback, separation2) {
+ var nodes = [root];
+ var next = [];
+ var node;
+ while (node = nodes.pop()) {
+ next.push(node);
+ if (node.isExpand) {
+ var children = node.children;
+ if (children.length) {
+ for (var i = 0; i < children.length; i++) {
+ nodes.push(children[i]);
+ }
+ }
+ }
+ }
+ while (node = next.pop()) {
+ callback(node, separation2);
+ }
+}
+function eachBefore(root, callback) {
+ var nodes = [root];
+ var node;
+ while (node = nodes.pop()) {
+ callback(node);
+ if (node.isExpand) {
+ var children = node.children;
+ if (children.length) {
+ for (var i = children.length - 1; i >= 0; i--) {
+ nodes.push(children[i]);
+ }
+ }
+ }
+ }
+}
+
+// node_modules/echarts/lib/chart/tree/treeLayout.js
+function treeLayout(ecModel, api) {
+ ecModel.eachSeriesByType("tree", function(seriesModel) {
+ commonLayout(seriesModel, api);
+ });
+}
+function commonLayout(seriesModel, api) {
+ var layoutInfo = getViewRect2(seriesModel, api);
+ seriesModel.layoutInfo = layoutInfo;
+ var layout5 = seriesModel.get("layout");
+ var width = 0;
+ var height = 0;
+ var separation2 = null;
+ if (layout5 === "radial") {
+ width = 2 * Math.PI;
+ height = Math.min(layoutInfo.height, layoutInfo.width) / 2;
+ separation2 = separation(function(node1, node2) {
+ return (node1.parentNode === node2.parentNode ? 1 : 2) / node1.depth;
+ });
+ } else {
+ width = layoutInfo.width;
+ height = layoutInfo.height;
+ separation2 = separation();
+ }
+ var virtualRoot = seriesModel.getData().tree.root;
+ var realRoot = virtualRoot.children[0];
+ if (realRoot) {
+ init3(virtualRoot);
+ eachAfter(realRoot, firstWalk, separation2);
+ virtualRoot.hierNode.modifier = -realRoot.hierNode.prelim;
+ eachBefore(realRoot, secondWalk);
+ var left_1 = realRoot;
+ var right_1 = realRoot;
+ var bottom_1 = realRoot;
+ eachBefore(realRoot, function(node) {
+ var x = node.getLayout().x;
+ if (x < left_1.getLayout().x) {
+ left_1 = node;
+ }
+ if (x > right_1.getLayout().x) {
+ right_1 = node;
+ }
+ if (node.depth > bottom_1.depth) {
+ bottom_1 = node;
+ }
+ });
+ var delta = left_1 === right_1 ? 1 : separation2(left_1, right_1) / 2;
+ var tx_1 = delta - left_1.getLayout().x;
+ var kx_1 = 0;
+ var ky_1 = 0;
+ var coorX_1 = 0;
+ var coorY_1 = 0;
+ if (layout5 === "radial") {
+ kx_1 = width / (right_1.getLayout().x + delta + tx_1);
+ ky_1 = height / (bottom_1.depth - 1 || 1);
+ eachBefore(realRoot, function(node) {
+ coorX_1 = (node.getLayout().x + tx_1) * kx_1;
+ coorY_1 = (node.depth - 1) * ky_1;
+ var finalCoor = radialCoordinate(coorX_1, coorY_1);
+ node.setLayout({
+ x: finalCoor.x,
+ y: finalCoor.y,
+ rawX: coorX_1,
+ rawY: coorY_1
+ }, true);
+ });
+ } else {
+ var orient_1 = seriesModel.getOrient();
+ if (orient_1 === "RL" || orient_1 === "LR") {
+ ky_1 = height / (right_1.getLayout().x + delta + tx_1);
+ kx_1 = width / (bottom_1.depth - 1 || 1);
+ eachBefore(realRoot, function(node) {
+ coorY_1 = (node.getLayout().x + tx_1) * ky_1;
+ coorX_1 = orient_1 === "LR" ? (node.depth - 1) * kx_1 : width - (node.depth - 1) * kx_1;
+ node.setLayout({
+ x: coorX_1,
+ y: coorY_1
+ }, true);
+ });
+ } else if (orient_1 === "TB" || orient_1 === "BT") {
+ kx_1 = width / (right_1.getLayout().x + delta + tx_1);
+ ky_1 = height / (bottom_1.depth - 1 || 1);
+ eachBefore(realRoot, function(node) {
+ coorX_1 = (node.getLayout().x + tx_1) * kx_1;
+ coorY_1 = orient_1 === "TB" ? (node.depth - 1) * ky_1 : height - (node.depth - 1) * ky_1;
+ node.setLayout({
+ x: coorX_1,
+ y: coorY_1
+ }, true);
+ });
+ }
+ }
+ }
+}
+
+// node_modules/echarts/lib/chart/tree/treeVisual.js
+function treeVisual(ecModel) {
+ ecModel.eachSeriesByType("tree", function(seriesModel) {
+ var data = seriesModel.getData();
+ var tree = data.tree;
+ tree.eachNode(function(node) {
+ var model = node.getModel();
+ var style = model.getModel("itemStyle").getItemStyle();
+ var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style");
+ extend(existsStyle, style);
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/tree/treeAction.js
+function installTreeAction(registers) {
+ registers.registerAction({
+ type: "treeExpandAndCollapse",
+ event: "treeExpandAndCollapse",
+ update: "update"
+ }, function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "tree",
+ query: payload
+ }, function(seriesModel) {
+ var dataIndex = payload.dataIndex;
+ var tree = seriesModel.getData().tree;
+ var node = tree.getNodeByDataIndex(dataIndex);
+ node.isExpand = !node.isExpand;
+ });
+ });
+ registers.registerAction({
+ type: "treeRoam",
+ event: "treeRoam",
+ update: "none"
+ }, function(payload, ecModel, api) {
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "tree",
+ query: payload
+ }, function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ var res = updateCenterAndZoom(coordSys, payload, void 0, api);
+ seriesModel.setCenter && seriesModel.setCenter(res.center);
+ seriesModel.setZoom && seriesModel.setZoom(res.zoom);
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/tree/install.js
+function install12(registers) {
+ registers.registerChartView(TreeView_default);
+ registers.registerSeriesModel(TreeSeries_default);
+ registers.registerLayout(treeLayout);
+ registers.registerVisual(treeVisual);
+ installTreeAction(registers);
+}
+
+// node_modules/echarts/lib/chart/treemap/treemapAction.js
+var actionTypes = ["treemapZoomToNode", "treemapRender", "treemapMove"];
+function installTreemapAction(registers) {
+ for (var i = 0; i < actionTypes.length; i++) {
+ registers.registerAction({
+ type: actionTypes[i],
+ update: "updateView"
+ }, noop);
+ }
+ registers.registerAction({
+ type: "treemapRootToNode",
+ update: "updateView"
+ }, function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "treemap",
+ query: payload
+ }, handleRootToNode);
+ function handleRootToNode(model, index) {
+ var types = ["treemapZoomToNode", "treemapRootToNode"];
+ var targetInfo = retrieveTargetInfo(payload, types, model);
+ if (targetInfo) {
+ var originViewRoot = model.getViewRoot();
+ if (originViewRoot) {
+ payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
+ }
+ model.resetViewRoot(targetInfo.node);
+ }
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/helper/enableAriaDecalForTree.js
+function enableAriaDecalForTree(seriesModel) {
+ var data = seriesModel.getData();
+ var tree = data.tree;
+ var decalPaletteScope2 = {};
+ tree.eachNode(function(node) {
+ var current = node;
+ while (current && current.depth > 1) {
+ current = current.parentNode;
+ }
+ var decal = getDecalFromPalette(seriesModel.ecModel, current.name || current.dataIndex + "", decalPaletteScope2);
+ node.setVisual("decal", decal);
+ });
+}
+
+// node_modules/echarts/lib/chart/treemap/TreemapSeries.js
+var TreemapSeriesModel = function(_super) {
+ __extends(TreemapSeriesModel2, _super);
+ function TreemapSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TreemapSeriesModel2.type;
+ _this.preventUsingHoverLayer = true;
+ return _this;
+ }
+ TreemapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ var root = {
+ name: option.name,
+ children: option.data
+ };
+ completeTreeValue(root);
+ var levels = option.levels || [];
+ var designatedVisualItemStyle = this.designatedVisualItemStyle = {};
+ var designatedVisualModel = new Model_default({
+ itemStyle: designatedVisualItemStyle
+ }, this, ecModel);
+ levels = option.levels = setDefault(levels, ecModel);
+ var levelModels = map(levels || [], function(levelDefine) {
+ return new Model_default(levelDefine, designatedVisualModel, ecModel);
+ }, this);
+ var tree = Tree_default.createTree(root, this, beforeLink);
+ function beforeLink(nodeData) {
+ nodeData.wrapMethod("getItemModel", function(model, idx) {
+ var node = tree.getNodeByDataIndex(idx);
+ var levelModel = node ? levelModels[node.depth] : null;
+ model.parentModel = levelModel || designatedVisualModel;
+ return model;
+ });
+ }
+ return tree.data;
+ };
+ TreemapSeriesModel2.prototype.optionUpdated = function() {
+ this.resetViewRoot();
+ };
+ TreemapSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var data = this.getData();
+ var value = this.getRawValue(dataIndex);
+ var name = data.getName(dataIndex);
+ return createTooltipMarkup("nameValue", {
+ name,
+ value
+ });
+ };
+ TreemapSeriesModel2.prototype.getDataParams = function(dataIndex) {
+ var params = _super.prototype.getDataParams.apply(this, arguments);
+ var node = this.getData().tree.getNodeByDataIndex(dataIndex);
+ params.treeAncestors = wrapTreePathInfo(node, this);
+ params.treePathInfo = params.treeAncestors;
+ return params;
+ };
+ TreemapSeriesModel2.prototype.setLayoutInfo = function(layoutInfo) {
+ this.layoutInfo = this.layoutInfo || {};
+ extend(this.layoutInfo, layoutInfo);
+ };
+ TreemapSeriesModel2.prototype.mapIdToIndex = function(id) {
+ var idIndexMap = this._idIndexMap;
+ if (!idIndexMap) {
+ idIndexMap = this._idIndexMap = createHashMap();
+ this._idIndexMapCount = 0;
+ }
+ var index = idIndexMap.get(id);
+ if (index == null) {
+ idIndexMap.set(id, index = this._idIndexMapCount++);
+ }
+ return index;
+ };
+ TreemapSeriesModel2.prototype.getViewRoot = function() {
+ return this._viewRoot;
+ };
+ TreemapSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
+ viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
+ var root = this.getRawData().tree.root;
+ if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
+ this._viewRoot = root;
+ }
+ };
+ TreemapSeriesModel2.prototype.enableAriaDecal = function() {
+ enableAriaDecalForTree(this);
+ };
+ TreemapSeriesModel2.type = "series.treemap";
+ TreemapSeriesModel2.layoutMode = "box";
+ TreemapSeriesModel2.defaultOption = {
+ progressive: 0,
+ left: "center",
+ top: "middle",
+ width: "80%",
+ height: "80%",
+ sort: true,
+ clipWindow: "origin",
+ squareRatio: 0.5 * (1 + Math.sqrt(5)),
+ leafDepth: null,
+ drillDownIcon: "\u25B6",
+ zoomToNodeRatio: 0.32 * 0.32,
+ scaleLimit: null,
+ roam: true,
+ nodeClick: "zoomToNode",
+ animation: true,
+ animationDurationUpdate: 900,
+ animationEasing: "quinticInOut",
+ breadcrumb: {
+ show: true,
+ height: 22,
+ left: "center",
+ top: "bottom",
+ emptyItemWidth: 25,
+ itemStyle: {
+ color: "rgba(0,0,0,0.7)",
+ textStyle: {
+ color: "#fff"
+ }
+ },
+ emphasis: {
+ itemStyle: {
+ color: "rgba(0,0,0,0.9)"
+ }
+ }
+ },
+ label: {
+ show: true,
+ distance: 0,
+ padding: 5,
+ position: "inside",
+ color: "#fff",
+ overflow: "truncate"
+ },
+ upperLabel: {
+ show: false,
+ position: [0, "50%"],
+ height: 20,
+ overflow: "truncate",
+ verticalAlign: "middle"
+ },
+ itemStyle: {
+ color: null,
+ colorAlpha: null,
+ colorSaturation: null,
+ borderWidth: 0,
+ gapWidth: 0,
+ borderColor: "#fff",
+ borderColorSaturation: null
+ },
+ emphasis: {
+ upperLabel: {
+ show: true,
+ position: [0, "50%"],
+ overflow: "truncate",
+ verticalAlign: "middle"
+ }
+ },
+ visualDimension: 0,
+ visualMin: null,
+ visualMax: null,
+ color: [],
+ colorAlpha: null,
+ colorSaturation: null,
+ colorMappingBy: "index",
+ visibleMin: 10,
+ childrenVisibleMin: null,
+ levels: []
+ };
+ return TreemapSeriesModel2;
+}(Series_default);
+function completeTreeValue(dataNode) {
+ var sum2 = 0;
+ each(dataNode.children, function(child) {
+ completeTreeValue(child);
+ var childValue = child.value;
+ isArray(childValue) && (childValue = childValue[0]);
+ sum2 += childValue;
+ });
+ var thisValue = dataNode.value;
+ if (isArray(thisValue)) {
+ thisValue = thisValue[0];
+ }
+ if (thisValue == null || isNaN(thisValue)) {
+ thisValue = sum2;
+ }
+ if (thisValue < 0) {
+ thisValue = 0;
+ }
+ isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
+}
+function setDefault(levels, ecModel) {
+ var globalColorList = normalizeToArray(ecModel.get("color"));
+ var globalDecalList = normalizeToArray(ecModel.get(["aria", "decal", "decals"]));
+ if (!globalColorList) {
+ return;
+ }
+ levels = levels || [];
+ var hasColorDefine;
+ var hasDecalDefine;
+ each(levels, function(levelDefine) {
+ var model = new Model_default(levelDefine);
+ var modelColor = model.get("color");
+ var modelDecal = model.get("decal");
+ if (model.get(["itemStyle", "color"]) || modelColor && modelColor !== "none") {
+ hasColorDefine = true;
+ }
+ if (model.get(["itemStyle", "decal"]) || modelDecal && modelDecal !== "none") {
+ hasDecalDefine = true;
+ }
+ });
+ var level0 = levels[0] || (levels[0] = {});
+ if (!hasColorDefine) {
+ level0.color = globalColorList.slice();
+ }
+ if (!hasDecalDefine && globalDecalList) {
+ level0.decal = globalDecalList.slice();
+ }
+ return levels;
+}
+var TreemapSeries_default = TreemapSeriesModel;
+
+// node_modules/echarts/lib/chart/treemap/Breadcrumb.js
+var TEXT_PADDING = 8;
+var ITEM_GAP = 8;
+var ARRAY_LENGTH = 5;
+var Breadcrumb = function() {
+ function Breadcrumb2(containerGroup) {
+ this.group = new Group_default();
+ containerGroup.add(this.group);
+ }
+ Breadcrumb2.prototype.render = function(seriesModel, api, targetNode, onSelect) {
+ var model = seriesModel.getModel("breadcrumb");
+ var thisGroup = this.group;
+ thisGroup.removeAll();
+ if (!model.get("show") || !targetNode) {
+ return;
+ }
+ var normalStyleModel = model.getModel("itemStyle");
+ var emphasisModel = model.getModel("emphasis");
+ var textStyleModel = normalStyleModel.getModel("textStyle");
+ var emphasisTextStyleModel = emphasisModel.getModel(["itemStyle", "textStyle"]);
+ var layoutParam = {
+ pos: {
+ left: model.get("left"),
+ right: model.get("right"),
+ top: model.get("top"),
+ bottom: model.get("bottom")
+ },
+ box: {
+ width: api.getWidth(),
+ height: api.getHeight()
+ },
+ emptyItemWidth: model.get("emptyItemWidth"),
+ totalWidth: 0,
+ renderList: []
+ };
+ this._prepare(targetNode, layoutParam, textStyleModel);
+ this._renderContent(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect);
+ positionElement(thisGroup, layoutParam.pos, layoutParam.box);
+ };
+ Breadcrumb2.prototype._prepare = function(targetNode, layoutParam, textStyleModel) {
+ for (var node = targetNode; node; node = node.parentNode) {
+ var text = convertOptionIdName(node.getModel().get("name"), "");
+ var textRect = textStyleModel.getTextRect(text);
+ var itemWidth = Math.max(textRect.width + TEXT_PADDING * 2, layoutParam.emptyItemWidth);
+ layoutParam.totalWidth += itemWidth + ITEM_GAP;
+ layoutParam.renderList.push({
+ node,
+ text,
+ width: itemWidth
+ });
+ }
+ };
+ Breadcrumb2.prototype._renderContent = function(seriesModel, layoutParam, normalStyleModel, emphasisModel, textStyleModel, emphasisTextStyleModel, onSelect) {
+ var lastX = 0;
+ var emptyItemWidth = layoutParam.emptyItemWidth;
+ var height = seriesModel.get(["breadcrumb", "height"]);
+ var availableSize = getAvailableSize(layoutParam.pos, layoutParam.box);
+ var totalWidth = layoutParam.totalWidth;
+ var renderList = layoutParam.renderList;
+ var emphasisItemStyle = emphasisModel.getModel("itemStyle").getItemStyle();
+ for (var i = renderList.length - 1; i >= 0; i--) {
+ var item = renderList[i];
+ var itemNode = item.node;
+ var itemWidth = item.width;
+ var text = item.text;
+ if (totalWidth > availableSize.width) {
+ totalWidth -= itemWidth - emptyItemWidth;
+ itemWidth = emptyItemWidth;
+ text = null;
+ }
+ var el = new Polygon_default({
+ shape: {
+ points: makeItemPoints(lastX, 0, itemWidth, height, i === renderList.length - 1, i === 0)
+ },
+ style: defaults(normalStyleModel.getItemStyle(), {
+ lineJoin: "bevel"
+ }),
+ textContent: new Text_default({
+ style: createTextStyle(textStyleModel, {
+ text
+ })
+ }),
+ textConfig: {
+ position: "inside"
+ },
+ z2: Z2_EMPHASIS_LIFT * 1e4,
+ onclick: curry(onSelect, itemNode)
+ });
+ el.disableLabelAnimation = true;
+ el.getTextContent().ensureState("emphasis").style = createTextStyle(emphasisTextStyleModel, {
+ text
+ });
+ el.ensureState("emphasis").style = emphasisItemStyle;
+ toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ this.group.add(el);
+ packEventData(el, seriesModel, itemNode);
+ lastX += itemWidth + ITEM_GAP;
+ }
+ };
+ Breadcrumb2.prototype.remove = function() {
+ this.group.removeAll();
+ };
+ return Breadcrumb2;
+}();
+function makeItemPoints(x, y, itemWidth, itemHeight, head, tail) {
+ var points4 = [[head ? x : x - ARRAY_LENGTH, y], [x + itemWidth, y], [x + itemWidth, y + itemHeight], [head ? x : x - ARRAY_LENGTH, y + itemHeight]];
+ !tail && points4.splice(2, 0, [x + itemWidth + ARRAY_LENGTH, y + itemHeight / 2]);
+ !head && points4.push([x, y + itemHeight / 2]);
+ return points4;
+}
+function packEventData(el, seriesModel, itemNode) {
+ getECData(el).eventData = {
+ componentType: "series",
+ componentSubType: "treemap",
+ componentIndex: seriesModel.componentIndex,
+ seriesIndex: seriesModel.seriesIndex,
+ seriesName: seriesModel.name,
+ seriesType: "treemap",
+ selfType: "breadcrumb",
+ nodeData: {
+ dataIndex: itemNode && itemNode.dataIndex,
+ name: itemNode && itemNode.name
+ },
+ treePathInfo: itemNode && wrapTreePathInfo(itemNode, seriesModel)
+ };
+}
+var Breadcrumb_default = Breadcrumb;
+
+// node_modules/echarts/lib/util/animation.js
+var AnimationWrap = function() {
+ function AnimationWrap2() {
+ this._storage = [];
+ this._elExistsMap = {};
+ }
+ AnimationWrap2.prototype.add = function(el, target, duration, delay, easing) {
+ if (this._elExistsMap[el.id]) {
+ return false;
+ }
+ this._elExistsMap[el.id] = true;
+ this._storage.push({
+ el,
+ target,
+ duration,
+ delay,
+ easing
+ });
+ return true;
+ };
+ AnimationWrap2.prototype.finished = function(callback) {
+ this._finishedCallback = callback;
+ return this;
+ };
+ AnimationWrap2.prototype.start = function() {
+ var _this = this;
+ var count2 = this._storage.length;
+ var checkTerminate = function() {
+ count2--;
+ if (count2 <= 0) {
+ _this._storage.length = 0;
+ _this._elExistsMap = {};
+ _this._finishedCallback && _this._finishedCallback();
+ }
+ };
+ for (var i = 0, len2 = this._storage.length; i < len2; i++) {
+ var item = this._storage[i];
+ item.el.animateTo(item.target, {
+ duration: item.duration,
+ delay: item.delay,
+ easing: item.easing,
+ setToFinal: true,
+ done: checkTerminate,
+ aborted: checkTerminate
+ });
+ }
+ return this;
+ };
+ return AnimationWrap2;
+}();
+function createWrap() {
+ return new AnimationWrap();
+}
+
+// node_modules/echarts/lib/chart/treemap/TreemapView.js
+var Group2 = Group_default;
+var Rect2 = Rect_default;
+var DRAG_THRESHOLD = 3;
+var PATH_LABEL_NOAMAL = "label";
+var PATH_UPPERLABEL_NORMAL = "upperLabel";
+var Z2_BASE = Z2_EMPHASIS_LIFT * 10;
+var Z2_BG = Z2_EMPHASIS_LIFT * 2;
+var Z2_CONTENT = Z2_EMPHASIS_LIFT * 3;
+var getStateItemStyle = makeStyleMapper([
+ ["fill", "color"],
+ ["stroke", "strokeColor"],
+ ["lineWidth", "strokeWidth"],
+ ["shadowBlur"],
+ ["shadowOffsetX"],
+ ["shadowOffsetY"],
+ ["shadowColor"]
+]);
+var getItemStyleNormal = function(model) {
+ var itemStyle = getStateItemStyle(model);
+ itemStyle.stroke = itemStyle.fill = itemStyle.lineWidth = null;
+ return itemStyle;
+};
+var inner9 = makeInner();
+var TreemapView = function(_super) {
+ __extends(TreemapView2, _super);
+ function TreemapView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TreemapView2.type;
+ _this._state = "ready";
+ _this._storage = createStorage();
+ return _this;
+ }
+ TreemapView2.prototype.render = function(seriesModel, ecModel, api, payload) {
+ var models = ecModel.findComponents({
+ mainType: "series",
+ subType: "treemap",
+ query: payload
+ });
+ if (indexOf(models, seriesModel) < 0) {
+ return;
+ }
+ this.seriesModel = seriesModel;
+ this.api = api;
+ this.ecModel = ecModel;
+ var types = ["treemapZoomToNode", "treemapRootToNode"];
+ var targetInfo = retrieveTargetInfo(payload, types, seriesModel);
+ var payloadType = payload && payload.type;
+ var layoutInfo = seriesModel.layoutInfo;
+ var isInit = !this._oldTree;
+ var thisStorage = this._storage;
+ var reRoot = payloadType === "treemapRootToNode" && targetInfo && thisStorage ? {
+ rootNodeGroup: thisStorage.nodeGroup[targetInfo.node.getRawIndex()],
+ direction: payload.direction
+ } : null;
+ var containerGroup = this._giveContainerGroup(layoutInfo);
+ var hasAnimation = seriesModel.get("animation");
+ var renderResult = this._doRender(containerGroup, seriesModel, reRoot);
+ hasAnimation && !isInit && (!payloadType || payloadType === "treemapZoomToNode" || payloadType === "treemapRootToNode") ? this._doAnimation(containerGroup, renderResult, seriesModel, reRoot) : renderResult.renderFinally();
+ this._resetController(api);
+ this._renderBreadcrumb(seriesModel, api, targetInfo);
+ };
+ TreemapView2.prototype._giveContainerGroup = function(layoutInfo) {
+ var containerGroup = this._containerGroup;
+ if (!containerGroup) {
+ containerGroup = this._containerGroup = new Group2();
+ this._initEvents(containerGroup);
+ this.group.add(containerGroup);
+ }
+ containerGroup.x = layoutInfo.x;
+ containerGroup.y = layoutInfo.y;
+ return containerGroup;
+ };
+ TreemapView2.prototype._doRender = function(containerGroup, seriesModel, reRoot) {
+ var thisTree = seriesModel.getData().tree;
+ var oldTree = this._oldTree;
+ var lastsForAnimation = createStorage();
+ var thisStorage = createStorage();
+ var oldStorage = this._storage;
+ var willInvisibleEls = [];
+ function doRenderNode(thisNode, oldNode, parentGroup, depth) {
+ return renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth);
+ }
+ dualTravel(thisTree.root ? [thisTree.root] : [], oldTree && oldTree.root ? [oldTree.root] : [], containerGroup, thisTree === oldTree || !oldTree, 0);
+ var willDeleteEls = clearStorage(oldStorage);
+ this._oldTree = thisTree;
+ this._storage = thisStorage;
+ if (this._controllerHost) {
+ var _oldRootLayout = this.seriesModel.layoutInfo;
+ var rootLayout = thisTree.root.getLayout();
+ if (rootLayout.width === _oldRootLayout.width && rootLayout.height === _oldRootLayout.height) {
+ this._controllerHost.zoom = 1;
+ }
+ }
+ return {
+ lastsForAnimation,
+ willDeleteEls,
+ renderFinally
+ };
+ function dualTravel(thisViewChildren, oldViewChildren, parentGroup, sameTree, depth) {
+ if (sameTree) {
+ oldViewChildren = thisViewChildren;
+ each(thisViewChildren, function(child, index) {
+ !child.isRemoved() && processNode(index, index);
+ });
+ } else {
+ new DataDiffer_default(oldViewChildren, thisViewChildren, getKey2, getKey2).add(processNode).update(processNode).remove(curry(processNode, null)).execute();
+ }
+ function getKey2(node) {
+ return node.getId();
+ }
+ function processNode(newIndex, oldIndex) {
+ var thisNode = newIndex != null ? thisViewChildren[newIndex] : null;
+ var oldNode = oldIndex != null ? oldViewChildren[oldIndex] : null;
+ var group = doRenderNode(thisNode, oldNode, parentGroup, depth);
+ group && dualTravel(thisNode && thisNode.viewChildren || [], oldNode && oldNode.viewChildren || [], group, sameTree, depth + 1);
+ }
+ }
+ function clearStorage(storage2) {
+ var willDeleteEls2 = createStorage();
+ storage2 && each(storage2, function(store, storageName) {
+ var delEls = willDeleteEls2[storageName];
+ each(store, function(el) {
+ el && (delEls.push(el), inner9(el).willDelete = true);
+ });
+ });
+ return willDeleteEls2;
+ }
+ function renderFinally() {
+ each(willDeleteEls, function(els) {
+ each(els, function(el) {
+ el.parent && el.parent.remove(el);
+ });
+ });
+ each(willInvisibleEls, function(el) {
+ el.invisible = true;
+ el.dirty();
+ });
+ }
+ };
+ TreemapView2.prototype._doAnimation = function(containerGroup, renderResult, seriesModel, reRoot) {
+ var durationOption = seriesModel.get("animationDurationUpdate");
+ var easingOption = seriesModel.get("animationEasing");
+ var duration = (isFunction(durationOption) ? 0 : durationOption) || 0;
+ var easing = (isFunction(easingOption) ? null : easingOption) || "cubicOut";
+ var animationWrap = createWrap();
+ each(renderResult.willDeleteEls, function(store, storageName) {
+ each(store, function(el, rawIndex) {
+ if (el.invisible) {
+ return;
+ }
+ var parent = el.parent;
+ var target;
+ var innerStore = inner9(parent);
+ if (reRoot && reRoot.direction === "drillDown") {
+ target = parent === reRoot.rootNodeGroup ? {
+ shape: {
+ x: 0,
+ y: 0,
+ width: innerStore.nodeWidth,
+ height: innerStore.nodeHeight
+ },
+ style: {
+ opacity: 0
+ }
+ } : {
+ style: {
+ opacity: 0
+ }
+ };
+ } else {
+ var targetX = 0;
+ var targetY = 0;
+ if (!innerStore.willDelete) {
+ targetX = innerStore.nodeWidth / 2;
+ targetY = innerStore.nodeHeight / 2;
+ }
+ target = storageName === "nodeGroup" ? {
+ x: targetX,
+ y: targetY,
+ style: {
+ opacity: 0
+ }
+ } : {
+ shape: {
+ x: targetX,
+ y: targetY,
+ width: 0,
+ height: 0
+ },
+ style: {
+ opacity: 0
+ }
+ };
+ }
+ target && animationWrap.add(el, target, duration, 0, easing);
+ });
+ });
+ each(this._storage, function(store, storageName) {
+ each(store, function(el, rawIndex) {
+ var last = renderResult.lastsForAnimation[storageName][rawIndex];
+ var target = {};
+ if (!last) {
+ return;
+ }
+ if (el instanceof Group_default) {
+ if (last.oldX != null) {
+ target.x = el.x;
+ target.y = el.y;
+ el.x = last.oldX;
+ el.y = last.oldY;
+ }
+ } else {
+ if (last.oldShape) {
+ target.shape = extend({}, el.shape);
+ el.setShape(last.oldShape);
+ }
+ if (last.fadein) {
+ el.setStyle("opacity", 0);
+ target.style = {
+ opacity: 1
+ };
+ } else if (el.style.opacity !== 1) {
+ target.style = {
+ opacity: 1
+ };
+ }
+ }
+ animationWrap.add(el, target, duration, 0, easing);
+ });
+ }, this);
+ this._state = "animating";
+ animationWrap.finished(bind(function() {
+ this._state = "ready";
+ renderResult.renderFinally();
+ }, this)).start();
+ };
+ TreemapView2.prototype._resetController = function(api) {
+ var controller = this._controller;
+ var controllerHost = this._controllerHost;
+ if (!controllerHost) {
+ this._controllerHost = {
+ target: this.group
+ };
+ controllerHost = this._controllerHost;
+ }
+ if (!controller) {
+ controller = this._controller = new RoamController_default(api.getZr());
+ controller.enable(this.seriesModel.get("roam"));
+ controllerHost.zoomLimit = this.seriesModel.get("scaleLimit");
+ controllerHost.zoom = this.seriesModel.get("zoom");
+ controller.on("pan", bind(this._onPan, this));
+ controller.on("zoom", bind(this._onZoom, this));
+ }
+ var rect = new BoundingRect_default(0, 0, api.getWidth(), api.getHeight());
+ controller.setPointerChecker(function(e2, x, y) {
+ return rect.contain(x, y);
+ });
+ };
+ TreemapView2.prototype._clearController = function() {
+ var controller = this._controller;
+ this._controllerHost = null;
+ if (controller) {
+ controller.dispose();
+ controller = null;
+ }
+ };
+ TreemapView2.prototype._onPan = function(e2) {
+ if (this._state !== "animating" && (Math.abs(e2.dx) > DRAG_THRESHOLD || Math.abs(e2.dy) > DRAG_THRESHOLD)) {
+ var root = this.seriesModel.getData().tree.root;
+ if (!root) {
+ return;
+ }
+ var rootLayout = root.getLayout();
+ if (!rootLayout) {
+ return;
+ }
+ this.api.dispatchAction({
+ type: "treemapMove",
+ from: this.uid,
+ seriesId: this.seriesModel.id,
+ rootRect: {
+ x: rootLayout.x + e2.dx,
+ y: rootLayout.y + e2.dy,
+ width: rootLayout.width,
+ height: rootLayout.height
+ }
+ });
+ }
+ };
+ TreemapView2.prototype._onZoom = function(e2) {
+ var mouseX = e2.originX;
+ var mouseY = e2.originY;
+ var zoomDelta = e2.scale;
+ if (this._state !== "animating") {
+ var root = this.seriesModel.getData().tree.root;
+ if (!root) {
+ return;
+ }
+ var rootLayout = root.getLayout();
+ if (!rootLayout) {
+ return;
+ }
+ var rect = new BoundingRect_default(rootLayout.x, rootLayout.y, rootLayout.width, rootLayout.height);
+ var zoomLimit = null;
+ var _controllerHost = this._controllerHost;
+ zoomLimit = _controllerHost.zoomLimit;
+ var newZoom = _controllerHost.zoom = _controllerHost.zoom || 1;
+ newZoom *= zoomDelta;
+ if (zoomLimit) {
+ var zoomMin = zoomLimit.min || 0;
+ var zoomMax = zoomLimit.max || Infinity;
+ newZoom = Math.max(Math.min(zoomMax, newZoom), zoomMin);
+ }
+ var zoomScale = newZoom / _controllerHost.zoom;
+ _controllerHost.zoom = newZoom;
+ var layoutInfo = this.seriesModel.layoutInfo;
+ mouseX -= layoutInfo.x;
+ mouseY -= layoutInfo.y;
+ var m2 = create2();
+ translate(m2, m2, [-mouseX, -mouseY]);
+ scale2(m2, m2, [zoomScale, zoomScale]);
+ translate(m2, m2, [mouseX, mouseY]);
+ rect.applyTransform(m2);
+ this.api.dispatchAction({
+ type: "treemapRender",
+ from: this.uid,
+ seriesId: this.seriesModel.id,
+ rootRect: {
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height
+ }
+ });
+ }
+ };
+ TreemapView2.prototype._initEvents = function(containerGroup) {
+ var _this = this;
+ containerGroup.on("click", function(e2) {
+ if (_this._state !== "ready") {
+ return;
+ }
+ var nodeClick = _this.seriesModel.get("nodeClick", true);
+ if (!nodeClick) {
+ return;
+ }
+ var targetInfo = _this.findTarget(e2.offsetX, e2.offsetY);
+ if (!targetInfo) {
+ return;
+ }
+ var node = targetInfo.node;
+ if (node.getLayout().isLeafRoot) {
+ _this._rootToNode(targetInfo);
+ } else {
+ if (nodeClick === "zoomToNode") {
+ _this._zoomToNode(targetInfo);
+ } else if (nodeClick === "link") {
+ var itemModel = node.hostTree.data.getItemModel(node.dataIndex);
+ var link = itemModel.get("link", true);
+ var linkTarget = itemModel.get("target", true) || "blank";
+ link && windowOpen(link, linkTarget);
+ }
+ }
+ }, this);
+ };
+ TreemapView2.prototype._renderBreadcrumb = function(seriesModel, api, targetInfo) {
+ var _this = this;
+ if (!targetInfo) {
+ targetInfo = seriesModel.get("leafDepth", true) != null ? {
+ node: seriesModel.getViewRoot()
+ } : this.findTarget(api.getWidth() / 2, api.getHeight() / 2);
+ if (!targetInfo) {
+ targetInfo = {
+ node: seriesModel.getData().tree.root
+ };
+ }
+ }
+ (this._breadcrumb || (this._breadcrumb = new Breadcrumb_default(this.group))).render(seriesModel, api, targetInfo.node, function(node) {
+ if (_this._state !== "animating") {
+ aboveViewRoot(seriesModel.getViewRoot(), node) ? _this._rootToNode({
+ node
+ }) : _this._zoomToNode({
+ node
+ });
+ }
+ });
+ };
+ TreemapView2.prototype.remove = function() {
+ this._clearController();
+ this._containerGroup && this._containerGroup.removeAll();
+ this._storage = createStorage();
+ this._state = "ready";
+ this._breadcrumb && this._breadcrumb.remove();
+ };
+ TreemapView2.prototype.dispose = function() {
+ this._clearController();
+ };
+ TreemapView2.prototype._zoomToNode = function(targetInfo) {
+ this.api.dispatchAction({
+ type: "treemapZoomToNode",
+ from: this.uid,
+ seriesId: this.seriesModel.id,
+ targetNode: targetInfo.node
+ });
+ };
+ TreemapView2.prototype._rootToNode = function(targetInfo) {
+ this.api.dispatchAction({
+ type: "treemapRootToNode",
+ from: this.uid,
+ seriesId: this.seriesModel.id,
+ targetNode: targetInfo.node
+ });
+ };
+ TreemapView2.prototype.findTarget = function(x, y) {
+ var targetInfo;
+ var viewRoot = this.seriesModel.getViewRoot();
+ viewRoot.eachNode({
+ attr: "viewChildren",
+ order: "preorder"
+ }, function(node) {
+ var bgEl = this._storage.background[node.getRawIndex()];
+ if (bgEl) {
+ var point = bgEl.transformCoordToLocal(x, y);
+ var shape = bgEl.shape;
+ if (shape.x <= point[0] && point[0] <= shape.x + shape.width && shape.y <= point[1] && point[1] <= shape.y + shape.height) {
+ targetInfo = {
+ node,
+ offsetX: point[0],
+ offsetY: point[1]
+ };
+ } else {
+ return false;
+ }
+ }
+ }, this);
+ return targetInfo;
+ };
+ TreemapView2.type = "treemap";
+ return TreemapView2;
+}(Chart_default);
+function createStorage() {
+ return {
+ nodeGroup: [],
+ background: [],
+ content: []
+ };
+}
+function renderNode(seriesModel, thisStorage, oldStorage, reRoot, lastsForAnimation, willInvisibleEls, thisNode, oldNode, parentGroup, depth) {
+ if (!thisNode) {
+ return;
+ }
+ var thisLayout = thisNode.getLayout();
+ var data = seriesModel.getData();
+ var nodeModel = thisNode.getModel();
+ data.setItemGraphicEl(thisNode.dataIndex, null);
+ if (!thisLayout || !thisLayout.isInView) {
+ return;
+ }
+ var thisWidth = thisLayout.width;
+ var thisHeight = thisLayout.height;
+ var borderWidth = thisLayout.borderWidth;
+ var thisInvisible = thisLayout.invisible;
+ var thisRawIndex = thisNode.getRawIndex();
+ var oldRawIndex = oldNode && oldNode.getRawIndex();
+ var thisViewChildren = thisNode.viewChildren;
+ var upperHeight = thisLayout.upperHeight;
+ var isParent = thisViewChildren && thisViewChildren.length;
+ var itemStyleNormalModel = nodeModel.getModel("itemStyle");
+ var itemStyleEmphasisModel = nodeModel.getModel(["emphasis", "itemStyle"]);
+ var itemStyleBlurModel = nodeModel.getModel(["blur", "itemStyle"]);
+ var itemStyleSelectModel = nodeModel.getModel(["select", "itemStyle"]);
+ var borderRadius = itemStyleNormalModel.get("borderRadius") || 0;
+ var group = giveGraphic("nodeGroup", Group2);
+ if (!group) {
+ return;
+ }
+ parentGroup.add(group);
+ group.x = thisLayout.x || 0;
+ group.y = thisLayout.y || 0;
+ group.markRedraw();
+ inner9(group).nodeWidth = thisWidth;
+ inner9(group).nodeHeight = thisHeight;
+ if (thisLayout.isAboveViewRoot) {
+ return group;
+ }
+ var bg = giveGraphic("background", Rect2, depth, Z2_BG);
+ bg && renderBackground(group, bg, isParent && thisLayout.upperLabelHeight);
+ var emphasisModel = nodeModel.getModel("emphasis");
+ var focus = emphasisModel.get("focus");
+ var blurScope = emphasisModel.get("blurScope");
+ var isDisabled = emphasisModel.get("disabled");
+ var focusOrIndices = focus === "ancestor" ? thisNode.getAncestorsIndices() : focus === "descendant" ? thisNode.getDescendantIndices() : focus;
+ if (isParent) {
+ if (isHighDownDispatcher(group)) {
+ setAsHighDownDispatcher(group, false);
+ }
+ if (bg) {
+ setAsHighDownDispatcher(bg, !isDisabled);
+ data.setItemGraphicEl(thisNode.dataIndex, bg);
+ enableHoverFocus(bg, focusOrIndices, blurScope);
+ }
+ } else {
+ var content = giveGraphic("content", Rect2, depth, Z2_CONTENT);
+ content && renderContent(group, content);
+ bg.disableMorphing = true;
+ if (bg && isHighDownDispatcher(bg)) {
+ setAsHighDownDispatcher(bg, false);
+ }
+ setAsHighDownDispatcher(group, !isDisabled);
+ data.setItemGraphicEl(thisNode.dataIndex, group);
+ var cursorStyle = nodeModel.getShallow("cursor");
+ cursorStyle && content.attr("cursor", cursorStyle);
+ enableHoverFocus(group, focusOrIndices, blurScope);
+ }
+ return group;
+ function renderBackground(group2, bg2, useUpperLabel) {
+ var ecData = getECData(bg2);
+ ecData.dataIndex = thisNode.dataIndex;
+ ecData.seriesIndex = seriesModel.seriesIndex;
+ bg2.setShape({
+ x: 0,
+ y: 0,
+ width: thisWidth,
+ height: thisHeight,
+ r: borderRadius
+ });
+ if (thisInvisible) {
+ processInvisible(bg2);
+ } else {
+ bg2.invisible = false;
+ var style = thisNode.getVisual("style");
+ var visualBorderColor = style.stroke;
+ var normalStyle = getItemStyleNormal(itemStyleNormalModel);
+ normalStyle.fill = visualBorderColor;
+ var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);
+ emphasisStyle.fill = itemStyleEmphasisModel.get("borderColor");
+ var blurStyle = getStateItemStyle(itemStyleBlurModel);
+ blurStyle.fill = itemStyleBlurModel.get("borderColor");
+ var selectStyle = getStateItemStyle(itemStyleSelectModel);
+ selectStyle.fill = itemStyleSelectModel.get("borderColor");
+ if (useUpperLabel) {
+ var upperLabelWidth = thisWidth - 2 * borderWidth;
+ prepareText(
+ bg2,
+ visualBorderColor,
+ style.opacity,
+ {
+ x: borderWidth,
+ y: 0,
+ width: upperLabelWidth,
+ height: upperHeight
+ }
+ );
+ } else {
+ bg2.removeTextContent();
+ }
+ bg2.setStyle(normalStyle);
+ bg2.ensureState("emphasis").style = emphasisStyle;
+ bg2.ensureState("blur").style = blurStyle;
+ bg2.ensureState("select").style = selectStyle;
+ setDefaultStateProxy(bg2);
+ }
+ group2.add(bg2);
+ }
+ function renderContent(group2, content2) {
+ var ecData = getECData(content2);
+ ecData.dataIndex = thisNode.dataIndex;
+ ecData.seriesIndex = seriesModel.seriesIndex;
+ var contentWidth = Math.max(thisWidth - 2 * borderWidth, 0);
+ var contentHeight = Math.max(thisHeight - 2 * borderWidth, 0);
+ content2.culling = true;
+ content2.setShape({
+ x: borderWidth,
+ y: borderWidth,
+ width: contentWidth,
+ height: contentHeight,
+ r: borderRadius
+ });
+ if (thisInvisible) {
+ processInvisible(content2);
+ } else {
+ content2.invisible = false;
+ var nodeStyle = thisNode.getVisual("style");
+ var visualColor = nodeStyle.fill;
+ var normalStyle = getItemStyleNormal(itemStyleNormalModel);
+ normalStyle.fill = visualColor;
+ normalStyle.decal = nodeStyle.decal;
+ var emphasisStyle = getStateItemStyle(itemStyleEmphasisModel);
+ var blurStyle = getStateItemStyle(itemStyleBlurModel);
+ var selectStyle = getStateItemStyle(itemStyleSelectModel);
+ prepareText(content2, visualColor, nodeStyle.opacity, null);
+ content2.setStyle(normalStyle);
+ content2.ensureState("emphasis").style = emphasisStyle;
+ content2.ensureState("blur").style = blurStyle;
+ content2.ensureState("select").style = selectStyle;
+ setDefaultStateProxy(content2);
+ }
+ group2.add(content2);
+ }
+ function processInvisible(element) {
+ !element.invisible && willInvisibleEls.push(element);
+ }
+ function prepareText(rectEl, visualColor, visualOpacity, upperLabelRect) {
+ var normalLabelModel = nodeModel.getModel(upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL);
+ var defaultText = convertOptionIdName(nodeModel.get("name"), null);
+ var isShow = normalLabelModel.getShallow("show");
+ setLabelStyle(rectEl, getLabelStatesModels(nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL), {
+ defaultText: isShow ? defaultText : null,
+ inheritColor: visualColor,
+ defaultOpacity: visualOpacity,
+ labelFetcher: seriesModel,
+ labelDataIndex: thisNode.dataIndex
+ });
+ var textEl = rectEl.getTextContent();
+ if (!textEl) {
+ return;
+ }
+ var textStyle = textEl.style;
+ var textPadding = normalizeCssArray(textStyle.padding || 0);
+ if (upperLabelRect) {
+ rectEl.setTextConfig({
+ layoutRect: upperLabelRect
+ });
+ textEl.disableLabelLayout = true;
+ }
+ textEl.beforeUpdate = function() {
+ var width = Math.max((upperLabelRect ? upperLabelRect.width : rectEl.shape.width) - textPadding[1] - textPadding[3], 0);
+ var height = Math.max((upperLabelRect ? upperLabelRect.height : rectEl.shape.height) - textPadding[0] - textPadding[2], 0);
+ if (textStyle.width !== width || textStyle.height !== height) {
+ textEl.setStyle({
+ width,
+ height
+ });
+ }
+ };
+ textStyle.truncateMinChar = 2;
+ textStyle.lineOverflow = "truncate";
+ addDrillDownIcon(textStyle, upperLabelRect, thisLayout);
+ var textEmphasisState = textEl.getState("emphasis");
+ addDrillDownIcon(textEmphasisState ? textEmphasisState.style : null, upperLabelRect, thisLayout);
+ }
+ function addDrillDownIcon(style, upperLabelRect, thisLayout2) {
+ var text = style ? style.text : null;
+ if (!upperLabelRect && thisLayout2.isLeafRoot && text != null) {
+ var iconChar = seriesModel.get("drillDownIcon", true);
+ style.text = iconChar ? iconChar + " " + text : text;
+ }
+ }
+ function giveGraphic(storageName, Ctor, depth2, z) {
+ var element = oldRawIndex != null && oldStorage[storageName][oldRawIndex];
+ var lasts = lastsForAnimation[storageName];
+ if (element) {
+ oldStorage[storageName][oldRawIndex] = null;
+ prepareAnimationWhenHasOld(lasts, element);
+ } else if (!thisInvisible) {
+ element = new Ctor();
+ if (element instanceof Displayable_default) {
+ element.z2 = calculateZ2(depth2, z);
+ }
+ prepareAnimationWhenNoOld(lasts, element);
+ }
+ return thisStorage[storageName][thisRawIndex] = element;
+ }
+ function prepareAnimationWhenHasOld(lasts, element) {
+ var lastCfg = lasts[thisRawIndex] = {};
+ if (element instanceof Group2) {
+ lastCfg.oldX = element.x;
+ lastCfg.oldY = element.y;
+ } else {
+ lastCfg.oldShape = extend({}, element.shape);
+ }
+ }
+ function prepareAnimationWhenNoOld(lasts, element) {
+ var lastCfg = lasts[thisRawIndex] = {};
+ var parentNode2 = thisNode.parentNode;
+ var isGroup = element instanceof Group_default;
+ if (parentNode2 && (!reRoot || reRoot.direction === "drillDown")) {
+ var parentOldX = 0;
+ var parentOldY = 0;
+ var parentOldBg = lastsForAnimation.background[parentNode2.getRawIndex()];
+ if (!reRoot && parentOldBg && parentOldBg.oldShape) {
+ parentOldX = parentOldBg.oldShape.width;
+ parentOldY = parentOldBg.oldShape.height;
+ }
+ if (isGroup) {
+ lastCfg.oldX = 0;
+ lastCfg.oldY = parentOldY;
+ } else {
+ lastCfg.oldShape = {
+ x: parentOldX,
+ y: parentOldY,
+ width: 0,
+ height: 0
+ };
+ }
+ }
+ lastCfg.fadein = !isGroup;
+ }
+}
+function calculateZ2(depth, z2InLevel) {
+ return depth * Z2_BASE + z2InLevel;
+}
+var TreemapView_default = TreemapView;
+
+// node_modules/echarts/lib/visual/VisualMapping.js
+var each4 = each;
+var isObject4 = isObject;
+var CATEGORY_DEFAULT_VISUAL_INDEX = -1;
+var VisualMapping = function() {
+ function VisualMapping2(option) {
+ var mappingMethod = option.mappingMethod;
+ var visualType = option.type;
+ var thisOption = this.option = clone(option);
+ this.type = visualType;
+ this.mappingMethod = mappingMethod;
+ this._normalizeData = normalizers[mappingMethod];
+ var visualHandler = VisualMapping2.visualHandlers[visualType];
+ this.applyVisual = visualHandler.applyVisual;
+ this.getColorMapper = visualHandler.getColorMapper;
+ this._normalizedToVisual = visualHandler._normalizedToVisual[mappingMethod];
+ if (mappingMethod === "piecewise") {
+ normalizeVisualRange(thisOption);
+ preprocessForPiecewise(thisOption);
+ } else if (mappingMethod === "category") {
+ thisOption.categories ? preprocessForSpecifiedCategory(thisOption) : normalizeVisualRange(thisOption, true);
+ } else {
+ assert(mappingMethod !== "linear" || thisOption.dataExtent);
+ normalizeVisualRange(thisOption);
+ }
+ }
+ VisualMapping2.prototype.mapValueToVisual = function(value) {
+ var normalized = this._normalizeData(value);
+ return this._normalizedToVisual(normalized, value);
+ };
+ VisualMapping2.prototype.getNormalizer = function() {
+ return bind(this._normalizeData, this);
+ };
+ VisualMapping2.listVisualTypes = function() {
+ return keys(VisualMapping2.visualHandlers);
+ };
+ VisualMapping2.isValidType = function(visualType) {
+ return VisualMapping2.visualHandlers.hasOwnProperty(visualType);
+ };
+ VisualMapping2.eachVisual = function(visual, callback, context) {
+ if (isObject(visual)) {
+ each(visual, callback, context);
+ } else {
+ callback.call(context, visual);
+ }
+ };
+ VisualMapping2.mapVisual = function(visual, callback, context) {
+ var isPrimary;
+ var newVisual = isArray(visual) ? [] : isObject(visual) ? {} : (isPrimary = true, null);
+ VisualMapping2.eachVisual(visual, function(v, key) {
+ var newVal = callback.call(context, v, key);
+ isPrimary ? newVisual = newVal : newVisual[key] = newVal;
+ });
+ return newVisual;
+ };
+ VisualMapping2.retrieveVisuals = function(obj) {
+ var ret = {};
+ var hasVisual;
+ obj && each4(VisualMapping2.visualHandlers, function(h, visualType) {
+ if (obj.hasOwnProperty(visualType)) {
+ ret[visualType] = obj[visualType];
+ hasVisual = true;
+ }
+ });
+ return hasVisual ? ret : null;
+ };
+ VisualMapping2.prepareVisualTypes = function(visualTypes) {
+ if (isArray(visualTypes)) {
+ visualTypes = visualTypes.slice();
+ } else if (isObject4(visualTypes)) {
+ var types_1 = [];
+ each4(visualTypes, function(item, type) {
+ types_1.push(type);
+ });
+ visualTypes = types_1;
+ } else {
+ return [];
+ }
+ visualTypes.sort(function(type1, type2) {
+ return type2 === "color" && type1 !== "color" && type1.indexOf("color") === 0 ? 1 : -1;
+ });
+ return visualTypes;
+ };
+ VisualMapping2.dependsOn = function(visualType1, visualType2) {
+ return visualType2 === "color" ? !!(visualType1 && visualType1.indexOf(visualType2) === 0) : visualType1 === visualType2;
+ };
+ VisualMapping2.findPieceIndex = function(value, pieceList, findClosestWhenOutside) {
+ var possibleI;
+ var abs2 = Infinity;
+ for (var i = 0, len2 = pieceList.length; i < len2; i++) {
+ var pieceValue = pieceList[i].value;
+ if (pieceValue != null) {
+ if (pieceValue === value || isString(pieceValue) && pieceValue === value + "") {
+ return i;
+ }
+ findClosestWhenOutside && updatePossible(pieceValue, i);
+ }
+ }
+ for (var i = 0, len2 = pieceList.length; i < len2; i++) {
+ var piece = pieceList[i];
+ var interval = piece.interval;
+ var close_1 = piece.close;
+ if (interval) {
+ if (interval[0] === -Infinity) {
+ if (littleThan(close_1[1], value, interval[1])) {
+ return i;
+ }
+ } else if (interval[1] === Infinity) {
+ if (littleThan(close_1[0], interval[0], value)) {
+ return i;
+ }
+ } else if (littleThan(close_1[0], interval[0], value) && littleThan(close_1[1], value, interval[1])) {
+ return i;
+ }
+ findClosestWhenOutside && updatePossible(interval[0], i);
+ findClosestWhenOutside && updatePossible(interval[1], i);
+ }
+ }
+ if (findClosestWhenOutside) {
+ return value === Infinity ? pieceList.length - 1 : value === -Infinity ? 0 : possibleI;
+ }
+ function updatePossible(val, index) {
+ var newAbs = Math.abs(val - value);
+ if (newAbs < abs2) {
+ abs2 = newAbs;
+ possibleI = index;
+ }
+ }
+ };
+ VisualMapping2.visualHandlers = {
+ color: {
+ applyVisual: makeApplyVisual("color"),
+ getColorMapper: function() {
+ var thisOption = this.option;
+ return bind(thisOption.mappingMethod === "category" ? function(value, isNormalized) {
+ !isNormalized && (value = this._normalizeData(value));
+ return doMapCategory.call(this, value);
+ } : function(value, isNormalized, out2) {
+ var returnRGBArray = !!out2;
+ !isNormalized && (value = this._normalizeData(value));
+ out2 = fastLerp(value, thisOption.parsedVisual, out2);
+ return returnRGBArray ? out2 : stringify(out2, "rgba");
+ }, this);
+ },
+ _normalizedToVisual: {
+ linear: function(normalized) {
+ return stringify(fastLerp(normalized, this.option.parsedVisual), "rgba");
+ },
+ category: doMapCategory,
+ piecewise: function(normalized, value) {
+ var result = getSpecifiedVisual.call(this, value);
+ if (result == null) {
+ result = stringify(fastLerp(normalized, this.option.parsedVisual), "rgba");
+ }
+ return result;
+ },
+ fixed: doMapFixed
+ }
+ },
+ colorHue: makePartialColorVisualHandler(function(color, value) {
+ return modifyHSL(color, value);
+ }),
+ colorSaturation: makePartialColorVisualHandler(function(color, value) {
+ return modifyHSL(color, null, value);
+ }),
+ colorLightness: makePartialColorVisualHandler(function(color, value) {
+ return modifyHSL(color, null, null, value);
+ }),
+ colorAlpha: makePartialColorVisualHandler(function(color, value) {
+ return modifyAlpha(color, value);
+ }),
+ decal: {
+ applyVisual: makeApplyVisual("decal"),
+ _normalizedToVisual: {
+ linear: null,
+ category: doMapCategory,
+ piecewise: null,
+ fixed: null
+ }
+ },
+ opacity: {
+ applyVisual: makeApplyVisual("opacity"),
+ _normalizedToVisual: createNormalizedToNumericVisual([0, 1])
+ },
+ liftZ: {
+ applyVisual: makeApplyVisual("liftZ"),
+ _normalizedToVisual: {
+ linear: doMapFixed,
+ category: doMapFixed,
+ piecewise: doMapFixed,
+ fixed: doMapFixed
+ }
+ },
+ symbol: {
+ applyVisual: function(value, getter, setter) {
+ var symbolCfg = this.mapValueToVisual(value);
+ setter("symbol", symbolCfg);
+ },
+ _normalizedToVisual: {
+ linear: doMapToArray,
+ category: doMapCategory,
+ piecewise: function(normalized, value) {
+ var result = getSpecifiedVisual.call(this, value);
+ if (result == null) {
+ result = doMapToArray.call(this, normalized);
+ }
+ return result;
+ },
+ fixed: doMapFixed
+ }
+ },
+ symbolSize: {
+ applyVisual: makeApplyVisual("symbolSize"),
+ _normalizedToVisual: createNormalizedToNumericVisual([0, 1])
+ }
+ };
+ return VisualMapping2;
+}();
+function preprocessForPiecewise(thisOption) {
+ var pieceList = thisOption.pieceList;
+ thisOption.hasSpecialVisual = false;
+ each(pieceList, function(piece, index) {
+ piece.originIndex = index;
+ if (piece.visual != null) {
+ thisOption.hasSpecialVisual = true;
+ }
+ });
+}
+function preprocessForSpecifiedCategory(thisOption) {
+ var categories = thisOption.categories;
+ var categoryMap = thisOption.categoryMap = {};
+ var visual = thisOption.visual;
+ each4(categories, function(cate, index) {
+ categoryMap[cate] = index;
+ });
+ if (!isArray(visual)) {
+ var visualArr_1 = [];
+ if (isObject(visual)) {
+ each4(visual, function(v, cate) {
+ var index = categoryMap[cate];
+ visualArr_1[index != null ? index : CATEGORY_DEFAULT_VISUAL_INDEX] = v;
+ });
+ } else {
+ visualArr_1[CATEGORY_DEFAULT_VISUAL_INDEX] = visual;
+ }
+ visual = setVisualToOption(thisOption, visualArr_1);
+ }
+ for (var i = categories.length - 1; i >= 0; i--) {
+ if (visual[i] == null) {
+ delete categoryMap[categories[i]];
+ categories.pop();
+ }
+ }
+}
+function normalizeVisualRange(thisOption, isCategory2) {
+ var visual = thisOption.visual;
+ var visualArr = [];
+ if (isObject(visual)) {
+ each4(visual, function(v) {
+ visualArr.push(v);
+ });
+ } else if (visual != null) {
+ visualArr.push(visual);
+ }
+ var doNotNeedPair = {
+ color: 1,
+ symbol: 1
+ };
+ if (!isCategory2 && visualArr.length === 1 && !doNotNeedPair.hasOwnProperty(thisOption.type)) {
+ visualArr[1] = visualArr[0];
+ }
+ setVisualToOption(thisOption, visualArr);
+}
+function makePartialColorVisualHandler(applyValue) {
+ return {
+ applyVisual: function(value, getter, setter) {
+ var colorChannel = this.mapValueToVisual(value);
+ setter("color", applyValue(getter("color"), colorChannel));
+ },
+ _normalizedToVisual: createNormalizedToNumericVisual([0, 1])
+ };
+}
+function doMapToArray(normalized) {
+ var visual = this.option.visual;
+ return visual[Math.round(linearMap(normalized, [0, 1], [0, visual.length - 1], true))] || {};
+}
+function makeApplyVisual(visualType) {
+ return function(value, getter, setter) {
+ setter(visualType, this.mapValueToVisual(value));
+ };
+}
+function doMapCategory(normalized) {
+ var visual = this.option.visual;
+ return visual[this.option.loop && normalized !== CATEGORY_DEFAULT_VISUAL_INDEX ? normalized % visual.length : normalized];
+}
+function doMapFixed() {
+ return this.option.visual[0];
+}
+function createNormalizedToNumericVisual(sourceExtent) {
+ return {
+ linear: function(normalized) {
+ return linearMap(normalized, sourceExtent, this.option.visual, true);
+ },
+ category: doMapCategory,
+ piecewise: function(normalized, value) {
+ var result = getSpecifiedVisual.call(this, value);
+ if (result == null) {
+ result = linearMap(normalized, sourceExtent, this.option.visual, true);
+ }
+ return result;
+ },
+ fixed: doMapFixed
+ };
+}
+function getSpecifiedVisual(value) {
+ var thisOption = this.option;
+ var pieceList = thisOption.pieceList;
+ if (thisOption.hasSpecialVisual) {
+ var pieceIndex = VisualMapping.findPieceIndex(value, pieceList);
+ var piece = pieceList[pieceIndex];
+ if (piece && piece.visual) {
+ return piece.visual[this.type];
+ }
+ }
+}
+function setVisualToOption(thisOption, visualArr) {
+ thisOption.visual = visualArr;
+ if (thisOption.type === "color") {
+ thisOption.parsedVisual = map(visualArr, function(item) {
+ var color = parse(item);
+ if (!color && true) {
+ warn("'" + item + "' is an illegal color, fallback to '#000000'", true);
+ }
+ return color || [0, 0, 0, 1];
+ });
+ }
+ return visualArr;
+}
+var normalizers = {
+ linear: function(value) {
+ return linearMap(value, this.option.dataExtent, [0, 1], true);
+ },
+ piecewise: function(value) {
+ var pieceList = this.option.pieceList;
+ var pieceIndex = VisualMapping.findPieceIndex(value, pieceList, true);
+ if (pieceIndex != null) {
+ return linearMap(pieceIndex, [0, pieceList.length - 1], [0, 1], true);
+ }
+ },
+ category: function(value) {
+ var index = this.option.categories ? this.option.categoryMap[value] : value;
+ return index == null ? CATEGORY_DEFAULT_VISUAL_INDEX : index;
+ },
+ fixed: noop
+};
+function littleThan(close, a, b) {
+ return close ? a <= b : a < b;
+}
+var VisualMapping_default = VisualMapping;
+
+// node_modules/echarts/lib/chart/treemap/treemapVisual.js
+var ITEM_STYLE_NORMAL = "itemStyle";
+var inner10 = makeInner();
+var treemapVisual_default = {
+ seriesType: "treemap",
+ reset: function(seriesModel) {
+ var tree = seriesModel.getData().tree;
+ var root = tree.root;
+ if (root.isRemoved()) {
+ return;
+ }
+ travelTree(
+ root,
+ {},
+ seriesModel.getViewRoot().getAncestors(),
+ seriesModel
+ );
+ }
+};
+function travelTree(node, designatedVisual, viewRootAncestors, seriesModel) {
+ var nodeModel = node.getModel();
+ var nodeLayout = node.getLayout();
+ var data = node.hostTree.data;
+ if (!nodeLayout || nodeLayout.invisible || !nodeLayout.isInView) {
+ return;
+ }
+ var nodeItemStyleModel = nodeModel.getModel(ITEM_STYLE_NORMAL);
+ var visuals = buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel);
+ var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style");
+ var borderColor = nodeItemStyleModel.get("borderColor");
+ var borderColorSaturation = nodeItemStyleModel.get("borderColorSaturation");
+ var thisNodeColor;
+ if (borderColorSaturation != null) {
+ thisNodeColor = calculateColor(visuals);
+ borderColor = calculateBorderColor(borderColorSaturation, thisNodeColor);
+ }
+ existsStyle.stroke = borderColor;
+ var viewChildren = node.viewChildren;
+ if (!viewChildren || !viewChildren.length) {
+ thisNodeColor = calculateColor(visuals);
+ existsStyle.fill = thisNodeColor;
+ } else {
+ var mapping_1 = buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren);
+ each(viewChildren, function(child, index) {
+ if (child.depth >= viewRootAncestors.length || child === viewRootAncestors[child.depth]) {
+ var childVisual = mapVisual(nodeModel, visuals, child, index, mapping_1, seriesModel);
+ travelTree(child, childVisual, viewRootAncestors, seriesModel);
+ }
+ });
+ }
+}
+function buildVisuals(nodeItemStyleModel, designatedVisual, seriesModel) {
+ var visuals = extend({}, designatedVisual);
+ var designatedVisualItemStyle = seriesModel.designatedVisualItemStyle;
+ each(["color", "colorAlpha", "colorSaturation"], function(visualName) {
+ designatedVisualItemStyle[visualName] = designatedVisual[visualName];
+ var val = nodeItemStyleModel.get(visualName);
+ designatedVisualItemStyle[visualName] = null;
+ val != null && (visuals[visualName] = val);
+ });
+ return visuals;
+}
+function calculateColor(visuals) {
+ var color = getValueVisualDefine(visuals, "color");
+ if (color) {
+ var colorAlpha = getValueVisualDefine(visuals, "colorAlpha");
+ var colorSaturation = getValueVisualDefine(visuals, "colorSaturation");
+ if (colorSaturation) {
+ color = modifyHSL(color, null, null, colorSaturation);
+ }
+ if (colorAlpha) {
+ color = modifyAlpha(color, colorAlpha);
+ }
+ return color;
+ }
+}
+function calculateBorderColor(borderColorSaturation, thisNodeColor) {
+ return thisNodeColor != null ? modifyHSL(thisNodeColor, null, null, borderColorSaturation) : null;
+}
+function getValueVisualDefine(visuals, name) {
+ var value = visuals[name];
+ if (value != null && value !== "none") {
+ return value;
+ }
+}
+function buildVisualMapping(node, nodeModel, nodeLayout, nodeItemStyleModel, visuals, viewChildren) {
+ if (!viewChildren || !viewChildren.length) {
+ return;
+ }
+ var rangeVisual = getRangeVisual(nodeModel, "color") || visuals.color != null && visuals.color !== "none" && (getRangeVisual(nodeModel, "colorAlpha") || getRangeVisual(nodeModel, "colorSaturation"));
+ if (!rangeVisual) {
+ return;
+ }
+ var visualMin = nodeModel.get("visualMin");
+ var visualMax = nodeModel.get("visualMax");
+ var dataExtent = nodeLayout.dataExtent.slice();
+ visualMin != null && visualMin < dataExtent[0] && (dataExtent[0] = visualMin);
+ visualMax != null && visualMax > dataExtent[1] && (dataExtent[1] = visualMax);
+ var colorMappingBy = nodeModel.get("colorMappingBy");
+ var opt = {
+ type: rangeVisual.name,
+ dataExtent,
+ visual: rangeVisual.range
+ };
+ if (opt.type === "color" && (colorMappingBy === "index" || colorMappingBy === "id")) {
+ opt.mappingMethod = "category";
+ opt.loop = true;
+ } else {
+ opt.mappingMethod = "linear";
+ }
+ var mapping = new VisualMapping_default(opt);
+ inner10(mapping).drColorMappingBy = colorMappingBy;
+ return mapping;
+}
+function getRangeVisual(nodeModel, name) {
+ var range = nodeModel.get(name);
+ return isArray(range) && range.length ? {
+ name,
+ range
+ } : null;
+}
+function mapVisual(nodeModel, visuals, child, index, mapping, seriesModel) {
+ var childVisuals = extend({}, visuals);
+ if (mapping) {
+ var mappingType = mapping.type;
+ var colorMappingBy = mappingType === "color" && inner10(mapping).drColorMappingBy;
+ var value = colorMappingBy === "index" ? index : colorMappingBy === "id" ? seriesModel.mapIdToIndex(child.getId()) : child.getValue(nodeModel.get("visualDimension"));
+ childVisuals[mappingType] = mapping.mapValueToVisual(value);
+ }
+ return childVisuals;
+}
+
+// node_modules/echarts/lib/chart/treemap/treemapLayout.js
+var mathMax8 = Math.max;
+var mathMin8 = Math.min;
+var retrieveValue = retrieve;
+var each5 = each;
+var PATH_BORDER_WIDTH = ["itemStyle", "borderWidth"];
+var PATH_GAP_WIDTH = ["itemStyle", "gapWidth"];
+var PATH_UPPER_LABEL_SHOW = ["upperLabel", "show"];
+var PATH_UPPER_LABEL_HEIGHT = ["upperLabel", "height"];
+var treemapLayout_default = {
+ seriesType: "treemap",
+ reset: function(seriesModel, ecModel, api, payload) {
+ var ecWidth = api.getWidth();
+ var ecHeight = api.getHeight();
+ var seriesOption = seriesModel.option;
+ var layoutInfo = getLayoutRect(seriesModel.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+ var size = seriesOption.size || [];
+ var containerWidth = parsePercent2(retrieveValue(layoutInfo.width, size[0]), ecWidth);
+ var containerHeight = parsePercent2(retrieveValue(layoutInfo.height, size[1]), ecHeight);
+ var payloadType = payload && payload.type;
+ var types = ["treemapZoomToNode", "treemapRootToNode"];
+ var targetInfo = retrieveTargetInfo(payload, types, seriesModel);
+ var rootRect = payloadType === "treemapRender" || payloadType === "treemapMove" ? payload.rootRect : null;
+ var viewRoot = seriesModel.getViewRoot();
+ var viewAbovePath = getPathToRoot(viewRoot);
+ if (payloadType !== "treemapMove") {
+ var rootSize = payloadType === "treemapZoomToNode" ? estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) : rootRect ? [rootRect.width, rootRect.height] : [containerWidth, containerHeight];
+ var sort_1 = seriesOption.sort;
+ if (sort_1 && sort_1 !== "asc" && sort_1 !== "desc") {
+ sort_1 = "desc";
+ }
+ var options = {
+ squareRatio: seriesOption.squareRatio,
+ sort: sort_1,
+ leafDepth: seriesOption.leafDepth
+ };
+ viewRoot.hostTree.clearLayouts();
+ var viewRootLayout_1 = {
+ x: 0,
+ y: 0,
+ width: rootSize[0],
+ height: rootSize[1],
+ area: rootSize[0] * rootSize[1]
+ };
+ viewRoot.setLayout(viewRootLayout_1);
+ squarify(viewRoot, options, false, 0);
+ viewRootLayout_1 = viewRoot.getLayout();
+ each5(viewAbovePath, function(node, index) {
+ var childValue = (viewAbovePath[index + 1] || viewRoot).getValue();
+ node.setLayout(extend({
+ dataExtent: [childValue, childValue],
+ borderWidth: 0,
+ upperHeight: 0
+ }, viewRootLayout_1));
+ });
+ }
+ var treeRoot = seriesModel.getData().tree.root;
+ treeRoot.setLayout(calculateRootPosition(layoutInfo, rootRect, targetInfo), true);
+ seriesModel.setLayoutInfo(layoutInfo);
+ prunning(
+ treeRoot,
+ new BoundingRect_default(-layoutInfo.x, -layoutInfo.y, ecWidth, ecHeight),
+ viewAbovePath,
+ viewRoot,
+ 0
+ );
+ }
+};
+function squarify(node, options, hideChildren, depth) {
+ var width;
+ var height;
+ if (node.isRemoved()) {
+ return;
+ }
+ var thisLayout = node.getLayout();
+ width = thisLayout.width;
+ height = thisLayout.height;
+ var nodeModel = node.getModel();
+ var borderWidth = nodeModel.get(PATH_BORDER_WIDTH);
+ var halfGapWidth = nodeModel.get(PATH_GAP_WIDTH) / 2;
+ var upperLabelHeight = getUpperLabelHeight(nodeModel);
+ var upperHeight = Math.max(borderWidth, upperLabelHeight);
+ var layoutOffset = borderWidth - halfGapWidth;
+ var layoutOffsetUpper = upperHeight - halfGapWidth;
+ node.setLayout({
+ borderWidth,
+ upperHeight,
+ upperLabelHeight
+ }, true);
+ width = mathMax8(width - 2 * layoutOffset, 0);
+ height = mathMax8(height - layoutOffset - layoutOffsetUpper, 0);
+ var totalArea = width * height;
+ var viewChildren = initChildren(node, nodeModel, totalArea, options, hideChildren, depth);
+ if (!viewChildren.length) {
+ return;
+ }
+ var rect = {
+ x: layoutOffset,
+ y: layoutOffsetUpper,
+ width,
+ height
+ };
+ var rowFixedLength = mathMin8(width, height);
+ var best = Infinity;
+ var row = [];
+ row.area = 0;
+ for (var i = 0, len2 = viewChildren.length; i < len2; ) {
+ var child = viewChildren[i];
+ row.push(child);
+ row.area += child.getLayout().area;
+ var score = worst(row, rowFixedLength, options.squareRatio);
+ if (score <= best) {
+ i++;
+ best = score;
+ } else {
+ row.area -= row.pop().getLayout().area;
+ position(row, rowFixedLength, rect, halfGapWidth, false);
+ rowFixedLength = mathMin8(rect.width, rect.height);
+ row.length = row.area = 0;
+ best = Infinity;
+ }
+ }
+ if (row.length) {
+ position(row, rowFixedLength, rect, halfGapWidth, true);
+ }
+ if (!hideChildren) {
+ var childrenVisibleMin = nodeModel.get("childrenVisibleMin");
+ if (childrenVisibleMin != null && totalArea < childrenVisibleMin) {
+ hideChildren = true;
+ }
+ }
+ for (var i = 0, len2 = viewChildren.length; i < len2; i++) {
+ squarify(viewChildren[i], options, hideChildren, depth + 1);
+ }
+}
+function initChildren(node, nodeModel, totalArea, options, hideChildren, depth) {
+ var viewChildren = node.children || [];
+ var orderBy = options.sort;
+ orderBy !== "asc" && orderBy !== "desc" && (orderBy = null);
+ var overLeafDepth = options.leafDepth != null && options.leafDepth <= depth;
+ if (hideChildren && !overLeafDepth) {
+ return node.viewChildren = [];
+ }
+ viewChildren = filter(viewChildren, function(child) {
+ return !child.isRemoved();
+ });
+ sort2(viewChildren, orderBy);
+ var info = statistic(nodeModel, viewChildren, orderBy);
+ if (info.sum === 0) {
+ return node.viewChildren = [];
+ }
+ info.sum = filterByThreshold(nodeModel, totalArea, info.sum, orderBy, viewChildren);
+ if (info.sum === 0) {
+ return node.viewChildren = [];
+ }
+ for (var i = 0, len2 = viewChildren.length; i < len2; i++) {
+ var area = viewChildren[i].getValue() / info.sum * totalArea;
+ viewChildren[i].setLayout({
+ area
+ });
+ }
+ if (overLeafDepth) {
+ viewChildren.length && node.setLayout({
+ isLeafRoot: true
+ }, true);
+ viewChildren.length = 0;
+ }
+ node.viewChildren = viewChildren;
+ node.setLayout({
+ dataExtent: info.dataExtent
+ }, true);
+ return viewChildren;
+}
+function filterByThreshold(nodeModel, totalArea, sum2, orderBy, orderedChildren) {
+ if (!orderBy) {
+ return sum2;
+ }
+ var visibleMin = nodeModel.get("visibleMin");
+ var len2 = orderedChildren.length;
+ var deletePoint = len2;
+ for (var i = len2 - 1; i >= 0; i--) {
+ var value = orderedChildren[orderBy === "asc" ? len2 - i - 1 : i].getValue();
+ if (value / sum2 * totalArea < visibleMin) {
+ deletePoint = i;
+ sum2 -= value;
+ }
+ }
+ orderBy === "asc" ? orderedChildren.splice(0, len2 - deletePoint) : orderedChildren.splice(deletePoint, len2 - deletePoint);
+ return sum2;
+}
+function sort2(viewChildren, orderBy) {
+ if (orderBy) {
+ viewChildren.sort(function(a, b) {
+ var diff = orderBy === "asc" ? a.getValue() - b.getValue() : b.getValue() - a.getValue();
+ return diff === 0 ? orderBy === "asc" ? a.dataIndex - b.dataIndex : b.dataIndex - a.dataIndex : diff;
+ });
+ }
+ return viewChildren;
+}
+function statistic(nodeModel, children, orderBy) {
+ var sum2 = 0;
+ for (var i = 0, len2 = children.length; i < len2; i++) {
+ sum2 += children[i].getValue();
+ }
+ var dimension = nodeModel.get("visualDimension");
+ var dataExtent;
+ if (!children || !children.length) {
+ dataExtent = [NaN, NaN];
+ } else if (dimension === "value" && orderBy) {
+ dataExtent = [children[children.length - 1].getValue(), children[0].getValue()];
+ orderBy === "asc" && dataExtent.reverse();
+ } else {
+ dataExtent = [Infinity, -Infinity];
+ each5(children, function(child) {
+ var value = child.getValue(dimension);
+ value < dataExtent[0] && (dataExtent[0] = value);
+ value > dataExtent[1] && (dataExtent[1] = value);
+ });
+ }
+ return {
+ sum: sum2,
+ dataExtent
+ };
+}
+function worst(row, rowFixedLength, ratio) {
+ var areaMax = 0;
+ var areaMin = Infinity;
+ for (var i = 0, area = void 0, len2 = row.length; i < len2; i++) {
+ area = row[i].getLayout().area;
+ if (area) {
+ area < areaMin && (areaMin = area);
+ area > areaMax && (areaMax = area);
+ }
+ }
+ var squareArea = row.area * row.area;
+ var f = rowFixedLength * rowFixedLength * ratio;
+ return squareArea ? mathMax8(f * areaMax / squareArea, squareArea / (f * areaMin)) : Infinity;
+}
+function position(row, rowFixedLength, rect, halfGapWidth, flush) {
+ var idx0WhenH = rowFixedLength === rect.width ? 0 : 1;
+ var idx1WhenH = 1 - idx0WhenH;
+ var xy = ["x", "y"];
+ var wh = ["width", "height"];
+ var last = rect[xy[idx0WhenH]];
+ var rowOtherLength = rowFixedLength ? row.area / rowFixedLength : 0;
+ if (flush || rowOtherLength > rect[wh[idx1WhenH]]) {
+ rowOtherLength = rect[wh[idx1WhenH]];
+ }
+ for (var i = 0, rowLen = row.length; i < rowLen; i++) {
+ var node = row[i];
+ var nodeLayout = {};
+ var step = rowOtherLength ? node.getLayout().area / rowOtherLength : 0;
+ var wh1 = nodeLayout[wh[idx1WhenH]] = mathMax8(rowOtherLength - 2 * halfGapWidth, 0);
+ var remain = rect[xy[idx0WhenH]] + rect[wh[idx0WhenH]] - last;
+ var modWH = i === rowLen - 1 || remain < step ? remain : step;
+ var wh0 = nodeLayout[wh[idx0WhenH]] = mathMax8(modWH - 2 * halfGapWidth, 0);
+ nodeLayout[xy[idx1WhenH]] = rect[xy[idx1WhenH]] + mathMin8(halfGapWidth, wh1 / 2);
+ nodeLayout[xy[idx0WhenH]] = last + mathMin8(halfGapWidth, wh0 / 2);
+ last += modWH;
+ node.setLayout(nodeLayout, true);
+ }
+ rect[xy[idx1WhenH]] += rowOtherLength;
+ rect[wh[idx1WhenH]] -= rowOtherLength;
+}
+function estimateRootSize(seriesModel, targetInfo, viewRoot, containerWidth, containerHeight) {
+ var currNode = (targetInfo || {}).node;
+ var defaultSize = [containerWidth, containerHeight];
+ if (!currNode || currNode === viewRoot) {
+ return defaultSize;
+ }
+ var parent;
+ var viewArea = containerWidth * containerHeight;
+ var area = viewArea * seriesModel.option.zoomToNodeRatio;
+ while (parent = currNode.parentNode) {
+ var sum2 = 0;
+ var siblings = parent.children;
+ for (var i = 0, len2 = siblings.length; i < len2; i++) {
+ sum2 += siblings[i].getValue();
+ }
+ var currNodeValue = currNode.getValue();
+ if (currNodeValue === 0) {
+ return defaultSize;
+ }
+ area *= sum2 / currNodeValue;
+ var parentModel = parent.getModel();
+ var borderWidth = parentModel.get(PATH_BORDER_WIDTH);
+ var upperHeight = Math.max(borderWidth, getUpperLabelHeight(parentModel));
+ area += 4 * borderWidth * borderWidth + (3 * borderWidth + upperHeight) * Math.pow(area, 0.5);
+ area > MAX_SAFE_INTEGER && (area = MAX_SAFE_INTEGER);
+ currNode = parent;
+ }
+ area < viewArea && (area = viewArea);
+ var scale4 = Math.pow(area / viewArea, 0.5);
+ return [containerWidth * scale4, containerHeight * scale4];
+}
+function calculateRootPosition(layoutInfo, rootRect, targetInfo) {
+ if (rootRect) {
+ return {
+ x: rootRect.x,
+ y: rootRect.y
+ };
+ }
+ var defaultPosition = {
+ x: 0,
+ y: 0
+ };
+ if (!targetInfo) {
+ return defaultPosition;
+ }
+ var targetNode = targetInfo.node;
+ var layout5 = targetNode.getLayout();
+ if (!layout5) {
+ return defaultPosition;
+ }
+ var targetCenter = [layout5.width / 2, layout5.height / 2];
+ var node = targetNode;
+ while (node) {
+ var nodeLayout = node.getLayout();
+ targetCenter[0] += nodeLayout.x;
+ targetCenter[1] += nodeLayout.y;
+ node = node.parentNode;
+ }
+ return {
+ x: layoutInfo.width / 2 - targetCenter[0],
+ y: layoutInfo.height / 2 - targetCenter[1]
+ };
+}
+function prunning(node, clipRect, viewAbovePath, viewRoot, depth) {
+ var nodeLayout = node.getLayout();
+ var nodeInViewAbovePath = viewAbovePath[depth];
+ var isAboveViewRoot = nodeInViewAbovePath && nodeInViewAbovePath === node;
+ if (nodeInViewAbovePath && !isAboveViewRoot || depth === viewAbovePath.length && node !== viewRoot) {
+ return;
+ }
+ node.setLayout({
+ isInView: true,
+ invisible: !isAboveViewRoot && !clipRect.intersect(nodeLayout),
+ isAboveViewRoot
+ }, true);
+ var childClipRect = new BoundingRect_default(clipRect.x - nodeLayout.x, clipRect.y - nodeLayout.y, clipRect.width, clipRect.height);
+ each5(node.viewChildren || [], function(child) {
+ prunning(child, childClipRect, viewAbovePath, viewRoot, depth + 1);
+ });
+}
+function getUpperLabelHeight(model) {
+ return model.get(PATH_UPPER_LABEL_SHOW) ? model.get(PATH_UPPER_LABEL_HEIGHT) : 0;
+}
+
+// node_modules/echarts/lib/chart/treemap/install.js
+function install13(registers) {
+ registers.registerSeriesModel(TreemapSeries_default);
+ registers.registerChartView(TreemapView_default);
+ registers.registerVisual(treemapVisual_default);
+ registers.registerLayout(treemapLayout_default);
+ installTreemapAction(registers);
+}
+
+// node_modules/echarts/lib/chart/graph/categoryFilter.js
+function categoryFilter(ecModel) {
+ var legendModels = ecModel.findComponents({
+ mainType: "legend"
+ });
+ if (!legendModels || !legendModels.length) {
+ return;
+ }
+ ecModel.eachSeriesByType("graph", function(graphSeries) {
+ var categoriesData = graphSeries.getCategoriesData();
+ var graph = graphSeries.getGraph();
+ var data = graph.data;
+ var categoryNames = categoriesData.mapArray(categoriesData.getName);
+ data.filterSelf(function(idx) {
+ var model = data.getItemModel(idx);
+ var category = model.getShallow("category");
+ if (category != null) {
+ if (isNumber(category)) {
+ category = categoryNames[category];
+ }
+ for (var i = 0; i < legendModels.length; i++) {
+ if (!legendModels[i].isSelected(category)) {
+ return false;
+ }
+ }
+ }
+ return true;
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/categoryVisual.js
+function categoryVisual(ecModel) {
+ var paletteScope = {};
+ ecModel.eachSeriesByType("graph", function(seriesModel) {
+ var categoriesData = seriesModel.getCategoriesData();
+ var data = seriesModel.getData();
+ var categoryNameIdxMap = {};
+ categoriesData.each(function(idx) {
+ var name = categoriesData.getName(idx);
+ categoryNameIdxMap["ec-" + name] = idx;
+ var itemModel = categoriesData.getItemModel(idx);
+ var style = itemModel.getModel("itemStyle").getItemStyle();
+ if (!style.fill) {
+ style.fill = seriesModel.getColorFromPalette(name, paletteScope);
+ }
+ categoriesData.setItemVisual(idx, "style", style);
+ var symbolVisualList = ["symbol", "symbolSize", "symbolKeepAspect"];
+ for (var i = 0; i < symbolVisualList.length; i++) {
+ var symbolVisual = itemModel.getShallow(symbolVisualList[i], true);
+ if (symbolVisual != null) {
+ categoriesData.setItemVisual(idx, symbolVisualList[i], symbolVisual);
+ }
+ }
+ });
+ if (categoriesData.count()) {
+ data.each(function(idx) {
+ var model = data.getItemModel(idx);
+ var categoryIdx = model.getShallow("category");
+ if (categoryIdx != null) {
+ if (isString(categoryIdx)) {
+ categoryIdx = categoryNameIdxMap["ec-" + categoryIdx];
+ }
+ var categoryStyle = categoriesData.getItemVisual(categoryIdx, "style");
+ var style = data.ensureUniqueItemVisual(idx, "style");
+ extend(style, categoryStyle);
+ var visualList = ["symbol", "symbolSize", "symbolKeepAspect"];
+ for (var i = 0; i < visualList.length; i++) {
+ data.setItemVisual(idx, visualList[i], categoriesData.getItemVisual(categoryIdx, visualList[i]));
+ }
+ }
+ });
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/edgeVisual.js
+function normalize3(a) {
+ if (!(a instanceof Array)) {
+ a = [a, a];
+ }
+ return a;
+}
+function graphEdgeVisual(ecModel) {
+ ecModel.eachSeriesByType("graph", function(seriesModel) {
+ var graph = seriesModel.getGraph();
+ var edgeData = seriesModel.getEdgeData();
+ var symbolType = normalize3(seriesModel.get("edgeSymbol"));
+ var symbolSize = normalize3(seriesModel.get("edgeSymbolSize"));
+ edgeData.setVisual("fromSymbol", symbolType && symbolType[0]);
+ edgeData.setVisual("toSymbol", symbolType && symbolType[1]);
+ edgeData.setVisual("fromSymbolSize", symbolSize && symbolSize[0]);
+ edgeData.setVisual("toSymbolSize", symbolSize && symbolSize[1]);
+ edgeData.setVisual("style", seriesModel.getModel("lineStyle").getLineStyle());
+ edgeData.each(function(idx) {
+ var itemModel = edgeData.getItemModel(idx);
+ var edge = graph.getEdgeByIndex(idx);
+ var symbolType2 = normalize3(itemModel.getShallow("symbol", true));
+ var symbolSize2 = normalize3(itemModel.getShallow("symbolSize", true));
+ var style = itemModel.getModel("lineStyle").getLineStyle();
+ var existsStyle = edgeData.ensureUniqueItemVisual(idx, "style");
+ extend(existsStyle, style);
+ switch (existsStyle.stroke) {
+ case "source": {
+ var nodeStyle = edge.node1.getVisual("style");
+ existsStyle.stroke = nodeStyle && nodeStyle.fill;
+ break;
+ }
+ case "target": {
+ var nodeStyle = edge.node2.getVisual("style");
+ existsStyle.stroke = nodeStyle && nodeStyle.fill;
+ break;
+ }
+ }
+ symbolType2[0] && edge.setVisual("fromSymbol", symbolType2[0]);
+ symbolType2[1] && edge.setVisual("toSymbol", symbolType2[1]);
+ symbolSize2[0] && edge.setVisual("fromSymbolSize", symbolSize2[0]);
+ symbolSize2[1] && edge.setVisual("toSymbolSize", symbolSize2[1]);
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/helper/multipleGraphEdgeHelper.js
+var KEY_DELIMITER = "-->";
+var getAutoCurvenessParams = function(seriesModel) {
+ return seriesModel.get("autoCurveness") || null;
+};
+var createCurveness = function(seriesModel, appendLength) {
+ var autoCurvenessParmas = getAutoCurvenessParams(seriesModel);
+ var length2 = 20;
+ var curvenessList = [];
+ if (isNumber(autoCurvenessParmas)) {
+ length2 = autoCurvenessParmas;
+ } else if (isArray(autoCurvenessParmas)) {
+ seriesModel.__curvenessList = autoCurvenessParmas;
+ return;
+ }
+ if (appendLength > length2) {
+ length2 = appendLength;
+ }
+ var len2 = length2 % 2 ? length2 + 2 : length2 + 3;
+ curvenessList = [];
+ for (var i = 0; i < len2; i++) {
+ curvenessList.push((i % 2 ? i + 1 : i) / 10 * (i % 2 ? -1 : 1));
+ }
+ seriesModel.__curvenessList = curvenessList;
+};
+var getKeyOfEdges = function(n1, n2, seriesModel) {
+ var source = [n1.id, n1.dataIndex].join(".");
+ var target = [n2.id, n2.dataIndex].join(".");
+ return [seriesModel.uid, source, target].join(KEY_DELIMITER);
+};
+var getOppositeKey = function(key) {
+ var keys2 = key.split(KEY_DELIMITER);
+ return [keys2[0], keys2[2], keys2[1]].join(KEY_DELIMITER);
+};
+var getEdgeFromMap = function(edge, seriesModel) {
+ var key = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
+ return seriesModel.__edgeMap[key];
+};
+var getTotalLengthBetweenNodes = function(edge, seriesModel) {
+ var len2 = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node1, edge.node2, seriesModel), seriesModel);
+ var lenV = getEdgeMapLengthWithKey(getKeyOfEdges(edge.node2, edge.node1, seriesModel), seriesModel);
+ return len2 + lenV;
+};
+var getEdgeMapLengthWithKey = function(key, seriesModel) {
+ var edgeMap = seriesModel.__edgeMap;
+ return edgeMap[key] ? edgeMap[key].length : 0;
+};
+function initCurvenessList(seriesModel) {
+ if (!getAutoCurvenessParams(seriesModel)) {
+ return;
+ }
+ seriesModel.__curvenessList = [];
+ seriesModel.__edgeMap = {};
+ createCurveness(seriesModel);
+}
+function createEdgeMapForCurveness(n1, n2, seriesModel, index) {
+ if (!getAutoCurvenessParams(seriesModel)) {
+ return;
+ }
+ var key = getKeyOfEdges(n1, n2, seriesModel);
+ var edgeMap = seriesModel.__edgeMap;
+ var oppositeEdges = edgeMap[getOppositeKey(key)];
+ if (edgeMap[key] && !oppositeEdges) {
+ edgeMap[key].isForward = true;
+ } else if (oppositeEdges && edgeMap[key]) {
+ oppositeEdges.isForward = true;
+ edgeMap[key].isForward = false;
+ }
+ edgeMap[key] = edgeMap[key] || [];
+ edgeMap[key].push(index);
+}
+function getCurvenessForEdge(edge, seriesModel, index, needReverse) {
+ var autoCurvenessParams = getAutoCurvenessParams(seriesModel);
+ var isArrayParam = isArray(autoCurvenessParams);
+ if (!autoCurvenessParams) {
+ return null;
+ }
+ var edgeArray = getEdgeFromMap(edge, seriesModel);
+ if (!edgeArray) {
+ return null;
+ }
+ var edgeIndex = -1;
+ for (var i = 0; i < edgeArray.length; i++) {
+ if (edgeArray[i] === index) {
+ edgeIndex = i;
+ break;
+ }
+ }
+ var totalLen = getTotalLengthBetweenNodes(edge, seriesModel);
+ createCurveness(seriesModel, totalLen);
+ edge.lineStyle = edge.lineStyle || {};
+ var curKey = getKeyOfEdges(edge.node1, edge.node2, seriesModel);
+ var curvenessList = seriesModel.__curvenessList;
+ var parityCorrection = isArrayParam ? 0 : totalLen % 2 ? 0 : 1;
+ if (!edgeArray.isForward) {
+ var oppositeKey = getOppositeKey(curKey);
+ var len2 = getEdgeMapLengthWithKey(oppositeKey, seriesModel);
+ var resValue = curvenessList[edgeIndex + len2 + parityCorrection];
+ if (needReverse) {
+ if (isArrayParam) {
+ if (autoCurvenessParams && autoCurvenessParams[0] === 0) {
+ return (len2 + parityCorrection) % 2 ? resValue : -resValue;
+ } else {
+ return ((len2 % 2 ? 0 : 1) + parityCorrection) % 2 ? resValue : -resValue;
+ }
+ } else {
+ return (len2 + parityCorrection) % 2 ? resValue : -resValue;
+ }
+ } else {
+ return curvenessList[edgeIndex + len2 + parityCorrection];
+ }
+ } else {
+ return curvenessList[parityCorrection + edgeIndex];
+ }
+}
+
+// node_modules/echarts/lib/chart/graph/simpleLayoutHelper.js
+function simpleLayout(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && coordSys.type !== "view") {
+ return;
+ }
+ var graph = seriesModel.getGraph();
+ graph.eachNode(function(node) {
+ var model = node.getModel();
+ node.setLayout([+model.get("x"), +model.get("y")]);
+ });
+ simpleLayoutEdge(graph, seriesModel);
+}
+function simpleLayoutEdge(graph, seriesModel) {
+ graph.eachEdge(function(edge, index) {
+ var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, seriesModel, index, true), 0);
+ var p1 = clone2(edge.node1.getLayout());
+ var p2 = clone2(edge.node2.getLayout());
+ var points4 = [p1, p2];
+ if (+curveness) {
+ points4.push([(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * curveness]);
+ }
+ edge.setLayout(points4);
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/simpleLayout.js
+function graphSimpleLayout(ecModel, api) {
+ ecModel.eachSeriesByType("graph", function(seriesModel) {
+ var layout5 = seriesModel.get("layout");
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && coordSys.type !== "view") {
+ var data_1 = seriesModel.getData();
+ var dimensions_1 = [];
+ each(coordSys.dimensions, function(coordDim) {
+ dimensions_1 = dimensions_1.concat(data_1.mapDimensionsAll(coordDim));
+ });
+ for (var dataIndex = 0; dataIndex < data_1.count(); dataIndex++) {
+ var value = [];
+ var hasValue = false;
+ for (var i = 0; i < dimensions_1.length; i++) {
+ var val = data_1.get(dimensions_1[i], dataIndex);
+ if (!isNaN(val)) {
+ hasValue = true;
+ }
+ value.push(val);
+ }
+ if (hasValue) {
+ data_1.setItemLayout(dataIndex, coordSys.dataToPoint(value));
+ } else {
+ data_1.setItemLayout(dataIndex, [NaN, NaN]);
+ }
+ }
+ simpleLayoutEdge(data_1.graph, seriesModel);
+ } else if (!layout5 || layout5 === "none") {
+ simpleLayout(seriesModel);
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/graphHelper.js
+function getNodeGlobalScale(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys.type !== "view") {
+ return 1;
+ }
+ var nodeScaleRatio = seriesModel.option.nodeScaleRatio;
+ var groupZoom = coordSys.scaleX;
+ var roamZoom = coordSys.getZoom();
+ var nodeScale = (roamZoom - 1) * nodeScaleRatio + 1;
+ return nodeScale / groupZoom;
+}
+function getSymbolSize(node) {
+ var symbolSize = node.getVisual("symbolSize");
+ if (symbolSize instanceof Array) {
+ symbolSize = (symbolSize[0] + symbolSize[1]) / 2;
+ }
+ return +symbolSize;
+}
+
+// node_modules/echarts/lib/chart/graph/circularLayoutHelper.js
+var PI8 = Math.PI;
+var _symbolRadiansHalf = [];
+function circularLayout(seriesModel, basedOn, draggingNode, pointer) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && coordSys.type !== "view") {
+ return;
+ }
+ var rect = coordSys.getBoundingRect();
+ var nodeData = seriesModel.getData();
+ var graph = nodeData.graph;
+ var cx = rect.width / 2 + rect.x;
+ var cy = rect.height / 2 + rect.y;
+ var r = Math.min(rect.width, rect.height) / 2;
+ var count2 = nodeData.count();
+ nodeData.setLayout({
+ cx,
+ cy
+ });
+ if (!count2) {
+ return;
+ }
+ if (draggingNode) {
+ var _a2 = coordSys.pointToData(pointer), tempX = _a2[0], tempY = _a2[1];
+ var v = [tempX - cx, tempY - cy];
+ normalize(v, v);
+ scale(v, v, r);
+ draggingNode.setLayout([cx + v[0], cy + v[1]], true);
+ var circularRotateLabel = seriesModel.get(["circular", "rotateLabel"]);
+ rotateNodeLabel(draggingNode, circularRotateLabel, cx, cy);
+ }
+ _layoutNodesBasedOn[basedOn](seriesModel, graph, nodeData, r, cx, cy, count2);
+ graph.eachEdge(function(edge, index) {
+ var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), getCurvenessForEdge(edge, seriesModel, index), 0);
+ var p1 = clone2(edge.node1.getLayout());
+ var p2 = clone2(edge.node2.getLayout());
+ var cp1;
+ var x12 = (p1[0] + p2[0]) / 2;
+ var y12 = (p1[1] + p2[1]) / 2;
+ if (+curveness) {
+ curveness *= 3;
+ cp1 = [cx * curveness + x12 * (1 - curveness), cy * curveness + y12 * (1 - curveness)];
+ }
+ edge.setLayout([p1, p2, cp1]);
+ });
+}
+var _layoutNodesBasedOn = {
+ value: function(seriesModel, graph, nodeData, r, cx, cy, count2) {
+ var angle = 0;
+ var sum2 = nodeData.getSum("value");
+ var unitAngle = Math.PI * 2 / (sum2 || count2);
+ graph.eachNode(function(node) {
+ var value = node.getValue("value");
+ var radianHalf = unitAngle * (sum2 ? value : 1) / 2;
+ angle += radianHalf;
+ node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);
+ angle += radianHalf;
+ });
+ },
+ symbolSize: function(seriesModel, graph, nodeData, r, cx, cy, count2) {
+ var sumRadian = 0;
+ _symbolRadiansHalf.length = count2;
+ var nodeScale = getNodeGlobalScale(seriesModel);
+ graph.eachNode(function(node) {
+ var symbolSize = getSymbolSize(node);
+ isNaN(symbolSize) && (symbolSize = 2);
+ symbolSize < 0 && (symbolSize = 0);
+ symbolSize *= nodeScale;
+ var symbolRadianHalf = Math.asin(symbolSize / 2 / r);
+ isNaN(symbolRadianHalf) && (symbolRadianHalf = PI8 / 2);
+ _symbolRadiansHalf[node.dataIndex] = symbolRadianHalf;
+ sumRadian += symbolRadianHalf * 2;
+ });
+ var halfRemainRadian = (2 * PI8 - sumRadian) / count2 / 2;
+ var angle = 0;
+ graph.eachNode(function(node) {
+ var radianHalf = halfRemainRadian + _symbolRadiansHalf[node.dataIndex];
+ angle += radianHalf;
+ (!node.getLayout() || !node.getLayout().fixed) && node.setLayout([r * Math.cos(angle) + cx, r * Math.sin(angle) + cy]);
+ angle += radianHalf;
+ });
+ }
+};
+function rotateNodeLabel(node, circularRotateLabel, cx, cy) {
+ var el = node.getGraphicEl();
+ if (!el) {
+ return;
+ }
+ var nodeModel = node.getModel();
+ var labelRotate = nodeModel.get(["label", "rotate"]) || 0;
+ var symbolPath = el.getSymbolPath();
+ if (circularRotateLabel) {
+ var pos = node.getLayout();
+ var rad = Math.atan2(pos[1] - cy, pos[0] - cx);
+ if (rad < 0) {
+ rad = Math.PI * 2 + rad;
+ }
+ var isLeft = pos[0] < cx;
+ if (isLeft) {
+ rad = rad - Math.PI;
+ }
+ var textPosition = isLeft ? "left" : "right";
+ symbolPath.setTextConfig({
+ rotation: -rad,
+ position: textPosition,
+ origin: "center"
+ });
+ var emphasisState = symbolPath.ensureState("emphasis");
+ extend(emphasisState.textConfig || (emphasisState.textConfig = {}), {
+ position: textPosition
+ });
+ } else {
+ symbolPath.setTextConfig({
+ rotation: labelRotate *= Math.PI / 180
+ });
+ }
+}
+
+// node_modules/echarts/lib/chart/graph/circularLayout.js
+function graphCircularLayout(ecModel) {
+ ecModel.eachSeriesByType("graph", function(seriesModel) {
+ if (seriesModel.get("layout") === "circular") {
+ circularLayout(seriesModel, "symbolSize");
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/forceHelper.js
+var scaleAndAdd2 = scaleAndAdd;
+function forceLayout(inNodes, inEdges, opts) {
+ var nodes = inNodes;
+ var edges = inEdges;
+ var rect = opts.rect;
+ var width = rect.width;
+ var height = rect.height;
+ var center3 = [rect.x + width / 2, rect.y + height / 2];
+ var gravity = opts.gravity == null ? 0.1 : opts.gravity;
+ for (var i = 0; i < nodes.length; i++) {
+ var n = nodes[i];
+ if (!n.p) {
+ n.p = create(width * (Math.random() - 0.5) + center3[0], height * (Math.random() - 0.5) + center3[1]);
+ }
+ n.pp = clone2(n.p);
+ n.edges = null;
+ }
+ var initialFriction = opts.friction == null ? 0.6 : opts.friction;
+ var friction = initialFriction;
+ var beforeStepCallback;
+ var afterStepCallback;
+ return {
+ warmUp: function() {
+ friction = initialFriction * 0.8;
+ },
+ setFixed: function(idx) {
+ nodes[idx].fixed = true;
+ },
+ setUnfixed: function(idx) {
+ nodes[idx].fixed = false;
+ },
+ beforeStep: function(cb) {
+ beforeStepCallback = cb;
+ },
+ afterStep: function(cb) {
+ afterStepCallback = cb;
+ },
+ step: function(cb) {
+ beforeStepCallback && beforeStepCallback(nodes, edges);
+ var v12 = [];
+ var nLen = nodes.length;
+ for (var i2 = 0; i2 < edges.length; i2++) {
+ var e2 = edges[i2];
+ if (e2.ignoreForceLayout) {
+ continue;
+ }
+ var n1 = e2.n1;
+ var n2 = e2.n2;
+ sub(v12, n2.p, n1.p);
+ var d = len(v12) - e2.d;
+ var w = n2.w / (n1.w + n2.w);
+ if (isNaN(w)) {
+ w = 0;
+ }
+ normalize(v12, v12);
+ !n1.fixed && scaleAndAdd2(n1.p, n1.p, v12, w * d * friction);
+ !n2.fixed && scaleAndAdd2(n2.p, n2.p, v12, -(1 - w) * d * friction);
+ }
+ for (var i2 = 0; i2 < nLen; i2++) {
+ var n3 = nodes[i2];
+ if (!n3.fixed) {
+ sub(v12, center3, n3.p);
+ scaleAndAdd2(n3.p, n3.p, v12, gravity * friction);
+ }
+ }
+ for (var i2 = 0; i2 < nLen; i2++) {
+ var n1 = nodes[i2];
+ for (var j = i2 + 1; j < nLen; j++) {
+ var n2 = nodes[j];
+ sub(v12, n2.p, n1.p);
+ var d = len(v12);
+ if (d === 0) {
+ set(v12, Math.random() - 0.5, Math.random() - 0.5);
+ d = 1;
+ }
+ var repFact = (n1.rep + n2.rep) / d / d;
+ !n1.fixed && scaleAndAdd2(n1.pp, n1.pp, v12, repFact);
+ !n2.fixed && scaleAndAdd2(n2.pp, n2.pp, v12, -repFact);
+ }
+ }
+ var v = [];
+ for (var i2 = 0; i2 < nLen; i2++) {
+ var n3 = nodes[i2];
+ if (!n3.fixed) {
+ sub(v, n3.p, n3.pp);
+ scaleAndAdd2(n3.p, n3.p, v, friction);
+ copy(n3.pp, n3.p);
+ }
+ }
+ friction = friction * 0.992;
+ var finished = friction < 0.01;
+ afterStepCallback && afterStepCallback(nodes, edges, finished);
+ cb && cb(finished);
+ }
+ };
+}
+
+// node_modules/echarts/lib/chart/graph/forceLayout.js
+function graphForceLayout(ecModel) {
+ ecModel.eachSeriesByType("graph", function(graphSeries) {
+ var coordSys = graphSeries.coordinateSystem;
+ if (coordSys && coordSys.type !== "view") {
+ return;
+ }
+ if (graphSeries.get("layout") === "force") {
+ var preservedPoints_1 = graphSeries.preservedPoints || {};
+ var graph_1 = graphSeries.getGraph();
+ var nodeData_1 = graph_1.data;
+ var edgeData = graph_1.edgeData;
+ var forceModel = graphSeries.getModel("force");
+ var initLayout = forceModel.get("initLayout");
+ if (graphSeries.preservedPoints) {
+ nodeData_1.each(function(idx) {
+ var id = nodeData_1.getId(idx);
+ nodeData_1.setItemLayout(idx, preservedPoints_1[id] || [NaN, NaN]);
+ });
+ } else if (!initLayout || initLayout === "none") {
+ simpleLayout(graphSeries);
+ } else if (initLayout === "circular") {
+ circularLayout(graphSeries, "value");
+ }
+ var nodeDataExtent_1 = nodeData_1.getDataExtent("value");
+ var edgeDataExtent_1 = edgeData.getDataExtent("value");
+ var repulsion = forceModel.get("repulsion");
+ var edgeLength = forceModel.get("edgeLength");
+ var repulsionArr_1 = isArray(repulsion) ? repulsion : [repulsion, repulsion];
+ var edgeLengthArr_1 = isArray(edgeLength) ? edgeLength : [edgeLength, edgeLength];
+ edgeLengthArr_1 = [edgeLengthArr_1[1], edgeLengthArr_1[0]];
+ var nodes_1 = nodeData_1.mapArray("value", function(value, idx) {
+ var point = nodeData_1.getItemLayout(idx);
+ var rep = linearMap(value, nodeDataExtent_1, repulsionArr_1);
+ if (isNaN(rep)) {
+ rep = (repulsionArr_1[0] + repulsionArr_1[1]) / 2;
+ }
+ return {
+ w: rep,
+ rep,
+ fixed: nodeData_1.getItemModel(idx).get("fixed"),
+ p: !point || isNaN(point[0]) || isNaN(point[1]) ? null : point
+ };
+ });
+ var edges = edgeData.mapArray("value", function(value, idx) {
+ var edge = graph_1.getEdgeByIndex(idx);
+ var d = linearMap(value, edgeDataExtent_1, edgeLengthArr_1);
+ if (isNaN(d)) {
+ d = (edgeLengthArr_1[0] + edgeLengthArr_1[1]) / 2;
+ }
+ var edgeModel = edge.getModel();
+ var curveness = retrieve3(edge.getModel().get(["lineStyle", "curveness"]), -getCurvenessForEdge(edge, graphSeries, idx, true), 0);
+ return {
+ n1: nodes_1[edge.node1.dataIndex],
+ n2: nodes_1[edge.node2.dataIndex],
+ d,
+ curveness,
+ ignoreForceLayout: edgeModel.get("ignoreForceLayout")
+ };
+ });
+ var rect = coordSys.getBoundingRect();
+ var forceInstance = forceLayout(nodes_1, edges, {
+ rect,
+ gravity: forceModel.get("gravity"),
+ friction: forceModel.get("friction")
+ });
+ forceInstance.beforeStep(function(nodes, edges2) {
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (nodes[i].fixed) {
+ copy(nodes[i].p, graph_1.getNodeByIndex(i).getLayout());
+ }
+ }
+ });
+ forceInstance.afterStep(function(nodes, edges2, stopped) {
+ for (var i = 0, l = nodes.length; i < l; i++) {
+ if (!nodes[i].fixed) {
+ graph_1.getNodeByIndex(i).setLayout(nodes[i].p);
+ }
+ preservedPoints_1[nodeData_1.getId(i)] = nodes[i].p;
+ }
+ for (var i = 0, l = edges2.length; i < l; i++) {
+ var e2 = edges2[i];
+ var edge = graph_1.getEdgeByIndex(i);
+ var p1 = e2.n1.p;
+ var p2 = e2.n2.p;
+ var points4 = edge.getLayout();
+ points4 = points4 ? points4.slice() : [];
+ points4[0] = points4[0] || [];
+ points4[1] = points4[1] || [];
+ copy(points4[0], p1);
+ copy(points4[1], p2);
+ if (+e2.curveness) {
+ points4[2] = [(p1[0] + p2[0]) / 2 - (p1[1] - p2[1]) * e2.curveness, (p1[1] + p2[1]) / 2 - (p2[0] - p1[0]) * e2.curveness];
+ }
+ edge.setLayout(points4);
+ }
+ });
+ graphSeries.forceLayout = forceInstance;
+ graphSeries.preservedPoints = preservedPoints_1;
+ forceInstance.step();
+ } else {
+ graphSeries.forceLayout = null;
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/createView.js
+function getViewRect3(seriesModel, api, aspect) {
+ var option = extend(seriesModel.getBoxLayoutParams(), {
+ aspect
+ });
+ return getLayoutRect(option, {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+}
+function createViewCoordSys(ecModel, api) {
+ var viewList = [];
+ ecModel.eachSeriesByType("graph", function(seriesModel) {
+ var coordSysType = seriesModel.get("coordinateSystem");
+ if (!coordSysType || coordSysType === "view") {
+ var data_1 = seriesModel.getData();
+ var positions = data_1.mapArray(function(idx) {
+ var itemModel = data_1.getItemModel(idx);
+ return [+itemModel.get("x"), +itemModel.get("y")];
+ });
+ var min3 = [];
+ var max3 = [];
+ fromPoints(positions, min3, max3);
+ if (max3[0] - min3[0] === 0) {
+ max3[0] += 1;
+ min3[0] -= 1;
+ }
+ if (max3[1] - min3[1] === 0) {
+ max3[1] += 1;
+ min3[1] -= 1;
+ }
+ var aspect = (max3[0] - min3[0]) / (max3[1] - min3[1]);
+ var viewRect2 = getViewRect3(seriesModel, api, aspect);
+ if (isNaN(aspect)) {
+ min3 = [viewRect2.x, viewRect2.y];
+ max3 = [viewRect2.x + viewRect2.width, viewRect2.y + viewRect2.height];
+ }
+ var bbWidth = max3[0] - min3[0];
+ var bbHeight = max3[1] - min3[1];
+ var viewWidth = viewRect2.width;
+ var viewHeight = viewRect2.height;
+ var viewCoordSys = seriesModel.coordinateSystem = new View_default();
+ viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
+ viewCoordSys.setBoundingRect(min3[0], min3[1], bbWidth, bbHeight);
+ viewCoordSys.setViewRect(viewRect2.x, viewRect2.y, viewWidth, viewHeight);
+ viewCoordSys.setCenter(seriesModel.get("center"), api);
+ viewCoordSys.setZoom(seriesModel.get("zoom"));
+ viewList.push(viewCoordSys);
+ }
+ });
+ return viewList;
+}
+
+// node_modules/echarts/lib/chart/helper/LinePath.js
+var straightLineProto = Line_default.prototype;
+var bezierCurveProto = BezierCurve_default.prototype;
+var StraightLineShape = function() {
+ function StraightLineShape2() {
+ this.x1 = 0;
+ this.y1 = 0;
+ this.x2 = 0;
+ this.y2 = 0;
+ this.percent = 1;
+ }
+ return StraightLineShape2;
+}();
+var CurveShape = function(_super) {
+ __extends(CurveShape2, _super);
+ function CurveShape2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ return CurveShape2;
+}(StraightLineShape);
+function isStraightLine(shape) {
+ return isNaN(+shape.cpx1) || isNaN(+shape.cpy1);
+}
+var ECLinePath = function(_super) {
+ __extends(ECLinePath2, _super);
+ function ECLinePath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "ec-line";
+ return _this;
+ }
+ ECLinePath2.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ ECLinePath2.prototype.getDefaultShape = function() {
+ return new StraightLineShape();
+ };
+ ECLinePath2.prototype.buildPath = function(ctx, shape) {
+ if (isStraightLine(shape)) {
+ straightLineProto.buildPath.call(this, ctx, shape);
+ } else {
+ bezierCurveProto.buildPath.call(this, ctx, shape);
+ }
+ };
+ ECLinePath2.prototype.pointAt = function(t) {
+ if (isStraightLine(this.shape)) {
+ return straightLineProto.pointAt.call(this, t);
+ } else {
+ return bezierCurveProto.pointAt.call(this, t);
+ }
+ };
+ ECLinePath2.prototype.tangentAt = function(t) {
+ var shape = this.shape;
+ var p = isStraightLine(shape) ? [shape.x2 - shape.x1, shape.y2 - shape.y1] : bezierCurveProto.tangentAt.call(this, t);
+ return normalize(p, p);
+ };
+ return ECLinePath2;
+}(Path_default);
+var LinePath_default = ECLinePath;
+
+// node_modules/echarts/lib/chart/helper/Line.js
+var SYMBOL_CATEGORIES = ["fromSymbol", "toSymbol"];
+function makeSymbolTypeKey(symbolCategory) {
+ return "_" + symbolCategory + "Type";
+}
+function makeSymbolTypeValue(name, lineData, idx) {
+ var symbolType = lineData.getItemVisual(idx, name);
+ if (!symbolType || symbolType === "none") {
+ return symbolType;
+ }
+ var symbolSize = lineData.getItemVisual(idx, name + "Size");
+ var symbolRotate = lineData.getItemVisual(idx, name + "Rotate");
+ var symbolOffset = lineData.getItemVisual(idx, name + "Offset");
+ var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect");
+ var symbolSizeArr = normalizeSymbolSize(symbolSize);
+ var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);
+ return symbolType + symbolSizeArr + symbolOffsetArr + (symbolRotate || "") + (symbolKeepAspect || "");
+}
+function createSymbol2(name, lineData, idx) {
+ var symbolType = lineData.getItemVisual(idx, name);
+ if (!symbolType || symbolType === "none") {
+ return;
+ }
+ var symbolSize = lineData.getItemVisual(idx, name + "Size");
+ var symbolRotate = lineData.getItemVisual(idx, name + "Rotate");
+ var symbolOffset = lineData.getItemVisual(idx, name + "Offset");
+ var symbolKeepAspect = lineData.getItemVisual(idx, name + "KeepAspect");
+ var symbolSizeArr = normalizeSymbolSize(symbolSize);
+ var symbolOffsetArr = normalizeSymbolOffset(symbolOffset || 0, symbolSizeArr);
+ var symbolPath = createSymbol(symbolType, -symbolSizeArr[0] / 2 + symbolOffsetArr[0], -symbolSizeArr[1] / 2 + symbolOffsetArr[1], symbolSizeArr[0], symbolSizeArr[1], null, symbolKeepAspect);
+ symbolPath.__specifiedRotation = symbolRotate == null || isNaN(symbolRotate) ? void 0 : +symbolRotate * Math.PI / 180 || 0;
+ symbolPath.name = name;
+ return symbolPath;
+}
+function createLine(points4) {
+ var line = new LinePath_default({
+ name: "line",
+ subPixelOptimize: true
+ });
+ setLinePoints(line.shape, points4);
+ return line;
+}
+function setLinePoints(targetShape, points4) {
+ targetShape.x1 = points4[0][0];
+ targetShape.y1 = points4[0][1];
+ targetShape.x2 = points4[1][0];
+ targetShape.y2 = points4[1][1];
+ targetShape.percent = 1;
+ var cp1 = points4[2];
+ if (cp1) {
+ targetShape.cpx1 = cp1[0];
+ targetShape.cpy1 = cp1[1];
+ } else {
+ targetShape.cpx1 = NaN;
+ targetShape.cpy1 = NaN;
+ }
+}
+var Line2 = function(_super) {
+ __extends(Line3, _super);
+ function Line3(lineData, idx, seriesScope) {
+ var _this = _super.call(this) || this;
+ _this._createLine(lineData, idx, seriesScope);
+ return _this;
+ }
+ Line3.prototype._createLine = function(lineData, idx, seriesScope) {
+ var seriesModel = lineData.hostModel;
+ var linePoints = lineData.getItemLayout(idx);
+ var line = createLine(linePoints);
+ line.shape.percent = 0;
+ initProps(line, {
+ shape: {
+ percent: 1
+ }
+ }, seriesModel, idx);
+ this.add(line);
+ each(SYMBOL_CATEGORIES, function(symbolCategory) {
+ var symbol = createSymbol2(symbolCategory, lineData, idx);
+ this.add(symbol);
+ this[makeSymbolTypeKey(symbolCategory)] = makeSymbolTypeValue(symbolCategory, lineData, idx);
+ }, this);
+ this._updateCommonStl(lineData, idx, seriesScope);
+ };
+ Line3.prototype.updateData = function(lineData, idx, seriesScope) {
+ var seriesModel = lineData.hostModel;
+ var line = this.childOfName("line");
+ var linePoints = lineData.getItemLayout(idx);
+ var target = {
+ shape: {}
+ };
+ setLinePoints(target.shape, linePoints);
+ updateProps(line, target, seriesModel, idx);
+ each(SYMBOL_CATEGORIES, function(symbolCategory) {
+ var symbolType = makeSymbolTypeValue(symbolCategory, lineData, idx);
+ var key = makeSymbolTypeKey(symbolCategory);
+ if (this[key] !== symbolType) {
+ this.remove(this.childOfName(symbolCategory));
+ var symbol = createSymbol2(symbolCategory, lineData, idx);
+ this.add(symbol);
+ }
+ this[key] = symbolType;
+ }, this);
+ this._updateCommonStl(lineData, idx, seriesScope);
+ };
+ ;
+ Line3.prototype.getLinePath = function() {
+ return this.childAt(0);
+ };
+ Line3.prototype._updateCommonStl = function(lineData, idx, seriesScope) {
+ var seriesModel = lineData.hostModel;
+ var line = this.childOfName("line");
+ var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;
+ var blurLineStyle = seriesScope && seriesScope.blurLineStyle;
+ var selectLineStyle = seriesScope && seriesScope.selectLineStyle;
+ var labelStatesModels = seriesScope && seriesScope.labelStatesModels;
+ var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;
+ var focus = seriesScope && seriesScope.focus;
+ var blurScope = seriesScope && seriesScope.blurScope;
+ if (!seriesScope || lineData.hasItemOption) {
+ var itemModel = lineData.getItemModel(idx);
+ var emphasisModel = itemModel.getModel("emphasis");
+ emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle();
+ blurLineStyle = itemModel.getModel(["blur", "lineStyle"]).getLineStyle();
+ selectLineStyle = itemModel.getModel(["select", "lineStyle"]).getLineStyle();
+ emphasisDisabled = emphasisModel.get("disabled");
+ focus = emphasisModel.get("focus");
+ blurScope = emphasisModel.get("blurScope");
+ labelStatesModels = getLabelStatesModels(itemModel);
+ }
+ var lineStyle = lineData.getItemVisual(idx, "style");
+ var visualColor = lineStyle.stroke;
+ line.useStyle(lineStyle);
+ line.style.fill = null;
+ line.style.strokeNoScale = true;
+ line.ensureState("emphasis").style = emphasisLineStyle;
+ line.ensureState("blur").style = blurLineStyle;
+ line.ensureState("select").style = selectLineStyle;
+ each(SYMBOL_CATEGORIES, function(symbolCategory) {
+ var symbol = this.childOfName(symbolCategory);
+ if (symbol) {
+ symbol.setColor(visualColor);
+ symbol.style.opacity = lineStyle.opacity;
+ for (var i = 0; i < SPECIAL_STATES.length; i++) {
+ var stateName = SPECIAL_STATES[i];
+ var lineState = line.getState(stateName);
+ if (lineState) {
+ var lineStateStyle = lineState.style || {};
+ var state = symbol.ensureState(stateName);
+ var stateStyle = state.style || (state.style = {});
+ if (lineStateStyle.stroke != null) {
+ stateStyle[symbol.__isEmptyBrush ? "stroke" : "fill"] = lineStateStyle.stroke;
+ }
+ if (lineStateStyle.opacity != null) {
+ stateStyle.opacity = lineStateStyle.opacity;
+ }
+ }
+ }
+ symbol.markRedraw();
+ }
+ }, this);
+ var rawVal = seriesModel.getRawValue(idx);
+ setLabelStyle(this, labelStatesModels, {
+ labelDataIndex: idx,
+ labelFetcher: {
+ getFormattedLabel: function(dataIndex, stateName) {
+ return seriesModel.getFormattedLabel(dataIndex, stateName, lineData.dataType);
+ }
+ },
+ inheritColor: visualColor || "#000",
+ defaultOpacity: lineStyle.opacity,
+ defaultText: (rawVal == null ? lineData.getName(idx) : isFinite(rawVal) ? round(rawVal) : rawVal) + ""
+ });
+ var label = this.getTextContent();
+ if (label) {
+ var labelNormalModel = labelStatesModels.normal;
+ label.__align = label.style.align;
+ label.__verticalAlign = label.style.verticalAlign;
+ label.__position = labelNormalModel.get("position") || "middle";
+ var distance2 = labelNormalModel.get("distance");
+ if (!isArray(distance2)) {
+ distance2 = [distance2, distance2];
+ }
+ label.__labelDistance = distance2;
+ }
+ this.setTextConfig({
+ position: null,
+ local: true,
+ inside: false
+ });
+ toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
+ };
+ Line3.prototype.highlight = function() {
+ enterEmphasis(this);
+ };
+ Line3.prototype.downplay = function() {
+ leaveEmphasis(this);
+ };
+ Line3.prototype.updateLayout = function(lineData, idx) {
+ this.setLinePoints(lineData.getItemLayout(idx));
+ };
+ Line3.prototype.setLinePoints = function(points4) {
+ var linePath = this.childOfName("line");
+ setLinePoints(linePath.shape, points4);
+ linePath.dirty();
+ };
+ Line3.prototype.beforeUpdate = function() {
+ var lineGroup = this;
+ var symbolFrom = lineGroup.childOfName("fromSymbol");
+ var symbolTo = lineGroup.childOfName("toSymbol");
+ var label = lineGroup.getTextContent();
+ if (!symbolFrom && !symbolTo && (!label || label.ignore)) {
+ return;
+ }
+ var invScale = 1;
+ var parentNode2 = this.parent;
+ while (parentNode2) {
+ if (parentNode2.scaleX) {
+ invScale /= parentNode2.scaleX;
+ }
+ parentNode2 = parentNode2.parent;
+ }
+ var line = lineGroup.childOfName("line");
+ if (!this.__dirty && !line.__dirty) {
+ return;
+ }
+ var percent = line.shape.percent;
+ var fromPos = line.pointAt(0);
+ var toPos = line.pointAt(percent);
+ var d = sub([], toPos, fromPos);
+ normalize(d, d);
+ function setSymbolRotation(symbol, percent2) {
+ var specifiedRotation = symbol.__specifiedRotation;
+ if (specifiedRotation == null) {
+ var tangent2 = line.tangentAt(percent2);
+ symbol.attr("rotation", (percent2 === 1 ? -1 : 1) * Math.PI / 2 - Math.atan2(tangent2[1], tangent2[0]));
+ } else {
+ symbol.attr("rotation", specifiedRotation);
+ }
+ }
+ if (symbolFrom) {
+ symbolFrom.setPosition(fromPos);
+ setSymbolRotation(symbolFrom, 0);
+ symbolFrom.scaleX = symbolFrom.scaleY = invScale * percent;
+ symbolFrom.markRedraw();
+ }
+ if (symbolTo) {
+ symbolTo.setPosition(toPos);
+ setSymbolRotation(symbolTo, 1);
+ symbolTo.scaleX = symbolTo.scaleY = invScale * percent;
+ symbolTo.markRedraw();
+ }
+ if (label && !label.ignore) {
+ label.x = label.y = 0;
+ label.originX = label.originY = 0;
+ var textAlign = void 0;
+ var textVerticalAlign = void 0;
+ var distance2 = label.__labelDistance;
+ var distanceX = distance2[0] * invScale;
+ var distanceY = distance2[1] * invScale;
+ var halfPercent = percent / 2;
+ var tangent = line.tangentAt(halfPercent);
+ var n = [tangent[1], -tangent[0]];
+ var cp = line.pointAt(halfPercent);
+ if (n[1] > 0) {
+ n[0] = -n[0];
+ n[1] = -n[1];
+ }
+ var dir3 = tangent[0] < 0 ? -1 : 1;
+ if (label.__position !== "start" && label.__position !== "end") {
+ var rotation = -Math.atan2(tangent[1], tangent[0]);
+ if (toPos[0] < fromPos[0]) {
+ rotation = Math.PI + rotation;
+ }
+ label.rotation = rotation;
+ }
+ var dy = void 0;
+ switch (label.__position) {
+ case "insideStartTop":
+ case "insideMiddleTop":
+ case "insideEndTop":
+ case "middle":
+ dy = -distanceY;
+ textVerticalAlign = "bottom";
+ break;
+ case "insideStartBottom":
+ case "insideMiddleBottom":
+ case "insideEndBottom":
+ dy = distanceY;
+ textVerticalAlign = "top";
+ break;
+ default:
+ dy = 0;
+ textVerticalAlign = "middle";
+ }
+ switch (label.__position) {
+ case "end":
+ label.x = d[0] * distanceX + toPos[0];
+ label.y = d[1] * distanceY + toPos[1];
+ textAlign = d[0] > 0.8 ? "left" : d[0] < -0.8 ? "right" : "center";
+ textVerticalAlign = d[1] > 0.8 ? "top" : d[1] < -0.8 ? "bottom" : "middle";
+ break;
+ case "start":
+ label.x = -d[0] * distanceX + fromPos[0];
+ label.y = -d[1] * distanceY + fromPos[1];
+ textAlign = d[0] > 0.8 ? "right" : d[0] < -0.8 ? "left" : "center";
+ textVerticalAlign = d[1] > 0.8 ? "bottom" : d[1] < -0.8 ? "top" : "middle";
+ break;
+ case "insideStartTop":
+ case "insideStart":
+ case "insideStartBottom":
+ label.x = distanceX * dir3 + fromPos[0];
+ label.y = fromPos[1] + dy;
+ textAlign = tangent[0] < 0 ? "right" : "left";
+ label.originX = -distanceX * dir3;
+ label.originY = -dy;
+ break;
+ case "insideMiddleTop":
+ case "insideMiddle":
+ case "insideMiddleBottom":
+ case "middle":
+ label.x = cp[0];
+ label.y = cp[1] + dy;
+ textAlign = "center";
+ label.originY = -dy;
+ break;
+ case "insideEndTop":
+ case "insideEnd":
+ case "insideEndBottom":
+ label.x = -distanceX * dir3 + toPos[0];
+ label.y = toPos[1] + dy;
+ textAlign = tangent[0] >= 0 ? "right" : "left";
+ label.originX = distanceX * dir3;
+ label.originY = -dy;
+ break;
+ }
+ label.scaleX = label.scaleY = invScale;
+ label.setStyle({
+ verticalAlign: label.__verticalAlign || textVerticalAlign,
+ align: label.__align || textAlign
+ });
+ }
+ };
+ return Line3;
+}(Group_default);
+var Line_default2 = Line2;
+
+// node_modules/echarts/lib/chart/helper/LineDraw.js
+var LineDraw = function() {
+ function LineDraw2(LineCtor) {
+ this.group = new Group_default();
+ this._LineCtor = LineCtor || Line_default2;
+ }
+ LineDraw2.prototype.updateData = function(lineData) {
+ var _this = this;
+ this._progressiveEls = null;
+ var lineDraw = this;
+ var group = lineDraw.group;
+ var oldLineData = lineDraw._lineData;
+ lineDraw._lineData = lineData;
+ if (!oldLineData) {
+ group.removeAll();
+ }
+ var seriesScope = makeSeriesScope2(lineData);
+ lineData.diff(oldLineData).add(function(idx) {
+ _this._doAdd(lineData, idx, seriesScope);
+ }).update(function(newIdx, oldIdx) {
+ _this._doUpdate(oldLineData, lineData, oldIdx, newIdx, seriesScope);
+ }).remove(function(idx) {
+ group.remove(oldLineData.getItemGraphicEl(idx));
+ }).execute();
+ };
+ ;
+ LineDraw2.prototype.updateLayout = function() {
+ var lineData = this._lineData;
+ if (!lineData) {
+ return;
+ }
+ lineData.eachItemGraphicEl(function(el, idx) {
+ el.updateLayout(lineData, idx);
+ }, this);
+ };
+ ;
+ LineDraw2.prototype.incrementalPrepareUpdate = function(lineData) {
+ this._seriesScope = makeSeriesScope2(lineData);
+ this._lineData = null;
+ this.group.removeAll();
+ };
+ ;
+ LineDraw2.prototype.incrementalUpdate = function(taskParams, lineData) {
+ this._progressiveEls = [];
+ function updateIncrementalAndHover(el2) {
+ if (!el2.isGroup && !isEffectObject(el2)) {
+ el2.incremental = true;
+ el2.ensureState("emphasis").hoverLayer = true;
+ }
+ }
+ for (var idx = taskParams.start; idx < taskParams.end; idx++) {
+ var itemLayout = lineData.getItemLayout(idx);
+ if (lineNeedsDraw(itemLayout)) {
+ var el = new this._LineCtor(lineData, idx, this._seriesScope);
+ el.traverse(updateIncrementalAndHover);
+ this.group.add(el);
+ lineData.setItemGraphicEl(idx, el);
+ this._progressiveEls.push(el);
+ }
+ }
+ };
+ ;
+ LineDraw2.prototype.remove = function() {
+ this.group.removeAll();
+ };
+ ;
+ LineDraw2.prototype.eachRendered = function(cb) {
+ traverseElements(this._progressiveEls || this.group, cb);
+ };
+ LineDraw2.prototype._doAdd = function(lineData, idx, seriesScope) {
+ var itemLayout = lineData.getItemLayout(idx);
+ if (!lineNeedsDraw(itemLayout)) {
+ return;
+ }
+ var el = new this._LineCtor(lineData, idx, seriesScope);
+ lineData.setItemGraphicEl(idx, el);
+ this.group.add(el);
+ };
+ LineDraw2.prototype._doUpdate = function(oldLineData, newLineData, oldIdx, newIdx, seriesScope) {
+ var itemEl = oldLineData.getItemGraphicEl(oldIdx);
+ if (!lineNeedsDraw(newLineData.getItemLayout(newIdx))) {
+ this.group.remove(itemEl);
+ return;
+ }
+ if (!itemEl) {
+ itemEl = new this._LineCtor(newLineData, newIdx, seriesScope);
+ } else {
+ itemEl.updateData(newLineData, newIdx, seriesScope);
+ }
+ newLineData.setItemGraphicEl(newIdx, itemEl);
+ this.group.add(itemEl);
+ };
+ return LineDraw2;
+}();
+function isEffectObject(el) {
+ return el.animators && el.animators.length > 0;
+}
+function makeSeriesScope2(lineData) {
+ var hostModel = lineData.hostModel;
+ var emphasisModel = hostModel.getModel("emphasis");
+ return {
+ lineStyle: hostModel.getModel("lineStyle").getLineStyle(),
+ emphasisLineStyle: emphasisModel.getModel(["lineStyle"]).getLineStyle(),
+ blurLineStyle: hostModel.getModel(["blur", "lineStyle"]).getLineStyle(),
+ selectLineStyle: hostModel.getModel(["select", "lineStyle"]).getLineStyle(),
+ emphasisDisabled: emphasisModel.get("disabled"),
+ blurScope: emphasisModel.get("blurScope"),
+ focus: emphasisModel.get("focus"),
+ labelStatesModels: getLabelStatesModels(hostModel)
+ };
+}
+function isPointNaN(pt) {
+ return isNaN(pt[0]) || isNaN(pt[1]);
+}
+function lineNeedsDraw(pts) {
+ return pts && !isPointNaN(pts[0]) && !isPointNaN(pts[1]);
+}
+var LineDraw_default = LineDraw;
+
+// node_modules/echarts/lib/chart/graph/adjustEdge.js
+var v1 = [];
+var v2 = [];
+var v3 = [];
+var quadraticAt2 = quadraticAt;
+var v2DistSquare = distSquare;
+var mathAbs3 = Math.abs;
+function intersectCurveCircle(curvePoints, center3, radius) {
+ var p0 = curvePoints[0];
+ var p1 = curvePoints[1];
+ var p2 = curvePoints[2];
+ var d = Infinity;
+ var t;
+ var radiusSquare = radius * radius;
+ var interval = 0.1;
+ for (var _t = 0.1; _t <= 0.9; _t += 0.1) {
+ v1[0] = quadraticAt2(p0[0], p1[0], p2[0], _t);
+ v1[1] = quadraticAt2(p0[1], p1[1], p2[1], _t);
+ var diff = mathAbs3(v2DistSquare(v1, center3) - radiusSquare);
+ if (diff < d) {
+ d = diff;
+ t = _t;
+ }
+ }
+ for (var i = 0; i < 32; i++) {
+ var next = t + interval;
+ v2[0] = quadraticAt2(p0[0], p1[0], p2[0], t);
+ v2[1] = quadraticAt2(p0[1], p1[1], p2[1], t);
+ v3[0] = quadraticAt2(p0[0], p1[0], p2[0], next);
+ v3[1] = quadraticAt2(p0[1], p1[1], p2[1], next);
+ var diff = v2DistSquare(v2, center3) - radiusSquare;
+ if (mathAbs3(diff) < 0.01) {
+ break;
+ }
+ var nextDiff = v2DistSquare(v3, center3) - radiusSquare;
+ interval /= 2;
+ if (diff < 0) {
+ if (nextDiff >= 0) {
+ t = t + interval;
+ } else {
+ t = t - interval;
+ }
+ } else {
+ if (nextDiff >= 0) {
+ t = t - interval;
+ } else {
+ t = t + interval;
+ }
+ }
+ }
+ return t;
+}
+function adjustEdge(graph, scale4) {
+ var tmp0 = [];
+ var quadraticSubdivide2 = quadraticSubdivide;
+ var pts = [[], [], []];
+ var pts2 = [[], []];
+ var v = [];
+ scale4 /= 2;
+ graph.eachEdge(function(edge, idx) {
+ var linePoints = edge.getLayout();
+ var fromSymbol = edge.getVisual("fromSymbol");
+ var toSymbol = edge.getVisual("toSymbol");
+ if (!linePoints.__original) {
+ linePoints.__original = [clone2(linePoints[0]), clone2(linePoints[1])];
+ if (linePoints[2]) {
+ linePoints.__original.push(clone2(linePoints[2]));
+ }
+ }
+ var originalPoints = linePoints.__original;
+ if (linePoints[2] != null) {
+ copy(pts[0], originalPoints[0]);
+ copy(pts[1], originalPoints[2]);
+ copy(pts[2], originalPoints[1]);
+ if (fromSymbol && fromSymbol !== "none") {
+ var symbolSize = getSymbolSize(edge.node1);
+ var t = intersectCurveCircle(pts, originalPoints[0], symbolSize * scale4);
+ quadraticSubdivide2(pts[0][0], pts[1][0], pts[2][0], t, tmp0);
+ pts[0][0] = tmp0[3];
+ pts[1][0] = tmp0[4];
+ quadraticSubdivide2(pts[0][1], pts[1][1], pts[2][1], t, tmp0);
+ pts[0][1] = tmp0[3];
+ pts[1][1] = tmp0[4];
+ }
+ if (toSymbol && toSymbol !== "none") {
+ var symbolSize = getSymbolSize(edge.node2);
+ var t = intersectCurveCircle(pts, originalPoints[1], symbolSize * scale4);
+ quadraticSubdivide2(pts[0][0], pts[1][0], pts[2][0], t, tmp0);
+ pts[1][0] = tmp0[1];
+ pts[2][0] = tmp0[2];
+ quadraticSubdivide2(pts[0][1], pts[1][1], pts[2][1], t, tmp0);
+ pts[1][1] = tmp0[1];
+ pts[2][1] = tmp0[2];
+ }
+ copy(linePoints[0], pts[0]);
+ copy(linePoints[1], pts[2]);
+ copy(linePoints[2], pts[1]);
+ } else {
+ copy(pts2[0], originalPoints[0]);
+ copy(pts2[1], originalPoints[1]);
+ sub(v, pts2[1], pts2[0]);
+ normalize(v, v);
+ if (fromSymbol && fromSymbol !== "none") {
+ var symbolSize = getSymbolSize(edge.node1);
+ scaleAndAdd(pts2[0], pts2[0], v, symbolSize * scale4);
+ }
+ if (toSymbol && toSymbol !== "none") {
+ var symbolSize = getSymbolSize(edge.node2);
+ scaleAndAdd(pts2[1], pts2[1], v, -symbolSize * scale4);
+ }
+ copy(linePoints[0], pts2[0]);
+ copy(linePoints[1], pts2[1]);
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/graph/GraphView.js
+function isViewCoordSys(coordSys) {
+ return coordSys.type === "view";
+}
+var GraphView = function(_super) {
+ __extends(GraphView2, _super);
+ function GraphView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GraphView2.type;
+ return _this;
+ }
+ GraphView2.prototype.init = function(ecModel, api) {
+ var symbolDraw = new SymbolDraw_default();
+ var lineDraw = new LineDraw_default();
+ var group = this.group;
+ this._controller = new RoamController_default(api.getZr());
+ this._controllerHost = {
+ target: group
+ };
+ group.add(symbolDraw.group);
+ group.add(lineDraw.group);
+ this._symbolDraw = symbolDraw;
+ this._lineDraw = lineDraw;
+ this._firstRender = true;
+ };
+ GraphView2.prototype.render = function(seriesModel, ecModel, api) {
+ var _this = this;
+ var coordSys = seriesModel.coordinateSystem;
+ this._model = seriesModel;
+ var symbolDraw = this._symbolDraw;
+ var lineDraw = this._lineDraw;
+ var group = this.group;
+ if (isViewCoordSys(coordSys)) {
+ var groupNewProp = {
+ x: coordSys.x,
+ y: coordSys.y,
+ scaleX: coordSys.scaleX,
+ scaleY: coordSys.scaleY
+ };
+ if (this._firstRender) {
+ group.attr(groupNewProp);
+ } else {
+ updateProps(group, groupNewProp, seriesModel);
+ }
+ }
+ adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
+ var data = seriesModel.getData();
+ symbolDraw.updateData(data);
+ var edgeData = seriesModel.getEdgeData();
+ lineDraw.updateData(edgeData);
+ this._updateNodeAndLinkScale();
+ this._updateController(seriesModel, ecModel, api);
+ clearTimeout(this._layoutTimeout);
+ var forceLayout2 = seriesModel.forceLayout;
+ var layoutAnimation = seriesModel.get(["force", "layoutAnimation"]);
+ if (forceLayout2) {
+ this._startForceLayoutIteration(forceLayout2, layoutAnimation);
+ }
+ var layout5 = seriesModel.get("layout");
+ data.graph.eachNode(function(node) {
+ var idx = node.dataIndex;
+ var el = node.getGraphicEl();
+ var itemModel = node.getModel();
+ if (!el) {
+ return;
+ }
+ el.off("drag").off("dragend");
+ var draggable = itemModel.get("draggable");
+ if (draggable) {
+ el.on("drag", function(e2) {
+ switch (layout5) {
+ case "force":
+ forceLayout2.warmUp();
+ !_this._layouting && _this._startForceLayoutIteration(forceLayout2, layoutAnimation);
+ forceLayout2.setFixed(idx);
+ data.setItemLayout(idx, [el.x, el.y]);
+ break;
+ case "circular":
+ data.setItemLayout(idx, [el.x, el.y]);
+ node.setLayout({
+ fixed: true
+ }, true);
+ circularLayout(seriesModel, "symbolSize", node, [e2.offsetX, e2.offsetY]);
+ _this.updateLayout(seriesModel);
+ break;
+ case "none":
+ default:
+ data.setItemLayout(idx, [el.x, el.y]);
+ simpleLayoutEdge(seriesModel.getGraph(), seriesModel);
+ _this.updateLayout(seriesModel);
+ break;
+ }
+ }).on("dragend", function() {
+ if (forceLayout2) {
+ forceLayout2.setUnfixed(idx);
+ }
+ });
+ }
+ el.setDraggable(draggable, !!itemModel.get("cursor"));
+ var focus = itemModel.get(["emphasis", "focus"]);
+ if (focus === "adjacency") {
+ getECData(el).focus = node.getAdjacentDataIndices();
+ }
+ });
+ data.graph.eachEdge(function(edge) {
+ var el = edge.getGraphicEl();
+ var focus = edge.getModel().get(["emphasis", "focus"]);
+ if (!el) {
+ return;
+ }
+ if (focus === "adjacency") {
+ getECData(el).focus = {
+ edge: [edge.dataIndex],
+ node: [edge.node1.dataIndex, edge.node2.dataIndex]
+ };
+ }
+ });
+ var circularRotateLabel = seriesModel.get("layout") === "circular" && seriesModel.get(["circular", "rotateLabel"]);
+ var cx = data.getLayout("cx");
+ var cy = data.getLayout("cy");
+ data.graph.eachNode(function(node) {
+ rotateNodeLabel(node, circularRotateLabel, cx, cy);
+ });
+ this._firstRender = false;
+ };
+ GraphView2.prototype.dispose = function() {
+ this.remove();
+ this._controller && this._controller.dispose();
+ this._controllerHost = null;
+ };
+ GraphView2.prototype._startForceLayoutIteration = function(forceLayout2, layoutAnimation) {
+ var self2 = this;
+ (function step() {
+ forceLayout2.step(function(stopped) {
+ self2.updateLayout(self2._model);
+ (self2._layouting = !stopped) && (layoutAnimation ? self2._layoutTimeout = setTimeout(step, 16) : step());
+ });
+ })();
+ };
+ GraphView2.prototype._updateController = function(seriesModel, ecModel, api) {
+ var _this = this;
+ var controller = this._controller;
+ var controllerHost = this._controllerHost;
+ var group = this.group;
+ controller.setPointerChecker(function(e2, x, y) {
+ var rect = group.getBoundingRect();
+ rect.applyTransform(group.transform);
+ return rect.contain(x, y) && !onIrrelevantElement(e2, api, seriesModel);
+ });
+ if (!isViewCoordSys(seriesModel.coordinateSystem)) {
+ controller.disable();
+ return;
+ }
+ controller.enable(seriesModel.get("roam"));
+ controllerHost.zoomLimit = seriesModel.get("scaleLimit");
+ controllerHost.zoom = seriesModel.coordinateSystem.getZoom();
+ controller.off("pan").off("zoom").on("pan", function(e2) {
+ updateViewOnPan(controllerHost, e2.dx, e2.dy);
+ api.dispatchAction({
+ seriesId: seriesModel.id,
+ type: "graphRoam",
+ dx: e2.dx,
+ dy: e2.dy
+ });
+ }).on("zoom", function(e2) {
+ updateViewOnZoom(controllerHost, e2.scale, e2.originX, e2.originY);
+ api.dispatchAction({
+ seriesId: seriesModel.id,
+ type: "graphRoam",
+ zoom: e2.scale,
+ originX: e2.originX,
+ originY: e2.originY
+ });
+ _this._updateNodeAndLinkScale();
+ adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
+ _this._lineDraw.updateLayout();
+ api.updateLabelLayout();
+ });
+ };
+ GraphView2.prototype._updateNodeAndLinkScale = function() {
+ var seriesModel = this._model;
+ var data = seriesModel.getData();
+ var nodeScale = getNodeGlobalScale(seriesModel);
+ data.eachItemGraphicEl(function(el, idx) {
+ el && el.setSymbolScale(nodeScale);
+ });
+ };
+ GraphView2.prototype.updateLayout = function(seriesModel) {
+ adjustEdge(seriesModel.getGraph(), getNodeGlobalScale(seriesModel));
+ this._symbolDraw.updateLayout();
+ this._lineDraw.updateLayout();
+ };
+ GraphView2.prototype.remove = function() {
+ clearTimeout(this._layoutTimeout);
+ this._layouting = false;
+ this._layoutTimeout = null;
+ this._symbolDraw && this._symbolDraw.remove();
+ this._lineDraw && this._lineDraw.remove();
+ };
+ GraphView2.type = "graph";
+ return GraphView2;
+}(Chart_default);
+var GraphView_default = GraphView;
+
+// node_modules/echarts/lib/data/Graph.js
+function generateNodeKey(id) {
+ return "_EC_" + id;
+}
+var Graph = function() {
+ function Graph2(directed) {
+ this.type = "graph";
+ this.nodes = [];
+ this.edges = [];
+ this._nodesMap = {};
+ this._edgesMap = {};
+ this._directed = directed || false;
+ }
+ Graph2.prototype.isDirected = function() {
+ return this._directed;
+ };
+ ;
+ Graph2.prototype.addNode = function(id, dataIndex) {
+ id = id == null ? "" + dataIndex : "" + id;
+ var nodesMap = this._nodesMap;
+ if (nodesMap[generateNodeKey(id)]) {
+ if (true) {
+ console.error("Graph nodes have duplicate name or id");
+ }
+ return;
+ }
+ var node = new GraphNode(id, dataIndex);
+ node.hostGraph = this;
+ this.nodes.push(node);
+ nodesMap[generateNodeKey(id)] = node;
+ return node;
+ };
+ ;
+ Graph2.prototype.getNodeByIndex = function(dataIndex) {
+ var rawIdx = this.data.getRawIndex(dataIndex);
+ return this.nodes[rawIdx];
+ };
+ ;
+ Graph2.prototype.getNodeById = function(id) {
+ return this._nodesMap[generateNodeKey(id)];
+ };
+ ;
+ Graph2.prototype.addEdge = function(n1, n2, dataIndex) {
+ var nodesMap = this._nodesMap;
+ var edgesMap = this._edgesMap;
+ if (isNumber(n1)) {
+ n1 = this.nodes[n1];
+ }
+ if (isNumber(n2)) {
+ n2 = this.nodes[n2];
+ }
+ if (!(n1 instanceof GraphNode)) {
+ n1 = nodesMap[generateNodeKey(n1)];
+ }
+ if (!(n2 instanceof GraphNode)) {
+ n2 = nodesMap[generateNodeKey(n2)];
+ }
+ if (!n1 || !n2) {
+ return;
+ }
+ var key = n1.id + "-" + n2.id;
+ var edge = new GraphEdge(n1, n2, dataIndex);
+ edge.hostGraph = this;
+ if (this._directed) {
+ n1.outEdges.push(edge);
+ n2.inEdges.push(edge);
+ }
+ n1.edges.push(edge);
+ if (n1 !== n2) {
+ n2.edges.push(edge);
+ }
+ this.edges.push(edge);
+ edgesMap[key] = edge;
+ return edge;
+ };
+ ;
+ Graph2.prototype.getEdgeByIndex = function(dataIndex) {
+ var rawIdx = this.edgeData.getRawIndex(dataIndex);
+ return this.edges[rawIdx];
+ };
+ ;
+ Graph2.prototype.getEdge = function(n1, n2) {
+ if (n1 instanceof GraphNode) {
+ n1 = n1.id;
+ }
+ if (n2 instanceof GraphNode) {
+ n2 = n2.id;
+ }
+ var edgesMap = this._edgesMap;
+ if (this._directed) {
+ return edgesMap[n1 + "-" + n2];
+ } else {
+ return edgesMap[n1 + "-" + n2] || edgesMap[n2 + "-" + n1];
+ }
+ };
+ ;
+ Graph2.prototype.eachNode = function(cb, context) {
+ var nodes = this.nodes;
+ var len2 = nodes.length;
+ for (var i = 0; i < len2; i++) {
+ if (nodes[i].dataIndex >= 0) {
+ cb.call(context, nodes[i], i);
+ }
+ }
+ };
+ ;
+ Graph2.prototype.eachEdge = function(cb, context) {
+ var edges = this.edges;
+ var len2 = edges.length;
+ for (var i = 0; i < len2; i++) {
+ if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {
+ cb.call(context, edges[i], i);
+ }
+ }
+ };
+ ;
+ Graph2.prototype.breadthFirstTraverse = function(cb, startNode, direction, context) {
+ if (!(startNode instanceof GraphNode)) {
+ startNode = this._nodesMap[generateNodeKey(startNode)];
+ }
+ if (!startNode) {
+ return;
+ }
+ var edgeType = direction === "out" ? "outEdges" : direction === "in" ? "inEdges" : "edges";
+ for (var i = 0; i < this.nodes.length; i++) {
+ this.nodes[i].__visited = false;
+ }
+ if (cb.call(context, startNode, null)) {
+ return;
+ }
+ var queue = [startNode];
+ while (queue.length) {
+ var currentNode = queue.shift();
+ var edges = currentNode[edgeType];
+ for (var i = 0; i < edges.length; i++) {
+ var e2 = edges[i];
+ var otherNode = e2.node1 === currentNode ? e2.node2 : e2.node1;
+ if (!otherNode.__visited) {
+ if (cb.call(context, otherNode, currentNode)) {
+ return;
+ }
+ queue.push(otherNode);
+ otherNode.__visited = true;
+ }
+ }
+ }
+ };
+ ;
+ Graph2.prototype.update = function() {
+ var data = this.data;
+ var edgeData = this.edgeData;
+ var nodes = this.nodes;
+ var edges = this.edges;
+ for (var i = 0, len2 = nodes.length; i < len2; i++) {
+ nodes[i].dataIndex = -1;
+ }
+ for (var i = 0, len2 = data.count(); i < len2; i++) {
+ nodes[data.getRawIndex(i)].dataIndex = i;
+ }
+ edgeData.filterSelf(function(idx) {
+ var edge = edges[edgeData.getRawIndex(idx)];
+ return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;
+ });
+ for (var i = 0, len2 = edges.length; i < len2; i++) {
+ edges[i].dataIndex = -1;
+ }
+ for (var i = 0, len2 = edgeData.count(); i < len2; i++) {
+ edges[edgeData.getRawIndex(i)].dataIndex = i;
+ }
+ };
+ ;
+ Graph2.prototype.clone = function() {
+ var graph = new Graph2(this._directed);
+ var nodes = this.nodes;
+ var edges = this.edges;
+ for (var i = 0; i < nodes.length; i++) {
+ graph.addNode(nodes[i].id, nodes[i].dataIndex);
+ }
+ for (var i = 0; i < edges.length; i++) {
+ var e2 = edges[i];
+ graph.addEdge(e2.node1.id, e2.node2.id, e2.dataIndex);
+ }
+ return graph;
+ };
+ ;
+ return Graph2;
+}();
+var GraphNode = function() {
+ function GraphNode2(id, dataIndex) {
+ this.inEdges = [];
+ this.outEdges = [];
+ this.edges = [];
+ this.dataIndex = -1;
+ this.id = id == null ? "" : id;
+ this.dataIndex = dataIndex == null ? -1 : dataIndex;
+ }
+ GraphNode2.prototype.degree = function() {
+ return this.edges.length;
+ };
+ GraphNode2.prototype.inDegree = function() {
+ return this.inEdges.length;
+ };
+ GraphNode2.prototype.outDegree = function() {
+ return this.outEdges.length;
+ };
+ GraphNode2.prototype.getModel = function(path) {
+ if (this.dataIndex < 0) {
+ return;
+ }
+ var graph = this.hostGraph;
+ var itemModel = graph.data.getItemModel(this.dataIndex);
+ return itemModel.getModel(path);
+ };
+ GraphNode2.prototype.getAdjacentDataIndices = function() {
+ var dataIndices = {
+ edge: [],
+ node: []
+ };
+ for (var i = 0; i < this.edges.length; i++) {
+ var adjacentEdge = this.edges[i];
+ if (adjacentEdge.dataIndex < 0) {
+ continue;
+ }
+ dataIndices.edge.push(adjacentEdge.dataIndex);
+ dataIndices.node.push(adjacentEdge.node1.dataIndex, adjacentEdge.node2.dataIndex);
+ }
+ return dataIndices;
+ };
+ GraphNode2.prototype.getTrajectoryDataIndices = function() {
+ var connectedEdgesMap = createHashMap();
+ var connectedNodesMap = createHashMap();
+ for (var i = 0; i < this.edges.length; i++) {
+ var adjacentEdge = this.edges[i];
+ if (adjacentEdge.dataIndex < 0) {
+ continue;
+ }
+ connectedEdgesMap.set(adjacentEdge.dataIndex, true);
+ var sourceNodesQueue = [adjacentEdge.node1];
+ var targetNodesQueue = [adjacentEdge.node2];
+ var nodeIteratorIndex = 0;
+ while (nodeIteratorIndex < sourceNodesQueue.length) {
+ var sourceNode = sourceNodesQueue[nodeIteratorIndex];
+ nodeIteratorIndex++;
+ connectedNodesMap.set(sourceNode.dataIndex, true);
+ for (var j = 0; j < sourceNode.inEdges.length; j++) {
+ connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true);
+ sourceNodesQueue.push(sourceNode.inEdges[j].node1);
+ }
+ }
+ nodeIteratorIndex = 0;
+ while (nodeIteratorIndex < targetNodesQueue.length) {
+ var targetNode = targetNodesQueue[nodeIteratorIndex];
+ nodeIteratorIndex++;
+ connectedNodesMap.set(targetNode.dataIndex, true);
+ for (var j = 0; j < targetNode.outEdges.length; j++) {
+ connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true);
+ targetNodesQueue.push(targetNode.outEdges[j].node2);
+ }
+ }
+ }
+ return {
+ edge: connectedEdgesMap.keys(),
+ node: connectedNodesMap.keys()
+ };
+ };
+ return GraphNode2;
+}();
+var GraphEdge = function() {
+ function GraphEdge2(n1, n2, dataIndex) {
+ this.dataIndex = -1;
+ this.node1 = n1;
+ this.node2 = n2;
+ this.dataIndex = dataIndex == null ? -1 : dataIndex;
+ }
+ GraphEdge2.prototype.getModel = function(path) {
+ if (this.dataIndex < 0) {
+ return;
+ }
+ var graph = this.hostGraph;
+ var itemModel = graph.edgeData.getItemModel(this.dataIndex);
+ return itemModel.getModel(path);
+ };
+ GraphEdge2.prototype.getAdjacentDataIndices = function() {
+ return {
+ edge: [this.dataIndex],
+ node: [this.node1.dataIndex, this.node2.dataIndex]
+ };
+ };
+ GraphEdge2.prototype.getTrajectoryDataIndices = function() {
+ var connectedEdgesMap = createHashMap();
+ var connectedNodesMap = createHashMap();
+ connectedEdgesMap.set(this.dataIndex, true);
+ var sourceNodes = [this.node1];
+ var targetNodes = [this.node2];
+ var nodeIteratorIndex = 0;
+ while (nodeIteratorIndex < sourceNodes.length) {
+ var sourceNode = sourceNodes[nodeIteratorIndex];
+ nodeIteratorIndex++;
+ connectedNodesMap.set(sourceNode.dataIndex, true);
+ for (var j = 0; j < sourceNode.inEdges.length; j++) {
+ connectedEdgesMap.set(sourceNode.inEdges[j].dataIndex, true);
+ sourceNodes.push(sourceNode.inEdges[j].node1);
+ }
+ }
+ nodeIteratorIndex = 0;
+ while (nodeIteratorIndex < targetNodes.length) {
+ var targetNode = targetNodes[nodeIteratorIndex];
+ nodeIteratorIndex++;
+ connectedNodesMap.set(targetNode.dataIndex, true);
+ for (var j = 0; j < targetNode.outEdges.length; j++) {
+ connectedEdgesMap.set(targetNode.outEdges[j].dataIndex, true);
+ targetNodes.push(targetNode.outEdges[j].node2);
+ }
+ }
+ return {
+ edge: connectedEdgesMap.keys(),
+ node: connectedNodesMap.keys()
+ };
+ };
+ return GraphEdge2;
+}();
+function createGraphDataProxyMixin(hostName, dataName) {
+ return {
+ getValue: function(dimension) {
+ var data = this[hostName][dataName];
+ return data.getStore().get(data.getDimensionIndex(dimension || "value"), this.dataIndex);
+ },
+ setVisual: function(key, value) {
+ this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);
+ },
+ getVisual: function(key) {
+ return this[hostName][dataName].getItemVisual(this.dataIndex, key);
+ },
+ setLayout: function(layout5, merge2) {
+ this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout5, merge2);
+ },
+ getLayout: function() {
+ return this[hostName][dataName].getItemLayout(this.dataIndex);
+ },
+ getGraphicEl: function() {
+ return this[hostName][dataName].getItemGraphicEl(this.dataIndex);
+ },
+ getRawIndex: function() {
+ return this[hostName][dataName].getRawIndex(this.dataIndex);
+ }
+ };
+}
+mixin(GraphNode, createGraphDataProxyMixin("hostGraph", "data"));
+mixin(GraphEdge, createGraphDataProxyMixin("hostGraph", "edgeData"));
+var Graph_default = Graph;
+
+// node_modules/echarts/lib/chart/helper/createGraphFromNodeEdge.js
+function createGraphFromNodeEdge(nodes, edges, seriesModel, directed, beforeLink) {
+ var graph = new Graph_default(directed);
+ for (var i = 0; i < nodes.length; i++) {
+ graph.addNode(retrieve(
+ nodes[i].id,
+ nodes[i].name,
+ i
+ ), i);
+ }
+ var linkNameList = [];
+ var validEdges = [];
+ var linkCount = 0;
+ for (var i = 0; i < edges.length; i++) {
+ var link = edges[i];
+ var source = link.source;
+ var target = link.target;
+ if (graph.addEdge(source, target, linkCount)) {
+ validEdges.push(link);
+ linkNameList.push(retrieve(convertOptionIdName(link.id, null), source + " > " + target));
+ linkCount++;
+ }
+ }
+ var coordSys = seriesModel.get("coordinateSystem");
+ var nodeData;
+ if (coordSys === "cartesian2d" || coordSys === "polar") {
+ nodeData = createSeriesData_default(nodes, seriesModel);
+ } else {
+ var coordSysCtor = CoordinateSystem_default.get(coordSys);
+ var coordDimensions = coordSysCtor ? coordSysCtor.dimensions || [] : [];
+ if (indexOf(coordDimensions, "value") < 0) {
+ coordDimensions.concat(["value"]);
+ }
+ var dimensions = prepareSeriesDataSchema(nodes, {
+ coordDimensions,
+ encodeDefine: seriesModel.getEncode()
+ }).dimensions;
+ nodeData = new SeriesData_default(dimensions, seriesModel);
+ nodeData.initData(nodes);
+ }
+ var edgeData = new SeriesData_default(["value"], seriesModel);
+ edgeData.initData(validEdges, linkNameList);
+ beforeLink && beforeLink(nodeData, edgeData);
+ linkSeriesData_default({
+ mainData: nodeData,
+ struct: graph,
+ structAttr: "graph",
+ datas: {
+ node: nodeData,
+ edge: edgeData
+ },
+ datasAttr: {
+ node: "data",
+ edge: "edgeData"
+ }
+ });
+ graph.update();
+ return graph;
+}
+
+// node_modules/echarts/lib/chart/graph/GraphSeries.js
+var GraphSeriesModel = function(_super) {
+ __extends(GraphSeriesModel2, _super);
+ function GraphSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GraphSeriesModel2.type;
+ _this.hasSymbolVisual = true;
+ return _this;
+ }
+ GraphSeriesModel2.prototype.init = function(option) {
+ _super.prototype.init.apply(this, arguments);
+ var self2 = this;
+ function getCategoriesData() {
+ return self2._categoriesData;
+ }
+ this.legendVisualProvider = new LegendVisualProvider_default(getCategoriesData, getCategoriesData);
+ this.fillDataTextStyle(option.edges || option.links);
+ this._updateCategoriesData();
+ };
+ GraphSeriesModel2.prototype.mergeOption = function(option) {
+ _super.prototype.mergeOption.apply(this, arguments);
+ this.fillDataTextStyle(option.edges || option.links);
+ this._updateCategoriesData();
+ };
+ GraphSeriesModel2.prototype.mergeDefaultAndTheme = function(option) {
+ _super.prototype.mergeDefaultAndTheme.apply(this, arguments);
+ defaultEmphasis(option, "edgeLabel", ["show"]);
+ };
+ GraphSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ var edges = option.edges || option.links || [];
+ var nodes = option.data || option.nodes || [];
+ var self2 = this;
+ if (nodes && edges) {
+ initCurvenessList(this);
+ var graph = createGraphFromNodeEdge(nodes, edges, this, true, beforeLink);
+ each(graph.edges, function(edge) {
+ createEdgeMapForCurveness(edge.node1, edge.node2, this, edge.dataIndex);
+ }, this);
+ return graph.data;
+ }
+ function beforeLink(nodeData, edgeData) {
+ nodeData.wrapMethod("getItemModel", function(model) {
+ var categoriesModels = self2._categoriesModels;
+ var categoryIdx = model.getShallow("category");
+ var categoryModel = categoriesModels[categoryIdx];
+ if (categoryModel) {
+ categoryModel.parentModel = model.parentModel;
+ model.parentModel = categoryModel;
+ }
+ return model;
+ });
+ var oldGetModel = Model_default.prototype.getModel;
+ function newGetModel(path, parentModel) {
+ var model = oldGetModel.call(this, path, parentModel);
+ model.resolveParentPath = resolveParentPath;
+ return model;
+ }
+ edgeData.wrapMethod("getItemModel", function(model) {
+ model.resolveParentPath = resolveParentPath;
+ model.getModel = newGetModel;
+ return model;
+ });
+ function resolveParentPath(pathArr) {
+ if (pathArr && (pathArr[0] === "label" || pathArr[1] === "label")) {
+ var newPathArr = pathArr.slice();
+ if (pathArr[0] === "label") {
+ newPathArr[0] = "edgeLabel";
+ } else if (pathArr[1] === "label") {
+ newPathArr[1] = "edgeLabel";
+ }
+ return newPathArr;
+ }
+ return pathArr;
+ }
+ }
+ };
+ GraphSeriesModel2.prototype.getGraph = function() {
+ return this.getData().graph;
+ };
+ GraphSeriesModel2.prototype.getEdgeData = function() {
+ return this.getGraph().edgeData;
+ };
+ GraphSeriesModel2.prototype.getCategoriesData = function() {
+ return this._categoriesData;
+ };
+ GraphSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ if (dataType === "edge") {
+ var nodeData = this.getData();
+ var params = this.getDataParams(dataIndex, dataType);
+ var edge = nodeData.graph.getEdgeByIndex(dataIndex);
+ var sourceName = nodeData.getName(edge.node1.dataIndex);
+ var targetName = nodeData.getName(edge.node2.dataIndex);
+ var nameArr = [];
+ sourceName != null && nameArr.push(sourceName);
+ targetName != null && nameArr.push(targetName);
+ return createTooltipMarkup("nameValue", {
+ name: nameArr.join(" > "),
+ value: params.value,
+ noValue: params.value == null
+ });
+ }
+ var nodeMarkup = defaultSeriesFormatTooltip({
+ series: this,
+ dataIndex,
+ multipleSeries
+ });
+ return nodeMarkup;
+ };
+ GraphSeriesModel2.prototype._updateCategoriesData = function() {
+ var categories = map(this.option.categories || [], function(category) {
+ return category.value != null ? category : extend({
+ value: 0
+ }, category);
+ });
+ var categoriesData = new SeriesData_default(["value"], this);
+ categoriesData.initData(categories);
+ this._categoriesData = categoriesData;
+ this._categoriesModels = categoriesData.mapArray(function(idx) {
+ return categoriesData.getItemModel(idx);
+ });
+ };
+ GraphSeriesModel2.prototype.setZoom = function(zoom) {
+ this.option.zoom = zoom;
+ };
+ GraphSeriesModel2.prototype.setCenter = function(center3) {
+ this.option.center = center3;
+ };
+ GraphSeriesModel2.prototype.isAnimationEnabled = function() {
+ return _super.prototype.isAnimationEnabled.call(this) && !(this.get("layout") === "force" && this.get(["force", "layoutAnimation"]));
+ };
+ GraphSeriesModel2.type = "series.graph";
+ GraphSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
+ GraphSeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "view",
+ legendHoverLink: true,
+ layout: null,
+ circular: {
+ rotateLabel: false
+ },
+ force: {
+ initLayout: null,
+ repulsion: [0, 50],
+ gravity: 0.1,
+ friction: 0.6,
+ edgeLength: 30,
+ layoutAnimation: true
+ },
+ left: "center",
+ top: "center",
+ symbol: "circle",
+ symbolSize: 10,
+ edgeSymbol: ["none", "none"],
+ edgeSymbolSize: 10,
+ edgeLabel: {
+ position: "middle",
+ distance: 5
+ },
+ draggable: false,
+ roam: false,
+ center: null,
+ zoom: 1,
+ nodeScaleRatio: 0.6,
+ label: {
+ show: false,
+ formatter: "{b}"
+ },
+ itemStyle: {},
+ lineStyle: {
+ color: "#aaa",
+ width: 1,
+ opacity: 0.5
+ },
+ emphasis: {
+ scale: true,
+ label: {
+ show: true
+ }
+ },
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ }
+ };
+ return GraphSeriesModel2;
+}(Series_default);
+var GraphSeries_default = GraphSeriesModel;
+
+// node_modules/echarts/lib/chart/graph/install.js
+var actionInfo = {
+ type: "graphRoam",
+ event: "graphRoam",
+ update: "none"
+};
+function install14(registers) {
+ registers.registerChartView(GraphView_default);
+ registers.registerSeriesModel(GraphSeries_default);
+ registers.registerProcessor(categoryFilter);
+ registers.registerVisual(categoryVisual);
+ registers.registerVisual(graphEdgeVisual);
+ registers.registerLayout(graphSimpleLayout);
+ registers.registerLayout(registers.PRIORITY.VISUAL.POST_CHART_LAYOUT, graphCircularLayout);
+ registers.registerLayout(graphForceLayout);
+ registers.registerCoordinateSystem("graphView", {
+ dimensions: View_default.dimensions,
+ create: createViewCoordSys
+ });
+ registers.registerAction({
+ type: "focusNodeAdjacency",
+ event: "focusNodeAdjacency",
+ update: "series:focusNodeAdjacency"
+ }, noop);
+ registers.registerAction({
+ type: "unfocusNodeAdjacency",
+ event: "unfocusNodeAdjacency",
+ update: "series:unfocusNodeAdjacency"
+ }, noop);
+ registers.registerAction(actionInfo, function(payload, ecModel, api) {
+ ecModel.eachComponent({
+ mainType: "series",
+ query: payload
+ }, function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ var res = updateCenterAndZoom(coordSys, payload, void 0, api);
+ seriesModel.setCenter && seriesModel.setCenter(res.center);
+ seriesModel.setZoom && seriesModel.setZoom(res.zoom);
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/gauge/PointerPath.js
+var PointerShape = function() {
+ function PointerShape2() {
+ this.angle = 0;
+ this.width = 10;
+ this.r = 10;
+ this.x = 0;
+ this.y = 0;
+ }
+ return PointerShape2;
+}();
+var PointerPath = function(_super) {
+ __extends(PointerPath2, _super);
+ function PointerPath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "pointer";
+ return _this;
+ }
+ PointerPath2.prototype.getDefaultShape = function() {
+ return new PointerShape();
+ };
+ PointerPath2.prototype.buildPath = function(ctx, shape) {
+ var mathCos6 = Math.cos;
+ var mathSin6 = Math.sin;
+ var r = shape.r;
+ var width = shape.width;
+ var angle = shape.angle;
+ var x = shape.x - mathCos6(angle) * width * (width >= r / 3 ? 1 : 2);
+ var y = shape.y - mathSin6(angle) * width * (width >= r / 3 ? 1 : 2);
+ angle = shape.angle - Math.PI / 2;
+ ctx.moveTo(x, y);
+ ctx.lineTo(shape.x + mathCos6(angle) * width, shape.y + mathSin6(angle) * width);
+ ctx.lineTo(shape.x + mathCos6(shape.angle) * r, shape.y + mathSin6(shape.angle) * r);
+ ctx.lineTo(shape.x - mathCos6(angle) * width, shape.y - mathSin6(angle) * width);
+ ctx.lineTo(x, y);
+ };
+ return PointerPath2;
+}(Path_default);
+var PointerPath_default = PointerPath;
+
+// node_modules/echarts/lib/chart/gauge/GaugeView.js
+function parsePosition(seriesModel, api) {
+ var center3 = seriesModel.get("center");
+ var width = api.getWidth();
+ var height = api.getHeight();
+ var size = Math.min(width, height);
+ var cx = parsePercent2(center3[0], api.getWidth());
+ var cy = parsePercent2(center3[1], api.getHeight());
+ var r = parsePercent2(seriesModel.get("radius"), size / 2);
+ return {
+ cx,
+ cy,
+ r
+ };
+}
+function formatLabel(value, labelFormatter) {
+ var label = value == null ? "" : value + "";
+ if (labelFormatter) {
+ if (isString(labelFormatter)) {
+ label = labelFormatter.replace("{value}", label);
+ } else if (isFunction(labelFormatter)) {
+ label = labelFormatter(value);
+ }
+ }
+ return label;
+}
+var GaugeView = function(_super) {
+ __extends(GaugeView2, _super);
+ function GaugeView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GaugeView2.type;
+ return _this;
+ }
+ GaugeView2.prototype.render = function(seriesModel, ecModel, api) {
+ this.group.removeAll();
+ var colorList = seriesModel.get(["axisLine", "lineStyle", "color"]);
+ var posInfo = parsePosition(seriesModel, api);
+ this._renderMain(seriesModel, ecModel, api, colorList, posInfo);
+ this._data = seriesModel.getData();
+ };
+ GaugeView2.prototype.dispose = function() {
+ };
+ GaugeView2.prototype._renderMain = function(seriesModel, ecModel, api, colorList, posInfo) {
+ var group = this.group;
+ var clockwise = seriesModel.get("clockwise");
+ var startAngle = -seriesModel.get("startAngle") / 180 * Math.PI;
+ var endAngle = -seriesModel.get("endAngle") / 180 * Math.PI;
+ var axisLineModel = seriesModel.getModel("axisLine");
+ var roundCap = axisLineModel.get("roundCap");
+ var MainPath = roundCap ? sausage_default : Sector_default;
+ var showAxis = axisLineModel.get("show");
+ var lineStyleModel = axisLineModel.getModel("lineStyle");
+ var axisLineWidth = lineStyleModel.get("width");
+ var angles = [startAngle, endAngle];
+ normalizeArcAngles(angles, !clockwise);
+ startAngle = angles[0];
+ endAngle = angles[1];
+ var angleRangeSpan = endAngle - startAngle;
+ var prevEndAngle = startAngle;
+ var sectors = [];
+ for (var i = 0; showAxis && i < colorList.length; i++) {
+ var percent = Math.min(Math.max(colorList[i][0], 0), 1);
+ endAngle = startAngle + angleRangeSpan * percent;
+ var sector = new MainPath({
+ shape: {
+ startAngle: prevEndAngle,
+ endAngle,
+ cx: posInfo.cx,
+ cy: posInfo.cy,
+ clockwise,
+ r0: posInfo.r - axisLineWidth,
+ r: posInfo.r
+ },
+ silent: true
+ });
+ sector.setStyle({
+ fill: colorList[i][1]
+ });
+ sector.setStyle(lineStyleModel.getLineStyle(
+ ["color", "width"]
+ ));
+ sectors.push(sector);
+ prevEndAngle = endAngle;
+ }
+ sectors.reverse();
+ each(sectors, function(sector2) {
+ return group.add(sector2);
+ });
+ var getColor2 = function(percent2) {
+ if (percent2 <= 0) {
+ return colorList[0][1];
+ }
+ var i2;
+ for (i2 = 0; i2 < colorList.length; i2++) {
+ if (colorList[i2][0] >= percent2 && (i2 === 0 ? 0 : colorList[i2 - 1][0]) < percent2) {
+ return colorList[i2][1];
+ }
+ }
+ return colorList[i2 - 1][1];
+ };
+ this._renderTicks(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth);
+ this._renderTitleAndDetail(seriesModel, ecModel, api, getColor2, posInfo);
+ this._renderAnchor(seriesModel, posInfo);
+ this._renderPointer(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth);
+ };
+ GaugeView2.prototype._renderTicks = function(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {
+ var group = this.group;
+ var cx = posInfo.cx;
+ var cy = posInfo.cy;
+ var r = posInfo.r;
+ var minVal = +seriesModel.get("min");
+ var maxVal = +seriesModel.get("max");
+ var splitLineModel = seriesModel.getModel("splitLine");
+ var tickModel = seriesModel.getModel("axisTick");
+ var labelModel = seriesModel.getModel("axisLabel");
+ var splitNumber = seriesModel.get("splitNumber");
+ var subSplitNumber = tickModel.get("splitNumber");
+ var splitLineLen = parsePercent2(splitLineModel.get("length"), r);
+ var tickLen = parsePercent2(tickModel.get("length"), r);
+ var angle = startAngle;
+ var step = (endAngle - startAngle) / splitNumber;
+ var subStep = step / subSplitNumber;
+ var splitLineStyle = splitLineModel.getModel("lineStyle").getLineStyle();
+ var tickLineStyle = tickModel.getModel("lineStyle").getLineStyle();
+ var splitLineDistance = splitLineModel.get("distance");
+ var unitX;
+ var unitY;
+ for (var i = 0; i <= splitNumber; i++) {
+ unitX = Math.cos(angle);
+ unitY = Math.sin(angle);
+ if (splitLineModel.get("show")) {
+ var distance2 = splitLineDistance ? splitLineDistance + axisLineWidth : axisLineWidth;
+ var splitLine = new Line_default({
+ shape: {
+ x1: unitX * (r - distance2) + cx,
+ y1: unitY * (r - distance2) + cy,
+ x2: unitX * (r - splitLineLen - distance2) + cx,
+ y2: unitY * (r - splitLineLen - distance2) + cy
+ },
+ style: splitLineStyle,
+ silent: true
+ });
+ if (splitLineStyle.stroke === "auto") {
+ splitLine.setStyle({
+ stroke: getColor2(i / splitNumber)
+ });
+ }
+ group.add(splitLine);
+ }
+ if (labelModel.get("show")) {
+ var distance2 = labelModel.get("distance") + splitLineDistance;
+ var label = formatLabel(round(i / splitNumber * (maxVal - minVal) + minVal), labelModel.get("formatter"));
+ var autoColor = getColor2(i / splitNumber);
+ var textStyleX = unitX * (r - splitLineLen - distance2) + cx;
+ var textStyleY = unitY * (r - splitLineLen - distance2) + cy;
+ var rotateType = labelModel.get("rotate");
+ var rotate2 = 0;
+ if (rotateType === "radial") {
+ rotate2 = -angle + 2 * Math.PI;
+ if (rotate2 > Math.PI / 2) {
+ rotate2 += Math.PI;
+ }
+ } else if (rotateType === "tangential") {
+ rotate2 = -angle - Math.PI / 2;
+ } else if (isNumber(rotateType)) {
+ rotate2 = rotateType * Math.PI / 180;
+ }
+ if (rotate2 === 0) {
+ group.add(new Text_default({
+ style: createTextStyle(labelModel, {
+ text: label,
+ x: textStyleX,
+ y: textStyleY,
+ verticalAlign: unitY < -0.8 ? "top" : unitY > 0.8 ? "bottom" : "middle",
+ align: unitX < -0.4 ? "left" : unitX > 0.4 ? "right" : "center"
+ }, {
+ inheritColor: autoColor
+ }),
+ silent: true
+ }));
+ } else {
+ group.add(new Text_default({
+ style: createTextStyle(labelModel, {
+ text: label,
+ x: textStyleX,
+ y: textStyleY,
+ verticalAlign: "middle",
+ align: "center"
+ }, {
+ inheritColor: autoColor
+ }),
+ silent: true,
+ originX: textStyleX,
+ originY: textStyleY,
+ rotation: rotate2
+ }));
+ }
+ }
+ if (tickModel.get("show") && i !== splitNumber) {
+ var distance2 = tickModel.get("distance");
+ distance2 = distance2 ? distance2 + axisLineWidth : axisLineWidth;
+ for (var j = 0; j <= subSplitNumber; j++) {
+ unitX = Math.cos(angle);
+ unitY = Math.sin(angle);
+ var tickLine = new Line_default({
+ shape: {
+ x1: unitX * (r - distance2) + cx,
+ y1: unitY * (r - distance2) + cy,
+ x2: unitX * (r - tickLen - distance2) + cx,
+ y2: unitY * (r - tickLen - distance2) + cy
+ },
+ silent: true,
+ style: tickLineStyle
+ });
+ if (tickLineStyle.stroke === "auto") {
+ tickLine.setStyle({
+ stroke: getColor2((i + j / subSplitNumber) / splitNumber)
+ });
+ }
+ group.add(tickLine);
+ angle += subStep;
+ }
+ angle -= subStep;
+ } else {
+ angle += step;
+ }
+ }
+ };
+ GaugeView2.prototype._renderPointer = function(seriesModel, ecModel, api, getColor2, posInfo, startAngle, endAngle, clockwise, axisLineWidth) {
+ var group = this.group;
+ var oldData = this._data;
+ var oldProgressData = this._progressEls;
+ var progressList = [];
+ var showPointer2 = seriesModel.get(["pointer", "show"]);
+ var progressModel = seriesModel.getModel("progress");
+ var showProgress = progressModel.get("show");
+ var data = seriesModel.getData();
+ var valueDim = data.mapDimension("value");
+ var minVal = +seriesModel.get("min");
+ var maxVal = +seriesModel.get("max");
+ var valueExtent = [minVal, maxVal];
+ var angleExtent = [startAngle, endAngle];
+ function createPointer(idx, angle) {
+ var itemModel = data.getItemModel(idx);
+ var pointerModel = itemModel.getModel("pointer");
+ var pointerWidth = parsePercent2(pointerModel.get("width"), posInfo.r);
+ var pointerLength = parsePercent2(pointerModel.get("length"), posInfo.r);
+ var pointerStr = seriesModel.get(["pointer", "icon"]);
+ var pointerOffset = pointerModel.get("offsetCenter");
+ var pointerOffsetX = parsePercent2(pointerOffset[0], posInfo.r);
+ var pointerOffsetY = parsePercent2(pointerOffset[1], posInfo.r);
+ var pointerKeepAspect = pointerModel.get("keepAspect");
+ var pointer;
+ if (pointerStr) {
+ pointer = createSymbol(pointerStr, pointerOffsetX - pointerWidth / 2, pointerOffsetY - pointerLength, pointerWidth, pointerLength, null, pointerKeepAspect);
+ } else {
+ pointer = new PointerPath_default({
+ shape: {
+ angle: -Math.PI / 2,
+ width: pointerWidth,
+ r: pointerLength,
+ x: pointerOffsetX,
+ y: pointerOffsetY
+ }
+ });
+ }
+ pointer.rotation = -(angle + Math.PI / 2);
+ pointer.x = posInfo.cx;
+ pointer.y = posInfo.cy;
+ return pointer;
+ }
+ function createProgress(idx, endAngle2) {
+ var roundCap = progressModel.get("roundCap");
+ var ProgressPath = roundCap ? sausage_default : Sector_default;
+ var isOverlap = progressModel.get("overlap");
+ var progressWidth = isOverlap ? progressModel.get("width") : axisLineWidth / data.count();
+ var r0 = isOverlap ? posInfo.r - progressWidth : posInfo.r - (idx + 1) * progressWidth;
+ var r = isOverlap ? posInfo.r : posInfo.r - idx * progressWidth;
+ var progress = new ProgressPath({
+ shape: {
+ startAngle,
+ endAngle: endAngle2,
+ cx: posInfo.cx,
+ cy: posInfo.cy,
+ clockwise,
+ r0,
+ r
+ }
+ });
+ isOverlap && (progress.z2 = linearMap(data.get(valueDim, idx), [minVal, maxVal], [100, 0], true));
+ return progress;
+ }
+ if (showProgress || showPointer2) {
+ data.diff(oldData).add(function(idx) {
+ var val = data.get(valueDim, idx);
+ if (showPointer2) {
+ var pointer = createPointer(idx, startAngle);
+ initProps(pointer, {
+ rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2)
+ }, seriesModel);
+ group.add(pointer);
+ data.setItemGraphicEl(idx, pointer);
+ }
+ if (showProgress) {
+ var progress = createProgress(idx, startAngle);
+ var isClip = progressModel.get("clip");
+ initProps(progress, {
+ shape: {
+ endAngle: linearMap(val, valueExtent, angleExtent, isClip)
+ }
+ }, seriesModel);
+ group.add(progress);
+ setCommonECData(seriesModel.seriesIndex, data.dataType, idx, progress);
+ progressList[idx] = progress;
+ }
+ }).update(function(newIdx, oldIdx) {
+ var val = data.get(valueDim, newIdx);
+ if (showPointer2) {
+ var previousPointer = oldData.getItemGraphicEl(oldIdx);
+ var previousRotate = previousPointer ? previousPointer.rotation : startAngle;
+ var pointer = createPointer(newIdx, previousRotate);
+ pointer.rotation = previousRotate;
+ updateProps(pointer, {
+ rotation: -((isNaN(+val) ? angleExtent[0] : linearMap(val, valueExtent, angleExtent, true)) + Math.PI / 2)
+ }, seriesModel);
+ group.add(pointer);
+ data.setItemGraphicEl(newIdx, pointer);
+ }
+ if (showProgress) {
+ var previousProgress = oldProgressData[oldIdx];
+ var previousEndAngle = previousProgress ? previousProgress.shape.endAngle : startAngle;
+ var progress = createProgress(newIdx, previousEndAngle);
+ var isClip = progressModel.get("clip");
+ updateProps(progress, {
+ shape: {
+ endAngle: linearMap(val, valueExtent, angleExtent, isClip)
+ }
+ }, seriesModel);
+ group.add(progress);
+ setCommonECData(seriesModel.seriesIndex, data.dataType, newIdx, progress);
+ progressList[newIdx] = progress;
+ }
+ }).execute();
+ data.each(function(idx) {
+ var itemModel = data.getItemModel(idx);
+ var emphasisModel = itemModel.getModel("emphasis");
+ var focus = emphasisModel.get("focus");
+ var blurScope = emphasisModel.get("blurScope");
+ var emphasisDisabled = emphasisModel.get("disabled");
+ if (showPointer2) {
+ var pointer = data.getItemGraphicEl(idx);
+ var symbolStyle = data.getItemVisual(idx, "style");
+ var visualColor = symbolStyle.fill;
+ if (pointer instanceof Image_default) {
+ var pathStyle = pointer.style;
+ pointer.useStyle(extend({
+ image: pathStyle.image,
+ x: pathStyle.x,
+ y: pathStyle.y,
+ width: pathStyle.width,
+ height: pathStyle.height
+ }, symbolStyle));
+ } else {
+ pointer.useStyle(symbolStyle);
+ pointer.type !== "pointer" && pointer.setColor(visualColor);
+ }
+ pointer.setStyle(itemModel.getModel(["pointer", "itemStyle"]).getItemStyle());
+ if (pointer.style.fill === "auto") {
+ pointer.setStyle("fill", getColor2(linearMap(data.get(valueDim, idx), valueExtent, [0, 1], true)));
+ }
+ pointer.z2EmphasisLift = 0;
+ setStatesStylesFromModel(pointer, itemModel);
+ toggleHoverEmphasis(pointer, focus, blurScope, emphasisDisabled);
+ }
+ if (showProgress) {
+ var progress = progressList[idx];
+ progress.useStyle(data.getItemVisual(idx, "style"));
+ progress.setStyle(itemModel.getModel(["progress", "itemStyle"]).getItemStyle());
+ progress.z2EmphasisLift = 0;
+ setStatesStylesFromModel(progress, itemModel);
+ toggleHoverEmphasis(progress, focus, blurScope, emphasisDisabled);
+ }
+ });
+ this._progressEls = progressList;
+ }
+ };
+ GaugeView2.prototype._renderAnchor = function(seriesModel, posInfo) {
+ var anchorModel = seriesModel.getModel("anchor");
+ var showAnchor = anchorModel.get("show");
+ if (showAnchor) {
+ var anchorSize = anchorModel.get("size");
+ var anchorType = anchorModel.get("icon");
+ var offsetCenter = anchorModel.get("offsetCenter");
+ var anchorKeepAspect = anchorModel.get("keepAspect");
+ var anchor = createSymbol(anchorType, posInfo.cx - anchorSize / 2 + parsePercent2(offsetCenter[0], posInfo.r), posInfo.cy - anchorSize / 2 + parsePercent2(offsetCenter[1], posInfo.r), anchorSize, anchorSize, null, anchorKeepAspect);
+ anchor.z2 = anchorModel.get("showAbove") ? 1 : 0;
+ anchor.setStyle(anchorModel.getModel("itemStyle").getItemStyle());
+ this.group.add(anchor);
+ }
+ };
+ GaugeView2.prototype._renderTitleAndDetail = function(seriesModel, ecModel, api, getColor2, posInfo) {
+ var _this = this;
+ var data = seriesModel.getData();
+ var valueDim = data.mapDimension("value");
+ var minVal = +seriesModel.get("min");
+ var maxVal = +seriesModel.get("max");
+ var contentGroup = new Group_default();
+ var newTitleEls = [];
+ var newDetailEls = [];
+ var hasAnimation = seriesModel.isAnimationEnabled();
+ var showPointerAbove = seriesModel.get(["pointer", "showAbove"]);
+ data.diff(this._data).add(function(idx) {
+ newTitleEls[idx] = new Text_default({
+ silent: true
+ });
+ newDetailEls[idx] = new Text_default({
+ silent: true
+ });
+ }).update(function(idx, oldIdx) {
+ newTitleEls[idx] = _this._titleEls[oldIdx];
+ newDetailEls[idx] = _this._detailEls[oldIdx];
+ }).execute();
+ data.each(function(idx) {
+ var itemModel = data.getItemModel(idx);
+ var value = data.get(valueDim, idx);
+ var itemGroup = new Group_default();
+ var autoColor = getColor2(linearMap(value, [minVal, maxVal], [0, 1], true));
+ var itemTitleModel = itemModel.getModel("title");
+ if (itemTitleModel.get("show")) {
+ var titleOffsetCenter = itemTitleModel.get("offsetCenter");
+ var titleX = posInfo.cx + parsePercent2(titleOffsetCenter[0], posInfo.r);
+ var titleY = posInfo.cy + parsePercent2(titleOffsetCenter[1], posInfo.r);
+ var labelEl = newTitleEls[idx];
+ labelEl.attr({
+ z2: showPointerAbove ? 0 : 2,
+ style: createTextStyle(itemTitleModel, {
+ x: titleX,
+ y: titleY,
+ text: data.getName(idx),
+ align: "center",
+ verticalAlign: "middle"
+ }, {
+ inheritColor: autoColor
+ })
+ });
+ itemGroup.add(labelEl);
+ }
+ var itemDetailModel = itemModel.getModel("detail");
+ if (itemDetailModel.get("show")) {
+ var detailOffsetCenter = itemDetailModel.get("offsetCenter");
+ var detailX = posInfo.cx + parsePercent2(detailOffsetCenter[0], posInfo.r);
+ var detailY = posInfo.cy + parsePercent2(detailOffsetCenter[1], posInfo.r);
+ var width = parsePercent2(itemDetailModel.get("width"), posInfo.r);
+ var height = parsePercent2(itemDetailModel.get("height"), posInfo.r);
+ var detailColor = seriesModel.get(["progress", "show"]) ? data.getItemVisual(idx, "style").fill : autoColor;
+ var labelEl = newDetailEls[idx];
+ var formatter_1 = itemDetailModel.get("formatter");
+ labelEl.attr({
+ z2: showPointerAbove ? 0 : 2,
+ style: createTextStyle(itemDetailModel, {
+ x: detailX,
+ y: detailY,
+ text: formatLabel(value, formatter_1),
+ width: isNaN(width) ? null : width,
+ height: isNaN(height) ? null : height,
+ align: "center",
+ verticalAlign: "middle"
+ }, {
+ inheritColor: detailColor
+ })
+ });
+ setLabelValueAnimation(labelEl, {
+ normal: itemDetailModel
+ }, value, function(value2) {
+ return formatLabel(value2, formatter_1);
+ });
+ hasAnimation && animateLabelValue(labelEl, idx, data, seriesModel, {
+ getFormattedLabel: function(labelDataIndex, status, dataType, labelDimIndex, fmt, extendParams) {
+ return formatLabel(extendParams ? extendParams.interpolatedValue : value, formatter_1);
+ }
+ });
+ itemGroup.add(labelEl);
+ }
+ contentGroup.add(itemGroup);
+ });
+ this.group.add(contentGroup);
+ this._titleEls = newTitleEls;
+ this._detailEls = newDetailEls;
+ };
+ GaugeView2.type = "gauge";
+ return GaugeView2;
+}(Chart_default);
+var GaugeView_default = GaugeView;
+
+// node_modules/echarts/lib/chart/gauge/GaugeSeries.js
+var GaugeSeriesModel = function(_super) {
+ __extends(GaugeSeriesModel2, _super);
+ function GaugeSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GaugeSeriesModel2.type;
+ _this.visualStyleAccessPath = "itemStyle";
+ return _this;
+ }
+ GaugeSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesDataSimply(this, ["value"]);
+ };
+ GaugeSeriesModel2.type = "series.gauge";
+ GaugeSeriesModel2.defaultOption = {
+ z: 2,
+ colorBy: "data",
+ center: ["50%", "50%"],
+ legendHoverLink: true,
+ radius: "75%",
+ startAngle: 225,
+ endAngle: -45,
+ clockwise: true,
+ min: 0,
+ max: 100,
+ splitNumber: 10,
+ axisLine: {
+ show: true,
+ roundCap: false,
+ lineStyle: {
+ color: [[1, "#E6EBF8"]],
+ width: 10
+ }
+ },
+ progress: {
+ show: false,
+ overlap: true,
+ width: 10,
+ roundCap: false,
+ clip: true
+ },
+ splitLine: {
+ show: true,
+ length: 10,
+ distance: 10,
+ lineStyle: {
+ color: "#63677A",
+ width: 3,
+ type: "solid"
+ }
+ },
+ axisTick: {
+ show: true,
+ splitNumber: 5,
+ length: 6,
+ distance: 10,
+ lineStyle: {
+ color: "#63677A",
+ width: 1,
+ type: "solid"
+ }
+ },
+ axisLabel: {
+ show: true,
+ distance: 15,
+ color: "#464646",
+ fontSize: 12,
+ rotate: 0
+ },
+ pointer: {
+ icon: null,
+ offsetCenter: [0, 0],
+ show: true,
+ showAbove: true,
+ length: "60%",
+ width: 6,
+ keepAspect: false
+ },
+ anchor: {
+ show: false,
+ showAbove: false,
+ size: 6,
+ icon: "circle",
+ offsetCenter: [0, 0],
+ keepAspect: false,
+ itemStyle: {
+ color: "#fff",
+ borderWidth: 0,
+ borderColor: "#5470c6"
+ }
+ },
+ title: {
+ show: true,
+ offsetCenter: [0, "20%"],
+ color: "#464646",
+ fontSize: 16,
+ valueAnimation: false
+ },
+ detail: {
+ show: true,
+ backgroundColor: "rgba(0,0,0,0)",
+ borderWidth: 0,
+ borderColor: "#ccc",
+ width: 100,
+ height: null,
+ padding: [5, 10],
+ offsetCenter: [0, "40%"],
+ color: "#464646",
+ fontSize: 30,
+ fontWeight: "bold",
+ lineHeight: 30,
+ valueAnimation: false
+ }
+ };
+ return GaugeSeriesModel2;
+}(Series_default);
+var GaugeSeries_default = GaugeSeriesModel;
+
+// node_modules/echarts/lib/chart/gauge/install.js
+function install15(registers) {
+ registers.registerChartView(GaugeView_default);
+ registers.registerSeriesModel(GaugeSeries_default);
+}
+
+// node_modules/echarts/lib/chart/funnel/FunnelView.js
+var opacityAccessPath = ["itemStyle", "opacity"];
+var FunnelPiece = function(_super) {
+ __extends(FunnelPiece2, _super);
+ function FunnelPiece2(data, idx) {
+ var _this = _super.call(this) || this;
+ var polygon = _this;
+ var labelLine = new Polyline_default();
+ var text = new Text_default();
+ polygon.setTextContent(text);
+ _this.setTextGuideLine(labelLine);
+ _this.updateData(data, idx, true);
+ return _this;
+ }
+ FunnelPiece2.prototype.updateData = function(data, idx, firstCreate) {
+ var polygon = this;
+ var seriesModel = data.hostModel;
+ var itemModel = data.getItemModel(idx);
+ var layout5 = data.getItemLayout(idx);
+ var emphasisModel = itemModel.getModel("emphasis");
+ var opacity = itemModel.get(opacityAccessPath);
+ opacity = opacity == null ? 1 : opacity;
+ if (!firstCreate) {
+ saveOldStyle(polygon);
+ }
+ polygon.useStyle(data.getItemVisual(idx, "style"));
+ polygon.style.lineJoin = "round";
+ if (firstCreate) {
+ polygon.setShape({
+ points: layout5.points
+ });
+ polygon.style.opacity = 0;
+ initProps(polygon, {
+ style: {
+ opacity
+ }
+ }, seriesModel, idx);
+ } else {
+ updateProps(polygon, {
+ style: {
+ opacity
+ },
+ shape: {
+ points: layout5.points
+ }
+ }, seriesModel, idx);
+ }
+ setStatesStylesFromModel(polygon, itemModel);
+ this._updateLabel(data, idx);
+ toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ };
+ FunnelPiece2.prototype._updateLabel = function(data, idx) {
+ var polygon = this;
+ var labelLine = this.getTextGuideLine();
+ var labelText = polygon.getTextContent();
+ var seriesModel = data.hostModel;
+ var itemModel = data.getItemModel(idx);
+ var layout5 = data.getItemLayout(idx);
+ var labelLayout2 = layout5.label;
+ var style = data.getItemVisual(idx, "style");
+ var visualColor = style.fill;
+ setLabelStyle(
+ labelText,
+ getLabelStatesModels(itemModel),
+ {
+ labelFetcher: data.hostModel,
+ labelDataIndex: idx,
+ defaultOpacity: style.opacity,
+ defaultText: data.getName(idx)
+ },
+ {
+ normal: {
+ align: labelLayout2.textAlign,
+ verticalAlign: labelLayout2.verticalAlign
+ }
+ }
+ );
+ polygon.setTextConfig({
+ local: true,
+ inside: !!labelLayout2.inside,
+ insideStroke: visualColor,
+ outsideFill: visualColor
+ });
+ var linePoints = labelLayout2.linePoints;
+ labelLine.setShape({
+ points: linePoints
+ });
+ polygon.textGuideLineConfig = {
+ anchor: linePoints ? new Point_default(linePoints[0][0], linePoints[0][1]) : null
+ };
+ updateProps(labelText, {
+ style: {
+ x: labelLayout2.x,
+ y: labelLayout2.y
+ }
+ }, seriesModel, idx);
+ labelText.attr({
+ rotation: labelLayout2.rotation,
+ originX: labelLayout2.x,
+ originY: labelLayout2.y,
+ z2: 10
+ });
+ setLabelLineStyle(polygon, getLabelLineStatesModels(itemModel), {
+ stroke: visualColor
+ });
+ };
+ return FunnelPiece2;
+}(Polygon_default);
+var FunnelView = function(_super) {
+ __extends(FunnelView2, _super);
+ function FunnelView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = FunnelView2.type;
+ _this.ignoreLabelLineUpdate = true;
+ return _this;
+ }
+ FunnelView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ var group = this.group;
+ data.diff(oldData).add(function(idx) {
+ var funnelPiece = new FunnelPiece(data, idx);
+ data.setItemGraphicEl(idx, funnelPiece);
+ group.add(funnelPiece);
+ }).update(function(newIdx, oldIdx) {
+ var piece = oldData.getItemGraphicEl(oldIdx);
+ piece.updateData(data, newIdx);
+ group.add(piece);
+ data.setItemGraphicEl(newIdx, piece);
+ }).remove(function(idx) {
+ var piece = oldData.getItemGraphicEl(idx);
+ removeElementWithFadeOut(piece, seriesModel, idx);
+ }).execute();
+ this._data = data;
+ };
+ FunnelView2.prototype.remove = function() {
+ this.group.removeAll();
+ this._data = null;
+ };
+ FunnelView2.prototype.dispose = function() {
+ };
+ FunnelView2.type = "funnel";
+ return FunnelView2;
+}(Chart_default);
+var FunnelView_default = FunnelView;
+
+// node_modules/echarts/lib/chart/funnel/FunnelSeries.js
+var FunnelSeriesModel = function(_super) {
+ __extends(FunnelSeriesModel2, _super);
+ function FunnelSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = FunnelSeriesModel2.type;
+ return _this;
+ }
+ FunnelSeriesModel2.prototype.init = function(option) {
+ _super.prototype.init.apply(this, arguments);
+ this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
+ this._defaultLabelLine(option);
+ };
+ FunnelSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesDataSimply(this, {
+ coordDimensions: ["value"],
+ encodeDefaulter: curry(makeSeriesEncodeForNameBased, this)
+ });
+ };
+ FunnelSeriesModel2.prototype._defaultLabelLine = function(option) {
+ defaultEmphasis(option, "labelLine", ["show"]);
+ var labelLineNormalOpt = option.labelLine;
+ var labelLineEmphasisOpt = option.emphasis.labelLine;
+ labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;
+ labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;
+ };
+ FunnelSeriesModel2.prototype.getDataParams = function(dataIndex) {
+ var data = this.getData();
+ var params = _super.prototype.getDataParams.call(this, dataIndex);
+ var valueDim = data.mapDimension("value");
+ var sum2 = data.getSum(valueDim);
+ params.percent = !sum2 ? 0 : +(data.get(valueDim, dataIndex) / sum2 * 100).toFixed(2);
+ params.$vars.push("percent");
+ return params;
+ };
+ FunnelSeriesModel2.type = "series.funnel";
+ FunnelSeriesModel2.defaultOption = {
+ z: 2,
+ legendHoverLink: true,
+ colorBy: "data",
+ left: 80,
+ top: 60,
+ right: 80,
+ bottom: 60,
+ minSize: "0%",
+ maxSize: "100%",
+ sort: "descending",
+ orient: "vertical",
+ gap: 0,
+ funnelAlign: "center",
+ label: {
+ show: true,
+ position: "outer"
+ },
+ labelLine: {
+ show: true,
+ length: 20,
+ lineStyle: {
+ width: 1
+ }
+ },
+ itemStyle: {
+ borderColor: "#fff",
+ borderWidth: 1
+ },
+ emphasis: {
+ label: {
+ show: true
+ }
+ },
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ }
+ };
+ return FunnelSeriesModel2;
+}(Series_default);
+var FunnelSeries_default = FunnelSeriesModel;
+
+// node_modules/echarts/lib/chart/funnel/funnelLayout.js
+function getViewRect4(seriesModel, api) {
+ return getLayoutRect(seriesModel.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+}
+function getSortedIndices(data, sort4) {
+ var valueDim = data.mapDimension("value");
+ var valueArr = data.mapArray(valueDim, function(val) {
+ return val;
+ });
+ var indices = [];
+ var isAscending = sort4 === "ascending";
+ for (var i = 0, len2 = data.count(); i < len2; i++) {
+ indices[i] = i;
+ }
+ if (isFunction(sort4)) {
+ indices.sort(sort4);
+ } else if (sort4 !== "none") {
+ indices.sort(function(a, b) {
+ return isAscending ? valueArr[a] - valueArr[b] : valueArr[b] - valueArr[a];
+ });
+ }
+ return indices;
+}
+function labelLayout(data) {
+ var seriesModel = data.hostModel;
+ var orient = seriesModel.get("orient");
+ data.each(function(idx) {
+ var itemModel = data.getItemModel(idx);
+ var labelModel = itemModel.getModel("label");
+ var labelPosition = labelModel.get("position");
+ var labelLineModel = itemModel.getModel("labelLine");
+ var layout5 = data.getItemLayout(idx);
+ var points4 = layout5.points;
+ var isLabelInside = labelPosition === "inner" || labelPosition === "inside" || labelPosition === "center" || labelPosition === "insideLeft" || labelPosition === "insideRight";
+ var textAlign;
+ var textX;
+ var textY;
+ var linePoints;
+ if (isLabelInside) {
+ if (labelPosition === "insideLeft") {
+ textX = (points4[0][0] + points4[3][0]) / 2 + 5;
+ textY = (points4[0][1] + points4[3][1]) / 2;
+ textAlign = "left";
+ } else if (labelPosition === "insideRight") {
+ textX = (points4[1][0] + points4[2][0]) / 2 - 5;
+ textY = (points4[1][1] + points4[2][1]) / 2;
+ textAlign = "right";
+ } else {
+ textX = (points4[0][0] + points4[1][0] + points4[2][0] + points4[3][0]) / 4;
+ textY = (points4[0][1] + points4[1][1] + points4[2][1] + points4[3][1]) / 4;
+ textAlign = "center";
+ }
+ linePoints = [[textX, textY], [textX, textY]];
+ } else {
+ var x1 = void 0;
+ var y1 = void 0;
+ var x2 = void 0;
+ var y2 = void 0;
+ var labelLineLen = labelLineModel.get("length");
+ if (true) {
+ if (orient === "vertical" && ["top", "bottom"].indexOf(labelPosition) > -1) {
+ labelPosition = "left";
+ console.warn("Position error: Funnel chart on vertical orient dose not support top and bottom.");
+ }
+ if (orient === "horizontal" && ["left", "right"].indexOf(labelPosition) > -1) {
+ labelPosition = "bottom";
+ console.warn("Position error: Funnel chart on horizontal orient dose not support left and right.");
+ }
+ }
+ if (labelPosition === "left") {
+ x1 = (points4[3][0] + points4[0][0]) / 2;
+ y1 = (points4[3][1] + points4[0][1]) / 2;
+ x2 = x1 - labelLineLen;
+ textX = x2 - 5;
+ textAlign = "right";
+ } else if (labelPosition === "right") {
+ x1 = (points4[1][0] + points4[2][0]) / 2;
+ y1 = (points4[1][1] + points4[2][1]) / 2;
+ x2 = x1 + labelLineLen;
+ textX = x2 + 5;
+ textAlign = "left";
+ } else if (labelPosition === "top") {
+ x1 = (points4[3][0] + points4[0][0]) / 2;
+ y1 = (points4[3][1] + points4[0][1]) / 2;
+ y2 = y1 - labelLineLen;
+ textY = y2 - 5;
+ textAlign = "center";
+ } else if (labelPosition === "bottom") {
+ x1 = (points4[1][0] + points4[2][0]) / 2;
+ y1 = (points4[1][1] + points4[2][1]) / 2;
+ y2 = y1 + labelLineLen;
+ textY = y2 + 5;
+ textAlign = "center";
+ } else if (labelPosition === "rightTop") {
+ x1 = orient === "horizontal" ? points4[3][0] : points4[1][0];
+ y1 = orient === "horizontal" ? points4[3][1] : points4[1][1];
+ if (orient === "horizontal") {
+ y2 = y1 - labelLineLen;
+ textY = y2 - 5;
+ textAlign = "center";
+ } else {
+ x2 = x1 + labelLineLen;
+ textX = x2 + 5;
+ textAlign = "top";
+ }
+ } else if (labelPosition === "rightBottom") {
+ x1 = points4[2][0];
+ y1 = points4[2][1];
+ if (orient === "horizontal") {
+ y2 = y1 + labelLineLen;
+ textY = y2 + 5;
+ textAlign = "center";
+ } else {
+ x2 = x1 + labelLineLen;
+ textX = x2 + 5;
+ textAlign = "bottom";
+ }
+ } else if (labelPosition === "leftTop") {
+ x1 = points4[0][0];
+ y1 = orient === "horizontal" ? points4[0][1] : points4[1][1];
+ if (orient === "horizontal") {
+ y2 = y1 - labelLineLen;
+ textY = y2 - 5;
+ textAlign = "center";
+ } else {
+ x2 = x1 - labelLineLen;
+ textX = x2 - 5;
+ textAlign = "right";
+ }
+ } else if (labelPosition === "leftBottom") {
+ x1 = orient === "horizontal" ? points4[1][0] : points4[3][0];
+ y1 = orient === "horizontal" ? points4[1][1] : points4[2][1];
+ if (orient === "horizontal") {
+ y2 = y1 + labelLineLen;
+ textY = y2 + 5;
+ textAlign = "center";
+ } else {
+ x2 = x1 - labelLineLen;
+ textX = x2 - 5;
+ textAlign = "right";
+ }
+ } else {
+ x1 = (points4[1][0] + points4[2][0]) / 2;
+ y1 = (points4[1][1] + points4[2][1]) / 2;
+ if (orient === "horizontal") {
+ y2 = y1 + labelLineLen;
+ textY = y2 + 5;
+ textAlign = "center";
+ } else {
+ x2 = x1 + labelLineLen;
+ textX = x2 + 5;
+ textAlign = "left";
+ }
+ }
+ if (orient === "horizontal") {
+ x2 = x1;
+ textX = x2;
+ } else {
+ y2 = y1;
+ textY = y2;
+ }
+ linePoints = [[x1, y1], [x2, y2]];
+ }
+ layout5.label = {
+ linePoints,
+ x: textX,
+ y: textY,
+ verticalAlign: "middle",
+ textAlign,
+ inside: isLabelInside
+ };
+ });
+}
+function funnelLayout(ecModel, api) {
+ ecModel.eachSeriesByType("funnel", function(seriesModel) {
+ var data = seriesModel.getData();
+ var valueDim = data.mapDimension("value");
+ var sort4 = seriesModel.get("sort");
+ var viewRect2 = getViewRect4(seriesModel, api);
+ var orient = seriesModel.get("orient");
+ var viewWidth = viewRect2.width;
+ var viewHeight = viewRect2.height;
+ var indices = getSortedIndices(data, sort4);
+ var x = viewRect2.x;
+ var y = viewRect2.y;
+ var sizeExtent = orient === "horizontal" ? [parsePercent2(seriesModel.get("minSize"), viewHeight), parsePercent2(seriesModel.get("maxSize"), viewHeight)] : [parsePercent2(seriesModel.get("minSize"), viewWidth), parsePercent2(seriesModel.get("maxSize"), viewWidth)];
+ var dataExtent = data.getDataExtent(valueDim);
+ var min3 = seriesModel.get("min");
+ var max3 = seriesModel.get("max");
+ if (min3 == null) {
+ min3 = Math.min(dataExtent[0], 0);
+ }
+ if (max3 == null) {
+ max3 = dataExtent[1];
+ }
+ var funnelAlign = seriesModel.get("funnelAlign");
+ var gap = seriesModel.get("gap");
+ var viewSize = orient === "horizontal" ? viewWidth : viewHeight;
+ var itemSize = (viewSize - gap * (data.count() - 1)) / data.count();
+ var getLinePoints = function(idx2, offset) {
+ if (orient === "horizontal") {
+ var val_1 = data.get(valueDim, idx2) || 0;
+ var itemHeight = linearMap(val_1, [min3, max3], sizeExtent, true);
+ var y0 = void 0;
+ switch (funnelAlign) {
+ case "top":
+ y0 = y;
+ break;
+ case "center":
+ y0 = y + (viewHeight - itemHeight) / 2;
+ break;
+ case "bottom":
+ y0 = y + (viewHeight - itemHeight);
+ break;
+ }
+ return [[offset, y0], [offset, y0 + itemHeight]];
+ }
+ var val = data.get(valueDim, idx2) || 0;
+ var itemWidth = linearMap(val, [min3, max3], sizeExtent, true);
+ var x0;
+ switch (funnelAlign) {
+ case "left":
+ x0 = x;
+ break;
+ case "center":
+ x0 = x + (viewWidth - itemWidth) / 2;
+ break;
+ case "right":
+ x0 = x + viewWidth - itemWidth;
+ break;
+ }
+ return [[x0, offset], [x0 + itemWidth, offset]];
+ };
+ if (sort4 === "ascending") {
+ itemSize = -itemSize;
+ gap = -gap;
+ if (orient === "horizontal") {
+ x += viewWidth;
+ } else {
+ y += viewHeight;
+ }
+ indices = indices.reverse();
+ }
+ for (var i = 0; i < indices.length; i++) {
+ var idx = indices[i];
+ var nextIdx = indices[i + 1];
+ var itemModel = data.getItemModel(idx);
+ if (orient === "horizontal") {
+ var width = itemModel.get(["itemStyle", "width"]);
+ if (width == null) {
+ width = itemSize;
+ } else {
+ width = parsePercent2(width, viewWidth);
+ if (sort4 === "ascending") {
+ width = -width;
+ }
+ }
+ var start2 = getLinePoints(idx, x);
+ var end2 = getLinePoints(nextIdx, x + width);
+ x += width + gap;
+ data.setItemLayout(idx, {
+ points: start2.concat(end2.slice().reverse())
+ });
+ } else {
+ var height = itemModel.get(["itemStyle", "height"]);
+ if (height == null) {
+ height = itemSize;
+ } else {
+ height = parsePercent2(height, viewHeight);
+ if (sort4 === "ascending") {
+ height = -height;
+ }
+ }
+ var start2 = getLinePoints(idx, y);
+ var end2 = getLinePoints(nextIdx, y + height);
+ y += height + gap;
+ data.setItemLayout(idx, {
+ points: start2.concat(end2.slice().reverse())
+ });
+ }
+ }
+ labelLayout(data);
+ });
+}
+
+// node_modules/echarts/lib/chart/funnel/install.js
+function install16(registers) {
+ registers.registerChartView(FunnelView_default);
+ registers.registerSeriesModel(FunnelSeries_default);
+ registers.registerLayout(funnelLayout);
+ registers.registerProcessor(dataFilter("funnel"));
+}
+
+// node_modules/echarts/lib/chart/parallel/ParallelView.js
+var DEFAULT_SMOOTH = 0.3;
+var ParallelView = function(_super) {
+ __extends(ParallelView3, _super);
+ function ParallelView3() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ParallelView3.type;
+ _this._dataGroup = new Group_default();
+ _this._initialized = false;
+ return _this;
+ }
+ ParallelView3.prototype.init = function() {
+ this.group.add(this._dataGroup);
+ };
+ ParallelView3.prototype.render = function(seriesModel, ecModel, api, payload) {
+ this._progressiveEls = null;
+ var dataGroup = this._dataGroup;
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ var coordSys = seriesModel.coordinateSystem;
+ var dimensions = coordSys.dimensions;
+ var seriesScope = makeSeriesScope3(seriesModel);
+ data.diff(oldData).add(add2).update(update).remove(remove).execute();
+ function add2(newDataIndex) {
+ var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);
+ updateElCommon(line, data, newDataIndex, seriesScope);
+ }
+ function update(newDataIndex, oldDataIndex) {
+ var line = oldData.getItemGraphicEl(oldDataIndex);
+ var points4 = createLinePoints(data, newDataIndex, dimensions, coordSys);
+ data.setItemGraphicEl(newDataIndex, line);
+ updateProps(line, {
+ shape: {
+ points: points4
+ }
+ }, seriesModel, newDataIndex);
+ saveOldStyle(line);
+ updateElCommon(line, data, newDataIndex, seriesScope);
+ }
+ function remove(oldDataIndex) {
+ var line = oldData.getItemGraphicEl(oldDataIndex);
+ dataGroup.remove(line);
+ }
+ if (!this._initialized) {
+ this._initialized = true;
+ var clipPath = createGridClipShape(coordSys, seriesModel, function() {
+ setTimeout(function() {
+ dataGroup.removeClipPath();
+ });
+ });
+ dataGroup.setClipPath(clipPath);
+ }
+ this._data = data;
+ };
+ ParallelView3.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
+ this._initialized = true;
+ this._data = null;
+ this._dataGroup.removeAll();
+ };
+ ParallelView3.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
+ var data = seriesModel.getData();
+ var coordSys = seriesModel.coordinateSystem;
+ var dimensions = coordSys.dimensions;
+ var seriesScope = makeSeriesScope3(seriesModel);
+ var progressiveEls = this._progressiveEls = [];
+ for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {
+ var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);
+ line.incremental = true;
+ updateElCommon(line, data, dataIndex, seriesScope);
+ progressiveEls.push(line);
+ }
+ };
+ ParallelView3.prototype.remove = function() {
+ this._dataGroup && this._dataGroup.removeAll();
+ this._data = null;
+ };
+ ParallelView3.type = "parallel";
+ return ParallelView3;
+}(Chart_default);
+function createGridClipShape(coordSys, seriesModel, cb) {
+ var parallelModel = coordSys.model;
+ var rect = coordSys.getRect();
+ var rectEl = new Rect_default({
+ shape: {
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height
+ }
+ });
+ var dim = parallelModel.get("layout") === "horizontal" ? "width" : "height";
+ rectEl.setShape(dim, 0);
+ initProps(rectEl, {
+ shape: {
+ width: rect.width,
+ height: rect.height
+ }
+ }, seriesModel, cb);
+ return rectEl;
+}
+function createLinePoints(data, dataIndex, dimensions, coordSys) {
+ var points4 = [];
+ for (var i = 0; i < dimensions.length; i++) {
+ var dimName = dimensions[i];
+ var value = data.get(data.mapDimension(dimName), dataIndex);
+ if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {
+ points4.push(coordSys.dataToPoint(value, dimName));
+ }
+ }
+ return points4;
+}
+function addEl(data, dataGroup, dataIndex, dimensions, coordSys) {
+ var points4 = createLinePoints(data, dataIndex, dimensions, coordSys);
+ var line = new Polyline_default({
+ shape: {
+ points: points4
+ },
+ z2: 10
+ });
+ dataGroup.add(line);
+ data.setItemGraphicEl(dataIndex, line);
+ return line;
+}
+function makeSeriesScope3(seriesModel) {
+ var smooth = seriesModel.get("smooth", true);
+ smooth === true && (smooth = DEFAULT_SMOOTH);
+ smooth = numericToNumber(smooth);
+ eqNaN(smooth) && (smooth = 0);
+ return {
+ smooth
+ };
+}
+function updateElCommon(el, data, dataIndex, seriesScope) {
+ el.useStyle(data.getItemVisual(dataIndex, "style"));
+ el.style.fill = null;
+ el.setShape("smooth", seriesScope.smooth);
+ var itemModel = data.getItemModel(dataIndex);
+ var emphasisModel = itemModel.getModel("emphasis");
+ setStatesStylesFromModel(el, itemModel, "lineStyle");
+ toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+}
+function isEmptyValue(val, axisType) {
+ return axisType === "category" ? val == null : val == null || isNaN(val);
+}
+var ParallelView_default = ParallelView;
+
+// node_modules/echarts/lib/chart/parallel/ParallelSeries.js
+var ParallelSeriesModel = function(_super) {
+ __extends(ParallelSeriesModel2, _super);
+ function ParallelSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ParallelSeriesModel2.type;
+ _this.visualStyleAccessPath = "lineStyle";
+ _this.visualDrawType = "stroke";
+ return _this;
+ }
+ ParallelSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesData_default(null, this, {
+ useEncodeDefaulter: bind(makeDefaultEncode, null, this)
+ });
+ };
+ ParallelSeriesModel2.prototype.getRawIndicesByActiveState = function(activeState) {
+ var coordSys = this.coordinateSystem;
+ var data = this.getData();
+ var indices = [];
+ coordSys.eachActiveState(data, function(theActiveState, dataIndex) {
+ if (activeState === theActiveState) {
+ indices.push(data.getRawIndex(dataIndex));
+ }
+ });
+ return indices;
+ };
+ ParallelSeriesModel2.type = "series.parallel";
+ ParallelSeriesModel2.dependencies = ["parallel"];
+ ParallelSeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "parallel",
+ parallelIndex: 0,
+ label: {
+ show: false
+ },
+ inactiveOpacity: 0.05,
+ activeOpacity: 1,
+ lineStyle: {
+ width: 1,
+ opacity: 0.45,
+ type: "solid"
+ },
+ emphasis: {
+ label: {
+ show: false
+ }
+ },
+ progressive: 500,
+ smooth: false,
+ animationEasing: "linear"
+ };
+ return ParallelSeriesModel2;
+}(Series_default);
+function makeDefaultEncode(seriesModel) {
+ var parallelModel = seriesModel.ecModel.getComponent("parallel", seriesModel.get("parallelIndex"));
+ if (!parallelModel) {
+ return;
+ }
+ var encodeDefine = {};
+ each(parallelModel.dimensions, function(axisDim) {
+ var dataDimIndex = convertDimNameToNumber(axisDim);
+ encodeDefine[axisDim] = dataDimIndex;
+ });
+ return encodeDefine;
+}
+function convertDimNameToNumber(dimName) {
+ return +dimName.replace("dim", "");
+}
+var ParallelSeries_default = ParallelSeriesModel;
+
+// node_modules/echarts/lib/chart/parallel/parallelVisual.js
+var opacityAccessPath2 = ["lineStyle", "opacity"];
+var parallelVisual = {
+ seriesType: "parallel",
+ reset: function(seriesModel, ecModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ var opacityMap = {
+ normal: seriesModel.get(["lineStyle", "opacity"]),
+ active: seriesModel.get("activeOpacity"),
+ inactive: seriesModel.get("inactiveOpacity")
+ };
+ return {
+ progress: function(params, data) {
+ coordSys.eachActiveState(data, function(activeState, dataIndex) {
+ var opacity = opacityMap[activeState];
+ if (activeState === "normal" && data.hasItemOption) {
+ var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath2, true);
+ itemOpacity != null && (opacity = itemOpacity);
+ }
+ var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style");
+ existsStyle.opacity = opacity;
+ }, params.start, params.end);
+ }
+ };
+ }
+};
+var parallelVisual_default = parallelVisual;
+
+// node_modules/echarts/lib/coord/parallel/parallelPreprocessor.js
+function parallelPreprocessor(option) {
+ createParallelIfNeeded(option);
+ mergeAxisOptionFromParallel(option);
+}
+function createParallelIfNeeded(option) {
+ if (option.parallel) {
+ return;
+ }
+ var hasParallelSeries = false;
+ each(option.series, function(seriesOpt) {
+ if (seriesOpt && seriesOpt.type === "parallel") {
+ hasParallelSeries = true;
+ }
+ });
+ if (hasParallelSeries) {
+ option.parallel = [{}];
+ }
+}
+function mergeAxisOptionFromParallel(option) {
+ var axes = normalizeToArray(option.parallelAxis);
+ each(axes, function(axisOption) {
+ if (!isObject(axisOption)) {
+ return;
+ }
+ var parallelIndex = axisOption.parallelIndex || 0;
+ var parallelOption = normalizeToArray(option.parallel)[parallelIndex];
+ if (parallelOption && parallelOption.parallelAxisDefault) {
+ merge(axisOption, parallelOption.parallelAxisDefault, false);
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/parallel/ParallelView.js
+var CLICK_THRESHOLD = 5;
+var ParallelView2 = function(_super) {
+ __extends(ParallelView3, _super);
+ function ParallelView3() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ParallelView3.type;
+ return _this;
+ }
+ ParallelView3.prototype.render = function(parallelModel, ecModel, api) {
+ this._model = parallelModel;
+ this._api = api;
+ if (!this._handlers) {
+ this._handlers = {};
+ each(handlers, function(handler, eventName) {
+ api.getZr().on(eventName, this._handlers[eventName] = bind(handler, this));
+ }, this);
+ }
+ createOrUpdate(this, "_throttledDispatchExpand", parallelModel.get("axisExpandRate"), "fixRate");
+ };
+ ParallelView3.prototype.dispose = function(ecModel, api) {
+ clear(this, "_throttledDispatchExpand");
+ each(this._handlers, function(handler, eventName) {
+ api.getZr().off(eventName, handler);
+ });
+ this._handlers = null;
+ };
+ ParallelView3.prototype._throttledDispatchExpand = function(opt) {
+ this._dispatchExpand(opt);
+ };
+ ParallelView3.prototype._dispatchExpand = function(opt) {
+ opt && this._api.dispatchAction(extend({
+ type: "parallelAxisExpand"
+ }, opt));
+ };
+ ParallelView3.type = "parallel";
+ return ParallelView3;
+}(Component_default2);
+var handlers = {
+ mousedown: function(e2) {
+ if (checkTrigger(this, "click")) {
+ this._mouseDownPoint = [e2.offsetX, e2.offsetY];
+ }
+ },
+ mouseup: function(e2) {
+ var mouseDownPoint = this._mouseDownPoint;
+ if (checkTrigger(this, "click") && mouseDownPoint) {
+ var point = [e2.offsetX, e2.offsetY];
+ var dist3 = Math.pow(mouseDownPoint[0] - point[0], 2) + Math.pow(mouseDownPoint[1] - point[1], 2);
+ if (dist3 > CLICK_THRESHOLD) {
+ return;
+ }
+ var result = this._model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]);
+ result.behavior !== "none" && this._dispatchExpand({
+ axisExpandWindow: result.axisExpandWindow
+ });
+ }
+ this._mouseDownPoint = null;
+ },
+ mousemove: function(e2) {
+ if (this._mouseDownPoint || !checkTrigger(this, "mousemove")) {
+ return;
+ }
+ var model = this._model;
+ var result = model.coordinateSystem.getSlidedAxisExpandWindow([e2.offsetX, e2.offsetY]);
+ var behavior = result.behavior;
+ behavior === "jump" && this._throttledDispatchExpand.debounceNextCall(model.get("axisExpandDebounce"));
+ this._throttledDispatchExpand(behavior === "none" ? null : {
+ axisExpandWindow: result.axisExpandWindow,
+ animation: behavior === "jump" ? null : {
+ duration: 0
+ }
+ });
+ }
+};
+function checkTrigger(view, triggerOn) {
+ var model = view._model;
+ return model.get("axisExpandable") && model.get("axisExpandTriggerOn") === triggerOn;
+}
+var ParallelView_default2 = ParallelView2;
+
+// node_modules/echarts/lib/coord/parallel/ParallelModel.js
+var ParallelModel = function(_super) {
+ __extends(ParallelModel2, _super);
+ function ParallelModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ParallelModel2.type;
+ return _this;
+ }
+ ParallelModel2.prototype.init = function() {
+ _super.prototype.init.apply(this, arguments);
+ this.mergeOption({});
+ };
+ ParallelModel2.prototype.mergeOption = function(newOption) {
+ var thisOption = this.option;
+ newOption && merge(thisOption, newOption, true);
+ this._initDimensions();
+ };
+ ParallelModel2.prototype.contains = function(model, ecModel) {
+ var parallelIndex = model.get("parallelIndex");
+ return parallelIndex != null && ecModel.getComponent("parallel", parallelIndex) === this;
+ };
+ ParallelModel2.prototype.setAxisExpand = function(opt) {
+ each(["axisExpandable", "axisExpandCenter", "axisExpandCount", "axisExpandWidth", "axisExpandWindow"], function(name) {
+ if (opt.hasOwnProperty(name)) {
+ this.option[name] = opt[name];
+ }
+ }, this);
+ };
+ ParallelModel2.prototype._initDimensions = function() {
+ var dimensions = this.dimensions = [];
+ var parallelAxisIndex = this.parallelAxisIndex = [];
+ var axisModels = filter(this.ecModel.queryComponents({
+ mainType: "parallelAxis"
+ }), function(axisModel) {
+ return (axisModel.get("parallelIndex") || 0) === this.componentIndex;
+ }, this);
+ each(axisModels, function(axisModel) {
+ dimensions.push("dim" + axisModel.get("dim"));
+ parallelAxisIndex.push(axisModel.componentIndex);
+ });
+ };
+ ParallelModel2.type = "parallel";
+ ParallelModel2.dependencies = ["parallelAxis"];
+ ParallelModel2.layoutMode = "box";
+ ParallelModel2.defaultOption = {
+ z: 0,
+ left: 80,
+ top: 60,
+ right: 80,
+ bottom: 60,
+ layout: "horizontal",
+ axisExpandable: false,
+ axisExpandCenter: null,
+ axisExpandCount: 0,
+ axisExpandWidth: 50,
+ axisExpandRate: 17,
+ axisExpandDebounce: 50,
+ axisExpandSlideTriggerArea: [-0.15, 0.05, 0.4],
+ axisExpandTriggerOn: "click",
+ parallelAxisDefault: null
+ };
+ return ParallelModel2;
+}(Component_default);
+var ParallelModel_default = ParallelModel;
+
+// node_modules/echarts/lib/coord/parallel/ParallelAxis.js
+var ParallelAxis = function(_super) {
+ __extends(ParallelAxis2, _super);
+ function ParallelAxis2(dim, scale4, coordExtent, axisType, axisIndex) {
+ var _this = _super.call(this, dim, scale4, coordExtent) || this;
+ _this.type = axisType || "value";
+ _this.axisIndex = axisIndex;
+ return _this;
+ }
+ ParallelAxis2.prototype.isHorizontal = function() {
+ return this.coordinateSystem.getModel().get("layout") !== "horizontal";
+ };
+ return ParallelAxis2;
+}(Axis_default);
+var ParallelAxis_default = ParallelAxis;
+
+// node_modules/echarts/lib/component/helper/sliderMove.js
+function sliderMove(delta, handleEnds, extent3, handleIndex, minSpan, maxSpan) {
+ delta = delta || 0;
+ var extentSpan = extent3[1] - extent3[0];
+ if (minSpan != null) {
+ minSpan = restrict(minSpan, [0, extentSpan]);
+ }
+ if (maxSpan != null) {
+ maxSpan = Math.max(maxSpan, minSpan != null ? minSpan : 0);
+ }
+ if (handleIndex === "all") {
+ var handleSpan = Math.abs(handleEnds[1] - handleEnds[0]);
+ handleSpan = restrict(handleSpan, [0, extentSpan]);
+ minSpan = maxSpan = restrict(handleSpan, [minSpan, maxSpan]);
+ handleIndex = 0;
+ }
+ handleEnds[0] = restrict(handleEnds[0], extent3);
+ handleEnds[1] = restrict(handleEnds[1], extent3);
+ var originalDistSign = getSpanSign(handleEnds, handleIndex);
+ handleEnds[handleIndex] += delta;
+ var extentMinSpan = minSpan || 0;
+ var realExtent = extent3.slice();
+ originalDistSign.sign < 0 ? realExtent[0] += extentMinSpan : realExtent[1] -= extentMinSpan;
+ handleEnds[handleIndex] = restrict(handleEnds[handleIndex], realExtent);
+ var currDistSign;
+ currDistSign = getSpanSign(handleEnds, handleIndex);
+ if (minSpan != null && (currDistSign.sign !== originalDistSign.sign || currDistSign.span < minSpan)) {
+ handleEnds[1 - handleIndex] = handleEnds[handleIndex] + originalDistSign.sign * minSpan;
+ }
+ currDistSign = getSpanSign(handleEnds, handleIndex);
+ if (maxSpan != null && currDistSign.span > maxSpan) {
+ handleEnds[1 - handleIndex] = handleEnds[handleIndex] + currDistSign.sign * maxSpan;
+ }
+ return handleEnds;
+}
+function getSpanSign(handleEnds, handleIndex) {
+ var dist3 = handleEnds[handleIndex] - handleEnds[1 - handleIndex];
+ return {
+ span: Math.abs(dist3),
+ sign: dist3 > 0 ? -1 : dist3 < 0 ? 1 : handleIndex ? -1 : 1
+ };
+}
+function restrict(value, extend2) {
+ return Math.min(extend2[1] != null ? extend2[1] : Infinity, Math.max(extend2[0] != null ? extend2[0] : -Infinity, value));
+}
+
+// node_modules/echarts/lib/coord/parallel/Parallel.js
+var each6 = each;
+var mathMin9 = Math.min;
+var mathMax9 = Math.max;
+var mathFloor2 = Math.floor;
+var mathCeil2 = Math.ceil;
+var round6 = round;
+var PI9 = Math.PI;
+var Parallel = function() {
+ function Parallel2(parallelModel, ecModel, api) {
+ this.type = "parallel";
+ this._axesMap = createHashMap();
+ this._axesLayout = {};
+ this.dimensions = parallelModel.dimensions;
+ this._model = parallelModel;
+ this._init(parallelModel, ecModel, api);
+ }
+ Parallel2.prototype._init = function(parallelModel, ecModel, api) {
+ var dimensions = parallelModel.dimensions;
+ var parallelAxisIndex = parallelModel.parallelAxisIndex;
+ each6(dimensions, function(dim, idx) {
+ var axisIndex = parallelAxisIndex[idx];
+ var axisModel = ecModel.getComponent("parallelAxis", axisIndex);
+ var axis = this._axesMap.set(dim, new ParallelAxis_default(dim, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisIndex));
+ var isCategory2 = axis.type === "category";
+ axis.onBand = isCategory2 && axisModel.get("boundaryGap");
+ axis.inverse = axisModel.get("inverse");
+ axisModel.axis = axis;
+ axis.model = axisModel;
+ axis.coordinateSystem = axisModel.coordinateSystem = this;
+ }, this);
+ };
+ Parallel2.prototype.update = function(ecModel, api) {
+ this._updateAxesFromSeries(this._model, ecModel);
+ };
+ Parallel2.prototype.containPoint = function(point) {
+ var layoutInfo = this._makeLayoutInfo();
+ var axisBase = layoutInfo.axisBase;
+ var layoutBase = layoutInfo.layoutBase;
+ var pixelDimIndex = layoutInfo.pixelDimIndex;
+ var pAxis = point[1 - pixelDimIndex];
+ var pLayout = point[pixelDimIndex];
+ return pAxis >= axisBase && pAxis <= axisBase + layoutInfo.axisLength && pLayout >= layoutBase && pLayout <= layoutBase + layoutInfo.layoutLength;
+ };
+ Parallel2.prototype.getModel = function() {
+ return this._model;
+ };
+ Parallel2.prototype._updateAxesFromSeries = function(parallelModel, ecModel) {
+ ecModel.eachSeries(function(seriesModel) {
+ if (!parallelModel.contains(seriesModel, ecModel)) {
+ return;
+ }
+ var data = seriesModel.getData();
+ each6(this.dimensions, function(dim) {
+ var axis = this._axesMap.get(dim);
+ axis.scale.unionExtentFromData(data, data.mapDimension(dim));
+ niceScaleExtent(axis.scale, axis.model);
+ }, this);
+ }, this);
+ };
+ Parallel2.prototype.resize = function(parallelModel, api) {
+ this._rect = getLayoutRect(parallelModel.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+ this._layoutAxes();
+ };
+ Parallel2.prototype.getRect = function() {
+ return this._rect;
+ };
+ Parallel2.prototype._makeLayoutInfo = function() {
+ var parallelModel = this._model;
+ var rect = this._rect;
+ var xy = ["x", "y"];
+ var wh = ["width", "height"];
+ var layout5 = parallelModel.get("layout");
+ var pixelDimIndex = layout5 === "horizontal" ? 0 : 1;
+ var layoutLength = rect[wh[pixelDimIndex]];
+ var layoutExtent = [0, layoutLength];
+ var axisCount = this.dimensions.length;
+ var axisExpandWidth = restrict2(parallelModel.get("axisExpandWidth"), layoutExtent);
+ var axisExpandCount = restrict2(parallelModel.get("axisExpandCount") || 0, [0, axisCount]);
+ var axisExpandable = parallelModel.get("axisExpandable") && axisCount > 3 && axisCount > axisExpandCount && axisExpandCount > 1 && axisExpandWidth > 0 && layoutLength > 0;
+ var axisExpandWindow = parallelModel.get("axisExpandWindow");
+ var winSize;
+ if (!axisExpandWindow) {
+ winSize = restrict2(axisExpandWidth * (axisExpandCount - 1), layoutExtent);
+ var axisExpandCenter = parallelModel.get("axisExpandCenter") || mathFloor2(axisCount / 2);
+ axisExpandWindow = [axisExpandWidth * axisExpandCenter - winSize / 2];
+ axisExpandWindow[1] = axisExpandWindow[0] + winSize;
+ } else {
+ winSize = restrict2(axisExpandWindow[1] - axisExpandWindow[0], layoutExtent);
+ axisExpandWindow[1] = axisExpandWindow[0] + winSize;
+ }
+ var axisCollapseWidth = (layoutLength - winSize) / (axisCount - axisExpandCount);
+ axisCollapseWidth < 3 && (axisCollapseWidth = 0);
+ var winInnerIndices = [mathFloor2(round6(axisExpandWindow[0] / axisExpandWidth, 1)) + 1, mathCeil2(round6(axisExpandWindow[1] / axisExpandWidth, 1)) - 1];
+ var axisExpandWindow0Pos = axisCollapseWidth / axisExpandWidth * axisExpandWindow[0];
+ return {
+ layout: layout5,
+ pixelDimIndex,
+ layoutBase: rect[xy[pixelDimIndex]],
+ layoutLength,
+ axisBase: rect[xy[1 - pixelDimIndex]],
+ axisLength: rect[wh[1 - pixelDimIndex]],
+ axisExpandable,
+ axisExpandWidth,
+ axisCollapseWidth,
+ axisExpandWindow,
+ axisCount,
+ winInnerIndices,
+ axisExpandWindow0Pos
+ };
+ };
+ Parallel2.prototype._layoutAxes = function() {
+ var rect = this._rect;
+ var axes = this._axesMap;
+ var dimensions = this.dimensions;
+ var layoutInfo = this._makeLayoutInfo();
+ var layout5 = layoutInfo.layout;
+ axes.each(function(axis) {
+ var axisExtent = [0, layoutInfo.axisLength];
+ var idx = axis.inverse ? 1 : 0;
+ axis.setExtent(axisExtent[idx], axisExtent[1 - idx]);
+ });
+ each6(dimensions, function(dim, idx) {
+ var posInfo = (layoutInfo.axisExpandable ? layoutAxisWithExpand : layoutAxisWithoutExpand)(idx, layoutInfo);
+ var positionTable = {
+ horizontal: {
+ x: posInfo.position,
+ y: layoutInfo.axisLength
+ },
+ vertical: {
+ x: 0,
+ y: posInfo.position
+ }
+ };
+ var rotationTable = {
+ horizontal: PI9 / 2,
+ vertical: 0
+ };
+ var position2 = [positionTable[layout5].x + rect.x, positionTable[layout5].y + rect.y];
+ var rotation = rotationTable[layout5];
+ var transform2 = create2();
+ rotate(transform2, transform2, rotation);
+ translate(transform2, transform2, position2);
+ this._axesLayout[dim] = {
+ position: position2,
+ rotation,
+ transform: transform2,
+ axisNameAvailableWidth: posInfo.axisNameAvailableWidth,
+ axisLabelShow: posInfo.axisLabelShow,
+ nameTruncateMaxWidth: posInfo.nameTruncateMaxWidth,
+ tickDirection: 1,
+ labelDirection: 1
+ };
+ }, this);
+ };
+ Parallel2.prototype.getAxis = function(dim) {
+ return this._axesMap.get(dim);
+ };
+ Parallel2.prototype.dataToPoint = function(value, dim) {
+ return this.axisCoordToPoint(this._axesMap.get(dim).dataToCoord(value), dim);
+ };
+ Parallel2.prototype.eachActiveState = function(data, callback, start2, end2) {
+ start2 == null && (start2 = 0);
+ end2 == null && (end2 = data.count());
+ var axesMap = this._axesMap;
+ var dimensions = this.dimensions;
+ var dataDimensions = [];
+ var axisModels = [];
+ each(dimensions, function(axisDim) {
+ dataDimensions.push(data.mapDimension(axisDim));
+ axisModels.push(axesMap.get(axisDim).model);
+ });
+ var hasActiveSet = this.hasAxisBrushed();
+ for (var dataIndex = start2; dataIndex < end2; dataIndex++) {
+ var activeState = void 0;
+ if (!hasActiveSet) {
+ activeState = "normal";
+ } else {
+ activeState = "active";
+ var values = data.getValues(dataDimensions, dataIndex);
+ for (var j = 0, lenj = dimensions.length; j < lenj; j++) {
+ var state = axisModels[j].getActiveState(values[j]);
+ if (state === "inactive") {
+ activeState = "inactive";
+ break;
+ }
+ }
+ }
+ callback(activeState, dataIndex);
+ }
+ };
+ Parallel2.prototype.hasAxisBrushed = function() {
+ var dimensions = this.dimensions;
+ var axesMap = this._axesMap;
+ var hasActiveSet = false;
+ for (var j = 0, lenj = dimensions.length; j < lenj; j++) {
+ if (axesMap.get(dimensions[j]).model.getActiveState() !== "normal") {
+ hasActiveSet = true;
+ }
+ }
+ return hasActiveSet;
+ };
+ Parallel2.prototype.axisCoordToPoint = function(coord, dim) {
+ var axisLayout = this._axesLayout[dim];
+ return applyTransform2([coord, 0], axisLayout.transform);
+ };
+ Parallel2.prototype.getAxisLayout = function(dim) {
+ return clone(this._axesLayout[dim]);
+ };
+ Parallel2.prototype.getSlidedAxisExpandWindow = function(point) {
+ var layoutInfo = this._makeLayoutInfo();
+ var pixelDimIndex = layoutInfo.pixelDimIndex;
+ var axisExpandWindow = layoutInfo.axisExpandWindow.slice();
+ var winSize = axisExpandWindow[1] - axisExpandWindow[0];
+ var extent3 = [0, layoutInfo.axisExpandWidth * (layoutInfo.axisCount - 1)];
+ if (!this.containPoint(point)) {
+ return {
+ behavior: "none",
+ axisExpandWindow
+ };
+ }
+ var pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos;
+ var delta;
+ var behavior = "slide";
+ var axisCollapseWidth = layoutInfo.axisCollapseWidth;
+ var triggerArea = this._model.get("axisExpandSlideTriggerArea");
+ var useJump = triggerArea[0] != null;
+ if (axisCollapseWidth) {
+ if (useJump && axisCollapseWidth && pointCoord < winSize * triggerArea[0]) {
+ behavior = "jump";
+ delta = pointCoord - winSize * triggerArea[2];
+ } else if (useJump && axisCollapseWidth && pointCoord > winSize * (1 - triggerArea[0])) {
+ behavior = "jump";
+ delta = pointCoord - winSize * (1 - triggerArea[2]);
+ } else {
+ (delta = pointCoord - winSize * triggerArea[1]) >= 0 && (delta = pointCoord - winSize * (1 - triggerArea[1])) <= 0 && (delta = 0);
+ }
+ delta *= layoutInfo.axisExpandWidth / axisCollapseWidth;
+ delta ? sliderMove(delta, axisExpandWindow, extent3, "all") : behavior = "none";
+ } else {
+ var winSize2 = axisExpandWindow[1] - axisExpandWindow[0];
+ var pos = extent3[1] * pointCoord / winSize2;
+ axisExpandWindow = [mathMax9(0, pos - winSize2 / 2)];
+ axisExpandWindow[1] = mathMin9(extent3[1], axisExpandWindow[0] + winSize2);
+ axisExpandWindow[0] = axisExpandWindow[1] - winSize2;
+ }
+ return {
+ axisExpandWindow,
+ behavior
+ };
+ };
+ return Parallel2;
+}();
+function restrict2(len2, extent3) {
+ return mathMin9(mathMax9(len2, extent3[0]), extent3[1]);
+}
+function layoutAxisWithoutExpand(axisIndex, layoutInfo) {
+ var step = layoutInfo.layoutLength / (layoutInfo.axisCount - 1);
+ return {
+ position: step * axisIndex,
+ axisNameAvailableWidth: step,
+ axisLabelShow: true
+ };
+}
+function layoutAxisWithExpand(axisIndex, layoutInfo) {
+ var layoutLength = layoutInfo.layoutLength;
+ var axisExpandWidth = layoutInfo.axisExpandWidth;
+ var axisCount = layoutInfo.axisCount;
+ var axisCollapseWidth = layoutInfo.axisCollapseWidth;
+ var winInnerIndices = layoutInfo.winInnerIndices;
+ var position2;
+ var axisNameAvailableWidth = axisCollapseWidth;
+ var axisLabelShow = false;
+ var nameTruncateMaxWidth;
+ if (axisIndex < winInnerIndices[0]) {
+ position2 = axisIndex * axisCollapseWidth;
+ nameTruncateMaxWidth = axisCollapseWidth;
+ } else if (axisIndex <= winInnerIndices[1]) {
+ position2 = layoutInfo.axisExpandWindow0Pos + axisIndex * axisExpandWidth - layoutInfo.axisExpandWindow[0];
+ axisNameAvailableWidth = axisExpandWidth;
+ axisLabelShow = true;
+ } else {
+ position2 = layoutLength - (axisCount - 1 - axisIndex) * axisCollapseWidth;
+ nameTruncateMaxWidth = axisCollapseWidth;
+ }
+ return {
+ position: position2,
+ axisNameAvailableWidth,
+ axisLabelShow,
+ nameTruncateMaxWidth
+ };
+}
+var Parallel_default = Parallel;
+
+// node_modules/echarts/lib/coord/parallel/parallelCreator.js
+function createParallelCoordSys(ecModel, api) {
+ var coordSysList = [];
+ ecModel.eachComponent("parallel", function(parallelModel, idx) {
+ var coordSys = new Parallel_default(parallelModel, ecModel, api);
+ coordSys.name = "parallel_" + idx;
+ coordSys.resize(parallelModel, api);
+ parallelModel.coordinateSystem = coordSys;
+ coordSys.model = parallelModel;
+ coordSysList.push(coordSys);
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.get("coordinateSystem") === "parallel") {
+ var parallelModel = seriesModel.getReferringComponents("parallel", SINGLE_REFERRING).models[0];
+ seriesModel.coordinateSystem = parallelModel.coordinateSystem;
+ }
+ });
+ return coordSysList;
+}
+var parallelCoordSysCreator = {
+ create: createParallelCoordSys
+};
+var parallelCreator_default = parallelCoordSysCreator;
+
+// node_modules/echarts/lib/coord/parallel/AxisModel.js
+var ParallelAxisModel = function(_super) {
+ __extends(ParallelAxisModel2, _super);
+ function ParallelAxisModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ParallelAxisModel2.type;
+ _this.activeIntervals = [];
+ return _this;
+ }
+ ParallelAxisModel2.prototype.getAreaSelectStyle = function() {
+ return makeStyleMapper([
+ ["fill", "color"],
+ ["lineWidth", "borderWidth"],
+ ["stroke", "borderColor"],
+ ["width", "width"],
+ ["opacity", "opacity"]
+ ])(this.getModel("areaSelectStyle"));
+ };
+ ParallelAxisModel2.prototype.setActiveIntervals = function(intervals) {
+ var activeIntervals = this.activeIntervals = clone(intervals);
+ if (activeIntervals) {
+ for (var i = activeIntervals.length - 1; i >= 0; i--) {
+ asc(activeIntervals[i]);
+ }
+ }
+ };
+ ParallelAxisModel2.prototype.getActiveState = function(value) {
+ var activeIntervals = this.activeIntervals;
+ if (!activeIntervals.length) {
+ return "normal";
+ }
+ if (value == null || isNaN(+value)) {
+ return "inactive";
+ }
+ if (activeIntervals.length === 1) {
+ var interval = activeIntervals[0];
+ if (interval[0] <= value && value <= interval[1]) {
+ return "active";
+ }
+ } else {
+ for (var i = 0, len2 = activeIntervals.length; i < len2; i++) {
+ if (activeIntervals[i][0] <= value && value <= activeIntervals[i][1]) {
+ return "active";
+ }
+ }
+ }
+ return "inactive";
+ };
+ return ParallelAxisModel2;
+}(Component_default);
+mixin(ParallelAxisModel, AxisModelCommonMixin);
+var AxisModel_default = ParallelAxisModel;
+
+// node_modules/echarts/lib/component/helper/BrushController.js
+var BRUSH_PANEL_GLOBAL = true;
+var mathMin10 = Math.min;
+var mathMax10 = Math.max;
+var mathPow3 = Math.pow;
+var COVER_Z = 1e4;
+var UNSELECT_THRESHOLD = 6;
+var MIN_RESIZE_LINE_WIDTH = 6;
+var MUTEX_RESOURCE_KEY = "globalPan";
+var DIRECTION_MAP = {
+ w: [0, 0],
+ e: [0, 1],
+ n: [1, 0],
+ s: [1, 1]
+};
+var CURSOR_MAP = {
+ w: "ew",
+ e: "ew",
+ n: "ns",
+ s: "ns",
+ ne: "nesw",
+ sw: "nesw",
+ nw: "nwse",
+ se: "nwse"
+};
+var DEFAULT_BRUSH_OPT = {
+ brushStyle: {
+ lineWidth: 2,
+ stroke: "rgba(210,219,238,0.3)",
+ fill: "#D2DBEE"
+ },
+ transformable: true,
+ brushMode: "single",
+ removeOnClick: false
+};
+var baseUID = 0;
+var BrushController = function(_super) {
+ __extends(BrushController2, _super);
+ function BrushController2(zr) {
+ var _this = _super.call(this) || this;
+ _this._track = [];
+ _this._covers = [];
+ _this._handlers = {};
+ if (true) {
+ assert(zr);
+ }
+ _this._zr = zr;
+ _this.group = new Group_default();
+ _this._uid = "brushController_" + baseUID++;
+ each(pointerHandlers, function(handler, eventName) {
+ this._handlers[eventName] = bind(handler, this);
+ }, _this);
+ return _this;
+ }
+ BrushController2.prototype.enableBrush = function(brushOption) {
+ if (true) {
+ assert(this._mounted);
+ }
+ this._brushType && this._doDisableBrush();
+ brushOption.brushType && this._doEnableBrush(brushOption);
+ return this;
+ };
+ BrushController2.prototype._doEnableBrush = function(brushOption) {
+ var zr = this._zr;
+ if (!this._enableGlobalPan) {
+ take(zr, MUTEX_RESOURCE_KEY, this._uid);
+ }
+ each(this._handlers, function(handler, eventName) {
+ zr.on(eventName, handler);
+ });
+ this._brushType = brushOption.brushType;
+ this._brushOption = merge(clone(DEFAULT_BRUSH_OPT), brushOption, true);
+ };
+ BrushController2.prototype._doDisableBrush = function() {
+ var zr = this._zr;
+ release(zr, MUTEX_RESOURCE_KEY, this._uid);
+ each(this._handlers, function(handler, eventName) {
+ zr.off(eventName, handler);
+ });
+ this._brushType = this._brushOption = null;
+ };
+ BrushController2.prototype.setPanels = function(panelOpts) {
+ if (panelOpts && panelOpts.length) {
+ var panels_1 = this._panels = {};
+ each(panelOpts, function(panelOpts2) {
+ panels_1[panelOpts2.panelId] = clone(panelOpts2);
+ });
+ } else {
+ this._panels = null;
+ }
+ return this;
+ };
+ BrushController2.prototype.mount = function(opt) {
+ opt = opt || {};
+ if (true) {
+ this._mounted = true;
+ }
+ this._enableGlobalPan = opt.enableGlobalPan;
+ var thisGroup = this.group;
+ this._zr.add(thisGroup);
+ thisGroup.attr({
+ x: opt.x || 0,
+ y: opt.y || 0,
+ rotation: opt.rotation || 0,
+ scaleX: opt.scaleX || 1,
+ scaleY: opt.scaleY || 1
+ });
+ this._transform = thisGroup.getLocalTransform();
+ return this;
+ };
+ BrushController2.prototype.updateCovers = function(coverConfigList) {
+ if (true) {
+ assert(this._mounted);
+ }
+ coverConfigList = map(coverConfigList, function(coverConfig) {
+ return merge(clone(DEFAULT_BRUSH_OPT), coverConfig, true);
+ });
+ var tmpIdPrefix = "\0-brush-index-";
+ var oldCovers = this._covers;
+ var newCovers = this._covers = [];
+ var controller = this;
+ var creatingCover = this._creatingCover;
+ new DataDiffer_default(oldCovers, coverConfigList, oldGetKey, getKey2).add(addOrUpdate).update(addOrUpdate).remove(remove).execute();
+ return this;
+ function getKey2(brushOption, index) {
+ return (brushOption.id != null ? brushOption.id : tmpIdPrefix + index) + "-" + brushOption.brushType;
+ }
+ function oldGetKey(cover, index) {
+ return getKey2(cover.__brushOption, index);
+ }
+ function addOrUpdate(newIndex, oldIndex) {
+ var newBrushInternal = coverConfigList[newIndex];
+ if (oldIndex != null && oldCovers[oldIndex] === creatingCover) {
+ newCovers[newIndex] = oldCovers[oldIndex];
+ } else {
+ var cover = newCovers[newIndex] = oldIndex != null ? (oldCovers[oldIndex].__brushOption = newBrushInternal, oldCovers[oldIndex]) : endCreating(controller, createCover(controller, newBrushInternal));
+ updateCoverAfterCreation(controller, cover);
+ }
+ }
+ function remove(oldIndex) {
+ if (oldCovers[oldIndex] !== creatingCover) {
+ controller.group.remove(oldCovers[oldIndex]);
+ }
+ }
+ };
+ BrushController2.prototype.unmount = function() {
+ if (true) {
+ if (!this._mounted) {
+ return;
+ }
+ }
+ this.enableBrush(false);
+ clearCovers(this);
+ this._zr.remove(this.group);
+ if (true) {
+ this._mounted = false;
+ }
+ return this;
+ };
+ BrushController2.prototype.dispose = function() {
+ this.unmount();
+ this.off();
+ };
+ return BrushController2;
+}(Eventful_default);
+function createCover(controller, brushOption) {
+ var cover = coverRenderers[brushOption.brushType].createCover(controller, brushOption);
+ cover.__brushOption = brushOption;
+ updateZ(cover, brushOption);
+ controller.group.add(cover);
+ return cover;
+}
+function endCreating(controller, creatingCover) {
+ var coverRenderer = getCoverRenderer(creatingCover);
+ if (coverRenderer.endCreating) {
+ coverRenderer.endCreating(controller, creatingCover);
+ updateZ(creatingCover, creatingCover.__brushOption);
+ }
+ return creatingCover;
+}
+function updateCoverShape(controller, cover) {
+ var brushOption = cover.__brushOption;
+ getCoverRenderer(cover).updateCoverShape(controller, cover, brushOption.range, brushOption);
+}
+function updateZ(cover, brushOption) {
+ var z = brushOption.z;
+ z == null && (z = COVER_Z);
+ cover.traverse(function(el) {
+ el.z = z;
+ el.z2 = z;
+ });
+}
+function updateCoverAfterCreation(controller, cover) {
+ getCoverRenderer(cover).updateCommon(controller, cover);
+ updateCoverShape(controller, cover);
+}
+function getCoverRenderer(cover) {
+ return coverRenderers[cover.__brushOption.brushType];
+}
+function getPanelByPoint(controller, e2, localCursorPoint) {
+ var panels = controller._panels;
+ if (!panels) {
+ return BRUSH_PANEL_GLOBAL;
+ }
+ var panel;
+ var transform2 = controller._transform;
+ each(panels, function(pn) {
+ pn.isTargetByCursor(e2, localCursorPoint, transform2) && (panel = pn);
+ });
+ return panel;
+}
+function getPanelByCover(controller, cover) {
+ var panels = controller._panels;
+ if (!panels) {
+ return BRUSH_PANEL_GLOBAL;
+ }
+ var panelId = cover.__brushOption.panelId;
+ return panelId != null ? panels[panelId] : BRUSH_PANEL_GLOBAL;
+}
+function clearCovers(controller) {
+ var covers = controller._covers;
+ var originalLength = covers.length;
+ each(covers, function(cover) {
+ controller.group.remove(cover);
+ }, controller);
+ covers.length = 0;
+ return !!originalLength;
+}
+function trigger2(controller, opt) {
+ var areas = map(controller._covers, function(cover) {
+ var brushOption = cover.__brushOption;
+ var range = clone(brushOption.range);
+ return {
+ brushType: brushOption.brushType,
+ panelId: brushOption.panelId,
+ range
+ };
+ });
+ controller.trigger("brush", {
+ areas,
+ isEnd: !!opt.isEnd,
+ removeOnClick: !!opt.removeOnClick
+ });
+}
+function shouldShowCover(controller) {
+ var track = controller._track;
+ if (!track.length) {
+ return false;
+ }
+ var p2 = track[track.length - 1];
+ var p1 = track[0];
+ var dx = p2[0] - p1[0];
+ var dy = p2[1] - p1[1];
+ var dist3 = mathPow3(dx * dx + dy * dy, 0.5);
+ return dist3 > UNSELECT_THRESHOLD;
+}
+function getTrackEnds(track) {
+ var tail = track.length - 1;
+ tail < 0 && (tail = 0);
+ return [track[0], track[tail]];
+}
+function createBaseRectCover(rectRangeConverter, controller, brushOption, edgeNameSequences) {
+ var cover = new Group_default();
+ cover.add(new Rect_default({
+ name: "main",
+ style: makeStyle(brushOption),
+ silent: true,
+ draggable: true,
+ cursor: "move",
+ drift: curry(driftRect, rectRangeConverter, controller, cover, ["n", "s", "w", "e"]),
+ ondragend: curry(trigger2, controller, {
+ isEnd: true
+ })
+ }));
+ each(edgeNameSequences, function(nameSequence) {
+ cover.add(new Rect_default({
+ name: nameSequence.join(""),
+ style: {
+ opacity: 0
+ },
+ draggable: true,
+ silent: true,
+ invisible: true,
+ drift: curry(driftRect, rectRangeConverter, controller, cover, nameSequence),
+ ondragend: curry(trigger2, controller, {
+ isEnd: true
+ })
+ }));
+ });
+ return cover;
+}
+function updateBaseRect(controller, cover, localRange, brushOption) {
+ var lineWidth = brushOption.brushStyle.lineWidth || 0;
+ var handleSize = mathMax10(lineWidth, MIN_RESIZE_LINE_WIDTH);
+ var x = localRange[0][0];
+ var y = localRange[1][0];
+ var xa = x - lineWidth / 2;
+ var ya = y - lineWidth / 2;
+ var x2 = localRange[0][1];
+ var y2 = localRange[1][1];
+ var x2a = x2 - handleSize + lineWidth / 2;
+ var y2a = y2 - handleSize + lineWidth / 2;
+ var width = x2 - x;
+ var height = y2 - y;
+ var widtha = width + lineWidth;
+ var heighta = height + lineWidth;
+ updateRectShape(controller, cover, "main", x, y, width, height);
+ if (brushOption.transformable) {
+ updateRectShape(controller, cover, "w", xa, ya, handleSize, heighta);
+ updateRectShape(controller, cover, "e", x2a, ya, handleSize, heighta);
+ updateRectShape(controller, cover, "n", xa, ya, widtha, handleSize);
+ updateRectShape(controller, cover, "s", xa, y2a, widtha, handleSize);
+ updateRectShape(controller, cover, "nw", xa, ya, handleSize, handleSize);
+ updateRectShape(controller, cover, "ne", x2a, ya, handleSize, handleSize);
+ updateRectShape(controller, cover, "sw", xa, y2a, handleSize, handleSize);
+ updateRectShape(controller, cover, "se", x2a, y2a, handleSize, handleSize);
+ }
+}
+function updateCommon(controller, cover) {
+ var brushOption = cover.__brushOption;
+ var transformable = brushOption.transformable;
+ var mainEl = cover.childAt(0);
+ mainEl.useStyle(makeStyle(brushOption));
+ mainEl.attr({
+ silent: !transformable,
+ cursor: transformable ? "move" : "default"
+ });
+ each([["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]], function(nameSequence) {
+ var el = cover.childOfName(nameSequence.join(""));
+ var globalDir = nameSequence.length === 1 ? getGlobalDirection1(controller, nameSequence[0]) : getGlobalDirection2(controller, nameSequence);
+ el && el.attr({
+ silent: !transformable,
+ invisible: !transformable,
+ cursor: transformable ? CURSOR_MAP[globalDir] + "-resize" : null
+ });
+ });
+}
+function updateRectShape(controller, cover, name, x, y, w, h) {
+ var el = cover.childOfName(name);
+ el && el.setShape(pointsToRect(clipByPanel(controller, cover, [[x, y], [x + w, y + h]])));
+}
+function makeStyle(brushOption) {
+ return defaults({
+ strokeNoScale: true
+ }, brushOption.brushStyle);
+}
+function formatRectRange(x, y, x2, y2) {
+ var min3 = [mathMin10(x, x2), mathMin10(y, y2)];
+ var max3 = [mathMax10(x, x2), mathMax10(y, y2)];
+ return [
+ [min3[0], max3[0]],
+ [min3[1], max3[1]]
+ ];
+}
+function getTransform2(controller) {
+ return getTransform(controller.group);
+}
+function getGlobalDirection1(controller, localDirName) {
+ var map3 = {
+ w: "left",
+ e: "right",
+ n: "top",
+ s: "bottom"
+ };
+ var inverseMap = {
+ left: "w",
+ right: "e",
+ top: "n",
+ bottom: "s"
+ };
+ var dir3 = transformDirection(map3[localDirName], getTransform2(controller));
+ return inverseMap[dir3];
+}
+function getGlobalDirection2(controller, localDirNameSeq) {
+ var globalDir = [getGlobalDirection1(controller, localDirNameSeq[0]), getGlobalDirection1(controller, localDirNameSeq[1])];
+ (globalDir[0] === "e" || globalDir[0] === "w") && globalDir.reverse();
+ return globalDir.join("");
+}
+function driftRect(rectRangeConverter, controller, cover, dirNameSequence, dx, dy) {
+ var brushOption = cover.__brushOption;
+ var rectRange = rectRangeConverter.toRectRange(brushOption.range);
+ var localDelta = toLocalDelta(controller, dx, dy);
+ each(dirNameSequence, function(dirName) {
+ var ind = DIRECTION_MAP[dirName];
+ rectRange[ind[0]][ind[1]] += localDelta[ind[0]];
+ });
+ brushOption.range = rectRangeConverter.fromRectRange(formatRectRange(rectRange[0][0], rectRange[1][0], rectRange[0][1], rectRange[1][1]));
+ updateCoverAfterCreation(controller, cover);
+ trigger2(controller, {
+ isEnd: false
+ });
+}
+function driftPolygon(controller, cover, dx, dy) {
+ var range = cover.__brushOption.range;
+ var localDelta = toLocalDelta(controller, dx, dy);
+ each(range, function(point) {
+ point[0] += localDelta[0];
+ point[1] += localDelta[1];
+ });
+ updateCoverAfterCreation(controller, cover);
+ trigger2(controller, {
+ isEnd: false
+ });
+}
+function toLocalDelta(controller, dx, dy) {
+ var thisGroup = controller.group;
+ var localD = thisGroup.transformCoordToLocal(dx, dy);
+ var localZero = thisGroup.transformCoordToLocal(0, 0);
+ return [localD[0] - localZero[0], localD[1] - localZero[1]];
+}
+function clipByPanel(controller, cover, data) {
+ var panel = getPanelByCover(controller, cover);
+ return panel && panel !== BRUSH_PANEL_GLOBAL ? panel.clipPath(data, controller._transform) : clone(data);
+}
+function pointsToRect(points4) {
+ var xmin = mathMin10(points4[0][0], points4[1][0]);
+ var ymin = mathMin10(points4[0][1], points4[1][1]);
+ var xmax = mathMax10(points4[0][0], points4[1][0]);
+ var ymax = mathMax10(points4[0][1], points4[1][1]);
+ return {
+ x: xmin,
+ y: ymin,
+ width: xmax - xmin,
+ height: ymax - ymin
+ };
+}
+function resetCursor(controller, e2, localCursorPoint) {
+ if (!controller._brushType || isOutsideZrArea(controller, e2.offsetX, e2.offsetY)) {
+ return;
+ }
+ var zr = controller._zr;
+ var covers = controller._covers;
+ var currPanel = getPanelByPoint(controller, e2, localCursorPoint);
+ if (!controller._dragging) {
+ for (var i = 0; i < covers.length; i++) {
+ var brushOption = covers[i].__brushOption;
+ if (currPanel && (currPanel === BRUSH_PANEL_GLOBAL || brushOption.panelId === currPanel.panelId) && coverRenderers[brushOption.brushType].contain(covers[i], localCursorPoint[0], localCursorPoint[1])) {
+ return;
+ }
+ }
+ }
+ currPanel && zr.setCursorStyle("crosshair");
+}
+function preventDefault(e2) {
+ var rawE = e2.event;
+ rawE.preventDefault && rawE.preventDefault();
+}
+function mainShapeContain(cover, x, y) {
+ return cover.childOfName("main").contain(x, y);
+}
+function updateCoverByMouse(controller, e2, localCursorPoint, isEnd) {
+ var creatingCover = controller._creatingCover;
+ var panel = controller._creatingPanel;
+ var thisBrushOption = controller._brushOption;
+ var eventParams;
+ controller._track.push(localCursorPoint.slice());
+ if (shouldShowCover(controller) || creatingCover) {
+ if (panel && !creatingCover) {
+ thisBrushOption.brushMode === "single" && clearCovers(controller);
+ var brushOption = clone(thisBrushOption);
+ brushOption.brushType = determineBrushType(brushOption.brushType, panel);
+ brushOption.panelId = panel === BRUSH_PANEL_GLOBAL ? null : panel.panelId;
+ creatingCover = controller._creatingCover = createCover(controller, brushOption);
+ controller._covers.push(creatingCover);
+ }
+ if (creatingCover) {
+ var coverRenderer = coverRenderers[determineBrushType(controller._brushType, panel)];
+ var coverBrushOption = creatingCover.__brushOption;
+ coverBrushOption.range = coverRenderer.getCreatingRange(clipByPanel(controller, creatingCover, controller._track));
+ if (isEnd) {
+ endCreating(controller, creatingCover);
+ coverRenderer.updateCommon(controller, creatingCover);
+ }
+ updateCoverShape(controller, creatingCover);
+ eventParams = {
+ isEnd
+ };
+ }
+ } else if (isEnd && thisBrushOption.brushMode === "single" && thisBrushOption.removeOnClick) {
+ if (getPanelByPoint(controller, e2, localCursorPoint) && clearCovers(controller)) {
+ eventParams = {
+ isEnd,
+ removeOnClick: true
+ };
+ }
+ }
+ return eventParams;
+}
+function determineBrushType(brushType, panel) {
+ if (brushType === "auto") {
+ if (true) {
+ assert(panel && panel.defaultBrushType, 'MUST have defaultBrushType when brushType is "atuo"');
+ }
+ return panel.defaultBrushType;
+ }
+ return brushType;
+}
+var pointerHandlers = {
+ mousedown: function(e2) {
+ if (this._dragging) {
+ handleDragEnd(this, e2);
+ } else if (!e2.target || !e2.target.draggable) {
+ preventDefault(e2);
+ var localCursorPoint = this.group.transformCoordToLocal(e2.offsetX, e2.offsetY);
+ this._creatingCover = null;
+ var panel = this._creatingPanel = getPanelByPoint(this, e2, localCursorPoint);
+ if (panel) {
+ this._dragging = true;
+ this._track = [localCursorPoint.slice()];
+ }
+ }
+ },
+ mousemove: function(e2) {
+ var x = e2.offsetX;
+ var y = e2.offsetY;
+ var localCursorPoint = this.group.transformCoordToLocal(x, y);
+ resetCursor(this, e2, localCursorPoint);
+ if (this._dragging) {
+ preventDefault(e2);
+ var eventParams = updateCoverByMouse(this, e2, localCursorPoint, false);
+ eventParams && trigger2(this, eventParams);
+ }
+ },
+ mouseup: function(e2) {
+ handleDragEnd(this, e2);
+ }
+};
+function handleDragEnd(controller, e2) {
+ if (controller._dragging) {
+ preventDefault(e2);
+ var x = e2.offsetX;
+ var y = e2.offsetY;
+ var localCursorPoint = controller.group.transformCoordToLocal(x, y);
+ var eventParams = updateCoverByMouse(controller, e2, localCursorPoint, true);
+ controller._dragging = false;
+ controller._track = [];
+ controller._creatingCover = null;
+ eventParams && trigger2(controller, eventParams);
+ }
+}
+function isOutsideZrArea(controller, x, y) {
+ var zr = controller._zr;
+ return x < 0 || x > zr.getWidth() || y < 0 || y > zr.getHeight();
+}
+var coverRenderers = {
+ lineX: getLineRenderer(0),
+ lineY: getLineRenderer(1),
+ rect: {
+ createCover: function(controller, brushOption) {
+ function returnInput(range) {
+ return range;
+ }
+ return createBaseRectCover({
+ toRectRange: returnInput,
+ fromRectRange: returnInput
+ }, controller, brushOption, [["w"], ["e"], ["n"], ["s"], ["s", "e"], ["s", "w"], ["n", "e"], ["n", "w"]]);
+ },
+ getCreatingRange: function(localTrack) {
+ var ends = getTrackEnds(localTrack);
+ return formatRectRange(ends[1][0], ends[1][1], ends[0][0], ends[0][1]);
+ },
+ updateCoverShape: function(controller, cover, localRange, brushOption) {
+ updateBaseRect(controller, cover, localRange, brushOption);
+ },
+ updateCommon,
+ contain: mainShapeContain
+ },
+ polygon: {
+ createCover: function(controller, brushOption) {
+ var cover = new Group_default();
+ cover.add(new Polyline_default({
+ name: "main",
+ style: makeStyle(brushOption),
+ silent: true
+ }));
+ return cover;
+ },
+ getCreatingRange: function(localTrack) {
+ return localTrack;
+ },
+ endCreating: function(controller, cover) {
+ cover.remove(cover.childAt(0));
+ cover.add(new Polygon_default({
+ name: "main",
+ draggable: true,
+ drift: curry(driftPolygon, controller, cover),
+ ondragend: curry(trigger2, controller, {
+ isEnd: true
+ })
+ }));
+ },
+ updateCoverShape: function(controller, cover, localRange, brushOption) {
+ cover.childAt(0).setShape({
+ points: clipByPanel(controller, cover, localRange)
+ });
+ },
+ updateCommon,
+ contain: mainShapeContain
+ }
+};
+function getLineRenderer(xyIndex) {
+ return {
+ createCover: function(controller, brushOption) {
+ return createBaseRectCover({
+ toRectRange: function(range) {
+ var rectRange = [range, [0, 100]];
+ xyIndex && rectRange.reverse();
+ return rectRange;
+ },
+ fromRectRange: function(rectRange) {
+ return rectRange[xyIndex];
+ }
+ }, controller, brushOption, [[["w"], ["e"]], [["n"], ["s"]]][xyIndex]);
+ },
+ getCreatingRange: function(localTrack) {
+ var ends = getTrackEnds(localTrack);
+ var min3 = mathMin10(ends[0][xyIndex], ends[1][xyIndex]);
+ var max3 = mathMax10(ends[0][xyIndex], ends[1][xyIndex]);
+ return [min3, max3];
+ },
+ updateCoverShape: function(controller, cover, localRange, brushOption) {
+ var otherExtent;
+ var panel = getPanelByCover(controller, cover);
+ if (panel !== BRUSH_PANEL_GLOBAL && panel.getLinearBrushOtherExtent) {
+ otherExtent = panel.getLinearBrushOtherExtent(xyIndex);
+ } else {
+ var zr = controller._zr;
+ otherExtent = [0, [zr.getWidth(), zr.getHeight()][1 - xyIndex]];
+ }
+ var rectRange = [localRange, otherExtent];
+ xyIndex && rectRange.reverse();
+ updateBaseRect(controller, cover, rectRange, brushOption);
+ },
+ updateCommon,
+ contain: mainShapeContain
+ };
+}
+var BrushController_default = BrushController;
+
+// node_modules/echarts/lib/component/helper/brushHelper.js
+function makeRectPanelClipPath(rect) {
+ rect = normalizeRect(rect);
+ return function(localPoints) {
+ return clipPointsByRect(localPoints, rect);
+ };
+}
+function makeLinearBrushOtherExtent(rect, specifiedXYIndex) {
+ rect = normalizeRect(rect);
+ return function(xyIndex) {
+ var idx = specifiedXYIndex != null ? specifiedXYIndex : xyIndex;
+ var brushWidth = idx ? rect.width : rect.height;
+ var base2 = idx ? rect.x : rect.y;
+ return [base2, base2 + (brushWidth || 0)];
+ };
+}
+function makeRectIsTargetByCursor(rect, api, targetModel) {
+ var boundingRect = normalizeRect(rect);
+ return function(e2, localCursorPoint) {
+ return boundingRect.contain(localCursorPoint[0], localCursorPoint[1]) && !onIrrelevantElement(e2, api, targetModel);
+ };
+}
+function normalizeRect(rect) {
+ return BoundingRect_default.create(rect);
+}
+
+// node_modules/echarts/lib/component/axis/ParallelAxisView.js
+var elementList = ["axisLine", "axisTickLabel", "axisName"];
+var ParallelAxisView = function(_super) {
+ __extends(ParallelAxisView2, _super);
+ function ParallelAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ParallelAxisView2.type;
+ return _this;
+ }
+ ParallelAxisView2.prototype.init = function(ecModel, api) {
+ _super.prototype.init.apply(this, arguments);
+ (this._brushController = new BrushController_default(api.getZr())).on("brush", bind(this._onBrush, this));
+ };
+ ParallelAxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
+ if (fromAxisAreaSelect(axisModel, ecModel, payload)) {
+ return;
+ }
+ this.axisModel = axisModel;
+ this.api = api;
+ this.group.removeAll();
+ var oldAxisGroup = this._axisGroup;
+ this._axisGroup = new Group_default();
+ this.group.add(this._axisGroup);
+ if (!axisModel.get("show")) {
+ return;
+ }
+ var coordSysModel = getCoordSysModel(axisModel, ecModel);
+ var coordSys = coordSysModel.coordinateSystem;
+ var areaSelectStyle = axisModel.getAreaSelectStyle();
+ var areaWidth = areaSelectStyle.width;
+ var dim = axisModel.axis.dim;
+ var axisLayout = coordSys.getAxisLayout(dim);
+ var builderOpt = extend({
+ strokeContainThreshold: areaWidth
+ }, axisLayout);
+ var axisBuilder = new AxisBuilder_default(axisModel, builderOpt);
+ each(elementList, axisBuilder.add, axisBuilder);
+ this._axisGroup.add(axisBuilder.getGroup());
+ this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api);
+ groupTransition(oldAxisGroup, this._axisGroup, axisModel);
+ };
+ ParallelAxisView2.prototype._refreshBrushController = function(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) {
+ var extent3 = axisModel.axis.getExtent();
+ var extentLen = extent3[1] - extent3[0];
+ var extra = Math.min(30, Math.abs(extentLen) * 0.1);
+ var rect = BoundingRect_default.create({
+ x: extent3[0],
+ y: -areaWidth / 2,
+ width: extentLen,
+ height: areaWidth
+ });
+ rect.x -= extra;
+ rect.width += 2 * extra;
+ this._brushController.mount({
+ enableGlobalPan: true,
+ rotation: builderOpt.rotation,
+ x: builderOpt.position[0],
+ y: builderOpt.position[1]
+ }).setPanels([{
+ panelId: "pl",
+ clipPath: makeRectPanelClipPath(rect),
+ isTargetByCursor: makeRectIsTargetByCursor(rect, api, coordSysModel),
+ getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect, 0)
+ }]).enableBrush({
+ brushType: "lineX",
+ brushStyle: areaSelectStyle,
+ removeOnClick: true
+ }).updateCovers(getCoverInfoList(axisModel));
+ };
+ ParallelAxisView2.prototype._onBrush = function(eventParam) {
+ var coverInfoList = eventParam.areas;
+ var axisModel = this.axisModel;
+ var axis = axisModel.axis;
+ var intervals = map(coverInfoList, function(coverInfo) {
+ return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)];
+ });
+ if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) {
+ this.api.dispatchAction({
+ type: "axisAreaSelect",
+ parallelAxisId: axisModel.id,
+ intervals
+ });
+ }
+ };
+ ParallelAxisView2.prototype.dispose = function() {
+ this._brushController.dispose();
+ };
+ ParallelAxisView2.type = "parallelAxis";
+ return ParallelAxisView2;
+}(Component_default2);
+function fromAxisAreaSelect(axisModel, ecModel, payload) {
+ return payload && payload.type === "axisAreaSelect" && ecModel.findComponents({
+ mainType: "parallelAxis",
+ query: payload
+ })[0] === axisModel;
+}
+function getCoverInfoList(axisModel) {
+ var axis = axisModel.axis;
+ return map(axisModel.activeIntervals, function(interval) {
+ return {
+ brushType: "lineX",
+ panelId: "pl",
+ range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)]
+ };
+ });
+}
+function getCoordSysModel(axisModel, ecModel) {
+ return ecModel.getComponent("parallel", axisModel.get("parallelIndex"));
+}
+var ParallelAxisView_default = ParallelAxisView;
+
+// node_modules/echarts/lib/component/axis/parallelAxisAction.js
+var actionInfo2 = {
+ type: "axisAreaSelect",
+ event: "axisAreaSelected"
+};
+function installParallelActions(registers) {
+ registers.registerAction(actionInfo2, function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "parallelAxis",
+ query: payload
+ }, function(parallelAxisModel) {
+ parallelAxisModel.axis.model.setActiveIntervals(payload.intervals);
+ });
+ });
+ registers.registerAction("parallelAxisExpand", function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "parallel",
+ query: payload
+ }, function(parallelModel) {
+ parallelModel.setAxisExpand(payload);
+ });
+ });
+}
+
+// node_modules/echarts/lib/component/parallel/install.js
+var defaultAxisOption = {
+ type: "value",
+ areaSelectStyle: {
+ width: 20,
+ borderWidth: 1,
+ borderColor: "rgba(160,197,232)",
+ color: "rgba(160,197,232)",
+ opacity: 0.3
+ },
+ realtime: true,
+ z: 10
+};
+function install17(registers) {
+ registers.registerComponentView(ParallelView_default2);
+ registers.registerComponentModel(ParallelModel_default);
+ registers.registerCoordinateSystem("parallel", parallelCreator_default);
+ registers.registerPreprocessor(parallelPreprocessor);
+ registers.registerComponentModel(AxisModel_default);
+ registers.registerComponentView(ParallelAxisView_default);
+ axisModelCreator(registers, "parallel", AxisModel_default, defaultAxisOption);
+ installParallelActions(registers);
+}
+
+// node_modules/echarts/lib/chart/parallel/install.js
+function install18(registers) {
+ use(install17);
+ registers.registerChartView(ParallelView_default);
+ registers.registerSeriesModel(ParallelSeries_default);
+ registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, parallelVisual_default);
+}
+
+// node_modules/echarts/lib/chart/sankey/SankeyView.js
+var SankeyPathShape = function() {
+ function SankeyPathShape2() {
+ this.x1 = 0;
+ this.y1 = 0;
+ this.x2 = 0;
+ this.y2 = 0;
+ this.cpx1 = 0;
+ this.cpy1 = 0;
+ this.cpx2 = 0;
+ this.cpy2 = 0;
+ this.extent = 0;
+ }
+ return SankeyPathShape2;
+}();
+var SankeyPath = function(_super) {
+ __extends(SankeyPath2, _super);
+ function SankeyPath2(opts) {
+ return _super.call(this, opts) || this;
+ }
+ SankeyPath2.prototype.getDefaultShape = function() {
+ return new SankeyPathShape();
+ };
+ SankeyPath2.prototype.buildPath = function(ctx, shape) {
+ var extent3 = shape.extent;
+ ctx.moveTo(shape.x1, shape.y1);
+ ctx.bezierCurveTo(shape.cpx1, shape.cpy1, shape.cpx2, shape.cpy2, shape.x2, shape.y2);
+ if (shape.orient === "vertical") {
+ ctx.lineTo(shape.x2 + extent3, shape.y2);
+ ctx.bezierCurveTo(shape.cpx2 + extent3, shape.cpy2, shape.cpx1 + extent3, shape.cpy1, shape.x1 + extent3, shape.y1);
+ } else {
+ ctx.lineTo(shape.x2, shape.y2 + extent3);
+ ctx.bezierCurveTo(shape.cpx2, shape.cpy2 + extent3, shape.cpx1, shape.cpy1 + extent3, shape.x1, shape.y1 + extent3);
+ }
+ ctx.closePath();
+ };
+ SankeyPath2.prototype.highlight = function() {
+ enterEmphasis(this);
+ };
+ SankeyPath2.prototype.downplay = function() {
+ leaveEmphasis(this);
+ };
+ return SankeyPath2;
+}(Path_default);
+var SankeyView = function(_super) {
+ __extends(SankeyView2, _super);
+ function SankeyView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SankeyView2.type;
+ _this._focusAdjacencyDisabled = false;
+ return _this;
+ }
+ SankeyView2.prototype.render = function(seriesModel, ecModel, api) {
+ var sankeyView = this;
+ var graph = seriesModel.getGraph();
+ var group = this.group;
+ var layoutInfo = seriesModel.layoutInfo;
+ var width = layoutInfo.width;
+ var height = layoutInfo.height;
+ var nodeData = seriesModel.getData();
+ var edgeData = seriesModel.getData("edge");
+ var orient = seriesModel.get("orient");
+ this._model = seriesModel;
+ group.removeAll();
+ group.x = layoutInfo.x;
+ group.y = layoutInfo.y;
+ graph.eachEdge(function(edge) {
+ var curve = new SankeyPath();
+ var ecData = getECData(curve);
+ ecData.dataIndex = edge.dataIndex;
+ ecData.seriesIndex = seriesModel.seriesIndex;
+ ecData.dataType = "edge";
+ var edgeModel = edge.getModel();
+ var lineStyleModel = edgeModel.getModel("lineStyle");
+ var curvature = lineStyleModel.get("curveness");
+ var n1Layout = edge.node1.getLayout();
+ var node1Model = edge.node1.getModel();
+ var dragX1 = node1Model.get("localX");
+ var dragY1 = node1Model.get("localY");
+ var n2Layout = edge.node2.getLayout();
+ var node2Model = edge.node2.getModel();
+ var dragX2 = node2Model.get("localX");
+ var dragY2 = node2Model.get("localY");
+ var edgeLayout = edge.getLayout();
+ var x1;
+ var y1;
+ var x2;
+ var y2;
+ var cpx1;
+ var cpy1;
+ var cpx2;
+ var cpy2;
+ curve.shape.extent = Math.max(1, edgeLayout.dy);
+ curve.shape.orient = orient;
+ if (orient === "vertical") {
+ x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + edgeLayout.sy;
+ y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + n1Layout.dy;
+ x2 = (dragX2 != null ? dragX2 * width : n2Layout.x) + edgeLayout.ty;
+ y2 = dragY2 != null ? dragY2 * height : n2Layout.y;
+ cpx1 = x1;
+ cpy1 = y1 * (1 - curvature) + y2 * curvature;
+ cpx2 = x2;
+ cpy2 = y1 * curvature + y2 * (1 - curvature);
+ } else {
+ x1 = (dragX1 != null ? dragX1 * width : n1Layout.x) + n1Layout.dx;
+ y1 = (dragY1 != null ? dragY1 * height : n1Layout.y) + edgeLayout.sy;
+ x2 = dragX2 != null ? dragX2 * width : n2Layout.x;
+ y2 = (dragY2 != null ? dragY2 * height : n2Layout.y) + edgeLayout.ty;
+ cpx1 = x1 * (1 - curvature) + x2 * curvature;
+ cpy1 = y1;
+ cpx2 = x1 * curvature + x2 * (1 - curvature);
+ cpy2 = y2;
+ }
+ curve.setShape({
+ x1,
+ y1,
+ x2,
+ y2,
+ cpx1,
+ cpy1,
+ cpx2,
+ cpy2
+ });
+ curve.useStyle(lineStyleModel.getItemStyle());
+ applyCurveStyle(curve.style, orient, edge);
+ var defaultEdgeLabelText = "" + edgeModel.get("value");
+ var edgeLabelStateModels = getLabelStatesModels(edgeModel, "edgeLabel");
+ setLabelStyle(curve, edgeLabelStateModels, {
+ labelFetcher: {
+ getFormattedLabel: function(dataIndex, stateName, dataType, labelDimIndex, formatter, extendParams) {
+ return seriesModel.getFormattedLabel(
+ dataIndex,
+ stateName,
+ "edge",
+ labelDimIndex,
+ retrieve3(formatter, edgeLabelStateModels.normal && edgeLabelStateModels.normal.get("formatter"), defaultEdgeLabelText),
+ extendParams
+ );
+ }
+ },
+ labelDataIndex: edge.dataIndex,
+ defaultText: defaultEdgeLabelText
+ });
+ curve.setTextConfig({
+ position: "inside"
+ });
+ var emphasisModel = edgeModel.getModel("emphasis");
+ setStatesStylesFromModel(curve, edgeModel, "lineStyle", function(model) {
+ var style = model.getItemStyle();
+ applyCurveStyle(style, orient, edge);
+ return style;
+ });
+ group.add(curve);
+ edgeData.setItemGraphicEl(edge.dataIndex, curve);
+ var focus = emphasisModel.get("focus");
+ toggleHoverEmphasis(curve, focus === "adjacency" ? edge.getAdjacentDataIndices() : focus === "trajectory" ? edge.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ });
+ graph.eachNode(function(node) {
+ var layout5 = node.getLayout();
+ var itemModel = node.getModel();
+ var dragX = itemModel.get("localX");
+ var dragY = itemModel.get("localY");
+ var emphasisModel = itemModel.getModel("emphasis");
+ var borderRadius = itemModel.get(["itemStyle", "borderRadius"]) || 0;
+ var rect = new Rect_default({
+ shape: {
+ x: dragX != null ? dragX * width : layout5.x,
+ y: dragY != null ? dragY * height : layout5.y,
+ width: layout5.dx,
+ height: layout5.dy,
+ r: borderRadius
+ },
+ style: itemModel.getModel("itemStyle").getItemStyle(),
+ z2: 10
+ });
+ setLabelStyle(rect, getLabelStatesModels(itemModel), {
+ labelFetcher: {
+ getFormattedLabel: function(dataIndex, stateName) {
+ return seriesModel.getFormattedLabel(dataIndex, stateName, "node");
+ }
+ },
+ labelDataIndex: node.dataIndex,
+ defaultText: node.id
+ });
+ rect.disableLabelAnimation = true;
+ rect.setStyle("fill", node.getVisual("color"));
+ rect.setStyle("decal", node.getVisual("style").decal);
+ setStatesStylesFromModel(rect, itemModel);
+ group.add(rect);
+ nodeData.setItemGraphicEl(node.dataIndex, rect);
+ getECData(rect).dataType = "node";
+ var focus = emphasisModel.get("focus");
+ toggleHoverEmphasis(rect, focus === "adjacency" ? node.getAdjacentDataIndices() : focus === "trajectory" ? node.getTrajectoryDataIndices() : focus, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ });
+ nodeData.eachItemGraphicEl(function(el, dataIndex) {
+ var itemModel = nodeData.getItemModel(dataIndex);
+ if (itemModel.get("draggable")) {
+ el.drift = function(dx, dy) {
+ sankeyView._focusAdjacencyDisabled = true;
+ this.shape.x += dx;
+ this.shape.y += dy;
+ this.dirty();
+ api.dispatchAction({
+ type: "dragNode",
+ seriesId: seriesModel.id,
+ dataIndex: nodeData.getRawIndex(dataIndex),
+ localX: this.shape.x / width,
+ localY: this.shape.y / height
+ });
+ };
+ el.ondragend = function() {
+ sankeyView._focusAdjacencyDisabled = false;
+ };
+ el.draggable = true;
+ el.cursor = "move";
+ }
+ });
+ if (!this._data && seriesModel.isAnimationEnabled()) {
+ group.setClipPath(createGridClipShape2(group.getBoundingRect(), seriesModel, function() {
+ group.removeClipPath();
+ }));
+ }
+ this._data = seriesModel.getData();
+ };
+ SankeyView2.prototype.dispose = function() {
+ };
+ SankeyView2.type = "sankey";
+ return SankeyView2;
+}(Chart_default);
+function applyCurveStyle(curveProps, orient, edge) {
+ switch (curveProps.fill) {
+ case "source":
+ curveProps.fill = edge.node1.getVisual("color");
+ curveProps.decal = edge.node1.getVisual("style").decal;
+ break;
+ case "target":
+ curveProps.fill = edge.node2.getVisual("color");
+ curveProps.decal = edge.node2.getVisual("style").decal;
+ break;
+ case "gradient":
+ var sourceColor = edge.node1.getVisual("color");
+ var targetColor = edge.node2.getVisual("color");
+ if (isString(sourceColor) && isString(targetColor)) {
+ curveProps.fill = new LinearGradient_default(0, 0, +(orient === "horizontal"), +(orient === "vertical"), [{
+ color: sourceColor,
+ offset: 0
+ }, {
+ color: targetColor,
+ offset: 1
+ }]);
+ }
+ }
+}
+function createGridClipShape2(rect, seriesModel, cb) {
+ var rectEl = new Rect_default({
+ shape: {
+ x: rect.x - 10,
+ y: rect.y - 10,
+ width: 0,
+ height: rect.height + 20
+ }
+ });
+ initProps(rectEl, {
+ shape: {
+ width: rect.width + 20
+ }
+ }, seriesModel, cb);
+ return rectEl;
+}
+var SankeyView_default = SankeyView;
+
+// node_modules/echarts/lib/chart/sankey/SankeySeries.js
+var SankeySeriesModel = function(_super) {
+ __extends(SankeySeriesModel2, _super);
+ function SankeySeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SankeySeriesModel2.type;
+ return _this;
+ }
+ SankeySeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ var links = option.edges || option.links || [];
+ var nodes = option.data || option.nodes || [];
+ var levels = option.levels || [];
+ this.levelModels = [];
+ var levelModels = this.levelModels;
+ for (var i = 0; i < levels.length; i++) {
+ if (levels[i].depth != null && levels[i].depth >= 0) {
+ levelModels[levels[i].depth] = new Model_default(levels[i], this, ecModel);
+ } else {
+ if (true) {
+ throw new Error("levels[i].depth is mandatory and should be natural number");
+ }
+ }
+ }
+ var graph = createGraphFromNodeEdge(nodes, links, this, true, beforeLink);
+ return graph.data;
+ function beforeLink(nodeData, edgeData) {
+ nodeData.wrapMethod("getItemModel", function(model, idx) {
+ var seriesModel = model.parentModel;
+ var layout5 = seriesModel.getData().getItemLayout(idx);
+ if (layout5) {
+ var nodeDepth = layout5.depth;
+ var levelModel = seriesModel.levelModels[nodeDepth];
+ if (levelModel) {
+ model.parentModel = levelModel;
+ }
+ }
+ return model;
+ });
+ edgeData.wrapMethod("getItemModel", function(model, idx) {
+ var seriesModel = model.parentModel;
+ var edge = seriesModel.getGraph().getEdgeByIndex(idx);
+ var layout5 = edge.node1.getLayout();
+ if (layout5) {
+ var depth = layout5.depth;
+ var levelModel = seriesModel.levelModels[depth];
+ if (levelModel) {
+ model.parentModel = levelModel;
+ }
+ }
+ return model;
+ });
+ }
+ };
+ SankeySeriesModel2.prototype.setNodePosition = function(dataIndex, localPosition) {
+ var nodes = this.option.data || this.option.nodes;
+ var dataItem = nodes[dataIndex];
+ dataItem.localX = localPosition[0];
+ dataItem.localY = localPosition[1];
+ };
+ SankeySeriesModel2.prototype.getGraph = function() {
+ return this.getData().graph;
+ };
+ SankeySeriesModel2.prototype.getEdgeData = function() {
+ return this.getGraph().edgeData;
+ };
+ SankeySeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ function noValue(val) {
+ return isNaN(val) || val == null;
+ }
+ if (dataType === "edge") {
+ var params = this.getDataParams(dataIndex, dataType);
+ var rawDataOpt = params.data;
+ var edgeValue = params.value;
+ var edgeName = rawDataOpt.source + " -- " + rawDataOpt.target;
+ return createTooltipMarkup("nameValue", {
+ name: edgeName,
+ value: edgeValue,
+ noValue: noValue(edgeValue)
+ });
+ } else {
+ var node = this.getGraph().getNodeByIndex(dataIndex);
+ var value = node.getLayout().value;
+ var name_1 = this.getDataParams(dataIndex, dataType).data.name;
+ return createTooltipMarkup("nameValue", {
+ name: name_1 != null ? name_1 + "" : null,
+ value,
+ noValue: noValue(value)
+ });
+ }
+ };
+ SankeySeriesModel2.prototype.optionUpdated = function() {
+ };
+ SankeySeriesModel2.prototype.getDataParams = function(dataIndex, dataType) {
+ var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
+ if (params.value == null && dataType === "node") {
+ var node = this.getGraph().getNodeByIndex(dataIndex);
+ var nodeValue = node.getLayout().value;
+ params.value = nodeValue;
+ }
+ return params;
+ };
+ SankeySeriesModel2.type = "series.sankey";
+ SankeySeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "view",
+ left: "5%",
+ top: "5%",
+ right: "20%",
+ bottom: "5%",
+ orient: "horizontal",
+ nodeWidth: 20,
+ nodeGap: 8,
+ draggable: true,
+ layoutIterations: 32,
+ label: {
+ show: true,
+ position: "right",
+ fontSize: 12
+ },
+ edgeLabel: {
+ show: false,
+ fontSize: 12
+ },
+ levels: [],
+ nodeAlign: "justify",
+ lineStyle: {
+ color: "#314656",
+ opacity: 0.2,
+ curveness: 0.5
+ },
+ emphasis: {
+ label: {
+ show: true
+ },
+ lineStyle: {
+ opacity: 0.5
+ }
+ },
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ },
+ animationEasing: "linear",
+ animationDuration: 1e3
+ };
+ return SankeySeriesModel2;
+}(Series_default);
+var SankeySeries_default = SankeySeriesModel;
+
+// node_modules/echarts/lib/chart/sankey/sankeyLayout.js
+function sankeyLayout(ecModel, api) {
+ ecModel.eachSeriesByType("sankey", function(seriesModel) {
+ var nodeWidth = seriesModel.get("nodeWidth");
+ var nodeGap = seriesModel.get("nodeGap");
+ var layoutInfo = getViewRect5(seriesModel, api);
+ seriesModel.layoutInfo = layoutInfo;
+ var width = layoutInfo.width;
+ var height = layoutInfo.height;
+ var graph = seriesModel.getGraph();
+ var nodes = graph.nodes;
+ var edges = graph.edges;
+ computeNodeValues(nodes);
+ var filteredNodes = filter(nodes, function(node) {
+ return node.getLayout().value === 0;
+ });
+ var iterations = filteredNodes.length !== 0 ? 0 : seriesModel.get("layoutIterations");
+ var orient = seriesModel.get("orient");
+ var nodeAlign = seriesModel.get("nodeAlign");
+ layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign);
+ });
+}
+function getViewRect5(seriesModel, api) {
+ return getLayoutRect(seriesModel.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+}
+function layoutSankey(nodes, edges, nodeWidth, nodeGap, width, height, iterations, orient, nodeAlign) {
+ computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign);
+ computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient);
+ computeEdgeDepths(nodes, orient);
+}
+function computeNodeValues(nodes) {
+ each(nodes, function(node) {
+ var value1 = sum(node.outEdges, getEdgeValue);
+ var value2 = sum(node.inEdges, getEdgeValue);
+ var nodeRawValue = node.getValue() || 0;
+ var value = Math.max(value1, value2, nodeRawValue);
+ node.setLayout({
+ value
+ }, true);
+ });
+}
+function computeNodeBreadths(nodes, edges, nodeWidth, width, height, orient, nodeAlign) {
+ var remainEdges = [];
+ var indegreeArr = [];
+ var zeroIndegrees = [];
+ var nextTargetNode = [];
+ var x = 0;
+ for (var i = 0; i < edges.length; i++) {
+ remainEdges[i] = 1;
+ }
+ for (var i = 0; i < nodes.length; i++) {
+ indegreeArr[i] = nodes[i].inEdges.length;
+ if (indegreeArr[i] === 0) {
+ zeroIndegrees.push(nodes[i]);
+ }
+ }
+ var maxNodeDepth = -1;
+ while (zeroIndegrees.length) {
+ for (var idx = 0; idx < zeroIndegrees.length; idx++) {
+ var node = zeroIndegrees[idx];
+ var item = node.hostGraph.data.getRawDataItem(node.dataIndex);
+ var isItemDepth = item.depth != null && item.depth >= 0;
+ if (isItemDepth && item.depth > maxNodeDepth) {
+ maxNodeDepth = item.depth;
+ }
+ node.setLayout({
+ depth: isItemDepth ? item.depth : x
+ }, true);
+ orient === "vertical" ? node.setLayout({
+ dy: nodeWidth
+ }, true) : node.setLayout({
+ dx: nodeWidth
+ }, true);
+ for (var edgeIdx = 0; edgeIdx < node.outEdges.length; edgeIdx++) {
+ var edge = node.outEdges[edgeIdx];
+ var indexEdge = edges.indexOf(edge);
+ remainEdges[indexEdge] = 0;
+ var targetNode = edge.node2;
+ var nodeIndex = nodes.indexOf(targetNode);
+ if (--indegreeArr[nodeIndex] === 0 && nextTargetNode.indexOf(targetNode) < 0) {
+ nextTargetNode.push(targetNode);
+ }
+ }
+ }
+ ++x;
+ zeroIndegrees = nextTargetNode;
+ nextTargetNode = [];
+ }
+ for (var i = 0; i < remainEdges.length; i++) {
+ if (remainEdges[i] === 1) {
+ throw new Error("Sankey is a DAG, the original data has cycle!");
+ }
+ }
+ var maxDepth = maxNodeDepth > x - 1 ? maxNodeDepth : x - 1;
+ if (nodeAlign && nodeAlign !== "left") {
+ adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth);
+ }
+ var kx = orient === "vertical" ? (height - nodeWidth) / maxDepth : (width - nodeWidth) / maxDepth;
+ scaleNodeBreadths(nodes, kx, orient);
+}
+function isNodeDepth(node) {
+ var item = node.hostGraph.data.getRawDataItem(node.dataIndex);
+ return item.depth != null && item.depth >= 0;
+}
+function adjustNodeWithNodeAlign(nodes, nodeAlign, orient, maxDepth) {
+ if (nodeAlign === "right") {
+ var nextSourceNode = [];
+ var remainNodes = nodes;
+ var nodeHeight = 0;
+ while (remainNodes.length) {
+ for (var i = 0; i < remainNodes.length; i++) {
+ var node = remainNodes[i];
+ node.setLayout({
+ skNodeHeight: nodeHeight
+ }, true);
+ for (var j = 0; j < node.inEdges.length; j++) {
+ var edge = node.inEdges[j];
+ if (nextSourceNode.indexOf(edge.node1) < 0) {
+ nextSourceNode.push(edge.node1);
+ }
+ }
+ }
+ remainNodes = nextSourceNode;
+ nextSourceNode = [];
+ ++nodeHeight;
+ }
+ each(nodes, function(node2) {
+ if (!isNodeDepth(node2)) {
+ node2.setLayout({
+ depth: Math.max(0, maxDepth - node2.getLayout().skNodeHeight)
+ }, true);
+ }
+ });
+ } else if (nodeAlign === "justify") {
+ moveSinksRight(nodes, maxDepth);
+ }
+}
+function moveSinksRight(nodes, maxDepth) {
+ each(nodes, function(node) {
+ if (!isNodeDepth(node) && !node.outEdges.length) {
+ node.setLayout({
+ depth: maxDepth
+ }, true);
+ }
+ });
+}
+function scaleNodeBreadths(nodes, kx, orient) {
+ each(nodes, function(node) {
+ var nodeDepth = node.getLayout().depth * kx;
+ orient === "vertical" ? node.setLayout({
+ y: nodeDepth
+ }, true) : node.setLayout({
+ x: nodeDepth
+ }, true);
+ });
+}
+function computeNodeDepths(nodes, edges, height, width, nodeGap, iterations, orient) {
+ var nodesByBreadth = prepareNodesByBreadth(nodes, orient);
+ initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient);
+ resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
+ for (var alpha = 1; iterations > 0; iterations--) {
+ alpha *= 0.99;
+ relaxRightToLeft(nodesByBreadth, alpha, orient);
+ resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
+ relaxLeftToRight(nodesByBreadth, alpha, orient);
+ resolveCollisions(nodesByBreadth, nodeGap, height, width, orient);
+ }
+}
+function prepareNodesByBreadth(nodes, orient) {
+ var nodesByBreadth = [];
+ var keyAttr = orient === "vertical" ? "y" : "x";
+ var groupResult = groupData(nodes, function(node) {
+ return node.getLayout()[keyAttr];
+ });
+ groupResult.keys.sort(function(a, b) {
+ return a - b;
+ });
+ each(groupResult.keys, function(key) {
+ nodesByBreadth.push(groupResult.buckets.get(key));
+ });
+ return nodesByBreadth;
+}
+function initializeNodeDepth(nodesByBreadth, edges, height, width, nodeGap, orient) {
+ var minKy = Infinity;
+ each(nodesByBreadth, function(nodes) {
+ var n = nodes.length;
+ var sum2 = 0;
+ each(nodes, function(node) {
+ sum2 += node.getLayout().value;
+ });
+ var ky = orient === "vertical" ? (width - (n - 1) * nodeGap) / sum2 : (height - (n - 1) * nodeGap) / sum2;
+ if (ky < minKy) {
+ minKy = ky;
+ }
+ });
+ each(nodesByBreadth, function(nodes) {
+ each(nodes, function(node, i) {
+ var nodeDy = node.getLayout().value * minKy;
+ if (orient === "vertical") {
+ node.setLayout({
+ x: i
+ }, true);
+ node.setLayout({
+ dx: nodeDy
+ }, true);
+ } else {
+ node.setLayout({
+ y: i
+ }, true);
+ node.setLayout({
+ dy: nodeDy
+ }, true);
+ }
+ });
+ });
+ each(edges, function(edge) {
+ var edgeDy = +edge.getValue() * minKy;
+ edge.setLayout({
+ dy: edgeDy
+ }, true);
+ });
+}
+function resolveCollisions(nodesByBreadth, nodeGap, height, width, orient) {
+ var keyAttr = orient === "vertical" ? "x" : "y";
+ each(nodesByBreadth, function(nodes) {
+ nodes.sort(function(a, b) {
+ return a.getLayout()[keyAttr] - b.getLayout()[keyAttr];
+ });
+ var nodeX;
+ var node;
+ var dy;
+ var y0 = 0;
+ var n = nodes.length;
+ var nodeDyAttr = orient === "vertical" ? "dx" : "dy";
+ for (var i = 0; i < n; i++) {
+ node = nodes[i];
+ dy = y0 - node.getLayout()[keyAttr];
+ if (dy > 0) {
+ nodeX = node.getLayout()[keyAttr] + dy;
+ orient === "vertical" ? node.setLayout({
+ x: nodeX
+ }, true) : node.setLayout({
+ y: nodeX
+ }, true);
+ }
+ y0 = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap;
+ }
+ var viewWidth = orient === "vertical" ? width : height;
+ dy = y0 - nodeGap - viewWidth;
+ if (dy > 0) {
+ nodeX = node.getLayout()[keyAttr] - dy;
+ orient === "vertical" ? node.setLayout({
+ x: nodeX
+ }, true) : node.setLayout({
+ y: nodeX
+ }, true);
+ y0 = nodeX;
+ for (var i = n - 2; i >= 0; --i) {
+ node = nodes[i];
+ dy = node.getLayout()[keyAttr] + node.getLayout()[nodeDyAttr] + nodeGap - y0;
+ if (dy > 0) {
+ nodeX = node.getLayout()[keyAttr] - dy;
+ orient === "vertical" ? node.setLayout({
+ x: nodeX
+ }, true) : node.setLayout({
+ y: nodeX
+ }, true);
+ }
+ y0 = node.getLayout()[keyAttr];
+ }
+ }
+ });
+}
+function relaxRightToLeft(nodesByBreadth, alpha, orient) {
+ each(nodesByBreadth.slice().reverse(), function(nodes) {
+ each(nodes, function(node) {
+ if (node.outEdges.length) {
+ var y = sum(node.outEdges, weightedTarget, orient) / sum(node.outEdges, getEdgeValue);
+ if (isNaN(y)) {
+ var len2 = node.outEdges.length;
+ y = len2 ? sum(node.outEdges, centerTarget, orient) / len2 : 0;
+ }
+ if (orient === "vertical") {
+ var nodeX = node.getLayout().x + (y - center2(node, orient)) * alpha;
+ node.setLayout({
+ x: nodeX
+ }, true);
+ } else {
+ var nodeY = node.getLayout().y + (y - center2(node, orient)) * alpha;
+ node.setLayout({
+ y: nodeY
+ }, true);
+ }
+ }
+ });
+ });
+}
+function weightedTarget(edge, orient) {
+ return center2(edge.node2, orient) * edge.getValue();
+}
+function centerTarget(edge, orient) {
+ return center2(edge.node2, orient);
+}
+function weightedSource(edge, orient) {
+ return center2(edge.node1, orient) * edge.getValue();
+}
+function centerSource(edge, orient) {
+ return center2(edge.node1, orient);
+}
+function center2(node, orient) {
+ return orient === "vertical" ? node.getLayout().x + node.getLayout().dx / 2 : node.getLayout().y + node.getLayout().dy / 2;
+}
+function getEdgeValue(edge) {
+ return edge.getValue();
+}
+function sum(array, cb, orient) {
+ var sum2 = 0;
+ var len2 = array.length;
+ var i = -1;
+ while (++i < len2) {
+ var value = +cb(array[i], orient);
+ if (!isNaN(value)) {
+ sum2 += value;
+ }
+ }
+ return sum2;
+}
+function relaxLeftToRight(nodesByBreadth, alpha, orient) {
+ each(nodesByBreadth, function(nodes) {
+ each(nodes, function(node) {
+ if (node.inEdges.length) {
+ var y = sum(node.inEdges, weightedSource, orient) / sum(node.inEdges, getEdgeValue);
+ if (isNaN(y)) {
+ var len2 = node.inEdges.length;
+ y = len2 ? sum(node.inEdges, centerSource, orient) / len2 : 0;
+ }
+ if (orient === "vertical") {
+ var nodeX = node.getLayout().x + (y - center2(node, orient)) * alpha;
+ node.setLayout({
+ x: nodeX
+ }, true);
+ } else {
+ var nodeY = node.getLayout().y + (y - center2(node, orient)) * alpha;
+ node.setLayout({
+ y: nodeY
+ }, true);
+ }
+ }
+ });
+ });
+}
+function computeEdgeDepths(nodes, orient) {
+ var keyAttr = orient === "vertical" ? "x" : "y";
+ each(nodes, function(node) {
+ node.outEdges.sort(function(a, b) {
+ return a.node2.getLayout()[keyAttr] - b.node2.getLayout()[keyAttr];
+ });
+ node.inEdges.sort(function(a, b) {
+ return a.node1.getLayout()[keyAttr] - b.node1.getLayout()[keyAttr];
+ });
+ });
+ each(nodes, function(node) {
+ var sy = 0;
+ var ty = 0;
+ each(node.outEdges, function(edge) {
+ edge.setLayout({
+ sy
+ }, true);
+ sy += edge.getLayout().dy;
+ });
+ each(node.inEdges, function(edge) {
+ edge.setLayout({
+ ty
+ }, true);
+ ty += edge.getLayout().dy;
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/sankey/sankeyVisual.js
+function sankeyVisual(ecModel) {
+ ecModel.eachSeriesByType("sankey", function(seriesModel) {
+ var graph = seriesModel.getGraph();
+ var nodes = graph.nodes;
+ var edges = graph.edges;
+ if (nodes.length) {
+ var minValue_1 = Infinity;
+ var maxValue_1 = -Infinity;
+ each(nodes, function(node) {
+ var nodeValue = node.getLayout().value;
+ if (nodeValue < minValue_1) {
+ minValue_1 = nodeValue;
+ }
+ if (nodeValue > maxValue_1) {
+ maxValue_1 = nodeValue;
+ }
+ });
+ each(nodes, function(node) {
+ var mapping = new VisualMapping_default({
+ type: "color",
+ mappingMethod: "linear",
+ dataExtent: [minValue_1, maxValue_1],
+ visual: seriesModel.get("color")
+ });
+ var mapValueToColor = mapping.mapValueToVisual(node.getLayout().value);
+ var customColor = node.getModel().get(["itemStyle", "color"]);
+ if (customColor != null) {
+ node.setVisual("color", customColor);
+ node.setVisual("style", {
+ fill: customColor
+ });
+ } else {
+ node.setVisual("color", mapValueToColor);
+ node.setVisual("style", {
+ fill: mapValueToColor
+ });
+ }
+ });
+ }
+ if (edges.length) {
+ each(edges, function(edge) {
+ var edgeStyle = edge.getModel().get("lineStyle");
+ edge.setVisual("style", edgeStyle);
+ });
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/sankey/install.js
+function install19(registers) {
+ registers.registerChartView(SankeyView_default);
+ registers.registerSeriesModel(SankeySeries_default);
+ registers.registerLayout(sankeyLayout);
+ registers.registerVisual(sankeyVisual);
+ registers.registerAction({
+ type: "dragNode",
+ event: "dragnode",
+ update: "update"
+ }, function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "sankey",
+ query: payload
+ }, function(seriesModel) {
+ seriesModel.setNodePosition(payload.dataIndex, [payload.localX, payload.localY]);
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/helper/whiskerBoxCommon.js
+var WhiskerBoxCommonMixin = function() {
+ function WhiskerBoxCommonMixin2() {
+ }
+ WhiskerBoxCommonMixin2.prototype._hasEncodeRule = function(key) {
+ var encodeRules = this.getEncode();
+ return encodeRules && encodeRules.get(key) != null;
+ };
+ WhiskerBoxCommonMixin2.prototype.getInitialData = function(option, ecModel) {
+ var ordinalMeta;
+ var xAxisModel = ecModel.getComponent("xAxis", this.get("xAxisIndex"));
+ var yAxisModel = ecModel.getComponent("yAxis", this.get("yAxisIndex"));
+ var xAxisType = xAxisModel.get("type");
+ var yAxisType = yAxisModel.get("type");
+ var addOrdinal;
+ if (xAxisType === "category") {
+ option.layout = "horizontal";
+ ordinalMeta = xAxisModel.getOrdinalMeta();
+ addOrdinal = !this._hasEncodeRule("x");
+ } else if (yAxisType === "category") {
+ option.layout = "vertical";
+ ordinalMeta = yAxisModel.getOrdinalMeta();
+ addOrdinal = !this._hasEncodeRule("y");
+ } else {
+ option.layout = option.layout || "horizontal";
+ }
+ var coordDims = ["x", "y"];
+ var baseAxisDimIndex = option.layout === "horizontal" ? 0 : 1;
+ var baseAxisDim = this._baseAxisDim = coordDims[baseAxisDimIndex];
+ var otherAxisDim = coordDims[1 - baseAxisDimIndex];
+ var axisModels = [xAxisModel, yAxisModel];
+ var baseAxisType = axisModels[baseAxisDimIndex].get("type");
+ var otherAxisType = axisModels[1 - baseAxisDimIndex].get("type");
+ var data = option.data;
+ if (data && addOrdinal) {
+ var newOptionData_1 = [];
+ each(data, function(item, index) {
+ var newItem;
+ if (isArray(item)) {
+ newItem = item.slice();
+ item.unshift(index);
+ } else if (isArray(item.value)) {
+ newItem = extend({}, item);
+ newItem.value = newItem.value.slice();
+ item.value.unshift(index);
+ } else {
+ newItem = item;
+ }
+ newOptionData_1.push(newItem);
+ });
+ option.data = newOptionData_1;
+ }
+ var defaultValueDimensions = this.defaultValueDimensions;
+ var coordDimensions = [{
+ name: baseAxisDim,
+ type: getDimensionTypeByAxis(baseAxisType),
+ ordinalMeta,
+ otherDims: {
+ tooltip: false,
+ itemName: 0
+ },
+ dimsDef: ["base"]
+ }, {
+ name: otherAxisDim,
+ type: getDimensionTypeByAxis(otherAxisType),
+ dimsDef: defaultValueDimensions.slice()
+ }];
+ return createSeriesDataSimply(this, {
+ coordDimensions,
+ dimensionsCount: defaultValueDimensions.length + 1,
+ encodeDefaulter: curry(makeSeriesEncodeForAxisCoordSys, coordDimensions, this)
+ });
+ };
+ WhiskerBoxCommonMixin2.prototype.getBaseAxis = function() {
+ var dim = this._baseAxisDim;
+ return this.ecModel.getComponent(dim + "Axis", this.get(dim + "AxisIndex")).axis;
+ };
+ return WhiskerBoxCommonMixin2;
+}();
+
+// node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js
+var BoxplotSeriesModel = function(_super) {
+ __extends(BoxplotSeriesModel2, _super);
+ function BoxplotSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = BoxplotSeriesModel2.type;
+ _this.defaultValueDimensions = [{
+ name: "min",
+ defaultTooltip: true
+ }, {
+ name: "Q1",
+ defaultTooltip: true
+ }, {
+ name: "median",
+ defaultTooltip: true
+ }, {
+ name: "Q3",
+ defaultTooltip: true
+ }, {
+ name: "max",
+ defaultTooltip: true
+ }];
+ _this.visualDrawType = "stroke";
+ return _this;
+ }
+ BoxplotSeriesModel2.type = "series.boxplot";
+ BoxplotSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"];
+ BoxplotSeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "cartesian2d",
+ legendHoverLink: true,
+ layout: null,
+ boxWidth: [7, 50],
+ itemStyle: {
+ color: "#fff",
+ borderWidth: 1
+ },
+ emphasis: {
+ scale: true,
+ itemStyle: {
+ borderWidth: 2,
+ shadowBlur: 5,
+ shadowOffsetX: 1,
+ shadowOffsetY: 1,
+ shadowColor: "rgba(0,0,0,0.2)"
+ }
+ },
+ animationDuration: 800
+ };
+ return BoxplotSeriesModel2;
+}(Series_default);
+mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true);
+var BoxplotSeries_default = BoxplotSeriesModel;
+
+// node_modules/echarts/lib/chart/boxplot/BoxplotView.js
+var BoxplotView = function(_super) {
+ __extends(BoxplotView2, _super);
+ function BoxplotView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = BoxplotView2.type;
+ return _this;
+ }
+ BoxplotView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var group = this.group;
+ var oldData = this._data;
+ if (!this._data) {
+ group.removeAll();
+ }
+ var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0;
+ data.diff(oldData).add(function(newIdx) {
+ if (data.hasValue(newIdx)) {
+ var itemLayout = data.getItemLayout(newIdx);
+ var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);
+ data.setItemGraphicEl(newIdx, symbolEl);
+ group.add(symbolEl);
+ }
+ }).update(function(newIdx, oldIdx) {
+ var symbolEl = oldData.getItemGraphicEl(oldIdx);
+ if (!data.hasValue(newIdx)) {
+ group.remove(symbolEl);
+ return;
+ }
+ var itemLayout = data.getItemLayout(newIdx);
+ if (!symbolEl) {
+ symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);
+ } else {
+ saveOldStyle(symbolEl);
+ updateNormalBoxData(itemLayout, symbolEl, data, newIdx);
+ }
+ group.add(symbolEl);
+ data.setItemGraphicEl(newIdx, symbolEl);
+ }).remove(function(oldIdx) {
+ var el = oldData.getItemGraphicEl(oldIdx);
+ el && group.remove(el);
+ }).execute();
+ this._data = data;
+ };
+ BoxplotView2.prototype.remove = function(ecModel) {
+ var group = this.group;
+ var data = this._data;
+ this._data = null;
+ data && data.eachItemGraphicEl(function(el) {
+ el && group.remove(el);
+ });
+ };
+ BoxplotView2.type = "boxplot";
+ return BoxplotView2;
+}(Chart_default);
+var BoxPathShape = function() {
+ function BoxPathShape2() {
+ }
+ return BoxPathShape2;
+}();
+var BoxPath = function(_super) {
+ __extends(BoxPath2, _super);
+ function BoxPath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "boxplotBoxPath";
+ return _this;
+ }
+ BoxPath2.prototype.getDefaultShape = function() {
+ return new BoxPathShape();
+ };
+ BoxPath2.prototype.buildPath = function(ctx, shape) {
+ var ends = shape.points;
+ var i = 0;
+ ctx.moveTo(ends[i][0], ends[i][1]);
+ i++;
+ for (; i < 4; i++) {
+ ctx.lineTo(ends[i][0], ends[i][1]);
+ }
+ ctx.closePath();
+ for (; i < ends.length; i++) {
+ ctx.moveTo(ends[i][0], ends[i][1]);
+ i++;
+ ctx.lineTo(ends[i][0], ends[i][1]);
+ }
+ };
+ return BoxPath2;
+}(Path_default);
+function createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {
+ var ends = itemLayout.ends;
+ var el = new BoxPath({
+ shape: {
+ points: isInit ? transInit(ends, constDim, itemLayout) : ends
+ }
+ });
+ updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);
+ return el;
+}
+function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {
+ var seriesModel = data.hostModel;
+ var updateMethod = graphic_exports[isInit ? "initProps" : "updateProps"];
+ updateMethod(el, {
+ shape: {
+ points: itemLayout.ends
+ }
+ }, seriesModel, dataIndex);
+ el.useStyle(data.getItemVisual(dataIndex, "style"));
+ el.style.strokeNoScale = true;
+ el.z2 = 100;
+ var itemModel = data.getItemModel(dataIndex);
+ var emphasisModel = itemModel.getModel("emphasis");
+ setStatesStylesFromModel(el, itemModel);
+ toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+}
+function transInit(points4, dim, itemLayout) {
+ return map(points4, function(point) {
+ point = point.slice();
+ point[dim] = itemLayout.initBaseline;
+ return point;
+ });
+}
+var BoxplotView_default = BoxplotView;
+
+// node_modules/echarts/lib/chart/boxplot/boxplotLayout.js
+var each7 = each;
+function boxplotLayout(ecModel) {
+ var groupResult = groupSeriesByAxis(ecModel);
+ each7(groupResult, function(groupItem) {
+ var seriesModels = groupItem.seriesModels;
+ if (!seriesModels.length) {
+ return;
+ }
+ calculateBase(groupItem);
+ each7(seriesModels, function(seriesModel, idx) {
+ layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);
+ });
+ });
+}
+function groupSeriesByAxis(ecModel) {
+ var result = [];
+ var axisList = [];
+ ecModel.eachSeriesByType("boxplot", function(seriesModel) {
+ var baseAxis = seriesModel.getBaseAxis();
+ var idx = indexOf(axisList, baseAxis);
+ if (idx < 0) {
+ idx = axisList.length;
+ axisList[idx] = baseAxis;
+ result[idx] = {
+ axis: baseAxis,
+ seriesModels: []
+ };
+ }
+ result[idx].seriesModels.push(seriesModel);
+ });
+ return result;
+}
+function calculateBase(groupItem) {
+ var baseAxis = groupItem.axis;
+ var seriesModels = groupItem.seriesModels;
+ var seriesCount = seriesModels.length;
+ var boxWidthList = groupItem.boxWidthList = [];
+ var boxOffsetList = groupItem.boxOffsetList = [];
+ var boundList = [];
+ var bandWidth;
+ if (baseAxis.type === "category") {
+ bandWidth = baseAxis.getBandWidth();
+ } else {
+ var maxDataCount_1 = 0;
+ each7(seriesModels, function(seriesModel) {
+ maxDataCount_1 = Math.max(maxDataCount_1, seriesModel.getData().count());
+ });
+ var extent3 = baseAxis.getExtent();
+ bandWidth = Math.abs(extent3[1] - extent3[0]) / maxDataCount_1;
+ }
+ each7(seriesModels, function(seriesModel) {
+ var boxWidthBound = seriesModel.get("boxWidth");
+ if (!isArray(boxWidthBound)) {
+ boxWidthBound = [boxWidthBound, boxWidthBound];
+ }
+ boundList.push([parsePercent2(boxWidthBound[0], bandWidth) || 0, parsePercent2(boxWidthBound[1], bandWidth) || 0]);
+ });
+ var availableWidth = bandWidth * 0.8 - 2;
+ var boxGap = availableWidth / seriesCount * 0.3;
+ var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;
+ var base2 = boxWidth / 2 - availableWidth / 2;
+ each7(seriesModels, function(seriesModel, idx) {
+ boxOffsetList.push(base2);
+ base2 += boxGap + boxWidth;
+ boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));
+ });
+}
+function layoutSingleSeries(seriesModel, offset, boxWidth) {
+ var coordSys = seriesModel.coordinateSystem;
+ var data = seriesModel.getData();
+ var halfWidth = boxWidth / 2;
+ var cDimIdx = seriesModel.get("layout") === "horizontal" ? 0 : 1;
+ var vDimIdx = 1 - cDimIdx;
+ var coordDims = ["x", "y"];
+ var cDim = data.mapDimension(coordDims[cDimIdx]);
+ var vDims = data.mapDimensionsAll(coordDims[vDimIdx]);
+ if (cDim == null || vDims.length < 5) {
+ return;
+ }
+ for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {
+ var axisDimVal = data.get(cDim, dataIndex);
+ var median = getPoint(axisDimVal, vDims[2], dataIndex);
+ var end1 = getPoint(axisDimVal, vDims[0], dataIndex);
+ var end2 = getPoint(axisDimVal, vDims[1], dataIndex);
+ var end4 = getPoint(axisDimVal, vDims[3], dataIndex);
+ var end5 = getPoint(axisDimVal, vDims[4], dataIndex);
+ var ends = [];
+ addBodyEnd(ends, end2, false);
+ addBodyEnd(ends, end4, true);
+ ends.push(end1, end2, end5, end4);
+ layEndLine(ends, end1);
+ layEndLine(ends, end5);
+ layEndLine(ends, median);
+ data.setItemLayout(dataIndex, {
+ initBaseline: median[vDimIdx],
+ ends
+ });
+ }
+ function getPoint(axisDimVal2, dim, dataIndex2) {
+ var val = data.get(dim, dataIndex2);
+ var p = [];
+ p[cDimIdx] = axisDimVal2;
+ p[vDimIdx] = val;
+ var point;
+ if (isNaN(axisDimVal2) || isNaN(val)) {
+ point = [NaN, NaN];
+ } else {
+ point = coordSys.dataToPoint(p);
+ point[cDimIdx] += offset;
+ }
+ return point;
+ }
+ function addBodyEnd(ends2, point, start2) {
+ var point1 = point.slice();
+ var point2 = point.slice();
+ point1[cDimIdx] += halfWidth;
+ point2[cDimIdx] -= halfWidth;
+ start2 ? ends2.push(point1, point2) : ends2.push(point2, point1);
+ }
+ function layEndLine(ends2, endCenter) {
+ var from = endCenter.slice();
+ var to = endCenter.slice();
+ from[cDimIdx] -= halfWidth;
+ to[cDimIdx] += halfWidth;
+ ends2.push(from, to);
+ }
+}
+
+// node_modules/echarts/lib/chart/boxplot/prepareBoxplotData.js
+function prepareBoxplotData(rawData, opt) {
+ opt = opt || {};
+ var boxData = [];
+ var outliers = [];
+ var boundIQR = opt.boundIQR;
+ var useExtreme = boundIQR === "none" || boundIQR === 0;
+ for (var i = 0; i < rawData.length; i++) {
+ var ascList = asc(rawData[i].slice());
+ var Q1 = quantile(ascList, 0.25);
+ var Q2 = quantile(ascList, 0.5);
+ var Q3 = quantile(ascList, 0.75);
+ var min3 = ascList[0];
+ var max3 = ascList[ascList.length - 1];
+ var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);
+ var low = useExtreme ? min3 : Math.max(min3, Q1 - bound);
+ var high = useExtreme ? max3 : Math.min(max3, Q3 + bound);
+ var itemNameFormatter = opt.itemNameFormatter;
+ var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({
+ value: i
+ }) : isString(itemNameFormatter) ? itemNameFormatter.replace("{value}", i + "") : i + "";
+ boxData.push([itemName, low, Q1, Q2, Q3, high]);
+ for (var j = 0; j < ascList.length; j++) {
+ var dataItem = ascList[j];
+ if (dataItem < low || dataItem > high) {
+ var outlier = [itemName, dataItem];
+ outliers.push(outlier);
+ }
+ }
+ }
+ return {
+ boxData,
+ outliers
+ };
+}
+
+// node_modules/echarts/lib/chart/boxplot/boxplotTransform.js
+var boxplotTransform = {
+ type: "echarts:boxplot",
+ transform: function transform(params) {
+ var upstream = params.upstream;
+ if (upstream.sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS) {
+ var errMsg = "";
+ if (true) {
+ errMsg = makePrintable("source data is not applicable for this boxplot transform. Expect number[][].");
+ }
+ throwError(errMsg);
+ }
+ var result = prepareBoxplotData(upstream.getRawData(), params.config);
+ return [{
+ dimensions: ["ItemName", "Low", "Q1", "Q2", "Q3", "High"],
+ data: result.boxData
+ }, {
+ data: result.outliers
+ }];
+ }
+};
+
+// node_modules/echarts/lib/chart/boxplot/install.js
+function install20(registers) {
+ registers.registerSeriesModel(BoxplotSeries_default);
+ registers.registerChartView(BoxplotView_default);
+ registers.registerLayout(boxplotLayout);
+ registers.registerTransform(boxplotTransform);
+}
+
+// node_modules/echarts/lib/chart/candlestick/candlestickVisual.js
+var positiveBorderColorQuery = ["itemStyle", "borderColor"];
+var negativeBorderColorQuery = ["itemStyle", "borderColor0"];
+var dojiBorderColorQuery = ["itemStyle", "borderColorDoji"];
+var positiveColorQuery = ["itemStyle", "color"];
+var negativeColorQuery = ["itemStyle", "color0"];
+function getColor(sign, model) {
+ return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);
+}
+function getBorderColor(sign, model) {
+ return model.get(sign === 0 ? dojiBorderColorQuery : sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);
+}
+var candlestickVisual = {
+ seriesType: "candlestick",
+ plan: createRenderPlanner(),
+ performRawSeries: true,
+ reset: function(seriesModel, ecModel) {
+ if (ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ var isLargeRender = seriesModel.pipelineContext.large;
+ return !isLargeRender && {
+ progress: function(params, data) {
+ var dataIndex;
+ while ((dataIndex = params.next()) != null) {
+ var itemModel = data.getItemModel(dataIndex);
+ var sign = data.getItemLayout(dataIndex).sign;
+ var style = itemModel.getItemStyle();
+ style.fill = getColor(sign, itemModel);
+ style.stroke = getBorderColor(sign, itemModel) || style.fill;
+ var existsStyle = data.ensureUniqueItemVisual(dataIndex, "style");
+ extend(existsStyle, style);
+ }
+ }
+ };
+ }
+};
+var candlestickVisual_default = candlestickVisual;
+
+// node_modules/echarts/lib/chart/candlestick/CandlestickView.js
+var SKIP_PROPS = ["color", "borderColor"];
+var CandlestickView = function(_super) {
+ __extends(CandlestickView2, _super);
+ function CandlestickView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CandlestickView2.type;
+ return _this;
+ }
+ CandlestickView2.prototype.render = function(seriesModel, ecModel, api) {
+ this.group.removeClipPath();
+ this._progressiveEls = null;
+ this._updateDrawMode(seriesModel);
+ this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);
+ };
+ CandlestickView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
+ this._clear();
+ this._updateDrawMode(seriesModel);
+ };
+ CandlestickView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) {
+ this._progressiveEls = [];
+ this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);
+ };
+ CandlestickView2.prototype.eachRendered = function(cb) {
+ traverseElements(this._progressiveEls || this.group, cb);
+ };
+ CandlestickView2.prototype._updateDrawMode = function(seriesModel) {
+ var isLargeDraw = seriesModel.pipelineContext.large;
+ if (this._isLargeDraw == null || isLargeDraw !== this._isLargeDraw) {
+ this._isLargeDraw = isLargeDraw;
+ this._clear();
+ }
+ };
+ CandlestickView2.prototype._renderNormal = function(seriesModel) {
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ var group = this.group;
+ var isSimpleBox = data.getLayout("isSimpleBox");
+ var needsClip = seriesModel.get("clip", true);
+ var coord = seriesModel.coordinateSystem;
+ var clipArea = coord.getArea && coord.getArea();
+ if (!this._data) {
+ group.removeAll();
+ }
+ data.diff(oldData).add(function(newIdx) {
+ if (data.hasValue(newIdx)) {
+ var itemLayout = data.getItemLayout(newIdx);
+ if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
+ return;
+ }
+ var el = createNormalBox2(itemLayout, newIdx, true);
+ initProps(el, {
+ shape: {
+ points: itemLayout.ends
+ }
+ }, seriesModel, newIdx);
+ setBoxCommon(el, data, newIdx, isSimpleBox);
+ group.add(el);
+ data.setItemGraphicEl(newIdx, el);
+ }
+ }).update(function(newIdx, oldIdx) {
+ var el = oldData.getItemGraphicEl(oldIdx);
+ if (!data.hasValue(newIdx)) {
+ group.remove(el);
+ return;
+ }
+ var itemLayout = data.getItemLayout(newIdx);
+ if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {
+ group.remove(el);
+ return;
+ }
+ if (!el) {
+ el = createNormalBox2(itemLayout, newIdx);
+ } else {
+ updateProps(el, {
+ shape: {
+ points: itemLayout.ends
+ }
+ }, seriesModel, newIdx);
+ saveOldStyle(el);
+ }
+ setBoxCommon(el, data, newIdx, isSimpleBox);
+ group.add(el);
+ data.setItemGraphicEl(newIdx, el);
+ }).remove(function(oldIdx) {
+ var el = oldData.getItemGraphicEl(oldIdx);
+ el && group.remove(el);
+ }).execute();
+ this._data = data;
+ };
+ CandlestickView2.prototype._renderLarge = function(seriesModel) {
+ this._clear();
+ createLarge2(seriesModel, this.group);
+ var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;
+ if (clipPath) {
+ this.group.setClipPath(clipPath);
+ } else {
+ this.group.removeClipPath();
+ }
+ };
+ CandlestickView2.prototype._incrementalRenderNormal = function(params, seriesModel) {
+ var data = seriesModel.getData();
+ var isSimpleBox = data.getLayout("isSimpleBox");
+ var dataIndex;
+ while ((dataIndex = params.next()) != null) {
+ var itemLayout = data.getItemLayout(dataIndex);
+ var el = createNormalBox2(itemLayout, dataIndex);
+ setBoxCommon(el, data, dataIndex, isSimpleBox);
+ el.incremental = true;
+ this.group.add(el);
+ this._progressiveEls.push(el);
+ }
+ };
+ CandlestickView2.prototype._incrementalRenderLarge = function(params, seriesModel) {
+ createLarge2(seriesModel, this.group, this._progressiveEls, true);
+ };
+ CandlestickView2.prototype.remove = function(ecModel) {
+ this._clear();
+ };
+ CandlestickView2.prototype._clear = function() {
+ this.group.removeAll();
+ this._data = null;
+ };
+ CandlestickView2.type = "candlestick";
+ return CandlestickView2;
+}(Chart_default);
+var NormalBoxPathShape = function() {
+ function NormalBoxPathShape2() {
+ }
+ return NormalBoxPathShape2;
+}();
+var NormalBoxPath = function(_super) {
+ __extends(NormalBoxPath2, _super);
+ function NormalBoxPath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "normalCandlestickBox";
+ return _this;
+ }
+ NormalBoxPath2.prototype.getDefaultShape = function() {
+ return new NormalBoxPathShape();
+ };
+ NormalBoxPath2.prototype.buildPath = function(ctx, shape) {
+ var ends = shape.points;
+ if (this.__simpleBox) {
+ ctx.moveTo(ends[4][0], ends[4][1]);
+ ctx.lineTo(ends[6][0], ends[6][1]);
+ } else {
+ ctx.moveTo(ends[0][0], ends[0][1]);
+ ctx.lineTo(ends[1][0], ends[1][1]);
+ ctx.lineTo(ends[2][0], ends[2][1]);
+ ctx.lineTo(ends[3][0], ends[3][1]);
+ ctx.closePath();
+ ctx.moveTo(ends[4][0], ends[4][1]);
+ ctx.lineTo(ends[5][0], ends[5][1]);
+ ctx.moveTo(ends[6][0], ends[6][1]);
+ ctx.lineTo(ends[7][0], ends[7][1]);
+ }
+ };
+ return NormalBoxPath2;
+}(Path_default);
+function createNormalBox2(itemLayout, dataIndex, isInit) {
+ var ends = itemLayout.ends;
+ return new NormalBoxPath({
+ shape: {
+ points: isInit ? transInit2(ends, itemLayout) : ends
+ },
+ z2: 100
+ });
+}
+function isNormalBoxClipped(clipArea, itemLayout) {
+ var clipped = true;
+ for (var i = 0; i < itemLayout.ends.length; i++) {
+ if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {
+ clipped = false;
+ break;
+ }
+ }
+ return clipped;
+}
+function setBoxCommon(el, data, dataIndex, isSimpleBox) {
+ var itemModel = data.getItemModel(dataIndex);
+ el.useStyle(data.getItemVisual(dataIndex, "style"));
+ el.style.strokeNoScale = true;
+ el.__simpleBox = isSimpleBox;
+ setStatesStylesFromModel(el, itemModel);
+ var sign = data.getItemLayout(dataIndex).sign;
+ each(el.states, function(state, stateName) {
+ var stateModel = itemModel.getModel(stateName);
+ var color = getColor(sign, stateModel);
+ var borderColor = getBorderColor(sign, stateModel) || color;
+ var stateStyle = state.style || (state.style = {});
+ color && (stateStyle.fill = color);
+ borderColor && (stateStyle.stroke = borderColor);
+ });
+ var emphasisModel = itemModel.getModel("emphasis");
+ toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+}
+function transInit2(points4, itemLayout) {
+ return map(points4, function(point) {
+ point = point.slice();
+ point[1] = itemLayout.initBaseline;
+ return point;
+ });
+}
+var LargeBoxPathShape = function() {
+ function LargeBoxPathShape2() {
+ }
+ return LargeBoxPathShape2;
+}();
+var LargeBoxPath = function(_super) {
+ __extends(LargeBoxPath2, _super);
+ function LargeBoxPath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this.type = "largeCandlestickBox";
+ return _this;
+ }
+ LargeBoxPath2.prototype.getDefaultShape = function() {
+ return new LargeBoxPathShape();
+ };
+ LargeBoxPath2.prototype.buildPath = function(ctx, shape) {
+ var points4 = shape.points;
+ for (var i = 0; i < points4.length; ) {
+ if (this.__sign === points4[i++]) {
+ var x = points4[i++];
+ ctx.moveTo(x, points4[i++]);
+ ctx.lineTo(x, points4[i++]);
+ } else {
+ i += 3;
+ }
+ }
+ };
+ return LargeBoxPath2;
+}(Path_default);
+function createLarge2(seriesModel, group, progressiveEls, incremental) {
+ var data = seriesModel.getData();
+ var largePoints = data.getLayout("largePoints");
+ var elP = new LargeBoxPath({
+ shape: {
+ points: largePoints
+ },
+ __sign: 1,
+ ignoreCoarsePointer: true
+ });
+ group.add(elP);
+ var elN = new LargeBoxPath({
+ shape: {
+ points: largePoints
+ },
+ __sign: -1,
+ ignoreCoarsePointer: true
+ });
+ group.add(elN);
+ var elDoji = new LargeBoxPath({
+ shape: {
+ points: largePoints
+ },
+ __sign: 0,
+ ignoreCoarsePointer: true
+ });
+ group.add(elDoji);
+ setLargeStyle(1, elP, seriesModel, data);
+ setLargeStyle(-1, elN, seriesModel, data);
+ setLargeStyle(0, elDoji, seriesModel, data);
+ if (incremental) {
+ elP.incremental = true;
+ elN.incremental = true;
+ }
+ if (progressiveEls) {
+ progressiveEls.push(elP, elN);
+ }
+}
+function setLargeStyle(sign, el, seriesModel, data) {
+ var borderColor = getBorderColor(sign, seriesModel) || getColor(sign, seriesModel);
+ var itemStyle = seriesModel.getModel("itemStyle").getItemStyle(SKIP_PROPS);
+ el.useStyle(itemStyle);
+ el.style.fill = null;
+ el.style.stroke = borderColor;
+}
+var CandlestickView_default = CandlestickView;
+
+// node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js
+var CandlestickSeriesModel = function(_super) {
+ __extends(CandlestickSeriesModel2, _super);
+ function CandlestickSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CandlestickSeriesModel2.type;
+ _this.defaultValueDimensions = [{
+ name: "open",
+ defaultTooltip: true
+ }, {
+ name: "close",
+ defaultTooltip: true
+ }, {
+ name: "lowest",
+ defaultTooltip: true
+ }, {
+ name: "highest",
+ defaultTooltip: true
+ }];
+ return _this;
+ }
+ CandlestickSeriesModel2.prototype.getShadowDim = function() {
+ return "open";
+ };
+ CandlestickSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
+ var itemLayout = data.getItemLayout(dataIndex);
+ return itemLayout && selectors.rect(itemLayout.brushRect);
+ };
+ CandlestickSeriesModel2.type = "series.candlestick";
+ CandlestickSeriesModel2.dependencies = ["xAxis", "yAxis", "grid"];
+ CandlestickSeriesModel2.defaultOption = {
+ z: 2,
+ coordinateSystem: "cartesian2d",
+ legendHoverLink: true,
+ layout: null,
+ clip: true,
+ itemStyle: {
+ color: "#eb5454",
+ color0: "#47b262",
+ borderColor: "#eb5454",
+ borderColor0: "#47b262",
+ borderColorDoji: null,
+ borderWidth: 1
+ },
+ emphasis: {
+ itemStyle: {
+ borderWidth: 2
+ }
+ },
+ barMaxWidth: null,
+ barMinWidth: null,
+ barWidth: null,
+ large: true,
+ largeThreshold: 600,
+ progressive: 3e3,
+ progressiveThreshold: 1e4,
+ progressiveChunkMode: "mod",
+ animationEasing: "linear",
+ animationDuration: 300
+ };
+ return CandlestickSeriesModel2;
+}(Series_default);
+mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true);
+var CandlestickSeries_default = CandlestickSeriesModel;
+
+// node_modules/echarts/lib/chart/candlestick/preprocessor.js
+function candlestickPreprocessor(option) {
+ if (!option || !isArray(option.series)) {
+ return;
+ }
+ each(option.series, function(seriesItem) {
+ if (isObject(seriesItem) && seriesItem.type === "k") {
+ seriesItem.type = "candlestick";
+ }
+ });
+}
+
+// node_modules/echarts/lib/chart/candlestick/candlestickLayout.js
+var candlestickLayout = {
+ seriesType: "candlestick",
+ plan: createRenderPlanner(),
+ reset: function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ var data = seriesModel.getData();
+ var candleWidth = calculateCandleWidth(seriesModel, data);
+ var cDimIdx = 0;
+ var vDimIdx = 1;
+ var coordDims = ["x", "y"];
+ var cDimI = data.getDimensionIndex(data.mapDimension(coordDims[cDimIdx]));
+ var vDimsI = map(data.mapDimensionsAll(coordDims[vDimIdx]), data.getDimensionIndex, data);
+ var openDimI = vDimsI[0];
+ var closeDimI = vDimsI[1];
+ var lowestDimI = vDimsI[2];
+ var highestDimI = vDimsI[3];
+ data.setLayout({
+ candleWidth,
+ isSimpleBox: candleWidth <= 1.3
+ });
+ if (cDimI < 0 || vDimsI.length < 4) {
+ return;
+ }
+ return {
+ progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress
+ };
+ function normalProgress(params, data2) {
+ var dataIndex;
+ var store = data2.getStore();
+ while ((dataIndex = params.next()) != null) {
+ var axisDimVal = store.get(cDimI, dataIndex);
+ var openVal = store.get(openDimI, dataIndex);
+ var closeVal = store.get(closeDimI, dataIndex);
+ var lowestVal = store.get(lowestDimI, dataIndex);
+ var highestVal = store.get(highestDimI, dataIndex);
+ var ocLow = Math.min(openVal, closeVal);
+ var ocHigh = Math.max(openVal, closeVal);
+ var ocLowPoint = getPoint(ocLow, axisDimVal);
+ var ocHighPoint = getPoint(ocHigh, axisDimVal);
+ var lowestPoint = getPoint(lowestVal, axisDimVal);
+ var highestPoint = getPoint(highestVal, axisDimVal);
+ var ends = [];
+ addBodyEnd(ends, ocHighPoint, 0);
+ addBodyEnd(ends, ocLowPoint, 1);
+ ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));
+ var itemModel = data2.getItemModel(dataIndex);
+ var hasDojiColor = !!itemModel.get(["itemStyle", "borderColorDoji"]);
+ data2.setItemLayout(dataIndex, {
+ sign: getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor),
+ initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],
+ ends,
+ brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)
+ });
+ }
+ function getPoint(val, axisDimVal2) {
+ var p = [];
+ p[cDimIdx] = axisDimVal2;
+ p[vDimIdx] = val;
+ return isNaN(axisDimVal2) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);
+ }
+ function addBodyEnd(ends2, point, start2) {
+ var point1 = point.slice();
+ var point2 = point.slice();
+ point1[cDimIdx] = subPixelOptimize2(point1[cDimIdx] + candleWidth / 2, 1, false);
+ point2[cDimIdx] = subPixelOptimize2(point2[cDimIdx] - candleWidth / 2, 1, true);
+ start2 ? ends2.push(point1, point2) : ends2.push(point2, point1);
+ }
+ function makeBrushRect(lowestVal2, highestVal2, axisDimVal2) {
+ var pmin = getPoint(lowestVal2, axisDimVal2);
+ var pmax = getPoint(highestVal2, axisDimVal2);
+ pmin[cDimIdx] -= candleWidth / 2;
+ pmax[cDimIdx] -= candleWidth / 2;
+ return {
+ x: pmin[0],
+ y: pmin[1],
+ width: vDimIdx ? candleWidth : pmax[0] - pmin[0],
+ height: vDimIdx ? pmax[1] - pmin[1] : candleWidth
+ };
+ }
+ function subPixelOptimizePoint(point) {
+ point[cDimIdx] = subPixelOptimize2(point[cDimIdx], 1);
+ return point;
+ }
+ }
+ function largeProgress(params, data2) {
+ var points4 = createFloat32Array(params.count * 4);
+ var offset = 0;
+ var point;
+ var tmpIn = [];
+ var tmpOut = [];
+ var dataIndex;
+ var store = data2.getStore();
+ var hasDojiColor = !!seriesModel.get(["itemStyle", "borderColorDoji"]);
+ while ((dataIndex = params.next()) != null) {
+ var axisDimVal = store.get(cDimI, dataIndex);
+ var openVal = store.get(openDimI, dataIndex);
+ var closeVal = store.get(closeDimI, dataIndex);
+ var lowestVal = store.get(lowestDimI, dataIndex);
+ var highestVal = store.get(highestDimI, dataIndex);
+ if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {
+ points4[offset++] = NaN;
+ offset += 3;
+ continue;
+ }
+ points4[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor);
+ tmpIn[cDimIdx] = axisDimVal;
+ tmpIn[vDimIdx] = lowestVal;
+ point = coordSys.dataToPoint(tmpIn, null, tmpOut);
+ points4[offset++] = point ? point[0] : NaN;
+ points4[offset++] = point ? point[1] : NaN;
+ tmpIn[vDimIdx] = highestVal;
+ point = coordSys.dataToPoint(tmpIn, null, tmpOut);
+ points4[offset++] = point ? point[1] : NaN;
+ }
+ data2.setLayout("largePoints", points4);
+ }
+ }
+};
+function getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor) {
+ var sign;
+ if (openVal > closeVal) {
+ sign = -1;
+ } else if (openVal < closeVal) {
+ sign = 1;
+ } else {
+ sign = hasDojiColor ? 0 : dataIndex > 0 ? store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1 : 1;
+ }
+ return sign;
+}
+function calculateCandleWidth(seriesModel, data) {
+ var baseAxis = seriesModel.getBaseAxis();
+ var extent3;
+ var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : (extent3 = baseAxis.getExtent(), Math.abs(extent3[1] - extent3[0]) / data.count());
+ var barMaxWidth = parsePercent2(retrieve2(seriesModel.get("barMaxWidth"), bandWidth), bandWidth);
+ var barMinWidth = parsePercent2(retrieve2(seriesModel.get("barMinWidth"), 1), bandWidth);
+ var barWidth = seriesModel.get("barWidth");
+ return barWidth != null ? parsePercent2(barWidth, bandWidth) : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);
+}
+var candlestickLayout_default = candlestickLayout;
+
+// node_modules/echarts/lib/chart/candlestick/install.js
+function install21(registers) {
+ registers.registerChartView(CandlestickView_default);
+ registers.registerSeriesModel(CandlestickSeries_default);
+ registers.registerPreprocessor(candlestickPreprocessor);
+ registers.registerVisual(candlestickVisual_default);
+ registers.registerLayout(candlestickLayout_default);
+}
+
+// node_modules/echarts/lib/chart/helper/EffectSymbol.js
+function updateRipplePath(rippleGroup, effectCfg) {
+ var color = effectCfg.rippleEffectColor || effectCfg.color;
+ rippleGroup.eachChild(function(ripplePath) {
+ ripplePath.attr({
+ z: effectCfg.z,
+ zlevel: effectCfg.zlevel,
+ style: {
+ stroke: effectCfg.brushType === "stroke" ? color : null,
+ fill: effectCfg.brushType === "fill" ? color : null
+ }
+ });
+ });
+}
+var EffectSymbol = function(_super) {
+ __extends(EffectSymbol2, _super);
+ function EffectSymbol2(data, idx) {
+ var _this = _super.call(this) || this;
+ var symbol = new Symbol_default(data, idx);
+ var rippleGroup = new Group_default();
+ _this.add(symbol);
+ _this.add(rippleGroup);
+ _this.updateData(data, idx);
+ return _this;
+ }
+ EffectSymbol2.prototype.stopEffectAnimation = function() {
+ this.childAt(1).removeAll();
+ };
+ EffectSymbol2.prototype.startEffectAnimation = function(effectCfg) {
+ var symbolType = effectCfg.symbolType;
+ var color = effectCfg.color;
+ var rippleNumber = effectCfg.rippleNumber;
+ var rippleGroup = this.childAt(1);
+ for (var i = 0; i < rippleNumber; i++) {
+ var ripplePath = createSymbol(symbolType, -1, -1, 2, 2, color);
+ ripplePath.attr({
+ style: {
+ strokeNoScale: true
+ },
+ z2: 99,
+ silent: true,
+ scaleX: 0.5,
+ scaleY: 0.5
+ });
+ var delay = -i / rippleNumber * effectCfg.period + effectCfg.effectOffset;
+ ripplePath.animate("", true).when(effectCfg.period, {
+ scaleX: effectCfg.rippleScale / 2,
+ scaleY: effectCfg.rippleScale / 2
+ }).delay(delay).start();
+ ripplePath.animateStyle(true).when(effectCfg.period, {
+ opacity: 0
+ }).delay(delay).start();
+ rippleGroup.add(ripplePath);
+ }
+ updateRipplePath(rippleGroup, effectCfg);
+ };
+ EffectSymbol2.prototype.updateEffectAnimation = function(effectCfg) {
+ var oldEffectCfg = this._effectCfg;
+ var rippleGroup = this.childAt(1);
+ var DIFFICULT_PROPS = ["symbolType", "period", "rippleScale", "rippleNumber"];
+ for (var i = 0; i < DIFFICULT_PROPS.length; i++) {
+ var propName = DIFFICULT_PROPS[i];
+ if (oldEffectCfg[propName] !== effectCfg[propName]) {
+ this.stopEffectAnimation();
+ this.startEffectAnimation(effectCfg);
+ return;
+ }
+ }
+ updateRipplePath(rippleGroup, effectCfg);
+ };
+ EffectSymbol2.prototype.highlight = function() {
+ enterEmphasis(this);
+ };
+ EffectSymbol2.prototype.downplay = function() {
+ leaveEmphasis(this);
+ };
+ EffectSymbol2.prototype.getSymbolType = function() {
+ var symbol = this.childAt(0);
+ return symbol && symbol.getSymbolType();
+ };
+ EffectSymbol2.prototype.updateData = function(data, idx) {
+ var _this = this;
+ var seriesModel = data.hostModel;
+ this.childAt(0).updateData(data, idx);
+ var rippleGroup = this.childAt(1);
+ var itemModel = data.getItemModel(idx);
+ var symbolType = data.getItemVisual(idx, "symbol");
+ var symbolSize = normalizeSymbolSize(data.getItemVisual(idx, "symbolSize"));
+ var symbolStyle = data.getItemVisual(idx, "style");
+ var color = symbolStyle && symbolStyle.fill;
+ var emphasisModel = itemModel.getModel("emphasis");
+ rippleGroup.setScale(symbolSize);
+ rippleGroup.traverse(function(ripplePath) {
+ ripplePath.setStyle("fill", color);
+ });
+ var symbolOffset = normalizeSymbolOffset(data.getItemVisual(idx, "symbolOffset"), symbolSize);
+ if (symbolOffset) {
+ rippleGroup.x = symbolOffset[0];
+ rippleGroup.y = symbolOffset[1];
+ }
+ var symbolRotate = data.getItemVisual(idx, "symbolRotate");
+ rippleGroup.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
+ var effectCfg = {};
+ effectCfg.showEffectOn = seriesModel.get("showEffectOn");
+ effectCfg.rippleScale = itemModel.get(["rippleEffect", "scale"]);
+ effectCfg.brushType = itemModel.get(["rippleEffect", "brushType"]);
+ effectCfg.period = itemModel.get(["rippleEffect", "period"]) * 1e3;
+ effectCfg.effectOffset = idx / data.count();
+ effectCfg.z = seriesModel.getShallow("z") || 0;
+ effectCfg.zlevel = seriesModel.getShallow("zlevel") || 0;
+ effectCfg.symbolType = symbolType;
+ effectCfg.color = color;
+ effectCfg.rippleEffectColor = itemModel.get(["rippleEffect", "color"]);
+ effectCfg.rippleNumber = itemModel.get(["rippleEffect", "number"]);
+ if (effectCfg.showEffectOn === "render") {
+ this._effectCfg ? this.updateEffectAnimation(effectCfg) : this.startEffectAnimation(effectCfg);
+ this._effectCfg = effectCfg;
+ } else {
+ this._effectCfg = null;
+ this.stopEffectAnimation();
+ this.onHoverStateChange = function(toState) {
+ if (toState === "emphasis") {
+ if (effectCfg.showEffectOn !== "render") {
+ _this.startEffectAnimation(effectCfg);
+ }
+ } else if (toState === "normal") {
+ if (effectCfg.showEffectOn !== "render") {
+ _this.stopEffectAnimation();
+ }
+ }
+ };
+ }
+ this._effectCfg = effectCfg;
+ toggleHoverEmphasis(this, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ };
+ ;
+ EffectSymbol2.prototype.fadeOut = function(cb) {
+ cb && cb();
+ };
+ ;
+ return EffectSymbol2;
+}(Group_default);
+var EffectSymbol_default = EffectSymbol;
+
+// node_modules/echarts/lib/chart/effectScatter/EffectScatterView.js
+var EffectScatterView = function(_super) {
+ __extends(EffectScatterView2, _super);
+ function EffectScatterView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = EffectScatterView2.type;
+ return _this;
+ }
+ EffectScatterView2.prototype.init = function() {
+ this._symbolDraw = new SymbolDraw_default(EffectSymbol_default);
+ };
+ EffectScatterView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var effectSymbolDraw = this._symbolDraw;
+ effectSymbolDraw.updateData(data, {
+ clipShape: this._getClipShape(seriesModel)
+ });
+ this.group.add(effectSymbolDraw.group);
+ };
+ EffectScatterView2.prototype._getClipShape = function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ var clipArea = coordSys && coordSys.getArea && coordSys.getArea();
+ return seriesModel.get("clip", true) ? clipArea : null;
+ };
+ EffectScatterView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ this.group.dirty();
+ var res = pointsLayout("").reset(seriesModel, ecModel, api);
+ if (res.progress) {
+ res.progress({
+ start: 0,
+ end: data.count(),
+ count: data.count()
+ }, data);
+ }
+ this._symbolDraw.updateLayout();
+ };
+ EffectScatterView2.prototype._updateGroupTransform = function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && coordSys.getRoamTransform) {
+ this.group.transform = clone3(coordSys.getRoamTransform());
+ this.group.decomposeTransform();
+ }
+ };
+ EffectScatterView2.prototype.remove = function(ecModel, api) {
+ this._symbolDraw && this._symbolDraw.remove(true);
+ };
+ EffectScatterView2.type = "effectScatter";
+ return EffectScatterView2;
+}(Chart_default);
+var EffectScatterView_default = EffectScatterView;
+
+// node_modules/echarts/lib/chart/effectScatter/EffectScatterSeries.js
+var EffectScatterSeriesModel = function(_super) {
+ __extends(EffectScatterSeriesModel2, _super);
+ function EffectScatterSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = EffectScatterSeriesModel2.type;
+ _this.hasSymbolVisual = true;
+ return _this;
+ }
+ EffectScatterSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesData_default(null, this, {
+ useEncodeDefaulter: true
+ });
+ };
+ EffectScatterSeriesModel2.prototype.brushSelector = function(dataIndex, data, selectors) {
+ return selectors.point(data.getItemLayout(dataIndex));
+ };
+ EffectScatterSeriesModel2.type = "series.effectScatter";
+ EffectScatterSeriesModel2.dependencies = ["grid", "polar"];
+ EffectScatterSeriesModel2.defaultOption = {
+ coordinateSystem: "cartesian2d",
+ z: 2,
+ legendHoverLink: true,
+ effectType: "ripple",
+ progressive: 0,
+ showEffectOn: "render",
+ clip: true,
+ rippleEffect: {
+ period: 4,
+ scale: 2.5,
+ brushType: "fill",
+ number: 3
+ },
+ universalTransition: {
+ divideShape: "clone"
+ },
+ symbolSize: 10
+ };
+ return EffectScatterSeriesModel2;
+}(Series_default);
+var EffectScatterSeries_default = EffectScatterSeriesModel;
+
+// node_modules/echarts/lib/chart/effectScatter/install.js
+function install22(registers) {
+ registers.registerChartView(EffectScatterView_default);
+ registers.registerSeriesModel(EffectScatterSeries_default);
+ registers.registerLayout(pointsLayout("effectScatter"));
+}
+
+// node_modules/echarts/lib/chart/helper/EffectLine.js
+var EffectLine = function(_super) {
+ __extends(EffectLine2, _super);
+ function EffectLine2(lineData, idx, seriesScope) {
+ var _this = _super.call(this) || this;
+ _this.add(_this.createLine(lineData, idx, seriesScope));
+ _this._updateEffectSymbol(lineData, idx);
+ return _this;
+ }
+ EffectLine2.prototype.createLine = function(lineData, idx, seriesScope) {
+ return new Line_default2(lineData, idx, seriesScope);
+ };
+ EffectLine2.prototype._updateEffectSymbol = function(lineData, idx) {
+ var itemModel = lineData.getItemModel(idx);
+ var effectModel = itemModel.getModel("effect");
+ var size = effectModel.get("symbolSize");
+ var symbolType = effectModel.get("symbol");
+ if (!isArray(size)) {
+ size = [size, size];
+ }
+ var lineStyle = lineData.getItemVisual(idx, "style");
+ var color = effectModel.get("color") || lineStyle && lineStyle.stroke;
+ var symbol = this.childAt(1);
+ if (this._symbolType !== symbolType) {
+ this.remove(symbol);
+ symbol = createSymbol(symbolType, -0.5, -0.5, 1, 1, color);
+ symbol.z2 = 100;
+ symbol.culling = true;
+ this.add(symbol);
+ }
+ if (!symbol) {
+ return;
+ }
+ symbol.setStyle("shadowColor", color);
+ symbol.setStyle(effectModel.getItemStyle(["color"]));
+ symbol.scaleX = size[0];
+ symbol.scaleY = size[1];
+ symbol.setColor(color);
+ this._symbolType = symbolType;
+ this._symbolScale = size;
+ this._updateEffectAnimation(lineData, effectModel, idx);
+ };
+ EffectLine2.prototype._updateEffectAnimation = function(lineData, effectModel, idx) {
+ var symbol = this.childAt(1);
+ if (!symbol) {
+ return;
+ }
+ var points4 = lineData.getItemLayout(idx);
+ var period = effectModel.get("period") * 1e3;
+ var loop = effectModel.get("loop");
+ var roundTrip = effectModel.get("roundTrip");
+ var constantSpeed = effectModel.get("constantSpeed");
+ var delayExpr = retrieve(effectModel.get("delay"), function(idx2) {
+ return idx2 / lineData.count() * period / 3;
+ });
+ symbol.ignore = true;
+ this._updateAnimationPoints(symbol, points4);
+ if (constantSpeed > 0) {
+ period = this._getLineLength(symbol) / constantSpeed * 1e3;
+ }
+ if (period !== this._period || loop !== this._loop || roundTrip !== this._roundTrip) {
+ symbol.stopAnimation();
+ var delayNum = void 0;
+ if (isFunction(delayExpr)) {
+ delayNum = delayExpr(idx);
+ } else {
+ delayNum = delayExpr;
+ }
+ if (symbol.__t > 0) {
+ delayNum = -period * symbol.__t;
+ }
+ this._animateSymbol(symbol, period, delayNum, loop, roundTrip);
+ }
+ this._period = period;
+ this._loop = loop;
+ this._roundTrip = roundTrip;
+ };
+ EffectLine2.prototype._animateSymbol = function(symbol, period, delayNum, loop, roundTrip) {
+ if (period > 0) {
+ symbol.__t = 0;
+ var self_1 = this;
+ var animator = symbol.animate("", loop).when(roundTrip ? period * 2 : period, {
+ __t: roundTrip ? 2 : 1
+ }).delay(delayNum).during(function() {
+ self_1._updateSymbolPosition(symbol);
+ });
+ if (!loop) {
+ animator.done(function() {
+ self_1.remove(symbol);
+ });
+ }
+ animator.start();
+ }
+ };
+ EffectLine2.prototype._getLineLength = function(symbol) {
+ return dist(symbol.__p1, symbol.__cp1) + dist(symbol.__cp1, symbol.__p2);
+ };
+ EffectLine2.prototype._updateAnimationPoints = function(symbol, points4) {
+ symbol.__p1 = points4[0];
+ symbol.__p2 = points4[1];
+ symbol.__cp1 = points4[2] || [(points4[0][0] + points4[1][0]) / 2, (points4[0][1] + points4[1][1]) / 2];
+ };
+ EffectLine2.prototype.updateData = function(lineData, idx, seriesScope) {
+ this.childAt(0).updateData(lineData, idx, seriesScope);
+ this._updateEffectSymbol(lineData, idx);
+ };
+ EffectLine2.prototype._updateSymbolPosition = function(symbol) {
+ var p1 = symbol.__p1;
+ var p2 = symbol.__p2;
+ var cp1 = symbol.__cp1;
+ var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;
+ var pos = [symbol.x, symbol.y];
+ var lastPos = pos.slice();
+ var quadraticAt3 = quadraticAt;
+ var quadraticDerivativeAt2 = quadraticDerivativeAt;
+ pos[0] = quadraticAt3(p1[0], cp1[0], p2[0], t);
+ pos[1] = quadraticAt3(p1[1], cp1[1], p2[1], t);
+ var tx = symbol.__t < 1 ? quadraticDerivativeAt2(p1[0], cp1[0], p2[0], t) : quadraticDerivativeAt2(p2[0], cp1[0], p1[0], 1 - t);
+ var ty = symbol.__t < 1 ? quadraticDerivativeAt2(p1[1], cp1[1], p2[1], t) : quadraticDerivativeAt2(p2[1], cp1[1], p1[1], 1 - t);
+ symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
+ if (this._symbolType === "line" || this._symbolType === "rect" || this._symbolType === "roundRect") {
+ if (symbol.__lastT !== void 0 && symbol.__lastT < symbol.__t) {
+ symbol.scaleY = dist(lastPos, pos) * 1.05;
+ if (t === 1) {
+ pos[0] = lastPos[0] + (pos[0] - lastPos[0]) / 2;
+ pos[1] = lastPos[1] + (pos[1] - lastPos[1]) / 2;
+ }
+ } else if (symbol.__lastT === 1) {
+ symbol.scaleY = 2 * dist(p1, pos);
+ } else {
+ symbol.scaleY = this._symbolScale[1];
+ }
+ }
+ symbol.__lastT = symbol.__t;
+ symbol.ignore = false;
+ symbol.x = pos[0];
+ symbol.y = pos[1];
+ };
+ EffectLine2.prototype.updateLayout = function(lineData, idx) {
+ this.childAt(0).updateLayout(lineData, idx);
+ var effectModel = lineData.getItemModel(idx).getModel("effect");
+ this._updateEffectAnimation(lineData, effectModel, idx);
+ };
+ return EffectLine2;
+}(Group_default);
+var EffectLine_default = EffectLine;
+
+// node_modules/echarts/lib/chart/helper/Polyline.js
+var Polyline2 = function(_super) {
+ __extends(Polyline3, _super);
+ function Polyline3(lineData, idx, seriesScope) {
+ var _this = _super.call(this) || this;
+ _this._createPolyline(lineData, idx, seriesScope);
+ return _this;
+ }
+ Polyline3.prototype._createPolyline = function(lineData, idx, seriesScope) {
+ var points4 = lineData.getItemLayout(idx);
+ var line = new Polyline_default({
+ shape: {
+ points: points4
+ }
+ });
+ this.add(line);
+ this._updateCommonStl(lineData, idx, seriesScope);
+ };
+ ;
+ Polyline3.prototype.updateData = function(lineData, idx, seriesScope) {
+ var seriesModel = lineData.hostModel;
+ var line = this.childAt(0);
+ var target = {
+ shape: {
+ points: lineData.getItemLayout(idx)
+ }
+ };
+ updateProps(line, target, seriesModel, idx);
+ this._updateCommonStl(lineData, idx, seriesScope);
+ };
+ ;
+ Polyline3.prototype._updateCommonStl = function(lineData, idx, seriesScope) {
+ var line = this.childAt(0);
+ var itemModel = lineData.getItemModel(idx);
+ var emphasisLineStyle = seriesScope && seriesScope.emphasisLineStyle;
+ var focus = seriesScope && seriesScope.focus;
+ var blurScope = seriesScope && seriesScope.blurScope;
+ var emphasisDisabled = seriesScope && seriesScope.emphasisDisabled;
+ if (!seriesScope || lineData.hasItemOption) {
+ var emphasisModel = itemModel.getModel("emphasis");
+ emphasisLineStyle = emphasisModel.getModel("lineStyle").getLineStyle();
+ emphasisDisabled = emphasisModel.get("disabled");
+ focus = emphasisModel.get("focus");
+ blurScope = emphasisModel.get("blurScope");
+ }
+ line.useStyle(lineData.getItemVisual(idx, "style"));
+ line.style.fill = null;
+ line.style.strokeNoScale = true;
+ var lineEmphasisState = line.ensureState("emphasis");
+ lineEmphasisState.style = emphasisLineStyle;
+ toggleHoverEmphasis(this, focus, blurScope, emphasisDisabled);
+ };
+ ;
+ Polyline3.prototype.updateLayout = function(lineData, idx) {
+ var polyline = this.childAt(0);
+ polyline.setShape("points", lineData.getItemLayout(idx));
+ };
+ ;
+ return Polyline3;
+}(Group_default);
+var Polyline_default2 = Polyline2;
+
+// node_modules/echarts/lib/chart/helper/EffectPolyline.js
+var EffectPolyline = function(_super) {
+ __extends(EffectPolyline2, _super);
+ function EffectPolyline2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this._lastFrame = 0;
+ _this._lastFramePercent = 0;
+ return _this;
+ }
+ EffectPolyline2.prototype.createLine = function(lineData, idx, seriesScope) {
+ return new Polyline_default2(lineData, idx, seriesScope);
+ };
+ ;
+ EffectPolyline2.prototype._updateAnimationPoints = function(symbol, points4) {
+ this._points = points4;
+ var accLenArr = [0];
+ var len2 = 0;
+ for (var i = 1; i < points4.length; i++) {
+ var p1 = points4[i - 1];
+ var p2 = points4[i];
+ len2 += dist(p1, p2);
+ accLenArr.push(len2);
+ }
+ if (len2 === 0) {
+ this._length = 0;
+ return;
+ }
+ for (var i = 0; i < accLenArr.length; i++) {
+ accLenArr[i] /= len2;
+ }
+ this._offsets = accLenArr;
+ this._length = len2;
+ };
+ ;
+ EffectPolyline2.prototype._getLineLength = function() {
+ return this._length;
+ };
+ ;
+ EffectPolyline2.prototype._updateSymbolPosition = function(symbol) {
+ var t = symbol.__t < 1 ? symbol.__t : 2 - symbol.__t;
+ var points4 = this._points;
+ var offsets = this._offsets;
+ var len2 = points4.length;
+ if (!offsets) {
+ return;
+ }
+ var lastFrame = this._lastFrame;
+ var frame;
+ if (t < this._lastFramePercent) {
+ var start2 = Math.min(lastFrame + 1, len2 - 1);
+ for (frame = start2; frame >= 0; frame--) {
+ if (offsets[frame] <= t) {
+ break;
+ }
+ }
+ frame = Math.min(frame, len2 - 2);
+ } else {
+ for (frame = lastFrame; frame < len2; frame++) {
+ if (offsets[frame] > t) {
+ break;
+ }
+ }
+ frame = Math.min(frame - 1, len2 - 2);
+ }
+ var p = (t - offsets[frame]) / (offsets[frame + 1] - offsets[frame]);
+ var p0 = points4[frame];
+ var p1 = points4[frame + 1];
+ symbol.x = p0[0] * (1 - p) + p * p1[0];
+ symbol.y = p0[1] * (1 - p) + p * p1[1];
+ var tx = symbol.__t < 1 ? p1[0] - p0[0] : p0[0] - p1[0];
+ var ty = symbol.__t < 1 ? p1[1] - p0[1] : p0[1] - p1[1];
+ symbol.rotation = -Math.atan2(ty, tx) - Math.PI / 2;
+ this._lastFrame = frame;
+ this._lastFramePercent = t;
+ symbol.ignore = false;
+ };
+ ;
+ return EffectPolyline2;
+}(EffectLine_default);
+var EffectPolyline_default = EffectPolyline;
+
+// node_modules/echarts/lib/chart/helper/LargeLineDraw.js
+var LargeLinesPathShape = function() {
+ function LargeLinesPathShape2() {
+ this.polyline = false;
+ this.curveness = 0;
+ this.segs = [];
+ }
+ return LargeLinesPathShape2;
+}();
+var LargeLinesPath = function(_super) {
+ __extends(LargeLinesPath2, _super);
+ function LargeLinesPath2(opts) {
+ var _this = _super.call(this, opts) || this;
+ _this._off = 0;
+ _this.hoverDataIdx = -1;
+ return _this;
+ }
+ LargeLinesPath2.prototype.reset = function() {
+ this.notClear = false;
+ this._off = 0;
+ };
+ LargeLinesPath2.prototype.getDefaultStyle = function() {
+ return {
+ stroke: "#000",
+ fill: null
+ };
+ };
+ LargeLinesPath2.prototype.getDefaultShape = function() {
+ return new LargeLinesPathShape();
+ };
+ LargeLinesPath2.prototype.buildPath = function(ctx, shape) {
+ var segs = shape.segs;
+ var curveness = shape.curveness;
+ var i;
+ if (shape.polyline) {
+ for (i = this._off; i < segs.length; ) {
+ var count2 = segs[i++];
+ if (count2 > 0) {
+ ctx.moveTo(segs[i++], segs[i++]);
+ for (var k = 1; k < count2; k++) {
+ ctx.lineTo(segs[i++], segs[i++]);
+ }
+ }
+ }
+ } else {
+ for (i = this._off; i < segs.length; ) {
+ var x0 = segs[i++];
+ var y0 = segs[i++];
+ var x1 = segs[i++];
+ var y1 = segs[i++];
+ ctx.moveTo(x0, y0);
+ if (curveness > 0) {
+ var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;
+ var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;
+ ctx.quadraticCurveTo(x2, y2, x1, y1);
+ } else {
+ ctx.lineTo(x1, y1);
+ }
+ }
+ }
+ if (this.incremental) {
+ this._off = i;
+ this.notClear = true;
+ }
+ };
+ LargeLinesPath2.prototype.findDataIndex = function(x, y) {
+ var shape = this.shape;
+ var segs = shape.segs;
+ var curveness = shape.curveness;
+ var lineWidth = this.style.lineWidth;
+ if (shape.polyline) {
+ var dataIndex = 0;
+ for (var i = 0; i < segs.length; ) {
+ var count2 = segs[i++];
+ if (count2 > 0) {
+ var x0 = segs[i++];
+ var y0 = segs[i++];
+ for (var k = 1; k < count2; k++) {
+ var x1 = segs[i++];
+ var y1 = segs[i++];
+ if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {
+ return dataIndex;
+ }
+ }
+ }
+ dataIndex++;
+ }
+ } else {
+ var dataIndex = 0;
+ for (var i = 0; i < segs.length; ) {
+ var x0 = segs[i++];
+ var y0 = segs[i++];
+ var x1 = segs[i++];
+ var y1 = segs[i++];
+ if (curveness > 0) {
+ var x2 = (x0 + x1) / 2 - (y0 - y1) * curveness;
+ var y2 = (y0 + y1) / 2 - (x1 - x0) * curveness;
+ if (containStroke3(x0, y0, x2, y2, x1, y1, lineWidth, x, y)) {
+ return dataIndex;
+ }
+ } else {
+ if (containStroke(x0, y0, x1, y1, lineWidth, x, y)) {
+ return dataIndex;
+ }
+ }
+ dataIndex++;
+ }
+ }
+ return -1;
+ };
+ LargeLinesPath2.prototype.contain = function(x, y) {
+ var localPos = this.transformCoordToLocal(x, y);
+ var rect = this.getBoundingRect();
+ x = localPos[0];
+ y = localPos[1];
+ if (rect.contain(x, y)) {
+ var dataIdx = this.hoverDataIdx = this.findDataIndex(x, y);
+ return dataIdx >= 0;
+ }
+ this.hoverDataIdx = -1;
+ return false;
+ };
+ LargeLinesPath2.prototype.getBoundingRect = function() {
+ var rect = this._rect;
+ if (!rect) {
+ var shape = this.shape;
+ var points4 = shape.segs;
+ var minX = Infinity;
+ var minY = Infinity;
+ var maxX = -Infinity;
+ var maxY = -Infinity;
+ for (var i = 0; i < points4.length; ) {
+ var x = points4[i++];
+ var y = points4[i++];
+ minX = Math.min(x, minX);
+ maxX = Math.max(x, maxX);
+ minY = Math.min(y, minY);
+ maxY = Math.max(y, maxY);
+ }
+ rect = this._rect = new BoundingRect_default(minX, minY, maxX, maxY);
+ }
+ return rect;
+ };
+ return LargeLinesPath2;
+}(Path_default);
+var LargeLineDraw = function() {
+ function LargeLineDraw2() {
+ this.group = new Group_default();
+ }
+ LargeLineDraw2.prototype.updateData = function(data) {
+ this._clear();
+ var lineEl = this._create();
+ lineEl.setShape({
+ segs: data.getLayout("linesPoints")
+ });
+ this._setCommon(lineEl, data);
+ };
+ ;
+ LargeLineDraw2.prototype.incrementalPrepareUpdate = function(data) {
+ this.group.removeAll();
+ this._clear();
+ };
+ ;
+ LargeLineDraw2.prototype.incrementalUpdate = function(taskParams, data) {
+ var lastAdded = this._newAdded[0];
+ var linePoints = data.getLayout("linesPoints");
+ var oldSegs = lastAdded && lastAdded.shape.segs;
+ if (oldSegs && oldSegs.length < 2e4) {
+ var oldLen = oldSegs.length;
+ var newSegs = new Float32Array(oldLen + linePoints.length);
+ newSegs.set(oldSegs);
+ newSegs.set(linePoints, oldLen);
+ lastAdded.setShape({
+ segs: newSegs
+ });
+ } else {
+ this._newAdded = [];
+ var lineEl = this._create();
+ lineEl.incremental = true;
+ lineEl.setShape({
+ segs: linePoints
+ });
+ this._setCommon(lineEl, data);
+ lineEl.__startIndex = taskParams.start;
+ }
+ };
+ LargeLineDraw2.prototype.remove = function() {
+ this._clear();
+ };
+ LargeLineDraw2.prototype.eachRendered = function(cb) {
+ this._newAdded[0] && cb(this._newAdded[0]);
+ };
+ LargeLineDraw2.prototype._create = function() {
+ var lineEl = new LargeLinesPath({
+ cursor: "default",
+ ignoreCoarsePointer: true
+ });
+ this._newAdded.push(lineEl);
+ this.group.add(lineEl);
+ return lineEl;
+ };
+ LargeLineDraw2.prototype._setCommon = function(lineEl, data, isIncremental) {
+ var hostModel = data.hostModel;
+ lineEl.setShape({
+ polyline: hostModel.get("polyline"),
+ curveness: hostModel.get(["lineStyle", "curveness"])
+ });
+ lineEl.useStyle(hostModel.getModel("lineStyle").getLineStyle());
+ lineEl.style.strokeNoScale = true;
+ var style = data.getVisual("style");
+ if (style && style.stroke) {
+ lineEl.setStyle("stroke", style.stroke);
+ }
+ lineEl.setStyle("fill", null);
+ var ecData = getECData(lineEl);
+ ecData.seriesIndex = hostModel.seriesIndex;
+ lineEl.on("mousemove", function(e2) {
+ ecData.dataIndex = null;
+ var dataIndex = lineEl.hoverDataIdx;
+ if (dataIndex > 0) {
+ ecData.dataIndex = dataIndex + lineEl.__startIndex;
+ }
+ });
+ };
+ ;
+ LargeLineDraw2.prototype._clear = function() {
+ this._newAdded = [];
+ this.group.removeAll();
+ };
+ ;
+ return LargeLineDraw2;
+}();
+var LargeLineDraw_default = LargeLineDraw;
+
+// node_modules/echarts/lib/chart/lines/linesLayout.js
+var linesLayout = {
+ seriesType: "lines",
+ plan: createRenderPlanner(),
+ reset: function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (!coordSys) {
+ if (true) {
+ error("The lines series must have a coordinate system.");
+ }
+ return;
+ }
+ var isPolyline = seriesModel.get("polyline");
+ var isLarge = seriesModel.pipelineContext.large;
+ return {
+ progress: function(params, lineData) {
+ var lineCoords = [];
+ if (isLarge) {
+ var points4 = void 0;
+ var segCount = params.end - params.start;
+ if (isPolyline) {
+ var totalCoordsCount = 0;
+ for (var i = params.start; i < params.end; i++) {
+ totalCoordsCount += seriesModel.getLineCoordsCount(i);
+ }
+ points4 = new Float32Array(segCount + totalCoordsCount * 2);
+ } else {
+ points4 = new Float32Array(segCount * 4);
+ }
+ var offset = 0;
+ var pt = [];
+ for (var i = params.start; i < params.end; i++) {
+ var len2 = seriesModel.getLineCoords(i, lineCoords);
+ if (isPolyline) {
+ points4[offset++] = len2;
+ }
+ for (var k = 0; k < len2; k++) {
+ pt = coordSys.dataToPoint(lineCoords[k], false, pt);
+ points4[offset++] = pt[0];
+ points4[offset++] = pt[1];
+ }
+ }
+ lineData.setLayout("linesPoints", points4);
+ } else {
+ for (var i = params.start; i < params.end; i++) {
+ var itemModel = lineData.getItemModel(i);
+ var len2 = seriesModel.getLineCoords(i, lineCoords);
+ var pts = [];
+ if (isPolyline) {
+ for (var j = 0; j < len2; j++) {
+ pts.push(coordSys.dataToPoint(lineCoords[j]));
+ }
+ } else {
+ pts[0] = coordSys.dataToPoint(lineCoords[0]);
+ pts[1] = coordSys.dataToPoint(lineCoords[1]);
+ var curveness = itemModel.get(["lineStyle", "curveness"]);
+ if (+curveness) {
+ pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];
+ }
+ }
+ lineData.setItemLayout(i, pts);
+ }
+ }
+ }
+ };
+ }
+};
+var linesLayout_default = linesLayout;
+
+// node_modules/echarts/lib/chart/lines/LinesView.js
+var LinesView = function(_super) {
+ __extends(LinesView2, _super);
+ function LinesView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = LinesView2.type;
+ return _this;
+ }
+ LinesView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var lineDraw = this._updateLineDraw(data, seriesModel);
+ var zlevel = seriesModel.get("zlevel");
+ var trailLength = seriesModel.get(["effect", "trailLength"]);
+ var zr = api.getZr();
+ var isSvg = zr.painter.getType() === "svg";
+ if (!isSvg) {
+ zr.painter.getLayer(zlevel).clear(true);
+ }
+ if (this._lastZlevel != null && !isSvg) {
+ zr.configLayer(this._lastZlevel, {
+ motionBlur: false
+ });
+ }
+ if (this._showEffect(seriesModel) && trailLength > 0) {
+ if (!isSvg) {
+ zr.configLayer(zlevel, {
+ motionBlur: true,
+ lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)
+ });
+ } else if (true) {
+ console.warn("SVG render mode doesn't support lines with trail effect");
+ }
+ }
+ lineDraw.updateData(data);
+ var clipPath = seriesModel.get("clip", true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);
+ if (clipPath) {
+ this.group.setClipPath(clipPath);
+ } else {
+ this.group.removeClipPath();
+ }
+ this._lastZlevel = zlevel;
+ this._finished = true;
+ };
+ LinesView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var lineDraw = this._updateLineDraw(data, seriesModel);
+ lineDraw.incrementalPrepareUpdate(data);
+ this._clearLayer(api);
+ this._finished = false;
+ };
+ LinesView2.prototype.incrementalRender = function(taskParams, seriesModel, ecModel) {
+ this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());
+ this._finished = taskParams.end === seriesModel.getData().count();
+ };
+ LinesView2.prototype.eachRendered = function(cb) {
+ this._lineDraw && this._lineDraw.eachRendered(cb);
+ };
+ LinesView2.prototype.updateTransform = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var pipelineContext = seriesModel.pipelineContext;
+ if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {
+ return {
+ update: true
+ };
+ } else {
+ var res = linesLayout_default.reset(seriesModel, ecModel, api);
+ if (res.progress) {
+ res.progress({
+ start: 0,
+ end: data.count(),
+ count: data.count()
+ }, data);
+ }
+ this._lineDraw.updateLayout();
+ this._clearLayer(api);
+ }
+ };
+ LinesView2.prototype._updateLineDraw = function(data, seriesModel) {
+ var lineDraw = this._lineDraw;
+ var hasEffect = this._showEffect(seriesModel);
+ var isPolyline = !!seriesModel.get("polyline");
+ var pipelineContext = seriesModel.pipelineContext;
+ var isLargeDraw = pipelineContext.large;
+ if (true) {
+ if (hasEffect && isLargeDraw) {
+ console.warn("Large lines not support effect");
+ }
+ }
+ if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {
+ if (lineDraw) {
+ lineDraw.remove();
+ }
+ lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw_default() : new LineDraw_default(isPolyline ? hasEffect ? EffectPolyline_default : Polyline_default2 : hasEffect ? EffectLine_default : Line_default2);
+ this._hasEffet = hasEffect;
+ this._isPolyline = isPolyline;
+ this._isLargeDraw = isLargeDraw;
+ }
+ this.group.add(lineDraw.group);
+ return lineDraw;
+ };
+ LinesView2.prototype._showEffect = function(seriesModel) {
+ return !!seriesModel.get(["effect", "show"]);
+ };
+ LinesView2.prototype._clearLayer = function(api) {
+ var zr = api.getZr();
+ var isSvg = zr.painter.getType() === "svg";
+ if (!isSvg && this._lastZlevel != null) {
+ zr.painter.getLayer(this._lastZlevel).clear(true);
+ }
+ };
+ LinesView2.prototype.remove = function(ecModel, api) {
+ this._lineDraw && this._lineDraw.remove();
+ this._lineDraw = null;
+ this._clearLayer(api);
+ };
+ LinesView2.prototype.dispose = function(ecModel, api) {
+ this.remove(ecModel, api);
+ };
+ LinesView2.type = "lines";
+ return LinesView2;
+}(Chart_default);
+var LinesView_default = LinesView;
+
+// node_modules/echarts/lib/chart/lines/LinesSeries.js
+var Uint32Arr = typeof Uint32Array === "undefined" ? Array : Uint32Array;
+var Float64Arr = typeof Float64Array === "undefined" ? Array : Float64Array;
+function compatEc2(seriesOpt) {
+ var data = seriesOpt.data;
+ if (data && data[0] && data[0][0] && data[0][0].coord) {
+ if (true) {
+ console.warn("Lines data configuration has been changed to { coords:[[1,2],[2,3]] }");
+ }
+ seriesOpt.data = map(data, function(itemOpt) {
+ var coords = [itemOpt[0].coord, itemOpt[1].coord];
+ var target = {
+ coords
+ };
+ if (itemOpt[0].name) {
+ target.fromName = itemOpt[0].name;
+ }
+ if (itemOpt[1].name) {
+ target.toName = itemOpt[1].name;
+ }
+ return mergeAll([target, itemOpt[0], itemOpt[1]]);
+ });
+ }
+}
+var LinesSeriesModel = function(_super) {
+ __extends(LinesSeriesModel2, _super);
+ function LinesSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = LinesSeriesModel2.type;
+ _this.visualStyleAccessPath = "lineStyle";
+ _this.visualDrawType = "stroke";
+ return _this;
+ }
+ LinesSeriesModel2.prototype.init = function(option) {
+ option.data = option.data || [];
+ compatEc2(option);
+ var result = this._processFlatCoordsArray(option.data);
+ this._flatCoords = result.flatCoords;
+ this._flatCoordsOffset = result.flatCoordsOffset;
+ if (result.flatCoords) {
+ option.data = new Float32Array(result.count);
+ }
+ _super.prototype.init.apply(this, arguments);
+ };
+ LinesSeriesModel2.prototype.mergeOption = function(option) {
+ compatEc2(option);
+ if (option.data) {
+ var result = this._processFlatCoordsArray(option.data);
+ this._flatCoords = result.flatCoords;
+ this._flatCoordsOffset = result.flatCoordsOffset;
+ if (result.flatCoords) {
+ option.data = new Float32Array(result.count);
+ }
+ }
+ _super.prototype.mergeOption.apply(this, arguments);
+ };
+ LinesSeriesModel2.prototype.appendData = function(params) {
+ var result = this._processFlatCoordsArray(params.data);
+ if (result.flatCoords) {
+ if (!this._flatCoords) {
+ this._flatCoords = result.flatCoords;
+ this._flatCoordsOffset = result.flatCoordsOffset;
+ } else {
+ this._flatCoords = concatArray(this._flatCoords, result.flatCoords);
+ this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);
+ }
+ params.data = new Float32Array(result.count);
+ }
+ this.getRawData().appendData(params.data);
+ };
+ LinesSeriesModel2.prototype._getCoordsFromItemModel = function(idx) {
+ var itemModel = this.getData().getItemModel(idx);
+ var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow("coords");
+ if (true) {
+ if (!(coords instanceof Array && coords.length > 0 && coords[0] instanceof Array)) {
+ throw new Error("Invalid coords " + JSON.stringify(coords) + ". Lines must have 2d coords array in data item.");
+ }
+ }
+ return coords;
+ };
+ LinesSeriesModel2.prototype.getLineCoordsCount = function(idx) {
+ if (this._flatCoordsOffset) {
+ return this._flatCoordsOffset[idx * 2 + 1];
+ } else {
+ return this._getCoordsFromItemModel(idx).length;
+ }
+ };
+ LinesSeriesModel2.prototype.getLineCoords = function(idx, out2) {
+ if (this._flatCoordsOffset) {
+ var offset = this._flatCoordsOffset[idx * 2];
+ var len2 = this._flatCoordsOffset[idx * 2 + 1];
+ for (var i = 0; i < len2; i++) {
+ out2[i] = out2[i] || [];
+ out2[i][0] = this._flatCoords[offset + i * 2];
+ out2[i][1] = this._flatCoords[offset + i * 2 + 1];
+ }
+ return len2;
+ } else {
+ var coords = this._getCoordsFromItemModel(idx);
+ for (var i = 0; i < coords.length; i++) {
+ out2[i] = out2[i] || [];
+ out2[i][0] = coords[i][0];
+ out2[i][1] = coords[i][1];
+ }
+ return coords.length;
+ }
+ };
+ LinesSeriesModel2.prototype._processFlatCoordsArray = function(data) {
+ var startOffset = 0;
+ if (this._flatCoords) {
+ startOffset = this._flatCoords.length;
+ }
+ if (isNumber(data[0])) {
+ var len2 = data.length;
+ var coordsOffsetAndLenStorage = new Uint32Arr(len2);
+ var coordsStorage = new Float64Arr(len2);
+ var coordsCursor = 0;
+ var offsetCursor = 0;
+ var dataCount = 0;
+ for (var i = 0; i < len2; ) {
+ dataCount++;
+ var count2 = data[i++];
+ coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset;
+ coordsOffsetAndLenStorage[offsetCursor++] = count2;
+ for (var k = 0; k < count2; k++) {
+ var x = data[i++];
+ var y = data[i++];
+ coordsStorage[coordsCursor++] = x;
+ coordsStorage[coordsCursor++] = y;
+ if (i > len2) {
+ if (true) {
+ throw new Error("Invalid data format.");
+ }
+ }
+ }
+ }
+ return {
+ flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),
+ flatCoords: coordsStorage,
+ count: dataCount
+ };
+ }
+ return {
+ flatCoordsOffset: null,
+ flatCoords: null,
+ count: data.length
+ };
+ };
+ LinesSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ if (true) {
+ var CoordSys = CoordinateSystem_default.get(option.coordinateSystem);
+ if (!CoordSys) {
+ throw new Error("Unknown coordinate system " + option.coordinateSystem);
+ }
+ }
+ var lineData = new SeriesData_default(["value"], this);
+ lineData.hasItemOption = false;
+ lineData.initData(option.data, [], function(dataItem, dimName, dataIndex, dimIndex) {
+ if (dataItem instanceof Array) {
+ return NaN;
+ } else {
+ lineData.hasItemOption = true;
+ var value = dataItem.value;
+ if (value != null) {
+ return value instanceof Array ? value[dimIndex] : value;
+ }
+ }
+ });
+ return lineData;
+ };
+ LinesSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var data = this.getData();
+ var itemModel = data.getItemModel(dataIndex);
+ var name = itemModel.get("name");
+ if (name) {
+ return name;
+ }
+ var fromName = itemModel.get("fromName");
+ var toName = itemModel.get("toName");
+ var nameArr = [];
+ fromName != null && nameArr.push(fromName);
+ toName != null && nameArr.push(toName);
+ return createTooltipMarkup("nameValue", {
+ name: nameArr.join(" > ")
+ });
+ };
+ LinesSeriesModel2.prototype.preventIncremental = function() {
+ return !!this.get(["effect", "show"]);
+ };
+ LinesSeriesModel2.prototype.getProgressive = function() {
+ var progressive = this.option.progressive;
+ if (progressive == null) {
+ return this.option.large ? 1e4 : this.get("progressive");
+ }
+ return progressive;
+ };
+ LinesSeriesModel2.prototype.getProgressiveThreshold = function() {
+ var progressiveThreshold = this.option.progressiveThreshold;
+ if (progressiveThreshold == null) {
+ return this.option.large ? 2e4 : this.get("progressiveThreshold");
+ }
+ return progressiveThreshold;
+ };
+ LinesSeriesModel2.prototype.getZLevelKey = function() {
+ var effectModel = this.getModel("effect");
+ var trailLength = effectModel.get("trailLength");
+ return this.getData().count() > this.getProgressiveThreshold() ? this.id : effectModel.get("show") && trailLength > 0 ? trailLength + "" : "";
+ };
+ LinesSeriesModel2.type = "series.lines";
+ LinesSeriesModel2.dependencies = ["grid", "polar", "geo", "calendar"];
+ LinesSeriesModel2.defaultOption = {
+ coordinateSystem: "geo",
+ z: 2,
+ legendHoverLink: true,
+ xAxisIndex: 0,
+ yAxisIndex: 0,
+ symbol: ["none", "none"],
+ symbolSize: [10, 10],
+ geoIndex: 0,
+ effect: {
+ show: false,
+ period: 4,
+ constantSpeed: 0,
+ symbol: "circle",
+ symbolSize: 3,
+ loop: true,
+ trailLength: 0.2
+ },
+ large: false,
+ largeThreshold: 2e3,
+ polyline: false,
+ clip: true,
+ label: {
+ show: false,
+ position: "end"
+ },
+ lineStyle: {
+ opacity: 0.5
+ }
+ };
+ return LinesSeriesModel2;
+}(Series_default);
+var LinesSeries_default = LinesSeriesModel;
+
+// node_modules/echarts/lib/chart/lines/linesVisual.js
+function normalize4(a) {
+ if (!(a instanceof Array)) {
+ a = [a, a];
+ }
+ return a;
+}
+var linesVisual = {
+ seriesType: "lines",
+ reset: function(seriesModel) {
+ var symbolType = normalize4(seriesModel.get("symbol"));
+ var symbolSize = normalize4(seriesModel.get("symbolSize"));
+ var data = seriesModel.getData();
+ data.setVisual("fromSymbol", symbolType && symbolType[0]);
+ data.setVisual("toSymbol", symbolType && symbolType[1]);
+ data.setVisual("fromSymbolSize", symbolSize && symbolSize[0]);
+ data.setVisual("toSymbolSize", symbolSize && symbolSize[1]);
+ function dataEach(data2, idx) {
+ var itemModel = data2.getItemModel(idx);
+ var symbolType2 = normalize4(itemModel.getShallow("symbol", true));
+ var symbolSize2 = normalize4(itemModel.getShallow("symbolSize", true));
+ symbolType2[0] && data2.setItemVisual(idx, "fromSymbol", symbolType2[0]);
+ symbolType2[1] && data2.setItemVisual(idx, "toSymbol", symbolType2[1]);
+ symbolSize2[0] && data2.setItemVisual(idx, "fromSymbolSize", symbolSize2[0]);
+ symbolSize2[1] && data2.setItemVisual(idx, "toSymbolSize", symbolSize2[1]);
+ }
+ return {
+ dataEach: data.hasItemOption ? dataEach : null
+ };
+ }
+};
+var linesVisual_default = linesVisual;
+
+// node_modules/echarts/lib/chart/lines/install.js
+function install23(registers) {
+ registers.registerChartView(LinesView_default);
+ registers.registerSeriesModel(LinesSeries_default);
+ registers.registerLayout(linesLayout_default);
+ registers.registerVisual(linesVisual_default);
+}
+
+// node_modules/echarts/lib/chart/heatmap/HeatmapLayer.js
+var GRADIENT_LEVELS = 256;
+var HeatmapLayer = function() {
+ function HeatmapLayer2() {
+ this.blurSize = 30;
+ this.pointSize = 20;
+ this.maxOpacity = 1;
+ this.minOpacity = 0;
+ this._gradientPixels = {
+ inRange: null,
+ outOfRange: null
+ };
+ var canvas = platformApi.createCanvas();
+ this.canvas = canvas;
+ }
+ HeatmapLayer2.prototype.update = function(data, width, height, normalize5, colorFunc, isInRange) {
+ var brush3 = this._getBrush();
+ var gradientInRange = this._getGradient(colorFunc, "inRange");
+ var gradientOutOfRange = this._getGradient(colorFunc, "outOfRange");
+ var r = this.pointSize + this.blurSize;
+ var canvas = this.canvas;
+ var ctx = canvas.getContext("2d");
+ var len2 = data.length;
+ canvas.width = width;
+ canvas.height = height;
+ for (var i = 0; i < len2; ++i) {
+ var p = data[i];
+ var x = p[0];
+ var y = p[1];
+ var value = p[2];
+ var alpha = normalize5(value);
+ ctx.globalAlpha = alpha;
+ ctx.drawImage(brush3, x - r, y - r);
+ }
+ if (!canvas.width || !canvas.height) {
+ return canvas;
+ }
+ var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
+ var pixels = imageData.data;
+ var offset = 0;
+ var pixelLen = pixels.length;
+ var minOpacity = this.minOpacity;
+ var maxOpacity = this.maxOpacity;
+ var diffOpacity = maxOpacity - minOpacity;
+ while (offset < pixelLen) {
+ var alpha = pixels[offset + 3] / 256;
+ var gradientOffset = Math.floor(alpha * (GRADIENT_LEVELS - 1)) * 4;
+ if (alpha > 0) {
+ var gradient = isInRange(alpha) ? gradientInRange : gradientOutOfRange;
+ alpha > 0 && (alpha = alpha * diffOpacity + minOpacity);
+ pixels[offset++] = gradient[gradientOffset];
+ pixels[offset++] = gradient[gradientOffset + 1];
+ pixels[offset++] = gradient[gradientOffset + 2];
+ pixels[offset++] = gradient[gradientOffset + 3] * alpha * 256;
+ } else {
+ offset += 4;
+ }
+ }
+ ctx.putImageData(imageData, 0, 0);
+ return canvas;
+ };
+ HeatmapLayer2.prototype._getBrush = function() {
+ var brushCanvas = this._brushCanvas || (this._brushCanvas = platformApi.createCanvas());
+ var r = this.pointSize + this.blurSize;
+ var d = r * 2;
+ brushCanvas.width = d;
+ brushCanvas.height = d;
+ var ctx = brushCanvas.getContext("2d");
+ ctx.clearRect(0, 0, d, d);
+ ctx.shadowOffsetX = d;
+ ctx.shadowBlur = this.blurSize;
+ ctx.shadowColor = "#000";
+ ctx.beginPath();
+ ctx.arc(-r, r, this.pointSize, 0, Math.PI * 2, true);
+ ctx.closePath();
+ ctx.fill();
+ return brushCanvas;
+ };
+ HeatmapLayer2.prototype._getGradient = function(colorFunc, state) {
+ var gradientPixels = this._gradientPixels;
+ var pixelsSingleState = gradientPixels[state] || (gradientPixels[state] = new Uint8ClampedArray(256 * 4));
+ var color = [0, 0, 0, 0];
+ var off = 0;
+ for (var i = 0; i < 256; i++) {
+ colorFunc[state](i / 255, true, color);
+ pixelsSingleState[off++] = color[0];
+ pixelsSingleState[off++] = color[1];
+ pixelsSingleState[off++] = color[2];
+ pixelsSingleState[off++] = color[3];
+ }
+ return pixelsSingleState;
+ };
+ return HeatmapLayer2;
+}();
+var HeatmapLayer_default = HeatmapLayer;
+
+// node_modules/echarts/lib/chart/heatmap/HeatmapView.js
+function getIsInPiecewiseRange(dataExtent, pieceList, selected) {
+ var dataSpan = dataExtent[1] - dataExtent[0];
+ pieceList = map(pieceList, function(piece) {
+ return {
+ interval: [(piece.interval[0] - dataExtent[0]) / dataSpan, (piece.interval[1] - dataExtent[0]) / dataSpan]
+ };
+ });
+ var len2 = pieceList.length;
+ var lastIndex = 0;
+ return function(val) {
+ var i;
+ for (i = lastIndex; i < len2; i++) {
+ var interval = pieceList[i].interval;
+ if (interval[0] <= val && val <= interval[1]) {
+ lastIndex = i;
+ break;
+ }
+ }
+ if (i === len2) {
+ for (i = lastIndex - 1; i >= 0; i--) {
+ var interval = pieceList[i].interval;
+ if (interval[0] <= val && val <= interval[1]) {
+ lastIndex = i;
+ break;
+ }
+ }
+ }
+ return i >= 0 && i < len2 && selected[i];
+ };
+}
+function getIsInContinuousRange(dataExtent, range) {
+ var dataSpan = dataExtent[1] - dataExtent[0];
+ range = [(range[0] - dataExtent[0]) / dataSpan, (range[1] - dataExtent[0]) / dataSpan];
+ return function(val) {
+ return val >= range[0] && val <= range[1];
+ };
+}
+function isGeoCoordSys(coordSys) {
+ var dimensions = coordSys.dimensions;
+ return dimensions[0] === "lng" && dimensions[1] === "lat";
+}
+var HeatmapView = function(_super) {
+ __extends(HeatmapView2, _super);
+ function HeatmapView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = HeatmapView2.type;
+ return _this;
+ }
+ HeatmapView2.prototype.render = function(seriesModel, ecModel, api) {
+ var visualMapOfThisSeries;
+ ecModel.eachComponent("visualMap", function(visualMap) {
+ visualMap.eachTargetSeries(function(targetSeries) {
+ if (targetSeries === seriesModel) {
+ visualMapOfThisSeries = visualMap;
+ }
+ });
+ });
+ if (true) {
+ if (!visualMapOfThisSeries) {
+ throw new Error("Heatmap must use with visualMap");
+ }
+ }
+ this._progressiveEls = null;
+ this.group.removeAll();
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys.type === "cartesian2d" || coordSys.type === "calendar") {
+ this._renderOnCartesianAndCalendar(seriesModel, api, 0, seriesModel.getData().count());
+ } else if (isGeoCoordSys(coordSys)) {
+ this._renderOnGeo(coordSys, seriesModel, visualMapOfThisSeries, api);
+ }
+ };
+ HeatmapView2.prototype.incrementalPrepareRender = function(seriesModel, ecModel, api) {
+ this.group.removeAll();
+ };
+ HeatmapView2.prototype.incrementalRender = function(params, seriesModel, ecModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys) {
+ if (isGeoCoordSys(coordSys)) {
+ this.render(seriesModel, ecModel, api);
+ } else {
+ this._progressiveEls = [];
+ this._renderOnCartesianAndCalendar(seriesModel, api, params.start, params.end, true);
+ }
+ }
+ };
+ HeatmapView2.prototype.eachRendered = function(cb) {
+ traverseElements(this._progressiveEls || this.group, cb);
+ };
+ HeatmapView2.prototype._renderOnCartesianAndCalendar = function(seriesModel, api, start2, end2, incremental) {
+ var coordSys = seriesModel.coordinateSystem;
+ var isCartesian2d = isCoordinateSystemType(coordSys, "cartesian2d");
+ var width;
+ var height;
+ var xAxisExtent;
+ var yAxisExtent;
+ if (isCartesian2d) {
+ var xAxis = coordSys.getAxis("x");
+ var yAxis = coordSys.getAxis("y");
+ if (true) {
+ if (!(xAxis.type === "category" && yAxis.type === "category")) {
+ throw new Error("Heatmap on cartesian must have two category axes");
+ }
+ if (!(xAxis.onBand && yAxis.onBand)) {
+ throw new Error("Heatmap on cartesian must have two axes with boundaryGap true");
+ }
+ }
+ width = xAxis.getBandWidth() + 0.5;
+ height = yAxis.getBandWidth() + 0.5;
+ xAxisExtent = xAxis.scale.getExtent();
+ yAxisExtent = yAxis.scale.getExtent();
+ }
+ var group = this.group;
+ var data = seriesModel.getData();
+ var emphasisStyle = seriesModel.getModel(["emphasis", "itemStyle"]).getItemStyle();
+ var blurStyle = seriesModel.getModel(["blur", "itemStyle"]).getItemStyle();
+ var selectStyle = seriesModel.getModel(["select", "itemStyle"]).getItemStyle();
+ var borderRadius = seriesModel.get(["itemStyle", "borderRadius"]);
+ var labelStatesModels = getLabelStatesModels(seriesModel);
+ var emphasisModel = seriesModel.getModel("emphasis");
+ var focus = emphasisModel.get("focus");
+ var blurScope = emphasisModel.get("blurScope");
+ var emphasisDisabled = emphasisModel.get("disabled");
+ var dataDims = isCartesian2d ? [data.mapDimension("x"), data.mapDimension("y"), data.mapDimension("value")] : [data.mapDimension("time"), data.mapDimension("value")];
+ for (var idx = start2; idx < end2; idx++) {
+ var rect = void 0;
+ var style = data.getItemVisual(idx, "style");
+ if (isCartesian2d) {
+ var dataDimX = data.get(dataDims[0], idx);
+ var dataDimY = data.get(dataDims[1], idx);
+ if (isNaN(data.get(dataDims[2], idx)) || isNaN(dataDimX) || isNaN(dataDimY) || dataDimX < xAxisExtent[0] || dataDimX > xAxisExtent[1] || dataDimY < yAxisExtent[0] || dataDimY > yAxisExtent[1]) {
+ continue;
+ }
+ var point = coordSys.dataToPoint([dataDimX, dataDimY]);
+ rect = new Rect_default({
+ shape: {
+ x: point[0] - width / 2,
+ y: point[1] - height / 2,
+ width,
+ height
+ },
+ style
+ });
+ } else {
+ if (isNaN(data.get(dataDims[1], idx))) {
+ continue;
+ }
+ rect = new Rect_default({
+ z2: 1,
+ shape: coordSys.dataToRect([data.get(dataDims[0], idx)]).contentShape,
+ style
+ });
+ }
+ if (data.hasItemOption) {
+ var itemModel = data.getItemModel(idx);
+ var emphasisModel_1 = itemModel.getModel("emphasis");
+ emphasisStyle = emphasisModel_1.getModel("itemStyle").getItemStyle();
+ blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
+ selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
+ borderRadius = itemModel.get(["itemStyle", "borderRadius"]);
+ focus = emphasisModel_1.get("focus");
+ blurScope = emphasisModel_1.get("blurScope");
+ emphasisDisabled = emphasisModel_1.get("disabled");
+ labelStatesModels = getLabelStatesModels(itemModel);
+ }
+ rect.shape.r = borderRadius;
+ var rawValue = seriesModel.getRawValue(idx);
+ var defaultText = "-";
+ if (rawValue && rawValue[2] != null) {
+ defaultText = rawValue[2] + "";
+ }
+ setLabelStyle(rect, labelStatesModels, {
+ labelFetcher: seriesModel,
+ labelDataIndex: idx,
+ defaultOpacity: style.opacity,
+ defaultText
+ });
+ rect.ensureState("emphasis").style = emphasisStyle;
+ rect.ensureState("blur").style = blurStyle;
+ rect.ensureState("select").style = selectStyle;
+ toggleHoverEmphasis(rect, focus, blurScope, emphasisDisabled);
+ rect.incremental = incremental;
+ if (incremental) {
+ rect.states.emphasis.hoverLayer = true;
+ }
+ group.add(rect);
+ data.setItemGraphicEl(idx, rect);
+ if (this._progressiveEls) {
+ this._progressiveEls.push(rect);
+ }
+ }
+ };
+ HeatmapView2.prototype._renderOnGeo = function(geo, seriesModel, visualMapModel, api) {
+ var inRangeVisuals = visualMapModel.targetVisuals.inRange;
+ var outOfRangeVisuals = visualMapModel.targetVisuals.outOfRange;
+ var data = seriesModel.getData();
+ var hmLayer = this._hmLayer || this._hmLayer || new HeatmapLayer_default();
+ hmLayer.blurSize = seriesModel.get("blurSize");
+ hmLayer.pointSize = seriesModel.get("pointSize");
+ hmLayer.minOpacity = seriesModel.get("minOpacity");
+ hmLayer.maxOpacity = seriesModel.get("maxOpacity");
+ var rect = geo.getViewRect().clone();
+ var roamTransform = geo.getRoamTransform();
+ rect.applyTransform(roamTransform);
+ var x = Math.max(rect.x, 0);
+ var y = Math.max(rect.y, 0);
+ var x2 = Math.min(rect.width + rect.x, api.getWidth());
+ var y2 = Math.min(rect.height + rect.y, api.getHeight());
+ var width = x2 - x;
+ var height = y2 - y;
+ var dims = [data.mapDimension("lng"), data.mapDimension("lat"), data.mapDimension("value")];
+ var points4 = data.mapArray(dims, function(lng, lat, value) {
+ var pt = geo.dataToPoint([lng, lat]);
+ pt[0] -= x;
+ pt[1] -= y;
+ pt.push(value);
+ return pt;
+ });
+ var dataExtent = visualMapModel.getExtent();
+ var isInRange = visualMapModel.type === "visualMap.continuous" ? getIsInContinuousRange(dataExtent, visualMapModel.option.range) : getIsInPiecewiseRange(dataExtent, visualMapModel.getPieceList(), visualMapModel.option.selected);
+ hmLayer.update(points4, width, height, inRangeVisuals.color.getNormalizer(), {
+ inRange: inRangeVisuals.color.getColorMapper(),
+ outOfRange: outOfRangeVisuals.color.getColorMapper()
+ }, isInRange);
+ var img = new Image_default({
+ style: {
+ width,
+ height,
+ x,
+ y,
+ image: hmLayer.canvas
+ },
+ silent: true
+ });
+ this.group.add(img);
+ };
+ HeatmapView2.type = "heatmap";
+ return HeatmapView2;
+}(Chart_default);
+var HeatmapView_default = HeatmapView;
+
+// node_modules/echarts/lib/chart/heatmap/HeatmapSeries.js
+var HeatmapSeriesModel = function(_super) {
+ __extends(HeatmapSeriesModel2, _super);
+ function HeatmapSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = HeatmapSeriesModel2.type;
+ return _this;
+ }
+ HeatmapSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesData_default(null, this, {
+ generateCoord: "value"
+ });
+ };
+ HeatmapSeriesModel2.prototype.preventIncremental = function() {
+ var coordSysCreator = CoordinateSystem_default.get(this.get("coordinateSystem"));
+ if (coordSysCreator && coordSysCreator.dimensions) {
+ return coordSysCreator.dimensions[0] === "lng" && coordSysCreator.dimensions[1] === "lat";
+ }
+ };
+ HeatmapSeriesModel2.type = "series.heatmap";
+ HeatmapSeriesModel2.dependencies = ["grid", "geo", "calendar"];
+ HeatmapSeriesModel2.defaultOption = {
+ coordinateSystem: "cartesian2d",
+ z: 2,
+ geoIndex: 0,
+ blurSize: 30,
+ pointSize: 20,
+ maxOpacity: 1,
+ minOpacity: 0,
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ }
+ };
+ return HeatmapSeriesModel2;
+}(Series_default);
+var HeatmapSeries_default = HeatmapSeriesModel;
+
+// node_modules/echarts/lib/chart/heatmap/install.js
+function install24(registers) {
+ registers.registerChartView(HeatmapView_default);
+ registers.registerSeriesModel(HeatmapSeries_default);
+}
+
+// node_modules/echarts/lib/chart/bar/PictorialBarView.js
+var BAR_BORDER_WIDTH_QUERY = ["itemStyle", "borderWidth"];
+var LAYOUT_ATTRS = [{
+ xy: "x",
+ wh: "width",
+ index: 0,
+ posDesc: ["left", "right"]
+}, {
+ xy: "y",
+ wh: "height",
+ index: 1,
+ posDesc: ["top", "bottom"]
+}];
+var pathForLineWidth = new Circle_default();
+var PictorialBarView = function(_super) {
+ __extends(PictorialBarView2, _super);
+ function PictorialBarView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = PictorialBarView2.type;
+ return _this;
+ }
+ PictorialBarView2.prototype.render = function(seriesModel, ecModel, api) {
+ var group = this.group;
+ var data = seriesModel.getData();
+ var oldData = this._data;
+ var cartesian = seriesModel.coordinateSystem;
+ var baseAxis = cartesian.getBaseAxis();
+ var isHorizontal = baseAxis.isHorizontal();
+ var coordSysRect = cartesian.master.getRect();
+ var opt = {
+ ecSize: {
+ width: api.getWidth(),
+ height: api.getHeight()
+ },
+ seriesModel,
+ coordSys: cartesian,
+ coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],
+ isHorizontal,
+ valueDim: LAYOUT_ATTRS[+isHorizontal],
+ categoryDim: LAYOUT_ATTRS[1 - +isHorizontal]
+ };
+ data.diff(oldData).add(function(dataIndex) {
+ if (!data.hasValue(dataIndex)) {
+ return;
+ }
+ var itemModel = getItemModel(data, dataIndex);
+ var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);
+ var bar = createBar(data, opt, symbolMeta);
+ data.setItemGraphicEl(dataIndex, bar);
+ group.add(bar);
+ updateCommon2(bar, opt, symbolMeta);
+ }).update(function(newIndex, oldIndex) {
+ var bar = oldData.getItemGraphicEl(oldIndex);
+ if (!data.hasValue(newIndex)) {
+ group.remove(bar);
+ return;
+ }
+ var itemModel = getItemModel(data, newIndex);
+ var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);
+ var pictorialShapeStr = getShapeStr(data, symbolMeta);
+ if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {
+ group.remove(bar);
+ data.setItemGraphicEl(newIndex, null);
+ bar = null;
+ }
+ if (bar) {
+ updateBar(bar, opt, symbolMeta);
+ } else {
+ bar = createBar(data, opt, symbolMeta, true);
+ }
+ data.setItemGraphicEl(newIndex, bar);
+ bar.__pictorialSymbolMeta = symbolMeta;
+ group.add(bar);
+ updateCommon2(bar, opt, symbolMeta);
+ }).remove(function(dataIndex) {
+ var bar = oldData.getItemGraphicEl(dataIndex);
+ bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);
+ }).execute();
+ var clipPath = seriesModel.get("clip", true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;
+ if (clipPath) {
+ group.setClipPath(clipPath);
+ } else {
+ group.removeClipPath();
+ }
+ this._data = data;
+ return this.group;
+ };
+ PictorialBarView2.prototype.remove = function(ecModel, api) {
+ var group = this.group;
+ var data = this._data;
+ if (ecModel.get("animation")) {
+ if (data) {
+ data.eachItemGraphicEl(function(bar) {
+ removeBar(data, getECData(bar).dataIndex, ecModel, bar);
+ });
+ }
+ } else {
+ group.removeAll();
+ }
+ };
+ PictorialBarView2.type = "pictorialBar";
+ return PictorialBarView2;
+}(Chart_default);
+function getSymbolMeta(data, dataIndex, itemModel, opt) {
+ var layout5 = data.getItemLayout(dataIndex);
+ var symbolRepeat = itemModel.get("symbolRepeat");
+ var symbolClip = itemModel.get("symbolClip");
+ var symbolPosition = itemModel.get("symbolPosition") || "start";
+ var symbolRotate = itemModel.get("symbolRotate");
+ var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
+ var symbolPatternSize = itemModel.get("symbolPatternSize") || 2;
+ var isAnimationEnabled2 = itemModel.isAnimationEnabled();
+ var symbolMeta = {
+ dataIndex,
+ layout: layout5,
+ itemModel,
+ symbolType: data.getItemVisual(dataIndex, "symbol") || "circle",
+ style: data.getItemVisual(dataIndex, "style"),
+ symbolClip,
+ symbolRepeat,
+ symbolRepeatDirection: itemModel.get("symbolRepeatDirection"),
+ symbolPatternSize,
+ rotation,
+ animationModel: isAnimationEnabled2 ? itemModel : null,
+ hoverScale: isAnimationEnabled2 && itemModel.get(["emphasis", "scale"]),
+ z2: itemModel.getShallow("z", true) || 0
+ };
+ prepareBarLength(itemModel, symbolRepeat, layout5, opt, symbolMeta);
+ prepareSymbolSize(data, dataIndex, layout5, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);
+ prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);
+ var symbolSize = symbolMeta.symbolSize;
+ var symbolOffset = normalizeSymbolOffset(itemModel.get("symbolOffset"), symbolSize);
+ prepareLayoutInfo(itemModel, symbolSize, layout5, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);
+ return symbolMeta;
+}
+function prepareBarLength(itemModel, symbolRepeat, layout5, opt, outputSymbolMeta) {
+ var valueDim = opt.valueDim;
+ var symbolBoundingData = itemModel.get("symbolBoundingData");
+ var valueAxis2 = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());
+ var zeroPx = valueAxis2.toGlobalCoord(valueAxis2.dataToCoord(0));
+ var pxSignIdx = 1 - +(layout5[valueDim.wh] <= 0);
+ var boundingLength;
+ if (isArray(symbolBoundingData)) {
+ var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis2, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis2, symbolBoundingData[1]) - zeroPx];
+ symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();
+ boundingLength = symbolBoundingExtent[pxSignIdx];
+ } else if (symbolBoundingData != null) {
+ boundingLength = convertToCoordOnAxis(valueAxis2, symbolBoundingData) - zeroPx;
+ } else if (symbolRepeat) {
+ boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;
+ } else {
+ boundingLength = layout5[valueDim.wh];
+ }
+ outputSymbolMeta.boundingLength = boundingLength;
+ if (symbolRepeat) {
+ outputSymbolMeta.repeatCutLength = layout5[valueDim.wh];
+ }
+ var isXAxis = valueDim.xy === "x";
+ var isInverse = valueAxis2.inverse;
+ outputSymbolMeta.pxSign = isXAxis && !isInverse || !isXAxis && isInverse ? boundingLength >= 0 ? 1 : -1 : boundingLength > 0 ? 1 : -1;
+}
+function convertToCoordOnAxis(axis, value) {
+ return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));
+}
+function prepareSymbolSize(data, dataIndex, layout5, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, outputSymbolMeta) {
+ var valueDim = opt.valueDim;
+ var categoryDim = opt.categoryDim;
+ var categorySize = Math.abs(layout5[categoryDim.wh]);
+ var symbolSize = data.getItemVisual(dataIndex, "symbolSize");
+ var parsedSymbolSize;
+ if (isArray(symbolSize)) {
+ parsedSymbolSize = symbolSize.slice();
+ } else {
+ if (symbolSize == null) {
+ parsedSymbolSize = ["100%", "100%"];
+ } else {
+ parsedSymbolSize = [symbolSize, symbolSize];
+ }
+ }
+ parsedSymbolSize[categoryDim.index] = parsePercent2(parsedSymbolSize[categoryDim.index], categorySize);
+ parsedSymbolSize[valueDim.index] = parsePercent2(parsedSymbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));
+ outputSymbolMeta.symbolSize = parsedSymbolSize;
+ var symbolScale = outputSymbolMeta.symbolScale = [parsedSymbolSize[0] / symbolPatternSize, parsedSymbolSize[1] / symbolPatternSize];
+ symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;
+}
+function prepareLineWidth(itemModel, symbolScale, rotation, opt, outputSymbolMeta) {
+ var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;
+ if (valueLineWidth) {
+ pathForLineWidth.attr({
+ scaleX: symbolScale[0],
+ scaleY: symbolScale[1],
+ rotation
+ });
+ pathForLineWidth.updateTransform();
+ valueLineWidth /= pathForLineWidth.getLineScale();
+ valueLineWidth *= symbolScale[opt.valueDim.index];
+ }
+ outputSymbolMeta.valueLineWidth = valueLineWidth || 0;
+}
+function prepareLayoutInfo(itemModel, symbolSize, layout5, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, outputSymbolMeta) {
+ var categoryDim = opt.categoryDim;
+ var valueDim = opt.valueDim;
+ var pxSign = outputSymbolMeta.pxSign;
+ var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);
+ var pathLen = unitLength;
+ if (symbolRepeat) {
+ var absBoundingLength = Math.abs(boundingLength);
+ var symbolMargin = retrieve(itemModel.get("symbolMargin"), "15%") + "";
+ var hasEndGap = false;
+ if (symbolMargin.lastIndexOf("!") === symbolMargin.length - 1) {
+ hasEndGap = true;
+ symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);
+ }
+ var symbolMarginNumeric = parsePercent2(symbolMargin, symbolSize[valueDim.index]);
+ var uLenWithMargin = Math.max(unitLength + symbolMarginNumeric * 2, 0);
+ var endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;
+ var repeatSpecified = isNumeric(symbolRepeat);
+ var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin);
+ var mDiff = absBoundingLength - repeatTimes * unitLength;
+ symbolMarginNumeric = mDiff / 2 / (hasEndGap ? repeatTimes : Math.max(repeatTimes - 1, 1));
+ uLenWithMargin = unitLength + symbolMarginNumeric * 2;
+ endFix = hasEndGap ? 0 : symbolMarginNumeric * 2;
+ if (!repeatSpecified && symbolRepeat !== "fixed") {
+ repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;
+ }
+ pathLen = repeatTimes * uLenWithMargin - endFix;
+ outputSymbolMeta.repeatTimes = repeatTimes;
+ outputSymbolMeta.symbolMargin = symbolMarginNumeric;
+ }
+ var sizeFix = pxSign * (pathLen / 2);
+ var pathPosition = outputSymbolMeta.pathPosition = [];
+ pathPosition[categoryDim.index] = layout5[categoryDim.wh] / 2;
+ pathPosition[valueDim.index] = symbolPosition === "start" ? sizeFix : symbolPosition === "end" ? boundingLength - sizeFix : boundingLength / 2;
+ if (symbolOffset) {
+ pathPosition[0] += symbolOffset[0];
+ pathPosition[1] += symbolOffset[1];
+ }
+ var bundlePosition = outputSymbolMeta.bundlePosition = [];
+ bundlePosition[categoryDim.index] = layout5[categoryDim.xy];
+ bundlePosition[valueDim.index] = layout5[valueDim.xy];
+ var barRectShape = outputSymbolMeta.barRectShape = extend({}, layout5);
+ barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout5[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));
+ barRectShape[categoryDim.wh] = layout5[categoryDim.wh];
+ var clipShape = outputSymbolMeta.clipShape = {};
+ clipShape[categoryDim.xy] = -layout5[categoryDim.xy];
+ clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];
+ clipShape[valueDim.xy] = 0;
+ clipShape[valueDim.wh] = layout5[valueDim.wh];
+}
+function createPath(symbolMeta) {
+ var symbolPatternSize = symbolMeta.symbolPatternSize;
+ var path = createSymbol(
+ symbolMeta.symbolType,
+ -symbolPatternSize / 2,
+ -symbolPatternSize / 2,
+ symbolPatternSize,
+ symbolPatternSize
+ );
+ path.attr({
+ culling: true
+ });
+ path.type !== "image" && path.setStyle({
+ strokeNoScale: true
+ });
+ return path;
+}
+function createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {
+ var bundle = bar.__pictorialBundle;
+ var symbolSize = symbolMeta.symbolSize;
+ var valueLineWidth = symbolMeta.valueLineWidth;
+ var pathPosition = symbolMeta.pathPosition;
+ var valueDim = opt.valueDim;
+ var repeatTimes = symbolMeta.repeatTimes || 0;
+ var index = 0;
+ var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;
+ eachPath(bar, function(path2) {
+ path2.__pictorialAnimationIndex = index;
+ path2.__pictorialRepeatTimes = repeatTimes;
+ if (index < repeatTimes) {
+ updateAttr(path2, null, makeTarget(index), symbolMeta, isUpdate);
+ } else {
+ updateAttr(path2, null, {
+ scaleX: 0,
+ scaleY: 0
+ }, symbolMeta, isUpdate, function() {
+ bundle.remove(path2);
+ });
+ }
+ index++;
+ });
+ for (; index < repeatTimes; index++) {
+ var path = createPath(symbolMeta);
+ path.__pictorialAnimationIndex = index;
+ path.__pictorialRepeatTimes = repeatTimes;
+ bundle.add(path);
+ var target = makeTarget(index);
+ updateAttr(path, {
+ x: target.x,
+ y: target.y,
+ scaleX: 0,
+ scaleY: 0
+ }, {
+ scaleX: target.scaleX,
+ scaleY: target.scaleY,
+ rotation: target.rotation
+ }, symbolMeta, isUpdate);
+ }
+ function makeTarget(index2) {
+ var position2 = pathPosition.slice();
+ var pxSign = symbolMeta.pxSign;
+ var i = index2;
+ if (symbolMeta.symbolRepeatDirection === "start" ? pxSign > 0 : pxSign < 0) {
+ i = repeatTimes - 1 - index2;
+ }
+ position2[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];
+ return {
+ x: position2[0],
+ y: position2[1],
+ scaleX: symbolMeta.symbolScale[0],
+ scaleY: symbolMeta.symbolScale[1],
+ rotation: symbolMeta.rotation
+ };
+ }
+}
+function createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {
+ var bundle = bar.__pictorialBundle;
+ var mainPath = bar.__pictorialMainPath;
+ if (!mainPath) {
+ mainPath = bar.__pictorialMainPath = createPath(symbolMeta);
+ bundle.add(mainPath);
+ updateAttr(mainPath, {
+ x: symbolMeta.pathPosition[0],
+ y: symbolMeta.pathPosition[1],
+ scaleX: 0,
+ scaleY: 0,
+ rotation: symbolMeta.rotation
+ }, {
+ scaleX: symbolMeta.symbolScale[0],
+ scaleY: symbolMeta.symbolScale[1]
+ }, symbolMeta, isUpdate);
+ } else {
+ updateAttr(mainPath, null, {
+ x: symbolMeta.pathPosition[0],
+ y: symbolMeta.pathPosition[1],
+ scaleX: symbolMeta.symbolScale[0],
+ scaleY: symbolMeta.symbolScale[1],
+ rotation: symbolMeta.rotation
+ }, symbolMeta, isUpdate);
+ }
+}
+function createOrUpdateBarRect(bar, symbolMeta, isUpdate) {
+ var rectShape = extend({}, symbolMeta.barRectShape);
+ var barRect = bar.__pictorialBarRect;
+ if (!barRect) {
+ barRect = bar.__pictorialBarRect = new Rect_default({
+ z2: 2,
+ shape: rectShape,
+ silent: true,
+ style: {
+ stroke: "transparent",
+ fill: "transparent",
+ lineWidth: 0
+ }
+ });
+ barRect.disableMorphing = true;
+ bar.add(barRect);
+ } else {
+ updateAttr(barRect, null, {
+ shape: rectShape
+ }, symbolMeta, isUpdate);
+ }
+}
+function createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {
+ if (symbolMeta.symbolClip) {
+ var clipPath = bar.__pictorialClipPath;
+ var clipShape = extend({}, symbolMeta.clipShape);
+ var valueDim = opt.valueDim;
+ var animationModel = symbolMeta.animationModel;
+ var dataIndex = symbolMeta.dataIndex;
+ if (clipPath) {
+ updateProps(clipPath, {
+ shape: clipShape
+ }, animationModel, dataIndex);
+ } else {
+ clipShape[valueDim.wh] = 0;
+ clipPath = new Rect_default({
+ shape: clipShape
+ });
+ bar.__pictorialBundle.setClipPath(clipPath);
+ bar.__pictorialClipPath = clipPath;
+ var target = {};
+ target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];
+ graphic_exports[isUpdate ? "updateProps" : "initProps"](clipPath, {
+ shape: target
+ }, animationModel, dataIndex);
+ }
+ }
+}
+function getItemModel(data, dataIndex) {
+ var itemModel = data.getItemModel(dataIndex);
+ itemModel.getAnimationDelayParams = getAnimationDelayParams;
+ itemModel.isAnimationEnabled = isAnimationEnabled;
+ return itemModel;
+}
+function getAnimationDelayParams(path) {
+ return {
+ index: path.__pictorialAnimationIndex,
+ count: path.__pictorialRepeatTimes
+ };
+}
+function isAnimationEnabled() {
+ return this.parentModel.isAnimationEnabled() && !!this.getShallow("animation");
+}
+function createBar(data, opt, symbolMeta, isUpdate) {
+ var bar = new Group_default();
+ var bundle = new Group_default();
+ bar.add(bundle);
+ bar.__pictorialBundle = bundle;
+ bundle.x = symbolMeta.bundlePosition[0];
+ bundle.y = symbolMeta.bundlePosition[1];
+ if (symbolMeta.symbolRepeat) {
+ createOrUpdateRepeatSymbols(bar, opt, symbolMeta);
+ } else {
+ createOrUpdateSingleSymbol(bar, opt, symbolMeta);
+ }
+ createOrUpdateBarRect(bar, symbolMeta, isUpdate);
+ createOrUpdateClip(bar, opt, symbolMeta, isUpdate);
+ bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);
+ bar.__pictorialSymbolMeta = symbolMeta;
+ return bar;
+}
+function updateBar(bar, opt, symbolMeta) {
+ var animationModel = symbolMeta.animationModel;
+ var dataIndex = symbolMeta.dataIndex;
+ var bundle = bar.__pictorialBundle;
+ updateProps(bundle, {
+ x: symbolMeta.bundlePosition[0],
+ y: symbolMeta.bundlePosition[1]
+ }, animationModel, dataIndex);
+ if (symbolMeta.symbolRepeat) {
+ createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);
+ } else {
+ createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);
+ }
+ createOrUpdateBarRect(bar, symbolMeta, true);
+ createOrUpdateClip(bar, opt, symbolMeta, true);
+}
+function removeBar(data, dataIndex, animationModel, bar) {
+ var labelRect = bar.__pictorialBarRect;
+ labelRect && labelRect.removeTextContent();
+ var paths = [];
+ eachPath(bar, function(path) {
+ paths.push(path);
+ });
+ bar.__pictorialMainPath && paths.push(bar.__pictorialMainPath);
+ bar.__pictorialClipPath && (animationModel = null);
+ each(paths, function(path) {
+ removeElement(path, {
+ scaleX: 0,
+ scaleY: 0
+ }, animationModel, dataIndex, function() {
+ bar.parent && bar.parent.remove(bar);
+ });
+ });
+ data.setItemGraphicEl(dataIndex, null);
+}
+function getShapeStr(data, symbolMeta) {
+ return [data.getItemVisual(symbolMeta.dataIndex, "symbol") || "none", !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(":");
+}
+function eachPath(bar, cb, context) {
+ each(bar.__pictorialBundle.children(), function(el) {
+ el !== bar.__pictorialBarRect && cb.call(context, el);
+ });
+}
+function updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {
+ immediateAttrs && el.attr(immediateAttrs);
+ if (symbolMeta.symbolClip && !isUpdate) {
+ animationAttrs && el.attr(animationAttrs);
+ } else {
+ animationAttrs && graphic_exports[isUpdate ? "updateProps" : "initProps"](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);
+ }
+}
+function updateCommon2(bar, opt, symbolMeta) {
+ var dataIndex = symbolMeta.dataIndex;
+ var itemModel = symbolMeta.itemModel;
+ var emphasisModel = itemModel.getModel("emphasis");
+ var emphasisStyle = emphasisModel.getModel("itemStyle").getItemStyle();
+ var blurStyle = itemModel.getModel(["blur", "itemStyle"]).getItemStyle();
+ var selectStyle = itemModel.getModel(["select", "itemStyle"]).getItemStyle();
+ var cursorStyle = itemModel.getShallow("cursor");
+ var focus = emphasisModel.get("focus");
+ var blurScope = emphasisModel.get("blurScope");
+ var hoverScale = emphasisModel.get("scale");
+ eachPath(bar, function(path) {
+ if (path instanceof Image_default) {
+ var pathStyle = path.style;
+ path.useStyle(extend({
+ image: pathStyle.image,
+ x: pathStyle.x,
+ y: pathStyle.y,
+ width: pathStyle.width,
+ height: pathStyle.height
+ }, symbolMeta.style));
+ } else {
+ path.useStyle(symbolMeta.style);
+ }
+ var emphasisState = path.ensureState("emphasis");
+ emphasisState.style = emphasisStyle;
+ if (hoverScale) {
+ emphasisState.scaleX = path.scaleX * 1.1;
+ emphasisState.scaleY = path.scaleY * 1.1;
+ }
+ path.ensureState("blur").style = blurStyle;
+ path.ensureState("select").style = selectStyle;
+ cursorStyle && (path.cursor = cursorStyle);
+ path.z2 = symbolMeta.z2;
+ });
+ var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];
+ var barRect = bar.__pictorialBarRect;
+ barRect.ignoreClip = true;
+ setLabelStyle(barRect, getLabelStatesModels(itemModel), {
+ labelFetcher: opt.seriesModel,
+ labelDataIndex: dataIndex,
+ defaultText: getDefaultLabel(opt.seriesModel.getData(), dataIndex),
+ inheritColor: symbolMeta.style.fill,
+ defaultOpacity: symbolMeta.style.opacity,
+ defaultOutsidePosition: barPositionOutside
+ });
+ toggleHoverEmphasis(bar, focus, blurScope, emphasisModel.get("disabled"));
+}
+function toIntTimes(times) {
+ var roundedTimes = Math.round(times);
+ return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);
+}
+var PictorialBarView_default = PictorialBarView;
+
+// node_modules/echarts/lib/chart/bar/PictorialBarSeries.js
+var PictorialBarSeriesModel = function(_super) {
+ __extends(PictorialBarSeriesModel2, _super);
+ function PictorialBarSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = PictorialBarSeriesModel2.type;
+ _this.hasSymbolVisual = true;
+ _this.defaultSymbol = "roundRect";
+ return _this;
+ }
+ PictorialBarSeriesModel2.prototype.getInitialData = function(option) {
+ option.stack = null;
+ return _super.prototype.getInitialData.apply(this, arguments);
+ };
+ PictorialBarSeriesModel2.type = "series.pictorialBar";
+ PictorialBarSeriesModel2.dependencies = ["grid"];
+ PictorialBarSeriesModel2.defaultOption = inheritDefaultOption(BaseBarSeries_default.defaultOption, {
+ symbol: "circle",
+ symbolSize: null,
+ symbolRotate: null,
+ symbolPosition: null,
+ symbolOffset: null,
+ symbolMargin: null,
+ symbolRepeat: false,
+ symbolRepeatDirection: "end",
+ symbolClip: false,
+ symbolBoundingData: null,
+ symbolPatternSize: 400,
+ barGap: "-100%",
+ clip: false,
+ progressive: 0,
+ emphasis: {
+ scale: false
+ },
+ select: {
+ itemStyle: {
+ borderColor: "#212121"
+ }
+ }
+ });
+ return PictorialBarSeriesModel2;
+}(BaseBarSeries_default);
+var PictorialBarSeries_default = PictorialBarSeriesModel;
+
+// node_modules/echarts/lib/chart/bar/installPictorialBar.js
+function install25(registers) {
+ registers.registerChartView(PictorialBarView_default);
+ registers.registerSeriesModel(PictorialBarSeries_default);
+ registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, "pictorialBar"));
+ registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout("pictorialBar"));
+}
+
+// node_modules/echarts/lib/chart/themeRiver/ThemeRiverView.js
+var ThemeRiverView = function(_super) {
+ __extends(ThemeRiverView2, _super);
+ function ThemeRiverView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ThemeRiverView2.type;
+ _this._layers = [];
+ return _this;
+ }
+ ThemeRiverView2.prototype.render = function(seriesModel, ecModel, api) {
+ var data = seriesModel.getData();
+ var self2 = this;
+ var group = this.group;
+ var layersSeries = seriesModel.getLayerSeries();
+ var layoutInfo = data.getLayout("layoutInfo");
+ var rect = layoutInfo.rect;
+ var boundaryGap = layoutInfo.boundaryGap;
+ group.x = 0;
+ group.y = rect.y + boundaryGap[0];
+ function keyGetter(item) {
+ return item.name;
+ }
+ var dataDiffer = new DataDiffer_default(this._layersSeries || [], layersSeries, keyGetter, keyGetter);
+ var newLayersGroups = [];
+ dataDiffer.add(bind(process2, this, "add")).update(bind(process2, this, "update")).remove(bind(process2, this, "remove")).execute();
+ function process2(status, idx, oldIdx) {
+ var oldLayersGroups = self2._layers;
+ if (status === "remove") {
+ group.remove(oldLayersGroups[idx]);
+ return;
+ }
+ var points0 = [];
+ var points1 = [];
+ var style;
+ var indices = layersSeries[idx].indices;
+ var j = 0;
+ for (; j < indices.length; j++) {
+ var layout5 = data.getItemLayout(indices[j]);
+ var x = layout5.x;
+ var y0 = layout5.y0;
+ var y = layout5.y;
+ points0.push(x, y0);
+ points1.push(x, y0 + y);
+ style = data.getItemVisual(indices[j], "style");
+ }
+ var polygon;
+ var textLayout = data.getItemLayout(indices[0]);
+ var labelModel = seriesModel.getModel("label");
+ var margin = labelModel.get("margin");
+ var emphasisModel = seriesModel.getModel("emphasis");
+ if (status === "add") {
+ var layerGroup = newLayersGroups[idx] = new Group_default();
+ polygon = new ECPolygon({
+ shape: {
+ points: points0,
+ stackedOnPoints: points1,
+ smooth: 0.4,
+ stackedOnSmooth: 0.4,
+ smoothConstraint: false
+ },
+ z2: 0
+ });
+ layerGroup.add(polygon);
+ group.add(layerGroup);
+ if (seriesModel.isAnimationEnabled()) {
+ polygon.setClipPath(createGridClipShape3(polygon.getBoundingRect(), seriesModel, function() {
+ polygon.removeClipPath();
+ }));
+ }
+ } else {
+ var layerGroup = oldLayersGroups[oldIdx];
+ polygon = layerGroup.childAt(0);
+ group.add(layerGroup);
+ newLayersGroups[idx] = layerGroup;
+ updateProps(polygon, {
+ shape: {
+ points: points0,
+ stackedOnPoints: points1
+ }
+ }, seriesModel);
+ saveOldStyle(polygon);
+ }
+ setLabelStyle(polygon, getLabelStatesModels(seriesModel), {
+ labelDataIndex: indices[j - 1],
+ defaultText: data.getName(indices[j - 1]),
+ inheritColor: style.fill
+ }, {
+ normal: {
+ verticalAlign: "middle"
+ }
+ });
+ polygon.setTextConfig({
+ position: null,
+ local: true
+ });
+ var labelEl = polygon.getTextContent();
+ if (labelEl) {
+ labelEl.x = textLayout.x - margin;
+ labelEl.y = textLayout.y0 + textLayout.y / 2;
+ }
+ polygon.useStyle(style);
+ data.setItemGraphicEl(idx, polygon);
+ setStatesStylesFromModel(polygon, seriesModel);
+ toggleHoverEmphasis(polygon, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ }
+ this._layersSeries = layersSeries;
+ this._layers = newLayersGroups;
+ };
+ ThemeRiverView2.type = "themeRiver";
+ return ThemeRiverView2;
+}(Chart_default);
+function createGridClipShape3(rect, seriesModel, cb) {
+ var rectEl = new Rect_default({
+ shape: {
+ x: rect.x - 10,
+ y: rect.y - 10,
+ width: 0,
+ height: rect.height + 20
+ }
+ });
+ initProps(rectEl, {
+ shape: {
+ x: rect.x - 50,
+ width: rect.width + 100,
+ height: rect.height + 20
+ }
+ }, seriesModel, cb);
+ return rectEl;
+}
+var ThemeRiverView_default = ThemeRiverView;
+
+// node_modules/echarts/lib/chart/themeRiver/ThemeRiverSeries.js
+var DATA_NAME_INDEX = 2;
+var ThemeRiverSeriesModel = function(_super) {
+ __extends(ThemeRiverSeriesModel2, _super);
+ function ThemeRiverSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ThemeRiverSeriesModel2.type;
+ return _this;
+ }
+ ThemeRiverSeriesModel2.prototype.init = function(option) {
+ _super.prototype.init.apply(this, arguments);
+ this.legendVisualProvider = new LegendVisualProvider_default(bind(this.getData, this), bind(this.getRawData, this));
+ };
+ ThemeRiverSeriesModel2.prototype.fixData = function(data) {
+ var rawDataLength = data.length;
+ var timeValueKeys = {};
+ var groupResult = groupData(data, function(item) {
+ if (!timeValueKeys.hasOwnProperty(item[0] + "")) {
+ timeValueKeys[item[0] + ""] = -1;
+ }
+ return item[2];
+ });
+ var layerData = [];
+ groupResult.buckets.each(function(items, key) {
+ layerData.push({
+ name: key,
+ dataList: items
+ });
+ });
+ var layerNum = layerData.length;
+ for (var k = 0; k < layerNum; ++k) {
+ var name_1 = layerData[k].name;
+ for (var j = 0; j < layerData[k].dataList.length; ++j) {
+ var timeValue = layerData[k].dataList[j][0] + "";
+ timeValueKeys[timeValue] = k;
+ }
+ for (var timeValue in timeValueKeys) {
+ if (timeValueKeys.hasOwnProperty(timeValue) && timeValueKeys[timeValue] !== k) {
+ timeValueKeys[timeValue] = k;
+ data[rawDataLength] = [timeValue, 0, name_1];
+ rawDataLength++;
+ }
+ }
+ }
+ return data;
+ };
+ ThemeRiverSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ var singleAxisModel = this.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
+ var axisType = singleAxisModel.get("type");
+ var filterData = filter(option.data, function(dataItem) {
+ return dataItem[2] !== void 0;
+ });
+ var data = this.fixData(filterData || []);
+ var nameList = [];
+ var nameMap = this.nameMap = createHashMap();
+ var count2 = 0;
+ for (var i = 0; i < data.length; ++i) {
+ nameList.push(data[i][DATA_NAME_INDEX]);
+ if (!nameMap.get(data[i][DATA_NAME_INDEX])) {
+ nameMap.set(data[i][DATA_NAME_INDEX], count2);
+ count2++;
+ }
+ }
+ var dimensions = prepareSeriesDataSchema(data, {
+ coordDimensions: ["single"],
+ dimensionsDefine: [{
+ name: "time",
+ type: getDimensionTypeByAxis(axisType)
+ }, {
+ name: "value",
+ type: "float"
+ }, {
+ name: "name",
+ type: "ordinal"
+ }],
+ encodeDefine: {
+ single: 0,
+ value: 1,
+ itemName: 2
+ }
+ }).dimensions;
+ var list = new SeriesData_default(dimensions, this);
+ list.initData(data);
+ return list;
+ };
+ ThemeRiverSeriesModel2.prototype.getLayerSeries = function() {
+ var data = this.getData();
+ var lenCount = data.count();
+ var indexArr = [];
+ for (var i = 0; i < lenCount; ++i) {
+ indexArr[i] = i;
+ }
+ var timeDim = data.mapDimension("single");
+ var groupResult = groupData(indexArr, function(index) {
+ return data.get("name", index);
+ });
+ var layerSeries = [];
+ groupResult.buckets.each(function(items, key) {
+ items.sort(function(index1, index2) {
+ return data.get(timeDim, index1) - data.get(timeDim, index2);
+ });
+ layerSeries.push({
+ name: key,
+ indices: items
+ });
+ });
+ return layerSeries;
+ };
+ ThemeRiverSeriesModel2.prototype.getAxisTooltipData = function(dim, value, baseAxis) {
+ if (!isArray(dim)) {
+ dim = dim ? [dim] : [];
+ }
+ var data = this.getData();
+ var layerSeries = this.getLayerSeries();
+ var indices = [];
+ var layerNum = layerSeries.length;
+ var nestestValue;
+ for (var i = 0; i < layerNum; ++i) {
+ var minDist = Number.MAX_VALUE;
+ var nearestIdx = -1;
+ var pointNum = layerSeries[i].indices.length;
+ for (var j = 0; j < pointNum; ++j) {
+ var theValue = data.get(dim[0], layerSeries[i].indices[j]);
+ var dist3 = Math.abs(theValue - value);
+ if (dist3 <= minDist) {
+ nestestValue = theValue;
+ minDist = dist3;
+ nearestIdx = layerSeries[i].indices[j];
+ }
+ }
+ indices.push(nearestIdx);
+ }
+ return {
+ dataIndices: indices,
+ nestestValue
+ };
+ };
+ ThemeRiverSeriesModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var data = this.getData();
+ var name = data.getName(dataIndex);
+ var value = data.get(data.mapDimension("value"), dataIndex);
+ return createTooltipMarkup("nameValue", {
+ name,
+ value
+ });
+ };
+ ThemeRiverSeriesModel2.type = "series.themeRiver";
+ ThemeRiverSeriesModel2.dependencies = ["singleAxis"];
+ ThemeRiverSeriesModel2.defaultOption = {
+ z: 2,
+ colorBy: "data",
+ coordinateSystem: "singleAxis",
+ boundaryGap: ["10%", "10%"],
+ singleAxisIndex: 0,
+ animationEasing: "linear",
+ label: {
+ margin: 4,
+ show: true,
+ position: "left",
+ fontSize: 11
+ },
+ emphasis: {
+ label: {
+ show: true
+ }
+ }
+ };
+ return ThemeRiverSeriesModel2;
+}(Series_default);
+var ThemeRiverSeries_default = ThemeRiverSeriesModel;
+
+// node_modules/echarts/lib/chart/themeRiver/themeRiverLayout.js
+function themeRiverLayout(ecModel, api) {
+ ecModel.eachSeriesByType("themeRiver", function(seriesModel) {
+ var data = seriesModel.getData();
+ var single = seriesModel.coordinateSystem;
+ var layoutInfo = {};
+ var rect = single.getRect();
+ layoutInfo.rect = rect;
+ var boundaryGap = seriesModel.get("boundaryGap");
+ var axis = single.getAxis();
+ layoutInfo.boundaryGap = boundaryGap;
+ if (axis.orient === "horizontal") {
+ boundaryGap[0] = parsePercent2(boundaryGap[0], rect.height);
+ boundaryGap[1] = parsePercent2(boundaryGap[1], rect.height);
+ var height = rect.height - boundaryGap[0] - boundaryGap[1];
+ doThemeRiverLayout(data, seriesModel, height);
+ } else {
+ boundaryGap[0] = parsePercent2(boundaryGap[0], rect.width);
+ boundaryGap[1] = parsePercent2(boundaryGap[1], rect.width);
+ var width = rect.width - boundaryGap[0] - boundaryGap[1];
+ doThemeRiverLayout(data, seriesModel, width);
+ }
+ data.setLayout("layoutInfo", layoutInfo);
+ });
+}
+function doThemeRiverLayout(data, seriesModel, height) {
+ if (!data.count()) {
+ return;
+ }
+ var coordSys = seriesModel.coordinateSystem;
+ var layerSeries = seriesModel.getLayerSeries();
+ var timeDim = data.mapDimension("single");
+ var valueDim = data.mapDimension("value");
+ var layerPoints = map(layerSeries, function(singleLayer) {
+ return map(singleLayer.indices, function(idx) {
+ var pt = coordSys.dataToPoint(data.get(timeDim, idx));
+ pt[1] = data.get(valueDim, idx);
+ return pt;
+ });
+ });
+ var base2 = computeBaseline(layerPoints);
+ var baseLine = base2.y0;
+ var ky = height / base2.max;
+ var n = layerSeries.length;
+ var m2 = layerSeries[0].indices.length;
+ var baseY0;
+ for (var j = 0; j < m2; ++j) {
+ baseY0 = baseLine[j] * ky;
+ data.setItemLayout(layerSeries[0].indices[j], {
+ layerIndex: 0,
+ x: layerPoints[0][j][0],
+ y0: baseY0,
+ y: layerPoints[0][j][1] * ky
+ });
+ for (var i = 1; i < n; ++i) {
+ baseY0 += layerPoints[i - 1][j][1] * ky;
+ data.setItemLayout(layerSeries[i].indices[j], {
+ layerIndex: i,
+ x: layerPoints[i][j][0],
+ y0: baseY0,
+ y: layerPoints[i][j][1] * ky
+ });
+ }
+ }
+}
+function computeBaseline(data) {
+ var layerNum = data.length;
+ var pointNum = data[0].length;
+ var sums = [];
+ var y0 = [];
+ var max3 = 0;
+ for (var i = 0; i < pointNum; ++i) {
+ var temp = 0;
+ for (var j = 0; j < layerNum; ++j) {
+ temp += data[j][i][1];
+ }
+ if (temp > max3) {
+ max3 = temp;
+ }
+ sums.push(temp);
+ }
+ for (var k = 0; k < pointNum; ++k) {
+ y0[k] = (max3 - sums[k]) / 2;
+ }
+ max3 = 0;
+ for (var l = 0; l < pointNum; ++l) {
+ var sum2 = sums[l] + y0[l];
+ if (sum2 > max3) {
+ max3 = sum2;
+ }
+ }
+ return {
+ y0,
+ max: max3
+ };
+}
+
+// node_modules/echarts/lib/chart/themeRiver/install.js
+function install26(registers) {
+ registers.registerChartView(ThemeRiverView_default);
+ registers.registerSeriesModel(ThemeRiverSeries_default);
+ registers.registerLayout(themeRiverLayout);
+ registers.registerProcessor(dataFilter("themeRiver"));
+}
+
+// node_modules/echarts/lib/chart/sunburst/SunburstPiece.js
+var DEFAULT_SECTOR_Z = 2;
+var DEFAULT_TEXT_Z = 4;
+var SunburstPiece = function(_super) {
+ __extends(SunburstPiece2, _super);
+ function SunburstPiece2(node, seriesModel, ecModel, api) {
+ var _this = _super.call(this) || this;
+ _this.z2 = DEFAULT_SECTOR_Z;
+ _this.textConfig = {
+ inside: true
+ };
+ getECData(_this).seriesIndex = seriesModel.seriesIndex;
+ var text = new Text_default({
+ z2: DEFAULT_TEXT_Z,
+ silent: node.getModel().get(["label", "silent"])
+ });
+ _this.setTextContent(text);
+ _this.updateData(true, node, seriesModel, ecModel, api);
+ return _this;
+ }
+ SunburstPiece2.prototype.updateData = function(firstCreate, node, seriesModel, ecModel, api) {
+ this.node = node;
+ node.piece = this;
+ seriesModel = seriesModel || this._seriesModel;
+ ecModel = ecModel || this._ecModel;
+ var sector = this;
+ getECData(sector).dataIndex = node.dataIndex;
+ var itemModel = node.getModel();
+ var emphasisModel = itemModel.getModel("emphasis");
+ var layout5 = node.getLayout();
+ var sectorShape = extend({}, layout5);
+ sectorShape.label = null;
+ var normalStyle = node.getVisual("style");
+ normalStyle.lineJoin = "bevel";
+ var decal = node.getVisual("decal");
+ if (decal) {
+ normalStyle.decal = createOrUpdatePatternFromDecal(decal, api);
+ }
+ var cornerRadius = getSectorCornerRadius(itemModel.getModel("itemStyle"), sectorShape, true);
+ extend(sectorShape, cornerRadius);
+ each(SPECIAL_STATES, function(stateName) {
+ var state = sector.ensureState(stateName);
+ var itemStyleModel = itemModel.getModel([stateName, "itemStyle"]);
+ state.style = itemStyleModel.getItemStyle();
+ var cornerRadius2 = getSectorCornerRadius(itemStyleModel, sectorShape);
+ if (cornerRadius2) {
+ state.shape = cornerRadius2;
+ }
+ });
+ if (firstCreate) {
+ sector.setShape(sectorShape);
+ sector.shape.r = layout5.r0;
+ initProps(sector, {
+ shape: {
+ r: layout5.r
+ }
+ }, seriesModel, node.dataIndex);
+ } else {
+ updateProps(sector, {
+ shape: sectorShape
+ }, seriesModel);
+ saveOldStyle(sector);
+ }
+ sector.useStyle(normalStyle);
+ this._updateLabel(seriesModel);
+ var cursorStyle = itemModel.getShallow("cursor");
+ cursorStyle && sector.attr("cursor", cursorStyle);
+ this._seriesModel = seriesModel || this._seriesModel;
+ this._ecModel = ecModel || this._ecModel;
+ var focus = emphasisModel.get("focus");
+ var focusOrIndices = focus === "relative" ? concatArray(node.getAncestorsIndices(), node.getDescendantIndices()) : focus === "ancestor" ? node.getAncestorsIndices() : focus === "descendant" ? node.getDescendantIndices() : focus;
+ toggleHoverEmphasis(this, focusOrIndices, emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
+ };
+ SunburstPiece2.prototype._updateLabel = function(seriesModel) {
+ var _this = this;
+ var itemModel = this.node.getModel();
+ var normalLabelModel = itemModel.getModel("label");
+ var layout5 = this.node.getLayout();
+ var angle = layout5.endAngle - layout5.startAngle;
+ var midAngle = (layout5.startAngle + layout5.endAngle) / 2;
+ var dx = Math.cos(midAngle);
+ var dy = Math.sin(midAngle);
+ var sector = this;
+ var label = sector.getTextContent();
+ var dataIndex = this.node.dataIndex;
+ var labelMinAngle = normalLabelModel.get("minAngle") / 180 * Math.PI;
+ var isNormalShown = normalLabelModel.get("show") && !(labelMinAngle != null && Math.abs(angle) < labelMinAngle);
+ label.ignore = !isNormalShown;
+ each(DISPLAY_STATES, function(stateName) {
+ var labelStateModel = stateName === "normal" ? itemModel.getModel("label") : itemModel.getModel([stateName, "label"]);
+ var isNormal = stateName === "normal";
+ var state = isNormal ? label : label.ensureState(stateName);
+ var text = seriesModel.getFormattedLabel(dataIndex, stateName);
+ if (isNormal) {
+ text = text || _this.node.name;
+ }
+ state.style = createTextStyle(labelStateModel, {}, null, stateName !== "normal", true);
+ if (text) {
+ state.style.text = text;
+ }
+ var isShown = labelStateModel.get("show");
+ if (isShown != null && !isNormal) {
+ state.ignore = !isShown;
+ }
+ var labelPosition = getLabelAttr(labelStateModel, "position");
+ var sectorState = isNormal ? sector : sector.states[stateName];
+ var labelColor = sectorState.style.fill;
+ sectorState.textConfig = {
+ outsideFill: labelStateModel.get("color") === "inherit" ? labelColor : null,
+ inside: labelPosition !== "outside"
+ };
+ var r;
+ var labelPadding = getLabelAttr(labelStateModel, "distance") || 0;
+ var textAlign = getLabelAttr(labelStateModel, "align");
+ var rotateType = getLabelAttr(labelStateModel, "rotate");
+ var flipStartAngle = Math.PI * 0.5;
+ var flipEndAngle = Math.PI * 1.5;
+ var midAngleNormal = normalizeRadian(rotateType === "tangential" ? Math.PI / 2 - midAngle : midAngle);
+ var needsFlip = midAngleNormal > flipStartAngle && !isRadianAroundZero(midAngleNormal - flipStartAngle) && midAngleNormal < flipEndAngle;
+ if (labelPosition === "outside") {
+ r = layout5.r + labelPadding;
+ textAlign = needsFlip ? "right" : "left";
+ } else {
+ if (!textAlign || textAlign === "center") {
+ if (angle === 2 * Math.PI && layout5.r0 === 0) {
+ r = 0;
+ } else {
+ r = (layout5.r + layout5.r0) / 2;
+ }
+ textAlign = "center";
+ } else if (textAlign === "left") {
+ r = layout5.r0 + labelPadding;
+ textAlign = needsFlip ? "right" : "left";
+ } else if (textAlign === "right") {
+ r = layout5.r - labelPadding;
+ textAlign = needsFlip ? "left" : "right";
+ }
+ }
+ state.style.align = textAlign;
+ state.style.verticalAlign = getLabelAttr(labelStateModel, "verticalAlign") || "middle";
+ state.x = r * dx + layout5.cx;
+ state.y = r * dy + layout5.cy;
+ var rotate2 = 0;
+ if (rotateType === "radial") {
+ rotate2 = normalizeRadian(-midAngle) + (needsFlip ? Math.PI : 0);
+ } else if (rotateType === "tangential") {
+ rotate2 = normalizeRadian(Math.PI / 2 - midAngle) + (needsFlip ? Math.PI : 0);
+ } else if (isNumber(rotateType)) {
+ rotate2 = rotateType * Math.PI / 180;
+ }
+ state.rotation = normalizeRadian(rotate2);
+ });
+ function getLabelAttr(model, name) {
+ var stateAttr = model.get(name);
+ if (stateAttr == null) {
+ return normalLabelModel.get(name);
+ }
+ return stateAttr;
+ }
+ label.dirtyStyle();
+ };
+ return SunburstPiece2;
+}(Sector_default);
+var SunburstPiece_default = SunburstPiece;
+
+// node_modules/echarts/lib/chart/sunburst/sunburstAction.js
+var ROOT_TO_NODE_ACTION = "sunburstRootToNode";
+var HIGHLIGHT_ACTION = "sunburstHighlight";
+var UNHIGHLIGHT_ACTION = "sunburstUnhighlight";
+function installSunburstAction(registers) {
+ registers.registerAction({
+ type: ROOT_TO_NODE_ACTION,
+ update: "updateView"
+ }, function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "sunburst",
+ query: payload
+ }, handleRootToNode);
+ function handleRootToNode(model, index) {
+ var targetInfo = retrieveTargetInfo(payload, [ROOT_TO_NODE_ACTION], model);
+ if (targetInfo) {
+ var originViewRoot = model.getViewRoot();
+ if (originViewRoot) {
+ payload.direction = aboveViewRoot(originViewRoot, targetInfo.node) ? "rollUp" : "drillDown";
+ }
+ model.resetViewRoot(targetInfo.node);
+ }
+ }
+ });
+ registers.registerAction({
+ type: HIGHLIGHT_ACTION,
+ update: "none"
+ }, function(payload, ecModel, api) {
+ payload = extend({}, payload);
+ ecModel.eachComponent({
+ mainType: "series",
+ subType: "sunburst",
+ query: payload
+ }, handleHighlight);
+ function handleHighlight(model) {
+ var targetInfo = retrieveTargetInfo(payload, [HIGHLIGHT_ACTION], model);
+ if (targetInfo) {
+ payload.dataIndex = targetInfo.node.dataIndex;
+ }
+ }
+ if (true) {
+ deprecateReplaceLog("sunburstHighlight", "highlight");
+ }
+ api.dispatchAction(extend(payload, {
+ type: "highlight"
+ }));
+ });
+ registers.registerAction({
+ type: UNHIGHLIGHT_ACTION,
+ update: "updateView"
+ }, function(payload, ecModel, api) {
+ payload = extend({}, payload);
+ if (true) {
+ deprecateReplaceLog("sunburstUnhighlight", "downplay");
+ }
+ api.dispatchAction(extend(payload, {
+ type: "downplay"
+ }));
+ });
+}
+
+// node_modules/echarts/lib/chart/sunburst/SunburstView.js
+var SunburstView = function(_super) {
+ __extends(SunburstView2, _super);
+ function SunburstView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SunburstView2.type;
+ return _this;
+ }
+ SunburstView2.prototype.render = function(seriesModel, ecModel, api, payload) {
+ var self2 = this;
+ this.seriesModel = seriesModel;
+ this.api = api;
+ this.ecModel = ecModel;
+ var data = seriesModel.getData();
+ var virtualRoot = data.tree.root;
+ var newRoot = seriesModel.getViewRoot();
+ var group = this.group;
+ var renderLabelForZeroData = seriesModel.get("renderLabelForZeroData");
+ var newChildren = [];
+ newRoot.eachNode(function(node) {
+ newChildren.push(node);
+ });
+ var oldChildren = this._oldChildren || [];
+ dualTravel(newChildren, oldChildren);
+ renderRollUp(virtualRoot, newRoot);
+ this._initEvents();
+ this._oldChildren = newChildren;
+ function dualTravel(newChildren2, oldChildren2) {
+ if (newChildren2.length === 0 && oldChildren2.length === 0) {
+ return;
+ }
+ new DataDiffer_default(oldChildren2, newChildren2, getKey2, getKey2).add(processNode).update(processNode).remove(curry(processNode, null)).execute();
+ function getKey2(node) {
+ return node.getId();
+ }
+ function processNode(newIdx, oldIdx) {
+ var newNode = newIdx == null ? null : newChildren2[newIdx];
+ var oldNode = oldIdx == null ? null : oldChildren2[oldIdx];
+ doRenderNode(newNode, oldNode);
+ }
+ }
+ function doRenderNode(newNode, oldNode) {
+ if (!renderLabelForZeroData && newNode && !newNode.getValue()) {
+ newNode = null;
+ }
+ if (newNode !== virtualRoot && oldNode !== virtualRoot) {
+ if (oldNode && oldNode.piece) {
+ if (newNode) {
+ oldNode.piece.updateData(false, newNode, seriesModel, ecModel, api);
+ data.setItemGraphicEl(newNode.dataIndex, oldNode.piece);
+ } else {
+ removeNode2(oldNode);
+ }
+ } else if (newNode) {
+ var piece = new SunburstPiece_default(newNode, seriesModel, ecModel, api);
+ group.add(piece);
+ data.setItemGraphicEl(newNode.dataIndex, piece);
+ }
+ }
+ }
+ function removeNode2(node) {
+ if (!node) {
+ return;
+ }
+ if (node.piece) {
+ group.remove(node.piece);
+ node.piece = null;
+ }
+ }
+ function renderRollUp(virtualRoot2, viewRoot) {
+ if (viewRoot.depth > 0) {
+ if (self2.virtualPiece) {
+ self2.virtualPiece.updateData(false, virtualRoot2, seriesModel, ecModel, api);
+ } else {
+ self2.virtualPiece = new SunburstPiece_default(virtualRoot2, seriesModel, ecModel, api);
+ group.add(self2.virtualPiece);
+ }
+ viewRoot.piece.off("click");
+ self2.virtualPiece.on("click", function(e2) {
+ self2._rootToNode(viewRoot.parentNode);
+ });
+ } else if (self2.virtualPiece) {
+ group.remove(self2.virtualPiece);
+ self2.virtualPiece = null;
+ }
+ }
+ };
+ SunburstView2.prototype._initEvents = function() {
+ var _this = this;
+ this.group.off("click");
+ this.group.on("click", function(e2) {
+ var targetFound = false;
+ var viewRoot = _this.seriesModel.getViewRoot();
+ viewRoot.eachNode(function(node) {
+ if (!targetFound && node.piece && node.piece === e2.target) {
+ var nodeClick = node.getModel().get("nodeClick");
+ if (nodeClick === "rootToNode") {
+ _this._rootToNode(node);
+ } else if (nodeClick === "link") {
+ var itemModel = node.getModel();
+ var link = itemModel.get("link");
+ if (link) {
+ var linkTarget = itemModel.get("target", true) || "_blank";
+ windowOpen(link, linkTarget);
+ }
+ }
+ targetFound = true;
+ }
+ });
+ });
+ };
+ SunburstView2.prototype._rootToNode = function(node) {
+ if (node !== this.seriesModel.getViewRoot()) {
+ this.api.dispatchAction({
+ type: ROOT_TO_NODE_ACTION,
+ from: this.uid,
+ seriesId: this.seriesModel.id,
+ targetNode: node
+ });
+ }
+ };
+ SunburstView2.prototype.containPoint = function(point, seriesModel) {
+ var treeRoot = seriesModel.getData();
+ var itemLayout = treeRoot.getItemLayout(0);
+ if (itemLayout) {
+ var dx = point[0] - itemLayout.cx;
+ var dy = point[1] - itemLayout.cy;
+ var radius = Math.sqrt(dx * dx + dy * dy);
+ return radius <= itemLayout.r && radius >= itemLayout.r0;
+ }
+ };
+ SunburstView2.type = "sunburst";
+ return SunburstView2;
+}(Chart_default);
+var SunburstView_default = SunburstView;
+
+// node_modules/echarts/lib/chart/sunburst/SunburstSeries.js
+var SunburstSeriesModel = function(_super) {
+ __extends(SunburstSeriesModel2, _super);
+ function SunburstSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SunburstSeriesModel2.type;
+ _this.ignoreStyleOnData = true;
+ return _this;
+ }
+ SunburstSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ var root = {
+ name: option.name,
+ children: option.data
+ };
+ completeTreeValue2(root);
+ var levelModels = this._levelModels = map(option.levels || [], function(levelDefine) {
+ return new Model_default(levelDefine, this, ecModel);
+ }, this);
+ var tree = Tree_default.createTree(root, this, beforeLink);
+ function beforeLink(nodeData) {
+ nodeData.wrapMethod("getItemModel", function(model, idx) {
+ var node = tree.getNodeByDataIndex(idx);
+ var levelModel = levelModels[node.depth];
+ levelModel && (model.parentModel = levelModel);
+ return model;
+ });
+ }
+ return tree.data;
+ };
+ SunburstSeriesModel2.prototype.optionUpdated = function() {
+ this.resetViewRoot();
+ };
+ SunburstSeriesModel2.prototype.getDataParams = function(dataIndex) {
+ var params = _super.prototype.getDataParams.apply(this, arguments);
+ var node = this.getData().tree.getNodeByDataIndex(dataIndex);
+ params.treePathInfo = wrapTreePathInfo(node, this);
+ return params;
+ };
+ SunburstSeriesModel2.prototype.getLevelModel = function(node) {
+ return this._levelModels && this._levelModels[node.depth];
+ };
+ SunburstSeriesModel2.prototype.getViewRoot = function() {
+ return this._viewRoot;
+ };
+ SunburstSeriesModel2.prototype.resetViewRoot = function(viewRoot) {
+ viewRoot ? this._viewRoot = viewRoot : viewRoot = this._viewRoot;
+ var root = this.getRawData().tree.root;
+ if (!viewRoot || viewRoot !== root && !root.contains(viewRoot)) {
+ this._viewRoot = root;
+ }
+ };
+ SunburstSeriesModel2.prototype.enableAriaDecal = function() {
+ enableAriaDecalForTree(this);
+ };
+ SunburstSeriesModel2.type = "series.sunburst";
+ SunburstSeriesModel2.defaultOption = {
+ z: 2,
+ center: ["50%", "50%"],
+ radius: [0, "75%"],
+ clockwise: true,
+ startAngle: 90,
+ minAngle: 0,
+ stillShowZeroSum: true,
+ nodeClick: "rootToNode",
+ renderLabelForZeroData: false,
+ label: {
+ rotate: "radial",
+ show: true,
+ opacity: 1,
+ align: "center",
+ position: "inside",
+ distance: 5,
+ silent: true
+ },
+ itemStyle: {
+ borderWidth: 1,
+ borderColor: "white",
+ borderType: "solid",
+ shadowBlur: 0,
+ shadowColor: "rgba(0, 0, 0, 0.2)",
+ shadowOffsetX: 0,
+ shadowOffsetY: 0,
+ opacity: 1
+ },
+ emphasis: {
+ focus: "descendant"
+ },
+ blur: {
+ itemStyle: {
+ opacity: 0.2
+ },
+ label: {
+ opacity: 0.1
+ }
+ },
+ animationType: "expansion",
+ animationDuration: 1e3,
+ animationDurationUpdate: 500,
+ data: [],
+ sort: "desc"
+ };
+ return SunburstSeriesModel2;
+}(Series_default);
+function completeTreeValue2(dataNode) {
+ var sum2 = 0;
+ each(dataNode.children, function(child) {
+ completeTreeValue2(child);
+ var childValue = child.value;
+ isArray(childValue) && (childValue = childValue[0]);
+ sum2 += childValue;
+ });
+ var thisValue = dataNode.value;
+ if (isArray(thisValue)) {
+ thisValue = thisValue[0];
+ }
+ if (thisValue == null || isNaN(thisValue)) {
+ thisValue = sum2;
+ }
+ if (thisValue < 0) {
+ thisValue = 0;
+ }
+ isArray(dataNode.value) ? dataNode.value[0] = thisValue : dataNode.value = thisValue;
+}
+var SunburstSeries_default = SunburstSeriesModel;
+
+// node_modules/echarts/lib/chart/sunburst/sunburstLayout.js
+var RADIAN3 = Math.PI / 180;
+function sunburstLayout(seriesType2, ecModel, api) {
+ ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
+ var center3 = seriesModel.get("center");
+ var radius = seriesModel.get("radius");
+ if (!isArray(radius)) {
+ radius = [0, radius];
+ }
+ if (!isArray(center3)) {
+ center3 = [center3, center3];
+ }
+ var width = api.getWidth();
+ var height = api.getHeight();
+ var size = Math.min(width, height);
+ var cx = parsePercent2(center3[0], width);
+ var cy = parsePercent2(center3[1], height);
+ var r0 = parsePercent2(radius[0], size / 2);
+ var r = parsePercent2(radius[1], size / 2);
+ var startAngle = -seriesModel.get("startAngle") * RADIAN3;
+ var minAngle = seriesModel.get("minAngle") * RADIAN3;
+ var virtualRoot = seriesModel.getData().tree.root;
+ var treeRoot = seriesModel.getViewRoot();
+ var rootDepth = treeRoot.depth;
+ var sort4 = seriesModel.get("sort");
+ if (sort4 != null) {
+ initChildren2(treeRoot, sort4);
+ }
+ var validDataCount = 0;
+ each(treeRoot.children, function(child) {
+ !isNaN(child.getValue()) && validDataCount++;
+ });
+ var sum2 = treeRoot.getValue();
+ var unitRadian = Math.PI / (sum2 || validDataCount) * 2;
+ var renderRollupNode = treeRoot.depth > 0;
+ var levels = treeRoot.height - (renderRollupNode ? -1 : 1);
+ var rPerLevel = (r - r0) / (levels || 1);
+ var clockwise = seriesModel.get("clockwise");
+ var stillShowZeroSum = seriesModel.get("stillShowZeroSum");
+ var dir3 = clockwise ? 1 : -1;
+ var renderNode2 = function(node, startAngle2) {
+ if (!node) {
+ return;
+ }
+ var endAngle = startAngle2;
+ if (node !== virtualRoot) {
+ var value = node.getValue();
+ var angle2 = sum2 === 0 && stillShowZeroSum ? unitRadian : value * unitRadian;
+ if (angle2 < minAngle) {
+ angle2 = minAngle;
+ }
+ endAngle = startAngle2 + dir3 * angle2;
+ var depth = node.depth - rootDepth - (renderRollupNode ? -1 : 1);
+ var rStart2 = r0 + rPerLevel * depth;
+ var rEnd2 = r0 + rPerLevel * (depth + 1);
+ var levelModel = seriesModel.getLevelModel(node);
+ if (levelModel) {
+ var r0_1 = levelModel.get("r0", true);
+ var r_1 = levelModel.get("r", true);
+ var radius_1 = levelModel.get("radius", true);
+ if (radius_1 != null) {
+ r0_1 = radius_1[0];
+ r_1 = radius_1[1];
+ }
+ r0_1 != null && (rStart2 = parsePercent2(r0_1, size / 2));
+ r_1 != null && (rEnd2 = parsePercent2(r_1, size / 2));
+ }
+ node.setLayout({
+ angle: angle2,
+ startAngle: startAngle2,
+ endAngle,
+ clockwise,
+ cx,
+ cy,
+ r0: rStart2,
+ r: rEnd2
+ });
+ }
+ if (node.children && node.children.length) {
+ var siblingAngle_1 = 0;
+ each(node.children, function(node2) {
+ siblingAngle_1 += renderNode2(node2, startAngle2 + siblingAngle_1);
+ });
+ }
+ return endAngle - startAngle2;
+ };
+ if (renderRollupNode) {
+ var rStart = r0;
+ var rEnd = r0 + rPerLevel;
+ var angle = Math.PI * 2;
+ virtualRoot.setLayout({
+ angle,
+ startAngle,
+ endAngle: startAngle + angle,
+ clockwise,
+ cx,
+ cy,
+ r0: rStart,
+ r: rEnd
+ });
+ }
+ renderNode2(treeRoot, startAngle);
+ });
+}
+function initChildren2(node, sortOrder) {
+ var children = node.children || [];
+ node.children = sort3(children, sortOrder);
+ if (children.length) {
+ each(node.children, function(child) {
+ initChildren2(child, sortOrder);
+ });
+ }
+}
+function sort3(children, sortOrder) {
+ if (isFunction(sortOrder)) {
+ var sortTargets = map(children, function(child, idx) {
+ var value = child.getValue();
+ return {
+ params: {
+ depth: child.depth,
+ height: child.height,
+ dataIndex: child.dataIndex,
+ getValue: function() {
+ return value;
+ }
+ },
+ index: idx
+ };
+ });
+ sortTargets.sort(function(a, b) {
+ return sortOrder(a.params, b.params);
+ });
+ return map(sortTargets, function(target) {
+ return children[target.index];
+ });
+ } else {
+ var isAsc_1 = sortOrder === "asc";
+ return children.sort(function(a, b) {
+ var diff = (a.getValue() - b.getValue()) * (isAsc_1 ? 1 : -1);
+ return diff === 0 ? (a.dataIndex - b.dataIndex) * (isAsc_1 ? -1 : 1) : diff;
+ });
+ }
+}
+
+// node_modules/echarts/lib/chart/sunburst/sunburstVisual.js
+function sunburstVisual(ecModel) {
+ var paletteScope = {};
+ function pickColor(node, seriesModel, treeHeight) {
+ var current = node;
+ while (current && current.depth > 1) {
+ current = current.parentNode;
+ }
+ var color = seriesModel.getColorFromPalette(current.name || current.dataIndex + "", paletteScope);
+ if (node.depth > 1 && isString(color)) {
+ color = lift(color, (node.depth - 1) / (treeHeight - 1) * 0.5);
+ }
+ return color;
+ }
+ ecModel.eachSeriesByType("sunburst", function(seriesModel) {
+ var data = seriesModel.getData();
+ var tree = data.tree;
+ tree.eachNode(function(node) {
+ var model = node.getModel();
+ var style = model.getModel("itemStyle").getItemStyle();
+ if (!style.fill) {
+ style.fill = pickColor(node, seriesModel, tree.root.height);
+ }
+ var existsStyle = data.ensureUniqueItemVisual(node.dataIndex, "style");
+ extend(existsStyle, style);
+ });
+ });
+}
+
+// node_modules/echarts/lib/chart/sunburst/install.js
+function install27(registers) {
+ registers.registerChartView(SunburstView_default);
+ registers.registerSeriesModel(SunburstSeries_default);
+ registers.registerLayout(curry(sunburstLayout, "sunburst"));
+ registers.registerProcessor(curry(dataFilter, "sunburst"));
+ registers.registerVisual(sunburstVisual);
+ installSunburstAction(registers);
+}
+
+// node_modules/echarts/lib/chart/custom/CustomSeries.js
+var STYLE_VISUAL_TYPE = {
+ color: "fill",
+ borderColor: "stroke"
+};
+var NON_STYLE_VISUAL_PROPS = {
+ symbol: 1,
+ symbolSize: 1,
+ symbolKeepAspect: 1,
+ legendIcon: 1,
+ visualMeta: 1,
+ liftZ: 1,
+ decal: 1
+};
+var customInnerStore = makeInner();
+var CustomSeriesModel = function(_super) {
+ __extends(CustomSeriesModel2, _super);
+ function CustomSeriesModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CustomSeriesModel2.type;
+ return _this;
+ }
+ CustomSeriesModel2.prototype.optionUpdated = function() {
+ this.currentZLevel = this.get("zlevel", true);
+ this.currentZ = this.get("z", true);
+ };
+ CustomSeriesModel2.prototype.getInitialData = function(option, ecModel) {
+ return createSeriesData_default(null, this);
+ };
+ CustomSeriesModel2.prototype.getDataParams = function(dataIndex, dataType, el) {
+ var params = _super.prototype.getDataParams.call(this, dataIndex, dataType);
+ el && (params.info = customInnerStore(el).info);
+ return params;
+ };
+ CustomSeriesModel2.type = "series.custom";
+ CustomSeriesModel2.dependencies = ["grid", "polar", "geo", "singleAxis", "calendar"];
+ CustomSeriesModel2.defaultOption = {
+ coordinateSystem: "cartesian2d",
+ z: 2,
+ legendHoverLink: true,
+ clip: false
+ };
+ return CustomSeriesModel2;
+}(Series_default);
+var CustomSeries_default = CustomSeriesModel;
+
+// node_modules/echarts/lib/coord/cartesian/prepareCustom.js
+function dataToCoordSize(dataSize, dataItem) {
+ dataItem = dataItem || [0, 0];
+ return map(["x", "y"], function(dim, dimIdx) {
+ var axis = this.getAxis(dim);
+ var val = dataItem[dimIdx];
+ var halfSize = dataSize[dimIdx] / 2;
+ return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
+ }, this);
+}
+function cartesianPrepareCustom(coordSys) {
+ var rect = coordSys.master.getRect();
+ return {
+ coordSys: {
+ type: "cartesian2d",
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height
+ },
+ api: {
+ coord: function(data) {
+ return coordSys.dataToPoint(data);
+ },
+ size: bind(dataToCoordSize, coordSys)
+ }
+ };
+}
+
+// node_modules/echarts/lib/coord/geo/prepareCustom.js
+function dataToCoordSize2(dataSize, dataItem) {
+ dataItem = dataItem || [0, 0];
+ return map([0, 1], function(dimIdx) {
+ var val = dataItem[dimIdx];
+ var halfSize = dataSize[dimIdx] / 2;
+ var p1 = [];
+ var p2 = [];
+ p1[dimIdx] = val - halfSize;
+ p2[dimIdx] = val + halfSize;
+ p1[1 - dimIdx] = p2[1 - dimIdx] = dataItem[1 - dimIdx];
+ return Math.abs(this.dataToPoint(p1)[dimIdx] - this.dataToPoint(p2)[dimIdx]);
+ }, this);
+}
+function geoPrepareCustom(coordSys) {
+ var rect = coordSys.getBoundingRect();
+ return {
+ coordSys: {
+ type: "geo",
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height,
+ zoom: coordSys.getZoom()
+ },
+ api: {
+ coord: function(data) {
+ return coordSys.dataToPoint(data);
+ },
+ size: bind(dataToCoordSize2, coordSys)
+ }
+ };
+}
+
+// node_modules/echarts/lib/coord/single/prepareCustom.js
+function dataToCoordSize3(dataSize, dataItem) {
+ var axis = this.getAxis();
+ var val = dataItem instanceof Array ? dataItem[0] : dataItem;
+ var halfSize = (dataSize instanceof Array ? dataSize[0] : dataSize) / 2;
+ return axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
+}
+function singlePrepareCustom(coordSys) {
+ var rect = coordSys.getRect();
+ return {
+ coordSys: {
+ type: "singleAxis",
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height
+ },
+ api: {
+ coord: function(val) {
+ return coordSys.dataToPoint(val);
+ },
+ size: bind(dataToCoordSize3, coordSys)
+ }
+ };
+}
+
+// node_modules/echarts/lib/coord/polar/prepareCustom.js
+function dataToCoordSize4(dataSize, dataItem) {
+ dataItem = dataItem || [0, 0];
+ return map(["Radius", "Angle"], function(dim, dimIdx) {
+ var getterName = "get" + dim + "Axis";
+ var axis = this[getterName]();
+ var val = dataItem[dimIdx];
+ var halfSize = dataSize[dimIdx] / 2;
+ var result = axis.type === "category" ? axis.getBandWidth() : Math.abs(axis.dataToCoord(val - halfSize) - axis.dataToCoord(val + halfSize));
+ if (dim === "Angle") {
+ result = result * Math.PI / 180;
+ }
+ return result;
+ }, this);
+}
+function polarPrepareCustom(coordSys) {
+ var radiusAxis = coordSys.getRadiusAxis();
+ var angleAxis = coordSys.getAngleAxis();
+ var radius = radiusAxis.getExtent();
+ radius[0] > radius[1] && radius.reverse();
+ return {
+ coordSys: {
+ type: "polar",
+ cx: coordSys.cx,
+ cy: coordSys.cy,
+ r: radius[1],
+ r0: radius[0]
+ },
+ api: {
+ coord: function(data) {
+ var radius2 = radiusAxis.dataToRadius(data[0]);
+ var angle = angleAxis.dataToAngle(data[1]);
+ var coord = coordSys.coordToPoint([radius2, angle]);
+ coord.push(radius2, angle * Math.PI / 180);
+ return coord;
+ },
+ size: bind(dataToCoordSize4, coordSys)
+ }
+ };
+}
+
+// node_modules/echarts/lib/coord/calendar/prepareCustom.js
+function calendarPrepareCustom(coordSys) {
+ var rect = coordSys.getRect();
+ var rangeInfo = coordSys.getRangeInfo();
+ return {
+ coordSys: {
+ type: "calendar",
+ x: rect.x,
+ y: rect.y,
+ width: rect.width,
+ height: rect.height,
+ cellWidth: coordSys.getCellWidth(),
+ cellHeight: coordSys.getCellHeight(),
+ rangeInfo: {
+ start: rangeInfo.start,
+ end: rangeInfo.end,
+ weeks: rangeInfo.weeks,
+ dayCount: rangeInfo.allDay
+ }
+ },
+ api: {
+ coord: function(data, clamp2) {
+ return coordSys.dataToPoint(data, clamp2);
+ }
+ }
+ };
+}
+
+// node_modules/echarts/lib/util/styleCompat.js
+var deprecatedLogs = {};
+function isEC4CompatibleStyle(style, elType, hasOwnTextContentOption, hasOwnTextConfig) {
+ return style && (style.legacy || style.legacy !== false && !hasOwnTextContentOption && !hasOwnTextConfig && elType !== "tspan" && (elType === "text" || hasOwn(style, "text")));
+}
+function convertFromEC4CompatibleStyle(hostStyle, elType, isNormal) {
+ var srcStyle = hostStyle;
+ var textConfig;
+ var textContent;
+ var textContentStyle;
+ if (elType === "text") {
+ textContentStyle = srcStyle;
+ } else {
+ textContentStyle = {};
+ hasOwn(srcStyle, "text") && (textContentStyle.text = srcStyle.text);
+ hasOwn(srcStyle, "rich") && (textContentStyle.rich = srcStyle.rich);
+ hasOwn(srcStyle, "textFill") && (textContentStyle.fill = srcStyle.textFill);
+ hasOwn(srcStyle, "textStroke") && (textContentStyle.stroke = srcStyle.textStroke);
+ hasOwn(srcStyle, "fontFamily") && (textContentStyle.fontFamily = srcStyle.fontFamily);
+ hasOwn(srcStyle, "fontSize") && (textContentStyle.fontSize = srcStyle.fontSize);
+ hasOwn(srcStyle, "fontStyle") && (textContentStyle.fontStyle = srcStyle.fontStyle);
+ hasOwn(srcStyle, "fontWeight") && (textContentStyle.fontWeight = srcStyle.fontWeight);
+ textContent = {
+ type: "text",
+ style: textContentStyle,
+ silent: true
+ };
+ textConfig = {};
+ var hasOwnPos = hasOwn(srcStyle, "textPosition");
+ if (isNormal) {
+ textConfig.position = hasOwnPos ? srcStyle.textPosition : "inside";
+ } else {
+ hasOwnPos && (textConfig.position = srcStyle.textPosition);
+ }
+ hasOwn(srcStyle, "textPosition") && (textConfig.position = srcStyle.textPosition);
+ hasOwn(srcStyle, "textOffset") && (textConfig.offset = srcStyle.textOffset);
+ hasOwn(srcStyle, "textRotation") && (textConfig.rotation = srcStyle.textRotation);
+ hasOwn(srcStyle, "textDistance") && (textConfig.distance = srcStyle.textDistance);
+ }
+ convertEC4CompatibleRichItem(textContentStyle, hostStyle);
+ each(textContentStyle.rich, function(richItem) {
+ convertEC4CompatibleRichItem(richItem, richItem);
+ });
+ return {
+ textConfig,
+ textContent
+ };
+}
+function convertEC4CompatibleRichItem(out2, richItem) {
+ if (!richItem) {
+ return;
+ }
+ richItem.font = richItem.textFont || richItem.font;
+ hasOwn(richItem, "textStrokeWidth") && (out2.lineWidth = richItem.textStrokeWidth);
+ hasOwn(richItem, "textAlign") && (out2.align = richItem.textAlign);
+ hasOwn(richItem, "textVerticalAlign") && (out2.verticalAlign = richItem.textVerticalAlign);
+ hasOwn(richItem, "textLineHeight") && (out2.lineHeight = richItem.textLineHeight);
+ hasOwn(richItem, "textWidth") && (out2.width = richItem.textWidth);
+ hasOwn(richItem, "textHeight") && (out2.height = richItem.textHeight);
+ hasOwn(richItem, "textBackgroundColor") && (out2.backgroundColor = richItem.textBackgroundColor);
+ hasOwn(richItem, "textPadding") && (out2.padding = richItem.textPadding);
+ hasOwn(richItem, "textBorderColor") && (out2.borderColor = richItem.textBorderColor);
+ hasOwn(richItem, "textBorderWidth") && (out2.borderWidth = richItem.textBorderWidth);
+ hasOwn(richItem, "textBorderRadius") && (out2.borderRadius = richItem.textBorderRadius);
+ hasOwn(richItem, "textBoxShadowColor") && (out2.shadowColor = richItem.textBoxShadowColor);
+ hasOwn(richItem, "textBoxShadowBlur") && (out2.shadowBlur = richItem.textBoxShadowBlur);
+ hasOwn(richItem, "textBoxShadowOffsetX") && (out2.shadowOffsetX = richItem.textBoxShadowOffsetX);
+ hasOwn(richItem, "textBoxShadowOffsetY") && (out2.shadowOffsetY = richItem.textBoxShadowOffsetY);
+}
+function convertToEC4StyleForCustomSerise(itemStl, txStl, txCfg) {
+ var out2 = itemStl;
+ out2.textPosition = out2.textPosition || txCfg.position || "inside";
+ txCfg.offset != null && (out2.textOffset = txCfg.offset);
+ txCfg.rotation != null && (out2.textRotation = txCfg.rotation);
+ txCfg.distance != null && (out2.textDistance = txCfg.distance);
+ var isInside = out2.textPosition.indexOf("inside") >= 0;
+ var hostFill = itemStl.fill || "#000";
+ convertToEC4RichItem(out2, txStl);
+ var textFillNotSet = out2.textFill == null;
+ if (isInside) {
+ if (textFillNotSet) {
+ out2.textFill = txCfg.insideFill || "#fff";
+ !out2.textStroke && txCfg.insideStroke && (out2.textStroke = txCfg.insideStroke);
+ !out2.textStroke && (out2.textStroke = hostFill);
+ out2.textStrokeWidth == null && (out2.textStrokeWidth = 2);
+ }
+ } else {
+ if (textFillNotSet) {
+ out2.textFill = itemStl.fill || txCfg.outsideFill || "#000";
+ }
+ !out2.textStroke && txCfg.outsideStroke && (out2.textStroke = txCfg.outsideStroke);
+ }
+ out2.text = txStl.text;
+ out2.rich = txStl.rich;
+ each(txStl.rich, function(richItem) {
+ convertToEC4RichItem(richItem, richItem);
+ });
+ return out2;
+}
+function convertToEC4RichItem(out2, richItem) {
+ if (!richItem) {
+ return;
+ }
+ hasOwn(richItem, "fill") && (out2.textFill = richItem.fill);
+ hasOwn(richItem, "stroke") && (out2.textStroke = richItem.fill);
+ hasOwn(richItem, "lineWidth") && (out2.textStrokeWidth = richItem.lineWidth);
+ hasOwn(richItem, "font") && (out2.font = richItem.font);
+ hasOwn(richItem, "fontStyle") && (out2.fontStyle = richItem.fontStyle);
+ hasOwn(richItem, "fontWeight") && (out2.fontWeight = richItem.fontWeight);
+ hasOwn(richItem, "fontSize") && (out2.fontSize = richItem.fontSize);
+ hasOwn(richItem, "fontFamily") && (out2.fontFamily = richItem.fontFamily);
+ hasOwn(richItem, "align") && (out2.textAlign = richItem.align);
+ hasOwn(richItem, "verticalAlign") && (out2.textVerticalAlign = richItem.verticalAlign);
+ hasOwn(richItem, "lineHeight") && (out2.textLineHeight = richItem.lineHeight);
+ hasOwn(richItem, "width") && (out2.textWidth = richItem.width);
+ hasOwn(richItem, "height") && (out2.textHeight = richItem.height);
+ hasOwn(richItem, "backgroundColor") && (out2.textBackgroundColor = richItem.backgroundColor);
+ hasOwn(richItem, "padding") && (out2.textPadding = richItem.padding);
+ hasOwn(richItem, "borderColor") && (out2.textBorderColor = richItem.borderColor);
+ hasOwn(richItem, "borderWidth") && (out2.textBorderWidth = richItem.borderWidth);
+ hasOwn(richItem, "borderRadius") && (out2.textBorderRadius = richItem.borderRadius);
+ hasOwn(richItem, "shadowColor") && (out2.textBoxShadowColor = richItem.shadowColor);
+ hasOwn(richItem, "shadowBlur") && (out2.textBoxShadowBlur = richItem.shadowBlur);
+ hasOwn(richItem, "shadowOffsetX") && (out2.textBoxShadowOffsetX = richItem.shadowOffsetX);
+ hasOwn(richItem, "shadowOffsetY") && (out2.textBoxShadowOffsetY = richItem.shadowOffsetY);
+ hasOwn(richItem, "textShadowColor") && (out2.textShadowColor = richItem.textShadowColor);
+ hasOwn(richItem, "textShadowBlur") && (out2.textShadowBlur = richItem.textShadowBlur);
+ hasOwn(richItem, "textShadowOffsetX") && (out2.textShadowOffsetX = richItem.textShadowOffsetX);
+ hasOwn(richItem, "textShadowOffsetY") && (out2.textShadowOffsetY = richItem.textShadowOffsetY);
+}
+function warnDeprecated(deprecated, insteadApproach) {
+ if (true) {
+ var key = deprecated + "^_^" + insteadApproach;
+ if (!deprecatedLogs[key]) {
+ console.warn('[ECharts] DEPRECATED: "' + deprecated + '" has been deprecated. ' + insteadApproach);
+ deprecatedLogs[key] = true;
+ }
+ }
+}
+
+// node_modules/echarts/lib/animation/customGraphicTransition.js
+var LEGACY_TRANSFORM_PROPS_MAP = {
+ position: ["x", "y"],
+ scale: ["scaleX", "scaleY"],
+ origin: ["originX", "originY"]
+};
+var LEGACY_TRANSFORM_PROPS = keys(LEGACY_TRANSFORM_PROPS_MAP);
+var TRANSFORM_PROPS_MAP = reduce(TRANSFORMABLE_PROPS, function(obj, key) {
+ obj[key] = 1;
+ return obj;
+}, {});
+var transformPropNamesStr = TRANSFORMABLE_PROPS.join(", ");
+var ELEMENT_ANIMATABLE_PROPS = ["", "style", "shape", "extra"];
+var transitionInnerStore = makeInner();
+function getElementAnimationConfig(animationType, el, elOption, parentModel, dataIndex) {
+ var animationProp = animationType + "Animation";
+ var config = getAnimationConfig(animationType, parentModel, dataIndex) || {};
+ var userDuring = transitionInnerStore(el).userDuring;
+ if (config.duration > 0) {
+ config.during = userDuring ? bind(duringCall, {
+ el,
+ userDuring
+ }) : null;
+ config.setToFinal = true;
+ config.scope = animationType;
+ }
+ extend(config, elOption[animationProp]);
+ return config;
+}
+function applyUpdateTransition(el, elOption, animatableModel, opts) {
+ opts = opts || {};
+ var dataIndex = opts.dataIndex, isInit = opts.isInit, clearStyle = opts.clearStyle;
+ var hasAnimation = animatableModel.isAnimationEnabled();
+ var store = transitionInnerStore(el);
+ var styleOpt = elOption.style;
+ store.userDuring = elOption.during;
+ var transFromProps = {};
+ var propsToSet = {};
+ prepareTransformAllPropsFinal(el, elOption, propsToSet);
+ prepareShapeOrExtraAllPropsFinal("shape", elOption, propsToSet);
+ prepareShapeOrExtraAllPropsFinal("extra", elOption, propsToSet);
+ if (!isInit && hasAnimation) {
+ prepareTransformTransitionFrom(el, elOption, transFromProps);
+ prepareShapeOrExtraTransitionFrom("shape", el, elOption, transFromProps);
+ prepareShapeOrExtraTransitionFrom("extra", el, elOption, transFromProps);
+ prepareStyleTransitionFrom(el, elOption, styleOpt, transFromProps);
+ }
+ propsToSet.style = styleOpt;
+ applyPropsDirectly(el, propsToSet, clearStyle);
+ applyMiscProps(el, elOption);
+ if (hasAnimation) {
+ if (isInit) {
+ var enterFromProps_1 = {};
+ each(ELEMENT_ANIMATABLE_PROPS, function(propName) {
+ var prop = propName ? elOption[propName] : elOption;
+ if (prop && prop.enterFrom) {
+ if (propName) {
+ enterFromProps_1[propName] = enterFromProps_1[propName] || {};
+ }
+ extend(propName ? enterFromProps_1[propName] : enterFromProps_1, prop.enterFrom);
+ }
+ });
+ var config = getElementAnimationConfig("enter", el, elOption, animatableModel, dataIndex);
+ if (config.duration > 0) {
+ el.animateFrom(enterFromProps_1, config);
+ }
+ } else {
+ applyPropsTransition(el, elOption, dataIndex || 0, animatableModel, transFromProps);
+ }
+ }
+ updateLeaveTo(el, elOption);
+ styleOpt ? el.dirty() : el.markRedraw();
+}
+function updateLeaveTo(el, elOption) {
+ var leaveToProps = transitionInnerStore(el).leaveToProps;
+ for (var i = 0; i < ELEMENT_ANIMATABLE_PROPS.length; i++) {
+ var propName = ELEMENT_ANIMATABLE_PROPS[i];
+ var prop = propName ? elOption[propName] : elOption;
+ if (prop && prop.leaveTo) {
+ if (!leaveToProps) {
+ leaveToProps = transitionInnerStore(el).leaveToProps = {};
+ }
+ if (propName) {
+ leaveToProps[propName] = leaveToProps[propName] || {};
+ }
+ extend(propName ? leaveToProps[propName] : leaveToProps, prop.leaveTo);
+ }
+ }
+}
+function applyLeaveTransition(el, elOption, animatableModel, onRemove) {
+ if (el) {
+ var parent_1 = el.parent;
+ var leaveToProps = transitionInnerStore(el).leaveToProps;
+ if (leaveToProps) {
+ var config = getElementAnimationConfig("update", el, elOption, animatableModel, 0);
+ config.done = function() {
+ parent_1.remove(el);
+ onRemove && onRemove();
+ };
+ el.animateTo(leaveToProps, config);
+ } else {
+ parent_1.remove(el);
+ onRemove && onRemove();
+ }
+ }
+}
+function isTransitionAll(transition) {
+ return transition === "all";
+}
+function applyPropsDirectly(el, allPropsFinal, clearStyle) {
+ var styleOpt = allPropsFinal.style;
+ if (!el.isGroup && styleOpt) {
+ if (clearStyle) {
+ el.useStyle({});
+ var animators = el.animators;
+ for (var i = 0; i < animators.length; i++) {
+ var animator = animators[i];
+ if (animator.targetName === "style") {
+ animator.changeTarget(el.style);
+ }
+ }
+ }
+ el.setStyle(styleOpt);
+ }
+ if (allPropsFinal) {
+ allPropsFinal.style = null;
+ allPropsFinal && el.attr(allPropsFinal);
+ allPropsFinal.style = styleOpt;
+ }
+}
+function applyPropsTransition(el, elOption, dataIndex, model, transFromProps) {
+ if (transFromProps) {
+ var config = getElementAnimationConfig("update", el, elOption, model, dataIndex);
+ if (config.duration > 0) {
+ el.animateFrom(transFromProps, config);
+ }
+ }
+}
+function applyMiscProps(el, elOption) {
+ hasOwn(elOption, "silent") && (el.silent = elOption.silent);
+ hasOwn(elOption, "ignore") && (el.ignore = elOption.ignore);
+ if (el instanceof Displayable_default) {
+ hasOwn(elOption, "invisible") && (el.invisible = elOption.invisible);
+ }
+ if (el instanceof Path_default) {
+ hasOwn(elOption, "autoBatch") && (el.autoBatch = elOption.autoBatch);
+ }
+}
+var tmpDuringScope = {};
+var transitionDuringAPI = {
+ setTransform: function(key, val) {
+ if (true) {
+ assert(hasOwn(TRANSFORM_PROPS_MAP, key), "Only " + transformPropNamesStr + " available in `setTransform`.");
+ }
+ tmpDuringScope.el[key] = val;
+ return this;
+ },
+ getTransform: function(key) {
+ if (true) {
+ assert(hasOwn(TRANSFORM_PROPS_MAP, key), "Only " + transformPropNamesStr + " available in `getTransform`.");
+ }
+ return tmpDuringScope.el[key];
+ },
+ setShape: function(key, val) {
+ if (true) {
+ assertNotReserved(key);
+ }
+ var el = tmpDuringScope.el;
+ var shape = el.shape || (el.shape = {});
+ shape[key] = val;
+ el.dirtyShape && el.dirtyShape();
+ return this;
+ },
+ getShape: function(key) {
+ if (true) {
+ assertNotReserved(key);
+ }
+ var shape = tmpDuringScope.el.shape;
+ if (shape) {
+ return shape[key];
+ }
+ },
+ setStyle: function(key, val) {
+ if (true) {
+ assertNotReserved(key);
+ }
+ var el = tmpDuringScope.el;
+ var style = el.style;
+ if (style) {
+ if (true) {
+ if (eqNaN(val)) {
+ warn("style." + key + " must not be assigned with NaN.");
+ }
+ }
+ style[key] = val;
+ el.dirtyStyle && el.dirtyStyle();
+ }
+ return this;
+ },
+ getStyle: function(key) {
+ if (true) {
+ assertNotReserved(key);
+ }
+ var style = tmpDuringScope.el.style;
+ if (style) {
+ return style[key];
+ }
+ },
+ setExtra: function(key, val) {
+ if (true) {
+ assertNotReserved(key);
+ }
+ var extra = tmpDuringScope.el.extra || (tmpDuringScope.el.extra = {});
+ extra[key] = val;
+ return this;
+ },
+ getExtra: function(key) {
+ if (true) {
+ assertNotReserved(key);
+ }
+ var extra = tmpDuringScope.el.extra;
+ if (extra) {
+ return extra[key];
+ }
+ }
+};
+function assertNotReserved(key) {
+ if (true) {
+ if (key === "transition" || key === "enterFrom" || key === "leaveTo") {
+ throw new Error('key must not be "' + key + '"');
+ }
+ }
+}
+function duringCall() {
+ var scope = this;
+ var el = scope.el;
+ if (!el) {
+ return;
+ }
+ var latestUserDuring = transitionInnerStore(el).userDuring;
+ var scopeUserDuring = scope.userDuring;
+ if (latestUserDuring !== scopeUserDuring) {
+ scope.el = scope.userDuring = null;
+ return;
+ }
+ tmpDuringScope.el = el;
+ scopeUserDuring(transitionDuringAPI);
+}
+function prepareShapeOrExtraTransitionFrom(mainAttr, fromEl, elOption, transFromProps) {
+ var attrOpt = elOption[mainAttr];
+ if (!attrOpt) {
+ return;
+ }
+ var elPropsInAttr = fromEl[mainAttr];
+ var transFromPropsInAttr;
+ if (elPropsInAttr) {
+ var transition = elOption.transition;
+ var attrTransition = attrOpt.transition;
+ if (attrTransition) {
+ !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});
+ if (isTransitionAll(attrTransition)) {
+ extend(transFromPropsInAttr, elPropsInAttr);
+ } else {
+ var transitionKeys = normalizeToArray(attrTransition);
+ for (var i = 0; i < transitionKeys.length; i++) {
+ var key = transitionKeys[i];
+ var elVal = elPropsInAttr[key];
+ transFromPropsInAttr[key] = elVal;
+ }
+ }
+ } else if (isTransitionAll(transition) || indexOf(transition, mainAttr) >= 0) {
+ !transFromPropsInAttr && (transFromPropsInAttr = transFromProps[mainAttr] = {});
+ var elPropsInAttrKeys = keys(elPropsInAttr);
+ for (var i = 0; i < elPropsInAttrKeys.length; i++) {
+ var key = elPropsInAttrKeys[i];
+ var elVal = elPropsInAttr[key];
+ if (isNonStyleTransitionEnabled(attrOpt[key], elVal)) {
+ transFromPropsInAttr[key] = elVal;
+ }
+ }
+ }
+ }
+}
+function prepareShapeOrExtraAllPropsFinal(mainAttr, elOption, allProps) {
+ var attrOpt = elOption[mainAttr];
+ if (!attrOpt) {
+ return;
+ }
+ var allPropsInAttr = allProps[mainAttr] = {};
+ var keysInAttr = keys(attrOpt);
+ for (var i = 0; i < keysInAttr.length; i++) {
+ var key = keysInAttr[i];
+ allPropsInAttr[key] = cloneValue(attrOpt[key]);
+ }
+}
+function prepareTransformTransitionFrom(el, elOption, transFromProps) {
+ var transition = elOption.transition;
+ var transitionKeys = isTransitionAll(transition) ? TRANSFORMABLE_PROPS : normalizeToArray(transition || []);
+ for (var i = 0; i < transitionKeys.length; i++) {
+ var key = transitionKeys[i];
+ if (key === "style" || key === "shape" || key === "extra") {
+ continue;
+ }
+ var elVal = el[key];
+ if (true) {
+ checkTransformPropRefer(key, "el.transition");
+ }
+ transFromProps[key] = elVal;
+ }
+}
+function prepareTransformAllPropsFinal(el, elOption, allProps) {
+ for (var i = 0; i < LEGACY_TRANSFORM_PROPS.length; i++) {
+ var legacyName = LEGACY_TRANSFORM_PROPS[i];
+ var xyName = LEGACY_TRANSFORM_PROPS_MAP[legacyName];
+ var legacyArr = elOption[legacyName];
+ if (legacyArr) {
+ allProps[xyName[0]] = legacyArr[0];
+ allProps[xyName[1]] = legacyArr[1];
+ }
+ }
+ for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {
+ var key = TRANSFORMABLE_PROPS[i];
+ if (elOption[key] != null) {
+ allProps[key] = elOption[key];
+ }
+ }
+}
+function prepareStyleTransitionFrom(fromEl, elOption, styleOpt, transFromProps) {
+ if (!styleOpt) {
+ return;
+ }
+ var fromElStyle = fromEl.style;
+ var transFromStyleProps;
+ if (fromElStyle) {
+ var styleTransition = styleOpt.transition;
+ var elTransition = elOption.transition;
+ if (styleTransition && !isTransitionAll(styleTransition)) {
+ var transitionKeys = normalizeToArray(styleTransition);
+ !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});
+ for (var i = 0; i < transitionKeys.length; i++) {
+ var key = transitionKeys[i];
+ var elVal = fromElStyle[key];
+ transFromStyleProps[key] = elVal;
+ }
+ } else if (fromEl.getAnimationStyleProps && (isTransitionAll(elTransition) || isTransitionAll(styleTransition) || indexOf(elTransition, "style") >= 0)) {
+ var animationProps = fromEl.getAnimationStyleProps();
+ var animationStyleProps = animationProps ? animationProps.style : null;
+ if (animationStyleProps) {
+ !transFromStyleProps && (transFromStyleProps = transFromProps.style = {});
+ var styleKeys = keys(styleOpt);
+ for (var i = 0; i < styleKeys.length; i++) {
+ var key = styleKeys[i];
+ if (animationStyleProps[key]) {
+ var elVal = fromElStyle[key];
+ transFromStyleProps[key] = elVal;
+ }
+ }
+ }
+ }
+ }
+}
+function isNonStyleTransitionEnabled(optVal, elVal) {
+ return !isArrayLike(optVal) ? optVal != null && isFinite(optVal) : optVal !== elVal;
+}
+var checkTransformPropRefer;
+if (true) {
+ checkTransformPropRefer = function(key, usedIn) {
+ if (!hasOwn(TRANSFORM_PROPS_MAP, key)) {
+ warn("Prop `" + key + "` is not a permitted in `" + usedIn + "`. Only `" + keys(TRANSFORM_PROPS_MAP).join("`, `") + "` are permitted.");
+ }
+ };
+}
+
+// node_modules/echarts/lib/animation/customGraphicKeyframeAnimation.js
+var getStateToRestore = makeInner();
+var KEYFRAME_EXCLUDE_KEYS = ["percent", "easing", "shape", "style", "extra"];
+function stopPreviousKeyframeAnimationAndRestore(el) {
+ el.stopAnimation("keyframe");
+ el.attr(getStateToRestore(el));
+}
+function applyKeyframeAnimation(el, animationOpts, animatableModel) {
+ if (!animatableModel.isAnimationEnabled() || !animationOpts) {
+ return;
+ }
+ if (isArray(animationOpts)) {
+ each(animationOpts, function(singleAnimationOpts) {
+ applyKeyframeAnimation(el, singleAnimationOpts, animatableModel);
+ });
+ return;
+ }
+ var keyframes = animationOpts.keyframes;
+ var duration = animationOpts.duration;
+ if (animatableModel && duration == null) {
+ var config = getAnimationConfig("enter", animatableModel, 0);
+ duration = config && config.duration;
+ }
+ if (!keyframes || !duration) {
+ return;
+ }
+ var stateToRestore = getStateToRestore(el);
+ each(ELEMENT_ANIMATABLE_PROPS, function(targetPropName) {
+ if (targetPropName && !el[targetPropName]) {
+ return;
+ }
+ var animator;
+ var endFrameIsSet = false;
+ keyframes.sort(function(a, b) {
+ return a.percent - b.percent;
+ });
+ each(keyframes, function(kf) {
+ var animators = el.animators;
+ var kfValues = targetPropName ? kf[targetPropName] : kf;
+ if (true) {
+ if (kf.percent >= 1) {
+ endFrameIsSet = true;
+ }
+ }
+ if (!kfValues) {
+ return;
+ }
+ var propKeys = keys(kfValues);
+ if (!targetPropName) {
+ propKeys = filter(propKeys, function(key) {
+ return indexOf(KEYFRAME_EXCLUDE_KEYS, key) < 0;
+ });
+ }
+ if (!propKeys.length) {
+ return;
+ }
+ if (!animator) {
+ animator = el.animate(targetPropName, animationOpts.loop, true);
+ animator.scope = "keyframe";
+ }
+ for (var i = 0; i < animators.length; i++) {
+ if (animators[i] !== animator && animators[i].targetName === animator.targetName) {
+ animators[i].stopTracks(propKeys);
+ }
+ }
+ targetPropName && (stateToRestore[targetPropName] = stateToRestore[targetPropName] || {});
+ var savedTarget = targetPropName ? stateToRestore[targetPropName] : stateToRestore;
+ each(propKeys, function(key) {
+ savedTarget[key] = ((targetPropName ? el[targetPropName] : el) || {})[key];
+ });
+ animator.whenWithKeys(duration * kf.percent, kfValues, propKeys, kf.easing);
+ });
+ if (!animator) {
+ return;
+ }
+ if (true) {
+ if (!endFrameIsSet) {
+ warn("End frame with percent: 1 is missing in the keyframeAnimation.", true);
+ }
+ }
+ animator.delay(animationOpts.delay || 0).duration(duration).start(animationOpts.easing);
+ });
+}
+
+// node_modules/echarts/lib/chart/custom/CustomView.js
+var EMPHASIS = "emphasis";
+var NORMAL = "normal";
+var BLUR = "blur";
+var SELECT = "select";
+var STATES = [NORMAL, EMPHASIS, BLUR, SELECT];
+var PATH_ITEM_STYLE = {
+ normal: ["itemStyle"],
+ emphasis: [EMPHASIS, "itemStyle"],
+ blur: [BLUR, "itemStyle"],
+ select: [SELECT, "itemStyle"]
+};
+var PATH_LABEL = {
+ normal: ["label"],
+ emphasis: [EMPHASIS, "label"],
+ blur: [BLUR, "label"],
+ select: [SELECT, "label"]
+};
+var DEFAULT_TRANSITION = ["x", "y"];
+var GROUP_DIFF_PREFIX = "e\0\0";
+var attachedTxInfoTmp = {
+ normal: {},
+ emphasis: {},
+ blur: {},
+ select: {}
+};
+var prepareCustoms = {
+ cartesian2d: cartesianPrepareCustom,
+ geo: geoPrepareCustom,
+ single: singlePrepareCustom,
+ polar: polarPrepareCustom,
+ calendar: calendarPrepareCustom
+};
+function isPath2(el) {
+ return el instanceof Path_default;
+}
+function isDisplayable(el) {
+ return el instanceof Displayable_default;
+}
+function copyElement(sourceEl, targetEl) {
+ targetEl.copyTransform(sourceEl);
+ if (isDisplayable(targetEl) && isDisplayable(sourceEl)) {
+ targetEl.setStyle(sourceEl.style);
+ targetEl.z = sourceEl.z;
+ targetEl.z2 = sourceEl.z2;
+ targetEl.zlevel = sourceEl.zlevel;
+ targetEl.invisible = sourceEl.invisible;
+ targetEl.ignore = sourceEl.ignore;
+ if (isPath2(targetEl) && isPath2(sourceEl)) {
+ targetEl.setShape(sourceEl.shape);
+ }
+ }
+}
+var CustomChartView = function(_super) {
+ __extends(CustomChartView2, _super);
+ function CustomChartView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CustomChartView2.type;
+ return _this;
+ }
+ CustomChartView2.prototype.render = function(customSeries, ecModel, api, payload) {
+ this._progressiveEls = null;
+ var oldData = this._data;
+ var data = customSeries.getData();
+ var group = this.group;
+ var renderItem = makeRenderItem(customSeries, data, ecModel, api);
+ if (!oldData) {
+ group.removeAll();
+ }
+ data.diff(oldData).add(function(newIdx) {
+ createOrUpdateItem(api, null, newIdx, renderItem(newIdx, payload), customSeries, group, data);
+ }).remove(function(oldIdx) {
+ var el = oldData.getItemGraphicEl(oldIdx);
+ el && applyLeaveTransition(el, customInnerStore(el).option, customSeries);
+ }).update(function(newIdx, oldIdx) {
+ var oldEl = oldData.getItemGraphicEl(oldIdx);
+ createOrUpdateItem(api, oldEl, newIdx, renderItem(newIdx, payload), customSeries, group, data);
+ }).execute();
+ var clipPath = customSeries.get("clip", true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;
+ if (clipPath) {
+ group.setClipPath(clipPath);
+ } else {
+ group.removeClipPath();
+ }
+ this._data = data;
+ };
+ CustomChartView2.prototype.incrementalPrepareRender = function(customSeries, ecModel, api) {
+ this.group.removeAll();
+ this._data = null;
+ };
+ CustomChartView2.prototype.incrementalRender = function(params, customSeries, ecModel, api, payload) {
+ var data = customSeries.getData();
+ var renderItem = makeRenderItem(customSeries, data, ecModel, api);
+ var progressiveEls = this._progressiveEls = [];
+ function setIncrementalAndHoverLayer(el2) {
+ if (!el2.isGroup) {
+ el2.incremental = true;
+ el2.ensureState("emphasis").hoverLayer = true;
+ }
+ }
+ for (var idx = params.start; idx < params.end; idx++) {
+ var el = createOrUpdateItem(null, null, idx, renderItem(idx, payload), customSeries, this.group, data);
+ if (el) {
+ el.traverse(setIncrementalAndHoverLayer);
+ progressiveEls.push(el);
+ }
+ }
+ };
+ CustomChartView2.prototype.eachRendered = function(cb) {
+ traverseElements(this._progressiveEls || this.group, cb);
+ };
+ CustomChartView2.prototype.filterForExposedEvent = function(eventType, query, targetEl, packedEvent) {
+ var elementName = query.element;
+ if (elementName == null || targetEl.name === elementName) {
+ return true;
+ }
+ while ((targetEl = targetEl.__hostTarget || targetEl.parent) && targetEl !== this.group) {
+ if (targetEl.name === elementName) {
+ return true;
+ }
+ }
+ return false;
+ };
+ CustomChartView2.type = "custom";
+ return CustomChartView2;
+}(Chart_default);
+var CustomView_default = CustomChartView;
+function createEl(elOption) {
+ var graphicType = elOption.type;
+ var el;
+ if (graphicType === "path") {
+ var shape = elOption.shape;
+ var pathRect = shape.width != null && shape.height != null ? {
+ x: shape.x || 0,
+ y: shape.y || 0,
+ width: shape.width,
+ height: shape.height
+ } : null;
+ var pathData = getPathData(shape);
+ el = makePath(pathData, null, pathRect, shape.layout || "center");
+ customInnerStore(el).customPathData = pathData;
+ } else if (graphicType === "image") {
+ el = new Image_default({});
+ customInnerStore(el).customImagePath = elOption.style.image;
+ } else if (graphicType === "text") {
+ el = new Text_default({});
+ } else if (graphicType === "group") {
+ el = new Group_default();
+ } else if (graphicType === "compoundPath") {
+ throw new Error('"compoundPath" is not supported yet.');
+ } else {
+ var Clz = getShapeClass(graphicType);
+ if (!Clz) {
+ var errMsg = "";
+ if (true) {
+ errMsg = 'graphic type "' + graphicType + '" can not be found.';
+ }
+ throwError(errMsg);
+ }
+ el = new Clz();
+ }
+ customInnerStore(el).customGraphicType = graphicType;
+ el.name = elOption.name;
+ el.z2EmphasisLift = 1;
+ el.z2SelectLift = 1;
+ return el;
+}
+function updateElNormal(api, el, dataIndex, elOption, attachedTxInfo, seriesModel, isInit) {
+ stopPreviousKeyframeAnimationAndRestore(el);
+ var txCfgOpt = attachedTxInfo && attachedTxInfo.normal.cfg;
+ if (txCfgOpt) {
+ el.setTextConfig(txCfgOpt);
+ }
+ if (elOption && elOption.transition == null) {
+ elOption.transition = DEFAULT_TRANSITION;
+ }
+ var styleOpt = elOption && elOption.style;
+ if (styleOpt) {
+ if (el.type === "text") {
+ var textOptionStyle = styleOpt;
+ hasOwn(textOptionStyle, "textFill") && (textOptionStyle.fill = textOptionStyle.textFill);
+ hasOwn(textOptionStyle, "textStroke") && (textOptionStyle.stroke = textOptionStyle.textStroke);
+ }
+ var decalPattern = void 0;
+ var decalObj = isPath2(el) ? styleOpt.decal : null;
+ if (api && decalObj) {
+ decalObj.dirty = true;
+ decalPattern = createOrUpdatePatternFromDecal(decalObj, api);
+ }
+ styleOpt.__decalPattern = decalPattern;
+ }
+ if (isDisplayable(el)) {
+ if (styleOpt) {
+ var decalPattern = styleOpt.__decalPattern;
+ if (decalPattern) {
+ styleOpt.decal = decalPattern;
+ }
+ }
+ }
+ applyUpdateTransition(el, elOption, seriesModel, {
+ dataIndex,
+ isInit,
+ clearStyle: true
+ });
+ applyKeyframeAnimation(el, elOption.keyframeAnimation, seriesModel);
+}
+function updateElOnState(state, el, elStateOpt, styleOpt, attachedTxInfo) {
+ var elDisplayable = el.isGroup ? null : el;
+ var txCfgOpt = attachedTxInfo && attachedTxInfo[state].cfg;
+ if (elDisplayable) {
+ var stateObj = elDisplayable.ensureState(state);
+ if (styleOpt === false) {
+ var existingEmphasisState = elDisplayable.getState(state);
+ if (existingEmphasisState) {
+ existingEmphasisState.style = null;
+ }
+ } else {
+ stateObj.style = styleOpt || null;
+ }
+ if (txCfgOpt) {
+ stateObj.textConfig = txCfgOpt;
+ }
+ setDefaultStateProxy(elDisplayable);
+ }
+}
+function updateZ2(el, elOption, seriesModel) {
+ if (el.isGroup) {
+ return;
+ }
+ var elDisplayable = el;
+ var currentZ = seriesModel.currentZ;
+ var currentZLevel = seriesModel.currentZLevel;
+ elDisplayable.z = currentZ;
+ elDisplayable.zlevel = currentZLevel;
+ var optZ2 = elOption.z2;
+ optZ2 != null && (elDisplayable.z2 = optZ2 || 0);
+ for (var i = 0; i < STATES.length; i++) {
+ updateZForEachState(elDisplayable, elOption, STATES[i]);
+ }
+}
+function updateZForEachState(elDisplayable, elOption, state) {
+ var isNormal = state === NORMAL;
+ var elStateOpt = isNormal ? elOption : retrieveStateOption(elOption, state);
+ var optZ2 = elStateOpt ? elStateOpt.z2 : null;
+ var stateObj;
+ if (optZ2 != null) {
+ stateObj = isNormal ? elDisplayable : elDisplayable.ensureState(state);
+ stateObj.z2 = optZ2 || 0;
+ }
+}
+function makeRenderItem(customSeries, data, ecModel, api) {
+ var renderItem = customSeries.get("renderItem");
+ var coordSys = customSeries.coordinateSystem;
+ var prepareResult2 = {};
+ if (coordSys) {
+ if (true) {
+ assert(renderItem, "series.render is required.");
+ assert(coordSys.prepareCustoms || prepareCustoms[coordSys.type], "This coordSys does not support custom series.");
+ }
+ prepareResult2 = coordSys.prepareCustoms ? coordSys.prepareCustoms(coordSys) : prepareCustoms[coordSys.type](coordSys);
+ }
+ var userAPI = defaults({
+ getWidth: api.getWidth,
+ getHeight: api.getHeight,
+ getZr: api.getZr,
+ getDevicePixelRatio: api.getDevicePixelRatio,
+ value,
+ style,
+ ordinalRawValue,
+ styleEmphasis,
+ visual,
+ barLayout,
+ currentSeriesIndices,
+ font
+ }, prepareResult2.api || {});
+ var userParams = {
+ context: {},
+ seriesId: customSeries.id,
+ seriesName: customSeries.name,
+ seriesIndex: customSeries.seriesIndex,
+ coordSys: prepareResult2.coordSys,
+ dataInsideLength: data.count(),
+ encode: wrapEncodeDef(customSeries.getData())
+ };
+ var currDataIndexInside;
+ var currItemModel;
+ var currItemStyleModels = {};
+ var currLabelModels = {};
+ var seriesItemStyleModels = {};
+ var seriesLabelModels = {};
+ for (var i = 0; i < STATES.length; i++) {
+ var stateName = STATES[i];
+ seriesItemStyleModels[stateName] = customSeries.getModel(PATH_ITEM_STYLE[stateName]);
+ seriesLabelModels[stateName] = customSeries.getModel(PATH_LABEL[stateName]);
+ }
+ function getItemModel2(dataIndexInside) {
+ return dataIndexInside === currDataIndexInside ? currItemModel || (currItemModel = data.getItemModel(dataIndexInside)) : data.getItemModel(dataIndexInside);
+ }
+ function getItemStyleModel(dataIndexInside, state) {
+ return !data.hasItemOption ? seriesItemStyleModels[state] : dataIndexInside === currDataIndexInside ? currItemStyleModels[state] || (currItemStyleModels[state] = getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state])) : getItemModel2(dataIndexInside).getModel(PATH_ITEM_STYLE[state]);
+ }
+ function getLabelModel(dataIndexInside, state) {
+ return !data.hasItemOption ? seriesLabelModels[state] : dataIndexInside === currDataIndexInside ? currLabelModels[state] || (currLabelModels[state] = getItemModel2(dataIndexInside).getModel(PATH_LABEL[state])) : getItemModel2(dataIndexInside).getModel(PATH_LABEL[state]);
+ }
+ return function(dataIndexInside, payload) {
+ currDataIndexInside = dataIndexInside;
+ currItemModel = null;
+ currItemStyleModels = {};
+ currLabelModels = {};
+ return renderItem && renderItem(defaults({
+ dataIndexInside,
+ dataIndex: data.getRawIndex(dataIndexInside),
+ actionType: payload ? payload.type : null
+ }, userParams), userAPI);
+ };
+ function value(dim, dataIndexInside) {
+ dataIndexInside == null && (dataIndexInside = currDataIndexInside);
+ return data.getStore().get(data.getDimensionIndex(dim || 0), dataIndexInside);
+ }
+ function ordinalRawValue(dim, dataIndexInside) {
+ dataIndexInside == null && (dataIndexInside = currDataIndexInside);
+ dim = dim || 0;
+ var dimInfo = data.getDimensionInfo(dim);
+ if (!dimInfo) {
+ var dimIndex = data.getDimensionIndex(dim);
+ return dimIndex >= 0 ? data.getStore().get(dimIndex, dataIndexInside) : void 0;
+ }
+ var val = data.get(dimInfo.name, dataIndexInside);
+ var ordinalMeta = dimInfo && dimInfo.ordinalMeta;
+ return ordinalMeta ? ordinalMeta.categories[val] : val;
+ }
+ function style(userProps, dataIndexInside) {
+ if (true) {
+ warnDeprecated("api.style", "Please write literal style directly instead.");
+ }
+ dataIndexInside == null && (dataIndexInside = currDataIndexInside);
+ var style2 = data.getItemVisual(dataIndexInside, "style");
+ var visualColor = style2 && style2.fill;
+ var opacity = style2 && style2.opacity;
+ var itemStyle = getItemStyleModel(dataIndexInside, NORMAL).getItemStyle();
+ visualColor != null && (itemStyle.fill = visualColor);
+ opacity != null && (itemStyle.opacity = opacity);
+ var opt = {
+ inheritColor: isString(visualColor) ? visualColor : "#000"
+ };
+ var labelModel = getLabelModel(dataIndexInside, NORMAL);
+ var textStyle = createTextStyle(labelModel, null, opt, false, true);
+ textStyle.text = labelModel.getShallow("show") ? retrieve2(customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;
+ var textConfig = createTextConfig(labelModel, opt, false);
+ preFetchFromExtra(userProps, itemStyle);
+ itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);
+ userProps && applyUserPropsAfter(itemStyle, userProps);
+ itemStyle.legacy = true;
+ return itemStyle;
+ }
+ function styleEmphasis(userProps, dataIndexInside) {
+ if (true) {
+ warnDeprecated("api.styleEmphasis", "Please write literal style directly instead.");
+ }
+ dataIndexInside == null && (dataIndexInside = currDataIndexInside);
+ var itemStyle = getItemStyleModel(dataIndexInside, EMPHASIS).getItemStyle();
+ var labelModel = getLabelModel(dataIndexInside, EMPHASIS);
+ var textStyle = createTextStyle(labelModel, null, null, true, true);
+ textStyle.text = labelModel.getShallow("show") ? retrieve3(customSeries.getFormattedLabel(dataIndexInside, EMPHASIS), customSeries.getFormattedLabel(dataIndexInside, NORMAL), getDefaultLabel(data, dataIndexInside)) : null;
+ var textConfig = createTextConfig(labelModel, null, true);
+ preFetchFromExtra(userProps, itemStyle);
+ itemStyle = convertToEC4StyleForCustomSerise(itemStyle, textStyle, textConfig);
+ userProps && applyUserPropsAfter(itemStyle, userProps);
+ itemStyle.legacy = true;
+ return itemStyle;
+ }
+ function applyUserPropsAfter(itemStyle, extra) {
+ for (var key in extra) {
+ if (hasOwn(extra, key)) {
+ itemStyle[key] = extra[key];
+ }
+ }
+ }
+ function preFetchFromExtra(extra, itemStyle) {
+ if (extra) {
+ extra.textFill && (itemStyle.textFill = extra.textFill);
+ extra.textPosition && (itemStyle.textPosition = extra.textPosition);
+ }
+ }
+ function visual(visualType, dataIndexInside) {
+ dataIndexInside == null && (dataIndexInside = currDataIndexInside);
+ if (hasOwn(STYLE_VISUAL_TYPE, visualType)) {
+ var style_1 = data.getItemVisual(dataIndexInside, "style");
+ return style_1 ? style_1[STYLE_VISUAL_TYPE[visualType]] : null;
+ }
+ if (hasOwn(NON_STYLE_VISUAL_PROPS, visualType)) {
+ return data.getItemVisual(dataIndexInside, visualType);
+ }
+ }
+ function barLayout(opt) {
+ if (coordSys.type === "cartesian2d") {
+ var baseAxis = coordSys.getBaseAxis();
+ return getLayoutOnAxis(defaults({
+ axis: baseAxis
+ }, opt));
+ }
+ }
+ function currentSeriesIndices() {
+ return ecModel.getCurrentSeriesIndices();
+ }
+ function font(opt) {
+ return getFont(opt, ecModel);
+ }
+}
+function wrapEncodeDef(data) {
+ var encodeDef = {};
+ each(data.dimensions, function(dimName) {
+ var dimInfo = data.getDimensionInfo(dimName);
+ if (!dimInfo.isExtraCoord) {
+ var coordDim = dimInfo.coordDim;
+ var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];
+ dataDims[dimInfo.coordDimIndex] = data.getDimensionIndex(dimName);
+ }
+ });
+ return encodeDef;
+}
+function createOrUpdateItem(api, existsEl, dataIndex, elOption, seriesModel, group, data) {
+ if (!elOption) {
+ group.remove(existsEl);
+ return;
+ }
+ var el = doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group);
+ el && data.setItemGraphicEl(dataIndex, el);
+ el && toggleHoverEmphasis(el, elOption.focus, elOption.blurScope, elOption.emphasisDisabled);
+ return el;
+}
+function doCreateOrUpdateEl(api, existsEl, dataIndex, elOption, seriesModel, group) {
+ if (true) {
+ assert(elOption, "should not have an null/undefined element setting");
+ }
+ var toBeReplacedIdx = -1;
+ var oldEl = existsEl;
+ if (existsEl && doesElNeedRecreate(existsEl, elOption, seriesModel)) {
+ toBeReplacedIdx = indexOf(group.childrenRef(), existsEl);
+ existsEl = null;
+ }
+ var isInit = !existsEl;
+ var el = existsEl;
+ if (!el) {
+ el = createEl(elOption);
+ if (oldEl) {
+ copyElement(oldEl, el);
+ }
+ } else {
+ el.clearStates();
+ }
+ if (elOption.morph === false) {
+ el.disableMorphing = true;
+ } else if (el.disableMorphing) {
+ el.disableMorphing = false;
+ }
+ attachedTxInfoTmp.normal.cfg = attachedTxInfoTmp.normal.conOpt = attachedTxInfoTmp.emphasis.cfg = attachedTxInfoTmp.emphasis.conOpt = attachedTxInfoTmp.blur.cfg = attachedTxInfoTmp.blur.conOpt = attachedTxInfoTmp.select.cfg = attachedTxInfoTmp.select.conOpt = null;
+ attachedTxInfoTmp.isLegacy = false;
+ doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfoTmp);
+ doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit);
+ updateElNormal(api, el, dataIndex, elOption, attachedTxInfoTmp, seriesModel, isInit);
+ hasOwn(elOption, "info") && (customInnerStore(el).info = elOption.info);
+ for (var i = 0; i < STATES.length; i++) {
+ var stateName = STATES[i];
+ if (stateName !== NORMAL) {
+ var otherStateOpt = retrieveStateOption(elOption, stateName);
+ var otherStyleOpt = retrieveStyleOptionOnState(elOption, otherStateOpt, stateName);
+ updateElOnState(stateName, el, otherStateOpt, otherStyleOpt, attachedTxInfoTmp);
+ }
+ }
+ updateZ2(el, elOption, seriesModel);
+ if (elOption.type === "group") {
+ mergeChildren(api, el, dataIndex, elOption, seriesModel);
+ }
+ if (toBeReplacedIdx >= 0) {
+ group.replaceAt(el, toBeReplacedIdx);
+ } else {
+ group.add(el);
+ }
+ return el;
+}
+function doesElNeedRecreate(el, elOption, seriesModel) {
+ var elInner = customInnerStore(el);
+ var elOptionType = elOption.type;
+ var elOptionShape = elOption.shape;
+ var elOptionStyle = elOption.style;
+ return seriesModel.isUniversalTransitionEnabled() || elOptionType != null && elOptionType !== elInner.customGraphicType || elOptionType === "path" && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== elInner.customPathData || elOptionType === "image" && hasOwn(elOptionStyle, "image") && elOptionStyle.image !== elInner.customImagePath;
+}
+function doCreateOrUpdateClipPath(el, dataIndex, elOption, seriesModel, isInit) {
+ var clipPathOpt = elOption.clipPath;
+ if (clipPathOpt === false) {
+ if (el && el.getClipPath()) {
+ el.removeClipPath();
+ }
+ } else if (clipPathOpt) {
+ var clipPath = el.getClipPath();
+ if (clipPath && doesElNeedRecreate(clipPath, clipPathOpt, seriesModel)) {
+ clipPath = null;
+ }
+ if (!clipPath) {
+ clipPath = createEl(clipPathOpt);
+ if (true) {
+ assert(isPath2(clipPath), "Only any type of `path` can be used in `clipPath`, rather than " + clipPath.type + ".");
+ }
+ el.setClipPath(clipPath);
+ }
+ updateElNormal(null, clipPath, dataIndex, clipPathOpt, null, seriesModel, isInit);
+ }
+}
+function doCreateOrUpdateAttachedTx(el, dataIndex, elOption, seriesModel, isInit, attachedTxInfo) {
+ if (el.isGroup) {
+ return;
+ }
+ processTxInfo(elOption, null, attachedTxInfo);
+ processTxInfo(elOption, EMPHASIS, attachedTxInfo);
+ var txConOptNormal = attachedTxInfo.normal.conOpt;
+ var txConOptEmphasis = attachedTxInfo.emphasis.conOpt;
+ var txConOptBlur = attachedTxInfo.blur.conOpt;
+ var txConOptSelect = attachedTxInfo.select.conOpt;
+ if (txConOptNormal != null || txConOptEmphasis != null || txConOptSelect != null || txConOptBlur != null) {
+ var textContent = el.getTextContent();
+ if (txConOptNormal === false) {
+ textContent && el.removeTextContent();
+ } else {
+ txConOptNormal = attachedTxInfo.normal.conOpt = txConOptNormal || {
+ type: "text"
+ };
+ if (!textContent) {
+ textContent = createEl(txConOptNormal);
+ el.setTextContent(textContent);
+ } else {
+ textContent.clearStates();
+ }
+ updateElNormal(null, textContent, dataIndex, txConOptNormal, null, seriesModel, isInit);
+ var txConStlOptNormal = txConOptNormal && txConOptNormal.style;
+ for (var i = 0; i < STATES.length; i++) {
+ var stateName = STATES[i];
+ if (stateName !== NORMAL) {
+ var txConOptOtherState = attachedTxInfo[stateName].conOpt;
+ updateElOnState(stateName, textContent, txConOptOtherState, retrieveStyleOptionOnState(txConOptNormal, txConOptOtherState, stateName), null);
+ }
+ }
+ txConStlOptNormal ? textContent.dirty() : textContent.markRedraw();
+ }
+ }
+}
+function processTxInfo(elOption, state, attachedTxInfo) {
+ var stateOpt = !state ? elOption : retrieveStateOption(elOption, state);
+ var styleOpt = !state ? elOption.style : retrieveStyleOptionOnState(elOption, stateOpt, EMPHASIS);
+ var elType = elOption.type;
+ var txCfg = stateOpt ? stateOpt.textConfig : null;
+ var txConOptNormal = elOption.textContent;
+ var txConOpt = !txConOptNormal ? null : !state ? txConOptNormal : retrieveStateOption(txConOptNormal, state);
+ if (styleOpt && (attachedTxInfo.isLegacy || isEC4CompatibleStyle(styleOpt, elType, !!txCfg, !!txConOpt))) {
+ attachedTxInfo.isLegacy = true;
+ var convertResult = convertFromEC4CompatibleStyle(styleOpt, elType, !state);
+ if (!txCfg && convertResult.textConfig) {
+ txCfg = convertResult.textConfig;
+ }
+ if (!txConOpt && convertResult.textContent) {
+ txConOpt = convertResult.textContent;
+ }
+ }
+ if (!state && txConOpt) {
+ var txConOptNormal_1 = txConOpt;
+ !txConOptNormal_1.type && (txConOptNormal_1.type = "text");
+ if (true) {
+ assert(txConOptNormal_1.type === "text", 'textContent.type must be "text"');
+ }
+ }
+ var info = !state ? attachedTxInfo.normal : attachedTxInfo[state];
+ info.cfg = txCfg;
+ info.conOpt = txConOpt;
+}
+function retrieveStateOption(elOption, state) {
+ return !state ? elOption : elOption ? elOption[state] : null;
+}
+function retrieveStyleOptionOnState(stateOptionNormal, stateOption, state) {
+ var style = stateOption && stateOption.style;
+ if (style == null && state === EMPHASIS && stateOptionNormal) {
+ style = stateOptionNormal.styleEmphasis;
+ }
+ return style;
+}
+function mergeChildren(api, el, dataIndex, elOption, seriesModel) {
+ var newChildren = elOption.children;
+ var newLen = newChildren ? newChildren.length : 0;
+ var mergeChildren2 = elOption.$mergeChildren;
+ var byName = mergeChildren2 === "byName" || elOption.diffChildrenByName;
+ var notMerge = mergeChildren2 === false;
+ if (!newLen && !byName && !notMerge) {
+ return;
+ }
+ if (byName) {
+ diffGroupChildren({
+ api,
+ oldChildren: el.children() || [],
+ newChildren: newChildren || [],
+ dataIndex,
+ seriesModel,
+ group: el
+ });
+ return;
+ }
+ notMerge && el.removeAll();
+ var index = 0;
+ for (; index < newLen; index++) {
+ var newChild = newChildren[index];
+ var oldChild = el.childAt(index);
+ if (newChild) {
+ if (newChild.ignore == null) {
+ newChild.ignore = false;
+ }
+ doCreateOrUpdateEl(api, oldChild, dataIndex, newChild, seriesModel, el);
+ } else {
+ if (true) {
+ assert(oldChild, "renderItem should not return a group containing elements as null/undefined/{} if they do not exist before.");
+ }
+ oldChild.ignore = true;
+ }
+ }
+ for (var i = el.childCount() - 1; i >= index; i--) {
+ var child = el.childAt(i);
+ removeChildFromGroup(el, child, seriesModel);
+ }
+}
+function removeChildFromGroup(group, child, seriesModel) {
+ child && applyLeaveTransition(child, customInnerStore(group).option, seriesModel);
+}
+function diffGroupChildren(context) {
+ new DataDiffer_default(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();
+}
+function getKey(item, idx) {
+ var name = item && item.name;
+ return name != null ? name : GROUP_DIFF_PREFIX + idx;
+}
+function processAddUpdate(newIndex, oldIndex) {
+ var context = this.context;
+ var childOption = newIndex != null ? context.newChildren[newIndex] : null;
+ var child = oldIndex != null ? context.oldChildren[oldIndex] : null;
+ doCreateOrUpdateEl(context.api, child, context.dataIndex, childOption, context.seriesModel, context.group);
+}
+function processRemove(oldIndex) {
+ var context = this.context;
+ var child = context.oldChildren[oldIndex];
+ child && applyLeaveTransition(child, customInnerStore(child).option, context.seriesModel);
+}
+function getPathData(shape) {
+ return shape && (shape.pathData || shape.d);
+}
+function hasOwnPathData(shape) {
+ return shape && (hasOwn(shape, "pathData") || hasOwn(shape, "d"));
+}
+
+// node_modules/echarts/lib/chart/custom/install.js
+function install28(registers) {
+ registers.registerChartView(CustomView_default);
+ registers.registerSeriesModel(CustomSeries_default);
+}
+
+// node_modules/echarts/lib/component/axisPointer/BaseAxisPointer.js
+var inner11 = makeInner();
+var clone4 = clone;
+var bind2 = bind;
+var BaseAxisPointer = function() {
+ function BaseAxisPointer2() {
+ this._dragging = false;
+ this.animationThreshold = 15;
+ }
+ BaseAxisPointer2.prototype.render = function(axisModel, axisPointerModel, api, forceRender) {
+ var value = axisPointerModel.get("value");
+ var status = axisPointerModel.get("status");
+ this._axisModel = axisModel;
+ this._axisPointerModel = axisPointerModel;
+ this._api = api;
+ if (!forceRender && this._lastValue === value && this._lastStatus === status) {
+ return;
+ }
+ this._lastValue = value;
+ this._lastStatus = status;
+ var group = this._group;
+ var handle = this._handle;
+ if (!status || status === "hide") {
+ group && group.hide();
+ handle && handle.hide();
+ return;
+ }
+ group && group.show();
+ handle && handle.show();
+ var elOption = {};
+ this.makeElOption(elOption, value, axisModel, axisPointerModel, api);
+ var graphicKey = elOption.graphicKey;
+ if (graphicKey !== this._lastGraphicKey) {
+ this.clear(api);
+ }
+ this._lastGraphicKey = graphicKey;
+ var moveAnimation = this._moveAnimation = this.determineAnimation(axisModel, axisPointerModel);
+ if (!group) {
+ group = this._group = new Group_default();
+ this.createPointerEl(group, elOption, axisModel, axisPointerModel);
+ this.createLabelEl(group, elOption, axisModel, axisPointerModel);
+ api.getZr().add(group);
+ } else {
+ var doUpdateProps = curry(updateProps2, axisPointerModel, moveAnimation);
+ this.updatePointerEl(group, elOption, doUpdateProps);
+ this.updateLabelEl(group, elOption, doUpdateProps, axisPointerModel);
+ }
+ updateMandatoryProps(group, axisPointerModel, true);
+ this._renderHandle(value);
+ };
+ BaseAxisPointer2.prototype.remove = function(api) {
+ this.clear(api);
+ };
+ BaseAxisPointer2.prototype.dispose = function(api) {
+ this.clear(api);
+ };
+ BaseAxisPointer2.prototype.determineAnimation = function(axisModel, axisPointerModel) {
+ var animation = axisPointerModel.get("animation");
+ var axis = axisModel.axis;
+ var isCategoryAxis = axis.type === "category";
+ var useSnap = axisPointerModel.get("snap");
+ if (!useSnap && !isCategoryAxis) {
+ return false;
+ }
+ if (animation === "auto" || animation == null) {
+ var animationThreshold = this.animationThreshold;
+ if (isCategoryAxis && axis.getBandWidth() > animationThreshold) {
+ return true;
+ }
+ if (useSnap) {
+ var seriesDataCount = getAxisInfo(axisModel).seriesDataCount;
+ var axisExtent = axis.getExtent();
+ return Math.abs(axisExtent[0] - axisExtent[1]) / seriesDataCount > animationThreshold;
+ }
+ return false;
+ }
+ return animation === true;
+ };
+ BaseAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
+ };
+ BaseAxisPointer2.prototype.createPointerEl = function(group, elOption, axisModel, axisPointerModel) {
+ var pointerOption = elOption.pointer;
+ if (pointerOption) {
+ var pointerEl = inner11(group).pointerEl = new graphic_exports[pointerOption.type](clone4(elOption.pointer));
+ group.add(pointerEl);
+ }
+ };
+ BaseAxisPointer2.prototype.createLabelEl = function(group, elOption, axisModel, axisPointerModel) {
+ if (elOption.label) {
+ var labelEl = inner11(group).labelEl = new Text_default(clone4(elOption.label));
+ group.add(labelEl);
+ updateLabelShowHide(labelEl, axisPointerModel);
+ }
+ };
+ BaseAxisPointer2.prototype.updatePointerEl = function(group, elOption, updateProps3) {
+ var pointerEl = inner11(group).pointerEl;
+ if (pointerEl && elOption.pointer) {
+ pointerEl.setStyle(elOption.pointer.style);
+ updateProps3(pointerEl, {
+ shape: elOption.pointer.shape
+ });
+ }
+ };
+ BaseAxisPointer2.prototype.updateLabelEl = function(group, elOption, updateProps3, axisPointerModel) {
+ var labelEl = inner11(group).labelEl;
+ if (labelEl) {
+ labelEl.setStyle(elOption.label.style);
+ updateProps3(labelEl, {
+ x: elOption.label.x,
+ y: elOption.label.y
+ });
+ updateLabelShowHide(labelEl, axisPointerModel);
+ }
+ };
+ BaseAxisPointer2.prototype._renderHandle = function(value) {
+ if (this._dragging || !this.updateHandleTransform) {
+ return;
+ }
+ var axisPointerModel = this._axisPointerModel;
+ var zr = this._api.getZr();
+ var handle = this._handle;
+ var handleModel = axisPointerModel.getModel("handle");
+ var status = axisPointerModel.get("status");
+ if (!handleModel.get("show") || !status || status === "hide") {
+ handle && zr.remove(handle);
+ this._handle = null;
+ return;
+ }
+ var isInit;
+ if (!this._handle) {
+ isInit = true;
+ handle = this._handle = createIcon(handleModel.get("icon"), {
+ cursor: "move",
+ draggable: true,
+ onmousemove: function(e2) {
+ stop(e2.event);
+ },
+ onmousedown: bind2(this._onHandleDragMove, this, 0, 0),
+ drift: bind2(this._onHandleDragMove, this),
+ ondragend: bind2(this._onHandleDragEnd, this)
+ });
+ zr.add(handle);
+ }
+ updateMandatoryProps(handle, axisPointerModel, false);
+ handle.setStyle(handleModel.getItemStyle(null, ["color", "borderColor", "borderWidth", "opacity", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"]));
+ var handleSize = handleModel.get("size");
+ if (!isArray(handleSize)) {
+ handleSize = [handleSize, handleSize];
+ }
+ handle.scaleX = handleSize[0] / 2;
+ handle.scaleY = handleSize[1] / 2;
+ createOrUpdate(this, "_doDispatchAxisPointer", handleModel.get("throttle") || 0, "fixRate");
+ this._moveHandleToValue(value, isInit);
+ };
+ BaseAxisPointer2.prototype._moveHandleToValue = function(value, isInit) {
+ updateProps2(this._axisPointerModel, !isInit && this._moveAnimation, this._handle, getHandleTransProps(this.getHandleTransform(value, this._axisModel, this._axisPointerModel)));
+ };
+ BaseAxisPointer2.prototype._onHandleDragMove = function(dx, dy) {
+ var handle = this._handle;
+ if (!handle) {
+ return;
+ }
+ this._dragging = true;
+ var trans = this.updateHandleTransform(getHandleTransProps(handle), [dx, dy], this._axisModel, this._axisPointerModel);
+ this._payloadInfo = trans;
+ handle.stopAnimation();
+ handle.attr(getHandleTransProps(trans));
+ inner11(handle).lastProp = null;
+ this._doDispatchAxisPointer();
+ };
+ BaseAxisPointer2.prototype._doDispatchAxisPointer = function() {
+ var handle = this._handle;
+ if (!handle) {
+ return;
+ }
+ var payloadInfo = this._payloadInfo;
+ var axisModel = this._axisModel;
+ this._api.dispatchAction({
+ type: "updateAxisPointer",
+ x: payloadInfo.cursorPoint[0],
+ y: payloadInfo.cursorPoint[1],
+ tooltipOption: payloadInfo.tooltipOption,
+ axesInfo: [{
+ axisDim: axisModel.axis.dim,
+ axisIndex: axisModel.componentIndex
+ }]
+ });
+ };
+ BaseAxisPointer2.prototype._onHandleDragEnd = function() {
+ this._dragging = false;
+ var handle = this._handle;
+ if (!handle) {
+ return;
+ }
+ var value = this._axisPointerModel.get("value");
+ this._moveHandleToValue(value);
+ this._api.dispatchAction({
+ type: "hideTip"
+ });
+ };
+ BaseAxisPointer2.prototype.clear = function(api) {
+ this._lastValue = null;
+ this._lastStatus = null;
+ var zr = api.getZr();
+ var group = this._group;
+ var handle = this._handle;
+ if (zr && group) {
+ this._lastGraphicKey = null;
+ group && zr.remove(group);
+ handle && zr.remove(handle);
+ this._group = null;
+ this._handle = null;
+ this._payloadInfo = null;
+ }
+ clear(this, "_doDispatchAxisPointer");
+ };
+ BaseAxisPointer2.prototype.doClear = function() {
+ };
+ BaseAxisPointer2.prototype.buildLabel = function(xy, wh, xDimIndex) {
+ xDimIndex = xDimIndex || 0;
+ return {
+ x: xy[xDimIndex],
+ y: xy[1 - xDimIndex],
+ width: wh[xDimIndex],
+ height: wh[1 - xDimIndex]
+ };
+ };
+ return BaseAxisPointer2;
+}();
+function updateProps2(animationModel, moveAnimation, el, props) {
+ if (!propsEqual(inner11(el).lastProp, props)) {
+ inner11(el).lastProp = props;
+ moveAnimation ? updateProps(el, props, animationModel) : (el.stopAnimation(), el.attr(props));
+ }
+}
+function propsEqual(lastProps, newProps) {
+ if (isObject(lastProps) && isObject(newProps)) {
+ var equals_1 = true;
+ each(newProps, function(item, key) {
+ equals_1 = equals_1 && propsEqual(lastProps[key], item);
+ });
+ return !!equals_1;
+ } else {
+ return lastProps === newProps;
+ }
+}
+function updateLabelShowHide(labelEl, axisPointerModel) {
+ labelEl[axisPointerModel.get(["label", "show"]) ? "show" : "hide"]();
+}
+function getHandleTransProps(trans) {
+ return {
+ x: trans.x || 0,
+ y: trans.y || 0,
+ rotation: trans.rotation || 0
+ };
+}
+function updateMandatoryProps(group, axisPointerModel, silent) {
+ var z = axisPointerModel.get("z");
+ var zlevel = axisPointerModel.get("zlevel");
+ group && group.traverse(function(el) {
+ if (el.type !== "group") {
+ z != null && (el.z = z);
+ zlevel != null && (el.zlevel = zlevel);
+ el.silent = silent;
+ }
+ });
+}
+var BaseAxisPointer_default = BaseAxisPointer;
+
+// node_modules/echarts/lib/component/axisPointer/viewHelper.js
+function buildElStyle(axisPointerModel) {
+ var axisPointerType = axisPointerModel.get("type");
+ var styleModel = axisPointerModel.getModel(axisPointerType + "Style");
+ var style;
+ if (axisPointerType === "line") {
+ style = styleModel.getLineStyle();
+ style.fill = null;
+ } else if (axisPointerType === "shadow") {
+ style = styleModel.getAreaStyle();
+ style.stroke = null;
+ }
+ return style;
+}
+function buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos) {
+ var value = axisPointerModel.get("value");
+ var text = getValueLabel(value, axisModel.axis, axisModel.ecModel, axisPointerModel.get("seriesDataIndices"), {
+ precision: axisPointerModel.get(["label", "precision"]),
+ formatter: axisPointerModel.get(["label", "formatter"])
+ });
+ var labelModel = axisPointerModel.getModel("label");
+ var paddings = normalizeCssArray2(labelModel.get("padding") || 0);
+ var font = labelModel.getFont();
+ var textRect = getBoundingRect(text, font);
+ var position2 = labelPos.position;
+ var width = textRect.width + paddings[1] + paddings[3];
+ var height = textRect.height + paddings[0] + paddings[2];
+ var align = labelPos.align;
+ align === "right" && (position2[0] -= width);
+ align === "center" && (position2[0] -= width / 2);
+ var verticalAlign = labelPos.verticalAlign;
+ verticalAlign === "bottom" && (position2[1] -= height);
+ verticalAlign === "middle" && (position2[1] -= height / 2);
+ confineInContainer(position2, width, height, api);
+ var bgColor = labelModel.get("backgroundColor");
+ if (!bgColor || bgColor === "auto") {
+ bgColor = axisModel.get(["axisLine", "lineStyle", "color"]);
+ }
+ elOption.label = {
+ x: position2[0],
+ y: position2[1],
+ style: createTextStyle(labelModel, {
+ text,
+ font,
+ fill: labelModel.getTextColor(),
+ padding: paddings,
+ backgroundColor: bgColor
+ }),
+ z2: 10
+ };
+}
+function confineInContainer(position2, width, height, api) {
+ var viewWidth = api.getWidth();
+ var viewHeight = api.getHeight();
+ position2[0] = Math.min(position2[0] + width, viewWidth) - width;
+ position2[1] = Math.min(position2[1] + height, viewHeight) - height;
+ position2[0] = Math.max(position2[0], 0);
+ position2[1] = Math.max(position2[1], 0);
+}
+function getValueLabel(value, axis, ecModel, seriesDataIndices, opt) {
+ value = axis.scale.parse(value);
+ var text = axis.scale.getLabel({
+ value
+ }, {
+ precision: opt.precision
+ });
+ var formatter = opt.formatter;
+ if (formatter) {
+ var params_1 = {
+ value: getAxisRawValue(axis, {
+ value
+ }),
+ axisDimension: axis.dim,
+ axisIndex: axis.index,
+ seriesData: []
+ };
+ each(seriesDataIndices, function(idxItem) {
+ var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+ var dataIndex = idxItem.dataIndexInside;
+ var dataParams = series && series.getDataParams(dataIndex);
+ dataParams && params_1.seriesData.push(dataParams);
+ });
+ if (isString(formatter)) {
+ text = formatter.replace("{value}", text);
+ } else if (isFunction(formatter)) {
+ text = formatter(params_1);
+ }
+ }
+ return text;
+}
+function getTransformedPosition(axis, value, layoutInfo) {
+ var transform2 = create2();
+ rotate(transform2, transform2, layoutInfo.rotation);
+ translate(transform2, transform2, layoutInfo.position);
+ return applyTransform2([axis.dataToCoord(value), (layoutInfo.labelOffset || 0) + (layoutInfo.labelDirection || 1) * (layoutInfo.labelMargin || 0)], transform2);
+}
+function buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api) {
+ var textLayout = AxisBuilder_default.innerTextLayout(layoutInfo.rotation, 0, layoutInfo.labelDirection);
+ layoutInfo.labelMargin = axisPointerModel.get(["label", "margin"]);
+ buildLabelElOption(elOption, axisModel, axisPointerModel, api, {
+ position: getTransformedPosition(axisModel.axis, value, layoutInfo),
+ align: textLayout.textAlign,
+ verticalAlign: textLayout.textVerticalAlign
+ });
+}
+function makeLineShape(p1, p2, xDimIndex) {
+ xDimIndex = xDimIndex || 0;
+ return {
+ x1: p1[xDimIndex],
+ y1: p1[1 - xDimIndex],
+ x2: p2[xDimIndex],
+ y2: p2[1 - xDimIndex]
+ };
+}
+function makeRectShape(xy, wh, xDimIndex) {
+ xDimIndex = xDimIndex || 0;
+ return {
+ x: xy[xDimIndex],
+ y: xy[1 - xDimIndex],
+ width: wh[xDimIndex],
+ height: wh[1 - xDimIndex]
+ };
+}
+function makeSectorShape(cx, cy, r0, r, startAngle, endAngle) {
+ return {
+ cx,
+ cy,
+ r0,
+ r,
+ startAngle,
+ endAngle,
+ clockwise: true
+ };
+}
+
+// node_modules/echarts/lib/component/axisPointer/CartesianAxisPointer.js
+var CartesianAxisPointer = function(_super) {
+ __extends(CartesianAxisPointer2, _super);
+ function CartesianAxisPointer2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ CartesianAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
+ var axis = axisModel.axis;
+ var grid = axis.grid;
+ var axisPointerType = axisPointerModel.get("type");
+ var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+ var pixelValue = axis.toGlobalCoord(axis.dataToCoord(value, true));
+ if (axisPointerType && axisPointerType !== "none") {
+ var elStyle = buildElStyle(axisPointerModel);
+ var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent);
+ pointerOption.style = elStyle;
+ elOption.graphicKey = pointerOption.type;
+ elOption.pointer = pointerOption;
+ }
+ var layoutInfo = layout2(grid.model, axisModel);
+ buildCartesianSingleLabelElOption(
+ value,
+ elOption,
+ layoutInfo,
+ axisModel,
+ axisPointerModel,
+ api
+ );
+ };
+ CartesianAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) {
+ var layoutInfo = layout2(axisModel.axis.grid.model, axisModel, {
+ labelInside: false
+ });
+ layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]);
+ var pos = getTransformedPosition(axisModel.axis, value, layoutInfo);
+ return {
+ x: pos[0],
+ y: pos[1],
+ rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
+ };
+ };
+ CartesianAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) {
+ var axis = axisModel.axis;
+ var grid = axis.grid;
+ var axisExtent = axis.getGlobalExtent(true);
+ var otherExtent = getCartesian(grid, axis).getOtherAxis(axis).getGlobalExtent();
+ var dimIndex = axis.dim === "x" ? 0 : 1;
+ var currPosition = [transform2.x, transform2.y];
+ currPosition[dimIndex] += delta[dimIndex];
+ currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
+ currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
+ var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
+ var cursorPoint = [cursorOtherValue, cursorOtherValue];
+ cursorPoint[dimIndex] = currPosition[dimIndex];
+ var tooltipOptions = [{
+ verticalAlign: "middle"
+ }, {
+ align: "center"
+ }];
+ return {
+ x: currPosition[0],
+ y: currPosition[1],
+ rotation: transform2.rotation,
+ cursorPoint,
+ tooltipOption: tooltipOptions[dimIndex]
+ };
+ };
+ return CartesianAxisPointer2;
+}(BaseAxisPointer_default);
+function getCartesian(grid, axis) {
+ var opt = {};
+ opt[axis.dim + "AxisIndex"] = axis.index;
+ return grid.getCartesian(opt);
+}
+var pointerShapeBuilder = {
+ line: function(axis, pixelValue, otherExtent) {
+ var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getAxisDimIndex(axis));
+ return {
+ type: "Line",
+ subPixelOptimize: true,
+ shape: targetShape
+ };
+ },
+ shadow: function(axis, pixelValue, otherExtent) {
+ var bandWidth = Math.max(1, axis.getBandWidth());
+ var span = otherExtent[1] - otherExtent[0];
+ return {
+ type: "Rect",
+ shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getAxisDimIndex(axis))
+ };
+ }
+};
+function getAxisDimIndex(axis) {
+ return axis.dim === "x" ? 0 : 1;
+}
+var CartesianAxisPointer_default = CartesianAxisPointer;
+
+// node_modules/echarts/lib/component/axisPointer/AxisPointerModel.js
+var AxisPointerModel = function(_super) {
+ __extends(AxisPointerModel2, _super);
+ function AxisPointerModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = AxisPointerModel2.type;
+ return _this;
+ }
+ AxisPointerModel2.type = "axisPointer";
+ AxisPointerModel2.defaultOption = {
+ show: "auto",
+ z: 50,
+ type: "line",
+ snap: false,
+ triggerTooltip: true,
+ triggerEmphasis: true,
+ value: null,
+ status: null,
+ link: [],
+ animation: null,
+ animationDurationUpdate: 200,
+ lineStyle: {
+ color: "#B9BEC9",
+ width: 1,
+ type: "dashed"
+ },
+ shadowStyle: {
+ color: "rgba(210,219,238,0.2)"
+ },
+ label: {
+ show: true,
+ formatter: null,
+ precision: "auto",
+ margin: 3,
+ color: "#fff",
+ padding: [5, 7, 5, 7],
+ backgroundColor: "auto",
+ borderColor: null,
+ borderWidth: 0,
+ borderRadius: 3
+ },
+ handle: {
+ show: false,
+ icon: "M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",
+ size: 45,
+ margin: 50,
+ color: "#333",
+ shadowBlur: 3,
+ shadowColor: "#aaa",
+ shadowOffsetX: 0,
+ shadowOffsetY: 2,
+ throttle: 40
+ }
+ };
+ return AxisPointerModel2;
+}(Component_default);
+var AxisPointerModel_default = AxisPointerModel;
+
+// node_modules/echarts/lib/component/axisPointer/globalListener.js
+var inner12 = makeInner();
+var each8 = each;
+function register(key, api, handler) {
+ if (env_default.node) {
+ return;
+ }
+ var zr = api.getZr();
+ inner12(zr).records || (inner12(zr).records = {});
+ initGlobalListeners(zr, api);
+ var record = inner12(zr).records[key] || (inner12(zr).records[key] = {});
+ record.handler = handler;
+}
+function initGlobalListeners(zr, api) {
+ if (inner12(zr).initialized) {
+ return;
+ }
+ inner12(zr).initialized = true;
+ useHandler("click", curry(doEnter, "click"));
+ useHandler("mousemove", curry(doEnter, "mousemove"));
+ useHandler("globalout", onLeave);
+ function useHandler(eventType, cb) {
+ zr.on(eventType, function(e2) {
+ var dis = makeDispatchAction(api);
+ each8(inner12(zr).records, function(record) {
+ record && cb(record, e2, dis.dispatchAction);
+ });
+ dispatchTooltipFinally(dis.pendings, api);
+ });
+ }
+}
+function dispatchTooltipFinally(pendings, api) {
+ var showLen = pendings.showTip.length;
+ var hideLen = pendings.hideTip.length;
+ var actuallyPayload;
+ if (showLen) {
+ actuallyPayload = pendings.showTip[showLen - 1];
+ } else if (hideLen) {
+ actuallyPayload = pendings.hideTip[hideLen - 1];
+ }
+ if (actuallyPayload) {
+ actuallyPayload.dispatchAction = null;
+ api.dispatchAction(actuallyPayload);
+ }
+}
+function onLeave(record, e2, dispatchAction3) {
+ record.handler("leave", null, dispatchAction3);
+}
+function doEnter(currTrigger, record, e2, dispatchAction3) {
+ record.handler(currTrigger, e2, dispatchAction3);
+}
+function makeDispatchAction(api) {
+ var pendings = {
+ showTip: [],
+ hideTip: []
+ };
+ var dispatchAction3 = function(payload) {
+ var pendingList = pendings[payload.type];
+ if (pendingList) {
+ pendingList.push(payload);
+ } else {
+ payload.dispatchAction = dispatchAction3;
+ api.dispatchAction(payload);
+ }
+ };
+ return {
+ dispatchAction: dispatchAction3,
+ pendings
+ };
+}
+function unregister(key, api) {
+ if (env_default.node) {
+ return;
+ }
+ var zr = api.getZr();
+ var record = (inner12(zr).records || {})[key];
+ if (record) {
+ inner12(zr).records[key] = null;
+ }
+}
+
+// node_modules/echarts/lib/component/axisPointer/AxisPointerView.js
+var AxisPointerView = function(_super) {
+ __extends(AxisPointerView2, _super);
+ function AxisPointerView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = AxisPointerView2.type;
+ return _this;
+ }
+ AxisPointerView2.prototype.render = function(globalAxisPointerModel, ecModel, api) {
+ var globalTooltipModel = ecModel.getComponent("tooltip");
+ var triggerOn = globalAxisPointerModel.get("triggerOn") || globalTooltipModel && globalTooltipModel.get("triggerOn") || "mousemove|click";
+ register("axisPointer", api, function(currTrigger, e2, dispatchAction3) {
+ if (triggerOn !== "none" && (currTrigger === "leave" || triggerOn.indexOf(currTrigger) >= 0)) {
+ dispatchAction3({
+ type: "updateAxisPointer",
+ currTrigger,
+ x: e2 && e2.offsetX,
+ y: e2 && e2.offsetY
+ });
+ }
+ });
+ };
+ AxisPointerView2.prototype.remove = function(ecModel, api) {
+ unregister("axisPointer", api);
+ };
+ AxisPointerView2.prototype.dispose = function(ecModel, api) {
+ unregister("axisPointer", api);
+ };
+ AxisPointerView2.type = "axisPointer";
+ return AxisPointerView2;
+}(Component_default2);
+var AxisPointerView_default = AxisPointerView;
+
+// node_modules/echarts/lib/component/axisPointer/findPointFromSeries.js
+function findPointFromSeries(finder, ecModel) {
+ var point = [];
+ var seriesIndex = finder.seriesIndex;
+ var seriesModel;
+ if (seriesIndex == null || !(seriesModel = ecModel.getSeriesByIndex(seriesIndex))) {
+ return {
+ point: []
+ };
+ }
+ var data = seriesModel.getData();
+ var dataIndex = queryDataIndex(data, finder);
+ if (dataIndex == null || dataIndex < 0 || isArray(dataIndex)) {
+ return {
+ point: []
+ };
+ }
+ var el = data.getItemGraphicEl(dataIndex);
+ var coordSys = seriesModel.coordinateSystem;
+ if (seriesModel.getTooltipPosition) {
+ point = seriesModel.getTooltipPosition(dataIndex) || [];
+ } else if (coordSys && coordSys.dataToPoint) {
+ if (finder.isStacked) {
+ var baseAxis = coordSys.getBaseAxis();
+ var valueAxis2 = coordSys.getOtherAxis(baseAxis);
+ var valueAxisDim = valueAxis2.dim;
+ var baseAxisDim = baseAxis.dim;
+ var baseDataOffset = valueAxisDim === "x" || valueAxisDim === "radius" ? 1 : 0;
+ var baseDim = data.mapDimension(baseAxisDim);
+ var stackedData = [];
+ stackedData[baseDataOffset] = data.get(baseDim, dataIndex);
+ stackedData[1 - baseDataOffset] = data.get(data.getCalculationInfo("stackResultDimension"), dataIndex);
+ point = coordSys.dataToPoint(stackedData) || [];
+ } else {
+ point = coordSys.dataToPoint(data.getValues(map(coordSys.dimensions, function(dim) {
+ return data.mapDimension(dim);
+ }), dataIndex)) || [];
+ }
+ } else if (el) {
+ var rect = el.getBoundingRect().clone();
+ rect.applyTransform(el.transform);
+ point = [rect.x + rect.width / 2, rect.y + rect.height / 2];
+ }
+ return {
+ point,
+ el
+ };
+}
+
+// node_modules/echarts/lib/component/axisPointer/axisTrigger.js
+var inner13 = makeInner();
+function axisTrigger(payload, ecModel, api) {
+ var currTrigger = payload.currTrigger;
+ var point = [payload.x, payload.y];
+ var finder = payload;
+ var dispatchAction3 = payload.dispatchAction || bind(api.dispatchAction, api);
+ var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo;
+ if (!coordSysAxesInfo) {
+ return;
+ }
+ if (illegalPoint(point)) {
+ point = findPointFromSeries({
+ seriesIndex: finder.seriesIndex,
+ dataIndex: finder.dataIndex
+ }, ecModel).point;
+ }
+ var isIllegalPoint = illegalPoint(point);
+ var inputAxesInfo = finder.axesInfo;
+ var axesInfo = coordSysAxesInfo.axesInfo;
+ var shouldHide = currTrigger === "leave" || illegalPoint(point);
+ var outputPayload = {};
+ var showValueMap = {};
+ var dataByCoordSys = {
+ list: [],
+ map: {}
+ };
+ var updaters = {
+ showPointer: curry(showPointer, showValueMap),
+ showTooltip: curry(showTooltip, dataByCoordSys)
+ };
+ each(coordSysAxesInfo.coordSysMap, function(coordSys, coordSysKey) {
+ var coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point);
+ each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function(axisInfo, key) {
+ var axis = axisInfo.axis;
+ var inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo);
+ if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) {
+ var val = inputAxisInfo && inputAxisInfo.value;
+ if (val == null && !isIllegalPoint) {
+ val = axis.pointToData(point);
+ }
+ val != null && processOnAxis(axisInfo, val, updaters, false, outputPayload);
+ }
+ });
+ });
+ var linkTriggers = {};
+ each(axesInfo, function(tarAxisInfo, tarKey) {
+ var linkGroup = tarAxisInfo.linkGroup;
+ if (linkGroup && !showValueMap[tarKey]) {
+ each(linkGroup.axesInfo, function(srcAxisInfo, srcKey) {
+ var srcValItem = showValueMap[srcKey];
+ if (srcAxisInfo !== tarAxisInfo && srcValItem) {
+ var val = srcValItem.value;
+ linkGroup.mapper && (val = tarAxisInfo.axis.scale.parse(linkGroup.mapper(val, makeMapperParam(srcAxisInfo), makeMapperParam(tarAxisInfo))));
+ linkTriggers[tarAxisInfo.key] = val;
+ }
+ });
+ }
+ });
+ each(linkTriggers, function(val, tarKey) {
+ processOnAxis(axesInfo[tarKey], val, updaters, true, outputPayload);
+ });
+ updateModelActually(showValueMap, axesInfo, outputPayload);
+ dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction3);
+ dispatchHighDownActually(axesInfo, dispatchAction3, api);
+ return outputPayload;
+}
+function processOnAxis(axisInfo, newValue, updaters, noSnap, outputFinder) {
+ var axis = axisInfo.axis;
+ if (axis.scale.isBlank() || !axis.containData(newValue)) {
+ return;
+ }
+ if (!axisInfo.involveSeries) {
+ updaters.showPointer(axisInfo, newValue);
+ return;
+ }
+ var payloadInfo = buildPayloadsBySeries(newValue, axisInfo);
+ var payloadBatch = payloadInfo.payloadBatch;
+ var snapToValue = payloadInfo.snapToValue;
+ if (payloadBatch[0] && outputFinder.seriesIndex == null) {
+ extend(outputFinder, payloadBatch[0]);
+ }
+ if (!noSnap && axisInfo.snap) {
+ if (axis.containData(snapToValue) && snapToValue != null) {
+ newValue = snapToValue;
+ }
+ }
+ updaters.showPointer(axisInfo, newValue, payloadBatch);
+ updaters.showTooltip(axisInfo, payloadInfo, snapToValue);
+}
+function buildPayloadsBySeries(value, axisInfo) {
+ var axis = axisInfo.axis;
+ var dim = axis.dim;
+ var snapToValue = value;
+ var payloadBatch = [];
+ var minDist = Number.MAX_VALUE;
+ var minDiff = -1;
+ each(axisInfo.seriesModels, function(series, idx) {
+ var dataDim = series.getData().mapDimensionsAll(dim);
+ var seriesNestestValue;
+ var dataIndices;
+ if (series.getAxisTooltipData) {
+ var result = series.getAxisTooltipData(dataDim, value, axis);
+ dataIndices = result.dataIndices;
+ seriesNestestValue = result.nestestValue;
+ } else {
+ dataIndices = series.getData().indicesOfNearest(
+ dataDim[0],
+ value,
+ axis.type === "category" ? 0.5 : null
+ );
+ if (!dataIndices.length) {
+ return;
+ }
+ seriesNestestValue = series.getData().get(dataDim[0], dataIndices[0]);
+ }
+ if (seriesNestestValue == null || !isFinite(seriesNestestValue)) {
+ return;
+ }
+ var diff = value - seriesNestestValue;
+ var dist3 = Math.abs(diff);
+ if (dist3 <= minDist) {
+ if (dist3 < minDist || diff >= 0 && minDiff < 0) {
+ minDist = dist3;
+ minDiff = diff;
+ snapToValue = seriesNestestValue;
+ payloadBatch.length = 0;
+ }
+ each(dataIndices, function(dataIndex) {
+ payloadBatch.push({
+ seriesIndex: series.seriesIndex,
+ dataIndexInside: dataIndex,
+ dataIndex: series.getData().getRawIndex(dataIndex)
+ });
+ });
+ }
+ });
+ return {
+ payloadBatch,
+ snapToValue
+ };
+}
+function showPointer(showValueMap, axisInfo, value, payloadBatch) {
+ showValueMap[axisInfo.key] = {
+ value,
+ payloadBatch
+ };
+}
+function showTooltip(dataByCoordSys, axisInfo, payloadInfo, value) {
+ var payloadBatch = payloadInfo.payloadBatch;
+ var axis = axisInfo.axis;
+ var axisModel = axis.model;
+ var axisPointerModel = axisInfo.axisPointerModel;
+ if (!axisInfo.triggerTooltip || !payloadBatch.length) {
+ return;
+ }
+ var coordSysModel = axisInfo.coordSys.model;
+ var coordSysKey = makeKey(coordSysModel);
+ var coordSysItem = dataByCoordSys.map[coordSysKey];
+ if (!coordSysItem) {
+ coordSysItem = dataByCoordSys.map[coordSysKey] = {
+ coordSysId: coordSysModel.id,
+ coordSysIndex: coordSysModel.componentIndex,
+ coordSysType: coordSysModel.type,
+ coordSysMainType: coordSysModel.mainType,
+ dataByAxis: []
+ };
+ dataByCoordSys.list.push(coordSysItem);
+ }
+ coordSysItem.dataByAxis.push({
+ axisDim: axis.dim,
+ axisIndex: axisModel.componentIndex,
+ axisType: axisModel.type,
+ axisId: axisModel.id,
+ value,
+ valueLabelOpt: {
+ precision: axisPointerModel.get(["label", "precision"]),
+ formatter: axisPointerModel.get(["label", "formatter"])
+ },
+ seriesDataIndices: payloadBatch.slice()
+ });
+}
+function updateModelActually(showValueMap, axesInfo, outputPayload) {
+ var outputAxesInfo = outputPayload.axesInfo = [];
+ each(axesInfo, function(axisInfo, key) {
+ var option = axisInfo.axisPointerModel.option;
+ var valItem = showValueMap[key];
+ if (valItem) {
+ !axisInfo.useHandle && (option.status = "show");
+ option.value = valItem.value;
+ option.seriesDataIndices = (valItem.payloadBatch || []).slice();
+ } else {
+ !axisInfo.useHandle && (option.status = "hide");
+ }
+ option.status === "show" && outputAxesInfo.push({
+ axisDim: axisInfo.axis.dim,
+ axisIndex: axisInfo.axis.model.componentIndex,
+ value: option.value
+ });
+ });
+}
+function dispatchTooltipActually(dataByCoordSys, point, payload, dispatchAction3) {
+ if (illegalPoint(point) || !dataByCoordSys.list.length) {
+ dispatchAction3({
+ type: "hideTip"
+ });
+ return;
+ }
+ var sampleItem = ((dataByCoordSys.list[0].dataByAxis[0] || {}).seriesDataIndices || [])[0] || {};
+ dispatchAction3({
+ type: "showTip",
+ escapeConnect: true,
+ x: point[0],
+ y: point[1],
+ tooltipOption: payload.tooltipOption,
+ position: payload.position,
+ dataIndexInside: sampleItem.dataIndexInside,
+ dataIndex: sampleItem.dataIndex,
+ seriesIndex: sampleItem.seriesIndex,
+ dataByCoordSys: dataByCoordSys.list
+ });
+}
+function dispatchHighDownActually(axesInfo, dispatchAction3, api) {
+ var zr = api.getZr();
+ var highDownKey = "axisPointerLastHighlights";
+ var lastHighlights = inner13(zr)[highDownKey] || {};
+ var newHighlights = inner13(zr)[highDownKey] = {};
+ each(axesInfo, function(axisInfo, key) {
+ var option = axisInfo.axisPointerModel.option;
+ option.status === "show" && axisInfo.triggerEmphasis && each(option.seriesDataIndices, function(batchItem) {
+ var key2 = batchItem.seriesIndex + " | " + batchItem.dataIndex;
+ newHighlights[key2] = batchItem;
+ });
+ });
+ var toHighlight = [];
+ var toDownplay = [];
+ each(lastHighlights, function(batchItem, key) {
+ !newHighlights[key] && toDownplay.push(batchItem);
+ });
+ each(newHighlights, function(batchItem, key) {
+ !lastHighlights[key] && toHighlight.push(batchItem);
+ });
+ toDownplay.length && api.dispatchAction({
+ type: "downplay",
+ escapeConnect: true,
+ notBlur: true,
+ batch: toDownplay
+ });
+ toHighlight.length && api.dispatchAction({
+ type: "highlight",
+ escapeConnect: true,
+ notBlur: true,
+ batch: toHighlight
+ });
+}
+function findInputAxisInfo(inputAxesInfo, axisInfo) {
+ for (var i = 0; i < (inputAxesInfo || []).length; i++) {
+ var inputAxisInfo = inputAxesInfo[i];
+ if (axisInfo.axis.dim === inputAxisInfo.axisDim && axisInfo.axis.model.componentIndex === inputAxisInfo.axisIndex) {
+ return inputAxisInfo;
+ }
+ }
+}
+function makeMapperParam(axisInfo) {
+ var axisModel = axisInfo.axis.model;
+ var item = {};
+ var dim = item.axisDim = axisInfo.axis.dim;
+ item.axisIndex = item[dim + "AxisIndex"] = axisModel.componentIndex;
+ item.axisName = item[dim + "AxisName"] = axisModel.name;
+ item.axisId = item[dim + "AxisId"] = axisModel.id;
+ return item;
+}
+function illegalPoint(point) {
+ return !point || point[0] == null || isNaN(point[0]) || point[1] == null || isNaN(point[1]);
+}
+
+// node_modules/echarts/lib/component/axisPointer/install.js
+function install29(registers) {
+ AxisView_default.registerAxisPointerClass("CartesianAxisPointer", CartesianAxisPointer_default);
+ registers.registerComponentModel(AxisPointerModel_default);
+ registers.registerComponentView(AxisPointerView_default);
+ registers.registerPreprocessor(function(option) {
+ if (option) {
+ (!option.axisPointer || option.axisPointer.length === 0) && (option.axisPointer = {});
+ var link = option.axisPointer.link;
+ if (link && !isArray(link)) {
+ option.axisPointer.link = [link];
+ }
+ }
+ });
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.STATISTIC, function(ecModel, api) {
+ ecModel.getComponent("axisPointer").coordSysAxesInfo = collect(ecModel, api);
+ });
+ registers.registerAction({
+ type: "updateAxisPointer",
+ event: "updateAxisPointer",
+ update: ":updateAxisPointer"
+ }, axisTrigger);
+}
+
+// node_modules/echarts/lib/component/grid/install.js
+function install30(registers) {
+ use(install6);
+ use(install29);
+}
+
+// node_modules/echarts/lib/component/axisPointer/PolarAxisPointer.js
+var PolarAxisPointer = function(_super) {
+ __extends(PolarAxisPointer2, _super);
+ function PolarAxisPointer2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ PolarAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
+ var axis = axisModel.axis;
+ if (axis.dim === "angle") {
+ this.animationThreshold = Math.PI / 18;
+ }
+ var polar = axis.polar;
+ var otherAxis = polar.getOtherAxis(axis);
+ var otherExtent = otherAxis.getExtent();
+ var coordValue = axis.dataToCoord(value);
+ var axisPointerType = axisPointerModel.get("type");
+ if (axisPointerType && axisPointerType !== "none") {
+ var elStyle = buildElStyle(axisPointerModel);
+ var pointerOption = pointerShapeBuilder2[axisPointerType](axis, polar, coordValue, otherExtent);
+ pointerOption.style = elStyle;
+ elOption.graphicKey = pointerOption.type;
+ elOption.pointer = pointerOption;
+ }
+ var labelMargin = axisPointerModel.get(["label", "margin"]);
+ var labelPos = getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin);
+ buildLabelElOption(elOption, axisModel, axisPointerModel, api, labelPos);
+ };
+ return PolarAxisPointer2;
+}(BaseAxisPointer_default);
+function getLabelPosition(value, axisModel, axisPointerModel, polar, labelMargin) {
+ var axis = axisModel.axis;
+ var coord = axis.dataToCoord(value);
+ var axisAngle = polar.getAngleAxis().getExtent()[0];
+ axisAngle = axisAngle / 180 * Math.PI;
+ var radiusExtent = polar.getRadiusAxis().getExtent();
+ var position2;
+ var align;
+ var verticalAlign;
+ if (axis.dim === "radius") {
+ var transform2 = create2();
+ rotate(transform2, transform2, axisAngle);
+ translate(transform2, transform2, [polar.cx, polar.cy]);
+ position2 = applyTransform2([coord, -labelMargin], transform2);
+ var labelRotation = axisModel.getModel("axisLabel").get("rotate") || 0;
+ var labelLayout2 = AxisBuilder_default.innerTextLayout(axisAngle, labelRotation * Math.PI / 180, -1);
+ align = labelLayout2.textAlign;
+ verticalAlign = labelLayout2.textVerticalAlign;
+ } else {
+ var r = radiusExtent[1];
+ position2 = polar.coordToPoint([r + labelMargin, coord]);
+ var cx = polar.cx;
+ var cy = polar.cy;
+ align = Math.abs(position2[0] - cx) / r < 0.3 ? "center" : position2[0] > cx ? "left" : "right";
+ verticalAlign = Math.abs(position2[1] - cy) / r < 0.3 ? "middle" : position2[1] > cy ? "top" : "bottom";
+ }
+ return {
+ position: position2,
+ align,
+ verticalAlign
+ };
+}
+var pointerShapeBuilder2 = {
+ line: function(axis, polar, coordValue, otherExtent) {
+ return axis.dim === "angle" ? {
+ type: "Line",
+ shape: makeLineShape(polar.coordToPoint([otherExtent[0], coordValue]), polar.coordToPoint([otherExtent[1], coordValue]))
+ } : {
+ type: "Circle",
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r: coordValue
+ }
+ };
+ },
+ shadow: function(axis, polar, coordValue, otherExtent) {
+ var bandWidth = Math.max(1, axis.getBandWidth());
+ var radian = Math.PI / 180;
+ return axis.dim === "angle" ? {
+ type: "Sector",
+ shape: makeSectorShape(
+ polar.cx,
+ polar.cy,
+ otherExtent[0],
+ otherExtent[1],
+ (-coordValue - bandWidth / 2) * radian,
+ (-coordValue + bandWidth / 2) * radian
+ )
+ } : {
+ type: "Sector",
+ shape: makeSectorShape(polar.cx, polar.cy, coordValue - bandWidth / 2, coordValue + bandWidth / 2, 0, Math.PI * 2)
+ };
+ }
+};
+var PolarAxisPointer_default = PolarAxisPointer;
+
+// node_modules/echarts/lib/coord/polar/PolarModel.js
+var PolarModel = function(_super) {
+ __extends(PolarModel2, _super);
+ function PolarModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = PolarModel2.type;
+ return _this;
+ }
+ PolarModel2.prototype.findAxisModel = function(axisType) {
+ var foundAxisModel;
+ var ecModel = this.ecModel;
+ ecModel.eachComponent(axisType, function(axisModel) {
+ if (axisModel.getCoordSysModel() === this) {
+ foundAxisModel = axisModel;
+ }
+ }, this);
+ return foundAxisModel;
+ };
+ PolarModel2.type = "polar";
+ PolarModel2.dependencies = ["radiusAxis", "angleAxis"];
+ PolarModel2.defaultOption = {
+ z: 0,
+ center: ["50%", "50%"],
+ radius: "80%"
+ };
+ return PolarModel2;
+}(Component_default);
+var PolarModel_default = PolarModel;
+
+// node_modules/echarts/lib/coord/polar/AxisModel.js
+var PolarAxisModel = function(_super) {
+ __extends(PolarAxisModel2, _super);
+ function PolarAxisModel2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ PolarAxisModel2.prototype.getCoordSysModel = function() {
+ return this.getReferringComponents("polar", SINGLE_REFERRING).models[0];
+ };
+ PolarAxisModel2.type = "polarAxis";
+ return PolarAxisModel2;
+}(Component_default);
+mixin(PolarAxisModel, AxisModelCommonMixin);
+var AngleAxisModel = function(_super) {
+ __extends(AngleAxisModel2, _super);
+ function AngleAxisModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = AngleAxisModel2.type;
+ return _this;
+ }
+ AngleAxisModel2.type = "angleAxis";
+ return AngleAxisModel2;
+}(PolarAxisModel);
+var RadiusAxisModel = function(_super) {
+ __extends(RadiusAxisModel2, _super);
+ function RadiusAxisModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = RadiusAxisModel2.type;
+ return _this;
+ }
+ RadiusAxisModel2.type = "radiusAxis";
+ return RadiusAxisModel2;
+}(PolarAxisModel);
+
+// node_modules/echarts/lib/coord/polar/RadiusAxis.js
+var RadiusAxis = function(_super) {
+ __extends(RadiusAxis2, _super);
+ function RadiusAxis2(scale4, radiusExtent) {
+ return _super.call(this, "radius", scale4, radiusExtent) || this;
+ }
+ RadiusAxis2.prototype.pointToData = function(point, clamp2) {
+ return this.polar.pointToData(point, clamp2)[this.dim === "radius" ? 0 : 1];
+ };
+ return RadiusAxis2;
+}(Axis_default);
+RadiusAxis.prototype.dataToRadius = Axis_default.prototype.dataToCoord;
+RadiusAxis.prototype.radiusToData = Axis_default.prototype.coordToData;
+var RadiusAxis_default = RadiusAxis;
+
+// node_modules/echarts/lib/coord/polar/AngleAxis.js
+var inner14 = makeInner();
+var AngleAxis = function(_super) {
+ __extends(AngleAxis2, _super);
+ function AngleAxis2(scale4, angleExtent) {
+ return _super.call(this, "angle", scale4, angleExtent || [0, 360]) || this;
+ }
+ AngleAxis2.prototype.pointToData = function(point, clamp2) {
+ return this.polar.pointToData(point, clamp2)[this.dim === "radius" ? 0 : 1];
+ };
+ AngleAxis2.prototype.calculateCategoryInterval = function() {
+ var axis = this;
+ var labelModel = axis.getLabelModel();
+ var ordinalScale = axis.scale;
+ var ordinalExtent = ordinalScale.getExtent();
+ var tickCount = ordinalScale.count();
+ if (ordinalExtent[1] - ordinalExtent[0] < 1) {
+ return 0;
+ }
+ var tickValue = ordinalExtent[0];
+ var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);
+ var unitH = Math.abs(unitSpan);
+ var rect = getBoundingRect(tickValue == null ? "" : tickValue + "", labelModel.getFont(), "center", "top");
+ var maxH = Math.max(rect.height, 7);
+ var dh = maxH / unitH;
+ isNaN(dh) && (dh = Infinity);
+ var interval = Math.max(0, Math.floor(dh));
+ var cache = inner14(axis.model);
+ var lastAutoInterval = cache.lastAutoInterval;
+ var lastTickCount = cache.lastTickCount;
+ if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1 && lastAutoInterval > interval) {
+ interval = lastAutoInterval;
+ } else {
+ cache.lastTickCount = tickCount;
+ cache.lastAutoInterval = interval;
+ }
+ return interval;
+ };
+ return AngleAxis2;
+}(Axis_default);
+AngleAxis.prototype.dataToAngle = Axis_default.prototype.dataToCoord;
+AngleAxis.prototype.angleToData = Axis_default.prototype.coordToData;
+var AngleAxis_default = AngleAxis;
+
+// node_modules/echarts/lib/coord/polar/Polar.js
+var polarDimensions = ["radius", "angle"];
+var Polar = function() {
+ function Polar2(name) {
+ this.dimensions = polarDimensions;
+ this.type = "polar";
+ this.cx = 0;
+ this.cy = 0;
+ this._radiusAxis = new RadiusAxis_default();
+ this._angleAxis = new AngleAxis_default();
+ this.axisPointerEnabled = true;
+ this.name = name || "";
+ this._radiusAxis.polar = this._angleAxis.polar = this;
+ }
+ Polar2.prototype.containPoint = function(point) {
+ var coord = this.pointToCoord(point);
+ return this._radiusAxis.contain(coord[0]) && this._angleAxis.contain(coord[1]);
+ };
+ Polar2.prototype.containData = function(data) {
+ return this._radiusAxis.containData(data[0]) && this._angleAxis.containData(data[1]);
+ };
+ Polar2.prototype.getAxis = function(dim) {
+ var key = "_" + dim + "Axis";
+ return this[key];
+ };
+ Polar2.prototype.getAxes = function() {
+ return [this._radiusAxis, this._angleAxis];
+ };
+ Polar2.prototype.getAxesByScale = function(scaleType) {
+ var axes = [];
+ var angleAxis = this._angleAxis;
+ var radiusAxis = this._radiusAxis;
+ angleAxis.scale.type === scaleType && axes.push(angleAxis);
+ radiusAxis.scale.type === scaleType && axes.push(radiusAxis);
+ return axes;
+ };
+ Polar2.prototype.getAngleAxis = function() {
+ return this._angleAxis;
+ };
+ Polar2.prototype.getRadiusAxis = function() {
+ return this._radiusAxis;
+ };
+ Polar2.prototype.getOtherAxis = function(axis) {
+ var angleAxis = this._angleAxis;
+ return axis === angleAxis ? this._radiusAxis : angleAxis;
+ };
+ Polar2.prototype.getBaseAxis = function() {
+ return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAngleAxis();
+ };
+ Polar2.prototype.getTooltipAxes = function(dim) {
+ var baseAxis = dim != null && dim !== "auto" ? this.getAxis(dim) : this.getBaseAxis();
+ return {
+ baseAxes: [baseAxis],
+ otherAxes: [this.getOtherAxis(baseAxis)]
+ };
+ };
+ Polar2.prototype.dataToPoint = function(data, clamp2) {
+ return this.coordToPoint([this._radiusAxis.dataToRadius(data[0], clamp2), this._angleAxis.dataToAngle(data[1], clamp2)]);
+ };
+ Polar2.prototype.pointToData = function(point, clamp2) {
+ var coord = this.pointToCoord(point);
+ return [this._radiusAxis.radiusToData(coord[0], clamp2), this._angleAxis.angleToData(coord[1], clamp2)];
+ };
+ Polar2.prototype.pointToCoord = function(point) {
+ var dx = point[0] - this.cx;
+ var dy = point[1] - this.cy;
+ var angleAxis = this.getAngleAxis();
+ var extent3 = angleAxis.getExtent();
+ var minAngle = Math.min(extent3[0], extent3[1]);
+ var maxAngle = Math.max(extent3[0], extent3[1]);
+ angleAxis.inverse ? minAngle = maxAngle - 360 : maxAngle = minAngle + 360;
+ var radius = Math.sqrt(dx * dx + dy * dy);
+ dx /= radius;
+ dy /= radius;
+ var radian = Math.atan2(-dy, dx) / Math.PI * 180;
+ var dir3 = radian < minAngle ? 1 : -1;
+ while (radian < minAngle || radian > maxAngle) {
+ radian += dir3 * 360;
+ }
+ return [radius, radian];
+ };
+ Polar2.prototype.coordToPoint = function(coord) {
+ var radius = coord[0];
+ var radian = coord[1] / 180 * Math.PI;
+ var x = Math.cos(radian) * radius + this.cx;
+ var y = -Math.sin(radian) * radius + this.cy;
+ return [x, y];
+ };
+ Polar2.prototype.getArea = function() {
+ var angleAxis = this.getAngleAxis();
+ var radiusAxis = this.getRadiusAxis();
+ var radiusExtent = radiusAxis.getExtent().slice();
+ radiusExtent[0] > radiusExtent[1] && radiusExtent.reverse();
+ var angleExtent = angleAxis.getExtent();
+ var RADIAN4 = Math.PI / 180;
+ var EPSILON6 = 1e-4;
+ return {
+ cx: this.cx,
+ cy: this.cy,
+ r0: radiusExtent[0],
+ r: radiusExtent[1],
+ startAngle: -angleExtent[0] * RADIAN4,
+ endAngle: -angleExtent[1] * RADIAN4,
+ clockwise: angleAxis.inverse,
+ contain: function(x, y) {
+ var dx = x - this.cx;
+ var dy = y - this.cy;
+ var d2 = dx * dx + dy * dy;
+ var r = this.r;
+ var r0 = this.r0;
+ return r !== r0 && d2 - EPSILON6 <= r * r && d2 + EPSILON6 >= r0 * r0;
+ }
+ };
+ };
+ Polar2.prototype.convertToPixel = function(ecModel, finder, value) {
+ var coordSys = getCoordSys3(finder);
+ return coordSys === this ? this.dataToPoint(value) : null;
+ };
+ Polar2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
+ var coordSys = getCoordSys3(finder);
+ return coordSys === this ? this.pointToData(pixel) : null;
+ };
+ return Polar2;
+}();
+function getCoordSys3(finder) {
+ var seriesModel = finder.seriesModel;
+ var polarModel = finder.polarModel;
+ return polarModel && polarModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem;
+}
+var Polar_default = Polar;
+
+// node_modules/echarts/lib/coord/polar/polarCreator.js
+function resizePolar(polar, polarModel, api) {
+ var center3 = polarModel.get("center");
+ var width = api.getWidth();
+ var height = api.getHeight();
+ polar.cx = parsePercent2(center3[0], width);
+ polar.cy = parsePercent2(center3[1], height);
+ var radiusAxis = polar.getRadiusAxis();
+ var size = Math.min(width, height) / 2;
+ var radius = polarModel.get("radius");
+ if (radius == null) {
+ radius = [0, "100%"];
+ } else if (!isArray(radius)) {
+ radius = [0, radius];
+ }
+ var parsedRadius = [parsePercent2(radius[0], size), parsePercent2(radius[1], size)];
+ radiusAxis.inverse ? radiusAxis.setExtent(parsedRadius[1], parsedRadius[0]) : radiusAxis.setExtent(parsedRadius[0], parsedRadius[1]);
+}
+function updatePolarScale(ecModel, api) {
+ var polar = this;
+ var angleAxis = polar.getAngleAxis();
+ var radiusAxis = polar.getRadiusAxis();
+ angleAxis.scale.setExtent(Infinity, -Infinity);
+ radiusAxis.scale.setExtent(Infinity, -Infinity);
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.coordinateSystem === polar) {
+ var data_1 = seriesModel.getData();
+ each(getDataDimensionsOnAxis(data_1, "radius"), function(dim) {
+ radiusAxis.scale.unionExtentFromData(data_1, dim);
+ });
+ each(getDataDimensionsOnAxis(data_1, "angle"), function(dim) {
+ angleAxis.scale.unionExtentFromData(data_1, dim);
+ });
+ }
+ });
+ niceScaleExtent(angleAxis.scale, angleAxis.model);
+ niceScaleExtent(radiusAxis.scale, radiusAxis.model);
+ if (angleAxis.type === "category" && !angleAxis.onBand) {
+ var extent3 = angleAxis.getExtent();
+ var diff = 360 / angleAxis.scale.count();
+ angleAxis.inverse ? extent3[1] += diff : extent3[1] -= diff;
+ angleAxis.setExtent(extent3[0], extent3[1]);
+ }
+}
+function isAngleAxisModel(axisModel) {
+ return axisModel.mainType === "angleAxis";
+}
+function setAxis(axis, axisModel) {
+ var _a2;
+ axis.type = axisModel.get("type");
+ axis.scale = createScaleByModel(axisModel);
+ axis.onBand = axisModel.get("boundaryGap") && axis.type === "category";
+ axis.inverse = axisModel.get("inverse");
+ if (isAngleAxisModel(axisModel)) {
+ axis.inverse = axis.inverse !== axisModel.get("clockwise");
+ var startAngle = axisModel.get("startAngle");
+ var endAngle = (_a2 = axisModel.get("endAngle")) !== null && _a2 !== void 0 ? _a2 : startAngle + (axis.inverse ? -360 : 360);
+ axis.setExtent(startAngle, endAngle);
+ }
+ axisModel.axis = axis;
+ axis.model = axisModel;
+}
+var polarCreator = {
+ dimensions: polarDimensions,
+ create: function(ecModel, api) {
+ var polarList = [];
+ ecModel.eachComponent("polar", function(polarModel, idx) {
+ var polar = new Polar_default(idx + "");
+ polar.update = updatePolarScale;
+ var radiusAxis = polar.getRadiusAxis();
+ var angleAxis = polar.getAngleAxis();
+ var radiusAxisModel = polarModel.findAxisModel("radiusAxis");
+ var angleAxisModel = polarModel.findAxisModel("angleAxis");
+ setAxis(radiusAxis, radiusAxisModel);
+ setAxis(angleAxis, angleAxisModel);
+ resizePolar(polar, polarModel, api);
+ polarList.push(polar);
+ polarModel.coordinateSystem = polar;
+ polar.model = polarModel;
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.get("coordinateSystem") === "polar") {
+ var polarModel = seriesModel.getReferringComponents("polar", SINGLE_REFERRING).models[0];
+ if (true) {
+ if (!polarModel) {
+ throw new Error('Polar "' + retrieve(seriesModel.get("polarIndex"), seriesModel.get("polarId"), 0) + '" not found');
+ }
+ }
+ seriesModel.coordinateSystem = polarModel.coordinateSystem;
+ }
+ });
+ return polarList;
+ }
+};
+var polarCreator_default = polarCreator;
+
+// node_modules/echarts/lib/component/axis/AngleAxisView.js
+var elementList2 = ["axisLine", "axisLabel", "axisTick", "minorTick", "splitLine", "minorSplitLine", "splitArea"];
+function getAxisLineShape(polar, rExtent, angle) {
+ rExtent[1] > rExtent[0] && (rExtent = rExtent.slice().reverse());
+ var start2 = polar.coordToPoint([rExtent[0], angle]);
+ var end2 = polar.coordToPoint([rExtent[1], angle]);
+ return {
+ x1: start2[0],
+ y1: start2[1],
+ x2: end2[0],
+ y2: end2[1]
+ };
+}
+function getRadiusIdx(polar) {
+ var radiusAxis = polar.getRadiusAxis();
+ return radiusAxis.inverse ? 0 : 1;
+}
+function fixAngleOverlap(list) {
+ var firstItem = list[0];
+ var lastItem = list[list.length - 1];
+ if (firstItem && lastItem && Math.abs(Math.abs(firstItem.coord - lastItem.coord) - 360) < 1e-4) {
+ list.pop();
+ }
+}
+var AngleAxisView = function(_super) {
+ __extends(AngleAxisView2, _super);
+ function AngleAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = AngleAxisView2.type;
+ _this.axisPointerClass = "PolarAxisPointer";
+ return _this;
+ }
+ AngleAxisView2.prototype.render = function(angleAxisModel, ecModel) {
+ this.group.removeAll();
+ if (!angleAxisModel.get("show")) {
+ return;
+ }
+ var angleAxis = angleAxisModel.axis;
+ var polar = angleAxis.polar;
+ var radiusExtent = polar.getRadiusAxis().getExtent();
+ var ticksAngles = angleAxis.getTicksCoords();
+ var minorTickAngles = angleAxis.getMinorTicksCoords();
+ var labels = map(angleAxis.getViewLabels(), function(labelItem) {
+ labelItem = clone(labelItem);
+ var scale4 = angleAxis.scale;
+ var tickValue = scale4.type === "ordinal" ? scale4.getRawOrdinalNumber(labelItem.tickValue) : labelItem.tickValue;
+ labelItem.coord = angleAxis.dataToCoord(tickValue);
+ return labelItem;
+ });
+ fixAngleOverlap(labels);
+ fixAngleOverlap(ticksAngles);
+ each(elementList2, function(name) {
+ if (angleAxisModel.get([name, "show"]) && (!angleAxis.scale.isBlank() || name === "axisLine")) {
+ angelAxisElementsBuilders[name](this.group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels);
+ }
+ }, this);
+ };
+ AngleAxisView2.type = "angleAxis";
+ return AngleAxisView2;
+}(AxisView_default);
+var angelAxisElementsBuilders = {
+ axisLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
+ var lineStyleModel = angleAxisModel.getModel(["axisLine", "lineStyle"]);
+ var angleAxis = polar.getAngleAxis();
+ var RADIAN4 = Math.PI / 180;
+ var angleExtent = angleAxis.getExtent();
+ var rId = getRadiusIdx(polar);
+ var r0Id = rId ? 0 : 1;
+ var shape;
+ var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc";
+ if (radiusExtent[r0Id] === 0) {
+ shape = new graphic_exports[shapeType]({
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r: radiusExtent[rId],
+ startAngle: -angleExtent[0] * RADIAN4,
+ endAngle: -angleExtent[1] * RADIAN4,
+ clockwise: angleAxis.inverse
+ },
+ style: lineStyleModel.getLineStyle(),
+ z2: 1,
+ silent: true
+ });
+ } else {
+ shape = new Ring_default({
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r: radiusExtent[rId],
+ r0: radiusExtent[r0Id]
+ },
+ style: lineStyleModel.getLineStyle(),
+ z2: 1,
+ silent: true
+ });
+ }
+ shape.style.fill = null;
+ group.add(shape);
+ },
+ axisTick: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
+ var tickModel = angleAxisModel.getModel("axisTick");
+ var tickLen = (tickModel.get("inside") ? -1 : 1) * tickModel.get("length");
+ var radius = radiusExtent[getRadiusIdx(polar)];
+ var lines = map(ticksAngles, function(tickAngleItem) {
+ return new Line_default({
+ shape: getAxisLineShape(polar, [radius, radius + tickLen], tickAngleItem.coord)
+ });
+ });
+ group.add(mergePath2(lines, {
+ style: defaults(tickModel.getModel("lineStyle").getLineStyle(), {
+ stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"])
+ })
+ }));
+ },
+ minorTick: function(group, angleAxisModel, polar, tickAngles, minorTickAngles, radiusExtent) {
+ if (!minorTickAngles.length) {
+ return;
+ }
+ var tickModel = angleAxisModel.getModel("axisTick");
+ var minorTickModel = angleAxisModel.getModel("minorTick");
+ var tickLen = (tickModel.get("inside") ? -1 : 1) * minorTickModel.get("length");
+ var radius = radiusExtent[getRadiusIdx(polar)];
+ var lines = [];
+ for (var i = 0; i < minorTickAngles.length; i++) {
+ for (var k = 0; k < minorTickAngles[i].length; k++) {
+ lines.push(new Line_default({
+ shape: getAxisLineShape(polar, [radius, radius + tickLen], minorTickAngles[i][k].coord)
+ }));
+ }
+ }
+ group.add(mergePath2(lines, {
+ style: defaults(minorTickModel.getModel("lineStyle").getLineStyle(), defaults(tickModel.getLineStyle(), {
+ stroke: angleAxisModel.get(["axisLine", "lineStyle", "color"])
+ }))
+ }));
+ },
+ axisLabel: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent, labels) {
+ var rawCategoryData = angleAxisModel.getCategories(true);
+ var commonLabelModel = angleAxisModel.getModel("axisLabel");
+ var labelMargin = commonLabelModel.get("margin");
+ var triggerEvent = angleAxisModel.get("triggerEvent");
+ each(labels, function(labelItem, idx) {
+ var labelModel = commonLabelModel;
+ var tickValue = labelItem.tickValue;
+ var r = radiusExtent[getRadiusIdx(polar)];
+ var p = polar.coordToPoint([r + labelMargin, labelItem.coord]);
+ var cx = polar.cx;
+ var cy = polar.cy;
+ var labelTextAlign = Math.abs(p[0] - cx) / r < 0.3 ? "center" : p[0] > cx ? "left" : "right";
+ var labelTextVerticalAlign = Math.abs(p[1] - cy) / r < 0.3 ? "middle" : p[1] > cy ? "top" : "bottom";
+ if (rawCategoryData && rawCategoryData[tickValue]) {
+ var rawCategoryItem = rawCategoryData[tickValue];
+ if (isObject(rawCategoryItem) && rawCategoryItem.textStyle) {
+ labelModel = new Model_default(rawCategoryItem.textStyle, commonLabelModel, commonLabelModel.ecModel);
+ }
+ }
+ var textEl = new Text_default({
+ silent: AxisBuilder_default.isLabelSilent(angleAxisModel),
+ style: createTextStyle(labelModel, {
+ x: p[0],
+ y: p[1],
+ fill: labelModel.getTextColor() || angleAxisModel.get(["axisLine", "lineStyle", "color"]),
+ text: labelItem.formattedLabel,
+ align: labelTextAlign,
+ verticalAlign: labelTextVerticalAlign
+ })
+ });
+ group.add(textEl);
+ if (triggerEvent) {
+ var eventData = AxisBuilder_default.makeAxisEventDataBase(angleAxisModel);
+ eventData.targetType = "axisLabel";
+ eventData.value = labelItem.rawLabel;
+ getECData(textEl).eventData = eventData;
+ }
+ }, this);
+ },
+ splitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
+ var splitLineModel = angleAxisModel.getModel("splitLine");
+ var lineStyleModel = splitLineModel.getModel("lineStyle");
+ var lineColors = lineStyleModel.get("color");
+ var lineCount = 0;
+ lineColors = lineColors instanceof Array ? lineColors : [lineColors];
+ var splitLines = [];
+ for (var i = 0; i < ticksAngles.length; i++) {
+ var colorIndex = lineCount++ % lineColors.length;
+ splitLines[colorIndex] = splitLines[colorIndex] || [];
+ splitLines[colorIndex].push(new Line_default({
+ shape: getAxisLineShape(polar, radiusExtent, ticksAngles[i].coord)
+ }));
+ }
+ for (var i = 0; i < splitLines.length; i++) {
+ group.add(mergePath2(splitLines[i], {
+ style: defaults({
+ stroke: lineColors[i % lineColors.length]
+ }, lineStyleModel.getLineStyle()),
+ silent: true,
+ z: angleAxisModel.get("z")
+ }));
+ }
+ },
+ minorSplitLine: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
+ if (!minorTickAngles.length) {
+ return;
+ }
+ var minorSplitLineModel = angleAxisModel.getModel("minorSplitLine");
+ var lineStyleModel = minorSplitLineModel.getModel("lineStyle");
+ var lines = [];
+ for (var i = 0; i < minorTickAngles.length; i++) {
+ for (var k = 0; k < minorTickAngles[i].length; k++) {
+ lines.push(new Line_default({
+ shape: getAxisLineShape(polar, radiusExtent, minorTickAngles[i][k].coord)
+ }));
+ }
+ }
+ group.add(mergePath2(lines, {
+ style: lineStyleModel.getLineStyle(),
+ silent: true,
+ z: angleAxisModel.get("z")
+ }));
+ },
+ splitArea: function(group, angleAxisModel, polar, ticksAngles, minorTickAngles, radiusExtent) {
+ if (!ticksAngles.length) {
+ return;
+ }
+ var splitAreaModel = angleAxisModel.getModel("splitArea");
+ var areaStyleModel = splitAreaModel.getModel("areaStyle");
+ var areaColors = areaStyleModel.get("color");
+ var lineCount = 0;
+ areaColors = areaColors instanceof Array ? areaColors : [areaColors];
+ var splitAreas = [];
+ var RADIAN4 = Math.PI / 180;
+ var prevAngle = -ticksAngles[0].coord * RADIAN4;
+ var r0 = Math.min(radiusExtent[0], radiusExtent[1]);
+ var r1 = Math.max(radiusExtent[0], radiusExtent[1]);
+ var clockwise = angleAxisModel.get("clockwise");
+ for (var i = 1, len2 = ticksAngles.length; i <= len2; i++) {
+ var coord = i === len2 ? ticksAngles[0].coord : ticksAngles[i].coord;
+ var colorIndex = lineCount++ % areaColors.length;
+ splitAreas[colorIndex] = splitAreas[colorIndex] || [];
+ splitAreas[colorIndex].push(new Sector_default({
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r0,
+ r: r1,
+ startAngle: prevAngle,
+ endAngle: -coord * RADIAN4,
+ clockwise
+ },
+ silent: true
+ }));
+ prevAngle = -coord * RADIAN4;
+ }
+ for (var i = 0; i < splitAreas.length; i++) {
+ group.add(mergePath2(splitAreas[i], {
+ style: defaults({
+ fill: areaColors[i % areaColors.length]
+ }, areaStyleModel.getAreaStyle()),
+ silent: true
+ }));
+ }
+ }
+};
+var AngleAxisView_default = AngleAxisView;
+
+// node_modules/echarts/lib/component/axis/RadiusAxisView.js
+var axisBuilderAttrs3 = ["axisLine", "axisTickLabel", "axisName"];
+var selfBuilderAttrs2 = ["splitLine", "splitArea", "minorSplitLine"];
+var RadiusAxisView = function(_super) {
+ __extends(RadiusAxisView2, _super);
+ function RadiusAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = RadiusAxisView2.type;
+ _this.axisPointerClass = "PolarAxisPointer";
+ return _this;
+ }
+ RadiusAxisView2.prototype.render = function(radiusAxisModel, ecModel) {
+ this.group.removeAll();
+ if (!radiusAxisModel.get("show")) {
+ return;
+ }
+ var oldAxisGroup = this._axisGroup;
+ var newAxisGroup = this._axisGroup = new Group_default();
+ this.group.add(newAxisGroup);
+ var radiusAxis = radiusAxisModel.axis;
+ var polar = radiusAxis.polar;
+ var angleAxis = polar.getAngleAxis();
+ var ticksCoords = radiusAxis.getTicksCoords();
+ var minorTicksCoords = radiusAxis.getMinorTicksCoords();
+ var axisAngle = angleAxis.getExtent()[0];
+ var radiusExtent = radiusAxis.getExtent();
+ var layout5 = layoutAxis(polar, radiusAxisModel, axisAngle);
+ var axisBuilder = new AxisBuilder_default(radiusAxisModel, layout5);
+ each(axisBuilderAttrs3, axisBuilder.add, axisBuilder);
+ newAxisGroup.add(axisBuilder.getGroup());
+ groupTransition(oldAxisGroup, newAxisGroup, radiusAxisModel);
+ each(selfBuilderAttrs2, function(name) {
+ if (radiusAxisModel.get([name, "show"]) && !radiusAxis.scale.isBlank()) {
+ axisElementBuilders2[name](this.group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords);
+ }
+ }, this);
+ };
+ RadiusAxisView2.type = "radiusAxis";
+ return RadiusAxisView2;
+}(AxisView_default);
+var axisElementBuilders2 = {
+ splitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {
+ var splitLineModel = radiusAxisModel.getModel("splitLine");
+ var lineStyleModel = splitLineModel.getModel("lineStyle");
+ var lineColors = lineStyleModel.get("color");
+ var lineCount = 0;
+ var angleAxis = polar.getAngleAxis();
+ var RADIAN4 = Math.PI / 180;
+ var angleExtent = angleAxis.getExtent();
+ var shapeType = Math.abs(angleExtent[1] - angleExtent[0]) === 360 ? "Circle" : "Arc";
+ lineColors = lineColors instanceof Array ? lineColors : [lineColors];
+ var splitLines = [];
+ for (var i = 0; i < ticksCoords.length; i++) {
+ var colorIndex = lineCount++ % lineColors.length;
+ splitLines[colorIndex] = splitLines[colorIndex] || [];
+ splitLines[colorIndex].push(new graphic_exports[shapeType]({
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r: Math.max(ticksCoords[i].coord, 0),
+ startAngle: -angleExtent[0] * RADIAN4,
+ endAngle: -angleExtent[1] * RADIAN4,
+ clockwise: angleAxis.inverse
+ }
+ }));
+ }
+ for (var i = 0; i < splitLines.length; i++) {
+ group.add(mergePath2(splitLines[i], {
+ style: defaults({
+ stroke: lineColors[i % lineColors.length],
+ fill: null
+ }, lineStyleModel.getLineStyle()),
+ silent: true
+ }));
+ }
+ },
+ minorSplitLine: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords, minorTicksCoords) {
+ if (!minorTicksCoords.length) {
+ return;
+ }
+ var minorSplitLineModel = radiusAxisModel.getModel("minorSplitLine");
+ var lineStyleModel = minorSplitLineModel.getModel("lineStyle");
+ var lines = [];
+ for (var i = 0; i < minorTicksCoords.length; i++) {
+ for (var k = 0; k < minorTicksCoords[i].length; k++) {
+ lines.push(new Circle_default({
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r: minorTicksCoords[i][k].coord
+ }
+ }));
+ }
+ }
+ group.add(mergePath2(lines, {
+ style: defaults({
+ fill: null
+ }, lineStyleModel.getLineStyle()),
+ silent: true
+ }));
+ },
+ splitArea: function(group, radiusAxisModel, polar, axisAngle, radiusExtent, ticksCoords) {
+ if (!ticksCoords.length) {
+ return;
+ }
+ var splitAreaModel = radiusAxisModel.getModel("splitArea");
+ var areaStyleModel = splitAreaModel.getModel("areaStyle");
+ var areaColors = areaStyleModel.get("color");
+ var lineCount = 0;
+ areaColors = areaColors instanceof Array ? areaColors : [areaColors];
+ var splitAreas = [];
+ var prevRadius = ticksCoords[0].coord;
+ for (var i = 1; i < ticksCoords.length; i++) {
+ var colorIndex = lineCount++ % areaColors.length;
+ splitAreas[colorIndex] = splitAreas[colorIndex] || [];
+ splitAreas[colorIndex].push(new Sector_default({
+ shape: {
+ cx: polar.cx,
+ cy: polar.cy,
+ r0: prevRadius,
+ r: ticksCoords[i].coord,
+ startAngle: 0,
+ endAngle: Math.PI * 2
+ },
+ silent: true
+ }));
+ prevRadius = ticksCoords[i].coord;
+ }
+ for (var i = 0; i < splitAreas.length; i++) {
+ group.add(mergePath2(splitAreas[i], {
+ style: defaults({
+ fill: areaColors[i % areaColors.length]
+ }, areaStyleModel.getAreaStyle()),
+ silent: true
+ }));
+ }
+ }
+};
+function layoutAxis(polar, radiusAxisModel, axisAngle) {
+ return {
+ position: [polar.cx, polar.cy],
+ rotation: axisAngle / 180 * Math.PI,
+ labelDirection: -1,
+ tickDirection: -1,
+ nameDirection: 1,
+ labelRotate: radiusAxisModel.getModel("axisLabel").get("rotate"),
+ z2: 1
+ };
+}
+var RadiusAxisView_default = RadiusAxisView;
+
+// node_modules/echarts/lib/layout/barPolar.js
+function getSeriesStackId2(seriesModel) {
+ return seriesModel.get("stack") || "__ec_stack_" + seriesModel.seriesIndex;
+}
+function getAxisKey2(polar, axis) {
+ return axis.dim + polar.model.componentIndex;
+}
+function barLayoutPolar(seriesType2, ecModel, api) {
+ var lastStackCoords = {};
+ var barWidthAndOffset = calRadialBar(filter(ecModel.getSeriesByType(seriesType2), function(seriesModel) {
+ return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === "polar";
+ }));
+ ecModel.eachSeriesByType(seriesType2, function(seriesModel) {
+ if (seriesModel.coordinateSystem.type !== "polar") {
+ return;
+ }
+ var data = seriesModel.getData();
+ var polar = seriesModel.coordinateSystem;
+ var baseAxis = polar.getBaseAxis();
+ var axisKey = getAxisKey2(polar, baseAxis);
+ var stackId = getSeriesStackId2(seriesModel);
+ var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];
+ var columnOffset = columnLayoutInfo.offset;
+ var columnWidth = columnLayoutInfo.width;
+ var valueAxis2 = polar.getOtherAxis(baseAxis);
+ var cx = seriesModel.coordinateSystem.cx;
+ var cy = seriesModel.coordinateSystem.cy;
+ var barMinHeight = seriesModel.get("barMinHeight") || 0;
+ var barMinAngle = seriesModel.get("barMinAngle") || 0;
+ lastStackCoords[stackId] = lastStackCoords[stackId] || [];
+ var valueDim = data.mapDimension(valueAxis2.dim);
+ var baseDim = data.mapDimension(baseAxis.dim);
+ var stacked = isDimensionStacked(data, valueDim);
+ var clampLayout = baseAxis.dim !== "radius" || !seriesModel.get("roundCap", true);
+ var valueAxisModel = valueAxis2.model;
+ var startValue = valueAxisModel.get("startValue");
+ var valueAxisStart = valueAxis2.dataToCoord(startValue || 0);
+ for (var idx = 0, len2 = data.count(); idx < len2; idx++) {
+ var value = data.get(valueDim, idx);
+ var baseValue = data.get(baseDim, idx);
+ var sign = value >= 0 ? "p" : "n";
+ var baseCoord = valueAxisStart;
+ if (stacked) {
+ if (!lastStackCoords[stackId][baseValue]) {
+ lastStackCoords[stackId][baseValue] = {
+ p: valueAxisStart,
+ n: valueAxisStart
+ };
+ }
+ baseCoord = lastStackCoords[stackId][baseValue][sign];
+ }
+ var r0 = void 0;
+ var r = void 0;
+ var startAngle = void 0;
+ var endAngle = void 0;
+ if (valueAxis2.dim === "radius") {
+ var radiusSpan = valueAxis2.dataToCoord(value) - valueAxisStart;
+ var angle = baseAxis.dataToCoord(baseValue);
+ if (Math.abs(radiusSpan) < barMinHeight) {
+ radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;
+ }
+ r0 = baseCoord;
+ r = baseCoord + radiusSpan;
+ startAngle = angle - columnOffset;
+ endAngle = startAngle - columnWidth;
+ stacked && (lastStackCoords[stackId][baseValue][sign] = r);
+ } else {
+ var angleSpan = valueAxis2.dataToCoord(value, clampLayout) - valueAxisStart;
+ var radius = baseAxis.dataToCoord(baseValue);
+ if (Math.abs(angleSpan) < barMinAngle) {
+ angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;
+ }
+ r0 = radius + columnOffset;
+ r = r0 + columnWidth;
+ startAngle = baseCoord;
+ endAngle = baseCoord + angleSpan;
+ stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);
+ }
+ data.setItemLayout(idx, {
+ cx,
+ cy,
+ r0,
+ r,
+ startAngle: -startAngle * Math.PI / 180,
+ endAngle: -endAngle * Math.PI / 180,
+ clockwise: startAngle >= endAngle
+ });
+ }
+ });
+}
+function calRadialBar(barSeries) {
+ var columnsMap = {};
+ each(barSeries, function(seriesModel, idx) {
+ var data = seriesModel.getData();
+ var polar = seriesModel.coordinateSystem;
+ var baseAxis = polar.getBaseAxis();
+ var axisKey = getAxisKey2(polar, baseAxis);
+ var axisExtent = baseAxis.getExtent();
+ var bandWidth = baseAxis.type === "category" ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();
+ var columnsOnAxis = columnsMap[axisKey] || {
+ bandWidth,
+ remainedWidth: bandWidth,
+ autoWidthCount: 0,
+ categoryGap: "20%",
+ gap: "30%",
+ stacks: {}
+ };
+ var stacks = columnsOnAxis.stacks;
+ columnsMap[axisKey] = columnsOnAxis;
+ var stackId = getSeriesStackId2(seriesModel);
+ if (!stacks[stackId]) {
+ columnsOnAxis.autoWidthCount++;
+ }
+ stacks[stackId] = stacks[stackId] || {
+ width: 0,
+ maxWidth: 0
+ };
+ var barWidth = parsePercent2(seriesModel.get("barWidth"), bandWidth);
+ var barMaxWidth = parsePercent2(seriesModel.get("barMaxWidth"), bandWidth);
+ var barGap = seriesModel.get("barGap");
+ var barCategoryGap = seriesModel.get("barCategoryGap");
+ if (barWidth && !stacks[stackId].width) {
+ barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);
+ stacks[stackId].width = barWidth;
+ columnsOnAxis.remainedWidth -= barWidth;
+ }
+ barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);
+ barGap != null && (columnsOnAxis.gap = barGap);
+ barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);
+ });
+ var result = {};
+ each(columnsMap, function(columnsOnAxis, coordSysName) {
+ result[coordSysName] = {};
+ var stacks = columnsOnAxis.stacks;
+ var bandWidth = columnsOnAxis.bandWidth;
+ var categoryGap = parsePercent2(columnsOnAxis.categoryGap, bandWidth);
+ var barGapPercent = parsePercent2(columnsOnAxis.gap, 1);
+ var remainedWidth = columnsOnAxis.remainedWidth;
+ var autoWidthCount = columnsOnAxis.autoWidthCount;
+ var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
+ autoWidth = Math.max(autoWidth, 0);
+ each(stacks, function(column, stack) {
+ var maxWidth = column.maxWidth;
+ if (maxWidth && maxWidth < autoWidth) {
+ maxWidth = Math.min(maxWidth, remainedWidth);
+ if (column.width) {
+ maxWidth = Math.min(maxWidth, column.width);
+ }
+ remainedWidth -= maxWidth;
+ column.width = maxWidth;
+ autoWidthCount--;
+ }
+ });
+ autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);
+ autoWidth = Math.max(autoWidth, 0);
+ var widthSum = 0;
+ var lastColumn;
+ each(stacks, function(column, idx) {
+ if (!column.width) {
+ column.width = autoWidth;
+ }
+ lastColumn = column;
+ widthSum += column.width * (1 + barGapPercent);
+ });
+ if (lastColumn) {
+ widthSum -= lastColumn.width * barGapPercent;
+ }
+ var offset = -widthSum / 2;
+ each(stacks, function(column, stackId) {
+ result[coordSysName][stackId] = result[coordSysName][stackId] || {
+ offset,
+ width: column.width
+ };
+ offset += column.width * (1 + barGapPercent);
+ });
+ });
+ return result;
+}
+var barPolar_default = barLayoutPolar;
+
+// node_modules/echarts/lib/component/polar/install.js
+var angleAxisExtraOption = {
+ startAngle: 90,
+ clockwise: true,
+ splitNumber: 12,
+ axisLabel: {
+ rotate: 0
+ }
+};
+var radiusAxisExtraOption = {
+ splitNumber: 5
+};
+var PolarView = function(_super) {
+ __extends(PolarView2, _super);
+ function PolarView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = PolarView2.type;
+ return _this;
+ }
+ PolarView2.type = "polar";
+ return PolarView2;
+}(Component_default2);
+function install31(registers) {
+ use(install29);
+ AxisView_default.registerAxisPointerClass("PolarAxisPointer", PolarAxisPointer_default);
+ registers.registerCoordinateSystem("polar", polarCreator_default);
+ registers.registerComponentModel(PolarModel_default);
+ registers.registerComponentView(PolarView);
+ axisModelCreator(registers, "angle", AngleAxisModel, angleAxisExtraOption);
+ axisModelCreator(registers, "radius", RadiusAxisModel, radiusAxisExtraOption);
+ registers.registerComponentView(AngleAxisView_default);
+ registers.registerComponentView(RadiusAxisView_default);
+ registers.registerLayout(curry(barPolar_default, "bar"));
+}
+
+// node_modules/echarts/lib/coord/single/singleAxisHelper.js
+function layout3(axisModel, opt) {
+ opt = opt || {};
+ var single = axisModel.coordinateSystem;
+ var axis = axisModel.axis;
+ var layout5 = {};
+ var axisPosition = axis.position;
+ var orient = axis.orient;
+ var rect = single.getRect();
+ var rectBound = [rect.x, rect.x + rect.width, rect.y, rect.y + rect.height];
+ var positionMap = {
+ horizontal: {
+ top: rectBound[2],
+ bottom: rectBound[3]
+ },
+ vertical: {
+ left: rectBound[0],
+ right: rectBound[1]
+ }
+ };
+ layout5.position = [orient === "vertical" ? positionMap.vertical[axisPosition] : rectBound[0], orient === "horizontal" ? positionMap.horizontal[axisPosition] : rectBound[3]];
+ var r = {
+ horizontal: 0,
+ vertical: 1
+ };
+ layout5.rotation = Math.PI / 2 * r[orient];
+ var directionMap = {
+ top: -1,
+ bottom: 1,
+ right: 1,
+ left: -1
+ };
+ layout5.labelDirection = layout5.tickDirection = layout5.nameDirection = directionMap[axisPosition];
+ if (axisModel.get(["axisTick", "inside"])) {
+ layout5.tickDirection = -layout5.tickDirection;
+ }
+ if (retrieve(opt.labelInside, axisModel.get(["axisLabel", "inside"]))) {
+ layout5.labelDirection = -layout5.labelDirection;
+ }
+ var labelRotation = opt.rotate;
+ labelRotation == null && (labelRotation = axisModel.get(["axisLabel", "rotate"]));
+ layout5.labelRotation = axisPosition === "top" ? -labelRotation : labelRotation;
+ layout5.z2 = 1;
+ return layout5;
+}
+
+// node_modules/echarts/lib/component/axis/SingleAxisView.js
+var axisBuilderAttrs4 = ["axisLine", "axisTickLabel", "axisName"];
+var selfBuilderAttrs3 = ["splitArea", "splitLine"];
+var SingleAxisView = function(_super) {
+ __extends(SingleAxisView2, _super);
+ function SingleAxisView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SingleAxisView2.type;
+ _this.axisPointerClass = "SingleAxisPointer";
+ return _this;
+ }
+ SingleAxisView2.prototype.render = function(axisModel, ecModel, api, payload) {
+ var group = this.group;
+ group.removeAll();
+ var oldAxisGroup = this._axisGroup;
+ this._axisGroup = new Group_default();
+ var layout5 = layout3(axisModel);
+ var axisBuilder = new AxisBuilder_default(axisModel, layout5);
+ each(axisBuilderAttrs4, axisBuilder.add, axisBuilder);
+ group.add(this._axisGroup);
+ group.add(axisBuilder.getGroup());
+ each(selfBuilderAttrs3, function(name) {
+ if (axisModel.get([name, "show"])) {
+ axisElementBuilders3[name](this, this.group, this._axisGroup, axisModel);
+ }
+ }, this);
+ groupTransition(oldAxisGroup, this._axisGroup, axisModel);
+ _super.prototype.render.call(this, axisModel, ecModel, api, payload);
+ };
+ SingleAxisView2.prototype.remove = function() {
+ rectCoordAxisHandleRemove(this);
+ };
+ SingleAxisView2.type = "singleAxis";
+ return SingleAxisView2;
+}(AxisView_default);
+var axisElementBuilders3 = {
+ splitLine: function(axisView, group, axisGroup, axisModel) {
+ var axis = axisModel.axis;
+ if (axis.scale.isBlank()) {
+ return;
+ }
+ var splitLineModel = axisModel.getModel("splitLine");
+ var lineStyleModel = splitLineModel.getModel("lineStyle");
+ var lineColors = lineStyleModel.get("color");
+ lineColors = lineColors instanceof Array ? lineColors : [lineColors];
+ var lineWidth = lineStyleModel.get("width");
+ var gridRect = axisModel.coordinateSystem.getRect();
+ var isHorizontal = axis.isHorizontal();
+ var splitLines = [];
+ var lineCount = 0;
+ var ticksCoords = axis.getTicksCoords({
+ tickModel: splitLineModel
+ });
+ var p1 = [];
+ var p2 = [];
+ for (var i = 0; i < ticksCoords.length; ++i) {
+ var tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
+ if (isHorizontal) {
+ p1[0] = tickCoord;
+ p1[1] = gridRect.y;
+ p2[0] = tickCoord;
+ p2[1] = gridRect.y + gridRect.height;
+ } else {
+ p1[0] = gridRect.x;
+ p1[1] = tickCoord;
+ p2[0] = gridRect.x + gridRect.width;
+ p2[1] = tickCoord;
+ }
+ var line = new Line_default({
+ shape: {
+ x1: p1[0],
+ y1: p1[1],
+ x2: p2[0],
+ y2: p2[1]
+ },
+ silent: true
+ });
+ subPixelOptimizeLine2(line.shape, lineWidth);
+ var colorIndex = lineCount++ % lineColors.length;
+ splitLines[colorIndex] = splitLines[colorIndex] || [];
+ splitLines[colorIndex].push(line);
+ }
+ var lineStyle = lineStyleModel.getLineStyle(["color"]);
+ for (var i = 0; i < splitLines.length; ++i) {
+ group.add(mergePath2(splitLines[i], {
+ style: defaults({
+ stroke: lineColors[i % lineColors.length]
+ }, lineStyle),
+ silent: true
+ }));
+ }
+ },
+ splitArea: function(axisView, group, axisGroup, axisModel) {
+ rectCoordAxisBuildSplitArea(axisView, axisGroup, axisModel, axisModel);
+ }
+};
+var SingleAxisView_default = SingleAxisView;
+
+// node_modules/echarts/lib/coord/single/AxisModel.js
+var SingleAxisModel = function(_super) {
+ __extends(SingleAxisModel2, _super);
+ function SingleAxisModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SingleAxisModel2.type;
+ return _this;
+ }
+ SingleAxisModel2.prototype.getCoordSysModel = function() {
+ return this;
+ };
+ SingleAxisModel2.type = "singleAxis";
+ SingleAxisModel2.layoutMode = "box";
+ SingleAxisModel2.defaultOption = {
+ left: "5%",
+ top: "5%",
+ right: "5%",
+ bottom: "5%",
+ type: "value",
+ position: "bottom",
+ orient: "horizontal",
+ axisLine: {
+ show: true,
+ lineStyle: {
+ width: 1,
+ type: "solid"
+ }
+ },
+ tooltip: {
+ show: true
+ },
+ axisTick: {
+ show: true,
+ length: 6,
+ lineStyle: {
+ width: 1
+ }
+ },
+ axisLabel: {
+ show: true,
+ interval: "auto"
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ type: "dashed",
+ opacity: 0.2
+ }
+ }
+ };
+ return SingleAxisModel2;
+}(Component_default);
+mixin(SingleAxisModel, AxisModelCommonMixin.prototype);
+var AxisModel_default2 = SingleAxisModel;
+
+// node_modules/echarts/lib/coord/single/SingleAxis.js
+var SingleAxis = function(_super) {
+ __extends(SingleAxis2, _super);
+ function SingleAxis2(dim, scale4, coordExtent, axisType, position2) {
+ var _this = _super.call(this, dim, scale4, coordExtent) || this;
+ _this.type = axisType || "value";
+ _this.position = position2 || "bottom";
+ return _this;
+ }
+ SingleAxis2.prototype.isHorizontal = function() {
+ var position2 = this.position;
+ return position2 === "top" || position2 === "bottom";
+ };
+ SingleAxis2.prototype.pointToData = function(point, clamp2) {
+ return this.coordinateSystem.pointToData(point)[0];
+ };
+ return SingleAxis2;
+}(Axis_default);
+var SingleAxis_default = SingleAxis;
+
+// node_modules/echarts/lib/coord/single/Single.js
+var singleDimensions = ["single"];
+var Single = function() {
+ function Single2(axisModel, ecModel, api) {
+ this.type = "single";
+ this.dimension = "single";
+ this.dimensions = singleDimensions;
+ this.axisPointerEnabled = true;
+ this.model = axisModel;
+ this._init(axisModel, ecModel, api);
+ }
+ Single2.prototype._init = function(axisModel, ecModel, api) {
+ var dim = this.dimension;
+ var axis = new SingleAxis_default(dim, createScaleByModel(axisModel), [0, 0], axisModel.get("type"), axisModel.get("position"));
+ var isCategory2 = axis.type === "category";
+ axis.onBand = isCategory2 && axisModel.get("boundaryGap");
+ axis.inverse = axisModel.get("inverse");
+ axis.orient = axisModel.get("orient");
+ axisModel.axis = axis;
+ axis.model = axisModel;
+ axis.coordinateSystem = this;
+ this._axis = axis;
+ };
+ Single2.prototype.update = function(ecModel, api) {
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.coordinateSystem === this) {
+ var data_1 = seriesModel.getData();
+ each(data_1.mapDimensionsAll(this.dimension), function(dim) {
+ this._axis.scale.unionExtentFromData(data_1, dim);
+ }, this);
+ niceScaleExtent(this._axis.scale, this._axis.model);
+ }
+ }, this);
+ };
+ Single2.prototype.resize = function(axisModel, api) {
+ this._rect = getLayoutRect({
+ left: axisModel.get("left"),
+ top: axisModel.get("top"),
+ right: axisModel.get("right"),
+ bottom: axisModel.get("bottom"),
+ width: axisModel.get("width"),
+ height: axisModel.get("height")
+ }, {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+ this._adjustAxis();
+ };
+ Single2.prototype.getRect = function() {
+ return this._rect;
+ };
+ Single2.prototype._adjustAxis = function() {
+ var rect = this._rect;
+ var axis = this._axis;
+ var isHorizontal = axis.isHorizontal();
+ var extent3 = isHorizontal ? [0, rect.width] : [0, rect.height];
+ var idx = axis.inverse ? 1 : 0;
+ axis.setExtent(extent3[idx], extent3[1 - idx]);
+ this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y);
+ };
+ Single2.prototype._updateAxisTransform = function(axis, coordBase) {
+ var axisExtent = axis.getExtent();
+ var extentSum = axisExtent[0] + axisExtent[1];
+ var isHorizontal = axis.isHorizontal();
+ axis.toGlobalCoord = isHorizontal ? function(coord) {
+ return coord + coordBase;
+ } : function(coord) {
+ return extentSum - coord + coordBase;
+ };
+ axis.toLocalCoord = isHorizontal ? function(coord) {
+ return coord - coordBase;
+ } : function(coord) {
+ return extentSum - coord + coordBase;
+ };
+ };
+ Single2.prototype.getAxis = function() {
+ return this._axis;
+ };
+ Single2.prototype.getBaseAxis = function() {
+ return this._axis;
+ };
+ Single2.prototype.getAxes = function() {
+ return [this._axis];
+ };
+ Single2.prototype.getTooltipAxes = function() {
+ return {
+ baseAxes: [this.getAxis()],
+ otherAxes: []
+ };
+ };
+ Single2.prototype.containPoint = function(point) {
+ var rect = this.getRect();
+ var axis = this.getAxis();
+ var orient = axis.orient;
+ if (orient === "horizontal") {
+ return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height;
+ } else {
+ return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height;
+ }
+ };
+ Single2.prototype.pointToData = function(point) {
+ var axis = this.getAxis();
+ return [axis.coordToData(axis.toLocalCoord(point[axis.orient === "horizontal" ? 0 : 1]))];
+ };
+ Single2.prototype.dataToPoint = function(val) {
+ var axis = this.getAxis();
+ var rect = this.getRect();
+ var pt = [];
+ var idx = axis.orient === "horizontal" ? 0 : 1;
+ if (val instanceof Array) {
+ val = val[0];
+ }
+ pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val));
+ pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2;
+ return pt;
+ };
+ Single2.prototype.convertToPixel = function(ecModel, finder, value) {
+ var coordSys = getCoordSys4(finder);
+ return coordSys === this ? this.dataToPoint(value) : null;
+ };
+ Single2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
+ var coordSys = getCoordSys4(finder);
+ return coordSys === this ? this.pointToData(pixel) : null;
+ };
+ return Single2;
+}();
+function getCoordSys4(finder) {
+ var seriesModel = finder.seriesModel;
+ var singleModel = finder.singleAxisModel;
+ return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem;
+}
+var Single_default = Single;
+
+// node_modules/echarts/lib/coord/single/singleCreator.js
+function create3(ecModel, api) {
+ var singles = [];
+ ecModel.eachComponent("singleAxis", function(axisModel, idx) {
+ var single = new Single_default(axisModel, ecModel, api);
+ single.name = "single_" + idx;
+ single.resize(axisModel, api);
+ axisModel.coordinateSystem = single;
+ singles.push(single);
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.get("coordinateSystem") === "singleAxis") {
+ var singleAxisModel = seriesModel.getReferringComponents("singleAxis", SINGLE_REFERRING).models[0];
+ seriesModel.coordinateSystem = singleAxisModel && singleAxisModel.coordinateSystem;
+ }
+ });
+ return singles;
+}
+var singleCreator = {
+ create: create3,
+ dimensions: singleDimensions
+};
+var singleCreator_default = singleCreator;
+
+// node_modules/echarts/lib/component/axisPointer/SingleAxisPointer.js
+var XY = ["x", "y"];
+var WH = ["width", "height"];
+var SingleAxisPointer = function(_super) {
+ __extends(SingleAxisPointer2, _super);
+ function SingleAxisPointer2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ SingleAxisPointer2.prototype.makeElOption = function(elOption, value, axisModel, axisPointerModel, api) {
+ var axis = axisModel.axis;
+ var coordSys = axis.coordinateSystem;
+ var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis));
+ var pixelValue = coordSys.dataToPoint(value)[0];
+ var axisPointerType = axisPointerModel.get("type");
+ if (axisPointerType && axisPointerType !== "none") {
+ var elStyle = buildElStyle(axisPointerModel);
+ var pointerOption = pointerShapeBuilder3[axisPointerType](axis, pixelValue, otherExtent);
+ pointerOption.style = elStyle;
+ elOption.graphicKey = pointerOption.type;
+ elOption.pointer = pointerOption;
+ }
+ var layoutInfo = layout3(axisModel);
+ buildCartesianSingleLabelElOption(
+ value,
+ elOption,
+ layoutInfo,
+ axisModel,
+ axisPointerModel,
+ api
+ );
+ };
+ SingleAxisPointer2.prototype.getHandleTransform = function(value, axisModel, axisPointerModel) {
+ var layoutInfo = layout3(axisModel, {
+ labelInside: false
+ });
+ layoutInfo.labelMargin = axisPointerModel.get(["handle", "margin"]);
+ var position2 = getTransformedPosition(axisModel.axis, value, layoutInfo);
+ return {
+ x: position2[0],
+ y: position2[1],
+ rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0)
+ };
+ };
+ SingleAxisPointer2.prototype.updateHandleTransform = function(transform2, delta, axisModel, axisPointerModel) {
+ var axis = axisModel.axis;
+ var coordSys = axis.coordinateSystem;
+ var dimIndex = getPointDimIndex(axis);
+ var axisExtent = getGlobalExtent(coordSys, dimIndex);
+ var currPosition = [transform2.x, transform2.y];
+ currPosition[dimIndex] += delta[dimIndex];
+ currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]);
+ currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]);
+ var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex);
+ var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2;
+ var cursorPoint = [cursorOtherValue, cursorOtherValue];
+ cursorPoint[dimIndex] = currPosition[dimIndex];
+ return {
+ x: currPosition[0],
+ y: currPosition[1],
+ rotation: transform2.rotation,
+ cursorPoint,
+ tooltipOption: {
+ verticalAlign: "middle"
+ }
+ };
+ };
+ return SingleAxisPointer2;
+}(BaseAxisPointer_default);
+var pointerShapeBuilder3 = {
+ line: function(axis, pixelValue, otherExtent) {
+ var targetShape = makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis));
+ return {
+ type: "Line",
+ subPixelOptimize: true,
+ shape: targetShape
+ };
+ },
+ shadow: function(axis, pixelValue, otherExtent) {
+ var bandWidth = axis.getBandWidth();
+ var span = otherExtent[1] - otherExtent[0];
+ return {
+ type: "Rect",
+ shape: makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis))
+ };
+ }
+};
+function getPointDimIndex(axis) {
+ return axis.isHorizontal() ? 0 : 1;
+}
+function getGlobalExtent(coordSys, dimIndex) {
+ var rect = coordSys.getRect();
+ return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]];
+}
+var SingleAxisPointer_default = SingleAxisPointer;
+
+// node_modules/echarts/lib/component/singleAxis/install.js
+var SingleView = function(_super) {
+ __extends(SingleView2, _super);
+ function SingleView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SingleView2.type;
+ return _this;
+ }
+ SingleView2.type = "single";
+ return SingleView2;
+}(Component_default2);
+function install32(registers) {
+ use(install29);
+ AxisView_default.registerAxisPointerClass("SingleAxisPointer", SingleAxisPointer_default);
+ registers.registerComponentView(SingleView);
+ registers.registerComponentView(SingleAxisView_default);
+ registers.registerComponentModel(AxisModel_default2);
+ axisModelCreator(registers, "single", AxisModel_default2, AxisModel_default2.defaultOption);
+ registers.registerCoordinateSystem("single", singleCreator_default);
+}
+
+// node_modules/echarts/lib/coord/calendar/CalendarModel.js
+var CalendarModel = function(_super) {
+ __extends(CalendarModel2, _super);
+ function CalendarModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CalendarModel2.type;
+ return _this;
+ }
+ CalendarModel2.prototype.init = function(option, parentModel, ecModel) {
+ var inputPositionParams = getLayoutParams(option);
+ _super.prototype.init.apply(this, arguments);
+ mergeAndNormalizeLayoutParams(option, inputPositionParams);
+ };
+ CalendarModel2.prototype.mergeOption = function(option) {
+ _super.prototype.mergeOption.apply(this, arguments);
+ mergeAndNormalizeLayoutParams(this.option, option);
+ };
+ CalendarModel2.prototype.getCellSize = function() {
+ return this.option.cellSize;
+ };
+ CalendarModel2.type = "calendar";
+ CalendarModel2.defaultOption = {
+ z: 2,
+ left: 80,
+ top: 60,
+ cellSize: 20,
+ orient: "horizontal",
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "#000",
+ width: 1,
+ type: "solid"
+ }
+ },
+ itemStyle: {
+ color: "#fff",
+ borderWidth: 1,
+ borderColor: "#ccc"
+ },
+ dayLabel: {
+ show: true,
+ firstDay: 0,
+ position: "start",
+ margin: "50%",
+ color: "#000"
+ },
+ monthLabel: {
+ show: true,
+ position: "start",
+ margin: 5,
+ align: "center",
+ formatter: null,
+ color: "#000"
+ },
+ yearLabel: {
+ show: true,
+ position: null,
+ margin: 30,
+ formatter: null,
+ color: "#ccc",
+ fontFamily: "sans-serif",
+ fontWeight: "bolder",
+ fontSize: 20
+ }
+ };
+ return CalendarModel2;
+}(Component_default);
+function mergeAndNormalizeLayoutParams(target, raw) {
+ var cellSize = target.cellSize;
+ var cellSizeArr;
+ if (!isArray(cellSize)) {
+ cellSizeArr = target.cellSize = [cellSize, cellSize];
+ } else {
+ cellSizeArr = cellSize;
+ }
+ if (cellSizeArr.length === 1) {
+ cellSizeArr[1] = cellSizeArr[0];
+ }
+ var ignoreSize = map([0, 1], function(hvIdx) {
+ if (sizeCalculable(raw, hvIdx)) {
+ cellSizeArr[hvIdx] = "auto";
+ }
+ return cellSizeArr[hvIdx] != null && cellSizeArr[hvIdx] !== "auto";
+ });
+ mergeLayoutParam(target, raw, {
+ type: "box",
+ ignoreSize
+ });
+}
+var CalendarModel_default = CalendarModel;
+
+// node_modules/echarts/lib/component/calendar/CalendarView.js
+var CalendarView = function(_super) {
+ __extends(CalendarView2, _super);
+ function CalendarView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = CalendarView2.type;
+ return _this;
+ }
+ CalendarView2.prototype.render = function(calendarModel, ecModel, api) {
+ var group = this.group;
+ group.removeAll();
+ var coordSys = calendarModel.coordinateSystem;
+ var rangeData = coordSys.getRangeInfo();
+ var orient = coordSys.getOrient();
+ var localeModel = ecModel.getLocaleModel();
+ this._renderDayRect(calendarModel, rangeData, group);
+ this._renderLines(calendarModel, rangeData, orient, group);
+ this._renderYearText(calendarModel, rangeData, orient, group);
+ this._renderMonthText(calendarModel, localeModel, orient, group);
+ this._renderWeekText(calendarModel, localeModel, rangeData, orient, group);
+ };
+ CalendarView2.prototype._renderDayRect = function(calendarModel, rangeData, group) {
+ var coordSys = calendarModel.coordinateSystem;
+ var itemRectStyleModel = calendarModel.getModel("itemStyle").getItemStyle();
+ var sw = coordSys.getCellWidth();
+ var sh = coordSys.getCellHeight();
+ for (var i = rangeData.start.time; i <= rangeData.end.time; i = coordSys.getNextNDay(i, 1).time) {
+ var point = coordSys.dataToRect([i], false).tl;
+ var rect = new Rect_default({
+ shape: {
+ x: point[0],
+ y: point[1],
+ width: sw,
+ height: sh
+ },
+ cursor: "default",
+ style: itemRectStyleModel
+ });
+ group.add(rect);
+ }
+ };
+ CalendarView2.prototype._renderLines = function(calendarModel, rangeData, orient, group) {
+ var self2 = this;
+ var coordSys = calendarModel.coordinateSystem;
+ var lineStyleModel = calendarModel.getModel(["splitLine", "lineStyle"]).getLineStyle();
+ var show = calendarModel.get(["splitLine", "show"]);
+ var lineWidth = lineStyleModel.lineWidth;
+ this._tlpoints = [];
+ this._blpoints = [];
+ this._firstDayOfMonth = [];
+ this._firstDayPoints = [];
+ var firstDay = rangeData.start;
+ for (var i = 0; firstDay.time <= rangeData.end.time; i++) {
+ addPoints(firstDay.formatedDate);
+ if (i === 0) {
+ firstDay = coordSys.getDateInfo(rangeData.start.y + "-" + rangeData.start.m);
+ }
+ var date = firstDay.date;
+ date.setMonth(date.getMonth() + 1);
+ firstDay = coordSys.getDateInfo(date);
+ }
+ addPoints(coordSys.getNextNDay(rangeData.end.time, 1).formatedDate);
+ function addPoints(date2) {
+ self2._firstDayOfMonth.push(coordSys.getDateInfo(date2));
+ self2._firstDayPoints.push(coordSys.dataToRect([date2], false).tl);
+ var points4 = self2._getLinePointsOfOneWeek(calendarModel, date2, orient);
+ self2._tlpoints.push(points4[0]);
+ self2._blpoints.push(points4[points4.length - 1]);
+ show && self2._drawSplitline(points4, lineStyleModel, group);
+ }
+ show && this._drawSplitline(self2._getEdgesPoints(self2._tlpoints, lineWidth, orient), lineStyleModel, group);
+ show && this._drawSplitline(self2._getEdgesPoints(self2._blpoints, lineWidth, orient), lineStyleModel, group);
+ };
+ CalendarView2.prototype._getEdgesPoints = function(points4, lineWidth, orient) {
+ var rs = [points4[0].slice(), points4[points4.length - 1].slice()];
+ var idx = orient === "horizontal" ? 0 : 1;
+ rs[0][idx] = rs[0][idx] - lineWidth / 2;
+ rs[1][idx] = rs[1][idx] + lineWidth / 2;
+ return rs;
+ };
+ CalendarView2.prototype._drawSplitline = function(points4, lineStyle, group) {
+ var poyline = new Polyline_default({
+ z2: 20,
+ shape: {
+ points: points4
+ },
+ style: lineStyle
+ });
+ group.add(poyline);
+ };
+ CalendarView2.prototype._getLinePointsOfOneWeek = function(calendarModel, date, orient) {
+ var coordSys = calendarModel.coordinateSystem;
+ var parsedDate = coordSys.getDateInfo(date);
+ var points4 = [];
+ for (var i = 0; i < 7; i++) {
+ var tmpD = coordSys.getNextNDay(parsedDate.time, i);
+ var point = coordSys.dataToRect([tmpD.time], false);
+ points4[2 * tmpD.day] = point.tl;
+ points4[2 * tmpD.day + 1] = point[orient === "horizontal" ? "bl" : "tr"];
+ }
+ return points4;
+ };
+ CalendarView2.prototype._formatterLabel = function(formatter, params) {
+ if (isString(formatter) && formatter) {
+ return formatTplSimple(formatter, params);
+ }
+ if (isFunction(formatter)) {
+ return formatter(params);
+ }
+ return params.nameMap;
+ };
+ CalendarView2.prototype._yearTextPositionControl = function(textEl, point, orient, position2, margin) {
+ var x = point[0];
+ var y = point[1];
+ var aligns = ["center", "bottom"];
+ if (position2 === "bottom") {
+ y += margin;
+ aligns = ["center", "top"];
+ } else if (position2 === "left") {
+ x -= margin;
+ } else if (position2 === "right") {
+ x += margin;
+ aligns = ["center", "top"];
+ } else {
+ y -= margin;
+ }
+ var rotate2 = 0;
+ if (position2 === "left" || position2 === "right") {
+ rotate2 = Math.PI / 2;
+ }
+ return {
+ rotation: rotate2,
+ x,
+ y,
+ style: {
+ align: aligns[0],
+ verticalAlign: aligns[1]
+ }
+ };
+ };
+ CalendarView2.prototype._renderYearText = function(calendarModel, rangeData, orient, group) {
+ var yearLabel = calendarModel.getModel("yearLabel");
+ if (!yearLabel.get("show")) {
+ return;
+ }
+ var margin = yearLabel.get("margin");
+ var pos = yearLabel.get("position");
+ if (!pos) {
+ pos = orient !== "horizontal" ? "top" : "left";
+ }
+ var points4 = [this._tlpoints[this._tlpoints.length - 1], this._blpoints[0]];
+ var xc = (points4[0][0] + points4[1][0]) / 2;
+ var yc = (points4[0][1] + points4[1][1]) / 2;
+ var idx = orient === "horizontal" ? 0 : 1;
+ var posPoints = {
+ top: [xc, points4[idx][1]],
+ bottom: [xc, points4[1 - idx][1]],
+ left: [points4[1 - idx][0], yc],
+ right: [points4[idx][0], yc]
+ };
+ var name = rangeData.start.y;
+ if (+rangeData.end.y > +rangeData.start.y) {
+ name = name + "-" + rangeData.end.y;
+ }
+ var formatter = yearLabel.get("formatter");
+ var params = {
+ start: rangeData.start.y,
+ end: rangeData.end.y,
+ nameMap: name
+ };
+ var content = this._formatterLabel(formatter, params);
+ var yearText = new Text_default({
+ z2: 30,
+ style: createTextStyle(yearLabel, {
+ text: content
+ }),
+ silent: yearLabel.get("silent")
+ });
+ yearText.attr(this._yearTextPositionControl(yearText, posPoints[pos], orient, pos, margin));
+ group.add(yearText);
+ };
+ CalendarView2.prototype._monthTextPositionControl = function(point, isCenter, orient, position2, margin) {
+ var align = "left";
+ var vAlign = "top";
+ var x = point[0];
+ var y = point[1];
+ if (orient === "horizontal") {
+ y = y + margin;
+ if (isCenter) {
+ align = "center";
+ }
+ if (position2 === "start") {
+ vAlign = "bottom";
+ }
+ } else {
+ x = x + margin;
+ if (isCenter) {
+ vAlign = "middle";
+ }
+ if (position2 === "start") {
+ align = "right";
+ }
+ }
+ return {
+ x,
+ y,
+ align,
+ verticalAlign: vAlign
+ };
+ };
+ CalendarView2.prototype._renderMonthText = function(calendarModel, localeModel, orient, group) {
+ var monthLabel = calendarModel.getModel("monthLabel");
+ if (!monthLabel.get("show")) {
+ return;
+ }
+ var nameMap = monthLabel.get("nameMap");
+ var margin = monthLabel.get("margin");
+ var pos = monthLabel.get("position");
+ var align = monthLabel.get("align");
+ var termPoints = [this._tlpoints, this._blpoints];
+ if (!nameMap || isString(nameMap)) {
+ if (nameMap) {
+ localeModel = getLocaleModel(nameMap) || localeModel;
+ }
+ nameMap = localeModel.get(["time", "monthAbbr"]) || [];
+ }
+ var idx = pos === "start" ? 0 : 1;
+ var axis = orient === "horizontal" ? 0 : 1;
+ margin = pos === "start" ? -margin : margin;
+ var isCenter = align === "center";
+ var labelSilent = monthLabel.get("silent");
+ for (var i = 0; i < termPoints[idx].length - 1; i++) {
+ var tmp = termPoints[idx][i].slice();
+ var firstDay = this._firstDayOfMonth[i];
+ if (isCenter) {
+ var firstDayPoints = this._firstDayPoints[i];
+ tmp[axis] = (firstDayPoints[axis] + termPoints[0][i + 1][axis]) / 2;
+ }
+ var formatter = monthLabel.get("formatter");
+ var name_1 = nameMap[+firstDay.m - 1];
+ var params = {
+ yyyy: firstDay.y,
+ yy: (firstDay.y + "").slice(2),
+ MM: firstDay.m,
+ M: +firstDay.m,
+ nameMap: name_1
+ };
+ var content = this._formatterLabel(formatter, params);
+ var monthText = new Text_default({
+ z2: 30,
+ style: extend(createTextStyle(monthLabel, {
+ text: content
+ }), this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)),
+ silent: labelSilent
+ });
+ group.add(monthText);
+ }
+ };
+ CalendarView2.prototype._weekTextPositionControl = function(point, orient, position2, margin, cellSize) {
+ var align = "center";
+ var vAlign = "middle";
+ var x = point[0];
+ var y = point[1];
+ var isStart = position2 === "start";
+ if (orient === "horizontal") {
+ x = x + margin + (isStart ? 1 : -1) * cellSize[0] / 2;
+ align = isStart ? "right" : "left";
+ } else {
+ y = y + margin + (isStart ? 1 : -1) * cellSize[1] / 2;
+ vAlign = isStart ? "bottom" : "top";
+ }
+ return {
+ x,
+ y,
+ align,
+ verticalAlign: vAlign
+ };
+ };
+ CalendarView2.prototype._renderWeekText = function(calendarModel, localeModel, rangeData, orient, group) {
+ var dayLabel = calendarModel.getModel("dayLabel");
+ if (!dayLabel.get("show")) {
+ return;
+ }
+ var coordSys = calendarModel.coordinateSystem;
+ var pos = dayLabel.get("position");
+ var nameMap = dayLabel.get("nameMap");
+ var margin = dayLabel.get("margin");
+ var firstDayOfWeek = coordSys.getFirstDayOfWeek();
+ if (!nameMap || isString(nameMap)) {
+ if (nameMap) {
+ localeModel = getLocaleModel(nameMap) || localeModel;
+ }
+ var dayOfWeekShort = localeModel.get(["time", "dayOfWeekShort"]);
+ nameMap = dayOfWeekShort || map(localeModel.get(["time", "dayOfWeekAbbr"]), function(val) {
+ return val[0];
+ });
+ }
+ var start2 = coordSys.getNextNDay(rangeData.end.time, 7 - rangeData.lweek).time;
+ var cellSize = [coordSys.getCellWidth(), coordSys.getCellHeight()];
+ margin = parsePercent2(margin, Math.min(cellSize[1], cellSize[0]));
+ if (pos === "start") {
+ start2 = coordSys.getNextNDay(rangeData.start.time, -(7 + rangeData.fweek)).time;
+ margin = -margin;
+ }
+ var labelSilent = dayLabel.get("silent");
+ for (var i = 0; i < 7; i++) {
+ var tmpD = coordSys.getNextNDay(start2, i);
+ var point = coordSys.dataToRect([tmpD.time], false).center;
+ var day = i;
+ day = Math.abs((i + firstDayOfWeek) % 7);
+ var weekText = new Text_default({
+ z2: 30,
+ style: extend(createTextStyle(dayLabel, {
+ text: nameMap[day]
+ }), this._weekTextPositionControl(point, orient, pos, margin, cellSize)),
+ silent: labelSilent
+ });
+ group.add(weekText);
+ }
+ };
+ CalendarView2.type = "calendar";
+ return CalendarView2;
+}(Component_default2);
+var CalendarView_default = CalendarView;
+
+// node_modules/echarts/lib/coord/calendar/Calendar.js
+var PROXIMATE_ONE_DAY = 864e5;
+var Calendar = function() {
+ function Calendar2(calendarModel, ecModel, api) {
+ this.type = "calendar";
+ this.dimensions = Calendar2.dimensions;
+ this.getDimensionsInfo = Calendar2.getDimensionsInfo;
+ this._model = calendarModel;
+ }
+ Calendar2.getDimensionsInfo = function() {
+ return [{
+ name: "time",
+ type: "time"
+ }, "value"];
+ };
+ Calendar2.prototype.getRangeInfo = function() {
+ return this._rangeInfo;
+ };
+ Calendar2.prototype.getModel = function() {
+ return this._model;
+ };
+ Calendar2.prototype.getRect = function() {
+ return this._rect;
+ };
+ Calendar2.prototype.getCellWidth = function() {
+ return this._sw;
+ };
+ Calendar2.prototype.getCellHeight = function() {
+ return this._sh;
+ };
+ Calendar2.prototype.getOrient = function() {
+ return this._orient;
+ };
+ Calendar2.prototype.getFirstDayOfWeek = function() {
+ return this._firstDayOfWeek;
+ };
+ Calendar2.prototype.getDateInfo = function(date) {
+ date = parseDate(date);
+ var y = date.getFullYear();
+ var m2 = date.getMonth() + 1;
+ var mStr = m2 < 10 ? "0" + m2 : "" + m2;
+ var d = date.getDate();
+ var dStr = d < 10 ? "0" + d : "" + d;
+ var day = date.getDay();
+ day = Math.abs((day + 7 - this.getFirstDayOfWeek()) % 7);
+ return {
+ y: y + "",
+ m: mStr,
+ d: dStr,
+ day,
+ time: date.getTime(),
+ formatedDate: y + "-" + mStr + "-" + dStr,
+ date
+ };
+ };
+ Calendar2.prototype.getNextNDay = function(date, n) {
+ n = n || 0;
+ if (n === 0) {
+ return this.getDateInfo(date);
+ }
+ date = new Date(this.getDateInfo(date).time);
+ date.setDate(date.getDate() + n);
+ return this.getDateInfo(date);
+ };
+ Calendar2.prototype.update = function(ecModel, api) {
+ this._firstDayOfWeek = +this._model.getModel("dayLabel").get("firstDay");
+ this._orient = this._model.get("orient");
+ this._lineWidth = this._model.getModel("itemStyle").getItemStyle().lineWidth || 0;
+ this._rangeInfo = this._getRangeInfo(this._initRangeOption());
+ var weeks = this._rangeInfo.weeks || 1;
+ var whNames = ["width", "height"];
+ var cellSize = this._model.getCellSize().slice();
+ var layoutParams = this._model.getBoxLayoutParams();
+ var cellNumbers = this._orient === "horizontal" ? [weeks, 7] : [7, weeks];
+ each([0, 1], function(idx) {
+ if (cellSizeSpecified(cellSize, idx)) {
+ layoutParams[whNames[idx]] = cellSize[idx] * cellNumbers[idx];
+ }
+ });
+ var whGlobal = {
+ width: api.getWidth(),
+ height: api.getHeight()
+ };
+ var calendarRect = this._rect = getLayoutRect(layoutParams, whGlobal);
+ each([0, 1], function(idx) {
+ if (!cellSizeSpecified(cellSize, idx)) {
+ cellSize[idx] = calendarRect[whNames[idx]] / cellNumbers[idx];
+ }
+ });
+ function cellSizeSpecified(cellSize2, idx) {
+ return cellSize2[idx] != null && cellSize2[idx] !== "auto";
+ }
+ this._sw = cellSize[0];
+ this._sh = cellSize[1];
+ };
+ Calendar2.prototype.dataToPoint = function(data, clamp2) {
+ isArray(data) && (data = data[0]);
+ clamp2 == null && (clamp2 = true);
+ var dayInfo = this.getDateInfo(data);
+ var range = this._rangeInfo;
+ var date = dayInfo.formatedDate;
+ if (clamp2 && !(dayInfo.time >= range.start.time && dayInfo.time < range.end.time + PROXIMATE_ONE_DAY)) {
+ return [NaN, NaN];
+ }
+ var week = dayInfo.day;
+ var nthWeek = this._getRangeInfo([range.start.time, date]).nthWeek;
+ if (this._orient === "vertical") {
+ return [this._rect.x + week * this._sw + this._sw / 2, this._rect.y + nthWeek * this._sh + this._sh / 2];
+ }
+ return [this._rect.x + nthWeek * this._sw + this._sw / 2, this._rect.y + week * this._sh + this._sh / 2];
+ };
+ Calendar2.prototype.pointToData = function(point) {
+ var date = this.pointToDate(point);
+ return date && date.time;
+ };
+ Calendar2.prototype.dataToRect = function(data, clamp2) {
+ var point = this.dataToPoint(data, clamp2);
+ return {
+ contentShape: {
+ x: point[0] - (this._sw - this._lineWidth) / 2,
+ y: point[1] - (this._sh - this._lineWidth) / 2,
+ width: this._sw - this._lineWidth,
+ height: this._sh - this._lineWidth
+ },
+ center: point,
+ tl: [point[0] - this._sw / 2, point[1] - this._sh / 2],
+ tr: [point[0] + this._sw / 2, point[1] - this._sh / 2],
+ br: [point[0] + this._sw / 2, point[1] + this._sh / 2],
+ bl: [point[0] - this._sw / 2, point[1] + this._sh / 2]
+ };
+ };
+ Calendar2.prototype.pointToDate = function(point) {
+ var nthX = Math.floor((point[0] - this._rect.x) / this._sw) + 1;
+ var nthY = Math.floor((point[1] - this._rect.y) / this._sh) + 1;
+ var range = this._rangeInfo.range;
+ if (this._orient === "vertical") {
+ return this._getDateByWeeksAndDay(nthY, nthX - 1, range);
+ }
+ return this._getDateByWeeksAndDay(nthX, nthY - 1, range);
+ };
+ Calendar2.prototype.convertToPixel = function(ecModel, finder, value) {
+ var coordSys = getCoordSys5(finder);
+ return coordSys === this ? coordSys.dataToPoint(value) : null;
+ };
+ Calendar2.prototype.convertFromPixel = function(ecModel, finder, pixel) {
+ var coordSys = getCoordSys5(finder);
+ return coordSys === this ? coordSys.pointToData(pixel) : null;
+ };
+ Calendar2.prototype.containPoint = function(point) {
+ console.warn("Not implemented.");
+ return false;
+ };
+ Calendar2.prototype._initRangeOption = function() {
+ var range = this._model.get("range");
+ var normalizedRange;
+ if (isArray(range) && range.length === 1) {
+ range = range[0];
+ }
+ if (!isArray(range)) {
+ var rangeStr = range.toString();
+ if (/^\d{4}$/.test(rangeStr)) {
+ normalizedRange = [rangeStr + "-01-01", rangeStr + "-12-31"];
+ }
+ if (/^\d{4}[\/|-]\d{1,2}$/.test(rangeStr)) {
+ var start2 = this.getDateInfo(rangeStr);
+ var firstDay = start2.date;
+ firstDay.setMonth(firstDay.getMonth() + 1);
+ var end2 = this.getNextNDay(firstDay, -1);
+ normalizedRange = [start2.formatedDate, end2.formatedDate];
+ }
+ if (/^\d{4}[\/|-]\d{1,2}[\/|-]\d{1,2}$/.test(rangeStr)) {
+ normalizedRange = [rangeStr, rangeStr];
+ }
+ } else {
+ normalizedRange = range;
+ }
+ if (!normalizedRange) {
+ if (true) {
+ logError("Invalid date range.");
+ }
+ return range;
+ }
+ var tmp = this._getRangeInfo(normalizedRange);
+ if (tmp.start.time > tmp.end.time) {
+ normalizedRange.reverse();
+ }
+ return normalizedRange;
+ };
+ Calendar2.prototype._getRangeInfo = function(range) {
+ var parsedRange = [this.getDateInfo(range[0]), this.getDateInfo(range[1])];
+ var reversed;
+ if (parsedRange[0].time > parsedRange[1].time) {
+ reversed = true;
+ parsedRange.reverse();
+ }
+ var allDay = Math.floor(parsedRange[1].time / PROXIMATE_ONE_DAY) - Math.floor(parsedRange[0].time / PROXIMATE_ONE_DAY) + 1;
+ var date = new Date(parsedRange[0].time);
+ var startDateNum = date.getDate();
+ var endDateNum = parsedRange[1].date.getDate();
+ date.setDate(startDateNum + allDay - 1);
+ var dateNum = date.getDate();
+ if (dateNum !== endDateNum) {
+ var sign = date.getTime() - parsedRange[1].time > 0 ? 1 : -1;
+ while ((dateNum = date.getDate()) !== endDateNum && (date.getTime() - parsedRange[1].time) * sign > 0) {
+ allDay -= sign;
+ date.setDate(dateNum - sign);
+ }
+ }
+ var weeks = Math.floor((allDay + parsedRange[0].day + 6) / 7);
+ var nthWeek = reversed ? -weeks + 1 : weeks - 1;
+ reversed && parsedRange.reverse();
+ return {
+ range: [parsedRange[0].formatedDate, parsedRange[1].formatedDate],
+ start: parsedRange[0],
+ end: parsedRange[1],
+ allDay,
+ weeks,
+ nthWeek,
+ fweek: parsedRange[0].day,
+ lweek: parsedRange[1].day
+ };
+ };
+ Calendar2.prototype._getDateByWeeksAndDay = function(nthWeek, day, range) {
+ var rangeInfo = this._getRangeInfo(range);
+ if (nthWeek > rangeInfo.weeks || nthWeek === 0 && day < rangeInfo.fweek || nthWeek === rangeInfo.weeks && day > rangeInfo.lweek) {
+ return null;
+ }
+ var nthDay = (nthWeek - 1) * 7 - rangeInfo.fweek + day;
+ var date = new Date(rangeInfo.start.time);
+ date.setDate(+rangeInfo.start.d + nthDay);
+ return this.getDateInfo(date);
+ };
+ Calendar2.create = function(ecModel, api) {
+ var calendarList = [];
+ ecModel.eachComponent("calendar", function(calendarModel) {
+ var calendar = new Calendar2(calendarModel, ecModel, api);
+ calendarList.push(calendar);
+ calendarModel.coordinateSystem = calendar;
+ });
+ ecModel.eachSeries(function(calendarSeries) {
+ if (calendarSeries.get("coordinateSystem") === "calendar") {
+ calendarSeries.coordinateSystem = calendarList[calendarSeries.get("calendarIndex") || 0];
+ }
+ });
+ return calendarList;
+ };
+ Calendar2.dimensions = ["time", "value"];
+ return Calendar2;
+}();
+function getCoordSys5(finder) {
+ var calendarModel = finder.calendarModel;
+ var seriesModel = finder.seriesModel;
+ var coordSys = calendarModel ? calendarModel.coordinateSystem : seriesModel ? seriesModel.coordinateSystem : null;
+ return coordSys;
+}
+var Calendar_default = Calendar;
+
+// node_modules/echarts/lib/component/calendar/install.js
+function install33(registers) {
+ registers.registerComponentModel(CalendarModel_default);
+ registers.registerComponentView(CalendarView_default);
+ registers.registerCoordinateSystem("calendar", Calendar_default);
+}
+
+// node_modules/echarts/lib/component/graphic/GraphicModel.js
+function setKeyInfoToNewElOption(resultItem, newElOption) {
+ var existElOption = resultItem.existing;
+ newElOption.id = resultItem.keyInfo.id;
+ !newElOption.type && existElOption && (newElOption.type = existElOption.type);
+ if (newElOption.parentId == null) {
+ var newElParentOption = newElOption.parentOption;
+ if (newElParentOption) {
+ newElOption.parentId = newElParentOption.id;
+ } else if (existElOption) {
+ newElOption.parentId = existElOption.parentId;
+ }
+ }
+ newElOption.parentOption = null;
+}
+function isSetLoc(obj, props) {
+ var isSet;
+ each(props, function(prop) {
+ obj[prop] != null && obj[prop] !== "auto" && (isSet = true);
+ });
+ return isSet;
+}
+function mergeNewElOptionToExist(existList, index, newElOption) {
+ var newElOptCopy = extend({}, newElOption);
+ var existElOption = existList[index];
+ var $action = newElOption.$action || "merge";
+ if ($action === "merge") {
+ if (existElOption) {
+ if (true) {
+ var newType = newElOption.type;
+ assert(!newType || existElOption.type === newType, 'Please set $action: "replace" to change `type`');
+ }
+ merge(existElOption, newElOptCopy, true);
+ mergeLayoutParam(existElOption, newElOptCopy, {
+ ignoreSize: true
+ });
+ copyLayoutParams(newElOption, existElOption);
+ copyTransitionInfo(newElOption, existElOption);
+ copyTransitionInfo(newElOption, existElOption, "shape");
+ copyTransitionInfo(newElOption, existElOption, "style");
+ copyTransitionInfo(newElOption, existElOption, "extra");
+ newElOption.clipPath = existElOption.clipPath;
+ } else {
+ existList[index] = newElOptCopy;
+ }
+ } else if ($action === "replace") {
+ existList[index] = newElOptCopy;
+ } else if ($action === "remove") {
+ existElOption && (existList[index] = null);
+ }
+}
+var TRANSITION_PROPS_TO_COPY = ["transition", "enterFrom", "leaveTo"];
+var ROOT_TRANSITION_PROPS_TO_COPY = TRANSITION_PROPS_TO_COPY.concat(["enterAnimation", "updateAnimation", "leaveAnimation"]);
+function copyTransitionInfo(target, source, targetProp) {
+ if (targetProp) {
+ if (!target[targetProp] && source[targetProp]) {
+ target[targetProp] = {};
+ }
+ target = target[targetProp];
+ source = source[targetProp];
+ }
+ if (!target || !source) {
+ return;
+ }
+ var props = targetProp ? TRANSITION_PROPS_TO_COPY : ROOT_TRANSITION_PROPS_TO_COPY;
+ for (var i = 0; i < props.length; i++) {
+ var prop = props[i];
+ if (target[prop] == null && source[prop] != null) {
+ target[prop] = source[prop];
+ }
+ }
+}
+function setLayoutInfoToExist(existItem, newElOption) {
+ if (!existItem) {
+ return;
+ }
+ existItem.hv = newElOption.hv = [
+ isSetLoc(newElOption, ["left", "right"]),
+ isSetLoc(newElOption, ["top", "bottom"])
+ ];
+ if (existItem.type === "group") {
+ var existingGroupOpt = existItem;
+ var newGroupOpt = newElOption;
+ existingGroupOpt.width == null && (existingGroupOpt.width = newGroupOpt.width = 0);
+ existingGroupOpt.height == null && (existingGroupOpt.height = newGroupOpt.height = 0);
+ }
+}
+var GraphicComponentModel = function(_super) {
+ __extends(GraphicComponentModel2, _super);
+ function GraphicComponentModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GraphicComponentModel2.type;
+ _this.preventAutoZ = true;
+ return _this;
+ }
+ GraphicComponentModel2.prototype.mergeOption = function(option, ecModel) {
+ var elements = this.option.elements;
+ this.option.elements = null;
+ _super.prototype.mergeOption.call(this, option, ecModel);
+ this.option.elements = elements;
+ };
+ GraphicComponentModel2.prototype.optionUpdated = function(newOption, isInit) {
+ var thisOption = this.option;
+ var newList = (isInit ? thisOption : newOption).elements;
+ var existList = thisOption.elements = isInit ? [] : thisOption.elements;
+ var flattenedList = [];
+ this._flatten(newList, flattenedList, null);
+ var mappingResult = mappingToExists(existList, flattenedList, "normalMerge");
+ var elOptionsToUpdate = this._elOptionsToUpdate = [];
+ each(mappingResult, function(resultItem, index) {
+ var newElOption = resultItem.newOption;
+ if (true) {
+ assert(isObject(newElOption) || resultItem.existing, "Empty graphic option definition");
+ }
+ if (!newElOption) {
+ return;
+ }
+ elOptionsToUpdate.push(newElOption);
+ setKeyInfoToNewElOption(resultItem, newElOption);
+ mergeNewElOptionToExist(existList, index, newElOption);
+ setLayoutInfoToExist(existList[index], newElOption);
+ }, this);
+ thisOption.elements = filter(existList, function(item) {
+ item && delete item.$action;
+ return item != null;
+ });
+ };
+ GraphicComponentModel2.prototype._flatten = function(optionList, result, parentOption) {
+ each(optionList, function(option) {
+ if (!option) {
+ return;
+ }
+ if (parentOption) {
+ option.parentOption = parentOption;
+ }
+ result.push(option);
+ var children = option.children;
+ if (children && children.length) {
+ this._flatten(children, result, option);
+ }
+ delete option.children;
+ }, this);
+ };
+ GraphicComponentModel2.prototype.useElOptionsToUpdate = function() {
+ var els = this._elOptionsToUpdate;
+ this._elOptionsToUpdate = null;
+ return els;
+ };
+ GraphicComponentModel2.type = "graphic";
+ GraphicComponentModel2.defaultOption = {
+ elements: []
+ };
+ return GraphicComponentModel2;
+}(Component_default);
+
+// node_modules/echarts/lib/component/graphic/GraphicView.js
+var nonShapeGraphicElements = {
+ path: null,
+ compoundPath: null,
+ group: Group_default,
+ image: Image_default,
+ text: Text_default
+};
+var inner15 = makeInner();
+var GraphicComponentView = function(_super) {
+ __extends(GraphicComponentView2, _super);
+ function GraphicComponentView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = GraphicComponentView2.type;
+ return _this;
+ }
+ GraphicComponentView2.prototype.init = function() {
+ this._elMap = createHashMap();
+ };
+ GraphicComponentView2.prototype.render = function(graphicModel, ecModel, api) {
+ if (graphicModel !== this._lastGraphicModel) {
+ this._clear();
+ }
+ this._lastGraphicModel = graphicModel;
+ this._updateElements(graphicModel);
+ this._relocate(graphicModel, api);
+ };
+ GraphicComponentView2.prototype._updateElements = function(graphicModel) {
+ var elOptionsToUpdate = graphicModel.useElOptionsToUpdate();
+ if (!elOptionsToUpdate) {
+ return;
+ }
+ var elMap = this._elMap;
+ var rootGroup = this.group;
+ var globalZ = graphicModel.get("z");
+ var globalZLevel = graphicModel.get("zlevel");
+ each(elOptionsToUpdate, function(elOption) {
+ var id = convertOptionIdName(elOption.id, null);
+ var elExisting = id != null ? elMap.get(id) : null;
+ var parentId = convertOptionIdName(elOption.parentId, null);
+ var targetElParent = parentId != null ? elMap.get(parentId) : rootGroup;
+ var elType = elOption.type;
+ var elOptionStyle = elOption.style;
+ if (elType === "text" && elOptionStyle) {
+ if (elOption.hv && elOption.hv[1]) {
+ elOptionStyle.textVerticalAlign = elOptionStyle.textBaseline = elOptionStyle.verticalAlign = elOptionStyle.align = null;
+ }
+ }
+ var textContentOption = elOption.textContent;
+ var textConfig = elOption.textConfig;
+ if (elOptionStyle && isEC4CompatibleStyle(elOptionStyle, elType, !!textConfig, !!textContentOption)) {
+ var convertResult = convertFromEC4CompatibleStyle(elOptionStyle, elType, true);
+ if (!textConfig && convertResult.textConfig) {
+ textConfig = elOption.textConfig = convertResult.textConfig;
+ }
+ if (!textContentOption && convertResult.textContent) {
+ textContentOption = convertResult.textContent;
+ }
+ }
+ var elOptionCleaned = getCleanedElOption(elOption);
+ if (true) {
+ elExisting && assert(targetElParent === elExisting.parent, "Changing parent is not supported.");
+ }
+ var $action = elOption.$action || "merge";
+ var isMerge = $action === "merge";
+ var isReplace = $action === "replace";
+ if (isMerge) {
+ var isInit = !elExisting;
+ var el_1 = elExisting;
+ if (isInit) {
+ el_1 = createEl2(id, targetElParent, elOption.type, elMap);
+ } else {
+ el_1 && (inner15(el_1).isNew = false);
+ stopPreviousKeyframeAnimationAndRestore(el_1);
+ }
+ if (el_1) {
+ applyUpdateTransition(el_1, elOptionCleaned, graphicModel, {
+ isInit
+ });
+ updateCommonAttrs(el_1, elOption, globalZ, globalZLevel);
+ }
+ } else if (isReplace) {
+ removeEl(elExisting, elOption, elMap, graphicModel);
+ var el_2 = createEl2(id, targetElParent, elOption.type, elMap);
+ if (el_2) {
+ applyUpdateTransition(el_2, elOptionCleaned, graphicModel, {
+ isInit: true
+ });
+ updateCommonAttrs(el_2, elOption, globalZ, globalZLevel);
+ }
+ } else if ($action === "remove") {
+ updateLeaveTo(elExisting, elOption);
+ removeEl(elExisting, elOption, elMap, graphicModel);
+ }
+ var el = elMap.get(id);
+ if (el && textContentOption) {
+ if (isMerge) {
+ var textContentExisting = el.getTextContent();
+ textContentExisting ? textContentExisting.attr(textContentOption) : el.setTextContent(new Text_default(textContentOption));
+ } else if (isReplace) {
+ el.setTextContent(new Text_default(textContentOption));
+ }
+ }
+ if (el) {
+ var clipPathOption = elOption.clipPath;
+ if (clipPathOption) {
+ var clipPathType = clipPathOption.type;
+ var clipPath = void 0;
+ var isInit = false;
+ if (isMerge) {
+ var oldClipPath = el.getClipPath();
+ isInit = !oldClipPath || inner15(oldClipPath).type !== clipPathType;
+ clipPath = isInit ? newEl(clipPathType) : oldClipPath;
+ } else if (isReplace) {
+ isInit = true;
+ clipPath = newEl(clipPathType);
+ }
+ el.setClipPath(clipPath);
+ applyUpdateTransition(clipPath, clipPathOption, graphicModel, {
+ isInit
+ });
+ applyKeyframeAnimation(clipPath, clipPathOption.keyframeAnimation, graphicModel);
+ }
+ var elInner = inner15(el);
+ el.setTextConfig(textConfig);
+ elInner.option = elOption;
+ setEventData(el, graphicModel, elOption);
+ setTooltipConfig({
+ el,
+ componentModel: graphicModel,
+ itemName: el.name,
+ itemTooltipOption: elOption.tooltip
+ });
+ applyKeyframeAnimation(el, elOption.keyframeAnimation, graphicModel);
+ }
+ });
+ };
+ GraphicComponentView2.prototype._relocate = function(graphicModel, api) {
+ var elOptions = graphicModel.option.elements;
+ var rootGroup = this.group;
+ var elMap = this._elMap;
+ var apiWidth = api.getWidth();
+ var apiHeight = api.getHeight();
+ var xy = ["x", "y"];
+ for (var i = 0; i < elOptions.length; i++) {
+ var elOption = elOptions[i];
+ var id = convertOptionIdName(elOption.id, null);
+ var el = id != null ? elMap.get(id) : null;
+ if (!el || !el.isGroup) {
+ continue;
+ }
+ var parentEl = el.parent;
+ var isParentRoot = parentEl === rootGroup;
+ var elInner = inner15(el);
+ var parentElInner = inner15(parentEl);
+ elInner.width = parsePercent2(elInner.option.width, isParentRoot ? apiWidth : parentElInner.width) || 0;
+ elInner.height = parsePercent2(elInner.option.height, isParentRoot ? apiHeight : parentElInner.height) || 0;
+ }
+ for (var i = elOptions.length - 1; i >= 0; i--) {
+ var elOption = elOptions[i];
+ var id = convertOptionIdName(elOption.id, null);
+ var el = id != null ? elMap.get(id) : null;
+ if (!el) {
+ continue;
+ }
+ var parentEl = el.parent;
+ var parentElInner = inner15(parentEl);
+ var containerInfo = parentEl === rootGroup ? {
+ width: apiWidth,
+ height: apiHeight
+ } : {
+ width: parentElInner.width,
+ height: parentElInner.height
+ };
+ var layoutPos = {};
+ var layouted = positionElement(el, elOption, containerInfo, null, {
+ hv: elOption.hv,
+ boundingMode: elOption.bounding
+ }, layoutPos);
+ if (!inner15(el).isNew && layouted) {
+ var transition = elOption.transition;
+ var animatePos = {};
+ for (var k = 0; k < xy.length; k++) {
+ var key = xy[k];
+ var val = layoutPos[key];
+ if (transition && (isTransitionAll(transition) || indexOf(transition, key) >= 0)) {
+ animatePos[key] = val;
+ } else {
+ el[key] = val;
+ }
+ }
+ updateProps(el, animatePos, graphicModel, 0);
+ } else {
+ el.attr(layoutPos);
+ }
+ }
+ };
+ GraphicComponentView2.prototype._clear = function() {
+ var _this = this;
+ var elMap = this._elMap;
+ elMap.each(function(el) {
+ removeEl(el, inner15(el).option, elMap, _this._lastGraphicModel);
+ });
+ this._elMap = createHashMap();
+ };
+ GraphicComponentView2.prototype.dispose = function() {
+ this._clear();
+ };
+ GraphicComponentView2.type = "graphic";
+ return GraphicComponentView2;
+}(Component_default2);
+function newEl(graphicType) {
+ if (true) {
+ assert(graphicType, "graphic type MUST be set");
+ }
+ var Clz = hasOwn(nonShapeGraphicElements, graphicType) ? nonShapeGraphicElements[graphicType] : getShapeClass(graphicType);
+ if (true) {
+ assert(Clz, "graphic type " + graphicType + " can not be found");
+ }
+ var el = new Clz({});
+ inner15(el).type = graphicType;
+ return el;
+}
+function createEl2(id, targetElParent, graphicType, elMap) {
+ var el = newEl(graphicType);
+ targetElParent.add(el);
+ elMap.set(id, el);
+ inner15(el).id = id;
+ inner15(el).isNew = true;
+ return el;
+}
+function removeEl(elExisting, elOption, elMap, graphicModel) {
+ var existElParent = elExisting && elExisting.parent;
+ if (existElParent) {
+ elExisting.type === "group" && elExisting.traverse(function(el) {
+ removeEl(el, elOption, elMap, graphicModel);
+ });
+ applyLeaveTransition(elExisting, elOption, graphicModel);
+ elMap.removeKey(inner15(elExisting).id);
+ }
+}
+function updateCommonAttrs(el, elOption, defaultZ, defaultZlevel) {
+ if (!el.isGroup) {
+ each([
+ ["cursor", Displayable_default.prototype.cursor],
+ ["zlevel", defaultZlevel || 0],
+ ["z", defaultZ || 0],
+ ["z2", 0]
+ ], function(item) {
+ var prop = item[0];
+ if (hasOwn(elOption, prop)) {
+ el[prop] = retrieve2(elOption[prop], item[1]);
+ } else if (el[prop] == null) {
+ el[prop] = item[1];
+ }
+ });
+ }
+ each(keys(elOption), function(key) {
+ if (key.indexOf("on") === 0) {
+ var val = elOption[key];
+ el[key] = isFunction(val) ? val : null;
+ }
+ });
+ if (hasOwn(elOption, "draggable")) {
+ el.draggable = elOption.draggable;
+ }
+ elOption.name != null && (el.name = elOption.name);
+ elOption.id != null && (el.id = elOption.id);
+}
+function getCleanedElOption(elOption) {
+ elOption = extend({}, elOption);
+ each(["id", "parentId", "$action", "hv", "bounding", "textContent", "clipPath"].concat(LOCATION_PARAMS), function(name) {
+ delete elOption[name];
+ });
+ return elOption;
+}
+function setEventData(el, graphicModel, elOption) {
+ var eventData = getECData(el).eventData;
+ if (!el.silent && !el.ignore && !eventData) {
+ eventData = getECData(el).eventData = {
+ componentType: "graphic",
+ componentIndex: graphicModel.componentIndex,
+ name: el.name
+ };
+ }
+ if (eventData) {
+ eventData.info = elOption.info;
+ }
+}
+
+// node_modules/echarts/lib/component/graphic/install.js
+function install34(registers) {
+ registers.registerComponentModel(GraphicComponentModel);
+ registers.registerComponentView(GraphicComponentView);
+ registers.registerPreprocessor(function(option) {
+ var graphicOption = option.graphic;
+ if (isArray(graphicOption)) {
+ if (!graphicOption[0] || !graphicOption[0].elements) {
+ option.graphic = [{
+ elements: graphicOption
+ }];
+ } else {
+ option.graphic = [option.graphic[0]];
+ }
+ } else if (graphicOption && !graphicOption.elements) {
+ option.graphic = [{
+ elements: [graphicOption]
+ }];
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/dataZoom/helper.js
+var DATA_ZOOM_AXIS_DIMENSIONS = ["x", "y", "radius", "angle", "single"];
+var SERIES_COORDS = ["cartesian2d", "polar", "singleAxis"];
+function isCoordSupported(seriesModel) {
+ var coordType = seriesModel.get("coordinateSystem");
+ return indexOf(SERIES_COORDS, coordType) >= 0;
+}
+function getAxisMainType(axisDim) {
+ if (true) {
+ assert(axisDim);
+ }
+ return axisDim + "Axis";
+}
+function findEffectedDataZooms(ecModel, payload) {
+ var axisRecords = createHashMap();
+ var effectedModels = [];
+ var effectedModelMap = createHashMap();
+ ecModel.eachComponent({
+ mainType: "dataZoom",
+ query: payload
+ }, function(dataZoomModel) {
+ if (!effectedModelMap.get(dataZoomModel.uid)) {
+ addToEffected(dataZoomModel);
+ }
+ });
+ var foundNewLink;
+ do {
+ foundNewLink = false;
+ ecModel.eachComponent("dataZoom", processSingle);
+ } while (foundNewLink);
+ function processSingle(dataZoomModel) {
+ if (!effectedModelMap.get(dataZoomModel.uid) && isLinked(dataZoomModel)) {
+ addToEffected(dataZoomModel);
+ foundNewLink = true;
+ }
+ }
+ function addToEffected(dataZoom) {
+ effectedModelMap.set(dataZoom.uid, true);
+ effectedModels.push(dataZoom);
+ markAxisControlled(dataZoom);
+ }
+ function isLinked(dataZoomModel) {
+ var isLink = false;
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ var axisIdxArr = axisRecords.get(axisDim);
+ if (axisIdxArr && axisIdxArr[axisIndex]) {
+ isLink = true;
+ }
+ });
+ return isLink;
+ }
+ function markAxisControlled(dataZoomModel) {
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ (axisRecords.get(axisDim) || axisRecords.set(axisDim, []))[axisIndex] = true;
+ });
+ }
+ return effectedModels;
+}
+function collectReferCoordSysModelInfo(dataZoomModel) {
+ var ecModel = dataZoomModel.ecModel;
+ var coordSysInfoWrap = {
+ infoList: [],
+ infoMap: createHashMap()
+ };
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
+ if (!axisModel) {
+ return;
+ }
+ var coordSysModel = axisModel.getCoordSysModel();
+ if (!coordSysModel) {
+ return;
+ }
+ var coordSysUid = coordSysModel.uid;
+ var coordSysInfo = coordSysInfoWrap.infoMap.get(coordSysUid);
+ if (!coordSysInfo) {
+ coordSysInfo = {
+ model: coordSysModel,
+ axisModels: []
+ };
+ coordSysInfoWrap.infoList.push(coordSysInfo);
+ coordSysInfoWrap.infoMap.set(coordSysUid, coordSysInfo);
+ }
+ coordSysInfo.axisModels.push(axisModel);
+ });
+ return coordSysInfoWrap;
+}
+
+// node_modules/echarts/lib/component/dataZoom/DataZoomModel.js
+var DataZoomAxisInfo = function() {
+ function DataZoomAxisInfo2() {
+ this.indexList = [];
+ this.indexMap = [];
+ }
+ DataZoomAxisInfo2.prototype.add = function(axisCmptIdx) {
+ if (!this.indexMap[axisCmptIdx]) {
+ this.indexList.push(axisCmptIdx);
+ this.indexMap[axisCmptIdx] = true;
+ }
+ };
+ return DataZoomAxisInfo2;
+}();
+var DataZoomModel = function(_super) {
+ __extends(DataZoomModel2, _super);
+ function DataZoomModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = DataZoomModel2.type;
+ _this._autoThrottle = true;
+ _this._noTarget = true;
+ _this._rangePropMode = ["percent", "percent"];
+ return _this;
+ }
+ DataZoomModel2.prototype.init = function(option, parentModel, ecModel) {
+ var inputRawOption = retrieveRawOption(option);
+ this.settledOption = inputRawOption;
+ this.mergeDefaultAndTheme(option, ecModel);
+ this._doInit(inputRawOption);
+ };
+ DataZoomModel2.prototype.mergeOption = function(newOption) {
+ var inputRawOption = retrieveRawOption(newOption);
+ merge(this.option, newOption, true);
+ merge(this.settledOption, inputRawOption, true);
+ this._doInit(inputRawOption);
+ };
+ DataZoomModel2.prototype._doInit = function(inputRawOption) {
+ var thisOption = this.option;
+ this._setDefaultThrottle(inputRawOption);
+ this._updateRangeUse(inputRawOption);
+ var settledOption = this.settledOption;
+ each([["start", "startValue"], ["end", "endValue"]], function(names, index) {
+ if (this._rangePropMode[index] === "value") {
+ thisOption[names[0]] = settledOption[names[0]] = null;
+ }
+ }, this);
+ this._resetTarget();
+ };
+ DataZoomModel2.prototype._resetTarget = function() {
+ var optionOrient = this.get("orient", true);
+ var targetAxisIndexMap = this._targetAxisInfoMap = createHashMap();
+ var hasAxisSpecified = this._fillSpecifiedTargetAxis(targetAxisIndexMap);
+ if (hasAxisSpecified) {
+ this._orient = optionOrient || this._makeAutoOrientByTargetAxis();
+ } else {
+ this._orient = optionOrient || "horizontal";
+ this._fillAutoTargetAxisByOrient(targetAxisIndexMap, this._orient);
+ }
+ this._noTarget = true;
+ targetAxisIndexMap.each(function(axisInfo) {
+ if (axisInfo.indexList.length) {
+ this._noTarget = false;
+ }
+ }, this);
+ };
+ DataZoomModel2.prototype._fillSpecifiedTargetAxis = function(targetAxisIndexMap) {
+ var hasAxisSpecified = false;
+ each(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim) {
+ var refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING);
+ if (!refering.specified) {
+ return;
+ }
+ hasAxisSpecified = true;
+ var axisInfo = new DataZoomAxisInfo();
+ each(refering.models, function(axisModel) {
+ axisInfo.add(axisModel.componentIndex);
+ });
+ targetAxisIndexMap.set(axisDim, axisInfo);
+ }, this);
+ return hasAxisSpecified;
+ };
+ DataZoomModel2.prototype._fillAutoTargetAxisByOrient = function(targetAxisIndexMap, orient) {
+ var ecModel = this.ecModel;
+ var needAuto = true;
+ if (needAuto) {
+ var axisDim = orient === "vertical" ? "y" : "x";
+ var axisModels = ecModel.findComponents({
+ mainType: axisDim + "Axis"
+ });
+ setParallelAxis(axisModels, axisDim);
+ }
+ if (needAuto) {
+ var axisModels = ecModel.findComponents({
+ mainType: "singleAxis",
+ filter: function(axisModel) {
+ return axisModel.get("orient", true) === orient;
+ }
+ });
+ setParallelAxis(axisModels, "single");
+ }
+ function setParallelAxis(axisModels2, axisDim2) {
+ var axisModel = axisModels2[0];
+ if (!axisModel) {
+ return;
+ }
+ var axisInfo = new DataZoomAxisInfo();
+ axisInfo.add(axisModel.componentIndex);
+ targetAxisIndexMap.set(axisDim2, axisInfo);
+ needAuto = false;
+ if (axisDim2 === "x" || axisDim2 === "y") {
+ var gridModel_1 = axisModel.getReferringComponents("grid", SINGLE_REFERRING).models[0];
+ gridModel_1 && each(axisModels2, function(axModel) {
+ if (axisModel.componentIndex !== axModel.componentIndex && gridModel_1 === axModel.getReferringComponents("grid", SINGLE_REFERRING).models[0]) {
+ axisInfo.add(axModel.componentIndex);
+ }
+ });
+ }
+ }
+ if (needAuto) {
+ each(DATA_ZOOM_AXIS_DIMENSIONS, function(axisDim2) {
+ if (!needAuto) {
+ return;
+ }
+ var axisModels2 = ecModel.findComponents({
+ mainType: getAxisMainType(axisDim2),
+ filter: function(axisModel) {
+ return axisModel.get("type", true) === "category";
+ }
+ });
+ if (axisModels2[0]) {
+ var axisInfo = new DataZoomAxisInfo();
+ axisInfo.add(axisModels2[0].componentIndex);
+ targetAxisIndexMap.set(axisDim2, axisInfo);
+ needAuto = false;
+ }
+ }, this);
+ }
+ };
+ DataZoomModel2.prototype._makeAutoOrientByTargetAxis = function() {
+ var dim;
+ this.eachTargetAxis(function(axisDim) {
+ !dim && (dim = axisDim);
+ }, this);
+ return dim === "y" ? "vertical" : "horizontal";
+ };
+ DataZoomModel2.prototype._setDefaultThrottle = function(inputRawOption) {
+ if (inputRawOption.hasOwnProperty("throttle")) {
+ this._autoThrottle = false;
+ }
+ if (this._autoThrottle) {
+ var globalOption = this.ecModel.option;
+ this.option.throttle = globalOption.animation && globalOption.animationDurationUpdate > 0 ? 100 : 20;
+ }
+ };
+ DataZoomModel2.prototype._updateRangeUse = function(inputRawOption) {
+ var rangePropMode = this._rangePropMode;
+ var rangeModeInOption = this.get("rangeMode");
+ each([["start", "startValue"], ["end", "endValue"]], function(names, index) {
+ var percentSpecified = inputRawOption[names[0]] != null;
+ var valueSpecified = inputRawOption[names[1]] != null;
+ if (percentSpecified && !valueSpecified) {
+ rangePropMode[index] = "percent";
+ } else if (!percentSpecified && valueSpecified) {
+ rangePropMode[index] = "value";
+ } else if (rangeModeInOption) {
+ rangePropMode[index] = rangeModeInOption[index];
+ } else if (percentSpecified) {
+ rangePropMode[index] = "percent";
+ }
+ });
+ };
+ DataZoomModel2.prototype.noTarget = function() {
+ return this._noTarget;
+ };
+ DataZoomModel2.prototype.getFirstTargetAxisModel = function() {
+ var firstAxisModel;
+ this.eachTargetAxis(function(axisDim, axisIndex) {
+ if (firstAxisModel == null) {
+ firstAxisModel = this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
+ }
+ }, this);
+ return firstAxisModel;
+ };
+ DataZoomModel2.prototype.eachTargetAxis = function(callback, context) {
+ this._targetAxisInfoMap.each(function(axisInfo, axisDim) {
+ each(axisInfo.indexList, function(axisIndex) {
+ callback.call(context, axisDim, axisIndex);
+ });
+ });
+ };
+ DataZoomModel2.prototype.getAxisProxy = function(axisDim, axisIndex) {
+ var axisModel = this.getAxisModel(axisDim, axisIndex);
+ if (axisModel) {
+ return axisModel.__dzAxisProxy;
+ }
+ };
+ DataZoomModel2.prototype.getAxisModel = function(axisDim, axisIndex) {
+ if (true) {
+ assert(axisDim && axisIndex != null);
+ }
+ var axisInfo = this._targetAxisInfoMap.get(axisDim);
+ if (axisInfo && axisInfo.indexMap[axisIndex]) {
+ return this.ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
+ }
+ };
+ DataZoomModel2.prototype.setRawRange = function(opt) {
+ var thisOption = this.option;
+ var settledOption = this.settledOption;
+ each([["start", "startValue"], ["end", "endValue"]], function(names) {
+ if (opt[names[0]] != null || opt[names[1]] != null) {
+ thisOption[names[0]] = settledOption[names[0]] = opt[names[0]];
+ thisOption[names[1]] = settledOption[names[1]] = opt[names[1]];
+ }
+ }, this);
+ this._updateRangeUse(opt);
+ };
+ DataZoomModel2.prototype.setCalculatedRange = function(opt) {
+ var option = this.option;
+ each(["start", "startValue", "end", "endValue"], function(name) {
+ option[name] = opt[name];
+ });
+ };
+ DataZoomModel2.prototype.getPercentRange = function() {
+ var axisProxy = this.findRepresentativeAxisProxy();
+ if (axisProxy) {
+ return axisProxy.getDataPercentWindow();
+ }
+ };
+ DataZoomModel2.prototype.getValueRange = function(axisDim, axisIndex) {
+ if (axisDim == null && axisIndex == null) {
+ var axisProxy = this.findRepresentativeAxisProxy();
+ if (axisProxy) {
+ return axisProxy.getDataValueWindow();
+ }
+ } else {
+ return this.getAxisProxy(axisDim, axisIndex).getDataValueWindow();
+ }
+ };
+ DataZoomModel2.prototype.findRepresentativeAxisProxy = function(axisModel) {
+ if (axisModel) {
+ return axisModel.__dzAxisProxy;
+ }
+ var firstProxy;
+ var axisDimList = this._targetAxisInfoMap.keys();
+ for (var i = 0; i < axisDimList.length; i++) {
+ var axisDim = axisDimList[i];
+ var axisInfo = this._targetAxisInfoMap.get(axisDim);
+ for (var j = 0; j < axisInfo.indexList.length; j++) {
+ var proxy = this.getAxisProxy(axisDim, axisInfo.indexList[j]);
+ if (proxy.hostedBy(this)) {
+ return proxy;
+ }
+ if (!firstProxy) {
+ firstProxy = proxy;
+ }
+ }
+ }
+ return firstProxy;
+ };
+ DataZoomModel2.prototype.getRangePropMode = function() {
+ return this._rangePropMode.slice();
+ };
+ DataZoomModel2.prototype.getOrient = function() {
+ if (true) {
+ assert(this._orient);
+ }
+ return this._orient;
+ };
+ DataZoomModel2.type = "dataZoom";
+ DataZoomModel2.dependencies = ["xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "series", "toolbox"];
+ DataZoomModel2.defaultOption = {
+ z: 4,
+ filterMode: "filter",
+ start: 0,
+ end: 100
+ };
+ return DataZoomModel2;
+}(Component_default);
+function retrieveRawOption(option) {
+ var ret = {};
+ each(["start", "end", "startValue", "endValue", "throttle"], function(name) {
+ option.hasOwnProperty(name) && (ret[name] = option[name]);
+ });
+ return ret;
+}
+var DataZoomModel_default = DataZoomModel;
+
+// node_modules/echarts/lib/component/dataZoom/SelectZoomModel.js
+var SelectDataZoomModel = function(_super) {
+ __extends(SelectDataZoomModel2, _super);
+ function SelectDataZoomModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SelectDataZoomModel2.type;
+ return _this;
+ }
+ SelectDataZoomModel2.type = "dataZoom.select";
+ return SelectDataZoomModel2;
+}(DataZoomModel_default);
+var SelectZoomModel_default = SelectDataZoomModel;
+
+// node_modules/echarts/lib/component/dataZoom/DataZoomView.js
+var DataZoomView = function(_super) {
+ __extends(DataZoomView2, _super);
+ function DataZoomView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = DataZoomView2.type;
+ return _this;
+ }
+ DataZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) {
+ this.dataZoomModel = dataZoomModel;
+ this.ecModel = ecModel;
+ this.api = api;
+ };
+ DataZoomView2.type = "dataZoom";
+ return DataZoomView2;
+}(Component_default2);
+var DataZoomView_default = DataZoomView;
+
+// node_modules/echarts/lib/component/dataZoom/SelectZoomView.js
+var SelectDataZoomView = function(_super) {
+ __extends(SelectDataZoomView2, _super);
+ function SelectDataZoomView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SelectDataZoomView2.type;
+ return _this;
+ }
+ SelectDataZoomView2.type = "dataZoom.select";
+ return SelectDataZoomView2;
+}(DataZoomView_default);
+var SelectZoomView_default = SelectDataZoomView;
+
+// node_modules/echarts/lib/component/dataZoom/AxisProxy.js
+var each9 = each;
+var asc2 = asc;
+var AxisProxy = function() {
+ function AxisProxy2(dimName, axisIndex, dataZoomModel, ecModel) {
+ this._dimName = dimName;
+ this._axisIndex = axisIndex;
+ this.ecModel = ecModel;
+ this._dataZoomModel = dataZoomModel;
+ }
+ AxisProxy2.prototype.hostedBy = function(dataZoomModel) {
+ return this._dataZoomModel === dataZoomModel;
+ };
+ AxisProxy2.prototype.getDataValueWindow = function() {
+ return this._valueWindow.slice();
+ };
+ AxisProxy2.prototype.getDataPercentWindow = function() {
+ return this._percentWindow.slice();
+ };
+ AxisProxy2.prototype.getTargetSeriesModels = function() {
+ var seriesModels = [];
+ this.ecModel.eachSeries(function(seriesModel) {
+ if (isCoordSupported(seriesModel)) {
+ var axisMainType = getAxisMainType(this._dimName);
+ var axisModel = seriesModel.getReferringComponents(axisMainType, SINGLE_REFERRING).models[0];
+ if (axisModel && this._axisIndex === axisModel.componentIndex) {
+ seriesModels.push(seriesModel);
+ }
+ }
+ }, this);
+ return seriesModels;
+ };
+ AxisProxy2.prototype.getAxisModel = function() {
+ return this.ecModel.getComponent(this._dimName + "Axis", this._axisIndex);
+ };
+ AxisProxy2.prototype.getMinMaxSpan = function() {
+ return clone(this._minMaxSpan);
+ };
+ AxisProxy2.prototype.calculateDataWindow = function(opt) {
+ var dataExtent = this._dataExtent;
+ var axisModel = this.getAxisModel();
+ var scale4 = axisModel.axis.scale;
+ var rangePropMode = this._dataZoomModel.getRangePropMode();
+ var percentExtent = [0, 100];
+ var percentWindow = [];
+ var valueWindow = [];
+ var hasPropModeValue;
+ each9(["start", "end"], function(prop, idx) {
+ var boundPercent = opt[prop];
+ var boundValue = opt[prop + "Value"];
+ if (rangePropMode[idx] === "percent") {
+ boundPercent == null && (boundPercent = percentExtent[idx]);
+ boundValue = scale4.parse(linearMap(boundPercent, percentExtent, dataExtent));
+ } else {
+ hasPropModeValue = true;
+ boundValue = boundValue == null ? dataExtent[idx] : scale4.parse(boundValue);
+ boundPercent = linearMap(boundValue, dataExtent, percentExtent);
+ }
+ valueWindow[idx] = boundValue == null || isNaN(boundValue) ? dataExtent[idx] : boundValue;
+ percentWindow[idx] = boundPercent == null || isNaN(boundPercent) ? percentExtent[idx] : boundPercent;
+ });
+ asc2(valueWindow);
+ asc2(percentWindow);
+ var spans = this._minMaxSpan;
+ hasPropModeValue ? restrictSet(valueWindow, percentWindow, dataExtent, percentExtent, false) : restrictSet(percentWindow, valueWindow, percentExtent, dataExtent, true);
+ function restrictSet(fromWindow, toWindow, fromExtent, toExtent, toValue) {
+ var suffix = toValue ? "Span" : "ValueSpan";
+ sliderMove(0, fromWindow, fromExtent, "all", spans["min" + suffix], spans["max" + suffix]);
+ for (var i = 0; i < 2; i++) {
+ toWindow[i] = linearMap(fromWindow[i], fromExtent, toExtent, true);
+ toValue && (toWindow[i] = scale4.parse(toWindow[i]));
+ }
+ }
+ return {
+ valueWindow,
+ percentWindow
+ };
+ };
+ AxisProxy2.prototype.reset = function(dataZoomModel) {
+ if (dataZoomModel !== this._dataZoomModel) {
+ return;
+ }
+ var targetSeries = this.getTargetSeriesModels();
+ this._dataExtent = calculateDataExtent(this, this._dimName, targetSeries);
+ this._updateMinMaxSpan();
+ var dataWindow = this.calculateDataWindow(dataZoomModel.settledOption);
+ this._valueWindow = dataWindow.valueWindow;
+ this._percentWindow = dataWindow.percentWindow;
+ this._setAxisModel();
+ };
+ AxisProxy2.prototype.filterData = function(dataZoomModel, api) {
+ if (dataZoomModel !== this._dataZoomModel) {
+ return;
+ }
+ var axisDim = this._dimName;
+ var seriesModels = this.getTargetSeriesModels();
+ var filterMode = dataZoomModel.get("filterMode");
+ var valueWindow = this._valueWindow;
+ if (filterMode === "none") {
+ return;
+ }
+ each9(seriesModels, function(seriesModel) {
+ var seriesData = seriesModel.getData();
+ var dataDims = seriesData.mapDimensionsAll(axisDim);
+ if (!dataDims.length) {
+ return;
+ }
+ if (filterMode === "weakFilter") {
+ var store_1 = seriesData.getStore();
+ var dataDimIndices_1 = map(dataDims, function(dim) {
+ return seriesData.getDimensionIndex(dim);
+ }, seriesData);
+ seriesData.filterSelf(function(dataIndex) {
+ var leftOut;
+ var rightOut;
+ var hasValue;
+ for (var i = 0; i < dataDims.length; i++) {
+ var value = store_1.get(dataDimIndices_1[i], dataIndex);
+ var thisHasValue = !isNaN(value);
+ var thisLeftOut = value < valueWindow[0];
+ var thisRightOut = value > valueWindow[1];
+ if (thisHasValue && !thisLeftOut && !thisRightOut) {
+ return true;
+ }
+ thisHasValue && (hasValue = true);
+ thisLeftOut && (leftOut = true);
+ thisRightOut && (rightOut = true);
+ }
+ return hasValue && leftOut && rightOut;
+ });
+ } else {
+ each9(dataDims, function(dim) {
+ if (filterMode === "empty") {
+ seriesModel.setData(seriesData = seriesData.map(dim, function(value) {
+ return !isInWindow(value) ? NaN : value;
+ }));
+ } else {
+ var range = {};
+ range[dim] = valueWindow;
+ seriesData.selectRange(range);
+ }
+ });
+ }
+ each9(dataDims, function(dim) {
+ seriesData.setApproximateExtent(valueWindow, dim);
+ });
+ });
+ function isInWindow(value) {
+ return value >= valueWindow[0] && value <= valueWindow[1];
+ }
+ };
+ AxisProxy2.prototype._updateMinMaxSpan = function() {
+ var minMaxSpan = this._minMaxSpan = {};
+ var dataZoomModel = this._dataZoomModel;
+ var dataExtent = this._dataExtent;
+ each9(["min", "max"], function(minMax) {
+ var percentSpan = dataZoomModel.get(minMax + "Span");
+ var valueSpan = dataZoomModel.get(minMax + "ValueSpan");
+ valueSpan != null && (valueSpan = this.getAxisModel().axis.scale.parse(valueSpan));
+ if (valueSpan != null) {
+ percentSpan = linearMap(dataExtent[0] + valueSpan, dataExtent, [0, 100], true);
+ } else if (percentSpan != null) {
+ valueSpan = linearMap(percentSpan, [0, 100], dataExtent, true) - dataExtent[0];
+ }
+ minMaxSpan[minMax + "Span"] = percentSpan;
+ minMaxSpan[minMax + "ValueSpan"] = valueSpan;
+ }, this);
+ };
+ AxisProxy2.prototype._setAxisModel = function() {
+ var axisModel = this.getAxisModel();
+ var percentWindow = this._percentWindow;
+ var valueWindow = this._valueWindow;
+ if (!percentWindow) {
+ return;
+ }
+ var precision = getPixelPrecision(valueWindow, [0, 500]);
+ precision = Math.min(precision, 20);
+ var rawExtentInfo = axisModel.axis.scale.rawExtentInfo;
+ if (percentWindow[0] !== 0) {
+ rawExtentInfo.setDeterminedMinMax("min", +valueWindow[0].toFixed(precision));
+ }
+ if (percentWindow[1] !== 100) {
+ rawExtentInfo.setDeterminedMinMax("max", +valueWindow[1].toFixed(precision));
+ }
+ rawExtentInfo.freeze();
+ };
+ return AxisProxy2;
+}();
+function calculateDataExtent(axisProxy, axisDim, seriesModels) {
+ var dataExtent = [Infinity, -Infinity];
+ each9(seriesModels, function(seriesModel) {
+ unionAxisExtentFromData(dataExtent, seriesModel.getData(), axisDim);
+ });
+ var axisModel = axisProxy.getAxisModel();
+ var rawExtentResult = ensureScaleRawExtentInfo(axisModel.axis.scale, axisModel, dataExtent).calculate();
+ return [rawExtentResult.min, rawExtentResult.max];
+}
+var AxisProxy_default = AxisProxy;
+
+// node_modules/echarts/lib/component/dataZoom/dataZoomProcessor.js
+var dataZoomProcessor = {
+ getTargetSeries: function(ecModel) {
+ function eachAxisModel(cb) {
+ ecModel.eachComponent("dataZoom", function(dataZoomModel) {
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ var axisModel = ecModel.getComponent(getAxisMainType(axisDim), axisIndex);
+ cb(axisDim, axisIndex, axisModel, dataZoomModel);
+ });
+ });
+ }
+ eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) {
+ axisModel.__dzAxisProxy = null;
+ });
+ var proxyList = [];
+ eachAxisModel(function(axisDim, axisIndex, axisModel, dataZoomModel) {
+ if (!axisModel.__dzAxisProxy) {
+ axisModel.__dzAxisProxy = new AxisProxy_default(axisDim, axisIndex, dataZoomModel, ecModel);
+ proxyList.push(axisModel.__dzAxisProxy);
+ }
+ });
+ var seriesModelMap = createHashMap();
+ each(proxyList, function(axisProxy) {
+ each(axisProxy.getTargetSeriesModels(), function(seriesModel) {
+ seriesModelMap.set(seriesModel.uid, seriesModel);
+ });
+ });
+ return seriesModelMap;
+ },
+ overallReset: function(ecModel, api) {
+ ecModel.eachComponent("dataZoom", function(dataZoomModel) {
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ dataZoomModel.getAxisProxy(axisDim, axisIndex).reset(dataZoomModel);
+ });
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ dataZoomModel.getAxisProxy(axisDim, axisIndex).filterData(dataZoomModel, api);
+ });
+ });
+ ecModel.eachComponent("dataZoom", function(dataZoomModel) {
+ var axisProxy = dataZoomModel.findRepresentativeAxisProxy();
+ if (axisProxy) {
+ var percentRange = axisProxy.getDataPercentWindow();
+ var valueRange = axisProxy.getDataValueWindow();
+ dataZoomModel.setCalculatedRange({
+ start: percentRange[0],
+ end: percentRange[1],
+ startValue: valueRange[0],
+ endValue: valueRange[1]
+ });
+ }
+ });
+ }
+};
+var dataZoomProcessor_default = dataZoomProcessor;
+
+// node_modules/echarts/lib/component/dataZoom/dataZoomAction.js
+function installDataZoomAction(registers) {
+ registers.registerAction("dataZoom", function(payload, ecModel) {
+ var effectedModels = findEffectedDataZooms(ecModel, payload);
+ each(effectedModels, function(dataZoomModel) {
+ dataZoomModel.setRawRange({
+ start: payload.start,
+ end: payload.end,
+ startValue: payload.startValue,
+ endValue: payload.endValue
+ });
+ });
+ });
+}
+
+// node_modules/echarts/lib/component/dataZoom/installCommon.js
+var installed = false;
+function installCommon(registers) {
+ if (installed) {
+ return;
+ }
+ installed = true;
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, dataZoomProcessor_default);
+ installDataZoomAction(registers);
+ registers.registerSubTypeDefaulter("dataZoom", function() {
+ return "slider";
+ });
+}
+
+// node_modules/echarts/lib/component/dataZoom/installDataZoomSelect.js
+function install35(registers) {
+ registers.registerComponentModel(SelectZoomModel_default);
+ registers.registerComponentView(SelectZoomView_default);
+ installCommon(registers);
+}
+
+// node_modules/echarts/lib/component/toolbox/featureManager.js
+var ToolboxFeature = function() {
+ function ToolboxFeature2() {
+ }
+ return ToolboxFeature2;
+}();
+var features = {};
+function registerFeature(name, ctor) {
+ features[name] = ctor;
+}
+function getFeature(name) {
+ return features[name];
+}
+
+// node_modules/echarts/lib/component/toolbox/ToolboxModel.js
+var ToolboxModel = function(_super) {
+ __extends(ToolboxModel2, _super);
+ function ToolboxModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ToolboxModel2.type;
+ return _this;
+ }
+ ToolboxModel2.prototype.optionUpdated = function() {
+ _super.prototype.optionUpdated.apply(this, arguments);
+ var ecModel = this.ecModel;
+ each(this.option.feature, function(featureOpt, featureName) {
+ var Feature = getFeature(featureName);
+ if (Feature) {
+ if (Feature.getDefaultOption) {
+ Feature.defaultOption = Feature.getDefaultOption(ecModel);
+ }
+ merge(featureOpt, Feature.defaultOption);
+ }
+ });
+ };
+ ToolboxModel2.type = "toolbox";
+ ToolboxModel2.layoutMode = {
+ type: "box",
+ ignoreSize: true
+ };
+ ToolboxModel2.defaultOption = {
+ show: true,
+ z: 6,
+ orient: "horizontal",
+ left: "right",
+ top: "top",
+ backgroundColor: "transparent",
+ borderColor: "#ccc",
+ borderRadius: 0,
+ borderWidth: 0,
+ padding: 5,
+ itemSize: 15,
+ itemGap: 8,
+ showTitle: true,
+ iconStyle: {
+ borderColor: "#666",
+ color: "none"
+ },
+ emphasis: {
+ iconStyle: {
+ borderColor: "#3E98C5"
+ }
+ },
+ tooltip: {
+ show: false,
+ position: "bottom"
+ }
+ };
+ return ToolboxModel2;
+}(Component_default);
+var ToolboxModel_default = ToolboxModel;
+
+// node_modules/echarts/lib/component/helper/listComponent.js
+function layout4(group, componentModel, api) {
+ var boxLayoutParams = componentModel.getBoxLayoutParams();
+ var padding = componentModel.get("padding");
+ var viewportSize = {
+ width: api.getWidth(),
+ height: api.getHeight()
+ };
+ var rect = getLayoutRect(boxLayoutParams, viewportSize, padding);
+ box(componentModel.get("orient"), group, componentModel.get("itemGap"), rect.width, rect.height);
+ positionElement(group, boxLayoutParams, viewportSize, padding);
+}
+function makeBackground(rect, componentModel) {
+ var padding = normalizeCssArray2(componentModel.get("padding"));
+ var style = componentModel.getItemStyle(["color", "opacity"]);
+ style.fill = componentModel.get("backgroundColor");
+ rect = new Rect_default({
+ shape: {
+ x: rect.x - padding[3],
+ y: rect.y - padding[0],
+ width: rect.width + padding[1] + padding[3],
+ height: rect.height + padding[0] + padding[2],
+ r: componentModel.get("borderRadius")
+ },
+ style,
+ silent: true,
+ z2: -1
+ });
+ return rect;
+}
+
+// node_modules/echarts/lib/component/toolbox/ToolboxView.js
+var ToolboxView = function(_super) {
+ __extends(ToolboxView2, _super);
+ function ToolboxView2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ ToolboxView2.prototype.render = function(toolboxModel, ecModel, api, payload) {
+ var group = this.group;
+ group.removeAll();
+ if (!toolboxModel.get("show")) {
+ return;
+ }
+ var itemSize = +toolboxModel.get("itemSize");
+ var isVertical = toolboxModel.get("orient") === "vertical";
+ var featureOpts = toolboxModel.get("feature") || {};
+ var features2 = this._features || (this._features = {});
+ var featureNames = [];
+ each(featureOpts, function(opt, name) {
+ featureNames.push(name);
+ });
+ new DataDiffer_default(this._featureNames || [], featureNames).add(processFeature).update(processFeature).remove(curry(processFeature, null)).execute();
+ this._featureNames = featureNames;
+ function processFeature(newIndex, oldIndex) {
+ var featureName = featureNames[newIndex];
+ var oldName = featureNames[oldIndex];
+ var featureOpt = featureOpts[featureName];
+ var featureModel = new Model_default(featureOpt, toolboxModel, toolboxModel.ecModel);
+ var feature;
+ if (payload && payload.newTitle != null && payload.featureName === featureName) {
+ featureOpt.title = payload.newTitle;
+ }
+ if (featureName && !oldName) {
+ if (isUserFeatureName(featureName)) {
+ feature = {
+ onclick: featureModel.option.onclick,
+ featureName
+ };
+ } else {
+ var Feature = getFeature(featureName);
+ if (!Feature) {
+ return;
+ }
+ feature = new Feature();
+ }
+ features2[featureName] = feature;
+ } else {
+ feature = features2[oldName];
+ if (!feature) {
+ return;
+ }
+ }
+ feature.uid = getUID("toolbox-feature");
+ feature.model = featureModel;
+ feature.ecModel = ecModel;
+ feature.api = api;
+ var isToolboxFeature = feature instanceof ToolboxFeature;
+ if (!featureName && oldName) {
+ isToolboxFeature && feature.dispose && feature.dispose(ecModel, api);
+ return;
+ }
+ if (!featureModel.get("show") || isToolboxFeature && feature.unusable) {
+ isToolboxFeature && feature.remove && feature.remove(ecModel, api);
+ return;
+ }
+ createIconPaths(featureModel, feature, featureName);
+ featureModel.setIconStatus = function(iconName, status) {
+ var option = this.option;
+ var iconPaths = this.iconPaths;
+ option.iconStatus = option.iconStatus || {};
+ option.iconStatus[iconName] = status;
+ if (iconPaths[iconName]) {
+ (status === "emphasis" ? enterEmphasis : leaveEmphasis)(iconPaths[iconName]);
+ }
+ };
+ if (feature instanceof ToolboxFeature) {
+ if (feature.render) {
+ feature.render(featureModel, ecModel, api, payload);
+ }
+ }
+ }
+ function createIconPaths(featureModel, feature, featureName) {
+ var iconStyleModel = featureModel.getModel("iconStyle");
+ var iconStyleEmphasisModel = featureModel.getModel(["emphasis", "iconStyle"]);
+ var icons = feature instanceof ToolboxFeature && feature.getIcons ? feature.getIcons() : featureModel.get("icon");
+ var titles = featureModel.get("title") || {};
+ var iconsMap;
+ var titlesMap;
+ if (isString(icons)) {
+ iconsMap = {};
+ iconsMap[featureName] = icons;
+ } else {
+ iconsMap = icons;
+ }
+ if (isString(titles)) {
+ titlesMap = {};
+ titlesMap[featureName] = titles;
+ } else {
+ titlesMap = titles;
+ }
+ var iconPaths = featureModel.iconPaths = {};
+ each(iconsMap, function(iconStr, iconName) {
+ var path = createIcon(iconStr, {}, {
+ x: -itemSize / 2,
+ y: -itemSize / 2,
+ width: itemSize,
+ height: itemSize
+ });
+ path.setStyle(iconStyleModel.getItemStyle());
+ var pathEmphasisState = path.ensureState("emphasis");
+ pathEmphasisState.style = iconStyleEmphasisModel.getItemStyle();
+ var textContent = new Text_default({
+ style: {
+ text: titlesMap[iconName],
+ align: iconStyleEmphasisModel.get("textAlign"),
+ borderRadius: iconStyleEmphasisModel.get("textBorderRadius"),
+ padding: iconStyleEmphasisModel.get("textPadding"),
+ fill: null,
+ font: getFont({
+ fontStyle: iconStyleEmphasisModel.get("textFontStyle"),
+ fontFamily: iconStyleEmphasisModel.get("textFontFamily"),
+ fontSize: iconStyleEmphasisModel.get("textFontSize"),
+ fontWeight: iconStyleEmphasisModel.get("textFontWeight")
+ }, ecModel)
+ },
+ ignore: true
+ });
+ path.setTextContent(textContent);
+ setTooltipConfig({
+ el: path,
+ componentModel: toolboxModel,
+ itemName: iconName,
+ formatterParamsExtra: {
+ title: titlesMap[iconName]
+ }
+ });
+ path.__title = titlesMap[iconName];
+ path.on("mouseover", function() {
+ var hoverStyle = iconStyleEmphasisModel.getItemStyle();
+ var defaultTextPosition = isVertical ? toolboxModel.get("right") == null && toolboxModel.get("left") !== "right" ? "right" : "left" : toolboxModel.get("bottom") == null && toolboxModel.get("top") !== "bottom" ? "bottom" : "top";
+ textContent.setStyle({
+ fill: iconStyleEmphasisModel.get("textFill") || hoverStyle.fill || hoverStyle.stroke || "#000",
+ backgroundColor: iconStyleEmphasisModel.get("textBackgroundColor")
+ });
+ path.setTextConfig({
+ position: iconStyleEmphasisModel.get("textPosition") || defaultTextPosition
+ });
+ textContent.ignore = !toolboxModel.get("showTitle");
+ api.enterEmphasis(this);
+ }).on("mouseout", function() {
+ if (featureModel.get(["iconStatus", iconName]) !== "emphasis") {
+ api.leaveEmphasis(this);
+ }
+ textContent.hide();
+ });
+ (featureModel.get(["iconStatus", iconName]) === "emphasis" ? enterEmphasis : leaveEmphasis)(path);
+ group.add(path);
+ path.on("click", bind(feature.onclick, feature, ecModel, api, iconName));
+ iconPaths[iconName] = path;
+ });
+ }
+ layout4(group, toolboxModel, api);
+ group.add(makeBackground(group.getBoundingRect(), toolboxModel));
+ isVertical || group.eachChild(function(icon) {
+ var titleText = icon.__title;
+ var emphasisState = icon.ensureState("emphasis");
+ var emphasisTextConfig = emphasisState.textConfig || (emphasisState.textConfig = {});
+ var textContent = icon.getTextContent();
+ var emphasisTextState = textContent && textContent.ensureState("emphasis");
+ if (emphasisTextState && !isFunction(emphasisTextState) && titleText) {
+ var emphasisTextStyle = emphasisTextState.style || (emphasisTextState.style = {});
+ var rect = getBoundingRect(titleText, Text_default.makeFont(emphasisTextStyle));
+ var offsetX = icon.x + group.x;
+ var offsetY = icon.y + group.y + itemSize;
+ var needPutOnTop = false;
+ if (offsetY + rect.height > api.getHeight()) {
+ emphasisTextConfig.position = "top";
+ needPutOnTop = true;
+ }
+ var topOffset = needPutOnTop ? -5 - rect.height : itemSize + 10;
+ if (offsetX + rect.width / 2 > api.getWidth()) {
+ emphasisTextConfig.position = ["100%", topOffset];
+ emphasisTextStyle.align = "right";
+ } else if (offsetX - rect.width / 2 < 0) {
+ emphasisTextConfig.position = [0, topOffset];
+ emphasisTextStyle.align = "left";
+ }
+ }
+ });
+ };
+ ToolboxView2.prototype.updateView = function(toolboxModel, ecModel, api, payload) {
+ each(this._features, function(feature) {
+ feature instanceof ToolboxFeature && feature.updateView && feature.updateView(feature.model, ecModel, api, payload);
+ });
+ };
+ ToolboxView2.prototype.remove = function(ecModel, api) {
+ each(this._features, function(feature) {
+ feature instanceof ToolboxFeature && feature.remove && feature.remove(ecModel, api);
+ });
+ this.group.removeAll();
+ };
+ ToolboxView2.prototype.dispose = function(ecModel, api) {
+ each(this._features, function(feature) {
+ feature instanceof ToolboxFeature && feature.dispose && feature.dispose(ecModel, api);
+ });
+ };
+ ToolboxView2.type = "toolbox";
+ return ToolboxView2;
+}(Component_default2);
+function isUserFeatureName(featureName) {
+ return featureName.indexOf("my") === 0;
+}
+var ToolboxView_default = ToolboxView;
+
+// node_modules/echarts/lib/component/toolbox/feature/SaveAsImage.js
+var SaveAsImage = function(_super) {
+ __extends(SaveAsImage2, _super);
+ function SaveAsImage2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ SaveAsImage2.prototype.onclick = function(ecModel, api) {
+ var model = this.model;
+ var title = model.get("name") || ecModel.get("title.0.text") || "echarts";
+ var isSvg = api.getZr().painter.getType() === "svg";
+ var type = isSvg ? "svg" : model.get("type", true) || "png";
+ var url = api.getConnectedDataURL({
+ type,
+ backgroundColor: model.get("backgroundColor", true) || ecModel.get("backgroundColor") || "#fff",
+ connectedBackgroundColor: model.get("connectedBackgroundColor"),
+ excludeComponents: model.get("excludeComponents"),
+ pixelRatio: model.get("pixelRatio")
+ });
+ var browser = env_default.browser;
+ if (typeof MouseEvent === "function" && (browser.newEdge || !browser.ie && !browser.edge)) {
+ var $a = document.createElement("a");
+ $a.download = title + "." + type;
+ $a.target = "_blank";
+ $a.href = url;
+ var evt = new MouseEvent("click", {
+ view: document.defaultView,
+ bubbles: true,
+ cancelable: false
+ });
+ $a.dispatchEvent(evt);
+ } else {
+ if (window.navigator.msSaveOrOpenBlob || isSvg) {
+ var parts = url.split(",");
+ var base64Encoded = parts[0].indexOf("base64") > -1;
+ var bstr = isSvg ? decodeURIComponent(parts[1]) : parts[1];
+ base64Encoded && (bstr = window.atob(bstr));
+ var filename = title + "." + type;
+ if (window.navigator.msSaveOrOpenBlob) {
+ var n = bstr.length;
+ var u8arr = new Uint8Array(n);
+ while (n--) {
+ u8arr[n] = bstr.charCodeAt(n);
+ }
+ var blob = new Blob([u8arr]);
+ window.navigator.msSaveOrOpenBlob(blob, filename);
+ } else {
+ var frame = document.createElement("iframe");
+ document.body.appendChild(frame);
+ var cw = frame.contentWindow;
+ var doc = cw.document;
+ doc.open("image/svg+xml", "replace");
+ doc.write(bstr);
+ doc.close();
+ cw.focus();
+ doc.execCommand("SaveAs", true, filename);
+ document.body.removeChild(frame);
+ }
+ } else {
+ var lang = model.get("lang");
+ var html = '
';
+ var tab = window.open();
+ tab.document.write(html);
+ tab.document.title = title;
+ }
+ }
+ };
+ SaveAsImage2.getDefaultOption = function(ecModel) {
+ var defaultOption3 = {
+ show: true,
+ 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: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "title"]),
+ type: "png",
+ connectedBackgroundColor: "#fff",
+ name: "",
+ excludeComponents: ["toolbox"],
+ lang: ecModel.getLocaleModel().get(["toolbox", "saveAsImage", "lang"])
+ };
+ return defaultOption3;
+ };
+ return SaveAsImage2;
+}(ToolboxFeature);
+var SaveAsImage_default = SaveAsImage;
+
+// node_modules/echarts/lib/component/toolbox/feature/MagicType.js
+var INNER_STACK_KEYWORD = "__ec_magicType_stack__";
+var radioTypes = [["line", "bar"], ["stack"]];
+var MagicType = function(_super) {
+ __extends(MagicType2, _super);
+ function MagicType2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ MagicType2.prototype.getIcons = function() {
+ var model = this.model;
+ var availableIcons = model.get("icon");
+ var icons = {};
+ each(model.get("type"), function(type) {
+ if (availableIcons[type]) {
+ icons[type] = availableIcons[type];
+ }
+ });
+ return icons;
+ };
+ MagicType2.getDefaultOption = function(ecModel) {
+ var defaultOption3 = {
+ show: true,
+ 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: ecModel.getLocaleModel().get(["toolbox", "magicType", "title"]),
+ option: {},
+ seriesIndex: {}
+ };
+ return defaultOption3;
+ };
+ MagicType2.prototype.onclick = function(ecModel, api, type) {
+ var model = this.model;
+ var seriesIndex = model.get(["seriesIndex", type]);
+ if (!seriesOptGenreator[type]) {
+ return;
+ }
+ var newOption = {
+ series: []
+ };
+ var generateNewSeriesTypes = function(seriesModel) {
+ var seriesType2 = seriesModel.subType;
+ var seriesId = seriesModel.id;
+ var newSeriesOpt = seriesOptGenreator[type](seriesType2, seriesId, seriesModel, model);
+ if (newSeriesOpt) {
+ defaults(newSeriesOpt, seriesModel.option);
+ newOption.series.push(newSeriesOpt);
+ }
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && coordSys.type === "cartesian2d" && (type === "line" || type === "bar")) {
+ var categoryAxis2 = coordSys.getAxesByScale("ordinal")[0];
+ if (categoryAxis2) {
+ var axisDim = categoryAxis2.dim;
+ var axisType = axisDim + "Axis";
+ var axisModel = seriesModel.getReferringComponents(axisType, SINGLE_REFERRING).models[0];
+ var axisIndex = axisModel.componentIndex;
+ newOption[axisType] = newOption[axisType] || [];
+ for (var i = 0; i <= axisIndex; i++) {
+ newOption[axisType][axisIndex] = newOption[axisType][axisIndex] || {};
+ }
+ newOption[axisType][axisIndex].boundaryGap = type === "bar";
+ }
+ }
+ };
+ each(radioTypes, function(radio) {
+ if (indexOf(radio, type) >= 0) {
+ each(radio, function(item) {
+ model.setIconStatus(item, "normal");
+ });
+ }
+ });
+ model.setIconStatus(type, "emphasis");
+ ecModel.eachComponent({
+ mainType: "series",
+ query: seriesIndex == null ? null : {
+ seriesIndex
+ }
+ }, generateNewSeriesTypes);
+ var newTitle;
+ var currentType = type;
+ if (type === "stack") {
+ newTitle = merge({
+ stack: model.option.title.tiled,
+ tiled: model.option.title.stack
+ }, model.option.title);
+ if (model.get(["iconStatus", type]) !== "emphasis") {
+ currentType = "tiled";
+ }
+ }
+ api.dispatchAction({
+ type: "changeMagicType",
+ currentType,
+ newOption,
+ newTitle,
+ featureName: "magicType"
+ });
+ };
+ return MagicType2;
+}(ToolboxFeature);
+var seriesOptGenreator = {
+ "line": function(seriesType2, seriesId, seriesModel, model) {
+ if (seriesType2 === "bar") {
+ return merge({
+ id: seriesId,
+ type: "line",
+ data: seriesModel.get("data"),
+ stack: seriesModel.get("stack"),
+ markPoint: seriesModel.get("markPoint"),
+ markLine: seriesModel.get("markLine")
+ }, model.get(["option", "line"]) || {}, true);
+ }
+ },
+ "bar": function(seriesType2, seriesId, seriesModel, model) {
+ if (seriesType2 === "line") {
+ return merge({
+ id: seriesId,
+ type: "bar",
+ data: seriesModel.get("data"),
+ stack: seriesModel.get("stack"),
+ markPoint: seriesModel.get("markPoint"),
+ markLine: seriesModel.get("markLine")
+ }, model.get(["option", "bar"]) || {}, true);
+ }
+ },
+ "stack": function(seriesType2, seriesId, seriesModel, model) {
+ var isStack = seriesModel.get("stack") === INNER_STACK_KEYWORD;
+ if (seriesType2 === "line" || seriesType2 === "bar") {
+ model.setIconStatus("stack", isStack ? "normal" : "emphasis");
+ return merge({
+ id: seriesId,
+ stack: isStack ? "" : INNER_STACK_KEYWORD
+ }, model.get(["option", "stack"]) || {}, true);
+ }
+ }
+};
+registerAction({
+ type: "changeMagicType",
+ event: "magicTypeChanged",
+ update: "prepareAndUpdate"
+}, function(payload, ecModel) {
+ ecModel.mergeOption(payload.newOption);
+});
+var MagicType_default = MagicType;
+
+// node_modules/echarts/lib/component/toolbox/feature/DataView.js
+var BLOCK_SPLITER = new Array(60).join("-");
+var ITEM_SPLITER = " ";
+function groupSeries(ecModel) {
+ var seriesGroupByCategoryAxis = {};
+ var otherSeries = [];
+ var meta = [];
+ ecModel.eachRawSeries(function(seriesModel) {
+ var coordSys = seriesModel.coordinateSystem;
+ if (coordSys && (coordSys.type === "cartesian2d" || coordSys.type === "polar")) {
+ var baseAxis = coordSys.getBaseAxis();
+ if (baseAxis.type === "category") {
+ var key = baseAxis.dim + "_" + baseAxis.index;
+ if (!seriesGroupByCategoryAxis[key]) {
+ seriesGroupByCategoryAxis[key] = {
+ categoryAxis: baseAxis,
+ valueAxis: coordSys.getOtherAxis(baseAxis),
+ series: []
+ };
+ meta.push({
+ axisDim: baseAxis.dim,
+ axisIndex: baseAxis.index
+ });
+ }
+ seriesGroupByCategoryAxis[key].series.push(seriesModel);
+ } else {
+ otherSeries.push(seriesModel);
+ }
+ } else {
+ otherSeries.push(seriesModel);
+ }
+ });
+ return {
+ seriesGroupByCategoryAxis,
+ other: otherSeries,
+ meta
+ };
+}
+function assembleSeriesWithCategoryAxis(groups) {
+ var tables = [];
+ each(groups, function(group, key) {
+ var categoryAxis2 = group.categoryAxis;
+ var valueAxis2 = group.valueAxis;
+ var valueAxisDim = valueAxis2.dim;
+ var headers = [" "].concat(map(group.series, function(series) {
+ return series.name;
+ }));
+ var columns = [categoryAxis2.model.getCategories()];
+ each(group.series, function(series) {
+ var rawData = series.getRawData();
+ columns.push(series.getRawData().mapArray(rawData.mapDimension(valueAxisDim), function(val) {
+ return val;
+ }));
+ });
+ var lines = [headers.join(ITEM_SPLITER)];
+ for (var i = 0; i < columns[0].length; i++) {
+ var items = [];
+ for (var j = 0; j < columns.length; j++) {
+ items.push(columns[j][i]);
+ }
+ lines.push(items.join(ITEM_SPLITER));
+ }
+ tables.push(lines.join("\n"));
+ });
+ return tables.join("\n\n" + BLOCK_SPLITER + "\n\n");
+}
+function assembleOtherSeries(series) {
+ return map(series, function(series2) {
+ var data = series2.getRawData();
+ var lines = [series2.name];
+ var vals = [];
+ data.each(data.dimensions, function() {
+ var argLen = arguments.length;
+ var dataIndex = arguments[argLen - 1];
+ var name = data.getName(dataIndex);
+ for (var i = 0; i < argLen - 1; i++) {
+ vals[i] = arguments[i];
+ }
+ lines.push((name ? name + ITEM_SPLITER : "") + vals.join(ITEM_SPLITER));
+ });
+ return lines.join("\n");
+ }).join("\n\n" + BLOCK_SPLITER + "\n\n");
+}
+function getContentFromModel(ecModel) {
+ var result = groupSeries(ecModel);
+ return {
+ value: filter([assembleSeriesWithCategoryAxis(result.seriesGroupByCategoryAxis), assembleOtherSeries(result.other)], function(str) {
+ return !!str.replace(/[\n\t\s]/g, "");
+ }).join("\n\n" + BLOCK_SPLITER + "\n\n"),
+ meta: result.meta
+ };
+}
+function trim2(str) {
+ return str.replace(/^\s\s*/, "").replace(/\s\s*$/, "");
+}
+function isTSVFormat(block) {
+ var firstLine = block.slice(0, block.indexOf("\n"));
+ if (firstLine.indexOf(ITEM_SPLITER) >= 0) {
+ return true;
+ }
+}
+var itemSplitRegex = new RegExp("[" + ITEM_SPLITER + "]+", "g");
+function parseTSVContents(tsv) {
+ var tsvLines = tsv.split(/\n+/g);
+ var headers = trim2(tsvLines.shift()).split(itemSplitRegex);
+ var categories = [];
+ var series = map(headers, function(header) {
+ return {
+ name: header,
+ data: []
+ };
+ });
+ for (var i = 0; i < tsvLines.length; i++) {
+ var items = trim2(tsvLines[i]).split(itemSplitRegex);
+ categories.push(items.shift());
+ for (var j = 0; j < items.length; j++) {
+ series[j] && (series[j].data[i] = items[j]);
+ }
+ }
+ return {
+ series,
+ categories
+ };
+}
+function parseListContents(str) {
+ var lines = str.split(/\n+/g);
+ var seriesName = trim2(lines.shift());
+ var data = [];
+ for (var i = 0; i < lines.length; i++) {
+ var line = trim2(lines[i]);
+ if (!line) {
+ continue;
+ }
+ var items = line.split(itemSplitRegex);
+ var name_1 = "";
+ var value = void 0;
+ var hasName = false;
+ if (isNaN(items[0])) {
+ hasName = true;
+ name_1 = items[0];
+ items = items.slice(1);
+ data[i] = {
+ name: name_1,
+ value: []
+ };
+ value = data[i].value;
+ } else {
+ value = data[i] = [];
+ }
+ for (var j = 0; j < items.length; j++) {
+ value.push(+items[j]);
+ }
+ if (value.length === 1) {
+ hasName ? data[i].value = value[0] : data[i] = value[0];
+ }
+ }
+ return {
+ name: seriesName,
+ data
+ };
+}
+function parseContents(str, blockMetaList) {
+ var blocks = str.split(new RegExp("\n*" + BLOCK_SPLITER + "\n*", "g"));
+ var newOption = {
+ series: []
+ };
+ each(blocks, function(block, idx) {
+ if (isTSVFormat(block)) {
+ var result = parseTSVContents(block);
+ var blockMeta = blockMetaList[idx];
+ var axisKey = blockMeta.axisDim + "Axis";
+ if (blockMeta) {
+ newOption[axisKey] = newOption[axisKey] || [];
+ newOption[axisKey][blockMeta.axisIndex] = {
+ data: result.categories
+ };
+ newOption.series = newOption.series.concat(result.series);
+ }
+ } else {
+ var result = parseListContents(block);
+ newOption.series.push(result);
+ }
+ });
+ return newOption;
+}
+var DataView = function(_super) {
+ __extends(DataView2, _super);
+ function DataView2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ DataView2.prototype.onclick = function(ecModel, api) {
+ setTimeout(function() {
+ api.dispatchAction({
+ type: "hideTip"
+ });
+ });
+ var container = api.getDom();
+ var model = this.model;
+ if (this._dom) {
+ container.removeChild(this._dom);
+ }
+ var root = document.createElement("div");
+ root.style.cssText = "position:absolute;top:0;bottom:0;left:0;right:0;padding:5px";
+ root.style.backgroundColor = model.get("backgroundColor") || "#fff";
+ var header = document.createElement("h4");
+ var lang = model.get("lang") || [];
+ header.innerHTML = lang[0] || model.get("title");
+ header.style.cssText = "margin:10px 20px";
+ header.style.color = model.get("textColor");
+ var viewMain = document.createElement("div");
+ var textarea = document.createElement("textarea");
+ viewMain.style.cssText = "overflow:auto";
+ var optionToContent = model.get("optionToContent");
+ var contentToOption = model.get("contentToOption");
+ var result = getContentFromModel(ecModel);
+ if (isFunction(optionToContent)) {
+ var htmlOrDom = optionToContent(api.getOption());
+ if (isString(htmlOrDom)) {
+ viewMain.innerHTML = htmlOrDom;
+ } else if (isDom(htmlOrDom)) {
+ viewMain.appendChild(htmlOrDom);
+ }
+ } else {
+ textarea.readOnly = model.get("readOnly");
+ var style = textarea.style;
+ style.cssText = "display:block;width:100%;height:100%;font-family:monospace;font-size:14px;line-height:1.6rem;resize:none;box-sizing:border-box;outline:none";
+ style.color = model.get("textColor");
+ style.borderColor = model.get("textareaBorderColor");
+ style.backgroundColor = model.get("textareaColor");
+ textarea.value = result.value;
+ viewMain.appendChild(textarea);
+ }
+ var blockMetaList = result.meta;
+ var buttonContainer = document.createElement("div");
+ buttonContainer.style.cssText = "position:absolute;bottom:5px;left:0;right:0";
+ var buttonStyle = "float:right;margin-right:20px;border:none;cursor:pointer;padding:2px 5px;font-size:12px;border-radius:3px";
+ var closeButton = document.createElement("div");
+ var refreshButton = document.createElement("div");
+ buttonStyle += ";background-color:" + model.get("buttonColor");
+ buttonStyle += ";color:" + model.get("buttonTextColor");
+ var self2 = this;
+ function close() {
+ container.removeChild(root);
+ self2._dom = null;
+ }
+ addEventListener(closeButton, "click", close);
+ addEventListener(refreshButton, "click", function() {
+ if (contentToOption == null && optionToContent != null || contentToOption != null && optionToContent == null) {
+ if (true) {
+ warn("It seems you have just provided one of `contentToOption` and `optionToContent` functions but missed the other one. Data change is ignored.");
+ }
+ close();
+ return;
+ }
+ var newOption;
+ try {
+ if (isFunction(contentToOption)) {
+ newOption = contentToOption(viewMain, api.getOption());
+ } else {
+ newOption = parseContents(textarea.value, blockMetaList);
+ }
+ } catch (e2) {
+ close();
+ throw new Error("Data view format error " + e2);
+ }
+ if (newOption) {
+ api.dispatchAction({
+ type: "changeDataView",
+ newOption
+ });
+ }
+ close();
+ });
+ closeButton.innerHTML = lang[1];
+ refreshButton.innerHTML = lang[2];
+ refreshButton.style.cssText = closeButton.style.cssText = buttonStyle;
+ !model.get("readOnly") && buttonContainer.appendChild(refreshButton);
+ buttonContainer.appendChild(closeButton);
+ root.appendChild(header);
+ root.appendChild(viewMain);
+ root.appendChild(buttonContainer);
+ viewMain.style.height = container.clientHeight - 80 + "px";
+ container.appendChild(root);
+ this._dom = root;
+ };
+ DataView2.prototype.remove = function(ecModel, api) {
+ this._dom && api.getDom().removeChild(this._dom);
+ };
+ DataView2.prototype.dispose = function(ecModel, api) {
+ this.remove(ecModel, api);
+ };
+ DataView2.getDefaultOption = function(ecModel) {
+ var defaultOption3 = {
+ show: true,
+ readOnly: false,
+ optionToContent: null,
+ contentToOption: null,
+ icon: "M17.5,17.3H33 M17.5,17.3H33 M45.4,29.5h-28 M11.5,2v56H51V14.8L38.4,2H11.5z M38.4,2.2v12.7H51 M45.4,41.7h-28",
+ title: ecModel.getLocaleModel().get(["toolbox", "dataView", "title"]),
+ lang: ecModel.getLocaleModel().get(["toolbox", "dataView", "lang"]),
+ backgroundColor: "#fff",
+ textColor: "#000",
+ textareaColor: "#fff",
+ textareaBorderColor: "#333",
+ buttonColor: "#c23531",
+ buttonTextColor: "#fff"
+ };
+ return defaultOption3;
+ };
+ return DataView2;
+}(ToolboxFeature);
+function tryMergeDataOption(newData, originalData) {
+ return map(newData, function(newVal, idx) {
+ var original = originalData && originalData[idx];
+ if (isObject(original) && !isArray(original)) {
+ var newValIsObject = isObject(newVal) && !isArray(newVal);
+ if (!newValIsObject) {
+ newVal = {
+ value: newVal
+ };
+ }
+ var shouldDeleteName = original.name != null && newVal.name == null;
+ newVal = defaults(newVal, original);
+ shouldDeleteName && delete newVal.name;
+ return newVal;
+ } else {
+ return newVal;
+ }
+ });
+}
+registerAction({
+ type: "changeDataView",
+ event: "dataViewChanged",
+ update: "prepareAndUpdate"
+}, function(payload, ecModel) {
+ var newSeriesOptList = [];
+ each(payload.newOption.series, function(seriesOpt) {
+ var seriesModel = ecModel.getSeriesByName(seriesOpt.name)[0];
+ if (!seriesModel) {
+ newSeriesOptList.push(extend({
+ type: "scatter"
+ }, seriesOpt));
+ } else {
+ var originalData = seriesModel.get("data");
+ newSeriesOptList.push({
+ name: seriesOpt.name,
+ data: tryMergeDataOption(seriesOpt.data, originalData)
+ });
+ }
+ });
+ ecModel.mergeOption(defaults({
+ series: newSeriesOptList
+ }, payload.newOption));
+});
+var DataView_default = DataView;
+
+// node_modules/echarts/lib/component/dataZoom/history.js
+var each10 = each;
+var inner16 = makeInner();
+function push(ecModel, newSnapshot) {
+ var storedSnapshots = getStoreSnapshots(ecModel);
+ each10(newSnapshot, function(batchItem, dataZoomId) {
+ var i = storedSnapshots.length - 1;
+ for (; i >= 0; i--) {
+ var snapshot = storedSnapshots[i];
+ if (snapshot[dataZoomId]) {
+ break;
+ }
+ }
+ if (i < 0) {
+ var dataZoomModel = ecModel.queryComponents({
+ mainType: "dataZoom",
+ subType: "select",
+ id: dataZoomId
+ })[0];
+ if (dataZoomModel) {
+ var percentRange = dataZoomModel.getPercentRange();
+ storedSnapshots[0][dataZoomId] = {
+ dataZoomId,
+ start: percentRange[0],
+ end: percentRange[1]
+ };
+ }
+ }
+ });
+ storedSnapshots.push(newSnapshot);
+}
+function pop(ecModel) {
+ var storedSnapshots = getStoreSnapshots(ecModel);
+ var head = storedSnapshots[storedSnapshots.length - 1];
+ storedSnapshots.length > 1 && storedSnapshots.pop();
+ var snapshot = {};
+ each10(head, function(batchItem, dataZoomId) {
+ for (var i = storedSnapshots.length - 1; i >= 0; i--) {
+ batchItem = storedSnapshots[i][dataZoomId];
+ if (batchItem) {
+ snapshot[dataZoomId] = batchItem;
+ break;
+ }
+ }
+ });
+ return snapshot;
+}
+function clear2(ecModel) {
+ inner16(ecModel).snapshots = null;
+}
+function count(ecModel) {
+ return getStoreSnapshots(ecModel).length;
+}
+function getStoreSnapshots(ecModel) {
+ var store = inner16(ecModel);
+ if (!store.snapshots) {
+ store.snapshots = [{}];
+ }
+ return store.snapshots;
+}
+
+// node_modules/echarts/lib/component/toolbox/feature/Restore.js
+var RestoreOption = function(_super) {
+ __extends(RestoreOption2, _super);
+ function RestoreOption2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ RestoreOption2.prototype.onclick = function(ecModel, api) {
+ clear2(ecModel);
+ api.dispatchAction({
+ type: "restore",
+ from: this.uid
+ });
+ };
+ RestoreOption2.getDefaultOption = function(ecModel) {
+ var defaultOption3 = {
+ show: true,
+ icon: "M3.8,33.4 M47,18.9h9.8V8.7 M56.3,20.1 C52.1,9,40.5,0.6,26.8,2.1C12.6,3.7,1.6,16.2,2.1,30.6 M13,41.1H3.1v10.2 M3.7,39.9c4.2,11.1,15.8,19.5,29.5,18 c14.2-1.6,25.2-14.1,24.7-28.5",
+ title: ecModel.getLocaleModel().get(["toolbox", "restore", "title"])
+ };
+ return defaultOption3;
+ };
+ return RestoreOption2;
+}(ToolboxFeature);
+registerAction({
+ type: "restore",
+ event: "restore",
+ update: "prepareAndUpdate"
+}, function(payload, ecModel) {
+ ecModel.resetOption("recreate");
+});
+var Restore_default = RestoreOption;
+
+// node_modules/echarts/lib/component/helper/BrushTargetManager.js
+var INCLUDE_FINDER_MAIN_TYPES = ["grid", "xAxis", "yAxis", "geo", "graph", "polar", "radiusAxis", "angleAxis", "bmap"];
+var BrushTargetManager = function() {
+ function BrushTargetManager2(finder, ecModel, opt) {
+ var _this = this;
+ this._targetInfoList = [];
+ var foundCpts = parseFinder2(ecModel, finder);
+ each(targetInfoBuilders, function(builder, type) {
+ if (!opt || !opt.include || indexOf(opt.include, type) >= 0) {
+ builder(foundCpts, _this._targetInfoList);
+ }
+ });
+ }
+ BrushTargetManager2.prototype.setOutputRanges = function(areas, ecModel) {
+ this.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) {
+ (area.coordRanges || (area.coordRanges = [])).push(coordRange);
+ if (!area.coordRange) {
+ area.coordRange = coordRange;
+ var result = coordConvert[area.brushType](0, coordSys, coordRange);
+ area.__rangeOffset = {
+ offset: diffProcessor[area.brushType](result.values, area.range, [1, 1]),
+ xyMinMax: result.xyMinMax
+ };
+ }
+ });
+ return areas;
+ };
+ BrushTargetManager2.prototype.matchOutputRanges = function(areas, ecModel, cb) {
+ each(areas, function(area) {
+ var targetInfo = this.findTargetInfo(area, ecModel);
+ if (targetInfo && targetInfo !== true) {
+ each(targetInfo.coordSyses, function(coordSys) {
+ var result = coordConvert[area.brushType](1, coordSys, area.range, true);
+ cb(area, result.values, coordSys, ecModel);
+ });
+ }
+ }, this);
+ };
+ BrushTargetManager2.prototype.setInputRanges = function(areas, ecModel) {
+ each(areas, function(area) {
+ var targetInfo = this.findTargetInfo(area, ecModel);
+ if (true) {
+ assert(!targetInfo || targetInfo === true || area.coordRange, "coordRange must be specified when coord index specified.");
+ assert(!targetInfo || targetInfo !== true || area.range, "range must be specified in global brush.");
+ }
+ area.range = area.range || [];
+ if (targetInfo && targetInfo !== true) {
+ area.panelId = targetInfo.panelId;
+ var result = coordConvert[area.brushType](0, targetInfo.coordSys, area.coordRange);
+ var rangeOffset = area.__rangeOffset;
+ area.range = rangeOffset ? diffProcessor[area.brushType](result.values, rangeOffset.offset, getScales(result.xyMinMax, rangeOffset.xyMinMax)) : result.values;
+ }
+ }, this);
+ };
+ BrushTargetManager2.prototype.makePanelOpts = function(api, getDefaultBrushType) {
+ return map(this._targetInfoList, function(targetInfo) {
+ var rect = targetInfo.getPanelRect();
+ return {
+ panelId: targetInfo.panelId,
+ defaultBrushType: getDefaultBrushType ? getDefaultBrushType(targetInfo) : null,
+ clipPath: makeRectPanelClipPath(rect),
+ isTargetByCursor: makeRectIsTargetByCursor(rect, api, targetInfo.coordSysModel),
+ getLinearBrushOtherExtent: makeLinearBrushOtherExtent(rect)
+ };
+ });
+ };
+ BrushTargetManager2.prototype.controlSeries = function(area, seriesModel, ecModel) {
+ var targetInfo = this.findTargetInfo(area, ecModel);
+ return targetInfo === true || targetInfo && indexOf(targetInfo.coordSyses, seriesModel.coordinateSystem) >= 0;
+ };
+ BrushTargetManager2.prototype.findTargetInfo = function(area, ecModel) {
+ var targetInfoList = this._targetInfoList;
+ var foundCpts = parseFinder2(ecModel, area);
+ for (var i = 0; i < targetInfoList.length; i++) {
+ var targetInfo = targetInfoList[i];
+ var areaPanelId = area.panelId;
+ if (areaPanelId) {
+ if (targetInfo.panelId === areaPanelId) {
+ return targetInfo;
+ }
+ } else {
+ for (var j = 0; j < targetInfoMatchers.length; j++) {
+ if (targetInfoMatchers[j](foundCpts, targetInfo)) {
+ return targetInfo;
+ }
+ }
+ }
+ }
+ return true;
+ };
+ return BrushTargetManager2;
+}();
+function formatMinMax(minMax) {
+ minMax[0] > minMax[1] && minMax.reverse();
+ return minMax;
+}
+function parseFinder2(ecModel, finder) {
+ return parseFinder(ecModel, finder, {
+ includeMainTypes: INCLUDE_FINDER_MAIN_TYPES
+ });
+}
+var targetInfoBuilders = {
+ grid: function(foundCpts, targetInfoList) {
+ var xAxisModels = foundCpts.xAxisModels;
+ var yAxisModels = foundCpts.yAxisModels;
+ var gridModels = foundCpts.gridModels;
+ var gridModelMap = createHashMap();
+ var xAxesHas = {};
+ var yAxesHas = {};
+ if (!xAxisModels && !yAxisModels && !gridModels) {
+ return;
+ }
+ each(xAxisModels, function(axisModel) {
+ var gridModel = axisModel.axis.grid.model;
+ gridModelMap.set(gridModel.id, gridModel);
+ xAxesHas[gridModel.id] = true;
+ });
+ each(yAxisModels, function(axisModel) {
+ var gridModel = axisModel.axis.grid.model;
+ gridModelMap.set(gridModel.id, gridModel);
+ yAxesHas[gridModel.id] = true;
+ });
+ each(gridModels, function(gridModel) {
+ gridModelMap.set(gridModel.id, gridModel);
+ xAxesHas[gridModel.id] = true;
+ yAxesHas[gridModel.id] = true;
+ });
+ gridModelMap.each(function(gridModel) {
+ var grid = gridModel.coordinateSystem;
+ var cartesians = [];
+ each(grid.getCartesians(), function(cartesian, index) {
+ if (indexOf(xAxisModels, cartesian.getAxis("x").model) >= 0 || indexOf(yAxisModels, cartesian.getAxis("y").model) >= 0) {
+ cartesians.push(cartesian);
+ }
+ });
+ targetInfoList.push({
+ panelId: "grid--" + gridModel.id,
+ gridModel,
+ coordSysModel: gridModel,
+ coordSys: cartesians[0],
+ coordSyses: cartesians,
+ getPanelRect: panelRectBuilders.grid,
+ xAxisDeclared: xAxesHas[gridModel.id],
+ yAxisDeclared: yAxesHas[gridModel.id]
+ });
+ });
+ },
+ geo: function(foundCpts, targetInfoList) {
+ each(foundCpts.geoModels, function(geoModel) {
+ var coordSys = geoModel.coordinateSystem;
+ targetInfoList.push({
+ panelId: "geo--" + geoModel.id,
+ geoModel,
+ coordSysModel: geoModel,
+ coordSys,
+ coordSyses: [coordSys],
+ getPanelRect: panelRectBuilders.geo
+ });
+ });
+ }
+};
+var targetInfoMatchers = [
+ function(foundCpts, targetInfo) {
+ var xAxisModel = foundCpts.xAxisModel;
+ var yAxisModel = foundCpts.yAxisModel;
+ var gridModel = foundCpts.gridModel;
+ !gridModel && xAxisModel && (gridModel = xAxisModel.axis.grid.model);
+ !gridModel && yAxisModel && (gridModel = yAxisModel.axis.grid.model);
+ return gridModel && gridModel === targetInfo.gridModel;
+ },
+ function(foundCpts, targetInfo) {
+ var geoModel = foundCpts.geoModel;
+ return geoModel && geoModel === targetInfo.geoModel;
+ }
+];
+var panelRectBuilders = {
+ grid: function() {
+ return this.coordSys.master.getRect().clone();
+ },
+ geo: function() {
+ var coordSys = this.coordSys;
+ var rect = coordSys.getBoundingRect().clone();
+ rect.applyTransform(getTransform(coordSys));
+ return rect;
+ }
+};
+var coordConvert = {
+ lineX: curry(axisConvert, 0),
+ lineY: curry(axisConvert, 1),
+ rect: function(to, coordSys, rangeOrCoordRange, clamp2) {
+ var xminymin = to ? coordSys.pointToData([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp2) : coordSys.dataToPoint([rangeOrCoordRange[0][0], rangeOrCoordRange[1][0]], clamp2);
+ var xmaxymax = to ? coordSys.pointToData([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp2) : coordSys.dataToPoint([rangeOrCoordRange[0][1], rangeOrCoordRange[1][1]], clamp2);
+ var values = [formatMinMax([xminymin[0], xmaxymax[0]]), formatMinMax([xminymin[1], xmaxymax[1]])];
+ return {
+ values,
+ xyMinMax: values
+ };
+ },
+ polygon: function(to, coordSys, rangeOrCoordRange, clamp2) {
+ var xyMinMax = [[Infinity, -Infinity], [Infinity, -Infinity]];
+ var values = map(rangeOrCoordRange, function(item) {
+ var p = to ? coordSys.pointToData(item, clamp2) : coordSys.dataToPoint(item, clamp2);
+ xyMinMax[0][0] = Math.min(xyMinMax[0][0], p[0]);
+ xyMinMax[1][0] = Math.min(xyMinMax[1][0], p[1]);
+ xyMinMax[0][1] = Math.max(xyMinMax[0][1], p[0]);
+ xyMinMax[1][1] = Math.max(xyMinMax[1][1], p[1]);
+ return p;
+ });
+ return {
+ values,
+ xyMinMax
+ };
+ }
+};
+function axisConvert(axisNameIndex, to, coordSys, rangeOrCoordRange) {
+ if (true) {
+ assert(coordSys.type === "cartesian2d", "lineX/lineY brush is available only in cartesian2d.");
+ }
+ var axis = coordSys.getAxis(["x", "y"][axisNameIndex]);
+ var values = formatMinMax(map([0, 1], function(i) {
+ return to ? axis.coordToData(axis.toLocalCoord(rangeOrCoordRange[i]), true) : axis.toGlobalCoord(axis.dataToCoord(rangeOrCoordRange[i]));
+ }));
+ var xyMinMax = [];
+ xyMinMax[axisNameIndex] = values;
+ xyMinMax[1 - axisNameIndex] = [NaN, NaN];
+ return {
+ values,
+ xyMinMax
+ };
+}
+var diffProcessor = {
+ lineX: curry(axisDiffProcessor, 0),
+ lineY: curry(axisDiffProcessor, 1),
+ rect: function(values, refer, scales) {
+ return [[values[0][0] - scales[0] * refer[0][0], values[0][1] - scales[0] * refer[0][1]], [values[1][0] - scales[1] * refer[1][0], values[1][1] - scales[1] * refer[1][1]]];
+ },
+ polygon: function(values, refer, scales) {
+ return map(values, function(item, idx) {
+ return [item[0] - scales[0] * refer[idx][0], item[1] - scales[1] * refer[idx][1]];
+ });
+ }
+};
+function axisDiffProcessor(axisNameIndex, values, refer, scales) {
+ return [values[0] - scales[axisNameIndex] * refer[0], values[1] - scales[axisNameIndex] * refer[1]];
+}
+function getScales(xyMinMaxCurr, xyMinMaxOrigin) {
+ var sizeCurr = getSize2(xyMinMaxCurr);
+ var sizeOrigin = getSize2(xyMinMaxOrigin);
+ var scales = [sizeCurr[0] / sizeOrigin[0], sizeCurr[1] / sizeOrigin[1]];
+ isNaN(scales[0]) && (scales[0] = 1);
+ isNaN(scales[1]) && (scales[1] = 1);
+ return scales;
+}
+function getSize2(xyMinMax) {
+ return xyMinMax ? [xyMinMax[0][1] - xyMinMax[0][0], xyMinMax[1][1] - xyMinMax[1][0]] : [NaN, NaN];
+}
+var BrushTargetManager_default = BrushTargetManager;
+
+// node_modules/echarts/lib/component/toolbox/feature/DataZoom.js
+var each11 = each;
+var DATA_ZOOM_ID_BASE = makeInternalComponentId("toolbox-dataZoom_");
+var DataZoomFeature = function(_super) {
+ __extends(DataZoomFeature2, _super);
+ function DataZoomFeature2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ DataZoomFeature2.prototype.render = function(featureModel, ecModel, api, payload) {
+ if (!this._brushController) {
+ this._brushController = new BrushController_default(api.getZr());
+ this._brushController.on("brush", bind(this._onBrush, this)).mount();
+ }
+ updateZoomBtnStatus(featureModel, ecModel, this, payload, api);
+ updateBackBtnStatus(featureModel, ecModel);
+ };
+ DataZoomFeature2.prototype.onclick = function(ecModel, api, type) {
+ handlers2[type].call(this);
+ };
+ DataZoomFeature2.prototype.remove = function(ecModel, api) {
+ this._brushController && this._brushController.unmount();
+ };
+ DataZoomFeature2.prototype.dispose = function(ecModel, api) {
+ this._brushController && this._brushController.dispose();
+ };
+ DataZoomFeature2.prototype._onBrush = function(eventParam) {
+ var areas = eventParam.areas;
+ if (!eventParam.isEnd || !areas.length) {
+ return;
+ }
+ var snapshot = {};
+ var ecModel = this.ecModel;
+ this._brushController.updateCovers([]);
+ var brushTargetManager = new BrushTargetManager_default(makeAxisFinder(this.model), ecModel, {
+ include: ["grid"]
+ });
+ brushTargetManager.matchOutputRanges(areas, ecModel, function(area, coordRange, coordSys) {
+ if (coordSys.type !== "cartesian2d") {
+ return;
+ }
+ var brushType = area.brushType;
+ if (brushType === "rect") {
+ setBatch("x", coordSys, coordRange[0]);
+ setBatch("y", coordSys, coordRange[1]);
+ } else {
+ setBatch({
+ lineX: "x",
+ lineY: "y"
+ }[brushType], coordSys, coordRange);
+ }
+ });
+ push(ecModel, snapshot);
+ this._dispatchZoomAction(snapshot);
+ function setBatch(dimName, coordSys, minMax) {
+ var axis = coordSys.getAxis(dimName);
+ var axisModel = axis.model;
+ var dataZoomModel = findDataZoom(dimName, axisModel, ecModel);
+ var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy(axisModel).getMinMaxSpan();
+ if (minMaxSpan.minValueSpan != null || minMaxSpan.maxValueSpan != null) {
+ minMax = sliderMove(0, minMax.slice(), axis.scale.getExtent(), 0, minMaxSpan.minValueSpan, minMaxSpan.maxValueSpan);
+ }
+ dataZoomModel && (snapshot[dataZoomModel.id] = {
+ dataZoomId: dataZoomModel.id,
+ startValue: minMax[0],
+ endValue: minMax[1]
+ });
+ }
+ function findDataZoom(dimName, axisModel, ecModel2) {
+ var found;
+ ecModel2.eachComponent({
+ mainType: "dataZoom",
+ subType: "select"
+ }, function(dzModel) {
+ var has3 = dzModel.getAxisModel(dimName, axisModel.componentIndex);
+ has3 && (found = dzModel);
+ });
+ return found;
+ }
+ };
+ ;
+ DataZoomFeature2.prototype._dispatchZoomAction = function(snapshot) {
+ var batch = [];
+ each11(snapshot, function(batchItem, dataZoomId) {
+ batch.push(clone(batchItem));
+ });
+ batch.length && this.api.dispatchAction({
+ type: "dataZoom",
+ from: this.uid,
+ batch
+ });
+ };
+ DataZoomFeature2.getDefaultOption = function(ecModel) {
+ var defaultOption3 = {
+ show: true,
+ filterMode: "filter",
+ icon: {
+ zoom: "M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",
+ back: "M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"
+ },
+ title: ecModel.getLocaleModel().get(["toolbox", "dataZoom", "title"]),
+ brushStyle: {
+ borderWidth: 0,
+ color: "rgba(210,219,238,0.2)"
+ }
+ };
+ return defaultOption3;
+ };
+ return DataZoomFeature2;
+}(ToolboxFeature);
+var handlers2 = {
+ zoom: function() {
+ var nextActive = !this._isZoomActive;
+ this.api.dispatchAction({
+ type: "takeGlobalCursor",
+ key: "dataZoomSelect",
+ dataZoomSelectActive: nextActive
+ });
+ },
+ back: function() {
+ this._dispatchZoomAction(pop(this.ecModel));
+ }
+};
+function makeAxisFinder(dzFeatureModel) {
+ var setting = {
+ xAxisIndex: dzFeatureModel.get("xAxisIndex", true),
+ yAxisIndex: dzFeatureModel.get("yAxisIndex", true),
+ xAxisId: dzFeatureModel.get("xAxisId", true),
+ yAxisId: dzFeatureModel.get("yAxisId", true)
+ };
+ if (setting.xAxisIndex == null && setting.xAxisId == null) {
+ setting.xAxisIndex = "all";
+ }
+ if (setting.yAxisIndex == null && setting.yAxisId == null) {
+ setting.yAxisIndex = "all";
+ }
+ return setting;
+}
+function updateBackBtnStatus(featureModel, ecModel) {
+ featureModel.setIconStatus("back", count(ecModel) > 1 ? "emphasis" : "normal");
+}
+function updateZoomBtnStatus(featureModel, ecModel, view, payload, api) {
+ var zoomActive = view._isZoomActive;
+ if (payload && payload.type === "takeGlobalCursor") {
+ zoomActive = payload.key === "dataZoomSelect" ? payload.dataZoomSelectActive : false;
+ }
+ view._isZoomActive = zoomActive;
+ featureModel.setIconStatus("zoom", zoomActive ? "emphasis" : "normal");
+ var brushTargetManager = new BrushTargetManager_default(makeAxisFinder(featureModel), ecModel, {
+ include: ["grid"]
+ });
+ var panels = brushTargetManager.makePanelOpts(api, function(targetInfo) {
+ return targetInfo.xAxisDeclared && !targetInfo.yAxisDeclared ? "lineX" : !targetInfo.xAxisDeclared && targetInfo.yAxisDeclared ? "lineY" : "rect";
+ });
+ view._brushController.setPanels(panels).enableBrush(zoomActive && panels.length ? {
+ brushType: "auto",
+ brushStyle: featureModel.getModel("brushStyle").getItemStyle()
+ } : false);
+}
+registerInternalOptionCreator("dataZoom", function(ecModel) {
+ var toolboxModel = ecModel.getComponent("toolbox", 0);
+ var featureDataZoomPath = ["feature", "dataZoom"];
+ if (!toolboxModel || toolboxModel.get(featureDataZoomPath) == null) {
+ return;
+ }
+ var dzFeatureModel = toolboxModel.getModel(featureDataZoomPath);
+ var dzOptions = [];
+ var finder = makeAxisFinder(dzFeatureModel);
+ var finderResult = parseFinder(ecModel, finder);
+ each11(finderResult.xAxisModels, function(axisModel) {
+ return buildInternalOptions(axisModel, "xAxis", "xAxisIndex");
+ });
+ each11(finderResult.yAxisModels, function(axisModel) {
+ return buildInternalOptions(axisModel, "yAxis", "yAxisIndex");
+ });
+ function buildInternalOptions(axisModel, axisMainType, axisIndexPropName) {
+ var axisIndex = axisModel.componentIndex;
+ var newOpt = {
+ type: "select",
+ $fromToolbox: true,
+ filterMode: dzFeatureModel.get("filterMode", true) || "filter",
+ id: DATA_ZOOM_ID_BASE + axisMainType + axisIndex
+ };
+ newOpt[axisIndexPropName] = axisIndex;
+ dzOptions.push(newOpt);
+ }
+ return dzOptions;
+});
+var DataZoom_default = DataZoomFeature;
+
+// node_modules/echarts/lib/component/toolbox/install.js
+function install36(registers) {
+ registers.registerComponentModel(ToolboxModel_default);
+ registers.registerComponentView(ToolboxView_default);
+ registerFeature("saveAsImage", SaveAsImage_default);
+ registerFeature("magicType", MagicType_default);
+ registerFeature("dataView", DataView_default);
+ registerFeature("dataZoom", DataZoom_default);
+ registerFeature("restore", Restore_default);
+ use(install35);
+}
+
+// node_modules/echarts/lib/component/tooltip/TooltipModel.js
+var TooltipModel = function(_super) {
+ __extends(TooltipModel2, _super);
+ function TooltipModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TooltipModel2.type;
+ return _this;
+ }
+ TooltipModel2.type = "tooltip";
+ TooltipModel2.dependencies = ["axisPointer"];
+ TooltipModel2.defaultOption = {
+ z: 60,
+ show: true,
+ showContent: true,
+ trigger: "item",
+ triggerOn: "mousemove|click",
+ alwaysShowContent: false,
+ displayMode: "single",
+ renderMode: "auto",
+ confine: null,
+ showDelay: 0,
+ hideDelay: 100,
+ transitionDuration: 0.4,
+ enterable: false,
+ backgroundColor: "#fff",
+ shadowBlur: 10,
+ shadowColor: "rgba(0, 0, 0, .2)",
+ shadowOffsetX: 1,
+ shadowOffsetY: 2,
+ borderRadius: 4,
+ borderWidth: 1,
+ padding: null,
+ extraCssText: "",
+ axisPointer: {
+ type: "line",
+ axis: "auto",
+ animation: "auto",
+ animationDurationUpdate: 200,
+ animationEasingUpdate: "exponentialOut",
+ crossStyle: {
+ color: "#999",
+ width: 1,
+ type: "dashed",
+ textStyle: {}
+ }
+ },
+ textStyle: {
+ color: "#666",
+ fontSize: 14
+ }
+ };
+ return TooltipModel2;
+}(Component_default);
+var TooltipModel_default = TooltipModel;
+
+// node_modules/echarts/lib/component/tooltip/helper.js
+function shouldTooltipConfine(tooltipModel) {
+ var confineOption = tooltipModel.get("confine");
+ return confineOption != null ? !!confineOption : tooltipModel.get("renderMode") === "richText";
+}
+function testStyle(styleProps) {
+ if (!env_default.domSupported) {
+ return;
+ }
+ var style = document.documentElement.style;
+ for (var i = 0, len2 = styleProps.length; i < len2; i++) {
+ if (styleProps[i] in style) {
+ return styleProps[i];
+ }
+ }
+}
+var TRANSFORM_VENDOR = testStyle(["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"]);
+var TRANSITION_VENDOR = testStyle(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]);
+function toCSSVendorPrefix(styleVendor, styleProp) {
+ if (!styleVendor) {
+ return styleProp;
+ }
+ styleProp = toCamelCase(styleProp, true);
+ var idx = styleVendor.indexOf(styleProp);
+ styleVendor = idx === -1 ? styleProp : "-" + styleVendor.slice(0, idx) + "-" + styleProp;
+ return styleVendor.toLowerCase();
+}
+function getComputedStyle(el, style) {
+ var stl = el.currentStyle || document.defaultView && document.defaultView.getComputedStyle(el);
+ return stl ? style ? stl[style] : stl : null;
+}
+
+// node_modules/echarts/lib/component/tooltip/TooltipHTMLContent.js
+var CSS_TRANSITION_VENDOR = toCSSVendorPrefix(TRANSITION_VENDOR, "transition");
+var CSS_TRANSFORM_VENDOR = toCSSVendorPrefix(TRANSFORM_VENDOR, "transform");
+var gCssText = "position:absolute;display:block;border-style:solid;white-space:nowrap;z-index:9999999;" + (env_default.transform3dSupported ? "will-change:transform;" : "");
+function mirrorPos(pos) {
+ pos = pos === "left" ? "right" : pos === "right" ? "left" : pos === "top" ? "bottom" : "top";
+ return pos;
+}
+function assembleArrow(tooltipModel, borderColor, arrowPosition) {
+ if (!isString(arrowPosition) || arrowPosition === "inside") {
+ return "";
+ }
+ var backgroundColor2 = tooltipModel.get("backgroundColor");
+ var borderWidth = tooltipModel.get("borderWidth");
+ borderColor = convertToColorString(borderColor);
+ var arrowPos = mirrorPos(arrowPosition);
+ var arrowSize = Math.max(Math.round(borderWidth) * 1.5, 6);
+ var positionStyle = "";
+ var transformStyle = CSS_TRANSFORM_VENDOR + ":";
+ var rotateDeg;
+ if (indexOf(["left", "right"], arrowPos) > -1) {
+ positionStyle += "top:50%";
+ transformStyle += "translateY(-50%) rotate(" + (rotateDeg = arrowPos === "left" ? -225 : -45) + "deg)";
+ } else {
+ positionStyle += "left:50%";
+ transformStyle += "translateX(-50%) rotate(" + (rotateDeg = arrowPos === "top" ? 225 : 45) + "deg)";
+ }
+ var rotateRadian = rotateDeg * Math.PI / 180;
+ var arrowWH = arrowSize + borderWidth;
+ var rotatedWH = arrowWH * Math.abs(Math.cos(rotateRadian)) + arrowWH * Math.abs(Math.sin(rotateRadian));
+ var arrowOffset = Math.round(((rotatedWH - Math.SQRT2 * borderWidth) / 2 + Math.SQRT2 * borderWidth - (rotatedWH - arrowWH) / 2) * 100) / 100;
+ positionStyle += ";" + arrowPos + ":-" + arrowOffset + "px";
+ var borderStyle = borderColor + " solid " + borderWidth + "px;";
+ var styleCss = ["position:absolute;width:" + arrowSize + "px;height:" + arrowSize + "px;z-index:-1;", positionStyle + ";" + transformStyle + ";", "border-bottom:" + borderStyle, "border-right:" + borderStyle, "background-color:" + backgroundColor2 + ";"];
+ return '';
+}
+function assembleTransition(duration, onlyFade) {
+ var transitionCurve = "cubic-bezier(0.23,1,0.32,1)";
+ var transitionOption = " " + duration / 2 + "s " + transitionCurve;
+ var transitionText = "opacity" + transitionOption + ",visibility" + transitionOption;
+ if (!onlyFade) {
+ transitionOption = " " + duration + "s " + transitionCurve;
+ transitionText += env_default.transformSupported ? "," + CSS_TRANSFORM_VENDOR + transitionOption : ",left" + transitionOption + ",top" + transitionOption;
+ }
+ return CSS_TRANSITION_VENDOR + ":" + transitionText;
+}
+function assembleTransform(x, y, toString) {
+ var x0 = x.toFixed(0) + "px";
+ var y0 = y.toFixed(0) + "px";
+ if (!env_default.transformSupported) {
+ return toString ? "top:" + y0 + ";left:" + x0 + ";" : [["top", y0], ["left", x0]];
+ }
+ var is3d = env_default.transform3dSupported;
+ var translate2 = "translate" + (is3d ? "3d" : "") + "(" + x0 + "," + y0 + (is3d ? ",0" : "") + ")";
+ return toString ? "top:0;left:0;" + CSS_TRANSFORM_VENDOR + ":" + translate2 + ";" : [["top", 0], ["left", 0], [TRANSFORM_VENDOR, translate2]];
+}
+function assembleFont(textStyleModel) {
+ var cssText = [];
+ var fontSize = textStyleModel.get("fontSize");
+ var color = textStyleModel.getTextColor();
+ color && cssText.push("color:" + color);
+ cssText.push("font:" + textStyleModel.getFont());
+ var lineHeight = retrieve2(textStyleModel.get("lineHeight"), Math.round(fontSize * 3 / 2));
+ fontSize && cssText.push("line-height:" + lineHeight + "px");
+ var shadowColor = textStyleModel.get("textShadowColor");
+ var shadowBlur = textStyleModel.get("textShadowBlur") || 0;
+ var shadowOffsetX = textStyleModel.get("textShadowOffsetX") || 0;
+ var shadowOffsetY = textStyleModel.get("textShadowOffsetY") || 0;
+ shadowColor && shadowBlur && cssText.push("text-shadow:" + shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor);
+ each(["decoration", "align"], function(name) {
+ var val = textStyleModel.get(name);
+ val && cssText.push("text-" + name + ":" + val);
+ });
+ return cssText.join(";");
+}
+function assembleCssText(tooltipModel, enableTransition, onlyFade) {
+ var cssText = [];
+ var transitionDuration = tooltipModel.get("transitionDuration");
+ var backgroundColor2 = tooltipModel.get("backgroundColor");
+ var shadowBlur = tooltipModel.get("shadowBlur");
+ var shadowColor = tooltipModel.get("shadowColor");
+ var shadowOffsetX = tooltipModel.get("shadowOffsetX");
+ var shadowOffsetY = tooltipModel.get("shadowOffsetY");
+ var textStyleModel = tooltipModel.getModel("textStyle");
+ var padding = getPaddingFromTooltipModel(tooltipModel, "html");
+ var boxShadow = shadowOffsetX + "px " + shadowOffsetY + "px " + shadowBlur + "px " + shadowColor;
+ cssText.push("box-shadow:" + boxShadow);
+ enableTransition && transitionDuration && cssText.push(assembleTransition(transitionDuration, onlyFade));
+ if (backgroundColor2) {
+ cssText.push("background-color:" + backgroundColor2);
+ }
+ each(["width", "color", "radius"], function(name) {
+ var borderName = "border-" + name;
+ var camelCase = toCamelCase(borderName);
+ var val = tooltipModel.get(camelCase);
+ val != null && cssText.push(borderName + ":" + val + (name === "color" ? "" : "px"));
+ });
+ cssText.push(assembleFont(textStyleModel));
+ if (padding != null) {
+ cssText.push("padding:" + normalizeCssArray2(padding).join("px ") + "px");
+ }
+ return cssText.join(";") + ";";
+}
+function makeStyleCoord(out2, zr, container, zrX, zrY) {
+ var zrPainter = zr && zr.painter;
+ if (container) {
+ var zrViewportRoot = zrPainter && zrPainter.getViewportRoot();
+ if (zrViewportRoot) {
+ transformLocalCoord(out2, zrViewportRoot, container, zrX, zrY);
+ }
+ } else {
+ out2[0] = zrX;
+ out2[1] = zrY;
+ var viewportRootOffset = zrPainter && zrPainter.getViewportRootOffset();
+ if (viewportRootOffset) {
+ out2[0] += viewportRootOffset.offsetLeft;
+ out2[1] += viewportRootOffset.offsetTop;
+ }
+ }
+ out2[2] = out2[0] / zr.getWidth();
+ out2[3] = out2[1] / zr.getHeight();
+}
+var TooltipHTMLContent = function() {
+ function TooltipHTMLContent2(api, opt) {
+ this._show = false;
+ this._styleCoord = [0, 0, 0, 0];
+ this._enterable = true;
+ this._alwaysShowContent = false;
+ this._firstShow = true;
+ this._longHide = true;
+ if (env_default.wxa) {
+ return null;
+ }
+ var el = document.createElement("div");
+ el.domBelongToZr = true;
+ this.el = el;
+ var zr = this._zr = api.getZr();
+ var appendTo = opt.appendTo;
+ var container = appendTo && (isString(appendTo) ? document.querySelector(appendTo) : isDom(appendTo) ? appendTo : isFunction(appendTo) && appendTo(api.getDom()));
+ makeStyleCoord(this._styleCoord, zr, container, api.getWidth() / 2, api.getHeight() / 2);
+ (container || api.getDom()).appendChild(el);
+ this._api = api;
+ this._container = container;
+ var self2 = this;
+ el.onmouseenter = function() {
+ if (self2._enterable) {
+ clearTimeout(self2._hideTimeout);
+ self2._show = true;
+ }
+ self2._inContent = true;
+ };
+ el.onmousemove = function(e2) {
+ e2 = e2 || window.event;
+ if (!self2._enterable) {
+ var handler = zr.handler;
+ var zrViewportRoot = zr.painter.getViewportRoot();
+ normalizeEvent(zrViewportRoot, e2, true);
+ handler.dispatch("mousemove", e2);
+ }
+ };
+ el.onmouseleave = function() {
+ self2._inContent = false;
+ if (self2._enterable) {
+ if (self2._show) {
+ self2.hideLater(self2._hideDelay);
+ }
+ }
+ };
+ }
+ TooltipHTMLContent2.prototype.update = function(tooltipModel) {
+ if (!this._container) {
+ var container = this._api.getDom();
+ var position2 = getComputedStyle(container, "position");
+ var domStyle = container.style;
+ if (domStyle.position !== "absolute" && position2 !== "absolute") {
+ domStyle.position = "relative";
+ }
+ }
+ var alwaysShowContent = tooltipModel.get("alwaysShowContent");
+ alwaysShowContent && this._moveIfResized();
+ this._alwaysShowContent = alwaysShowContent;
+ this.el.className = tooltipModel.get("className") || "";
+ };
+ TooltipHTMLContent2.prototype.show = function(tooltipModel, nearPointColor) {
+ clearTimeout(this._hideTimeout);
+ clearTimeout(this._longHideTimeout);
+ var el = this.el;
+ var style = el.style;
+ var styleCoord = this._styleCoord;
+ if (!el.innerHTML) {
+ style.display = "none";
+ } else {
+ style.cssText = gCssText + assembleCssText(tooltipModel, !this._firstShow, this._longHide) + assembleTransform(styleCoord[0], styleCoord[1], true) + ("border-color:" + convertToColorString(nearPointColor) + ";") + (tooltipModel.get("extraCssText") || "") + (";pointer-events:" + (this._enterable ? "auto" : "none"));
+ }
+ this._show = true;
+ this._firstShow = false;
+ this._longHide = false;
+ };
+ TooltipHTMLContent2.prototype.setContent = function(content, markers, tooltipModel, borderColor, arrowPosition) {
+ var el = this.el;
+ if (content == null) {
+ el.innerHTML = "";
+ return;
+ }
+ var arrow = "";
+ if (isString(arrowPosition) && tooltipModel.get("trigger") === "item" && !shouldTooltipConfine(tooltipModel)) {
+ arrow = assembleArrow(tooltipModel, borderColor, arrowPosition);
+ }
+ if (isString(content)) {
+ el.innerHTML = content + arrow;
+ } else if (content) {
+ el.innerHTML = "";
+ if (!isArray(content)) {
+ content = [content];
+ }
+ for (var i = 0; i < content.length; i++) {
+ if (isDom(content[i]) && content[i].parentNode !== el) {
+ el.appendChild(content[i]);
+ }
+ }
+ if (arrow && el.childNodes.length) {
+ var arrowEl = document.createElement("div");
+ arrowEl.innerHTML = arrow;
+ el.appendChild(arrowEl);
+ }
+ }
+ };
+ TooltipHTMLContent2.prototype.setEnterable = function(enterable) {
+ this._enterable = enterable;
+ };
+ TooltipHTMLContent2.prototype.getSize = function() {
+ var el = this.el;
+ return el ? [el.offsetWidth, el.offsetHeight] : [0, 0];
+ };
+ TooltipHTMLContent2.prototype.moveTo = function(zrX, zrY) {
+ if (!this.el) {
+ return;
+ }
+ var styleCoord = this._styleCoord;
+ makeStyleCoord(styleCoord, this._zr, this._container, zrX, zrY);
+ if (styleCoord[0] != null && styleCoord[1] != null) {
+ var style_1 = this.el.style;
+ var transforms = assembleTransform(styleCoord[0], styleCoord[1]);
+ each(transforms, function(transform2) {
+ style_1[transform2[0]] = transform2[1];
+ });
+ }
+ };
+ TooltipHTMLContent2.prototype._moveIfResized = function() {
+ var ratioX = this._styleCoord[2];
+ var ratioY = this._styleCoord[3];
+ this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());
+ };
+ TooltipHTMLContent2.prototype.hide = function() {
+ var _this = this;
+ var style = this.el.style;
+ style.visibility = "hidden";
+ style.opacity = "0";
+ env_default.transform3dSupported && (style.willChange = "");
+ this._show = false;
+ this._longHideTimeout = setTimeout(function() {
+ return _this._longHide = true;
+ }, 500);
+ };
+ TooltipHTMLContent2.prototype.hideLater = function(time) {
+ if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) {
+ if (time) {
+ this._hideDelay = time;
+ this._show = false;
+ this._hideTimeout = setTimeout(bind(this.hide, this), time);
+ } else {
+ this.hide();
+ }
+ }
+ };
+ TooltipHTMLContent2.prototype.isShow = function() {
+ return this._show;
+ };
+ TooltipHTMLContent2.prototype.dispose = function() {
+ clearTimeout(this._hideTimeout);
+ clearTimeout(this._longHideTimeout);
+ var parentNode2 = this.el.parentNode;
+ parentNode2 && parentNode2.removeChild(this.el);
+ this.el = this._container = null;
+ };
+ return TooltipHTMLContent2;
+}();
+var TooltipHTMLContent_default = TooltipHTMLContent;
+
+// node_modules/echarts/lib/component/tooltip/TooltipRichContent.js
+var TooltipRichContent = function() {
+ function TooltipRichContent2(api) {
+ this._show = false;
+ this._styleCoord = [0, 0, 0, 0];
+ this._alwaysShowContent = false;
+ this._enterable = true;
+ this._zr = api.getZr();
+ makeStyleCoord2(this._styleCoord, this._zr, api.getWidth() / 2, api.getHeight() / 2);
+ }
+ TooltipRichContent2.prototype.update = function(tooltipModel) {
+ var alwaysShowContent = tooltipModel.get("alwaysShowContent");
+ alwaysShowContent && this._moveIfResized();
+ this._alwaysShowContent = alwaysShowContent;
+ };
+ TooltipRichContent2.prototype.show = function() {
+ if (this._hideTimeout) {
+ clearTimeout(this._hideTimeout);
+ }
+ this.el.show();
+ this._show = true;
+ };
+ TooltipRichContent2.prototype.setContent = function(content, markupStyleCreator, tooltipModel, borderColor, arrowPosition) {
+ var _this = this;
+ if (isObject(content)) {
+ throwError(true ? "Passing DOM nodes as content is not supported in richText tooltip!" : "");
+ }
+ if (this.el) {
+ this._zr.remove(this.el);
+ }
+ var textStyleModel = tooltipModel.getModel("textStyle");
+ this.el = new Text_default({
+ style: {
+ rich: markupStyleCreator.richTextStyles,
+ text: content,
+ lineHeight: 22,
+ borderWidth: 1,
+ borderColor,
+ textShadowColor: textStyleModel.get("textShadowColor"),
+ fill: tooltipModel.get(["textStyle", "color"]),
+ padding: getPaddingFromTooltipModel(tooltipModel, "richText"),
+ verticalAlign: "top",
+ align: "left"
+ },
+ z: tooltipModel.get("z")
+ });
+ each(["backgroundColor", "borderRadius", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY"], function(propName) {
+ _this.el.style[propName] = tooltipModel.get(propName);
+ });
+ each(["textShadowBlur", "textShadowOffsetX", "textShadowOffsetY"], function(propName) {
+ _this.el.style[propName] = textStyleModel.get(propName) || 0;
+ });
+ this._zr.add(this.el);
+ var self2 = this;
+ this.el.on("mouseover", function() {
+ if (self2._enterable) {
+ clearTimeout(self2._hideTimeout);
+ self2._show = true;
+ }
+ self2._inContent = true;
+ });
+ this.el.on("mouseout", function() {
+ if (self2._enterable) {
+ if (self2._show) {
+ self2.hideLater(self2._hideDelay);
+ }
+ }
+ self2._inContent = false;
+ });
+ };
+ TooltipRichContent2.prototype.setEnterable = function(enterable) {
+ this._enterable = enterable;
+ };
+ TooltipRichContent2.prototype.getSize = function() {
+ var el = this.el;
+ var bounding = this.el.getBoundingRect();
+ var shadowOuterSize = calcShadowOuterSize(el.style);
+ return [bounding.width + shadowOuterSize.left + shadowOuterSize.right, bounding.height + shadowOuterSize.top + shadowOuterSize.bottom];
+ };
+ TooltipRichContent2.prototype.moveTo = function(x, y) {
+ var el = this.el;
+ if (el) {
+ var styleCoord = this._styleCoord;
+ makeStyleCoord2(styleCoord, this._zr, x, y);
+ x = styleCoord[0];
+ y = styleCoord[1];
+ var style = el.style;
+ var borderWidth = mathMaxWith0(style.borderWidth || 0);
+ var shadowOuterSize = calcShadowOuterSize(style);
+ el.x = x + borderWidth + shadowOuterSize.left;
+ el.y = y + borderWidth + shadowOuterSize.top;
+ el.markRedraw();
+ }
+ };
+ TooltipRichContent2.prototype._moveIfResized = function() {
+ var ratioX = this._styleCoord[2];
+ var ratioY = this._styleCoord[3];
+ this.moveTo(ratioX * this._zr.getWidth(), ratioY * this._zr.getHeight());
+ };
+ TooltipRichContent2.prototype.hide = function() {
+ if (this.el) {
+ this.el.hide();
+ }
+ this._show = false;
+ };
+ TooltipRichContent2.prototype.hideLater = function(time) {
+ if (this._show && !(this._inContent && this._enterable) && !this._alwaysShowContent) {
+ if (time) {
+ this._hideDelay = time;
+ this._show = false;
+ this._hideTimeout = setTimeout(bind(this.hide, this), time);
+ } else {
+ this.hide();
+ }
+ }
+ };
+ TooltipRichContent2.prototype.isShow = function() {
+ return this._show;
+ };
+ TooltipRichContent2.prototype.dispose = function() {
+ this._zr.remove(this.el);
+ };
+ return TooltipRichContent2;
+}();
+function mathMaxWith0(val) {
+ return Math.max(0, val);
+}
+function calcShadowOuterSize(style) {
+ var shadowBlur = mathMaxWith0(style.shadowBlur || 0);
+ var shadowOffsetX = mathMaxWith0(style.shadowOffsetX || 0);
+ var shadowOffsetY = mathMaxWith0(style.shadowOffsetY || 0);
+ return {
+ left: mathMaxWith0(shadowBlur - shadowOffsetX),
+ right: mathMaxWith0(shadowBlur + shadowOffsetX),
+ top: mathMaxWith0(shadowBlur - shadowOffsetY),
+ bottom: mathMaxWith0(shadowBlur + shadowOffsetY)
+ };
+}
+function makeStyleCoord2(out2, zr, zrX, zrY) {
+ out2[0] = zrX;
+ out2[1] = zrY;
+ out2[2] = out2[0] / zr.getWidth();
+ out2[3] = out2[1] / zr.getHeight();
+}
+var TooltipRichContent_default = TooltipRichContent;
+
+// node_modules/echarts/lib/component/tooltip/TooltipView.js
+var proxyRect = new Rect_default({
+ shape: {
+ x: -1,
+ y: -1,
+ width: 2,
+ height: 2
+ }
+});
+var TooltipView = function(_super) {
+ __extends(TooltipView2, _super);
+ function TooltipView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TooltipView2.type;
+ return _this;
+ }
+ TooltipView2.prototype.init = function(ecModel, api) {
+ if (env_default.node || !api.getDom()) {
+ return;
+ }
+ var tooltipModel = ecModel.getComponent("tooltip");
+ var renderMode = this._renderMode = getTooltipRenderMode(tooltipModel.get("renderMode"));
+ this._tooltipContent = renderMode === "richText" ? new TooltipRichContent_default(api) : new TooltipHTMLContent_default(api, {
+ appendTo: tooltipModel.get("appendToBody", true) ? "body" : tooltipModel.get("appendTo", true)
+ });
+ };
+ TooltipView2.prototype.render = function(tooltipModel, ecModel, api) {
+ if (env_default.node || !api.getDom()) {
+ return;
+ }
+ this.group.removeAll();
+ this._tooltipModel = tooltipModel;
+ this._ecModel = ecModel;
+ this._api = api;
+ var tooltipContent = this._tooltipContent;
+ tooltipContent.update(tooltipModel);
+ tooltipContent.setEnterable(tooltipModel.get("enterable"));
+ this._initGlobalListener();
+ this._keepShow();
+ if (this._renderMode !== "richText" && tooltipModel.get("transitionDuration")) {
+ createOrUpdate(this, "_updatePosition", 50, "fixRate");
+ } else {
+ clear(this, "_updatePosition");
+ }
+ };
+ TooltipView2.prototype._initGlobalListener = function() {
+ var tooltipModel = this._tooltipModel;
+ var triggerOn = tooltipModel.get("triggerOn");
+ register("itemTooltip", this._api, bind(function(currTrigger, e2, dispatchAction3) {
+ if (triggerOn !== "none") {
+ if (triggerOn.indexOf(currTrigger) >= 0) {
+ this._tryShow(e2, dispatchAction3);
+ } else if (currTrigger === "leave") {
+ this._hide(dispatchAction3);
+ }
+ }
+ }, this));
+ };
+ TooltipView2.prototype._keepShow = function() {
+ var tooltipModel = this._tooltipModel;
+ var ecModel = this._ecModel;
+ var api = this._api;
+ var triggerOn = tooltipModel.get("triggerOn");
+ if (this._lastX != null && this._lastY != null && triggerOn !== "none" && triggerOn !== "click") {
+ var self_1 = this;
+ clearTimeout(this._refreshUpdateTimeout);
+ this._refreshUpdateTimeout = setTimeout(function() {
+ !api.isDisposed() && self_1.manuallyShowTip(tooltipModel, ecModel, api, {
+ x: self_1._lastX,
+ y: self_1._lastY,
+ dataByCoordSys: self_1._lastDataByCoordSys
+ });
+ });
+ }
+ };
+ TooltipView2.prototype.manuallyShowTip = function(tooltipModel, ecModel, api, payload) {
+ if (payload.from === this.uid || env_default.node || !api.getDom()) {
+ return;
+ }
+ var dispatchAction3 = makeDispatchAction2(payload, api);
+ this._ticket = "";
+ var dataByCoordSys = payload.dataByCoordSys;
+ var cmptRef = findComponentReference(payload, ecModel, api);
+ if (cmptRef) {
+ var rect = cmptRef.el.getBoundingRect().clone();
+ rect.applyTransform(cmptRef.el.transform);
+ this._tryShow({
+ offsetX: rect.x + rect.width / 2,
+ offsetY: rect.y + rect.height / 2,
+ target: cmptRef.el,
+ position: payload.position,
+ positionDefault: "bottom"
+ }, dispatchAction3);
+ } else if (payload.tooltip && payload.x != null && payload.y != null) {
+ var el = proxyRect;
+ el.x = payload.x;
+ el.y = payload.y;
+ el.update();
+ getECData(el).tooltipConfig = {
+ name: null,
+ option: payload.tooltip
+ };
+ this._tryShow({
+ offsetX: payload.x,
+ offsetY: payload.y,
+ target: el
+ }, dispatchAction3);
+ } else if (dataByCoordSys) {
+ this._tryShow({
+ offsetX: payload.x,
+ offsetY: payload.y,
+ position: payload.position,
+ dataByCoordSys,
+ tooltipOption: payload.tooltipOption
+ }, dispatchAction3);
+ } else if (payload.seriesIndex != null) {
+ if (this._manuallyAxisShowTip(tooltipModel, ecModel, api, payload)) {
+ return;
+ }
+ var pointInfo = findPointFromSeries(payload, ecModel);
+ var cx = pointInfo.point[0];
+ var cy = pointInfo.point[1];
+ if (cx != null && cy != null) {
+ this._tryShow({
+ offsetX: cx,
+ offsetY: cy,
+ target: pointInfo.el,
+ position: payload.position,
+ positionDefault: "bottom"
+ }, dispatchAction3);
+ }
+ } else if (payload.x != null && payload.y != null) {
+ api.dispatchAction({
+ type: "updateAxisPointer",
+ x: payload.x,
+ y: payload.y
+ });
+ this._tryShow({
+ offsetX: payload.x,
+ offsetY: payload.y,
+ position: payload.position,
+ target: api.getZr().findHover(payload.x, payload.y).target
+ }, dispatchAction3);
+ }
+ };
+ TooltipView2.prototype.manuallyHideTip = function(tooltipModel, ecModel, api, payload) {
+ var tooltipContent = this._tooltipContent;
+ if (this._tooltipModel) {
+ tooltipContent.hideLater(this._tooltipModel.get("hideDelay"));
+ }
+ this._lastX = this._lastY = this._lastDataByCoordSys = null;
+ if (payload.from !== this.uid) {
+ this._hide(makeDispatchAction2(payload, api));
+ }
+ };
+ TooltipView2.prototype._manuallyAxisShowTip = function(tooltipModel, ecModel, api, payload) {
+ var seriesIndex = payload.seriesIndex;
+ var dataIndex = payload.dataIndex;
+ var coordSysAxesInfo = ecModel.getComponent("axisPointer").coordSysAxesInfo;
+ if (seriesIndex == null || dataIndex == null || coordSysAxesInfo == null) {
+ return;
+ }
+ var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
+ if (!seriesModel) {
+ return;
+ }
+ var data = seriesModel.getData();
+ var tooltipCascadedModel = buildTooltipModel([data.getItemModel(dataIndex), seriesModel, (seriesModel.coordinateSystem || {}).model], this._tooltipModel);
+ if (tooltipCascadedModel.get("trigger") !== "axis") {
+ return;
+ }
+ api.dispatchAction({
+ type: "updateAxisPointer",
+ seriesIndex,
+ dataIndex,
+ position: payload.position
+ });
+ return true;
+ };
+ TooltipView2.prototype._tryShow = function(e2, dispatchAction3) {
+ var el = e2.target;
+ var tooltipModel = this._tooltipModel;
+ if (!tooltipModel) {
+ return;
+ }
+ this._lastX = e2.offsetX;
+ this._lastY = e2.offsetY;
+ var dataByCoordSys = e2.dataByCoordSys;
+ if (dataByCoordSys && dataByCoordSys.length) {
+ this._showAxisTooltip(dataByCoordSys, e2);
+ } else if (el) {
+ var ecData = getECData(el);
+ if (ecData.ssrType === "legend") {
+ return;
+ }
+ this._lastDataByCoordSys = null;
+ var seriesDispatcher_1;
+ var cmptDispatcher_1;
+ findEventDispatcher(el, function(target) {
+ if (getECData(target).dataIndex != null) {
+ seriesDispatcher_1 = target;
+ return true;
+ }
+ if (getECData(target).tooltipConfig != null) {
+ cmptDispatcher_1 = target;
+ return true;
+ }
+ }, true);
+ if (seriesDispatcher_1) {
+ this._showSeriesItemTooltip(e2, seriesDispatcher_1, dispatchAction3);
+ } else if (cmptDispatcher_1) {
+ this._showComponentItemTooltip(e2, cmptDispatcher_1, dispatchAction3);
+ } else {
+ this._hide(dispatchAction3);
+ }
+ } else {
+ this._lastDataByCoordSys = null;
+ this._hide(dispatchAction3);
+ }
+ };
+ TooltipView2.prototype._showOrMove = function(tooltipModel, cb) {
+ var delay = tooltipModel.get("showDelay");
+ cb = bind(cb, this);
+ clearTimeout(this._showTimout);
+ delay > 0 ? this._showTimout = setTimeout(cb, delay) : cb();
+ };
+ TooltipView2.prototype._showAxisTooltip = function(dataByCoordSys, e2) {
+ var ecModel = this._ecModel;
+ var globalTooltipModel = this._tooltipModel;
+ var point = [e2.offsetX, e2.offsetY];
+ var singleTooltipModel = buildTooltipModel([e2.tooltipOption], globalTooltipModel);
+ var renderMode = this._renderMode;
+ var cbParamsList = [];
+ var articleMarkup = createTooltipMarkup("section", {
+ blocks: [],
+ noHeader: true
+ });
+ var markupTextArrLegacy = [];
+ var markupStyleCreator = new TooltipMarkupStyleCreator();
+ each(dataByCoordSys, function(itemCoordSys) {
+ each(itemCoordSys.dataByAxis, function(axisItem) {
+ var axisModel = ecModel.getComponent(axisItem.axisDim + "Axis", axisItem.axisIndex);
+ var axisValue = axisItem.value;
+ if (!axisModel || axisValue == null) {
+ return;
+ }
+ var axisValueLabel = getValueLabel(axisValue, axisModel.axis, ecModel, axisItem.seriesDataIndices, axisItem.valueLabelOpt);
+ var axisSectionMarkup = createTooltipMarkup("section", {
+ header: axisValueLabel,
+ noHeader: !trim(axisValueLabel),
+ sortBlocks: true,
+ blocks: []
+ });
+ articleMarkup.blocks.push(axisSectionMarkup);
+ each(axisItem.seriesDataIndices, function(idxItem) {
+ var series = ecModel.getSeriesByIndex(idxItem.seriesIndex);
+ var dataIndex = idxItem.dataIndexInside;
+ var cbParams = series.getDataParams(dataIndex);
+ if (cbParams.dataIndex < 0) {
+ return;
+ }
+ cbParams.axisDim = axisItem.axisDim;
+ cbParams.axisIndex = axisItem.axisIndex;
+ cbParams.axisType = axisItem.axisType;
+ cbParams.axisId = axisItem.axisId;
+ cbParams.axisValue = getAxisRawValue(axisModel.axis, {
+ value: axisValue
+ });
+ cbParams.axisValueLabel = axisValueLabel;
+ cbParams.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(cbParams.color), renderMode);
+ var seriesTooltipResult = normalizeTooltipFormatResult(series.formatTooltip(dataIndex, true, null));
+ var frag = seriesTooltipResult.frag;
+ if (frag) {
+ var valueFormatter = buildTooltipModel([series], globalTooltipModel).get("valueFormatter");
+ axisSectionMarkup.blocks.push(valueFormatter ? extend({
+ valueFormatter
+ }, frag) : frag);
+ }
+ if (seriesTooltipResult.text) {
+ markupTextArrLegacy.push(seriesTooltipResult.text);
+ }
+ cbParamsList.push(cbParams);
+ });
+ });
+ });
+ articleMarkup.blocks.reverse();
+ markupTextArrLegacy.reverse();
+ var positionExpr = e2.position;
+ var orderMode = singleTooltipModel.get("order");
+ var builtMarkupText = buildTooltipMarkup(articleMarkup, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), singleTooltipModel.get("textStyle"));
+ builtMarkupText && markupTextArrLegacy.unshift(builtMarkupText);
+ var blockBreak = renderMode === "richText" ? "\n\n" : "
";
+ var allMarkupText = markupTextArrLegacy.join(blockBreak);
+ this._showOrMove(singleTooltipModel, function() {
+ if (this._updateContentNotChangedOnAxis(dataByCoordSys, cbParamsList)) {
+ this._updatePosition(singleTooltipModel, positionExpr, point[0], point[1], this._tooltipContent, cbParamsList);
+ } else {
+ this._showTooltipContent(singleTooltipModel, allMarkupText, cbParamsList, Math.random() + "", point[0], point[1], positionExpr, null, markupStyleCreator);
+ }
+ });
+ };
+ TooltipView2.prototype._showSeriesItemTooltip = function(e2, dispatcher, dispatchAction3) {
+ var ecModel = this._ecModel;
+ var ecData = getECData(dispatcher);
+ var seriesIndex = ecData.seriesIndex;
+ var seriesModel = ecModel.getSeriesByIndex(seriesIndex);
+ var dataModel = ecData.dataModel || seriesModel;
+ var dataIndex = ecData.dataIndex;
+ var dataType = ecData.dataType;
+ var data = dataModel.getData(dataType);
+ var renderMode = this._renderMode;
+ var positionDefault = e2.positionDefault;
+ var tooltipModel = buildTooltipModel([data.getItemModel(dataIndex), dataModel, seriesModel && (seriesModel.coordinateSystem || {}).model], this._tooltipModel, positionDefault ? {
+ position: positionDefault
+ } : null);
+ var tooltipTrigger = tooltipModel.get("trigger");
+ if (tooltipTrigger != null && tooltipTrigger !== "item") {
+ return;
+ }
+ var params = dataModel.getDataParams(dataIndex, dataType);
+ var markupStyleCreator = new TooltipMarkupStyleCreator();
+ params.marker = markupStyleCreator.makeTooltipMarker("item", convertToColorString(params.color), renderMode);
+ var seriesTooltipResult = normalizeTooltipFormatResult(dataModel.formatTooltip(dataIndex, false, dataType));
+ var orderMode = tooltipModel.get("order");
+ var valueFormatter = tooltipModel.get("valueFormatter");
+ var frag = seriesTooltipResult.frag;
+ var markupText = frag ? buildTooltipMarkup(valueFormatter ? extend({
+ valueFormatter
+ }, frag) : frag, markupStyleCreator, renderMode, orderMode, ecModel.get("useUTC"), tooltipModel.get("textStyle")) : seriesTooltipResult.text;
+ var asyncTicket = "item_" + dataModel.name + "_" + dataIndex;
+ this._showOrMove(tooltipModel, function() {
+ this._showTooltipContent(tooltipModel, markupText, params, asyncTicket, e2.offsetX, e2.offsetY, e2.position, e2.target, markupStyleCreator);
+ });
+ dispatchAction3({
+ type: "showTip",
+ dataIndexInside: dataIndex,
+ dataIndex: data.getRawIndex(dataIndex),
+ seriesIndex,
+ from: this.uid
+ });
+ };
+ TooltipView2.prototype._showComponentItemTooltip = function(e2, el, dispatchAction3) {
+ var isHTMLRenderMode = this._renderMode === "html";
+ var ecData = getECData(el);
+ var tooltipConfig = ecData.tooltipConfig;
+ var tooltipOpt = tooltipConfig.option || {};
+ var encodeHTMLContent = tooltipOpt.encodeHTMLContent;
+ if (isString(tooltipOpt)) {
+ var content = tooltipOpt;
+ tooltipOpt = {
+ content,
+ formatter: content
+ };
+ encodeHTMLContent = true;
+ }
+ if (encodeHTMLContent && isHTMLRenderMode && tooltipOpt.content) {
+ tooltipOpt = clone(tooltipOpt);
+ tooltipOpt.content = encodeHTML(tooltipOpt.content);
+ }
+ var tooltipModelCascade = [tooltipOpt];
+ var cmpt = this._ecModel.getComponent(ecData.componentMainType, ecData.componentIndex);
+ if (cmpt) {
+ tooltipModelCascade.push(cmpt);
+ }
+ tooltipModelCascade.push({
+ formatter: tooltipOpt.content
+ });
+ var positionDefault = e2.positionDefault;
+ var subTooltipModel = buildTooltipModel(tooltipModelCascade, this._tooltipModel, positionDefault ? {
+ position: positionDefault
+ } : null);
+ var defaultHtml = subTooltipModel.get("content");
+ var asyncTicket = Math.random() + "";
+ var markupStyleCreator = new TooltipMarkupStyleCreator();
+ this._showOrMove(subTooltipModel, function() {
+ var formatterParams = clone(subTooltipModel.get("formatterParams") || {});
+ this._showTooltipContent(subTooltipModel, defaultHtml, formatterParams, asyncTicket, e2.offsetX, e2.offsetY, e2.position, el, markupStyleCreator);
+ });
+ dispatchAction3({
+ type: "showTip",
+ from: this.uid
+ });
+ };
+ TooltipView2.prototype._showTooltipContent = function(tooltipModel, defaultHtml, params, asyncTicket, x, y, positionExpr, el, markupStyleCreator) {
+ this._ticket = "";
+ if (!tooltipModel.get("showContent") || !tooltipModel.get("show")) {
+ return;
+ }
+ var tooltipContent = this._tooltipContent;
+ tooltipContent.setEnterable(tooltipModel.get("enterable"));
+ var formatter = tooltipModel.get("formatter");
+ positionExpr = positionExpr || tooltipModel.get("position");
+ var html = defaultHtml;
+ var nearPoint = this._getNearestPoint([x, y], params, tooltipModel.get("trigger"), tooltipModel.get("borderColor"));
+ var nearPointColor = nearPoint.color;
+ if (formatter) {
+ if (isString(formatter)) {
+ var useUTC = tooltipModel.ecModel.get("useUTC");
+ var params0 = isArray(params) ? params[0] : params;
+ var isTimeAxis = params0 && params0.axisType && params0.axisType.indexOf("time") >= 0;
+ html = formatter;
+ if (isTimeAxis) {
+ html = format(params0.axisValue, html, useUTC);
+ }
+ html = formatTpl(html, params, true);
+ } else if (isFunction(formatter)) {
+ var callback = bind(function(cbTicket, html2) {
+ if (cbTicket === this._ticket) {
+ tooltipContent.setContent(html2, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);
+ this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);
+ }
+ }, this);
+ this._ticket = asyncTicket;
+ html = formatter(params, asyncTicket, callback);
+ } else {
+ html = formatter;
+ }
+ }
+ tooltipContent.setContent(html, markupStyleCreator, tooltipModel, nearPointColor, positionExpr);
+ tooltipContent.show(tooltipModel, nearPointColor);
+ this._updatePosition(tooltipModel, positionExpr, x, y, tooltipContent, params, el);
+ };
+ TooltipView2.prototype._getNearestPoint = function(point, tooltipDataParams, trigger3, borderColor) {
+ if (trigger3 === "axis" || isArray(tooltipDataParams)) {
+ return {
+ color: borderColor || (this._renderMode === "html" ? "#fff" : "none")
+ };
+ }
+ if (!isArray(tooltipDataParams)) {
+ return {
+ color: borderColor || tooltipDataParams.color || tooltipDataParams.borderColor
+ };
+ }
+ };
+ TooltipView2.prototype._updatePosition = function(tooltipModel, positionExpr, x, y, content, params, el) {
+ var viewWidth = this._api.getWidth();
+ var viewHeight = this._api.getHeight();
+ positionExpr = positionExpr || tooltipModel.get("position");
+ var contentSize = content.getSize();
+ var align = tooltipModel.get("align");
+ var vAlign = tooltipModel.get("verticalAlign");
+ var rect = el && el.getBoundingRect().clone();
+ el && rect.applyTransform(el.transform);
+ if (isFunction(positionExpr)) {
+ positionExpr = positionExpr([x, y], params, content.el, rect, {
+ viewSize: [viewWidth, viewHeight],
+ contentSize: contentSize.slice()
+ });
+ }
+ if (isArray(positionExpr)) {
+ x = parsePercent2(positionExpr[0], viewWidth);
+ y = parsePercent2(positionExpr[1], viewHeight);
+ } else if (isObject(positionExpr)) {
+ var boxLayoutPosition = positionExpr;
+ boxLayoutPosition.width = contentSize[0];
+ boxLayoutPosition.height = contentSize[1];
+ var layoutRect = getLayoutRect(boxLayoutPosition, {
+ width: viewWidth,
+ height: viewHeight
+ });
+ x = layoutRect.x;
+ y = layoutRect.y;
+ align = null;
+ vAlign = null;
+ } else if (isString(positionExpr) && el) {
+ var pos = calcTooltipPosition(positionExpr, rect, contentSize, tooltipModel.get("borderWidth"));
+ x = pos[0];
+ y = pos[1];
+ } else {
+ var pos = refixTooltipPosition(x, y, content, viewWidth, viewHeight, align ? null : 20, vAlign ? null : 20);
+ x = pos[0];
+ y = pos[1];
+ }
+ align && (x -= isCenterAlign(align) ? contentSize[0] / 2 : align === "right" ? contentSize[0] : 0);
+ vAlign && (y -= isCenterAlign(vAlign) ? contentSize[1] / 2 : vAlign === "bottom" ? contentSize[1] : 0);
+ if (shouldTooltipConfine(tooltipModel)) {
+ var pos = confineTooltipPosition(x, y, content, viewWidth, viewHeight);
+ x = pos[0];
+ y = pos[1];
+ }
+ content.moveTo(x, y);
+ };
+ TooltipView2.prototype._updateContentNotChangedOnAxis = function(dataByCoordSys, cbParamsList) {
+ var lastCoordSys = this._lastDataByCoordSys;
+ var lastCbParamsList = this._cbParamsList;
+ var contentNotChanged = !!lastCoordSys && lastCoordSys.length === dataByCoordSys.length;
+ contentNotChanged && each(lastCoordSys, function(lastItemCoordSys, indexCoordSys) {
+ var lastDataByAxis = lastItemCoordSys.dataByAxis || [];
+ var thisItemCoordSys = dataByCoordSys[indexCoordSys] || {};
+ var thisDataByAxis = thisItemCoordSys.dataByAxis || [];
+ contentNotChanged = contentNotChanged && lastDataByAxis.length === thisDataByAxis.length;
+ contentNotChanged && each(lastDataByAxis, function(lastItem, indexAxis) {
+ var thisItem = thisDataByAxis[indexAxis] || {};
+ var lastIndices = lastItem.seriesDataIndices || [];
+ var newIndices = thisItem.seriesDataIndices || [];
+ contentNotChanged = contentNotChanged && lastItem.value === thisItem.value && lastItem.axisType === thisItem.axisType && lastItem.axisId === thisItem.axisId && lastIndices.length === newIndices.length;
+ contentNotChanged && each(lastIndices, function(lastIdxItem, j) {
+ var newIdxItem = newIndices[j];
+ contentNotChanged = contentNotChanged && lastIdxItem.seriesIndex === newIdxItem.seriesIndex && lastIdxItem.dataIndex === newIdxItem.dataIndex;
+ });
+ lastCbParamsList && each(lastItem.seriesDataIndices, function(idxItem) {
+ var seriesIdx = idxItem.seriesIndex;
+ var cbParams = cbParamsList[seriesIdx];
+ var lastCbParams = lastCbParamsList[seriesIdx];
+ if (cbParams && lastCbParams && lastCbParams.data !== cbParams.data) {
+ contentNotChanged = false;
+ }
+ });
+ });
+ });
+ this._lastDataByCoordSys = dataByCoordSys;
+ this._cbParamsList = cbParamsList;
+ return !!contentNotChanged;
+ };
+ TooltipView2.prototype._hide = function(dispatchAction3) {
+ this._lastDataByCoordSys = null;
+ dispatchAction3({
+ type: "hideTip",
+ from: this.uid
+ });
+ };
+ TooltipView2.prototype.dispose = function(ecModel, api) {
+ if (env_default.node || !api.getDom()) {
+ return;
+ }
+ clear(this, "_updatePosition");
+ this._tooltipContent.dispose();
+ unregister("itemTooltip", api);
+ };
+ TooltipView2.type = "tooltip";
+ return TooltipView2;
+}(Component_default2);
+function buildTooltipModel(modelCascade, globalTooltipModel, defaultTooltipOption) {
+ var ecModel = globalTooltipModel.ecModel;
+ var resultModel;
+ if (defaultTooltipOption) {
+ resultModel = new Model_default(defaultTooltipOption, ecModel, ecModel);
+ resultModel = new Model_default(globalTooltipModel.option, resultModel, ecModel);
+ } else {
+ resultModel = globalTooltipModel;
+ }
+ for (var i = modelCascade.length - 1; i >= 0; i--) {
+ var tooltipOpt = modelCascade[i];
+ if (tooltipOpt) {
+ if (tooltipOpt instanceof Model_default) {
+ tooltipOpt = tooltipOpt.get("tooltip", true);
+ }
+ if (isString(tooltipOpt)) {
+ tooltipOpt = {
+ formatter: tooltipOpt
+ };
+ }
+ if (tooltipOpt) {
+ resultModel = new Model_default(tooltipOpt, resultModel, ecModel);
+ }
+ }
+ }
+ return resultModel;
+}
+function makeDispatchAction2(payload, api) {
+ return payload.dispatchAction || bind(api.dispatchAction, api);
+}
+function refixTooltipPosition(x, y, content, viewWidth, viewHeight, gapH, gapV) {
+ var size = content.getSize();
+ var width = size[0];
+ var height = size[1];
+ if (gapH != null) {
+ if (x + width + gapH + 2 > viewWidth) {
+ x -= width + gapH;
+ } else {
+ x += gapH;
+ }
+ }
+ if (gapV != null) {
+ if (y + height + gapV > viewHeight) {
+ y -= height + gapV;
+ } else {
+ y += gapV;
+ }
+ }
+ return [x, y];
+}
+function confineTooltipPosition(x, y, content, viewWidth, viewHeight) {
+ var size = content.getSize();
+ var width = size[0];
+ var height = size[1];
+ x = Math.min(x + width, viewWidth) - width;
+ y = Math.min(y + height, viewHeight) - height;
+ x = Math.max(x, 0);
+ y = Math.max(y, 0);
+ return [x, y];
+}
+function calcTooltipPosition(position2, rect, contentSize, borderWidth) {
+ var domWidth = contentSize[0];
+ var domHeight = contentSize[1];
+ var offset = Math.ceil(Math.SQRT2 * borderWidth) + 8;
+ var x = 0;
+ var y = 0;
+ var rectWidth = rect.width;
+ var rectHeight = rect.height;
+ switch (position2) {
+ case "inside":
+ x = rect.x + rectWidth / 2 - domWidth / 2;
+ y = rect.y + rectHeight / 2 - domHeight / 2;
+ break;
+ case "top":
+ x = rect.x + rectWidth / 2 - domWidth / 2;
+ y = rect.y - domHeight - offset;
+ break;
+ case "bottom":
+ x = rect.x + rectWidth / 2 - domWidth / 2;
+ y = rect.y + rectHeight + offset;
+ break;
+ case "left":
+ x = rect.x - domWidth - offset;
+ y = rect.y + rectHeight / 2 - domHeight / 2;
+ break;
+ case "right":
+ x = rect.x + rectWidth + offset;
+ y = rect.y + rectHeight / 2 - domHeight / 2;
+ }
+ return [x, y];
+}
+function isCenterAlign(align) {
+ return align === "center" || align === "middle";
+}
+function findComponentReference(payload, ecModel, api) {
+ var queryOptionMap = preParseFinder(payload).queryOptionMap;
+ var componentMainType = queryOptionMap.keys()[0];
+ if (!componentMainType || componentMainType === "series") {
+ return;
+ }
+ var queryResult = queryReferringComponents(ecModel, componentMainType, queryOptionMap.get(componentMainType), {
+ useDefault: false,
+ enableAll: false,
+ enableNone: false
+ });
+ var model = queryResult.models[0];
+ if (!model) {
+ return;
+ }
+ var view = api.getViewOfComponentModel(model);
+ var el;
+ view.group.traverse(function(subEl) {
+ var tooltipConfig = getECData(subEl).tooltipConfig;
+ if (tooltipConfig && tooltipConfig.name === payload.name) {
+ el = subEl;
+ return true;
+ }
+ });
+ if (el) {
+ return {
+ componentMainType,
+ componentIndex: model.componentIndex,
+ el
+ };
+ }
+}
+var TooltipView_default = TooltipView;
+
+// node_modules/echarts/lib/component/tooltip/install.js
+function install37(registers) {
+ use(install29);
+ registers.registerComponentModel(TooltipModel_default);
+ registers.registerComponentView(TooltipView_default);
+ registers.registerAction({
+ type: "showTip",
+ event: "showTip",
+ update: "tooltip:manuallyShowTip"
+ }, noop);
+ registers.registerAction({
+ type: "hideTip",
+ event: "hideTip",
+ update: "tooltip:manuallyHideTip"
+ }, noop);
+}
+
+// node_modules/echarts/lib/component/brush/preprocessor.js
+var DEFAULT_TOOLBOX_BTNS = ["rect", "polygon", "keep", "clear"];
+function brushPreprocessor(option, isNew) {
+ var brushComponents = normalizeToArray(option ? option.brush : []);
+ if (!brushComponents.length) {
+ return;
+ }
+ var brushComponentSpecifiedBtns = [];
+ each(brushComponents, function(brushOpt) {
+ var tbs = brushOpt.hasOwnProperty("toolbox") ? brushOpt.toolbox : [];
+ if (tbs instanceof Array) {
+ brushComponentSpecifiedBtns = brushComponentSpecifiedBtns.concat(tbs);
+ }
+ });
+ var toolbox = option && option.toolbox;
+ if (isArray(toolbox)) {
+ toolbox = toolbox[0];
+ }
+ if (!toolbox) {
+ toolbox = {
+ feature: {}
+ };
+ option.toolbox = [toolbox];
+ }
+ var toolboxFeature = toolbox.feature || (toolbox.feature = {});
+ var toolboxBrush = toolboxFeature.brush || (toolboxFeature.brush = {});
+ var brushTypes = toolboxBrush.type || (toolboxBrush.type = []);
+ brushTypes.push.apply(brushTypes, brushComponentSpecifiedBtns);
+ removeDuplicate(brushTypes);
+ if (isNew && !brushTypes.length) {
+ brushTypes.push.apply(brushTypes, DEFAULT_TOOLBOX_BTNS);
+ }
+}
+function removeDuplicate(arr) {
+ var map3 = {};
+ each(arr, function(val) {
+ map3[val] = 1;
+ });
+ arr.length = 0;
+ each(map3, function(flag, val) {
+ arr.push(val);
+ });
+}
+
+// node_modules/echarts/lib/visual/visualSolution.js
+var each12 = each;
+function hasKeys(obj) {
+ if (obj) {
+ for (var name_1 in obj) {
+ if (obj.hasOwnProperty(name_1)) {
+ return true;
+ }
+ }
+ }
+}
+function createVisualMappings(option, stateList, supplementVisualOption) {
+ var visualMappings = {};
+ each12(stateList, function(state) {
+ var mappings = visualMappings[state] = createMappings();
+ each12(option[state], function(visualData, visualType) {
+ if (!VisualMapping_default.isValidType(visualType)) {
+ return;
+ }
+ var mappingOption = {
+ type: visualType,
+ visual: visualData
+ };
+ supplementVisualOption && supplementVisualOption(mappingOption, state);
+ mappings[visualType] = new VisualMapping_default(mappingOption);
+ if (visualType === "opacity") {
+ mappingOption = clone(mappingOption);
+ mappingOption.type = "colorAlpha";
+ mappings.__hidden.__alphaForOpacity = new VisualMapping_default(mappingOption);
+ }
+ });
+ });
+ return visualMappings;
+ function createMappings() {
+ var Creater = function() {
+ };
+ Creater.prototype.__hidden = Creater.prototype;
+ var obj = new Creater();
+ return obj;
+ }
+}
+function replaceVisualOption(thisOption, newOption, keys2) {
+ var has3;
+ each(keys2, function(key) {
+ if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {
+ has3 = true;
+ }
+ });
+ has3 && each(keys2, function(key) {
+ if (newOption.hasOwnProperty(key) && hasKeys(newOption[key])) {
+ thisOption[key] = clone(newOption[key]);
+ } else {
+ delete thisOption[key];
+ }
+ });
+}
+function applyVisual(stateList, visualMappings, data, getValueState, scope, dimension) {
+ var visualTypesMap = {};
+ each(stateList, function(state) {
+ var visualTypes = VisualMapping_default.prepareVisualTypes(visualMappings[state]);
+ visualTypesMap[state] = visualTypes;
+ });
+ var dataIndex;
+ function getVisual(key) {
+ return getItemVisualFromData(data, dataIndex, key);
+ }
+ function setVisual(key, value) {
+ setItemVisualFromData(data, dataIndex, key, value);
+ }
+ if (dimension == null) {
+ data.each(eachItem);
+ } else {
+ data.each([dimension], eachItem);
+ }
+ function eachItem(valueOrIndex, index) {
+ dataIndex = dimension == null ? valueOrIndex : index;
+ var rawDataItem = data.getRawDataItem(dataIndex);
+ if (rawDataItem && rawDataItem.visualMap === false) {
+ return;
+ }
+ var valueState = getValueState.call(scope, valueOrIndex);
+ var mappings = visualMappings[valueState];
+ var visualTypes = visualTypesMap[valueState];
+ for (var i = 0, len2 = visualTypes.length; i < len2; i++) {
+ var type = visualTypes[i];
+ mappings[type] && mappings[type].applyVisual(valueOrIndex, getVisual, setVisual);
+ }
+ }
+}
+function incrementalApplyVisual(stateList, visualMappings, getValueState, dim) {
+ var visualTypesMap = {};
+ each(stateList, function(state) {
+ var visualTypes = VisualMapping_default.prepareVisualTypes(visualMappings[state]);
+ visualTypesMap[state] = visualTypes;
+ });
+ return {
+ progress: function progress(params, data) {
+ var dimIndex;
+ if (dim != null) {
+ dimIndex = data.getDimensionIndex(dim);
+ }
+ function getVisual(key) {
+ return getItemVisualFromData(data, dataIndex, key);
+ }
+ function setVisual(key, value2) {
+ setItemVisualFromData(data, dataIndex, key, value2);
+ }
+ var dataIndex;
+ var store = data.getStore();
+ while ((dataIndex = params.next()) != null) {
+ var rawDataItem = data.getRawDataItem(dataIndex);
+ if (rawDataItem && rawDataItem.visualMap === false) {
+ continue;
+ }
+ var value = dim != null ? store.get(dimIndex, dataIndex) : dataIndex;
+ var valueState = getValueState(value);
+ var mappings = visualMappings[valueState];
+ var visualTypes = visualTypesMap[valueState];
+ for (var i = 0, len2 = visualTypes.length; i < len2; i++) {
+ var type = visualTypes[i];
+ mappings[type] && mappings[type].applyVisual(value, getVisual, setVisual);
+ }
+ }
+ }
+ };
+}
+
+// node_modules/echarts/lib/component/brush/selector.js
+function makeBrushCommonSelectorForSeries(area) {
+ var brushType = area.brushType;
+ var selectors = {
+ point: function(itemLayout) {
+ return selector[brushType].point(itemLayout, selectors, area);
+ },
+ rect: function(itemLayout) {
+ return selector[brushType].rect(itemLayout, selectors, area);
+ }
+ };
+ return selectors;
+}
+var selector = {
+ lineX: getLineSelectors(0),
+ lineY: getLineSelectors(1),
+ rect: {
+ point: function(itemLayout, selectors, area) {
+ return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]);
+ },
+ rect: function(itemLayout, selectors, area) {
+ return itemLayout && area.boundingRect.intersect(itemLayout);
+ }
+ },
+ polygon: {
+ point: function(itemLayout, selectors, area) {
+ return itemLayout && area.boundingRect.contain(itemLayout[0], itemLayout[1]) && contain3(area.range, itemLayout[0], itemLayout[1]);
+ },
+ rect: function(itemLayout, selectors, area) {
+ var points4 = area.range;
+ if (!itemLayout || points4.length <= 1) {
+ return false;
+ }
+ var x = itemLayout.x;
+ var y = itemLayout.y;
+ var width = itemLayout.width;
+ var height = itemLayout.height;
+ var p = points4[0];
+ if (contain3(points4, x, y) || contain3(points4, x + width, y) || contain3(points4, x, y + height) || contain3(points4, x + width, y + height) || BoundingRect_default.create(itemLayout).contain(p[0], p[1]) || linePolygonIntersect(x, y, x + width, y, points4) || linePolygonIntersect(x, y, x, y + height, points4) || linePolygonIntersect(x + width, y, x + width, y + height, points4) || linePolygonIntersect(x, y + height, x + width, y + height, points4)) {
+ return true;
+ }
+ }
+ }
+};
+function getLineSelectors(xyIndex) {
+ var xy = ["x", "y"];
+ var wh = ["width", "height"];
+ return {
+ point: function(itemLayout, selectors, area) {
+ if (itemLayout) {
+ var range = area.range;
+ var p = itemLayout[xyIndex];
+ return inLineRange(p, range);
+ }
+ },
+ rect: function(itemLayout, selectors, area) {
+ if (itemLayout) {
+ var range = area.range;
+ var layoutRange = [itemLayout[xy[xyIndex]], itemLayout[xy[xyIndex]] + itemLayout[wh[xyIndex]]];
+ layoutRange[1] < layoutRange[0] && layoutRange.reverse();
+ return inLineRange(layoutRange[0], range) || inLineRange(layoutRange[1], range) || inLineRange(range[0], layoutRange) || inLineRange(range[1], layoutRange);
+ }
+ }
+ };
+}
+function inLineRange(p, range) {
+ return range[0] <= p && p <= range[1];
+}
+
+// node_modules/echarts/lib/component/brush/visualEncoding.js
+var STATE_LIST = ["inBrush", "outOfBrush"];
+var DISPATCH_METHOD = "__ecBrushSelect";
+var DISPATCH_FLAG = "__ecInBrushSelectEvent";
+function layoutCovers(ecModel) {
+ ecModel.eachComponent({
+ mainType: "brush"
+ }, function(brushModel) {
+ var brushTargetManager = brushModel.brushTargetManager = new BrushTargetManager_default(brushModel.option, ecModel);
+ brushTargetManager.setInputRanges(brushModel.areas, ecModel);
+ });
+}
+function brushVisual(ecModel, api, payload) {
+ var brushSelected = [];
+ var throttleType;
+ var throttleDelay;
+ ecModel.eachComponent({
+ mainType: "brush"
+ }, function(brushModel) {
+ payload && payload.type === "takeGlobalCursor" && brushModel.setBrushOption(payload.key === "brush" ? payload.brushOption : {
+ brushType: false
+ });
+ });
+ layoutCovers(ecModel);
+ ecModel.eachComponent({
+ mainType: "brush"
+ }, function(brushModel, brushIndex) {
+ var thisBrushSelected = {
+ brushId: brushModel.id,
+ brushIndex,
+ brushName: brushModel.name,
+ areas: clone(brushModel.areas),
+ selected: []
+ };
+ brushSelected.push(thisBrushSelected);
+ var brushOption = brushModel.option;
+ var brushLink = brushOption.brushLink;
+ var linkedSeriesMap = [];
+ var selectedDataIndexForLink = [];
+ var rangeInfoBySeries = [];
+ var hasBrushExists = false;
+ if (!brushIndex) {
+ throttleType = brushOption.throttleType;
+ throttleDelay = brushOption.throttleDelay;
+ }
+ var areas = map(brushModel.areas, function(area) {
+ var builder = boundingRectBuilders[area.brushType];
+ var selectableArea = defaults({
+ boundingRect: builder ? builder(area) : void 0
+ }, area);
+ selectableArea.selectors = makeBrushCommonSelectorForSeries(selectableArea);
+ return selectableArea;
+ });
+ var visualMappings = createVisualMappings(brushModel.option, STATE_LIST, function(mappingOption) {
+ mappingOption.mappingMethod = "fixed";
+ });
+ isArray(brushLink) && each(brushLink, function(seriesIndex) {
+ linkedSeriesMap[seriesIndex] = 1;
+ });
+ function linkOthers(seriesIndex) {
+ return brushLink === "all" || !!linkedSeriesMap[seriesIndex];
+ }
+ function brushed(rangeInfoList) {
+ return !!rangeInfoList.length;
+ }
+ ecModel.eachSeries(function(seriesModel, seriesIndex) {
+ var rangeInfoList = rangeInfoBySeries[seriesIndex] = [];
+ seriesModel.subType === "parallel" ? stepAParallel(seriesModel, seriesIndex) : stepAOthers(seriesModel, seriesIndex, rangeInfoList);
+ });
+ function stepAParallel(seriesModel, seriesIndex) {
+ var coordSys = seriesModel.coordinateSystem;
+ hasBrushExists = hasBrushExists || coordSys.hasAxisBrushed();
+ linkOthers(seriesIndex) && coordSys.eachActiveState(seriesModel.getData(), function(activeState, dataIndex) {
+ activeState === "active" && (selectedDataIndexForLink[dataIndex] = 1);
+ });
+ }
+ function stepAOthers(seriesModel, seriesIndex, rangeInfoList) {
+ if (!seriesModel.brushSelector || brushModelNotControll(brushModel, seriesIndex)) {
+ return;
+ }
+ each(areas, function(area) {
+ if (brushModel.brushTargetManager.controlSeries(area, seriesModel, ecModel)) {
+ rangeInfoList.push(area);
+ }
+ hasBrushExists = hasBrushExists || brushed(rangeInfoList);
+ });
+ if (linkOthers(seriesIndex) && brushed(rangeInfoList)) {
+ var data_1 = seriesModel.getData();
+ data_1.each(function(dataIndex) {
+ if (checkInRange(seriesModel, rangeInfoList, data_1, dataIndex)) {
+ selectedDataIndexForLink[dataIndex] = 1;
+ }
+ });
+ }
+ }
+ ecModel.eachSeries(function(seriesModel, seriesIndex) {
+ var seriesBrushSelected = {
+ seriesId: seriesModel.id,
+ seriesIndex,
+ seriesName: seriesModel.name,
+ dataIndex: []
+ };
+ thisBrushSelected.selected.push(seriesBrushSelected);
+ var rangeInfoList = rangeInfoBySeries[seriesIndex];
+ var data = seriesModel.getData();
+ var getValueState = linkOthers(seriesIndex) ? function(dataIndex) {
+ return selectedDataIndexForLink[dataIndex] ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush";
+ } : function(dataIndex) {
+ return checkInRange(seriesModel, rangeInfoList, data, dataIndex) ? (seriesBrushSelected.dataIndex.push(data.getRawIndex(dataIndex)), "inBrush") : "outOfBrush";
+ };
+ (linkOthers(seriesIndex) ? hasBrushExists : brushed(rangeInfoList)) && applyVisual(STATE_LIST, visualMappings, data, getValueState);
+ });
+ });
+ dispatchAction(api, throttleType, throttleDelay, brushSelected, payload);
+}
+function dispatchAction(api, throttleType, throttleDelay, brushSelected, payload) {
+ if (!payload) {
+ return;
+ }
+ var zr = api.getZr();
+ if (zr[DISPATCH_FLAG]) {
+ return;
+ }
+ if (!zr[DISPATCH_METHOD]) {
+ zr[DISPATCH_METHOD] = doDispatch;
+ }
+ var fn = createOrUpdate(zr, DISPATCH_METHOD, throttleDelay, throttleType);
+ fn(api, brushSelected);
+}
+function doDispatch(api, brushSelected) {
+ if (!api.isDisposed()) {
+ var zr = api.getZr();
+ zr[DISPATCH_FLAG] = true;
+ api.dispatchAction({
+ type: "brushSelect",
+ batch: brushSelected
+ });
+ zr[DISPATCH_FLAG] = false;
+ }
+}
+function checkInRange(seriesModel, rangeInfoList, data, dataIndex) {
+ for (var i = 0, len2 = rangeInfoList.length; i < len2; i++) {
+ var area = rangeInfoList[i];
+ if (seriesModel.brushSelector(dataIndex, data, area.selectors, area)) {
+ return true;
+ }
+ }
+}
+function brushModelNotControll(brushModel, seriesIndex) {
+ var seriesIndices = brushModel.option.seriesIndex;
+ return seriesIndices != null && seriesIndices !== "all" && (isArray(seriesIndices) ? indexOf(seriesIndices, seriesIndex) < 0 : seriesIndex !== seriesIndices);
+}
+var boundingRectBuilders = {
+ rect: function(area) {
+ return getBoundingRectFromMinMax(area.range);
+ },
+ polygon: function(area) {
+ var minMax;
+ var range = area.range;
+ for (var i = 0, len2 = range.length; i < len2; i++) {
+ minMax = minMax || [[Infinity, -Infinity], [Infinity, -Infinity]];
+ var rg = range[i];
+ rg[0] < minMax[0][0] && (minMax[0][0] = rg[0]);
+ rg[0] > minMax[0][1] && (minMax[0][1] = rg[0]);
+ rg[1] < minMax[1][0] && (minMax[1][0] = rg[1]);
+ rg[1] > minMax[1][1] && (minMax[1][1] = rg[1]);
+ }
+ return minMax && getBoundingRectFromMinMax(minMax);
+ }
+};
+function getBoundingRectFromMinMax(minMax) {
+ return new BoundingRect_default(minMax[0][0], minMax[1][0], minMax[0][1] - minMax[0][0], minMax[1][1] - minMax[1][0]);
+}
+
+// node_modules/echarts/lib/component/brush/BrushView.js
+var BrushView = function(_super) {
+ __extends(BrushView2, _super);
+ function BrushView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = BrushView2.type;
+ return _this;
+ }
+ BrushView2.prototype.init = function(ecModel, api) {
+ this.ecModel = ecModel;
+ this.api = api;
+ this.model;
+ (this._brushController = new BrushController_default(api.getZr())).on("brush", bind(this._onBrush, this)).mount();
+ };
+ BrushView2.prototype.render = function(brushModel, ecModel, api, payload) {
+ this.model = brushModel;
+ this._updateController(brushModel, ecModel, api, payload);
+ };
+ BrushView2.prototype.updateTransform = function(brushModel, ecModel, api, payload) {
+ layoutCovers(ecModel);
+ this._updateController(brushModel, ecModel, api, payload);
+ };
+ BrushView2.prototype.updateVisual = function(brushModel, ecModel, api, payload) {
+ this.updateTransform(brushModel, ecModel, api, payload);
+ };
+ BrushView2.prototype.updateView = function(brushModel, ecModel, api, payload) {
+ this._updateController(brushModel, ecModel, api, payload);
+ };
+ BrushView2.prototype._updateController = function(brushModel, ecModel, api, payload) {
+ (!payload || payload.$from !== brushModel.id) && this._brushController.setPanels(brushModel.brushTargetManager.makePanelOpts(api)).enableBrush(brushModel.brushOption).updateCovers(brushModel.areas.slice());
+ };
+ BrushView2.prototype.dispose = function() {
+ this._brushController.dispose();
+ };
+ BrushView2.prototype._onBrush = function(eventParam) {
+ var modelId = this.model.id;
+ var areas = this.model.brushTargetManager.setOutputRanges(eventParam.areas, this.ecModel);
+ (!eventParam.isEnd || eventParam.removeOnClick) && this.api.dispatchAction({
+ type: "brush",
+ brushId: modelId,
+ areas: clone(areas),
+ $from: modelId
+ });
+ eventParam.isEnd && this.api.dispatchAction({
+ type: "brushEnd",
+ brushId: modelId,
+ areas: clone(areas),
+ $from: modelId
+ });
+ };
+ BrushView2.type = "brush";
+ return BrushView2;
+}(Component_default2);
+var BrushView_default = BrushView;
+
+// node_modules/echarts/lib/component/brush/BrushModel.js
+var DEFAULT_OUT_OF_BRUSH_COLOR = "#ddd";
+var BrushModel = function(_super) {
+ __extends(BrushModel2, _super);
+ function BrushModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = BrushModel2.type;
+ _this.areas = [];
+ _this.brushOption = {};
+ return _this;
+ }
+ BrushModel2.prototype.optionUpdated = function(newOption, isInit) {
+ var thisOption = this.option;
+ !isInit && replaceVisualOption(thisOption, newOption, ["inBrush", "outOfBrush"]);
+ var inBrush = thisOption.inBrush = thisOption.inBrush || {};
+ thisOption.outOfBrush = thisOption.outOfBrush || {
+ color: DEFAULT_OUT_OF_BRUSH_COLOR
+ };
+ if (!inBrush.hasOwnProperty("liftZ")) {
+ inBrush.liftZ = 5;
+ }
+ };
+ BrushModel2.prototype.setAreas = function(areas) {
+ if (true) {
+ assert(isArray(areas));
+ each(areas, function(area) {
+ assert(area.brushType, "Illegal areas");
+ });
+ }
+ if (!areas) {
+ return;
+ }
+ this.areas = map(areas, function(area) {
+ return generateBrushOption(this.option, area);
+ }, this);
+ };
+ BrushModel2.prototype.setBrushOption = function(brushOption) {
+ this.brushOption = generateBrushOption(this.option, brushOption);
+ this.brushType = this.brushOption.brushType;
+ };
+ BrushModel2.type = "brush";
+ BrushModel2.dependencies = ["geo", "grid", "xAxis", "yAxis", "parallel", "series"];
+ BrushModel2.defaultOption = {
+ seriesIndex: "all",
+ brushType: "rect",
+ brushMode: "single",
+ transformable: true,
+ brushStyle: {
+ borderWidth: 1,
+ color: "rgba(210,219,238,0.3)",
+ borderColor: "#D2DBEE"
+ },
+ throttleType: "fixRate",
+ throttleDelay: 0,
+ removeOnClick: true,
+ z: 1e4
+ };
+ return BrushModel2;
+}(Component_default);
+function generateBrushOption(option, brushOption) {
+ return merge({
+ brushType: option.brushType,
+ brushMode: option.brushMode,
+ transformable: option.transformable,
+ brushStyle: new Model_default(option.brushStyle).getItemStyle(),
+ removeOnClick: option.removeOnClick,
+ z: option.z
+ }, brushOption, true);
+}
+var BrushModel_default = BrushModel;
+
+// node_modules/echarts/lib/component/toolbox/feature/Brush.js
+var ICON_TYPES = ["rect", "polygon", "lineX", "lineY", "keep", "clear"];
+var BrushFeature = function(_super) {
+ __extends(BrushFeature2, _super);
+ function BrushFeature2() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ BrushFeature2.prototype.render = function(featureModel, ecModel, api) {
+ var brushType;
+ var brushMode;
+ var isBrushed;
+ ecModel.eachComponent({
+ mainType: "brush"
+ }, function(brushModel) {
+ brushType = brushModel.brushType;
+ brushMode = brushModel.brushOption.brushMode || "single";
+ isBrushed = isBrushed || !!brushModel.areas.length;
+ });
+ this._brushType = brushType;
+ this._brushMode = brushMode;
+ each(featureModel.get("type", true), function(type) {
+ featureModel.setIconStatus(type, (type === "keep" ? brushMode === "multiple" : type === "clear" ? isBrushed : type === brushType) ? "emphasis" : "normal");
+ });
+ };
+ BrushFeature2.prototype.updateView = function(featureModel, ecModel, api) {
+ this.render(featureModel, ecModel, api);
+ };
+ BrushFeature2.prototype.getIcons = function() {
+ var model = this.model;
+ var availableIcons = model.get("icon", true);
+ var icons = {};
+ each(model.get("type", true), function(type) {
+ if (availableIcons[type]) {
+ icons[type] = availableIcons[type];
+ }
+ });
+ return icons;
+ };
+ ;
+ BrushFeature2.prototype.onclick = function(ecModel, api, type) {
+ var brushType = this._brushType;
+ var brushMode = this._brushMode;
+ if (type === "clear") {
+ api.dispatchAction({
+ type: "axisAreaSelect",
+ intervals: []
+ });
+ api.dispatchAction({
+ type: "brush",
+ command: "clear",
+ areas: []
+ });
+ } else {
+ api.dispatchAction({
+ type: "takeGlobalCursor",
+ key: "brush",
+ brushOption: {
+ brushType: type === "keep" ? brushType : brushType === type ? false : type,
+ brushMode: type === "keep" ? brushMode === "multiple" ? "single" : "multiple" : brushMode
+ }
+ });
+ }
+ };
+ ;
+ BrushFeature2.getDefaultOption = function(ecModel) {
+ var defaultOption3 = {
+ show: true,
+ type: ICON_TYPES.slice(),
+ icon: {
+ rect: "M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",
+ polygon: "M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",
+ lineX: "M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",
+ lineY: "M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",
+ keep: "M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",
+ clear: "M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"
+ },
+ title: ecModel.getLocaleModel().get(["toolbox", "brush", "title"])
+ };
+ return defaultOption3;
+ };
+ return BrushFeature2;
+}(ToolboxFeature);
+var Brush_default = BrushFeature;
+
+// node_modules/echarts/lib/component/brush/install.js
+function install38(registers) {
+ registers.registerComponentView(BrushView_default);
+ registers.registerComponentModel(BrushModel_default);
+ registers.registerPreprocessor(brushPreprocessor);
+ registers.registerVisual(registers.PRIORITY.VISUAL.BRUSH, brushVisual);
+ registers.registerAction({
+ type: "brush",
+ event: "brush",
+ update: "updateVisual"
+ }, function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "brush",
+ query: payload
+ }, function(brushModel) {
+ brushModel.setAreas(payload.areas);
+ });
+ });
+ registers.registerAction({
+ type: "brushSelect",
+ event: "brushSelected",
+ update: "none"
+ }, noop);
+ registers.registerAction({
+ type: "brushEnd",
+ event: "brushEnd",
+ update: "none"
+ }, noop);
+ registerFeature("brush", Brush_default);
+}
+
+// node_modules/echarts/lib/component/title/install.js
+var TitleModel = function(_super) {
+ __extends(TitleModel2, _super);
+ function TitleModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TitleModel2.type;
+ _this.layoutMode = {
+ type: "box",
+ ignoreSize: true
+ };
+ return _this;
+ }
+ TitleModel2.type = "title";
+ TitleModel2.defaultOption = {
+ z: 6,
+ show: true,
+ 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: "bold",
+ color: "#464646"
+ },
+ subtextStyle: {
+ fontSize: 12,
+ color: "#6E7079"
+ }
+ };
+ return TitleModel2;
+}(Component_default);
+var TitleView = function(_super) {
+ __extends(TitleView2, _super);
+ function TitleView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TitleView2.type;
+ return _this;
+ }
+ TitleView2.prototype.render = function(titleModel, ecModel, api) {
+ this.group.removeAll();
+ if (!titleModel.get("show")) {
+ return;
+ }
+ var group = this.group;
+ var textStyleModel = titleModel.getModel("textStyle");
+ var subtextStyleModel = titleModel.getModel("subtextStyle");
+ var textAlign = titleModel.get("textAlign");
+ var textVerticalAlign = retrieve2(titleModel.get("textBaseline"), titleModel.get("textVerticalAlign"));
+ var textEl = new Text_default({
+ style: createTextStyle(textStyleModel, {
+ text: titleModel.get("text"),
+ fill: textStyleModel.getTextColor()
+ }, {
+ disableBox: true
+ }),
+ z2: 10
+ });
+ var textRect = textEl.getBoundingRect();
+ var subText = titleModel.get("subtext");
+ var subTextEl = new Text_default({
+ style: createTextStyle(subtextStyleModel, {
+ text: subText,
+ fill: subtextStyleModel.getTextColor(),
+ y: textRect.height + titleModel.get("itemGap"),
+ verticalAlign: "top"
+ }, {
+ disableBox: true
+ }),
+ z2: 10
+ });
+ var link = titleModel.get("link");
+ var sublink = titleModel.get("sublink");
+ var triggerEvent = titleModel.get("triggerEvent", true);
+ textEl.silent = !link && !triggerEvent;
+ subTextEl.silent = !sublink && !triggerEvent;
+ if (link) {
+ textEl.on("click", function() {
+ windowOpen(link, "_" + titleModel.get("target"));
+ });
+ }
+ if (sublink) {
+ subTextEl.on("click", function() {
+ windowOpen(sublink, "_" + titleModel.get("subtarget"));
+ });
+ }
+ getECData(textEl).eventData = getECData(subTextEl).eventData = triggerEvent ? {
+ componentType: "title",
+ componentIndex: titleModel.componentIndex
+ } : null;
+ group.add(textEl);
+ subText && group.add(subTextEl);
+ var groupRect = group.getBoundingRect();
+ var layoutOption = titleModel.getBoxLayoutParams();
+ layoutOption.width = groupRect.width;
+ layoutOption.height = groupRect.height;
+ var layoutRect = getLayoutRect(layoutOption, {
+ width: api.getWidth(),
+ height: api.getHeight()
+ }, titleModel.get("padding"));
+ if (!textAlign) {
+ textAlign = titleModel.get("left") || titleModel.get("right");
+ if (textAlign === "middle") {
+ textAlign = "center";
+ }
+ if (textAlign === "right") {
+ layoutRect.x += layoutRect.width;
+ } else if (textAlign === "center") {
+ layoutRect.x += layoutRect.width / 2;
+ }
+ }
+ if (!textVerticalAlign) {
+ textVerticalAlign = titleModel.get("top") || titleModel.get("bottom");
+ if (textVerticalAlign === "center") {
+ textVerticalAlign = "middle";
+ }
+ if (textVerticalAlign === "bottom") {
+ layoutRect.y += layoutRect.height;
+ } else if (textVerticalAlign === "middle") {
+ layoutRect.y += layoutRect.height / 2;
+ }
+ textVerticalAlign = textVerticalAlign || "top";
+ }
+ group.x = layoutRect.x;
+ group.y = layoutRect.y;
+ group.markRedraw();
+ var alignStyle = {
+ align: textAlign,
+ verticalAlign: textVerticalAlign
+ };
+ textEl.setStyle(alignStyle);
+ subTextEl.setStyle(alignStyle);
+ groupRect = group.getBoundingRect();
+ var padding = layoutRect.margin;
+ var style = titleModel.getItemStyle(["color", "opacity"]);
+ style.fill = titleModel.get("backgroundColor");
+ var rect = new Rect_default({
+ shape: {
+ x: groupRect.x - padding[3],
+ y: groupRect.y - padding[0],
+ width: groupRect.width + padding[1] + padding[3],
+ height: groupRect.height + padding[0] + padding[2],
+ r: titleModel.get("borderRadius")
+ },
+ style,
+ subPixelOptimize: true,
+ silent: true
+ });
+ group.add(rect);
+ };
+ TitleView2.type = "title";
+ return TitleView2;
+}(Component_default2);
+function install39(registers) {
+ registers.registerComponentModel(TitleModel);
+ registers.registerComponentView(TitleView);
+}
+
+// node_modules/echarts/lib/component/timeline/TimelineModel.js
+var TimelineModel = function(_super) {
+ __extends(TimelineModel2, _super);
+ function TimelineModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TimelineModel2.type;
+ _this.layoutMode = "box";
+ return _this;
+ }
+ TimelineModel2.prototype.init = function(option, parentModel, ecModel) {
+ this.mergeDefaultAndTheme(option, ecModel);
+ this._initData();
+ };
+ TimelineModel2.prototype.mergeOption = function(option) {
+ _super.prototype.mergeOption.apply(this, arguments);
+ this._initData();
+ };
+ TimelineModel2.prototype.setCurrentIndex = function(currentIndex) {
+ if (currentIndex == null) {
+ currentIndex = this.option.currentIndex;
+ }
+ var count2 = this._data.count();
+ if (this.option.loop) {
+ currentIndex = (currentIndex % count2 + count2) % count2;
+ } else {
+ currentIndex >= count2 && (currentIndex = count2 - 1);
+ currentIndex < 0 && (currentIndex = 0);
+ }
+ this.option.currentIndex = currentIndex;
+ };
+ TimelineModel2.prototype.getCurrentIndex = function() {
+ return this.option.currentIndex;
+ };
+ TimelineModel2.prototype.isIndexMax = function() {
+ return this.getCurrentIndex() >= this._data.count() - 1;
+ };
+ TimelineModel2.prototype.setPlayState = function(state) {
+ this.option.autoPlay = !!state;
+ };
+ TimelineModel2.prototype.getPlayState = function() {
+ return !!this.option.autoPlay;
+ };
+ TimelineModel2.prototype._initData = function() {
+ var thisOption = this.option;
+ var dataArr = thisOption.data || [];
+ var axisType = thisOption.axisType;
+ var names = this._names = [];
+ var processedDataArr;
+ if (axisType === "category") {
+ processedDataArr = [];
+ each(dataArr, function(item, index) {
+ var value = convertOptionIdName(getDataItemValue(item), "");
+ var newItem;
+ if (isObject(item)) {
+ newItem = clone(item);
+ newItem.value = index;
+ } else {
+ newItem = index;
+ }
+ processedDataArr.push(newItem);
+ names.push(value);
+ });
+ } else {
+ processedDataArr = dataArr;
+ }
+ var dimType = {
+ category: "ordinal",
+ time: "time",
+ value: "number"
+ }[axisType] || "number";
+ var data = this._data = new SeriesData_default([{
+ name: "value",
+ type: dimType
+ }], this);
+ data.initData(processedDataArr, names);
+ };
+ TimelineModel2.prototype.getData = function() {
+ return this._data;
+ };
+ TimelineModel2.prototype.getCategories = function() {
+ if (this.get("axisType") === "category") {
+ return this._names.slice();
+ }
+ };
+ TimelineModel2.type = "timeline";
+ TimelineModel2.defaultOption = {
+ z: 4,
+ show: true,
+ axisType: "time",
+ realtime: true,
+ left: "20%",
+ top: null,
+ right: "20%",
+ bottom: 0,
+ width: null,
+ height: 40,
+ padding: 5,
+ controlPosition: "left",
+ autoPlay: false,
+ rewind: false,
+ loop: true,
+ playInterval: 2e3,
+ currentIndex: 0,
+ itemStyle: {},
+ label: {
+ color: "#000"
+ },
+ data: []
+ };
+ return TimelineModel2;
+}(Component_default);
+var TimelineModel_default = TimelineModel;
+
+// node_modules/echarts/lib/component/timeline/SliderTimelineModel.js
+var SliderTimelineModel = function(_super) {
+ __extends(SliderTimelineModel2, _super);
+ function SliderTimelineModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SliderTimelineModel2.type;
+ return _this;
+ }
+ SliderTimelineModel2.type = "timeline.slider";
+ SliderTimelineModel2.defaultOption = inheritDefaultOption(TimelineModel_default.defaultOption, {
+ backgroundColor: "rgba(0,0,0,0)",
+ borderColor: "#ccc",
+ borderWidth: 0,
+ orient: "horizontal",
+ inverse: false,
+ tooltip: {
+ trigger: "item"
+ },
+ symbol: "circle",
+ symbolSize: 12,
+ lineStyle: {
+ show: true,
+ width: 2,
+ color: "#DAE1F5"
+ },
+ label: {
+ position: "auto",
+ show: true,
+ interval: "auto",
+ rotate: 0,
+ color: "#A4B1D7"
+ },
+ itemStyle: {
+ color: "#A4B1D7",
+ borderWidth: 1
+ },
+ checkpointStyle: {
+ symbol: "circle",
+ symbolSize: 15,
+ color: "#316bf3",
+ borderColor: "#fff",
+ borderWidth: 2,
+ shadowBlur: 2,
+ shadowOffsetX: 1,
+ shadowOffsetY: 1,
+ shadowColor: "rgba(0, 0, 0, 0.3)",
+ animation: true,
+ animationDuration: 300,
+ animationEasing: "quinticInOut"
+ },
+ controlStyle: {
+ show: true,
+ showPlayBtn: true,
+ showPrevBtn: true,
+ showNextBtn: true,
+ itemSize: 24,
+ itemGap: 12,
+ position: "left",
+ playIcon: "path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",
+ stopIcon: "path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",
+ nextIcon: "M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",
+ prevIcon: "M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",
+ prevBtnSize: 18,
+ nextBtnSize: 18,
+ color: "#A4B1D7",
+ borderColor: "#A4B1D7",
+ borderWidth: 1
+ },
+ emphasis: {
+ label: {
+ show: true,
+ color: "#6f778d"
+ },
+ itemStyle: {
+ color: "#316BF3"
+ },
+ controlStyle: {
+ color: "#316BF3",
+ borderColor: "#316BF3",
+ borderWidth: 2
+ }
+ },
+ progress: {
+ lineStyle: {
+ color: "#316BF3"
+ },
+ itemStyle: {
+ color: "#316BF3"
+ },
+ label: {
+ color: "#6f778d"
+ }
+ },
+ data: []
+ });
+ return SliderTimelineModel2;
+}(TimelineModel_default);
+mixin(SliderTimelineModel, DataFormatMixin.prototype);
+var SliderTimelineModel_default = SliderTimelineModel;
+
+// node_modules/echarts/lib/component/timeline/TimelineView.js
+var TimelineView = function(_super) {
+ __extends(TimelineView2, _super);
+ function TimelineView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = TimelineView2.type;
+ return _this;
+ }
+ TimelineView2.type = "timeline";
+ return TimelineView2;
+}(Component_default2);
+var TimelineView_default = TimelineView;
+
+// node_modules/echarts/lib/component/timeline/TimelineAxis.js
+var TimelineAxis = function(_super) {
+ __extends(TimelineAxis2, _super);
+ function TimelineAxis2(dim, scale4, coordExtent, axisType) {
+ var _this = _super.call(this, dim, scale4, coordExtent) || this;
+ _this.type = axisType || "value";
+ return _this;
+ }
+ TimelineAxis2.prototype.getLabelModel = function() {
+ return this.model.getModel("label");
+ };
+ TimelineAxis2.prototype.isHorizontal = function() {
+ return this.model.get("orient") === "horizontal";
+ };
+ return TimelineAxis2;
+}(Axis_default);
+var TimelineAxis_default = TimelineAxis;
+
+// node_modules/echarts/lib/component/timeline/SliderTimelineView.js
+var PI10 = Math.PI;
+var labelDataIndexStore = makeInner();
+var SliderTimelineView = function(_super) {
+ __extends(SliderTimelineView2, _super);
+ function SliderTimelineView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SliderTimelineView2.type;
+ return _this;
+ }
+ SliderTimelineView2.prototype.init = function(ecModel, api) {
+ this.api = api;
+ };
+ SliderTimelineView2.prototype.render = function(timelineModel, ecModel, api) {
+ this.model = timelineModel;
+ this.api = api;
+ this.ecModel = ecModel;
+ this.group.removeAll();
+ if (timelineModel.get("show", true)) {
+ var layoutInfo_1 = this._layout(timelineModel, api);
+ var mainGroup_1 = this._createGroup("_mainGroup");
+ var labelGroup = this._createGroup("_labelGroup");
+ var axis_1 = this._axis = this._createAxis(layoutInfo_1, timelineModel);
+ timelineModel.formatTooltip = function(dataIndex) {
+ var name = axis_1.scale.getLabel({
+ value: dataIndex
+ });
+ return createTooltipMarkup("nameValue", {
+ noName: true,
+ value: name
+ });
+ };
+ each(["AxisLine", "AxisTick", "Control", "CurrentPointer"], function(name) {
+ this["_render" + name](layoutInfo_1, mainGroup_1, axis_1, timelineModel);
+ }, this);
+ this._renderAxisLabel(layoutInfo_1, labelGroup, axis_1, timelineModel);
+ this._position(layoutInfo_1, timelineModel);
+ }
+ this._doPlayStop();
+ this._updateTicksStatus();
+ };
+ SliderTimelineView2.prototype.remove = function() {
+ this._clearTimer();
+ this.group.removeAll();
+ };
+ SliderTimelineView2.prototype.dispose = function() {
+ this._clearTimer();
+ };
+ SliderTimelineView2.prototype._layout = function(timelineModel, api) {
+ var labelPosOpt = timelineModel.get(["label", "position"]);
+ var orient = timelineModel.get("orient");
+ var viewRect2 = getViewRect6(timelineModel, api);
+ var parsedLabelPos;
+ if (labelPosOpt == null || labelPosOpt === "auto") {
+ parsedLabelPos = orient === "horizontal" ? viewRect2.y + viewRect2.height / 2 < api.getHeight() / 2 ? "-" : "+" : viewRect2.x + viewRect2.width / 2 < api.getWidth() / 2 ? "+" : "-";
+ } else if (isString(labelPosOpt)) {
+ parsedLabelPos = {
+ horizontal: {
+ top: "-",
+ bottom: "+"
+ },
+ vertical: {
+ left: "-",
+ right: "+"
+ }
+ }[orient][labelPosOpt];
+ } else {
+ parsedLabelPos = labelPosOpt;
+ }
+ var labelAlignMap = {
+ horizontal: "center",
+ vertical: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "left" : "right"
+ };
+ var labelBaselineMap = {
+ horizontal: parsedLabelPos >= 0 || parsedLabelPos === "+" ? "top" : "bottom",
+ vertical: "middle"
+ };
+ var rotationMap = {
+ horizontal: 0,
+ vertical: PI10 / 2
+ };
+ var mainLength = orient === "vertical" ? viewRect2.height : viewRect2.width;
+ var controlModel = timelineModel.getModel("controlStyle");
+ var showControl = controlModel.get("show", true);
+ var controlSize = showControl ? controlModel.get("itemSize") : 0;
+ var controlGap = showControl ? controlModel.get("itemGap") : 0;
+ var sizePlusGap = controlSize + controlGap;
+ var labelRotation = timelineModel.get(["label", "rotate"]) || 0;
+ labelRotation = labelRotation * PI10 / 180;
+ var playPosition;
+ var prevBtnPosition;
+ var nextBtnPosition;
+ var controlPosition = controlModel.get("position", true);
+ var showPlayBtn = showControl && controlModel.get("showPlayBtn", true);
+ var showPrevBtn = showControl && controlModel.get("showPrevBtn", true);
+ var showNextBtn = showControl && controlModel.get("showNextBtn", true);
+ var xLeft = 0;
+ var xRight = mainLength;
+ if (controlPosition === "left" || controlPosition === "bottom") {
+ showPlayBtn && (playPosition = [0, 0], xLeft += sizePlusGap);
+ showPrevBtn && (prevBtnPosition = [xLeft, 0], xLeft += sizePlusGap);
+ showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);
+ } else {
+ showPlayBtn && (playPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);
+ showPrevBtn && (prevBtnPosition = [0, 0], xLeft += sizePlusGap);
+ showNextBtn && (nextBtnPosition = [xRight - controlSize, 0], xRight -= sizePlusGap);
+ }
+ var axisExtent = [xLeft, xRight];
+ if (timelineModel.get("inverse")) {
+ axisExtent.reverse();
+ }
+ return {
+ viewRect: viewRect2,
+ mainLength,
+ orient,
+ rotation: rotationMap[orient],
+ labelRotation,
+ labelPosOpt: parsedLabelPos,
+ labelAlign: timelineModel.get(["label", "align"]) || labelAlignMap[orient],
+ labelBaseline: timelineModel.get(["label", "verticalAlign"]) || timelineModel.get(["label", "baseline"]) || labelBaselineMap[orient],
+ playPosition,
+ prevBtnPosition,
+ nextBtnPosition,
+ axisExtent,
+ controlSize,
+ controlGap
+ };
+ };
+ SliderTimelineView2.prototype._position = function(layoutInfo, timelineModel) {
+ var mainGroup = this._mainGroup;
+ var labelGroup = this._labelGroup;
+ var viewRect2 = layoutInfo.viewRect;
+ if (layoutInfo.orient === "vertical") {
+ var m2 = create2();
+ var rotateOriginX = viewRect2.x;
+ var rotateOriginY = viewRect2.y + viewRect2.height;
+ translate(m2, m2, [-rotateOriginX, -rotateOriginY]);
+ rotate(m2, m2, -PI10 / 2);
+ translate(m2, m2, [rotateOriginX, rotateOriginY]);
+ viewRect2 = viewRect2.clone();
+ viewRect2.applyTransform(m2);
+ }
+ var viewBound = getBound(viewRect2);
+ var mainBound = getBound(mainGroup.getBoundingRect());
+ var labelBound = getBound(labelGroup.getBoundingRect());
+ var mainPosition = [mainGroup.x, mainGroup.y];
+ var labelsPosition = [labelGroup.x, labelGroup.y];
+ labelsPosition[0] = mainPosition[0] = viewBound[0][0];
+ var labelPosOpt = layoutInfo.labelPosOpt;
+ if (labelPosOpt == null || isString(labelPosOpt)) {
+ var mainBoundIdx = labelPosOpt === "+" ? 0 : 1;
+ toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);
+ toBound(labelsPosition, labelBound, viewBound, 1, 1 - mainBoundIdx);
+ } else {
+ var mainBoundIdx = labelPosOpt >= 0 ? 0 : 1;
+ toBound(mainPosition, mainBound, viewBound, 1, mainBoundIdx);
+ labelsPosition[1] = mainPosition[1] + labelPosOpt;
+ }
+ mainGroup.setPosition(mainPosition);
+ labelGroup.setPosition(labelsPosition);
+ mainGroup.rotation = labelGroup.rotation = layoutInfo.rotation;
+ setOrigin(mainGroup);
+ setOrigin(labelGroup);
+ function setOrigin(targetGroup) {
+ targetGroup.originX = viewBound[0][0] - targetGroup.x;
+ targetGroup.originY = viewBound[1][0] - targetGroup.y;
+ }
+ function getBound(rect) {
+ return [[rect.x, rect.x + rect.width], [rect.y, rect.y + rect.height]];
+ }
+ function toBound(fromPos, from, to, dimIdx, boundIdx) {
+ fromPos[dimIdx] += to[dimIdx][boundIdx] - from[dimIdx][boundIdx];
+ }
+ };
+ SliderTimelineView2.prototype._createAxis = function(layoutInfo, timelineModel) {
+ var data = timelineModel.getData();
+ var axisType = timelineModel.get("axisType");
+ var scale4 = createScaleByModel2(timelineModel, axisType);
+ scale4.getTicks = function() {
+ return data.mapArray(["value"], function(value) {
+ return {
+ value
+ };
+ });
+ };
+ var dataExtent = data.getDataExtent("value");
+ scale4.setExtent(dataExtent[0], dataExtent[1]);
+ scale4.calcNiceTicks();
+ var axis = new TimelineAxis_default("value", scale4, layoutInfo.axisExtent, axisType);
+ axis.model = timelineModel;
+ return axis;
+ };
+ SliderTimelineView2.prototype._createGroup = function(key) {
+ var newGroup = this[key] = new Group_default();
+ this.group.add(newGroup);
+ return newGroup;
+ };
+ SliderTimelineView2.prototype._renderAxisLine = function(layoutInfo, group, axis, timelineModel) {
+ var axisExtent = axis.getExtent();
+ if (!timelineModel.get(["lineStyle", "show"])) {
+ return;
+ }
+ var line = new Line_default({
+ shape: {
+ x1: axisExtent[0],
+ y1: 0,
+ x2: axisExtent[1],
+ y2: 0
+ },
+ style: extend({
+ lineCap: "round"
+ }, timelineModel.getModel("lineStyle").getLineStyle()),
+ silent: true,
+ z2: 1
+ });
+ group.add(line);
+ var progressLine = this._progressLine = new Line_default({
+ shape: {
+ x1: axisExtent[0],
+ x2: this._currentPointer ? this._currentPointer.x : axisExtent[0],
+ y1: 0,
+ y2: 0
+ },
+ style: defaults({
+ lineCap: "round",
+ lineWidth: line.style.lineWidth
+ }, timelineModel.getModel(["progress", "lineStyle"]).getLineStyle()),
+ silent: true,
+ z2: 1
+ });
+ group.add(progressLine);
+ };
+ SliderTimelineView2.prototype._renderAxisTick = function(layoutInfo, group, axis, timelineModel) {
+ var _this = this;
+ var data = timelineModel.getData();
+ var ticks = axis.scale.getTicks();
+ this._tickSymbols = [];
+ each(ticks, function(tick) {
+ var tickCoord = axis.dataToCoord(tick.value);
+ var itemModel = data.getItemModel(tick.value);
+ var itemStyleModel = itemModel.getModel("itemStyle");
+ var hoverStyleModel = itemModel.getModel(["emphasis", "itemStyle"]);
+ var progressStyleModel = itemModel.getModel(["progress", "itemStyle"]);
+ var symbolOpt = {
+ x: tickCoord,
+ y: 0,
+ onclick: bind(_this._changeTimeline, _this, tick.value)
+ };
+ var el = giveSymbol(itemModel, itemStyleModel, group, symbolOpt);
+ el.ensureState("emphasis").style = hoverStyleModel.getItemStyle();
+ el.ensureState("progress").style = progressStyleModel.getItemStyle();
+ enableHoverEmphasis(el);
+ var ecData = getECData(el);
+ if (itemModel.get("tooltip")) {
+ ecData.dataIndex = tick.value;
+ ecData.dataModel = timelineModel;
+ } else {
+ ecData.dataIndex = ecData.dataModel = null;
+ }
+ _this._tickSymbols.push(el);
+ });
+ };
+ SliderTimelineView2.prototype._renderAxisLabel = function(layoutInfo, group, axis, timelineModel) {
+ var _this = this;
+ var labelModel = axis.getLabelModel();
+ if (!labelModel.get("show")) {
+ return;
+ }
+ var data = timelineModel.getData();
+ var labels = axis.getViewLabels();
+ this._tickLabels = [];
+ each(labels, function(labelItem) {
+ var dataIndex = labelItem.tickValue;
+ var itemModel = data.getItemModel(dataIndex);
+ var normalLabelModel = itemModel.getModel("label");
+ var hoverLabelModel = itemModel.getModel(["emphasis", "label"]);
+ var progressLabelModel = itemModel.getModel(["progress", "label"]);
+ var tickCoord = axis.dataToCoord(labelItem.tickValue);
+ var textEl = new Text_default({
+ x: tickCoord,
+ y: 0,
+ rotation: layoutInfo.labelRotation - layoutInfo.rotation,
+ onclick: bind(_this._changeTimeline, _this, dataIndex),
+ silent: false,
+ style: createTextStyle(normalLabelModel, {
+ text: labelItem.formattedLabel,
+ align: layoutInfo.labelAlign,
+ verticalAlign: layoutInfo.labelBaseline
+ })
+ });
+ textEl.ensureState("emphasis").style = createTextStyle(hoverLabelModel);
+ textEl.ensureState("progress").style = createTextStyle(progressLabelModel);
+ group.add(textEl);
+ enableHoverEmphasis(textEl);
+ labelDataIndexStore(textEl).dataIndex = dataIndex;
+ _this._tickLabels.push(textEl);
+ });
+ };
+ SliderTimelineView2.prototype._renderControl = function(layoutInfo, group, axis, timelineModel) {
+ var controlSize = layoutInfo.controlSize;
+ var rotation = layoutInfo.rotation;
+ var itemStyle = timelineModel.getModel("controlStyle").getItemStyle();
+ var hoverStyle = timelineModel.getModel(["emphasis", "controlStyle"]).getItemStyle();
+ var playState = timelineModel.getPlayState();
+ var inverse = timelineModel.get("inverse", true);
+ makeBtn(layoutInfo.nextBtnPosition, "next", bind(this._changeTimeline, this, inverse ? "-" : "+"));
+ makeBtn(layoutInfo.prevBtnPosition, "prev", bind(this._changeTimeline, this, inverse ? "+" : "-"));
+ makeBtn(layoutInfo.playPosition, playState ? "stop" : "play", bind(this._handlePlayClick, this, !playState), true);
+ function makeBtn(position2, iconName, onclick, willRotate) {
+ if (!position2) {
+ return;
+ }
+ var iconSize = parsePercent(retrieve2(timelineModel.get(["controlStyle", iconName + "BtnSize"]), controlSize), controlSize);
+ var rect = [0, -iconSize / 2, iconSize, iconSize];
+ var btn = makeControlIcon(timelineModel, iconName + "Icon", rect, {
+ x: position2[0],
+ y: position2[1],
+ originX: controlSize / 2,
+ originY: 0,
+ rotation: willRotate ? -rotation : 0,
+ rectHover: true,
+ style: itemStyle,
+ onclick
+ });
+ btn.ensureState("emphasis").style = hoverStyle;
+ group.add(btn);
+ enableHoverEmphasis(btn);
+ }
+ };
+ SliderTimelineView2.prototype._renderCurrentPointer = function(layoutInfo, group, axis, timelineModel) {
+ var data = timelineModel.getData();
+ var currentIndex = timelineModel.getCurrentIndex();
+ var pointerModel = data.getItemModel(currentIndex).getModel("checkpointStyle");
+ var me = this;
+ var callback = {
+ onCreate: function(pointer) {
+ pointer.draggable = true;
+ pointer.drift = bind(me._handlePointerDrag, me);
+ pointer.ondragend = bind(me._handlePointerDragend, me);
+ pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel, true);
+ },
+ onUpdate: function(pointer) {
+ pointerMoveTo(pointer, me._progressLine, currentIndex, axis, timelineModel);
+ }
+ };
+ this._currentPointer = giveSymbol(pointerModel, pointerModel, this._mainGroup, {}, this._currentPointer, callback);
+ };
+ SliderTimelineView2.prototype._handlePlayClick = function(nextState) {
+ this._clearTimer();
+ this.api.dispatchAction({
+ type: "timelinePlayChange",
+ playState: nextState,
+ from: this.uid
+ });
+ };
+ SliderTimelineView2.prototype._handlePointerDrag = function(dx, dy, e2) {
+ this._clearTimer();
+ this._pointerChangeTimeline([e2.offsetX, e2.offsetY]);
+ };
+ SliderTimelineView2.prototype._handlePointerDragend = function(e2) {
+ this._pointerChangeTimeline([e2.offsetX, e2.offsetY], true);
+ };
+ SliderTimelineView2.prototype._pointerChangeTimeline = function(mousePos, trigger3) {
+ var toCoord = this._toAxisCoord(mousePos)[0];
+ var axis = this._axis;
+ var axisExtent = asc(axis.getExtent().slice());
+ toCoord > axisExtent[1] && (toCoord = axisExtent[1]);
+ toCoord < axisExtent[0] && (toCoord = axisExtent[0]);
+ this._currentPointer.x = toCoord;
+ this._currentPointer.markRedraw();
+ var progressLine = this._progressLine;
+ if (progressLine) {
+ progressLine.shape.x2 = toCoord;
+ progressLine.dirty();
+ }
+ var targetDataIndex = this._findNearestTick(toCoord);
+ var timelineModel = this.model;
+ if (trigger3 || targetDataIndex !== timelineModel.getCurrentIndex() && timelineModel.get("realtime")) {
+ this._changeTimeline(targetDataIndex);
+ }
+ };
+ SliderTimelineView2.prototype._doPlayStop = function() {
+ var _this = this;
+ this._clearTimer();
+ if (this.model.getPlayState()) {
+ this._timer = setTimeout(function() {
+ var timelineModel = _this.model;
+ _this._changeTimeline(timelineModel.getCurrentIndex() + (timelineModel.get("rewind", true) ? -1 : 1));
+ }, this.model.get("playInterval"));
+ }
+ };
+ SliderTimelineView2.prototype._toAxisCoord = function(vertex) {
+ var trans = this._mainGroup.getLocalTransform();
+ return applyTransform2(vertex, trans, true);
+ };
+ SliderTimelineView2.prototype._findNearestTick = function(axisCoord) {
+ var data = this.model.getData();
+ var dist3 = Infinity;
+ var targetDataIndex;
+ var axis = this._axis;
+ data.each(["value"], function(value, dataIndex) {
+ var coord = axis.dataToCoord(value);
+ var d = Math.abs(coord - axisCoord);
+ if (d < dist3) {
+ dist3 = d;
+ targetDataIndex = dataIndex;
+ }
+ });
+ return targetDataIndex;
+ };
+ SliderTimelineView2.prototype._clearTimer = function() {
+ if (this._timer) {
+ clearTimeout(this._timer);
+ this._timer = null;
+ }
+ };
+ SliderTimelineView2.prototype._changeTimeline = function(nextIndex) {
+ var currentIndex = this.model.getCurrentIndex();
+ if (nextIndex === "+") {
+ nextIndex = currentIndex + 1;
+ } else if (nextIndex === "-") {
+ nextIndex = currentIndex - 1;
+ }
+ this.api.dispatchAction({
+ type: "timelineChange",
+ currentIndex: nextIndex,
+ from: this.uid
+ });
+ };
+ SliderTimelineView2.prototype._updateTicksStatus = function() {
+ var currentIndex = this.model.getCurrentIndex();
+ var tickSymbols = this._tickSymbols;
+ var tickLabels = this._tickLabels;
+ if (tickSymbols) {
+ for (var i = 0; i < tickSymbols.length; i++) {
+ tickSymbols && tickSymbols[i] && tickSymbols[i].toggleState("progress", i < currentIndex);
+ }
+ }
+ if (tickLabels) {
+ for (var i = 0; i < tickLabels.length; i++) {
+ tickLabels && tickLabels[i] && tickLabels[i].toggleState("progress", labelDataIndexStore(tickLabels[i]).dataIndex <= currentIndex);
+ }
+ }
+ };
+ SliderTimelineView2.type = "timeline.slider";
+ return SliderTimelineView2;
+}(TimelineView_default);
+function createScaleByModel2(model, axisType) {
+ axisType = axisType || model.get("type");
+ if (axisType) {
+ switch (axisType) {
+ case "category":
+ return new Ordinal_default({
+ ordinalMeta: model.getCategories(),
+ extent: [Infinity, -Infinity]
+ });
+ case "time":
+ return new Time_default({
+ locale: model.ecModel.getLocaleModel(),
+ useUTC: model.ecModel.get("useUTC")
+ });
+ default:
+ return new Interval_default();
+ }
+ }
+}
+function getViewRect6(model, api) {
+ return getLayoutRect(model.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ }, model.get("padding"));
+}
+function makeControlIcon(timelineModel, objPath, rect, opts) {
+ var style = opts.style;
+ var icon = createIcon(timelineModel.get(["controlStyle", objPath]), opts || {}, new BoundingRect_default(rect[0], rect[1], rect[2], rect[3]));
+ if (style) {
+ icon.setStyle(style);
+ }
+ return icon;
+}
+function giveSymbol(hostModel, itemStyleModel, group, opt, symbol, callback) {
+ var color = itemStyleModel.get("color");
+ if (!symbol) {
+ var symbolType = hostModel.get("symbol");
+ symbol = createSymbol(symbolType, -1, -1, 2, 2, color);
+ symbol.setStyle("strokeNoScale", true);
+ group.add(symbol);
+ callback && callback.onCreate(symbol);
+ } else {
+ symbol.setColor(color);
+ group.add(symbol);
+ callback && callback.onUpdate(symbol);
+ }
+ var itemStyle = itemStyleModel.getItemStyle(["color"]);
+ symbol.setStyle(itemStyle);
+ opt = merge({
+ rectHover: true,
+ z2: 100
+ }, opt, true);
+ var symbolSize = normalizeSymbolSize(hostModel.get("symbolSize"));
+ opt.scaleX = symbolSize[0] / 2;
+ opt.scaleY = symbolSize[1] / 2;
+ var symbolOffset = normalizeSymbolOffset(hostModel.get("symbolOffset"), symbolSize);
+ if (symbolOffset) {
+ opt.x = (opt.x || 0) + symbolOffset[0];
+ opt.y = (opt.y || 0) + symbolOffset[1];
+ }
+ var symbolRotate = hostModel.get("symbolRotate");
+ opt.rotation = (symbolRotate || 0) * Math.PI / 180 || 0;
+ symbol.attr(opt);
+ symbol.updateTransform();
+ return symbol;
+}
+function pointerMoveTo(pointer, progressLine, dataIndex, axis, timelineModel, noAnimation) {
+ if (pointer.dragging) {
+ return;
+ }
+ var pointerModel = timelineModel.getModel("checkpointStyle");
+ var toCoord = axis.dataToCoord(timelineModel.getData().get("value", dataIndex));
+ if (noAnimation || !pointerModel.get("animation", true)) {
+ pointer.attr({
+ x: toCoord,
+ y: 0
+ });
+ progressLine && progressLine.attr({
+ shape: {
+ x2: toCoord
+ }
+ });
+ } else {
+ var animationCfg = {
+ duration: pointerModel.get("animationDuration", true),
+ easing: pointerModel.get("animationEasing", true)
+ };
+ pointer.stopAnimation(null, true);
+ pointer.animateTo({
+ x: toCoord,
+ y: 0
+ }, animationCfg);
+ progressLine && progressLine.animateTo({
+ shape: {
+ x2: toCoord
+ }
+ }, animationCfg);
+ }
+}
+var SliderTimelineView_default = SliderTimelineView;
+
+// node_modules/echarts/lib/component/timeline/timelineAction.js
+function installTimelineAction(registers) {
+ registers.registerAction({
+ type: "timelineChange",
+ event: "timelineChanged",
+ update: "prepareAndUpdate"
+ }, function(payload, ecModel, api) {
+ var timelineModel = ecModel.getComponent("timeline");
+ if (timelineModel && payload.currentIndex != null) {
+ timelineModel.setCurrentIndex(payload.currentIndex);
+ if (!timelineModel.get("loop", true) && timelineModel.isIndexMax() && timelineModel.getPlayState()) {
+ timelineModel.setPlayState(false);
+ api.dispatchAction({
+ type: "timelinePlayChange",
+ playState: false,
+ from: payload.from
+ });
+ }
+ }
+ ecModel.resetOption("timeline", {
+ replaceMerge: timelineModel.get("replaceMerge", true)
+ });
+ return defaults({
+ currentIndex: timelineModel.option.currentIndex
+ }, payload);
+ });
+ registers.registerAction({
+ type: "timelinePlayChange",
+ event: "timelinePlayChanged",
+ update: "update"
+ }, function(payload, ecModel) {
+ var timelineModel = ecModel.getComponent("timeline");
+ if (timelineModel && payload.playState != null) {
+ timelineModel.setPlayState(payload.playState);
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/timeline/preprocessor.js
+function timelinePreprocessor(option) {
+ var timelineOpt = option && option.timeline;
+ if (!isArray(timelineOpt)) {
+ timelineOpt = timelineOpt ? [timelineOpt] : [];
+ }
+ each(timelineOpt, function(opt) {
+ if (!opt) {
+ return;
+ }
+ compatibleEC2(opt);
+ });
+}
+function compatibleEC2(opt) {
+ var type = opt.type;
+ var ec2Types = {
+ "number": "value",
+ "time": "time"
+ };
+ if (ec2Types[type]) {
+ opt.axisType = ec2Types[type];
+ delete opt.type;
+ }
+ transferItem(opt);
+ if (has(opt, "controlPosition")) {
+ var controlStyle = opt.controlStyle || (opt.controlStyle = {});
+ if (!has(controlStyle, "position")) {
+ controlStyle.position = opt.controlPosition;
+ }
+ if (controlStyle.position === "none" && !has(controlStyle, "show")) {
+ controlStyle.show = false;
+ delete controlStyle.position;
+ }
+ delete opt.controlPosition;
+ }
+ each(opt.data || [], function(dataItem) {
+ if (isObject(dataItem) && !isArray(dataItem)) {
+ if (!has(dataItem, "value") && has(dataItem, "name")) {
+ dataItem.value = dataItem.name;
+ }
+ transferItem(dataItem);
+ }
+ });
+}
+function transferItem(opt) {
+ var itemStyle = opt.itemStyle || (opt.itemStyle = {});
+ var itemStyleEmphasis = itemStyle.emphasis || (itemStyle.emphasis = {});
+ var label = opt.label || opt.label || {};
+ var labelNormal = label.normal || (label.normal = {});
+ var excludeLabelAttr = {
+ normal: 1,
+ emphasis: 1
+ };
+ each(label, function(value, name) {
+ if (!excludeLabelAttr[name] && !has(labelNormal, name)) {
+ labelNormal[name] = value;
+ }
+ });
+ if (itemStyleEmphasis.label && !has(label, "emphasis")) {
+ label.emphasis = itemStyleEmphasis.label;
+ delete itemStyleEmphasis.label;
+ }
+}
+function has(obj, attr) {
+ return obj.hasOwnProperty(attr);
+}
+
+// node_modules/echarts/lib/component/timeline/install.js
+function install40(registers) {
+ registers.registerComponentModel(SliderTimelineModel_default);
+ registers.registerComponentView(SliderTimelineView_default);
+ registers.registerSubTypeDefaulter("timeline", function() {
+ return "slider";
+ });
+ installTimelineAction(registers);
+ registers.registerPreprocessor(timelinePreprocessor);
+}
+
+// node_modules/echarts/lib/component/marker/checkMarkerInSeries.js
+function checkMarkerInSeries(seriesOpts, markerType) {
+ if (!seriesOpts) {
+ return false;
+ }
+ var seriesOptArr = isArray(seriesOpts) ? seriesOpts : [seriesOpts];
+ for (var idx = 0; idx < seriesOptArr.length; idx++) {
+ if (seriesOptArr[idx] && seriesOptArr[idx][markerType]) {
+ return true;
+ }
+ }
+ return false;
+}
+
+// node_modules/echarts/lib/component/marker/MarkerModel.js
+function fillLabel(opt) {
+ defaultEmphasis(opt, "label", ["show"]);
+}
+var inner17 = makeInner();
+var MarkerModel = function(_super) {
+ __extends(MarkerModel2, _super);
+ function MarkerModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkerModel2.type;
+ _this.createdBySelf = false;
+ return _this;
+ }
+ MarkerModel2.prototype.init = function(option, parentModel, ecModel) {
+ if (true) {
+ if (this.type === "marker") {
+ throw new Error("Marker component is abstract component. Use markLine, markPoint, markArea instead.");
+ }
+ }
+ this.mergeDefaultAndTheme(option, ecModel);
+ this._mergeOption(option, ecModel, false, true);
+ };
+ MarkerModel2.prototype.isAnimationEnabled = function() {
+ if (env_default.node) {
+ return false;
+ }
+ var hostSeries = this.__hostSeries;
+ return this.getShallow("animation") && hostSeries && hostSeries.isAnimationEnabled();
+ };
+ MarkerModel2.prototype.mergeOption = function(newOpt, ecModel) {
+ this._mergeOption(newOpt, ecModel, false, false);
+ };
+ MarkerModel2.prototype._mergeOption = function(newOpt, ecModel, createdBySelf, isInit) {
+ var componentType = this.mainType;
+ if (!createdBySelf) {
+ ecModel.eachSeries(function(seriesModel) {
+ var markerOpt = seriesModel.get(this.mainType, true);
+ var markerModel = inner17(seriesModel)[componentType];
+ if (!markerOpt || !markerOpt.data) {
+ inner17(seriesModel)[componentType] = null;
+ return;
+ }
+ if (!markerModel) {
+ if (isInit) {
+ fillLabel(markerOpt);
+ }
+ each(markerOpt.data, function(item) {
+ if (item instanceof Array) {
+ fillLabel(item[0]);
+ fillLabel(item[1]);
+ } else {
+ fillLabel(item);
+ }
+ });
+ markerModel = this.createMarkerModelFromSeries(markerOpt, this, ecModel);
+ extend(markerModel, {
+ mainType: this.mainType,
+ seriesIndex: seriesModel.seriesIndex,
+ name: seriesModel.name,
+ createdBySelf: true
+ });
+ markerModel.__hostSeries = seriesModel;
+ } else {
+ markerModel._mergeOption(markerOpt, ecModel, true);
+ }
+ inner17(seriesModel)[componentType] = markerModel;
+ }, this);
+ }
+ };
+ MarkerModel2.prototype.formatTooltip = function(dataIndex, multipleSeries, dataType) {
+ var data = this.getData();
+ var value = this.getRawValue(dataIndex);
+ var itemName = data.getName(dataIndex);
+ return createTooltipMarkup("section", {
+ header: this.name,
+ blocks: [createTooltipMarkup("nameValue", {
+ name: itemName,
+ value,
+ noName: !itemName,
+ noValue: value == null
+ })]
+ });
+ };
+ MarkerModel2.prototype.getData = function() {
+ return this._data;
+ };
+ MarkerModel2.prototype.setData = function(data) {
+ this._data = data;
+ };
+ MarkerModel2.prototype.getDataParams = function(dataIndex, dataType) {
+ var params = DataFormatMixin.prototype.getDataParams.call(this, dataIndex, dataType);
+ var hostSeries = this.__hostSeries;
+ if (hostSeries) {
+ params.seriesId = hostSeries.id;
+ params.seriesName = hostSeries.name;
+ params.seriesType = hostSeries.subType;
+ }
+ return params;
+ };
+ MarkerModel2.getMarkerModelFromSeries = function(seriesModel, componentType) {
+ return inner17(seriesModel)[componentType];
+ };
+ MarkerModel2.type = "marker";
+ MarkerModel2.dependencies = ["series", "grid", "polar", "geo"];
+ return MarkerModel2;
+}(Component_default);
+mixin(MarkerModel, DataFormatMixin.prototype);
+var MarkerModel_default = MarkerModel;
+
+// node_modules/echarts/lib/component/marker/MarkPointModel.js
+var MarkPointModel = function(_super) {
+ __extends(MarkPointModel2, _super);
+ function MarkPointModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkPointModel2.type;
+ return _this;
+ }
+ MarkPointModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) {
+ return new MarkPointModel2(markerOpt, masterMarkerModel, ecModel);
+ };
+ MarkPointModel2.type = "markPoint";
+ MarkPointModel2.defaultOption = {
+ z: 5,
+ symbol: "pin",
+ symbolSize: 50,
+ tooltip: {
+ trigger: "item"
+ },
+ label: {
+ show: true,
+ position: "inside"
+ },
+ itemStyle: {
+ borderWidth: 2
+ },
+ emphasis: {
+ label: {
+ show: true
+ }
+ }
+ };
+ return MarkPointModel2;
+}(MarkerModel_default);
+var MarkPointModel_default = MarkPointModel;
+
+// node_modules/echarts/lib/component/marker/markerHelper.js
+function hasXOrY(item) {
+ return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));
+}
+function hasXAndY(item) {
+ return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));
+}
+function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {
+ var coordArr = [];
+ var stacked = isDimensionStacked(data, targetDataDim);
+ var calcDataDim = stacked ? data.getCalculationInfo("stackResultDimension") : targetDataDim;
+ var value = numCalculate(data, calcDataDim, markerType);
+ var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];
+ coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);
+ coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);
+ var coordArrValue = data.get(targetDataDim, dataIndex);
+ var precision = getPrecision(data.get(targetDataDim, dataIndex));
+ precision = Math.min(precision, 20);
+ if (precision >= 0) {
+ coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);
+ }
+ return [coordArr, coordArrValue];
+}
+var markerTypeCalculator = {
+ min: curry(markerTypeCalculatorWithExtent, "min"),
+ max: curry(markerTypeCalculatorWithExtent, "max"),
+ average: curry(markerTypeCalculatorWithExtent, "average"),
+ median: curry(markerTypeCalculatorWithExtent, "median")
+};
+function dataTransform(seriesModel, item) {
+ if (!item) {
+ return;
+ }
+ var data = seriesModel.getData();
+ var coordSys = seriesModel.coordinateSystem;
+ var dims = coordSys && coordSys.dimensions;
+ if (!hasXAndY(item) && !isArray(item.coord) && isArray(dims)) {
+ var axisInfo = getAxisInfo2(item, data, coordSys, seriesModel);
+ item = clone(item);
+ if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {
+ var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);
+ var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);
+ var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);
+ item.coord = coordInfo[0];
+ item.value = coordInfo[1];
+ } else {
+ item.coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis];
+ }
+ }
+ if (item.coord == null || !isArray(dims)) {
+ item.coord = [];
+ } else {
+ var coord = item.coord;
+ for (var i = 0; i < 2; i++) {
+ if (markerTypeCalculator[coord[i]]) {
+ coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);
+ }
+ }
+ }
+ return item;
+}
+function getAxisInfo2(item, data, coordSys, seriesModel) {
+ var ret = {};
+ if (item.valueIndex != null || item.valueDim != null) {
+ ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;
+ ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));
+ ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);
+ ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);
+ } else {
+ ret.baseAxis = seriesModel.getBaseAxis();
+ ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);
+ ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);
+ ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);
+ }
+ return ret;
+}
+function dataDimToCoordDim(seriesModel, dataDim) {
+ var dimItem = seriesModel.getData().getDimensionInfo(dataDim);
+ return dimItem && dimItem.coordDim;
+}
+function dataFilter2(coordSys, item) {
+ return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;
+}
+function zoneFilter(coordSys, item1, item2) {
+ return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY(item1) && !hasXOrY(item2) ? coordSys.containZone(item1.coord, item2.coord) : true;
+}
+function createMarkerDimValueGetter(inCoordSys, dims) {
+ return inCoordSys ? function(item, dimName, dataIndex, dimIndex) {
+ var rawVal = dimIndex < 2 ? item.coord && item.coord[dimIndex] : item.value;
+ return parseDataValue(rawVal, dims[dimIndex]);
+ } : function(item, dimName, dataIndex, dimIndex) {
+ return parseDataValue(item.value, dims[dimIndex]);
+ };
+}
+function numCalculate(data, valueDataDim, type) {
+ if (type === "average") {
+ var sum_1 = 0;
+ var count_1 = 0;
+ data.each(valueDataDim, function(val, idx) {
+ if (!isNaN(val)) {
+ sum_1 += val;
+ count_1++;
+ }
+ });
+ return sum_1 / count_1;
+ } else if (type === "median") {
+ return data.getMedian(valueDataDim);
+ } else {
+ return data.getDataExtent(valueDataDim)[type === "max" ? 1 : 0];
+ }
+}
+
+// node_modules/echarts/lib/component/marker/MarkerView.js
+var inner18 = makeInner();
+var MarkerView = function(_super) {
+ __extends(MarkerView2, _super);
+ function MarkerView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkerView2.type;
+ return _this;
+ }
+ MarkerView2.prototype.init = function() {
+ this.markerGroupMap = createHashMap();
+ };
+ MarkerView2.prototype.render = function(markerModel, ecModel, api) {
+ var _this = this;
+ var markerGroupMap = this.markerGroupMap;
+ markerGroupMap.each(function(item) {
+ inner18(item).keep = false;
+ });
+ ecModel.eachSeries(function(seriesModel) {
+ var markerModel2 = MarkerModel_default.getMarkerModelFromSeries(seriesModel, _this.type);
+ markerModel2 && _this.renderSeries(seriesModel, markerModel2, ecModel, api);
+ });
+ markerGroupMap.each(function(item) {
+ !inner18(item).keep && _this.group.remove(item.group);
+ });
+ };
+ MarkerView2.prototype.markKeep = function(drawGroup) {
+ inner18(drawGroup).keep = true;
+ };
+ MarkerView2.prototype.toggleBlurSeries = function(seriesModelList, isBlur) {
+ var _this = this;
+ each(seriesModelList, function(seriesModel) {
+ var markerModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, _this.type);
+ if (markerModel) {
+ var data = markerModel.getData();
+ data.eachItemGraphicEl(function(el) {
+ if (el) {
+ isBlur ? enterBlur(el) : leaveBlur(el);
+ }
+ });
+ }
+ });
+ };
+ MarkerView2.type = "marker";
+ return MarkerView2;
+}(Component_default2);
+var MarkerView_default = MarkerView;
+
+// node_modules/echarts/lib/component/marker/MarkPointView.js
+function updateMarkerLayout(mpData, seriesModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ mpData.each(function(idx) {
+ var itemModel = mpData.getItemModel(idx);
+ var point;
+ var xPx = parsePercent2(itemModel.get("x"), api.getWidth());
+ var yPx = parsePercent2(itemModel.get("y"), api.getHeight());
+ if (!isNaN(xPx) && !isNaN(yPx)) {
+ point = [xPx, yPx];
+ } else if (seriesModel.getMarkerPosition) {
+ point = seriesModel.getMarkerPosition(mpData.getValues(mpData.dimensions, idx));
+ } else if (coordSys) {
+ var x = mpData.get(coordSys.dimensions[0], idx);
+ var y = mpData.get(coordSys.dimensions[1], idx);
+ point = coordSys.dataToPoint([x, y]);
+ }
+ if (!isNaN(xPx)) {
+ point[0] = xPx;
+ }
+ if (!isNaN(yPx)) {
+ point[1] = yPx;
+ }
+ mpData.setItemLayout(idx, point);
+ });
+}
+var MarkPointView = function(_super) {
+ __extends(MarkPointView2, _super);
+ function MarkPointView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkPointView2.type;
+ return _this;
+ }
+ MarkPointView2.prototype.updateTransform = function(markPointModel, ecModel, api) {
+ ecModel.eachSeries(function(seriesModel) {
+ var mpModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, "markPoint");
+ if (mpModel) {
+ updateMarkerLayout(mpModel.getData(), seriesModel, api);
+ this.markerGroupMap.get(seriesModel.id).updateLayout();
+ }
+ }, this);
+ };
+ MarkPointView2.prototype.renderSeries = function(seriesModel, mpModel, ecModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ var seriesId = seriesModel.id;
+ var seriesData = seriesModel.getData();
+ var symbolDrawMap = this.markerGroupMap;
+ var symbolDraw = symbolDrawMap.get(seriesId) || symbolDrawMap.set(seriesId, new SymbolDraw_default());
+ var mpData = createData(coordSys, seriesModel, mpModel);
+ mpModel.setData(mpData);
+ updateMarkerLayout(mpModel.getData(), seriesModel, api);
+ mpData.each(function(idx) {
+ var itemModel = mpData.getItemModel(idx);
+ var symbol = itemModel.getShallow("symbol");
+ var symbolSize = itemModel.getShallow("symbolSize");
+ var symbolRotate = itemModel.getShallow("symbolRotate");
+ var symbolOffset = itemModel.getShallow("symbolOffset");
+ var symbolKeepAspect = itemModel.getShallow("symbolKeepAspect");
+ if (isFunction(symbol) || isFunction(symbolSize) || isFunction(symbolRotate) || isFunction(symbolOffset)) {
+ var rawIdx = mpModel.getRawValue(idx);
+ var dataParams = mpModel.getDataParams(idx);
+ if (isFunction(symbol)) {
+ symbol = symbol(rawIdx, dataParams);
+ }
+ if (isFunction(symbolSize)) {
+ symbolSize = symbolSize(rawIdx, dataParams);
+ }
+ if (isFunction(symbolRotate)) {
+ symbolRotate = symbolRotate(rawIdx, dataParams);
+ }
+ if (isFunction(symbolOffset)) {
+ symbolOffset = symbolOffset(rawIdx, dataParams);
+ }
+ }
+ var style = itemModel.getModel("itemStyle").getItemStyle();
+ var color = getVisualFromData(seriesData, "color");
+ if (!style.fill) {
+ style.fill = color;
+ }
+ mpData.setItemVisual(idx, {
+ symbol,
+ symbolSize,
+ symbolRotate,
+ symbolOffset,
+ symbolKeepAspect,
+ style
+ });
+ });
+ symbolDraw.updateData(mpData);
+ this.group.add(symbolDraw.group);
+ mpData.eachItemGraphicEl(function(el) {
+ el.traverse(function(child) {
+ getECData(child).dataModel = mpModel;
+ });
+ });
+ this.markKeep(symbolDraw);
+ symbolDraw.group.silent = mpModel.get("silent") || seriesModel.get("silent");
+ };
+ MarkPointView2.type = "markPoint";
+ return MarkPointView2;
+}(MarkerView_default);
+function createData(coordSys, seriesModel, mpModel) {
+ var coordDimsInfos;
+ if (coordSys) {
+ coordDimsInfos = map(coordSys && coordSys.dimensions, function(coordDim) {
+ var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};
+ return extend(extend({}, info), {
+ name: coordDim,
+ ordinalMeta: null
+ });
+ });
+ } else {
+ coordDimsInfos = [{
+ name: "value",
+ type: "float"
+ }];
+ }
+ var mpData = new SeriesData_default(coordDimsInfos, mpModel);
+ var dataOpt = map(mpModel.get("data"), curry(dataTransform, seriesModel));
+ if (coordSys) {
+ dataOpt = filter(dataOpt, curry(dataFilter2, coordSys));
+ }
+ var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos);
+ mpData.initData(dataOpt, null, dimValueGetter);
+ return mpData;
+}
+var MarkPointView_default = MarkPointView;
+
+// node_modules/echarts/lib/component/marker/installMarkPoint.js
+function install41(registers) {
+ registers.registerComponentModel(MarkPointModel_default);
+ registers.registerComponentView(MarkPointView_default);
+ registers.registerPreprocessor(function(opt) {
+ if (checkMarkerInSeries(opt.series, "markPoint")) {
+ opt.markPoint = opt.markPoint || {};
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/marker/MarkLineModel.js
+var MarkLineModel = function(_super) {
+ __extends(MarkLineModel2, _super);
+ function MarkLineModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkLineModel2.type;
+ return _this;
+ }
+ MarkLineModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) {
+ return new MarkLineModel2(markerOpt, masterMarkerModel, ecModel);
+ };
+ MarkLineModel2.type = "markLine";
+ MarkLineModel2.defaultOption = {
+ z: 5,
+ symbol: ["circle", "arrow"],
+ symbolSize: [8, 16],
+ symbolOffset: 0,
+ precision: 2,
+ tooltip: {
+ trigger: "item"
+ },
+ label: {
+ show: true,
+ position: "end",
+ distance: 5
+ },
+ lineStyle: {
+ type: "dashed"
+ },
+ emphasis: {
+ label: {
+ show: true
+ },
+ lineStyle: {
+ width: 3
+ }
+ },
+ animationEasing: "linear"
+ };
+ return MarkLineModel2;
+}(MarkerModel_default);
+var MarkLineModel_default = MarkLineModel;
+
+// node_modules/echarts/lib/component/marker/MarkLineView.js
+var inner19 = makeInner();
+var markLineTransform = function(seriesModel, coordSys, mlModel, item) {
+ var data = seriesModel.getData();
+ var itemArray;
+ if (!isArray(item)) {
+ var mlType = item.type;
+ if (mlType === "min" || mlType === "max" || mlType === "average" || mlType === "median" || item.xAxis != null || item.yAxis != null) {
+ var valueAxis2 = void 0;
+ var value = void 0;
+ if (item.yAxis != null || item.xAxis != null) {
+ valueAxis2 = coordSys.getAxis(item.yAxis != null ? "y" : "x");
+ value = retrieve(item.yAxis, item.xAxis);
+ } else {
+ var axisInfo = getAxisInfo2(item, data, coordSys, seriesModel);
+ valueAxis2 = axisInfo.valueAxis;
+ var valueDataDim = getStackedDimension(data, axisInfo.valueDataDim);
+ value = numCalculate(data, valueDataDim, mlType);
+ }
+ var valueIndex = valueAxis2.dim === "x" ? 0 : 1;
+ var baseIndex = 1 - valueIndex;
+ var mlFrom = clone(item);
+ var mlTo = {
+ coord: []
+ };
+ mlFrom.type = null;
+ mlFrom.coord = [];
+ mlFrom.coord[baseIndex] = -Infinity;
+ mlTo.coord[baseIndex] = Infinity;
+ var precision = mlModel.get("precision");
+ if (precision >= 0 && isNumber(value)) {
+ value = +value.toFixed(Math.min(precision, 20));
+ }
+ mlFrom.coord[valueIndex] = mlTo.coord[valueIndex] = value;
+ itemArray = [mlFrom, mlTo, {
+ type: mlType,
+ valueIndex: item.valueIndex,
+ value
+ }];
+ } else {
+ if (true) {
+ logError("Invalid markLine data.");
+ }
+ itemArray = [];
+ }
+ } else {
+ itemArray = item;
+ }
+ var normalizedItem = [dataTransform(seriesModel, itemArray[0]), dataTransform(seriesModel, itemArray[1]), extend({}, itemArray[2])];
+ normalizedItem[2].type = normalizedItem[2].type || null;
+ merge(normalizedItem[2], normalizedItem[0]);
+ merge(normalizedItem[2], normalizedItem[1]);
+ return normalizedItem;
+};
+function isInfinity(val) {
+ return !isNaN(val) && !isFinite(val);
+}
+function ifMarkLineHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {
+ var otherDimIndex = 1 - dimIndex;
+ var dimName = coordSys.dimensions[dimIndex];
+ return isInfinity(fromCoord[otherDimIndex]) && isInfinity(toCoord[otherDimIndex]) && fromCoord[dimIndex] === toCoord[dimIndex] && coordSys.getAxis(dimName).containData(fromCoord[dimIndex]);
+}
+function markLineFilter(coordSys, item) {
+ if (coordSys.type === "cartesian2d") {
+ var fromCoord = item[0].coord;
+ var toCoord = item[1].coord;
+ if (fromCoord && toCoord && (ifMarkLineHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkLineHasOnlyDim(0, fromCoord, toCoord, coordSys))) {
+ return true;
+ }
+ }
+ return dataFilter2(coordSys, item[0]) && dataFilter2(coordSys, item[1]);
+}
+function updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ var itemModel = data.getItemModel(idx);
+ var point;
+ var xPx = parsePercent2(itemModel.get("x"), api.getWidth());
+ var yPx = parsePercent2(itemModel.get("y"), api.getHeight());
+ if (!isNaN(xPx) && !isNaN(yPx)) {
+ point = [xPx, yPx];
+ } else {
+ if (seriesModel.getMarkerPosition) {
+ point = seriesModel.getMarkerPosition(data.getValues(data.dimensions, idx));
+ } else {
+ var dims = coordSys.dimensions;
+ var x = data.get(dims[0], idx);
+ var y = data.get(dims[1], idx);
+ point = coordSys.dataToPoint([x, y]);
+ }
+ if (isCoordinateSystemType(coordSys, "cartesian2d")) {
+ var xAxis = coordSys.getAxis("x");
+ var yAxis = coordSys.getAxis("y");
+ var dims = coordSys.dimensions;
+ if (isInfinity(data.get(dims[0], idx))) {
+ point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[isFrom ? 0 : 1]);
+ } else if (isInfinity(data.get(dims[1], idx))) {
+ point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[isFrom ? 0 : 1]);
+ }
+ }
+ if (!isNaN(xPx)) {
+ point[0] = xPx;
+ }
+ if (!isNaN(yPx)) {
+ point[1] = yPx;
+ }
+ }
+ data.setItemLayout(idx, point);
+}
+var MarkLineView = function(_super) {
+ __extends(MarkLineView2, _super);
+ function MarkLineView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkLineView2.type;
+ return _this;
+ }
+ MarkLineView2.prototype.updateTransform = function(markLineModel, ecModel, api) {
+ ecModel.eachSeries(function(seriesModel) {
+ var mlModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, "markLine");
+ if (mlModel) {
+ var mlData_1 = mlModel.getData();
+ var fromData_1 = inner19(mlModel).from;
+ var toData_1 = inner19(mlModel).to;
+ fromData_1.each(function(idx) {
+ updateSingleMarkerEndLayout(fromData_1, idx, true, seriesModel, api);
+ updateSingleMarkerEndLayout(toData_1, idx, false, seriesModel, api);
+ });
+ mlData_1.each(function(idx) {
+ mlData_1.setItemLayout(idx, [fromData_1.getItemLayout(idx), toData_1.getItemLayout(idx)]);
+ });
+ this.markerGroupMap.get(seriesModel.id).updateLayout();
+ }
+ }, this);
+ };
+ MarkLineView2.prototype.renderSeries = function(seriesModel, mlModel, ecModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ var seriesId = seriesModel.id;
+ var seriesData = seriesModel.getData();
+ var lineDrawMap = this.markerGroupMap;
+ var lineDraw = lineDrawMap.get(seriesId) || lineDrawMap.set(seriesId, new LineDraw_default());
+ this.group.add(lineDraw.group);
+ var mlData = createList2(coordSys, seriesModel, mlModel);
+ var fromData = mlData.from;
+ var toData = mlData.to;
+ var lineData = mlData.line;
+ inner19(mlModel).from = fromData;
+ inner19(mlModel).to = toData;
+ mlModel.setData(lineData);
+ var symbolType = mlModel.get("symbol");
+ var symbolSize = mlModel.get("symbolSize");
+ var symbolRotate = mlModel.get("symbolRotate");
+ var symbolOffset = mlModel.get("symbolOffset");
+ if (!isArray(symbolType)) {
+ symbolType = [symbolType, symbolType];
+ }
+ if (!isArray(symbolSize)) {
+ symbolSize = [symbolSize, symbolSize];
+ }
+ if (!isArray(symbolRotate)) {
+ symbolRotate = [symbolRotate, symbolRotate];
+ }
+ if (!isArray(symbolOffset)) {
+ symbolOffset = [symbolOffset, symbolOffset];
+ }
+ mlData.from.each(function(idx) {
+ updateDataVisualAndLayout(fromData, idx, true);
+ updateDataVisualAndLayout(toData, idx, false);
+ });
+ lineData.each(function(idx) {
+ var lineStyle = lineData.getItemModel(idx).getModel("lineStyle").getLineStyle();
+ lineData.setItemLayout(idx, [fromData.getItemLayout(idx), toData.getItemLayout(idx)]);
+ if (lineStyle.stroke == null) {
+ lineStyle.stroke = fromData.getItemVisual(idx, "style").fill;
+ }
+ lineData.setItemVisual(idx, {
+ fromSymbolKeepAspect: fromData.getItemVisual(idx, "symbolKeepAspect"),
+ fromSymbolOffset: fromData.getItemVisual(idx, "symbolOffset"),
+ fromSymbolRotate: fromData.getItemVisual(idx, "symbolRotate"),
+ fromSymbolSize: fromData.getItemVisual(idx, "symbolSize"),
+ fromSymbol: fromData.getItemVisual(idx, "symbol"),
+ toSymbolKeepAspect: toData.getItemVisual(idx, "symbolKeepAspect"),
+ toSymbolOffset: toData.getItemVisual(idx, "symbolOffset"),
+ toSymbolRotate: toData.getItemVisual(idx, "symbolRotate"),
+ toSymbolSize: toData.getItemVisual(idx, "symbolSize"),
+ toSymbol: toData.getItemVisual(idx, "symbol"),
+ style: lineStyle
+ });
+ });
+ lineDraw.updateData(lineData);
+ mlData.line.eachItemGraphicEl(function(el) {
+ getECData(el).dataModel = mlModel;
+ el.traverse(function(child) {
+ getECData(child).dataModel = mlModel;
+ });
+ });
+ function updateDataVisualAndLayout(data, idx, isFrom) {
+ var itemModel = data.getItemModel(idx);
+ updateSingleMarkerEndLayout(data, idx, isFrom, seriesModel, api);
+ var style = itemModel.getModel("itemStyle").getItemStyle();
+ if (style.fill == null) {
+ style.fill = getVisualFromData(seriesData, "color");
+ }
+ data.setItemVisual(idx, {
+ symbolKeepAspect: itemModel.get("symbolKeepAspect"),
+ symbolOffset: retrieve2(itemModel.get("symbolOffset", true), symbolOffset[isFrom ? 0 : 1]),
+ symbolRotate: retrieve2(itemModel.get("symbolRotate", true), symbolRotate[isFrom ? 0 : 1]),
+ symbolSize: retrieve2(itemModel.get("symbolSize"), symbolSize[isFrom ? 0 : 1]),
+ symbol: retrieve2(itemModel.get("symbol", true), symbolType[isFrom ? 0 : 1]),
+ style
+ });
+ }
+ this.markKeep(lineDraw);
+ lineDraw.group.silent = mlModel.get("silent") || seriesModel.get("silent");
+ };
+ MarkLineView2.type = "markLine";
+ return MarkLineView2;
+}(MarkerView_default);
+function createList2(coordSys, seriesModel, mlModel) {
+ var coordDimsInfos;
+ if (coordSys) {
+ coordDimsInfos = map(coordSys && coordSys.dimensions, function(coordDim) {
+ var info = seriesModel.getData().getDimensionInfo(seriesModel.getData().mapDimension(coordDim)) || {};
+ return extend(extend({}, info), {
+ name: coordDim,
+ ordinalMeta: null
+ });
+ });
+ } else {
+ coordDimsInfos = [{
+ name: "value",
+ type: "float"
+ }];
+ }
+ var fromData = new SeriesData_default(coordDimsInfos, mlModel);
+ var toData = new SeriesData_default(coordDimsInfos, mlModel);
+ var lineData = new SeriesData_default([], mlModel);
+ var optData = map(mlModel.get("data"), curry(markLineTransform, seriesModel, coordSys, mlModel));
+ if (coordSys) {
+ optData = filter(optData, curry(markLineFilter, coordSys));
+ }
+ var dimValueGetter = createMarkerDimValueGetter(!!coordSys, coordDimsInfos);
+ fromData.initData(map(optData, function(item) {
+ return item[0];
+ }), null, dimValueGetter);
+ toData.initData(map(optData, function(item) {
+ return item[1];
+ }), null, dimValueGetter);
+ lineData.initData(map(optData, function(item) {
+ return item[2];
+ }));
+ lineData.hasItemOption = true;
+ return {
+ from: fromData,
+ to: toData,
+ line: lineData
+ };
+}
+var MarkLineView_default = MarkLineView;
+
+// node_modules/echarts/lib/component/marker/installMarkLine.js
+function install42(registers) {
+ registers.registerComponentModel(MarkLineModel_default);
+ registers.registerComponentView(MarkLineView_default);
+ registers.registerPreprocessor(function(opt) {
+ if (checkMarkerInSeries(opt.series, "markLine")) {
+ opt.markLine = opt.markLine || {};
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/marker/MarkAreaModel.js
+var MarkAreaModel = function(_super) {
+ __extends(MarkAreaModel2, _super);
+ function MarkAreaModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkAreaModel2.type;
+ return _this;
+ }
+ MarkAreaModel2.prototype.createMarkerModelFromSeries = function(markerOpt, masterMarkerModel, ecModel) {
+ return new MarkAreaModel2(markerOpt, masterMarkerModel, ecModel);
+ };
+ MarkAreaModel2.type = "markArea";
+ MarkAreaModel2.defaultOption = {
+ z: 1,
+ tooltip: {
+ trigger: "item"
+ },
+ animation: false,
+ label: {
+ show: true,
+ position: "top"
+ },
+ itemStyle: {
+ borderWidth: 0
+ },
+ emphasis: {
+ label: {
+ show: true,
+ position: "top"
+ }
+ }
+ };
+ return MarkAreaModel2;
+}(MarkerModel_default);
+var MarkAreaModel_default = MarkAreaModel;
+
+// node_modules/echarts/lib/component/marker/MarkAreaView.js
+var inner20 = makeInner();
+var markAreaTransform = function(seriesModel, coordSys, maModel, item) {
+ var item0 = item[0];
+ var item1 = item[1];
+ if (!item0 || !item1) {
+ return;
+ }
+ var lt2 = dataTransform(seriesModel, item0);
+ var rb2 = dataTransform(seriesModel, item1);
+ var ltCoord = lt2.coord;
+ var rbCoord = rb2.coord;
+ ltCoord[0] = retrieve(ltCoord[0], -Infinity);
+ ltCoord[1] = retrieve(ltCoord[1], -Infinity);
+ rbCoord[0] = retrieve(rbCoord[0], Infinity);
+ rbCoord[1] = retrieve(rbCoord[1], Infinity);
+ var result = mergeAll([{}, lt2, rb2]);
+ result.coord = [lt2.coord, rb2.coord];
+ result.x0 = lt2.x;
+ result.y0 = lt2.y;
+ result.x1 = rb2.x;
+ result.y1 = rb2.y;
+ return result;
+};
+function isInfinity2(val) {
+ return !isNaN(val) && !isFinite(val);
+}
+function ifMarkAreaHasOnlyDim(dimIndex, fromCoord, toCoord, coordSys) {
+ var otherDimIndex = 1 - dimIndex;
+ return isInfinity2(fromCoord[otherDimIndex]) && isInfinity2(toCoord[otherDimIndex]);
+}
+function markAreaFilter(coordSys, item) {
+ var fromCoord = item.coord[0];
+ var toCoord = item.coord[1];
+ var item0 = {
+ coord: fromCoord,
+ x: item.x0,
+ y: item.y0
+ };
+ var item1 = {
+ coord: toCoord,
+ x: item.x1,
+ y: item.y1
+ };
+ if (isCoordinateSystemType(coordSys, "cartesian2d")) {
+ if (fromCoord && toCoord && (ifMarkAreaHasOnlyDim(1, fromCoord, toCoord, coordSys) || ifMarkAreaHasOnlyDim(0, fromCoord, toCoord, coordSys))) {
+ return true;
+ }
+ return zoneFilter(coordSys, item0, item1);
+ }
+ return dataFilter2(coordSys, item0) || dataFilter2(coordSys, item1);
+}
+function getSingleMarkerEndPoint(data, idx, dims, seriesModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ var itemModel = data.getItemModel(idx);
+ var point;
+ var xPx = parsePercent2(itemModel.get(dims[0]), api.getWidth());
+ var yPx = parsePercent2(itemModel.get(dims[1]), api.getHeight());
+ if (!isNaN(xPx) && !isNaN(yPx)) {
+ point = [xPx, yPx];
+ } else {
+ if (seriesModel.getMarkerPosition) {
+ var pointValue0 = data.getValues(["x0", "y0"], idx);
+ var pointValue1 = data.getValues(["x1", "y1"], idx);
+ var clampPointValue0 = coordSys.clampData(pointValue0);
+ var clampPointValue1 = coordSys.clampData(pointValue1);
+ var pointValue = [];
+ if (dims[0] === "x0") {
+ pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue1[0] : pointValue0[0];
+ } else {
+ pointValue[0] = clampPointValue0[0] > clampPointValue1[0] ? pointValue0[0] : pointValue1[0];
+ }
+ if (dims[1] === "y0") {
+ pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue1[1] : pointValue0[1];
+ } else {
+ pointValue[1] = clampPointValue0[1] > clampPointValue1[1] ? pointValue0[1] : pointValue1[1];
+ }
+ point = seriesModel.getMarkerPosition(pointValue, dims, true);
+ } else {
+ var x = data.get(dims[0], idx);
+ var y = data.get(dims[1], idx);
+ var pt = [x, y];
+ coordSys.clampData && coordSys.clampData(pt, pt);
+ point = coordSys.dataToPoint(pt, true);
+ }
+ if (isCoordinateSystemType(coordSys, "cartesian2d")) {
+ var xAxis = coordSys.getAxis("x");
+ var yAxis = coordSys.getAxis("y");
+ var x = data.get(dims[0], idx);
+ var y = data.get(dims[1], idx);
+ if (isInfinity2(x)) {
+ point[0] = xAxis.toGlobalCoord(xAxis.getExtent()[dims[0] === "x0" ? 0 : 1]);
+ } else if (isInfinity2(y)) {
+ point[1] = yAxis.toGlobalCoord(yAxis.getExtent()[dims[1] === "y0" ? 0 : 1]);
+ }
+ }
+ if (!isNaN(xPx)) {
+ point[0] = xPx;
+ }
+ if (!isNaN(yPx)) {
+ point[1] = yPx;
+ }
+ }
+ return point;
+}
+var dimPermutations = [["x0", "y0"], ["x1", "y0"], ["x1", "y1"], ["x0", "y1"]];
+var MarkAreaView = function(_super) {
+ __extends(MarkAreaView2, _super);
+ function MarkAreaView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = MarkAreaView2.type;
+ return _this;
+ }
+ MarkAreaView2.prototype.updateTransform = function(markAreaModel, ecModel, api) {
+ ecModel.eachSeries(function(seriesModel) {
+ var maModel = MarkerModel_default.getMarkerModelFromSeries(seriesModel, "markArea");
+ if (maModel) {
+ var areaData_1 = maModel.getData();
+ areaData_1.each(function(idx) {
+ var points4 = map(dimPermutations, function(dim) {
+ return getSingleMarkerEndPoint(areaData_1, idx, dim, seriesModel, api);
+ });
+ areaData_1.setItemLayout(idx, points4);
+ var el = areaData_1.getItemGraphicEl(idx);
+ el.setShape("points", points4);
+ });
+ }
+ }, this);
+ };
+ MarkAreaView2.prototype.renderSeries = function(seriesModel, maModel, ecModel, api) {
+ var coordSys = seriesModel.coordinateSystem;
+ var seriesId = seriesModel.id;
+ var seriesData = seriesModel.getData();
+ var areaGroupMap = this.markerGroupMap;
+ var polygonGroup = areaGroupMap.get(seriesId) || areaGroupMap.set(seriesId, {
+ group: new Group_default()
+ });
+ this.group.add(polygonGroup.group);
+ this.markKeep(polygonGroup);
+ var areaData = createList3(coordSys, seriesModel, maModel);
+ maModel.setData(areaData);
+ areaData.each(function(idx) {
+ var points4 = map(dimPermutations, function(dim) {
+ return getSingleMarkerEndPoint(areaData, idx, dim, seriesModel, api);
+ });
+ var xAxisScale = coordSys.getAxis("x").scale;
+ var yAxisScale = coordSys.getAxis("y").scale;
+ var xAxisExtent = xAxisScale.getExtent();
+ var yAxisExtent = yAxisScale.getExtent();
+ var xPointExtent = [xAxisScale.parse(areaData.get("x0", idx)), xAxisScale.parse(areaData.get("x1", idx))];
+ var yPointExtent = [yAxisScale.parse(areaData.get("y0", idx)), yAxisScale.parse(areaData.get("y1", idx))];
+ asc(xPointExtent);
+ asc(yPointExtent);
+ var overlapped = !(xAxisExtent[0] > xPointExtent[1] || xAxisExtent[1] < xPointExtent[0] || yAxisExtent[0] > yPointExtent[1] || yAxisExtent[1] < yPointExtent[0]);
+ var allClipped = !overlapped;
+ areaData.setItemLayout(idx, {
+ points: points4,
+ allClipped
+ });
+ var style = areaData.getItemModel(idx).getModel("itemStyle").getItemStyle();
+ var color = getVisualFromData(seriesData, "color");
+ if (!style.fill) {
+ style.fill = color;
+ if (isString(style.fill)) {
+ style.fill = modifyAlpha(style.fill, 0.4);
+ }
+ }
+ if (!style.stroke) {
+ style.stroke = color;
+ }
+ areaData.setItemVisual(idx, "style", style);
+ });
+ areaData.diff(inner20(polygonGroup).data).add(function(idx) {
+ var layout5 = areaData.getItemLayout(idx);
+ if (!layout5.allClipped) {
+ var polygon = new Polygon_default({
+ shape: {
+ points: layout5.points
+ }
+ });
+ areaData.setItemGraphicEl(idx, polygon);
+ polygonGroup.group.add(polygon);
+ }
+ }).update(function(newIdx, oldIdx) {
+ var polygon = inner20(polygonGroup).data.getItemGraphicEl(oldIdx);
+ var layout5 = areaData.getItemLayout(newIdx);
+ if (!layout5.allClipped) {
+ if (polygon) {
+ updateProps(polygon, {
+ shape: {
+ points: layout5.points
+ }
+ }, maModel, newIdx);
+ } else {
+ polygon = new Polygon_default({
+ shape: {
+ points: layout5.points
+ }
+ });
+ }
+ areaData.setItemGraphicEl(newIdx, polygon);
+ polygonGroup.group.add(polygon);
+ } else if (polygon) {
+ polygonGroup.group.remove(polygon);
+ }
+ }).remove(function(idx) {
+ var polygon = inner20(polygonGroup).data.getItemGraphicEl(idx);
+ polygonGroup.group.remove(polygon);
+ }).execute();
+ areaData.eachItemGraphicEl(function(polygon, idx) {
+ var itemModel = areaData.getItemModel(idx);
+ var style = areaData.getItemVisual(idx, "style");
+ polygon.useStyle(areaData.getItemVisual(idx, "style"));
+ setLabelStyle(polygon, getLabelStatesModels(itemModel), {
+ labelFetcher: maModel,
+ labelDataIndex: idx,
+ defaultText: areaData.getName(idx) || "",
+ inheritColor: isString(style.fill) ? modifyAlpha(style.fill, 1) : "#000"
+ });
+ setStatesStylesFromModel(polygon, itemModel);
+ toggleHoverEmphasis(polygon, null, null, itemModel.get(["emphasis", "disabled"]));
+ getECData(polygon).dataModel = maModel;
+ });
+ inner20(polygonGroup).data = areaData;
+ polygonGroup.group.silent = maModel.get("silent") || seriesModel.get("silent");
+ };
+ MarkAreaView2.type = "markArea";
+ return MarkAreaView2;
+}(MarkerView_default);
+function createList3(coordSys, seriesModel, maModel) {
+ var areaData;
+ var dataDims;
+ var dims = ["x0", "y0", "x1", "y1"];
+ if (coordSys) {
+ var coordDimsInfos_1 = map(coordSys && coordSys.dimensions, function(coordDim) {
+ var data = seriesModel.getData();
+ var info = data.getDimensionInfo(data.mapDimension(coordDim)) || {};
+ return extend(extend({}, info), {
+ name: coordDim,
+ ordinalMeta: null
+ });
+ });
+ dataDims = map(dims, function(dim, idx) {
+ return {
+ name: dim,
+ type: coordDimsInfos_1[idx % 2].type
+ };
+ });
+ areaData = new SeriesData_default(dataDims, maModel);
+ } else {
+ dataDims = [{
+ name: "value",
+ type: "float"
+ }];
+ areaData = new SeriesData_default(dataDims, maModel);
+ }
+ var optData = map(maModel.get("data"), curry(markAreaTransform, seriesModel, coordSys, maModel));
+ if (coordSys) {
+ optData = filter(optData, curry(markAreaFilter, coordSys));
+ }
+ var dimValueGetter = coordSys ? function(item, dimName, dataIndex, dimIndex) {
+ var rawVal = item.coord[Math.floor(dimIndex / 2)][dimIndex % 2];
+ return parseDataValue(rawVal, dataDims[dimIndex]);
+ } : function(item, dimName, dataIndex, dimIndex) {
+ return parseDataValue(item.value, dataDims[dimIndex]);
+ };
+ areaData.initData(optData, null, dimValueGetter);
+ areaData.hasItemOption = true;
+ return areaData;
+}
+var MarkAreaView_default = MarkAreaView;
+
+// node_modules/echarts/lib/component/marker/installMarkArea.js
+function install43(registers) {
+ registers.registerComponentModel(MarkAreaModel_default);
+ registers.registerComponentView(MarkAreaView_default);
+ registers.registerPreprocessor(function(opt) {
+ if (checkMarkerInSeries(opt.series, "markArea")) {
+ opt.markArea = opt.markArea || {};
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/legend/LegendModel.js
+var getDefaultSelectorOptions = function(ecModel, type) {
+ if (type === "all") {
+ return {
+ type: "all",
+ title: ecModel.getLocaleModel().get(["legend", "selector", "all"])
+ };
+ } else if (type === "inverse") {
+ return {
+ type: "inverse",
+ title: ecModel.getLocaleModel().get(["legend", "selector", "inverse"])
+ };
+ }
+};
+var LegendModel = function(_super) {
+ __extends(LegendModel2, _super);
+ function LegendModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = LegendModel2.type;
+ _this.layoutMode = {
+ type: "box",
+ ignoreSize: true
+ };
+ return _this;
+ }
+ LegendModel2.prototype.init = function(option, parentModel, ecModel) {
+ this.mergeDefaultAndTheme(option, ecModel);
+ option.selected = option.selected || {};
+ this._updateSelector(option);
+ };
+ LegendModel2.prototype.mergeOption = function(option, ecModel) {
+ _super.prototype.mergeOption.call(this, option, ecModel);
+ this._updateSelector(option);
+ };
+ LegendModel2.prototype._updateSelector = function(option) {
+ var selector2 = option.selector;
+ var ecModel = this.ecModel;
+ if (selector2 === true) {
+ selector2 = option.selector = ["all", "inverse"];
+ }
+ if (isArray(selector2)) {
+ each(selector2, function(item, index) {
+ isString(item) && (item = {
+ type: item
+ });
+ selector2[index] = merge(item, getDefaultSelectorOptions(ecModel, item.type));
+ });
+ }
+ };
+ LegendModel2.prototype.optionUpdated = function() {
+ this._updateData(this.ecModel);
+ var legendData = this._data;
+ if (legendData[0] && this.get("selectedMode") === "single") {
+ var hasSelected = false;
+ for (var i = 0; i < legendData.length; i++) {
+ var name_1 = legendData[i].get("name");
+ if (this.isSelected(name_1)) {
+ this.select(name_1);
+ hasSelected = true;
+ break;
+ }
+ }
+ !hasSelected && this.select(legendData[0].get("name"));
+ }
+ };
+ LegendModel2.prototype._updateData = function(ecModel) {
+ var potentialData = [];
+ var availableNames = [];
+ ecModel.eachRawSeries(function(seriesModel) {
+ var seriesName = seriesModel.name;
+ availableNames.push(seriesName);
+ var isPotential;
+ if (seriesModel.legendVisualProvider) {
+ var provider = seriesModel.legendVisualProvider;
+ var names = provider.getAllNames();
+ if (!ecModel.isSeriesFiltered(seriesModel)) {
+ availableNames = availableNames.concat(names);
+ }
+ if (names.length) {
+ potentialData = potentialData.concat(names);
+ } else {
+ isPotential = true;
+ }
+ } else {
+ isPotential = true;
+ }
+ if (isPotential && isNameSpecified(seriesModel)) {
+ potentialData.push(seriesModel.name);
+ }
+ });
+ this._availableNames = availableNames;
+ var rawData = this.get("data") || potentialData;
+ var legendNameMap = createHashMap();
+ var legendData = map(rawData, function(dataItem) {
+ if (isString(dataItem) || isNumber(dataItem)) {
+ dataItem = {
+ name: dataItem
+ };
+ }
+ if (legendNameMap.get(dataItem.name)) {
+ return null;
+ }
+ legendNameMap.set(dataItem.name, true);
+ return new Model_default(dataItem, this, this.ecModel);
+ }, this);
+ this._data = filter(legendData, function(item) {
+ return !!item;
+ });
+ };
+ LegendModel2.prototype.getData = function() {
+ return this._data;
+ };
+ LegendModel2.prototype.select = function(name) {
+ var selected = this.option.selected;
+ var selectedMode = this.get("selectedMode");
+ if (selectedMode === "single") {
+ var data = this._data;
+ each(data, function(dataItem) {
+ selected[dataItem.get("name")] = false;
+ });
+ }
+ selected[name] = true;
+ };
+ LegendModel2.prototype.unSelect = function(name) {
+ if (this.get("selectedMode") !== "single") {
+ this.option.selected[name] = false;
+ }
+ };
+ LegendModel2.prototype.toggleSelected = function(name) {
+ var selected = this.option.selected;
+ if (!selected.hasOwnProperty(name)) {
+ selected[name] = true;
+ }
+ this[selected[name] ? "unSelect" : "select"](name);
+ };
+ LegendModel2.prototype.allSelect = function() {
+ var data = this._data;
+ var selected = this.option.selected;
+ each(data, function(dataItem) {
+ selected[dataItem.get("name", true)] = true;
+ });
+ };
+ LegendModel2.prototype.inverseSelect = function() {
+ var data = this._data;
+ var selected = this.option.selected;
+ each(data, function(dataItem) {
+ var name = dataItem.get("name", true);
+ if (!selected.hasOwnProperty(name)) {
+ selected[name] = true;
+ }
+ selected[name] = !selected[name];
+ });
+ };
+ LegendModel2.prototype.isSelected = function(name) {
+ var selected = this.option.selected;
+ return !(selected.hasOwnProperty(name) && !selected[name]) && indexOf(this._availableNames, name) >= 0;
+ };
+ LegendModel2.prototype.getOrient = function() {
+ return this.get("orient") === "vertical" ? {
+ index: 1,
+ name: "vertical"
+ } : {
+ index: 0,
+ name: "horizontal"
+ };
+ };
+ LegendModel2.type = "legend.plain";
+ LegendModel2.dependencies = ["series"];
+ LegendModel2.defaultOption = {
+ z: 4,
+ show: true,
+ orient: "horizontal",
+ left: "center",
+ top: 0,
+ align: "auto",
+ backgroundColor: "rgba(0,0,0,0)",
+ borderColor: "#ccc",
+ borderRadius: 0,
+ borderWidth: 0,
+ padding: 5,
+ itemGap: 10,
+ itemWidth: 25,
+ itemHeight: 14,
+ symbolRotate: "inherit",
+ symbolKeepAspect: true,
+ inactiveColor: "#ccc",
+ inactiveBorderColor: "#ccc",
+ inactiveBorderWidth: "auto",
+ itemStyle: {
+ color: "inherit",
+ opacity: "inherit",
+ borderColor: "inherit",
+ borderWidth: "auto",
+ borderCap: "inherit",
+ borderJoin: "inherit",
+ borderDashOffset: "inherit",
+ borderMiterLimit: "inherit"
+ },
+ lineStyle: {
+ width: "auto",
+ color: "inherit",
+ inactiveColor: "#ccc",
+ inactiveWidth: 2,
+ opacity: "inherit",
+ type: "inherit",
+ cap: "inherit",
+ join: "inherit",
+ dashOffset: "inherit",
+ miterLimit: "inherit"
+ },
+ textStyle: {
+ color: "#333"
+ },
+ selectedMode: true,
+ selector: false,
+ selectorLabel: {
+ show: true,
+ borderRadius: 10,
+ padding: [3, 5, 3, 5],
+ fontSize: 12,
+ fontFamily: "sans-serif",
+ color: "#666",
+ borderWidth: 1,
+ borderColor: "#666"
+ },
+ emphasis: {
+ selectorLabel: {
+ show: true,
+ color: "#eee",
+ backgroundColor: "#666"
+ }
+ },
+ selectorPosition: "auto",
+ selectorItemGap: 7,
+ selectorButtonGap: 10,
+ tooltip: {
+ show: false
+ }
+ };
+ return LegendModel2;
+}(Component_default);
+var LegendModel_default = LegendModel;
+
+// node_modules/echarts/lib/component/legend/LegendView.js
+var curry2 = curry;
+var each13 = each;
+var Group3 = Group_default;
+var LegendView = function(_super) {
+ __extends(LegendView2, _super);
+ function LegendView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = LegendView2.type;
+ _this.newlineDisabled = false;
+ return _this;
+ }
+ LegendView2.prototype.init = function() {
+ this.group.add(this._contentGroup = new Group3());
+ this.group.add(this._selectorGroup = new Group3());
+ this._isFirstRender = true;
+ };
+ LegendView2.prototype.getContentGroup = function() {
+ return this._contentGroup;
+ };
+ LegendView2.prototype.getSelectorGroup = function() {
+ return this._selectorGroup;
+ };
+ LegendView2.prototype.render = function(legendModel, ecModel, api) {
+ var isFirstRender = this._isFirstRender;
+ this._isFirstRender = false;
+ this.resetInner();
+ if (!legendModel.get("show", true)) {
+ return;
+ }
+ var itemAlign = legendModel.get("align");
+ var orient = legendModel.get("orient");
+ if (!itemAlign || itemAlign === "auto") {
+ itemAlign = legendModel.get("left") === "right" && orient === "vertical" ? "right" : "left";
+ }
+ var selector2 = legendModel.get("selector", true);
+ var selectorPosition = legendModel.get("selectorPosition", true);
+ if (selector2 && (!selectorPosition || selectorPosition === "auto")) {
+ selectorPosition = orient === "horizontal" ? "end" : "start";
+ }
+ this.renderInner(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition);
+ var positionInfo = legendModel.getBoxLayoutParams();
+ var viewportSize = {
+ width: api.getWidth(),
+ height: api.getHeight()
+ };
+ var padding = legendModel.get("padding");
+ var maxSize = getLayoutRect(positionInfo, viewportSize, padding);
+ var mainRect = this.layoutInner(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition);
+ var layoutRect = getLayoutRect(defaults({
+ width: mainRect.width,
+ height: mainRect.height
+ }, positionInfo), viewportSize, padding);
+ this.group.x = layoutRect.x - mainRect.x;
+ this.group.y = layoutRect.y - mainRect.y;
+ this.group.markRedraw();
+ this.group.add(this._backgroundEl = makeBackground(mainRect, legendModel));
+ };
+ LegendView2.prototype.resetInner = function() {
+ this.getContentGroup().removeAll();
+ this._backgroundEl && this.group.remove(this._backgroundEl);
+ this.getSelectorGroup().removeAll();
+ };
+ LegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) {
+ var contentGroup = this.getContentGroup();
+ var legendDrawnMap = createHashMap();
+ var selectMode = legendModel.get("selectedMode");
+ var excludeSeriesId = [];
+ ecModel.eachRawSeries(function(seriesModel) {
+ !seriesModel.get("legendHoverLink") && excludeSeriesId.push(seriesModel.id);
+ });
+ each13(legendModel.getData(), function(legendItemModel, dataIndex) {
+ var name = legendItemModel.get("name");
+ if (!this.newlineDisabled && (name === "" || name === "\n")) {
+ var g = new Group3();
+ g.newline = true;
+ contentGroup.add(g);
+ return;
+ }
+ var seriesModel = ecModel.getSeriesByName(name)[0];
+ if (legendDrawnMap.get(name)) {
+ return;
+ }
+ if (seriesModel) {
+ var data = seriesModel.getData();
+ var lineVisualStyle = data.getVisual("legendLineStyle") || {};
+ var legendIcon = data.getVisual("legendIcon");
+ var style = data.getVisual("style");
+ var itemGroup = this._createItem(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, style, legendIcon, selectMode, api);
+ itemGroup.on("click", curry2(dispatchSelectAction, name, null, api, excludeSeriesId)).on("mouseover", curry2(dispatchHighlightAction, seriesModel.name, null, api, excludeSeriesId)).on("mouseout", curry2(dispatchDownplayAction, seriesModel.name, null, api, excludeSeriesId));
+ if (ecModel.ssr) {
+ itemGroup.eachChild(function(child) {
+ var ecData = getECData(child);
+ ecData.seriesIndex = seriesModel.seriesIndex;
+ ecData.dataIndex = dataIndex;
+ ecData.ssrType = "legend";
+ });
+ }
+ legendDrawnMap.set(name, true);
+ } else {
+ ecModel.eachRawSeries(function(seriesModel2) {
+ if (legendDrawnMap.get(name)) {
+ return;
+ }
+ if (seriesModel2.legendVisualProvider) {
+ var provider = seriesModel2.legendVisualProvider;
+ if (!provider.containName(name)) {
+ return;
+ }
+ var idx = provider.indexOfName(name);
+ var style2 = provider.getItemVisual(idx, "style");
+ var legendIcon2 = provider.getItemVisual(idx, "legendIcon");
+ var colorArr = parse(style2.fill);
+ if (colorArr && colorArr[3] === 0) {
+ colorArr[3] = 0.2;
+ style2 = extend(extend({}, style2), {
+ fill: stringify(colorArr, "rgba")
+ });
+ }
+ var itemGroup2 = this._createItem(seriesModel2, name, dataIndex, legendItemModel, legendModel, itemAlign, {}, style2, legendIcon2, selectMode, api);
+ itemGroup2.on("click", curry2(dispatchSelectAction, null, name, api, excludeSeriesId)).on("mouseover", curry2(dispatchHighlightAction, null, name, api, excludeSeriesId)).on("mouseout", curry2(dispatchDownplayAction, null, name, api, excludeSeriesId));
+ if (ecModel.ssr) {
+ itemGroup2.eachChild(function(child) {
+ var ecData = getECData(child);
+ ecData.seriesIndex = seriesModel2.seriesIndex;
+ ecData.dataIndex = dataIndex;
+ ecData.ssrType = "legend";
+ });
+ }
+ legendDrawnMap.set(name, true);
+ }
+ }, this);
+ }
+ if (true) {
+ if (!legendDrawnMap.get(name)) {
+ console.warn(name + " series not exists. Legend data should be same with series name or data name.");
+ }
+ }
+ }, this);
+ if (selector2) {
+ this._createSelector(selector2, legendModel, api, orient, selectorPosition);
+ }
+ };
+ LegendView2.prototype._createSelector = function(selector2, legendModel, api, orient, selectorPosition) {
+ var selectorGroup = this.getSelectorGroup();
+ each13(selector2, function createSelectorButton(selectorItem) {
+ var type = selectorItem.type;
+ var labelText = new Text_default({
+ style: {
+ x: 0,
+ y: 0,
+ align: "center",
+ verticalAlign: "middle"
+ },
+ onclick: function() {
+ api.dispatchAction({
+ type: type === "all" ? "legendAllSelect" : "legendInverseSelect",
+ legendId: legendModel.id
+ });
+ }
+ });
+ selectorGroup.add(labelText);
+ var labelModel = legendModel.getModel("selectorLabel");
+ var emphasisLabelModel = legendModel.getModel(["emphasis", "selectorLabel"]);
+ setLabelStyle(labelText, {
+ normal: labelModel,
+ emphasis: emphasisLabelModel
+ }, {
+ defaultText: selectorItem.title
+ });
+ enableHoverEmphasis(labelText);
+ });
+ };
+ LegendView2.prototype._createItem = function(seriesModel, name, dataIndex, legendItemModel, legendModel, itemAlign, lineVisualStyle, itemVisualStyle, legendIcon, selectMode, api) {
+ var drawType = seriesModel.visualDrawType;
+ var itemWidth = legendModel.get("itemWidth");
+ var itemHeight = legendModel.get("itemHeight");
+ var isSelected = legendModel.isSelected(name);
+ var iconRotate = legendItemModel.get("symbolRotate");
+ var symbolKeepAspect = legendItemModel.get("symbolKeepAspect");
+ var legendIconType = legendItemModel.get("icon");
+ legendIcon = legendIconType || legendIcon || "roundRect";
+ var style = getLegendStyle(legendIcon, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api);
+ var itemGroup = new Group3();
+ var textStyleModel = legendItemModel.getModel("textStyle");
+ if (isFunction(seriesModel.getLegendIcon) && (!legendIconType || legendIconType === "inherit")) {
+ itemGroup.add(seriesModel.getLegendIcon({
+ itemWidth,
+ itemHeight,
+ icon: legendIcon,
+ iconRotate,
+ itemStyle: style.itemStyle,
+ lineStyle: style.lineStyle,
+ symbolKeepAspect
+ }));
+ } else {
+ var rotate2 = legendIconType === "inherit" && seriesModel.getData().getVisual("symbol") ? iconRotate === "inherit" ? seriesModel.getData().getVisual("symbolRotate") : iconRotate : 0;
+ itemGroup.add(getDefaultLegendIcon({
+ itemWidth,
+ itemHeight,
+ icon: legendIcon,
+ iconRotate: rotate2,
+ itemStyle: style.itemStyle,
+ lineStyle: style.lineStyle,
+ symbolKeepAspect
+ }));
+ }
+ var textX = itemAlign === "left" ? itemWidth + 5 : -5;
+ var textAlign = itemAlign;
+ var formatter = legendModel.get("formatter");
+ var content = name;
+ if (isString(formatter) && formatter) {
+ content = formatter.replace("{name}", name != null ? name : "");
+ } else if (isFunction(formatter)) {
+ content = formatter(name);
+ }
+ var textColor = isSelected ? textStyleModel.getTextColor() : legendItemModel.get("inactiveColor");
+ itemGroup.add(new Text_default({
+ style: createTextStyle(textStyleModel, {
+ text: content,
+ x: textX,
+ y: itemHeight / 2,
+ fill: textColor,
+ align: textAlign,
+ verticalAlign: "middle"
+ }, {
+ inheritColor: textColor
+ })
+ }));
+ var hitRect = new Rect_default({
+ shape: itemGroup.getBoundingRect(),
+ style: {
+ fill: "transparent"
+ }
+ });
+ var tooltipModel = legendItemModel.getModel("tooltip");
+ if (tooltipModel.get("show")) {
+ setTooltipConfig({
+ el: hitRect,
+ componentModel: legendModel,
+ itemName: name,
+ itemTooltipOption: tooltipModel.option
+ });
+ }
+ itemGroup.add(hitRect);
+ itemGroup.eachChild(function(child) {
+ child.silent = true;
+ });
+ hitRect.silent = !selectMode;
+ this.getContentGroup().add(itemGroup);
+ enableHoverEmphasis(itemGroup);
+ itemGroup.__legendDataIndex = dataIndex;
+ return itemGroup;
+ };
+ LegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) {
+ var contentGroup = this.getContentGroup();
+ var selectorGroup = this.getSelectorGroup();
+ box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), maxSize.width, maxSize.height);
+ var contentRect = contentGroup.getBoundingRect();
+ var contentPos = [-contentRect.x, -contentRect.y];
+ selectorGroup.markRedraw();
+ contentGroup.markRedraw();
+ if (selector2) {
+ box(
+ "horizontal",
+ selectorGroup,
+ legendModel.get("selectorItemGap", true)
+ );
+ var selectorRect = selectorGroup.getBoundingRect();
+ var selectorPos = [-selectorRect.x, -selectorRect.y];
+ var selectorButtonGap = legendModel.get("selectorButtonGap", true);
+ var orientIdx = legendModel.getOrient().index;
+ var wh = orientIdx === 0 ? "width" : "height";
+ var hw = orientIdx === 0 ? "height" : "width";
+ var yx = orientIdx === 0 ? "y" : "x";
+ if (selectorPosition === "end") {
+ selectorPos[orientIdx] += contentRect[wh] + selectorButtonGap;
+ } else {
+ contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;
+ }
+ selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;
+ selectorGroup.x = selectorPos[0];
+ selectorGroup.y = selectorPos[1];
+ contentGroup.x = contentPos[0];
+ contentGroup.y = contentPos[1];
+ var mainRect = {
+ x: 0,
+ y: 0
+ };
+ mainRect[wh] = contentRect[wh] + selectorButtonGap + selectorRect[wh];
+ mainRect[hw] = Math.max(contentRect[hw], selectorRect[hw]);
+ mainRect[yx] = Math.min(0, selectorRect[yx] + selectorPos[1 - orientIdx]);
+ return mainRect;
+ } else {
+ contentGroup.x = contentPos[0];
+ contentGroup.y = contentPos[1];
+ return this.group.getBoundingRect();
+ }
+ };
+ LegendView2.prototype.remove = function() {
+ this.getContentGroup().removeAll();
+ this._isFirstRender = true;
+ };
+ LegendView2.type = "legend.plain";
+ return LegendView2;
+}(Component_default2);
+function getLegendStyle(iconType, legendItemModel, lineVisualStyle, itemVisualStyle, drawType, isSelected, api) {
+ function handleCommonProps(style, visualStyle) {
+ if (style.lineWidth === "auto") {
+ style.lineWidth = visualStyle.lineWidth > 0 ? 2 : 0;
+ }
+ each13(style, function(propVal, propName) {
+ style[propName] === "inherit" && (style[propName] = visualStyle[propName]);
+ });
+ }
+ var itemStyleModel = legendItemModel.getModel("itemStyle");
+ var itemStyle = itemStyleModel.getItemStyle();
+ var iconBrushType = iconType.lastIndexOf("empty", 0) === 0 ? "fill" : "stroke";
+ var decalStyle = itemStyleModel.getShallow("decal");
+ itemStyle.decal = !decalStyle || decalStyle === "inherit" ? itemVisualStyle.decal : createOrUpdatePatternFromDecal(decalStyle, api);
+ if (itemStyle.fill === "inherit") {
+ itemStyle.fill = itemVisualStyle[drawType];
+ }
+ if (itemStyle.stroke === "inherit") {
+ itemStyle.stroke = itemVisualStyle[iconBrushType];
+ }
+ if (itemStyle.opacity === "inherit") {
+ itemStyle.opacity = (drawType === "fill" ? itemVisualStyle : lineVisualStyle).opacity;
+ }
+ handleCommonProps(itemStyle, itemVisualStyle);
+ var legendLineModel = legendItemModel.getModel("lineStyle");
+ var lineStyle = legendLineModel.getLineStyle();
+ handleCommonProps(lineStyle, lineVisualStyle);
+ itemStyle.fill === "auto" && (itemStyle.fill = itemVisualStyle.fill);
+ itemStyle.stroke === "auto" && (itemStyle.stroke = itemVisualStyle.fill);
+ lineStyle.stroke === "auto" && (lineStyle.stroke = itemVisualStyle.fill);
+ if (!isSelected) {
+ var borderWidth = legendItemModel.get("inactiveBorderWidth");
+ var visualHasBorder = itemStyle[iconBrushType];
+ itemStyle.lineWidth = borderWidth === "auto" ? itemVisualStyle.lineWidth > 0 && visualHasBorder ? 2 : 0 : itemStyle.lineWidth;
+ itemStyle.fill = legendItemModel.get("inactiveColor");
+ itemStyle.stroke = legendItemModel.get("inactiveBorderColor");
+ lineStyle.stroke = legendLineModel.get("inactiveColor");
+ lineStyle.lineWidth = legendLineModel.get("inactiveWidth");
+ }
+ return {
+ itemStyle,
+ lineStyle
+ };
+}
+function getDefaultLegendIcon(opt) {
+ var symboType = opt.icon || "roundRect";
+ var icon = createSymbol(symboType, 0, 0, opt.itemWidth, opt.itemHeight, opt.itemStyle.fill, opt.symbolKeepAspect);
+ icon.setStyle(opt.itemStyle);
+ icon.rotation = (opt.iconRotate || 0) * Math.PI / 180;
+ icon.setOrigin([opt.itemWidth / 2, opt.itemHeight / 2]);
+ if (symboType.indexOf("empty") > -1) {
+ icon.style.stroke = icon.style.fill;
+ icon.style.fill = "#fff";
+ icon.style.lineWidth = 2;
+ }
+ return icon;
+}
+function dispatchSelectAction(seriesName, dataName, api, excludeSeriesId) {
+ dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId);
+ api.dispatchAction({
+ type: "legendToggleSelect",
+ name: seriesName != null ? seriesName : dataName
+ });
+ dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);
+}
+function isUseHoverLayer(api) {
+ var list = api.getZr().storage.getDisplayList();
+ var emphasisState;
+ var i = 0;
+ var len2 = list.length;
+ while (i < len2 && !(emphasisState = list[i].states.emphasis)) {
+ i++;
+ }
+ return emphasisState && emphasisState.hoverLayer;
+}
+function dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId) {
+ if (!isUseHoverLayer(api)) {
+ api.dispatchAction({
+ type: "highlight",
+ seriesName,
+ name: dataName,
+ excludeSeriesId
+ });
+ }
+}
+function dispatchDownplayAction(seriesName, dataName, api, excludeSeriesId) {
+ if (!isUseHoverLayer(api)) {
+ api.dispatchAction({
+ type: "downplay",
+ seriesName,
+ name: dataName,
+ excludeSeriesId
+ });
+ }
+}
+var LegendView_default = LegendView;
+
+// node_modules/echarts/lib/component/legend/legendFilter.js
+function legendFilter(ecModel) {
+ var legendModels = ecModel.findComponents({
+ mainType: "legend"
+ });
+ if (legendModels && legendModels.length) {
+ ecModel.filterSeries(function(series) {
+ for (var i = 0; i < legendModels.length; i++) {
+ if (!legendModels[i].isSelected(series.name)) {
+ return false;
+ }
+ }
+ return true;
+ });
+ }
+}
+
+// node_modules/echarts/lib/component/legend/legendAction.js
+function legendSelectActionHandler(methodName, payload, ecModel) {
+ var isAllSelect = methodName === "allSelect" || methodName === "inverseSelect";
+ var selectedMap = {};
+ var actionLegendIndices = [];
+ ecModel.eachComponent({
+ mainType: "legend",
+ query: payload
+ }, function(legendModel) {
+ if (isAllSelect) {
+ legendModel[methodName]();
+ } else {
+ legendModel[methodName](payload.name);
+ }
+ makeSelectedMap(legendModel, selectedMap);
+ actionLegendIndices.push(legendModel.componentIndex);
+ });
+ var allSelectedMap = {};
+ ecModel.eachComponent("legend", function(legendModel) {
+ each(selectedMap, function(isSelected, name) {
+ legendModel[isSelected ? "select" : "unSelect"](name);
+ });
+ makeSelectedMap(legendModel, allSelectedMap);
+ });
+ return isAllSelect ? {
+ selected: allSelectedMap,
+ legendIndex: actionLegendIndices
+ } : {
+ name: payload.name,
+ selected: allSelectedMap
+ };
+}
+function makeSelectedMap(legendModel, out2) {
+ var selectedMap = out2 || {};
+ each(legendModel.getData(), function(model) {
+ var name = model.get("name");
+ if (name === "\n" || name === "") {
+ return;
+ }
+ var isItemSelected = legendModel.isSelected(name);
+ if (hasOwn(selectedMap, name)) {
+ selectedMap[name] = selectedMap[name] && isItemSelected;
+ } else {
+ selectedMap[name] = isItemSelected;
+ }
+ });
+ return selectedMap;
+}
+function installLegendAction(registers) {
+ registers.registerAction("legendToggleSelect", "legendselectchanged", curry(legendSelectActionHandler, "toggleSelected"));
+ registers.registerAction("legendAllSelect", "legendselectall", curry(legendSelectActionHandler, "allSelect"));
+ registers.registerAction("legendInverseSelect", "legendinverseselect", curry(legendSelectActionHandler, "inverseSelect"));
+ registers.registerAction("legendSelect", "legendselected", curry(legendSelectActionHandler, "select"));
+ registers.registerAction("legendUnSelect", "legendunselected", curry(legendSelectActionHandler, "unSelect"));
+}
+
+// node_modules/echarts/lib/component/legend/installLegendPlain.js
+function install44(registers) {
+ registers.registerComponentModel(LegendModel_default);
+ registers.registerComponentView(LegendView_default);
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.SERIES_FILTER, legendFilter);
+ registers.registerSubTypeDefaulter("legend", function() {
+ return "plain";
+ });
+ installLegendAction(registers);
+}
+
+// node_modules/echarts/lib/component/legend/ScrollableLegendModel.js
+var ScrollableLegendModel = function(_super) {
+ __extends(ScrollableLegendModel2, _super);
+ function ScrollableLegendModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ScrollableLegendModel2.type;
+ return _this;
+ }
+ ScrollableLegendModel2.prototype.setScrollDataIndex = function(scrollDataIndex) {
+ this.option.scrollDataIndex = scrollDataIndex;
+ };
+ ScrollableLegendModel2.prototype.init = function(option, parentModel, ecModel) {
+ var inputPositionParams = getLayoutParams(option);
+ _super.prototype.init.call(this, option, parentModel, ecModel);
+ mergeAndNormalizeLayoutParams2(this, option, inputPositionParams);
+ };
+ ScrollableLegendModel2.prototype.mergeOption = function(option, ecModel) {
+ _super.prototype.mergeOption.call(this, option, ecModel);
+ mergeAndNormalizeLayoutParams2(this, this.option, option);
+ };
+ ScrollableLegendModel2.type = "legend.scroll";
+ ScrollableLegendModel2.defaultOption = inheritDefaultOption(LegendModel_default.defaultOption, {
+ scrollDataIndex: 0,
+ pageButtonItemGap: 5,
+ pageButtonGap: null,
+ pageButtonPosition: "end",
+ pageFormatter: "{current}/{total}",
+ pageIcons: {
+ horizontal: ["M0,0L12,-10L12,10z", "M0,0L-12,-10L-12,10z"],
+ vertical: ["M0,0L20,0L10,-20z", "M0,0L20,0L10,20z"]
+ },
+ pageIconColor: "#2f4554",
+ pageIconInactiveColor: "#aaa",
+ pageIconSize: 15,
+ pageTextStyle: {
+ color: "#333"
+ },
+ animationDurationUpdate: 800
+ });
+ return ScrollableLegendModel2;
+}(LegendModel_default);
+function mergeAndNormalizeLayoutParams2(legendModel, target, raw) {
+ var orient = legendModel.getOrient();
+ var ignoreSize = [1, 1];
+ ignoreSize[orient.index] = 0;
+ mergeLayoutParam(target, raw, {
+ type: "box",
+ ignoreSize: !!ignoreSize
+ });
+}
+var ScrollableLegendModel_default = ScrollableLegendModel;
+
+// node_modules/echarts/lib/component/legend/ScrollableLegendView.js
+var Group4 = Group_default;
+var WH2 = ["width", "height"];
+var XY2 = ["x", "y"];
+var ScrollableLegendView = function(_super) {
+ __extends(ScrollableLegendView2, _super);
+ function ScrollableLegendView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ScrollableLegendView2.type;
+ _this.newlineDisabled = true;
+ _this._currentIndex = 0;
+ return _this;
+ }
+ ScrollableLegendView2.prototype.init = function() {
+ _super.prototype.init.call(this);
+ this.group.add(this._containerGroup = new Group4());
+ this._containerGroup.add(this.getContentGroup());
+ this.group.add(this._controllerGroup = new Group4());
+ };
+ ScrollableLegendView2.prototype.resetInner = function() {
+ _super.prototype.resetInner.call(this);
+ this._controllerGroup.removeAll();
+ this._containerGroup.removeClipPath();
+ this._containerGroup.__rectSize = null;
+ };
+ ScrollableLegendView2.prototype.renderInner = function(itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition) {
+ var self2 = this;
+ _super.prototype.renderInner.call(this, itemAlign, legendModel, ecModel, api, selector2, orient, selectorPosition);
+ var controllerGroup = this._controllerGroup;
+ var pageIconSize = legendModel.get("pageIconSize", true);
+ var pageIconSizeArr = isArray(pageIconSize) ? pageIconSize : [pageIconSize, pageIconSize];
+ createPageButton("pagePrev", 0);
+ var pageTextStyleModel = legendModel.getModel("pageTextStyle");
+ controllerGroup.add(new Text_default({
+ name: "pageText",
+ style: {
+ text: "xx/xx",
+ fill: pageTextStyleModel.getTextColor(),
+ font: pageTextStyleModel.getFont(),
+ verticalAlign: "middle",
+ align: "center"
+ },
+ silent: true
+ }));
+ createPageButton("pageNext", 1);
+ function createPageButton(name, iconIdx) {
+ var pageDataIndexName = name + "DataIndex";
+ var icon = createIcon(legendModel.get("pageIcons", true)[legendModel.getOrient().name][iconIdx], {
+ onclick: bind(self2._pageGo, self2, pageDataIndexName, legendModel, api)
+ }, {
+ x: -pageIconSizeArr[0] / 2,
+ y: -pageIconSizeArr[1] / 2,
+ width: pageIconSizeArr[0],
+ height: pageIconSizeArr[1]
+ });
+ icon.name = name;
+ controllerGroup.add(icon);
+ }
+ };
+ ScrollableLegendView2.prototype.layoutInner = function(legendModel, itemAlign, maxSize, isFirstRender, selector2, selectorPosition) {
+ var selectorGroup = this.getSelectorGroup();
+ var orientIdx = legendModel.getOrient().index;
+ var wh = WH2[orientIdx];
+ var xy = XY2[orientIdx];
+ var hw = WH2[1 - orientIdx];
+ var yx = XY2[1 - orientIdx];
+ selector2 && box(
+ "horizontal",
+ selectorGroup,
+ legendModel.get("selectorItemGap", true)
+ );
+ var selectorButtonGap = legendModel.get("selectorButtonGap", true);
+ var selectorRect = selectorGroup.getBoundingRect();
+ var selectorPos = [-selectorRect.x, -selectorRect.y];
+ var processMaxSize = clone(maxSize);
+ selector2 && (processMaxSize[wh] = maxSize[wh] - selectorRect[wh] - selectorButtonGap);
+ var mainRect = this._layoutContentAndController(legendModel, isFirstRender, processMaxSize, orientIdx, wh, hw, yx, xy);
+ if (selector2) {
+ if (selectorPosition === "end") {
+ selectorPos[orientIdx] += mainRect[wh] + selectorButtonGap;
+ } else {
+ var offset = selectorRect[wh] + selectorButtonGap;
+ selectorPos[orientIdx] -= offset;
+ mainRect[xy] -= offset;
+ }
+ mainRect[wh] += selectorRect[wh] + selectorButtonGap;
+ selectorPos[1 - orientIdx] += mainRect[yx] + mainRect[hw] / 2 - selectorRect[hw] / 2;
+ mainRect[hw] = Math.max(mainRect[hw], selectorRect[hw]);
+ mainRect[yx] = Math.min(mainRect[yx], selectorRect[yx] + selectorPos[1 - orientIdx]);
+ selectorGroup.x = selectorPos[0];
+ selectorGroup.y = selectorPos[1];
+ selectorGroup.markRedraw();
+ }
+ return mainRect;
+ };
+ ScrollableLegendView2.prototype._layoutContentAndController = function(legendModel, isFirstRender, maxSize, orientIdx, wh, hw, yx, xy) {
+ var contentGroup = this.getContentGroup();
+ var containerGroup = this._containerGroup;
+ var controllerGroup = this._controllerGroup;
+ box(legendModel.get("orient"), contentGroup, legendModel.get("itemGap"), !orientIdx ? null : maxSize.width, orientIdx ? null : maxSize.height);
+ box(
+ "horizontal",
+ controllerGroup,
+ legendModel.get("pageButtonItemGap", true)
+ );
+ var contentRect = contentGroup.getBoundingRect();
+ var controllerRect = controllerGroup.getBoundingRect();
+ var showController = this._showController = contentRect[wh] > maxSize[wh];
+ var contentPos = [-contentRect.x, -contentRect.y];
+ if (!isFirstRender) {
+ contentPos[orientIdx] = contentGroup[xy];
+ }
+ var containerPos = [0, 0];
+ var controllerPos = [-controllerRect.x, -controllerRect.y];
+ var pageButtonGap = retrieve2(legendModel.get("pageButtonGap", true), legendModel.get("itemGap", true));
+ if (showController) {
+ var pageButtonPosition = legendModel.get("pageButtonPosition", true);
+ if (pageButtonPosition === "end") {
+ controllerPos[orientIdx] += maxSize[wh] - controllerRect[wh];
+ } else {
+ containerPos[orientIdx] += controllerRect[wh] + pageButtonGap;
+ }
+ }
+ controllerPos[1 - orientIdx] += contentRect[hw] / 2 - controllerRect[hw] / 2;
+ contentGroup.setPosition(contentPos);
+ containerGroup.setPosition(containerPos);
+ controllerGroup.setPosition(controllerPos);
+ var mainRect = {
+ x: 0,
+ y: 0
+ };
+ mainRect[wh] = showController ? maxSize[wh] : contentRect[wh];
+ mainRect[hw] = Math.max(contentRect[hw], controllerRect[hw]);
+ mainRect[yx] = Math.min(0, controllerRect[yx] + controllerPos[1 - orientIdx]);
+ containerGroup.__rectSize = maxSize[wh];
+ if (showController) {
+ var clipShape = {
+ x: 0,
+ y: 0
+ };
+ clipShape[wh] = Math.max(maxSize[wh] - controllerRect[wh] - pageButtonGap, 0);
+ clipShape[hw] = mainRect[hw];
+ containerGroup.setClipPath(new Rect_default({
+ shape: clipShape
+ }));
+ containerGroup.__rectSize = clipShape[wh];
+ } else {
+ controllerGroup.eachChild(function(child) {
+ child.attr({
+ invisible: true,
+ silent: true
+ });
+ });
+ }
+ var pageInfo = this._getPageInfo(legendModel);
+ pageInfo.pageIndex != null && updateProps(
+ contentGroup,
+ {
+ x: pageInfo.contentPosition[0],
+ y: pageInfo.contentPosition[1]
+ },
+ showController ? legendModel : null
+ );
+ this._updatePageInfoView(legendModel, pageInfo);
+ return mainRect;
+ };
+ ScrollableLegendView2.prototype._pageGo = function(to, legendModel, api) {
+ var scrollDataIndex = this._getPageInfo(legendModel)[to];
+ scrollDataIndex != null && api.dispatchAction({
+ type: "legendScroll",
+ scrollDataIndex,
+ legendId: legendModel.id
+ });
+ };
+ ScrollableLegendView2.prototype._updatePageInfoView = function(legendModel, pageInfo) {
+ var controllerGroup = this._controllerGroup;
+ each(["pagePrev", "pageNext"], function(name) {
+ var key = name + "DataIndex";
+ var canJump = pageInfo[key] != null;
+ var icon = controllerGroup.childOfName(name);
+ if (icon) {
+ icon.setStyle("fill", canJump ? legendModel.get("pageIconColor", true) : legendModel.get("pageIconInactiveColor", true));
+ icon.cursor = canJump ? "pointer" : "default";
+ }
+ });
+ var pageText = controllerGroup.childOfName("pageText");
+ var pageFormatter = legendModel.get("pageFormatter");
+ var pageIndex = pageInfo.pageIndex;
+ var current = pageIndex != null ? pageIndex + 1 : 0;
+ var total = pageInfo.pageCount;
+ pageText && pageFormatter && pageText.setStyle("text", isString(pageFormatter) ? pageFormatter.replace("{current}", current == null ? "" : current + "").replace("{total}", total == null ? "" : total + "") : pageFormatter({
+ current,
+ total
+ }));
+ };
+ ScrollableLegendView2.prototype._getPageInfo = function(legendModel) {
+ var scrollDataIndex = legendModel.get("scrollDataIndex", true);
+ var contentGroup = this.getContentGroup();
+ var containerRectSize = this._containerGroup.__rectSize;
+ var orientIdx = legendModel.getOrient().index;
+ var wh = WH2[orientIdx];
+ var xy = XY2[orientIdx];
+ var targetItemIndex = this._findTargetItemIndex(scrollDataIndex);
+ var children = contentGroup.children();
+ var targetItem = children[targetItemIndex];
+ var itemCount = children.length;
+ var pCount = !itemCount ? 0 : 1;
+ var result = {
+ contentPosition: [contentGroup.x, contentGroup.y],
+ pageCount: pCount,
+ pageIndex: pCount - 1,
+ pagePrevDataIndex: null,
+ pageNextDataIndex: null
+ };
+ if (!targetItem) {
+ return result;
+ }
+ var targetItemInfo = getItemInfo(targetItem);
+ result.contentPosition[orientIdx] = -targetItemInfo.s;
+ for (var i = targetItemIndex + 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i <= itemCount; ++i) {
+ currItemInfo = getItemInfo(children[i]);
+ if (!currItemInfo && winEndItemInfo.e > winStartItemInfo.s + containerRectSize || currItemInfo && !intersect2(currItemInfo, winStartItemInfo.s)) {
+ if (winEndItemInfo.i > winStartItemInfo.i) {
+ winStartItemInfo = winEndItemInfo;
+ } else {
+ winStartItemInfo = currItemInfo;
+ }
+ if (winStartItemInfo) {
+ if (result.pageNextDataIndex == null) {
+ result.pageNextDataIndex = winStartItemInfo.i;
+ }
+ ++result.pageCount;
+ }
+ }
+ winEndItemInfo = currItemInfo;
+ }
+ for (var i = targetItemIndex - 1, winStartItemInfo = targetItemInfo, winEndItemInfo = targetItemInfo, currItemInfo = null; i >= -1; --i) {
+ currItemInfo = getItemInfo(children[i]);
+ if ((!currItemInfo || !intersect2(winEndItemInfo, currItemInfo.s)) && winStartItemInfo.i < winEndItemInfo.i) {
+ winEndItemInfo = winStartItemInfo;
+ if (result.pagePrevDataIndex == null) {
+ result.pagePrevDataIndex = winStartItemInfo.i;
+ }
+ ++result.pageCount;
+ ++result.pageIndex;
+ }
+ winStartItemInfo = currItemInfo;
+ }
+ return result;
+ function getItemInfo(el) {
+ if (el) {
+ var itemRect = el.getBoundingRect();
+ var start2 = itemRect[xy] + el[xy];
+ return {
+ s: start2,
+ e: start2 + itemRect[wh],
+ i: el.__legendDataIndex
+ };
+ }
+ }
+ function intersect2(itemInfo, winStart) {
+ return itemInfo.e >= winStart && itemInfo.s <= winStart + containerRectSize;
+ }
+ };
+ ScrollableLegendView2.prototype._findTargetItemIndex = function(targetDataIndex) {
+ if (!this._showController) {
+ return 0;
+ }
+ var index;
+ var contentGroup = this.getContentGroup();
+ var defaultIndex;
+ contentGroup.eachChild(function(child, idx) {
+ var legendDataIdx = child.__legendDataIndex;
+ if (defaultIndex == null && legendDataIdx != null) {
+ defaultIndex = idx;
+ }
+ if (legendDataIdx === targetDataIndex) {
+ index = idx;
+ }
+ });
+ return index != null ? index : defaultIndex;
+ };
+ ScrollableLegendView2.type = "legend.scroll";
+ return ScrollableLegendView2;
+}(LegendView_default);
+var ScrollableLegendView_default = ScrollableLegendView;
+
+// node_modules/echarts/lib/component/legend/scrollableLegendAction.js
+function installScrollableLegendAction(registers) {
+ registers.registerAction("legendScroll", "legendscroll", function(payload, ecModel) {
+ var scrollDataIndex = payload.scrollDataIndex;
+ scrollDataIndex != null && ecModel.eachComponent({
+ mainType: "legend",
+ subType: "scroll",
+ query: payload
+ }, function(legendModel) {
+ legendModel.setScrollDataIndex(scrollDataIndex);
+ });
+ });
+}
+
+// node_modules/echarts/lib/component/legend/installLegendScroll.js
+function install45(registers) {
+ use(install44);
+ registers.registerComponentModel(ScrollableLegendModel_default);
+ registers.registerComponentView(ScrollableLegendView_default);
+ installScrollableLegendAction(registers);
+}
+
+// node_modules/echarts/lib/component/legend/install.js
+function install46(registers) {
+ use(install44);
+ use(install45);
+}
+
+// node_modules/echarts/lib/component/dataZoom/InsideZoomModel.js
+var InsideZoomModel = function(_super) {
+ __extends(InsideZoomModel2, _super);
+ function InsideZoomModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = InsideZoomModel2.type;
+ return _this;
+ }
+ InsideZoomModel2.type = "dataZoom.inside";
+ InsideZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel_default.defaultOption, {
+ disabled: false,
+ zoomLock: false,
+ zoomOnMouseWheel: true,
+ moveOnMouseMove: true,
+ moveOnMouseWheel: false,
+ preventDefaultMouseMove: true
+ });
+ return InsideZoomModel2;
+}(DataZoomModel_default);
+var InsideZoomModel_default = InsideZoomModel;
+
+// node_modules/echarts/lib/component/dataZoom/roams.js
+var inner21 = makeInner();
+function setViewInfoToCoordSysRecord(api, dataZoomModel, getRange) {
+ inner21(api).coordSysRecordMap.each(function(coordSysRecord) {
+ var dzInfo = coordSysRecord.dataZoomInfoMap.get(dataZoomModel.uid);
+ if (dzInfo) {
+ dzInfo.getRange = getRange;
+ }
+ });
+}
+function disposeCoordSysRecordIfNeeded(api, dataZoomModel) {
+ var coordSysRecordMap = inner21(api).coordSysRecordMap;
+ var coordSysKeyArr = coordSysRecordMap.keys();
+ for (var i = 0; i < coordSysKeyArr.length; i++) {
+ var coordSysKey = coordSysKeyArr[i];
+ var coordSysRecord = coordSysRecordMap.get(coordSysKey);
+ var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;
+ if (dataZoomInfoMap) {
+ var dzUid = dataZoomModel.uid;
+ var dzInfo = dataZoomInfoMap.get(dzUid);
+ if (dzInfo) {
+ dataZoomInfoMap.removeKey(dzUid);
+ if (!dataZoomInfoMap.keys().length) {
+ disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);
+ }
+ }
+ }
+ }
+}
+function disposeCoordSysRecord(coordSysRecordMap, coordSysRecord) {
+ if (coordSysRecord) {
+ coordSysRecordMap.removeKey(coordSysRecord.model.uid);
+ var controller = coordSysRecord.controller;
+ controller && controller.dispose();
+ }
+}
+function createCoordSysRecord(api, coordSysModel) {
+ var coordSysRecord = {
+ model: coordSysModel,
+ containsPoint: curry(containsPoint, coordSysModel),
+ dispatchAction: curry(dispatchAction2, api),
+ dataZoomInfoMap: null,
+ controller: null
+ };
+ var controller = coordSysRecord.controller = new RoamController_default(api.getZr());
+ each(["pan", "zoom", "scrollMove"], function(eventName) {
+ controller.on(eventName, function(event) {
+ var batch = [];
+ coordSysRecord.dataZoomInfoMap.each(function(dzInfo) {
+ if (!event.isAvailableBehavior(dzInfo.model.option)) {
+ return;
+ }
+ var method = (dzInfo.getRange || {})[eventName];
+ var range = method && method(dzInfo.dzReferCoordSysInfo, coordSysRecord.model.mainType, coordSysRecord.controller, event);
+ !dzInfo.model.get("disabled", true) && range && batch.push({
+ dataZoomId: dzInfo.model.id,
+ start: range[0],
+ end: range[1]
+ });
+ });
+ batch.length && coordSysRecord.dispatchAction(batch);
+ });
+ });
+ return coordSysRecord;
+}
+function dispatchAction2(api, batch) {
+ if (!api.isDisposed()) {
+ api.dispatchAction({
+ type: "dataZoom",
+ animation: {
+ easing: "cubicOut",
+ duration: 100
+ },
+ batch
+ });
+ }
+}
+function containsPoint(coordSysModel, e2, x, y) {
+ return coordSysModel.coordinateSystem.containPoint([x, y]);
+}
+function mergeControllerParams(dataZoomInfoMap) {
+ var controlType;
+ var prefix = "type_";
+ var typePriority = {
+ "type_true": 2,
+ "type_move": 1,
+ "type_false": 0,
+ "type_undefined": -1
+ };
+ var preventDefaultMouseMove = true;
+ dataZoomInfoMap.each(function(dataZoomInfo) {
+ var dataZoomModel = dataZoomInfo.model;
+ var oneType = dataZoomModel.get("disabled", true) ? false : dataZoomModel.get("zoomLock", true) ? "move" : true;
+ if (typePriority[prefix + oneType] > typePriority[prefix + controlType]) {
+ controlType = oneType;
+ }
+ preventDefaultMouseMove = preventDefaultMouseMove && dataZoomModel.get("preventDefaultMouseMove", true);
+ });
+ return {
+ controlType,
+ opt: {
+ zoomOnMouseWheel: true,
+ moveOnMouseMove: true,
+ moveOnMouseWheel: true,
+ preventDefaultMouseMove: !!preventDefaultMouseMove
+ }
+ };
+}
+function installDataZoomRoamProcessor(registers) {
+ registers.registerProcessor(registers.PRIORITY.PROCESSOR.FILTER, function(ecModel, api) {
+ var apiInner = inner21(api);
+ var coordSysRecordMap = apiInner.coordSysRecordMap || (apiInner.coordSysRecordMap = createHashMap());
+ coordSysRecordMap.each(function(coordSysRecord) {
+ coordSysRecord.dataZoomInfoMap = null;
+ });
+ ecModel.eachComponent({
+ mainType: "dataZoom",
+ subType: "inside"
+ }, function(dataZoomModel) {
+ var dzReferCoordSysWrap = collectReferCoordSysModelInfo(dataZoomModel);
+ each(dzReferCoordSysWrap.infoList, function(dzCoordSysInfo) {
+ var coordSysUid = dzCoordSysInfo.model.uid;
+ var coordSysRecord = coordSysRecordMap.get(coordSysUid) || coordSysRecordMap.set(coordSysUid, createCoordSysRecord(api, dzCoordSysInfo.model));
+ var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap || (coordSysRecord.dataZoomInfoMap = createHashMap());
+ dataZoomInfoMap.set(dataZoomModel.uid, {
+ dzReferCoordSysInfo: dzCoordSysInfo,
+ model: dataZoomModel,
+ getRange: null
+ });
+ });
+ });
+ coordSysRecordMap.each(function(coordSysRecord) {
+ var controller = coordSysRecord.controller;
+ var firstDzInfo;
+ var dataZoomInfoMap = coordSysRecord.dataZoomInfoMap;
+ if (dataZoomInfoMap) {
+ var firstDzKey = dataZoomInfoMap.keys()[0];
+ if (firstDzKey != null) {
+ firstDzInfo = dataZoomInfoMap.get(firstDzKey);
+ }
+ }
+ if (!firstDzInfo) {
+ disposeCoordSysRecord(coordSysRecordMap, coordSysRecord);
+ return;
+ }
+ var controllerParams = mergeControllerParams(dataZoomInfoMap);
+ controller.enable(controllerParams.controlType, controllerParams.opt);
+ controller.setPointerChecker(coordSysRecord.containsPoint);
+ createOrUpdate(coordSysRecord, "dispatchAction", firstDzInfo.model.get("throttle", true), "fixRate");
+ });
+ });
+}
+
+// node_modules/echarts/lib/component/dataZoom/InsideZoomView.js
+var InsideZoomView = function(_super) {
+ __extends(InsideZoomView2, _super);
+ function InsideZoomView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "dataZoom.inside";
+ return _this;
+ }
+ InsideZoomView2.prototype.render = function(dataZoomModel, ecModel, api) {
+ _super.prototype.render.apply(this, arguments);
+ if (dataZoomModel.noTarget()) {
+ this._clear();
+ return;
+ }
+ this.range = dataZoomModel.getPercentRange();
+ setViewInfoToCoordSysRecord(api, dataZoomModel, {
+ pan: bind(getRangeHandlers.pan, this),
+ zoom: bind(getRangeHandlers.zoom, this),
+ scrollMove: bind(getRangeHandlers.scrollMove, this)
+ });
+ };
+ InsideZoomView2.prototype.dispose = function() {
+ this._clear();
+ _super.prototype.dispose.apply(this, arguments);
+ };
+ InsideZoomView2.prototype._clear = function() {
+ disposeCoordSysRecordIfNeeded(this.api, this.dataZoomModel);
+ this.range = null;
+ };
+ InsideZoomView2.type = "dataZoom.inside";
+ return InsideZoomView2;
+}(DataZoomView_default);
+var getRangeHandlers = {
+ zoom: function(coordSysInfo, coordSysMainType, controller, e2) {
+ var lastRange = this.range;
+ var range = lastRange.slice();
+ var axisModel = coordSysInfo.axisModels[0];
+ if (!axisModel) {
+ return;
+ }
+ var directionInfo = getDirectionInfo[coordSysMainType](null, [e2.originX, e2.originY], axisModel, controller, coordSysInfo);
+ var percentPoint = (directionInfo.signal > 0 ? directionInfo.pixelStart + directionInfo.pixelLength - directionInfo.pixel : directionInfo.pixel - directionInfo.pixelStart) / directionInfo.pixelLength * (range[1] - range[0]) + range[0];
+ var scale4 = Math.max(1 / e2.scale, 0);
+ range[0] = (range[0] - percentPoint) * scale4 + percentPoint;
+ range[1] = (range[1] - percentPoint) * scale4 + percentPoint;
+ var minMaxSpan = this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
+ sliderMove(0, range, [0, 100], 0, minMaxSpan.minSpan, minMaxSpan.maxSpan);
+ this.range = range;
+ if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {
+ return range;
+ }
+ },
+ pan: makeMover(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e2) {
+ var directionInfo = getDirectionInfo[coordSysMainType]([e2.oldX, e2.oldY], [e2.newX, e2.newY], axisModel, controller, coordSysInfo);
+ return directionInfo.signal * (range[1] - range[0]) * directionInfo.pixel / directionInfo.pixelLength;
+ }),
+ scrollMove: makeMover(function(range, axisModel, coordSysInfo, coordSysMainType, controller, e2) {
+ var directionInfo = getDirectionInfo[coordSysMainType]([0, 0], [e2.scrollDelta, e2.scrollDelta], axisModel, controller, coordSysInfo);
+ return directionInfo.signal * (range[1] - range[0]) * e2.scrollDelta;
+ })
+};
+function makeMover(getPercentDelta) {
+ return function(coordSysInfo, coordSysMainType, controller, e2) {
+ var lastRange = this.range;
+ var range = lastRange.slice();
+ var axisModel = coordSysInfo.axisModels[0];
+ if (!axisModel) {
+ return;
+ }
+ var percentDelta = getPercentDelta(range, axisModel, coordSysInfo, coordSysMainType, controller, e2);
+ sliderMove(percentDelta, range, [0, 100], "all");
+ this.range = range;
+ if (lastRange[0] !== range[0] || lastRange[1] !== range[1]) {
+ return range;
+ }
+ };
+}
+var getDirectionInfo = {
+ grid: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) {
+ var axis = axisModel.axis;
+ var ret = {};
+ var rect = coordSysInfo.model.coordinateSystem.getRect();
+ oldPoint = oldPoint || [0, 0];
+ if (axis.dim === "x") {
+ ret.pixel = newPoint[0] - oldPoint[0];
+ ret.pixelLength = rect.width;
+ ret.pixelStart = rect.x;
+ ret.signal = axis.inverse ? 1 : -1;
+ } else {
+ ret.pixel = newPoint[1] - oldPoint[1];
+ ret.pixelLength = rect.height;
+ ret.pixelStart = rect.y;
+ ret.signal = axis.inverse ? -1 : 1;
+ }
+ return ret;
+ },
+ polar: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) {
+ var axis = axisModel.axis;
+ var ret = {};
+ var polar = coordSysInfo.model.coordinateSystem;
+ var radiusExtent = polar.getRadiusAxis().getExtent();
+ var angleExtent = polar.getAngleAxis().getExtent();
+ oldPoint = oldPoint ? polar.pointToCoord(oldPoint) : [0, 0];
+ newPoint = polar.pointToCoord(newPoint);
+ if (axisModel.mainType === "radiusAxis") {
+ ret.pixel = newPoint[0] - oldPoint[0];
+ ret.pixelLength = radiusExtent[1] - radiusExtent[0];
+ ret.pixelStart = radiusExtent[0];
+ ret.signal = axis.inverse ? 1 : -1;
+ } else {
+ ret.pixel = newPoint[1] - oldPoint[1];
+ ret.pixelLength = angleExtent[1] - angleExtent[0];
+ ret.pixelStart = angleExtent[0];
+ ret.signal = axis.inverse ? -1 : 1;
+ }
+ return ret;
+ },
+ singleAxis: function(oldPoint, newPoint, axisModel, controller, coordSysInfo) {
+ var axis = axisModel.axis;
+ var rect = coordSysInfo.model.coordinateSystem.getRect();
+ var ret = {};
+ oldPoint = oldPoint || [0, 0];
+ if (axis.orient === "horizontal") {
+ ret.pixel = newPoint[0] - oldPoint[0];
+ ret.pixelLength = rect.width;
+ ret.pixelStart = rect.x;
+ ret.signal = axis.inverse ? 1 : -1;
+ } else {
+ ret.pixel = newPoint[1] - oldPoint[1];
+ ret.pixelLength = rect.height;
+ ret.pixelStart = rect.y;
+ ret.signal = axis.inverse ? -1 : 1;
+ }
+ return ret;
+ }
+};
+var InsideZoomView_default = InsideZoomView;
+
+// node_modules/echarts/lib/component/dataZoom/installDataZoomInside.js
+function install47(registers) {
+ installCommon(registers);
+ registers.registerComponentModel(InsideZoomModel_default);
+ registers.registerComponentView(InsideZoomView_default);
+ installDataZoomRoamProcessor(registers);
+}
+
+// node_modules/echarts/lib/component/dataZoom/SliderZoomModel.js
+var SliderZoomModel = function(_super) {
+ __extends(SliderZoomModel2, _super);
+ function SliderZoomModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SliderZoomModel2.type;
+ return _this;
+ }
+ SliderZoomModel2.type = "dataZoom.slider";
+ SliderZoomModel2.layoutMode = "box";
+ SliderZoomModel2.defaultOption = inheritDefaultOption(DataZoomModel_default.defaultOption, {
+ show: true,
+ right: "ph",
+ top: "ph",
+ width: "ph",
+ height: "ph",
+ left: null,
+ bottom: null,
+ borderColor: "#d2dbee",
+ borderRadius: 3,
+ backgroundColor: "rgba(47,69,84,0)",
+ dataBackground: {
+ lineStyle: {
+ color: "#d2dbee",
+ width: 0.5
+ },
+ areaStyle: {
+ color: "#d2dbee",
+ opacity: 0.2
+ }
+ },
+ selectedDataBackground: {
+ lineStyle: {
+ color: "#8fb0f7",
+ width: 0.5
+ },
+ areaStyle: {
+ color: "#8fb0f7",
+ opacity: 0.2
+ }
+ },
+ fillerColor: "rgba(135,175,274,0.2)",
+ handleIcon: "path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",
+ handleSize: "100%",
+ handleStyle: {
+ color: "#fff",
+ borderColor: "#ACB8D1"
+ },
+ moveHandleSize: 7,
+ moveHandleIcon: "path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",
+ moveHandleStyle: {
+ color: "#D2DBEE",
+ opacity: 0.7
+ },
+ showDetail: true,
+ showDataShadow: "auto",
+ realtime: true,
+ zoomLock: false,
+ textStyle: {
+ color: "#6E7079"
+ },
+ brushSelect: true,
+ brushStyle: {
+ color: "rgba(135,175,274,0.15)"
+ },
+ emphasis: {
+ handleLabel: {
+ show: true
+ },
+ handleStyle: {
+ borderColor: "#8FB0F7"
+ },
+ moveHandleStyle: {
+ color: "#8FB0F7"
+ }
+ }
+ });
+ return SliderZoomModel2;
+}(DataZoomModel_default);
+var SliderZoomModel_default = SliderZoomModel;
+
+// node_modules/echarts/lib/component/dataZoom/SliderZoomView.js
+var Rect3 = Rect_default;
+var DEFAULT_LOCATION_EDGE_GAP = 7;
+var DEFAULT_FRAME_BORDER_WIDTH = 1;
+var DEFAULT_FILLER_SIZE = 30;
+var DEFAULT_MOVE_HANDLE_SIZE = 7;
+var HORIZONTAL = "horizontal";
+var VERTICAL = "vertical";
+var LABEL_GAP = 5;
+var SHOW_DATA_SHADOW_SERIES_TYPE = ["line", "bar", "candlestick", "scatter"];
+var REALTIME_ANIMATION_CONFIG = {
+ easing: "cubicOut",
+ duration: 100,
+ delay: 0
+};
+var SliderZoomView = function(_super) {
+ __extends(SliderZoomView2, _super);
+ function SliderZoomView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = SliderZoomView2.type;
+ _this._displayables = {};
+ return _this;
+ }
+ SliderZoomView2.prototype.init = function(ecModel, api) {
+ this.api = api;
+ this._onBrush = bind(this._onBrush, this);
+ this._onBrushEnd = bind(this._onBrushEnd, this);
+ };
+ SliderZoomView2.prototype.render = function(dataZoomModel, ecModel, api, payload) {
+ _super.prototype.render.apply(this, arguments);
+ createOrUpdate(this, "_dispatchZoomAction", dataZoomModel.get("throttle"), "fixRate");
+ this._orient = dataZoomModel.getOrient();
+ if (dataZoomModel.get("show") === false) {
+ this.group.removeAll();
+ return;
+ }
+ if (dataZoomModel.noTarget()) {
+ this._clear();
+ this.group.removeAll();
+ return;
+ }
+ if (!payload || payload.type !== "dataZoom" || payload.from !== this.uid) {
+ this._buildView();
+ }
+ this._updateView();
+ };
+ SliderZoomView2.prototype.dispose = function() {
+ this._clear();
+ _super.prototype.dispose.apply(this, arguments);
+ };
+ SliderZoomView2.prototype._clear = function() {
+ clear(this, "_dispatchZoomAction");
+ var zr = this.api.getZr();
+ zr.off("mousemove", this._onBrush);
+ zr.off("mouseup", this._onBrushEnd);
+ };
+ SliderZoomView2.prototype._buildView = function() {
+ var thisGroup = this.group;
+ thisGroup.removeAll();
+ this._brushing = false;
+ this._displayables.brushRect = null;
+ this._resetLocation();
+ this._resetInterval();
+ var barGroup = this._displayables.sliderGroup = new Group_default();
+ this._renderBackground();
+ this._renderHandle();
+ this._renderDataShadow();
+ thisGroup.add(barGroup);
+ this._positionGroup();
+ };
+ SliderZoomView2.prototype._resetLocation = function() {
+ var dataZoomModel = this.dataZoomModel;
+ var api = this.api;
+ var showMoveHandle = dataZoomModel.get("brushSelect");
+ var moveHandleSize = showMoveHandle ? DEFAULT_MOVE_HANDLE_SIZE : 0;
+ var coordRect = this._findCoordRect();
+ var ecSize = {
+ width: api.getWidth(),
+ height: api.getHeight()
+ };
+ var positionInfo = this._orient === HORIZONTAL ? {
+ right: ecSize.width - coordRect.x - coordRect.width,
+ top: ecSize.height - DEFAULT_FILLER_SIZE - DEFAULT_LOCATION_EDGE_GAP - moveHandleSize,
+ width: coordRect.width,
+ height: DEFAULT_FILLER_SIZE
+ } : {
+ right: DEFAULT_LOCATION_EDGE_GAP,
+ top: coordRect.y,
+ width: DEFAULT_FILLER_SIZE,
+ height: coordRect.height
+ };
+ var layoutParams = getLayoutParams(dataZoomModel.option);
+ each(["right", "top", "width", "height"], function(name) {
+ if (layoutParams[name] === "ph") {
+ layoutParams[name] = positionInfo[name];
+ }
+ });
+ var layoutRect = getLayoutRect(layoutParams, ecSize);
+ this._location = {
+ x: layoutRect.x,
+ y: layoutRect.y
+ };
+ this._size = [layoutRect.width, layoutRect.height];
+ this._orient === VERTICAL && this._size.reverse();
+ };
+ SliderZoomView2.prototype._positionGroup = function() {
+ var thisGroup = this.group;
+ var location = this._location;
+ var orient = this._orient;
+ var targetAxisModel = this.dataZoomModel.getFirstTargetAxisModel();
+ var inverse = targetAxisModel && targetAxisModel.get("inverse");
+ var sliderGroup = this._displayables.sliderGroup;
+ var otherAxisInverse = (this._dataShadowInfo || {}).otherAxisInverse;
+ sliderGroup.attr(orient === HORIZONTAL && !inverse ? {
+ scaleY: otherAxisInverse ? 1 : -1,
+ scaleX: 1
+ } : orient === HORIZONTAL && inverse ? {
+ scaleY: otherAxisInverse ? 1 : -1,
+ scaleX: -1
+ } : orient === VERTICAL && !inverse ? {
+ scaleY: otherAxisInverse ? -1 : 1,
+ scaleX: 1,
+ rotation: Math.PI / 2
+ } : {
+ scaleY: otherAxisInverse ? -1 : 1,
+ scaleX: -1,
+ rotation: Math.PI / 2
+ });
+ var rect = thisGroup.getBoundingRect([sliderGroup]);
+ thisGroup.x = location.x - rect.x;
+ thisGroup.y = location.y - rect.y;
+ thisGroup.markRedraw();
+ };
+ SliderZoomView2.prototype._getViewExtent = function() {
+ return [0, this._size[0]];
+ };
+ SliderZoomView2.prototype._renderBackground = function() {
+ var dataZoomModel = this.dataZoomModel;
+ var size = this._size;
+ var barGroup = this._displayables.sliderGroup;
+ var brushSelect = dataZoomModel.get("brushSelect");
+ barGroup.add(new Rect3({
+ silent: true,
+ shape: {
+ x: 0,
+ y: 0,
+ width: size[0],
+ height: size[1]
+ },
+ style: {
+ fill: dataZoomModel.get("backgroundColor")
+ },
+ z2: -40
+ }));
+ var clickPanel = new Rect3({
+ shape: {
+ x: 0,
+ y: 0,
+ width: size[0],
+ height: size[1]
+ },
+ style: {
+ fill: "transparent"
+ },
+ z2: 0,
+ onclick: bind(this._onClickPanel, this)
+ });
+ var zr = this.api.getZr();
+ if (brushSelect) {
+ clickPanel.on("mousedown", this._onBrushStart, this);
+ clickPanel.cursor = "crosshair";
+ zr.on("mousemove", this._onBrush);
+ zr.on("mouseup", this._onBrushEnd);
+ } else {
+ zr.off("mousemove", this._onBrush);
+ zr.off("mouseup", this._onBrushEnd);
+ }
+ barGroup.add(clickPanel);
+ };
+ SliderZoomView2.prototype._renderDataShadow = function() {
+ var info = this._dataShadowInfo = this._prepareDataShadowInfo();
+ this._displayables.dataShadowSegs = [];
+ if (!info) {
+ return;
+ }
+ var size = this._size;
+ var oldSize = this._shadowSize || [];
+ var seriesModel = info.series;
+ var data = seriesModel.getRawData();
+ var candlestickDim = seriesModel.getShadowDim && seriesModel.getShadowDim();
+ var otherDim = candlestickDim && data.getDimensionInfo(candlestickDim) ? seriesModel.getShadowDim() : info.otherDim;
+ if (otherDim == null) {
+ return;
+ }
+ var polygonPts = this._shadowPolygonPts;
+ var polylinePts = this._shadowPolylinePts;
+ if (data !== this._shadowData || otherDim !== this._shadowDim || size[0] !== oldSize[0] || size[1] !== oldSize[1]) {
+ var otherDataExtent_1 = data.getDataExtent(otherDim);
+ var otherOffset = (otherDataExtent_1[1] - otherDataExtent_1[0]) * 0.3;
+ otherDataExtent_1 = [otherDataExtent_1[0] - otherOffset, otherDataExtent_1[1] + otherOffset];
+ var otherShadowExtent_1 = [0, size[1]];
+ var thisShadowExtent = [0, size[0]];
+ var areaPoints_1 = [[size[0], 0], [0, 0]];
+ var linePoints_1 = [];
+ var step_1 = thisShadowExtent[1] / (data.count() - 1);
+ var thisCoord_1 = 0;
+ var stride_1 = Math.round(data.count() / size[0]);
+ var lastIsEmpty_1;
+ data.each([otherDim], function(value, index) {
+ if (stride_1 > 0 && index % stride_1) {
+ thisCoord_1 += step_1;
+ return;
+ }
+ var isEmpty = value == null || isNaN(value) || value === "";
+ var otherCoord = isEmpty ? 0 : linearMap(value, otherDataExtent_1, otherShadowExtent_1, true);
+ if (isEmpty && !lastIsEmpty_1 && index) {
+ areaPoints_1.push([areaPoints_1[areaPoints_1.length - 1][0], 0]);
+ linePoints_1.push([linePoints_1[linePoints_1.length - 1][0], 0]);
+ } else if (!isEmpty && lastIsEmpty_1) {
+ areaPoints_1.push([thisCoord_1, 0]);
+ linePoints_1.push([thisCoord_1, 0]);
+ }
+ areaPoints_1.push([thisCoord_1, otherCoord]);
+ linePoints_1.push([thisCoord_1, otherCoord]);
+ thisCoord_1 += step_1;
+ lastIsEmpty_1 = isEmpty;
+ });
+ polygonPts = this._shadowPolygonPts = areaPoints_1;
+ polylinePts = this._shadowPolylinePts = linePoints_1;
+ }
+ this._shadowData = data;
+ this._shadowDim = otherDim;
+ this._shadowSize = [size[0], size[1]];
+ var dataZoomModel = this.dataZoomModel;
+ function createDataShadowGroup(isSelectedArea) {
+ var model = dataZoomModel.getModel(isSelectedArea ? "selectedDataBackground" : "dataBackground");
+ var group2 = new Group_default();
+ var polygon = new Polygon_default({
+ shape: {
+ points: polygonPts
+ },
+ segmentIgnoreThreshold: 1,
+ style: model.getModel("areaStyle").getAreaStyle(),
+ silent: true,
+ z2: -20
+ });
+ var polyline = new Polyline_default({
+ shape: {
+ points: polylinePts
+ },
+ segmentIgnoreThreshold: 1,
+ style: model.getModel("lineStyle").getLineStyle(),
+ silent: true,
+ z2: -19
+ });
+ group2.add(polygon);
+ group2.add(polyline);
+ return group2;
+ }
+ for (var i = 0; i < 3; i++) {
+ var group = createDataShadowGroup(i === 1);
+ this._displayables.sliderGroup.add(group);
+ this._displayables.dataShadowSegs.push(group);
+ }
+ };
+ SliderZoomView2.prototype._prepareDataShadowInfo = function() {
+ var dataZoomModel = this.dataZoomModel;
+ var showDataShadow = dataZoomModel.get("showDataShadow");
+ if (showDataShadow === false) {
+ return;
+ }
+ var result;
+ var ecModel = this.ecModel;
+ dataZoomModel.eachTargetAxis(function(axisDim, axisIndex) {
+ var seriesModels = dataZoomModel.getAxisProxy(axisDim, axisIndex).getTargetSeriesModels();
+ each(seriesModels, function(seriesModel) {
+ if (result) {
+ return;
+ }
+ if (showDataShadow !== true && indexOf(SHOW_DATA_SHADOW_SERIES_TYPE, seriesModel.get("type")) < 0) {
+ return;
+ }
+ var thisAxis = ecModel.getComponent(getAxisMainType(axisDim), axisIndex).axis;
+ var otherDim = getOtherDim(axisDim);
+ var otherAxisInverse;
+ var coordSys = seriesModel.coordinateSystem;
+ if (otherDim != null && coordSys.getOtherAxis) {
+ otherAxisInverse = coordSys.getOtherAxis(thisAxis).inverse;
+ }
+ otherDim = seriesModel.getData().mapDimension(otherDim);
+ result = {
+ thisAxis,
+ series: seriesModel,
+ thisDim: axisDim,
+ otherDim,
+ otherAxisInverse
+ };
+ }, this);
+ }, this);
+ return result;
+ };
+ SliderZoomView2.prototype._renderHandle = function() {
+ var thisGroup = this.group;
+ var displayables = this._displayables;
+ var handles = displayables.handles = [null, null];
+ var handleLabels = displayables.handleLabels = [null, null];
+ var sliderGroup = this._displayables.sliderGroup;
+ var size = this._size;
+ var dataZoomModel = this.dataZoomModel;
+ var api = this.api;
+ var borderRadius = dataZoomModel.get("borderRadius") || 0;
+ var brushSelect = dataZoomModel.get("brushSelect");
+ var filler = displayables.filler = new Rect3({
+ silent: brushSelect,
+ style: {
+ fill: dataZoomModel.get("fillerColor")
+ },
+ textConfig: {
+ position: "inside"
+ }
+ });
+ sliderGroup.add(filler);
+ sliderGroup.add(new Rect3({
+ silent: true,
+ subPixelOptimize: true,
+ shape: {
+ x: 0,
+ y: 0,
+ width: size[0],
+ height: size[1],
+ r: borderRadius
+ },
+ style: {
+ stroke: dataZoomModel.get("dataBackgroundColor") || dataZoomModel.get("borderColor"),
+ lineWidth: DEFAULT_FRAME_BORDER_WIDTH,
+ fill: "rgba(0,0,0,0)"
+ }
+ }));
+ each([0, 1], function(handleIndex) {
+ var iconStr = dataZoomModel.get("handleIcon");
+ if (!symbolBuildProxies[iconStr] && iconStr.indexOf("path://") < 0 && iconStr.indexOf("image://") < 0) {
+ iconStr = "path://" + iconStr;
+ if (true) {
+ deprecateLog("handleIcon now needs 'path://' prefix when using a path string");
+ }
+ }
+ var path = createSymbol(iconStr, -1, 0, 2, 2, null, true);
+ path.attr({
+ cursor: getCursor(this._orient),
+ draggable: true,
+ drift: bind(this._onDragMove, this, handleIndex),
+ ondragend: bind(this._onDragEnd, this),
+ onmouseover: bind(this._showDataInfo, this, true),
+ onmouseout: bind(this._showDataInfo, this, false),
+ z2: 5
+ });
+ var bRect = path.getBoundingRect();
+ var handleSize = dataZoomModel.get("handleSize");
+ this._handleHeight = parsePercent2(handleSize, this._size[1]);
+ this._handleWidth = bRect.width / bRect.height * this._handleHeight;
+ path.setStyle(dataZoomModel.getModel("handleStyle").getItemStyle());
+ path.style.strokeNoScale = true;
+ path.rectHover = true;
+ path.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "handleStyle"]).getItemStyle();
+ enableHoverEmphasis(path);
+ var handleColor = dataZoomModel.get("handleColor");
+ if (handleColor != null) {
+ path.style.fill = handleColor;
+ }
+ sliderGroup.add(handles[handleIndex] = path);
+ var textStyleModel = dataZoomModel.getModel("textStyle");
+ var handleLabel = dataZoomModel.get("handleLabel") || {};
+ var handleLabelShow = handleLabel.show || false;
+ thisGroup.add(handleLabels[handleIndex] = new Text_default({
+ silent: true,
+ invisible: !handleLabelShow,
+ style: createTextStyle(textStyleModel, {
+ x: 0,
+ y: 0,
+ text: "",
+ verticalAlign: "middle",
+ align: "center",
+ fill: textStyleModel.getTextColor(),
+ font: textStyleModel.getFont()
+ }),
+ z2: 10
+ }));
+ }, this);
+ var actualMoveZone = filler;
+ if (brushSelect) {
+ var moveHandleHeight = parsePercent2(dataZoomModel.get("moveHandleSize"), size[1]);
+ var moveHandle_1 = displayables.moveHandle = new Rect_default({
+ style: dataZoomModel.getModel("moveHandleStyle").getItemStyle(),
+ silent: true,
+ shape: {
+ r: [0, 0, 2, 2],
+ y: size[1] - 0.5,
+ height: moveHandleHeight
+ }
+ });
+ var iconSize = moveHandleHeight * 0.8;
+ var moveHandleIcon = displayables.moveHandleIcon = createSymbol(dataZoomModel.get("moveHandleIcon"), -iconSize / 2, -iconSize / 2, iconSize, iconSize, "#fff", true);
+ moveHandleIcon.silent = true;
+ moveHandleIcon.y = size[1] + moveHandleHeight / 2 - 0.5;
+ moveHandle_1.ensureState("emphasis").style = dataZoomModel.getModel(["emphasis", "moveHandleStyle"]).getItemStyle();
+ var moveZoneExpandSize = Math.min(size[1] / 2, Math.max(moveHandleHeight, 10));
+ actualMoveZone = displayables.moveZone = new Rect_default({
+ invisible: true,
+ shape: {
+ y: size[1] - moveZoneExpandSize,
+ height: moveHandleHeight + moveZoneExpandSize
+ }
+ });
+ actualMoveZone.on("mouseover", function() {
+ api.enterEmphasis(moveHandle_1);
+ }).on("mouseout", function() {
+ api.leaveEmphasis(moveHandle_1);
+ });
+ sliderGroup.add(moveHandle_1);
+ sliderGroup.add(moveHandleIcon);
+ sliderGroup.add(actualMoveZone);
+ }
+ actualMoveZone.attr({
+ draggable: true,
+ cursor: getCursor(this._orient),
+ drift: bind(this._onDragMove, this, "all"),
+ ondragstart: bind(this._showDataInfo, this, true),
+ ondragend: bind(this._onDragEnd, this),
+ onmouseover: bind(this._showDataInfo, this, true),
+ onmouseout: bind(this._showDataInfo, this, false)
+ });
+ };
+ SliderZoomView2.prototype._resetInterval = function() {
+ var range = this._range = this.dataZoomModel.getPercentRange();
+ var viewExtent = this._getViewExtent();
+ this._handleEnds = [linearMap(range[0], [0, 100], viewExtent, true), linearMap(range[1], [0, 100], viewExtent, true)];
+ };
+ SliderZoomView2.prototype._updateInterval = function(handleIndex, delta) {
+ var dataZoomModel = this.dataZoomModel;
+ var handleEnds = this._handleEnds;
+ var viewExtend = this._getViewExtent();
+ var minMaxSpan = dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();
+ var percentExtent = [0, 100];
+ sliderMove(delta, handleEnds, viewExtend, dataZoomModel.get("zoomLock") ? "all" : handleIndex, minMaxSpan.minSpan != null ? linearMap(minMaxSpan.minSpan, percentExtent, viewExtend, true) : null, minMaxSpan.maxSpan != null ? linearMap(minMaxSpan.maxSpan, percentExtent, viewExtend, true) : null);
+ var lastRange = this._range;
+ var range = this._range = asc([linearMap(handleEnds[0], viewExtend, percentExtent, true), linearMap(handleEnds[1], viewExtend, percentExtent, true)]);
+ return !lastRange || lastRange[0] !== range[0] || lastRange[1] !== range[1];
+ };
+ SliderZoomView2.prototype._updateView = function(nonRealtime) {
+ var displaybles = this._displayables;
+ var handleEnds = this._handleEnds;
+ var handleInterval = asc(handleEnds.slice());
+ var size = this._size;
+ each([0, 1], function(handleIndex) {
+ var handle = displaybles.handles[handleIndex];
+ var handleHeight = this._handleHeight;
+ handle.attr({
+ scaleX: handleHeight / 2,
+ scaleY: handleHeight / 2,
+ x: handleEnds[handleIndex] + (handleIndex ? -1 : 1),
+ y: size[1] / 2 - handleHeight / 2
+ });
+ }, this);
+ displaybles.filler.setShape({
+ x: handleInterval[0],
+ y: 0,
+ width: handleInterval[1] - handleInterval[0],
+ height: size[1]
+ });
+ var viewExtent = {
+ x: handleInterval[0],
+ width: handleInterval[1] - handleInterval[0]
+ };
+ if (displaybles.moveHandle) {
+ displaybles.moveHandle.setShape(viewExtent);
+ displaybles.moveZone.setShape(viewExtent);
+ displaybles.moveZone.getBoundingRect();
+ displaybles.moveHandleIcon && displaybles.moveHandleIcon.attr("x", viewExtent.x + viewExtent.width / 2);
+ }
+ var dataShadowSegs = displaybles.dataShadowSegs;
+ var segIntervals = [0, handleInterval[0], handleInterval[1], size[0]];
+ for (var i = 0; i < dataShadowSegs.length; i++) {
+ var segGroup = dataShadowSegs[i];
+ var clipPath = segGroup.getClipPath();
+ if (!clipPath) {
+ clipPath = new Rect_default();
+ segGroup.setClipPath(clipPath);
+ }
+ clipPath.setShape({
+ x: segIntervals[i],
+ y: 0,
+ width: segIntervals[i + 1] - segIntervals[i],
+ height: size[1]
+ });
+ }
+ this._updateDataInfo(nonRealtime);
+ };
+ SliderZoomView2.prototype._updateDataInfo = function(nonRealtime) {
+ var dataZoomModel = this.dataZoomModel;
+ var displaybles = this._displayables;
+ var handleLabels = displaybles.handleLabels;
+ var orient = this._orient;
+ var labelTexts = ["", ""];
+ if (dataZoomModel.get("showDetail")) {
+ var axisProxy = dataZoomModel.findRepresentativeAxisProxy();
+ if (axisProxy) {
+ var axis = axisProxy.getAxisModel().axis;
+ var range = this._range;
+ var dataInterval = nonRealtime ? axisProxy.calculateDataWindow({
+ start: range[0],
+ end: range[1]
+ }).valueWindow : axisProxy.getDataValueWindow();
+ labelTexts = [this._formatLabel(dataInterval[0], axis), this._formatLabel(dataInterval[1], axis)];
+ }
+ }
+ var orderedHandleEnds = asc(this._handleEnds.slice());
+ setLabel.call(this, 0);
+ setLabel.call(this, 1);
+ function setLabel(handleIndex) {
+ var barTransform = getTransform(displaybles.handles[handleIndex].parent, this.group);
+ var direction = transformDirection(handleIndex === 0 ? "right" : "left", barTransform);
+ var offset = this._handleWidth / 2 + LABEL_GAP;
+ var textPoint = applyTransform2([orderedHandleEnds[handleIndex] + (handleIndex === 0 ? -offset : offset), this._size[1] / 2], barTransform);
+ handleLabels[handleIndex].setStyle({
+ x: textPoint[0],
+ y: textPoint[1],
+ verticalAlign: orient === HORIZONTAL ? "middle" : direction,
+ align: orient === HORIZONTAL ? direction : "center",
+ text: labelTexts[handleIndex]
+ });
+ }
+ };
+ SliderZoomView2.prototype._formatLabel = function(value, axis) {
+ var dataZoomModel = this.dataZoomModel;
+ var labelFormatter = dataZoomModel.get("labelFormatter");
+ var labelPrecision = dataZoomModel.get("labelPrecision");
+ if (labelPrecision == null || labelPrecision === "auto") {
+ labelPrecision = axis.getPixelPrecision();
+ }
+ var valueStr = value == null || isNaN(value) ? "" : axis.type === "category" || axis.type === "time" ? axis.scale.getLabel({
+ value: Math.round(value)
+ }) : value.toFixed(Math.min(labelPrecision, 20));
+ return isFunction(labelFormatter) ? labelFormatter(value, valueStr) : isString(labelFormatter) ? labelFormatter.replace("{value}", valueStr) : valueStr;
+ };
+ SliderZoomView2.prototype._showDataInfo = function(isEmphasis) {
+ var handleLabel = this.dataZoomModel.get("handleLabel") || {};
+ var normalShow = handleLabel.show || false;
+ var emphasisHandleLabel = this.dataZoomModel.getModel(["emphasis", "handleLabel"]);
+ var emphasisShow = emphasisHandleLabel.get("show") || false;
+ var toShow = isEmphasis || this._dragging ? emphasisShow : normalShow;
+ var displayables = this._displayables;
+ var handleLabels = displayables.handleLabels;
+ handleLabels[0].attr("invisible", !toShow);
+ handleLabels[1].attr("invisible", !toShow);
+ displayables.moveHandle && this.api[toShow ? "enterEmphasis" : "leaveEmphasis"](displayables.moveHandle, 1);
+ };
+ SliderZoomView2.prototype._onDragMove = function(handleIndex, dx, dy, event) {
+ this._dragging = true;
+ stop(event.event);
+ var barTransform = this._displayables.sliderGroup.getLocalTransform();
+ var vertex = applyTransform2([dx, dy], barTransform, true);
+ var changed = this._updateInterval(handleIndex, vertex[0]);
+ var realtime = this.dataZoomModel.get("realtime");
+ this._updateView(!realtime);
+ changed && realtime && this._dispatchZoomAction(true);
+ };
+ SliderZoomView2.prototype._onDragEnd = function() {
+ this._dragging = false;
+ this._showDataInfo(false);
+ var realtime = this.dataZoomModel.get("realtime");
+ !realtime && this._dispatchZoomAction(false);
+ };
+ SliderZoomView2.prototype._onClickPanel = function(e2) {
+ var size = this._size;
+ var localPoint = this._displayables.sliderGroup.transformCoordToLocal(e2.offsetX, e2.offsetY);
+ if (localPoint[0] < 0 || localPoint[0] > size[0] || localPoint[1] < 0 || localPoint[1] > size[1]) {
+ return;
+ }
+ var handleEnds = this._handleEnds;
+ var center3 = (handleEnds[0] + handleEnds[1]) / 2;
+ var changed = this._updateInterval("all", localPoint[0] - center3);
+ this._updateView();
+ changed && this._dispatchZoomAction(false);
+ };
+ SliderZoomView2.prototype._onBrushStart = function(e2) {
+ var x = e2.offsetX;
+ var y = e2.offsetY;
+ this._brushStart = new Point_default(x, y);
+ this._brushing = true;
+ this._brushStartTime = +new Date();
+ };
+ SliderZoomView2.prototype._onBrushEnd = function(e2) {
+ if (!this._brushing) {
+ return;
+ }
+ var brushRect = this._displayables.brushRect;
+ this._brushing = false;
+ if (!brushRect) {
+ return;
+ }
+ brushRect.attr("ignore", true);
+ var brushShape = brushRect.shape;
+ var brushEndTime = +new Date();
+ if (brushEndTime - this._brushStartTime < 200 && Math.abs(brushShape.width) < 5) {
+ return;
+ }
+ var viewExtend = this._getViewExtent();
+ var percentExtent = [0, 100];
+ this._range = asc([linearMap(brushShape.x, viewExtend, percentExtent, true), linearMap(brushShape.x + brushShape.width, viewExtend, percentExtent, true)]);
+ this._handleEnds = [brushShape.x, brushShape.x + brushShape.width];
+ this._updateView();
+ this._dispatchZoomAction(false);
+ };
+ SliderZoomView2.prototype._onBrush = function(e2) {
+ if (this._brushing) {
+ stop(e2.event);
+ this._updateBrushRect(e2.offsetX, e2.offsetY);
+ }
+ };
+ SliderZoomView2.prototype._updateBrushRect = function(mouseX, mouseY) {
+ var displayables = this._displayables;
+ var dataZoomModel = this.dataZoomModel;
+ var brushRect = displayables.brushRect;
+ if (!brushRect) {
+ brushRect = displayables.brushRect = new Rect3({
+ silent: true,
+ style: dataZoomModel.getModel("brushStyle").getItemStyle()
+ });
+ displayables.sliderGroup.add(brushRect);
+ }
+ brushRect.attr("ignore", false);
+ var brushStart = this._brushStart;
+ var sliderGroup = this._displayables.sliderGroup;
+ var endPoint = sliderGroup.transformCoordToLocal(mouseX, mouseY);
+ var startPoint = sliderGroup.transformCoordToLocal(brushStart.x, brushStart.y);
+ var size = this._size;
+ endPoint[0] = Math.max(Math.min(size[0], endPoint[0]), 0);
+ brushRect.setShape({
+ x: startPoint[0],
+ y: 0,
+ width: endPoint[0] - startPoint[0],
+ height: size[1]
+ });
+ };
+ SliderZoomView2.prototype._dispatchZoomAction = function(realtime) {
+ var range = this._range;
+ this.api.dispatchAction({
+ type: "dataZoom",
+ from: this.uid,
+ dataZoomId: this.dataZoomModel.id,
+ animation: realtime ? REALTIME_ANIMATION_CONFIG : null,
+ start: range[0],
+ end: range[1]
+ });
+ };
+ SliderZoomView2.prototype._findCoordRect = function() {
+ var rect;
+ var coordSysInfoList = collectReferCoordSysModelInfo(this.dataZoomModel).infoList;
+ if (!rect && coordSysInfoList.length) {
+ var coordSys = coordSysInfoList[0].model.coordinateSystem;
+ rect = coordSys.getRect && coordSys.getRect();
+ }
+ if (!rect) {
+ var width = this.api.getWidth();
+ var height = this.api.getHeight();
+ rect = {
+ x: width * 0.2,
+ y: height * 0.2,
+ width: width * 0.6,
+ height: height * 0.6
+ };
+ }
+ return rect;
+ };
+ SliderZoomView2.type = "dataZoom.slider";
+ return SliderZoomView2;
+}(DataZoomView_default);
+function getOtherDim(thisDim) {
+ var map3 = {
+ x: "y",
+ y: "x",
+ radius: "angle",
+ angle: "radius"
+ };
+ return map3[thisDim];
+}
+function getCursor(orient) {
+ return orient === "vertical" ? "ns-resize" : "ew-resize";
+}
+var SliderZoomView_default = SliderZoomView;
+
+// node_modules/echarts/lib/component/dataZoom/installDataZoomSlider.js
+function install48(registers) {
+ registers.registerComponentModel(SliderZoomModel_default);
+ registers.registerComponentView(SliderZoomView_default);
+ installCommon(registers);
+}
+
+// node_modules/echarts/lib/component/dataZoom/install.js
+function install49(registers) {
+ use(install47);
+ use(install48);
+}
+
+// node_modules/echarts/lib/visual/visualDefault.js
+var visualDefault = {
+ get: function(visualType, key, isCategory2) {
+ var value = clone((defaultOption2[visualType] || {})[key]);
+ return isCategory2 ? isArray(value) ? value[value.length - 1] : value : value;
+ }
+};
+var defaultOption2 = {
+ color: {
+ active: ["#006edd", "#e0ffff"],
+ inactive: ["rgba(0,0,0,0)"]
+ },
+ colorHue: {
+ active: [0, 360],
+ inactive: [0, 0]
+ },
+ colorSaturation: {
+ active: [0.3, 1],
+ inactive: [0, 0]
+ },
+ colorLightness: {
+ active: [0.9, 0.5],
+ inactive: [0, 0]
+ },
+ colorAlpha: {
+ active: [0.3, 1],
+ inactive: [0, 0]
+ },
+ opacity: {
+ active: [0.3, 1],
+ inactive: [0, 0]
+ },
+ symbol: {
+ active: ["circle", "roundRect", "diamond"],
+ inactive: ["none"]
+ },
+ symbolSize: {
+ active: [10, 50],
+ inactive: [0, 0]
+ }
+};
+var visualDefault_default = visualDefault;
+
+// node_modules/echarts/lib/component/visualMap/VisualMapModel.js
+var mapVisual2 = VisualMapping_default.mapVisual;
+var eachVisual = VisualMapping_default.eachVisual;
+var isArray2 = isArray;
+var each14 = each;
+var asc3 = asc;
+var linearMap2 = linearMap;
+var VisualMapModel = function(_super) {
+ __extends(VisualMapModel2, _super);
+ function VisualMapModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = VisualMapModel2.type;
+ _this.stateList = ["inRange", "outOfRange"];
+ _this.replacableOptionKeys = ["inRange", "outOfRange", "target", "controller", "color"];
+ _this.layoutMode = {
+ type: "box",
+ ignoreSize: true
+ };
+ _this.dataBound = [-Infinity, Infinity];
+ _this.targetVisuals = {};
+ _this.controllerVisuals = {};
+ return _this;
+ }
+ VisualMapModel2.prototype.init = function(option, parentModel, ecModel) {
+ this.mergeDefaultAndTheme(option, ecModel);
+ };
+ VisualMapModel2.prototype.optionUpdated = function(newOption, isInit) {
+ var thisOption = this.option;
+ !isInit && replaceVisualOption(thisOption, newOption, this.replacableOptionKeys);
+ this.textStyleModel = this.getModel("textStyle");
+ this.resetItemSize();
+ this.completeVisualOption();
+ };
+ VisualMapModel2.prototype.resetVisual = function(supplementVisualOption) {
+ var stateList = this.stateList;
+ supplementVisualOption = bind(supplementVisualOption, this);
+ this.controllerVisuals = createVisualMappings(this.option.controller, stateList, supplementVisualOption);
+ this.targetVisuals = createVisualMappings(this.option.target, stateList, supplementVisualOption);
+ };
+ VisualMapModel2.prototype.getItemSymbol = function() {
+ return null;
+ };
+ VisualMapModel2.prototype.getTargetSeriesIndices = function() {
+ var optionSeriesIndex = this.option.seriesIndex;
+ var seriesIndices = [];
+ if (optionSeriesIndex == null || optionSeriesIndex === "all") {
+ this.ecModel.eachSeries(function(seriesModel, index) {
+ seriesIndices.push(index);
+ });
+ } else {
+ seriesIndices = normalizeToArray(optionSeriesIndex);
+ }
+ return seriesIndices;
+ };
+ VisualMapModel2.prototype.eachTargetSeries = function(callback, context) {
+ each(this.getTargetSeriesIndices(), function(seriesIndex) {
+ var seriesModel = this.ecModel.getSeriesByIndex(seriesIndex);
+ if (seriesModel) {
+ callback.call(context, seriesModel);
+ }
+ }, this);
+ };
+ VisualMapModel2.prototype.isTargetSeries = function(seriesModel) {
+ var is = false;
+ this.eachTargetSeries(function(model) {
+ model === seriesModel && (is = true);
+ });
+ return is;
+ };
+ VisualMapModel2.prototype.formatValueText = function(value, isCategory2, edgeSymbols) {
+ var option = this.option;
+ var precision = option.precision;
+ var dataBound = this.dataBound;
+ var formatter = option.formatter;
+ var isMinMax;
+ edgeSymbols = edgeSymbols || ["<", ">"];
+ if (isArray(value)) {
+ value = value.slice();
+ isMinMax = true;
+ }
+ var textValue = isCategory2 ? value : isMinMax ? [toFixed(value[0]), toFixed(value[1])] : toFixed(value);
+ if (isString(formatter)) {
+ return formatter.replace("{value}", isMinMax ? textValue[0] : textValue).replace("{value2}", isMinMax ? textValue[1] : textValue);
+ } else if (isFunction(formatter)) {
+ return isMinMax ? formatter(value[0], value[1]) : formatter(value);
+ }
+ if (isMinMax) {
+ if (value[0] === dataBound[0]) {
+ return edgeSymbols[0] + " " + textValue[1];
+ } else if (value[1] === dataBound[1]) {
+ return edgeSymbols[1] + " " + textValue[0];
+ } else {
+ return textValue[0] + " - " + textValue[1];
+ }
+ } else {
+ return textValue;
+ }
+ function toFixed(val) {
+ return val === dataBound[0] ? "min" : val === dataBound[1] ? "max" : (+val).toFixed(Math.min(precision, 20));
+ }
+ };
+ VisualMapModel2.prototype.resetExtent = function() {
+ var thisOption = this.option;
+ var extent3 = asc3([thisOption.min, thisOption.max]);
+ this._dataExtent = extent3;
+ };
+ VisualMapModel2.prototype.getDataDimensionIndex = function(data) {
+ var optDim = this.option.dimension;
+ if (optDim != null) {
+ return data.getDimensionIndex(optDim);
+ }
+ var dimNames = data.dimensions;
+ for (var i = dimNames.length - 1; i >= 0; i--) {
+ var dimName = dimNames[i];
+ var dimInfo = data.getDimensionInfo(dimName);
+ if (!dimInfo.isCalculationCoord) {
+ return dimInfo.storeDimIndex;
+ }
+ }
+ };
+ VisualMapModel2.prototype.getExtent = function() {
+ return this._dataExtent.slice();
+ };
+ VisualMapModel2.prototype.completeVisualOption = function() {
+ var ecModel = this.ecModel;
+ var thisOption = this.option;
+ var base2 = {
+ inRange: thisOption.inRange,
+ outOfRange: thisOption.outOfRange
+ };
+ var target = thisOption.target || (thisOption.target = {});
+ var controller = thisOption.controller || (thisOption.controller = {});
+ merge(target, base2);
+ merge(controller, base2);
+ var isCategory2 = this.isCategory();
+ completeSingle.call(this, target);
+ completeSingle.call(this, controller);
+ completeInactive.call(this, target, "inRange", "outOfRange");
+ completeController.call(this, controller);
+ function completeSingle(base3) {
+ if (isArray2(thisOption.color) && !base3.inRange) {
+ base3.inRange = {
+ color: thisOption.color.slice().reverse()
+ };
+ }
+ base3.inRange = base3.inRange || {
+ color: ecModel.get("gradientColor")
+ };
+ }
+ function completeInactive(base3, stateExist, stateAbsent) {
+ var optExist = base3[stateExist];
+ var optAbsent = base3[stateAbsent];
+ if (optExist && !optAbsent) {
+ optAbsent = base3[stateAbsent] = {};
+ each14(optExist, function(visualData, visualType) {
+ if (!VisualMapping_default.isValidType(visualType)) {
+ return;
+ }
+ var defa = visualDefault_default.get(visualType, "inactive", isCategory2);
+ if (defa != null) {
+ optAbsent[visualType] = defa;
+ if (visualType === "color" && !optAbsent.hasOwnProperty("opacity") && !optAbsent.hasOwnProperty("colorAlpha")) {
+ optAbsent.opacity = [0, 0];
+ }
+ }
+ });
+ }
+ }
+ function completeController(controller2) {
+ var symbolExists = (controller2.inRange || {}).symbol || (controller2.outOfRange || {}).symbol;
+ var symbolSizeExists = (controller2.inRange || {}).symbolSize || (controller2.outOfRange || {}).symbolSize;
+ var inactiveColor = this.get("inactiveColor");
+ var itemSymbol = this.getItemSymbol();
+ var defaultSymbol = itemSymbol || "roundRect";
+ each14(this.stateList, function(state) {
+ var itemSize = this.itemSize;
+ var visuals = controller2[state];
+ if (!visuals) {
+ visuals = controller2[state] = {
+ color: isCategory2 ? inactiveColor : [inactiveColor]
+ };
+ }
+ if (visuals.symbol == null) {
+ visuals.symbol = symbolExists && clone(symbolExists) || (isCategory2 ? defaultSymbol : [defaultSymbol]);
+ }
+ if (visuals.symbolSize == null) {
+ visuals.symbolSize = symbolSizeExists && clone(symbolSizeExists) || (isCategory2 ? itemSize[0] : [itemSize[0], itemSize[0]]);
+ }
+ visuals.symbol = mapVisual2(visuals.symbol, function(symbol) {
+ return symbol === "none" ? defaultSymbol : symbol;
+ });
+ var symbolSize = visuals.symbolSize;
+ if (symbolSize != null) {
+ var max_1 = -Infinity;
+ eachVisual(symbolSize, function(value) {
+ value > max_1 && (max_1 = value);
+ });
+ visuals.symbolSize = mapVisual2(symbolSize, function(value) {
+ return linearMap2(value, [0, max_1], [0, itemSize[0]], true);
+ });
+ }
+ }, this);
+ }
+ };
+ VisualMapModel2.prototype.resetItemSize = function() {
+ this.itemSize = [parseFloat(this.get("itemWidth")), parseFloat(this.get("itemHeight"))];
+ };
+ VisualMapModel2.prototype.isCategory = function() {
+ return !!this.option.categories;
+ };
+ VisualMapModel2.prototype.setSelected = function(selected) {
+ };
+ VisualMapModel2.prototype.getSelected = function() {
+ return null;
+ };
+ VisualMapModel2.prototype.getValueState = function(value) {
+ return null;
+ };
+ VisualMapModel2.prototype.getVisualMeta = function(getColorVisual2) {
+ return null;
+ };
+ VisualMapModel2.type = "visualMap";
+ VisualMapModel2.dependencies = ["series"];
+ VisualMapModel2.defaultOption = {
+ show: true,
+ z: 4,
+ seriesIndex: "all",
+ min: 0,
+ max: 200,
+ left: 0,
+ right: null,
+ top: null,
+ bottom: 0,
+ itemWidth: null,
+ itemHeight: null,
+ inverse: false,
+ orient: "vertical",
+ backgroundColor: "rgba(0,0,0,0)",
+ borderColor: "#ccc",
+ contentColor: "#5793f3",
+ inactiveColor: "#aaa",
+ borderWidth: 0,
+ padding: 5,
+ textGap: 10,
+ precision: 0,
+ textStyle: {
+ color: "#333"
+ }
+ };
+ return VisualMapModel2;
+}(Component_default);
+var VisualMapModel_default = VisualMapModel;
+
+// node_modules/echarts/lib/component/visualMap/ContinuousModel.js
+var DEFAULT_BAR_BOUND = [20, 140];
+var ContinuousModel = function(_super) {
+ __extends(ContinuousModel2, _super);
+ function ContinuousModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ContinuousModel2.type;
+ return _this;
+ }
+ ContinuousModel2.prototype.optionUpdated = function(newOption, isInit) {
+ _super.prototype.optionUpdated.apply(this, arguments);
+ this.resetExtent();
+ this.resetVisual(function(mappingOption) {
+ mappingOption.mappingMethod = "linear";
+ mappingOption.dataExtent = this.getExtent();
+ });
+ this._resetRange();
+ };
+ ContinuousModel2.prototype.resetItemSize = function() {
+ _super.prototype.resetItemSize.apply(this, arguments);
+ var itemSize = this.itemSize;
+ (itemSize[0] == null || isNaN(itemSize[0])) && (itemSize[0] = DEFAULT_BAR_BOUND[0]);
+ (itemSize[1] == null || isNaN(itemSize[1])) && (itemSize[1] = DEFAULT_BAR_BOUND[1]);
+ };
+ ContinuousModel2.prototype._resetRange = function() {
+ var dataExtent = this.getExtent();
+ var range = this.option.range;
+ if (!range || range.auto) {
+ dataExtent.auto = 1;
+ this.option.range = dataExtent;
+ } else if (isArray(range)) {
+ if (range[0] > range[1]) {
+ range.reverse();
+ }
+ range[0] = Math.max(range[0], dataExtent[0]);
+ range[1] = Math.min(range[1], dataExtent[1]);
+ }
+ };
+ ContinuousModel2.prototype.completeVisualOption = function() {
+ _super.prototype.completeVisualOption.apply(this, arguments);
+ each(this.stateList, function(state) {
+ var symbolSize = this.option.controller[state].symbolSize;
+ if (symbolSize && symbolSize[0] !== symbolSize[1]) {
+ symbolSize[0] = symbolSize[1] / 3;
+ }
+ }, this);
+ };
+ ContinuousModel2.prototype.setSelected = function(selected) {
+ this.option.range = selected.slice();
+ this._resetRange();
+ };
+ ContinuousModel2.prototype.getSelected = function() {
+ var dataExtent = this.getExtent();
+ var dataInterval = asc((this.get("range") || []).slice());
+ dataInterval[0] > dataExtent[1] && (dataInterval[0] = dataExtent[1]);
+ dataInterval[1] > dataExtent[1] && (dataInterval[1] = dataExtent[1]);
+ dataInterval[0] < dataExtent[0] && (dataInterval[0] = dataExtent[0]);
+ dataInterval[1] < dataExtent[0] && (dataInterval[1] = dataExtent[0]);
+ return dataInterval;
+ };
+ ContinuousModel2.prototype.getValueState = function(value) {
+ var range = this.option.range;
+ var dataExtent = this.getExtent();
+ return (range[0] <= dataExtent[0] || range[0] <= value) && (range[1] >= dataExtent[1] || value <= range[1]) ? "inRange" : "outOfRange";
+ };
+ ContinuousModel2.prototype.findTargetDataIndices = function(range) {
+ var result = [];
+ this.eachTargetSeries(function(seriesModel) {
+ var dataIndices = [];
+ var data = seriesModel.getData();
+ data.each(this.getDataDimensionIndex(data), function(value, dataIndex) {
+ range[0] <= value && value <= range[1] && dataIndices.push(dataIndex);
+ }, this);
+ result.push({
+ seriesId: seriesModel.id,
+ dataIndex: dataIndices
+ });
+ }, this);
+ return result;
+ };
+ ContinuousModel2.prototype.getVisualMeta = function(getColorVisual2) {
+ var oVals = getColorStopValues(this, "outOfRange", this.getExtent());
+ var iVals = getColorStopValues(this, "inRange", this.option.range.slice());
+ var stops = [];
+ function setStop(value, valueState) {
+ stops.push({
+ value,
+ color: getColorVisual2(value, valueState)
+ });
+ }
+ var iIdx = 0;
+ var oIdx = 0;
+ var iLen = iVals.length;
+ var oLen = oVals.length;
+ for (; oIdx < oLen && (!iVals.length || oVals[oIdx] <= iVals[0]); oIdx++) {
+ if (oVals[oIdx] < iVals[iIdx]) {
+ setStop(oVals[oIdx], "outOfRange");
+ }
+ }
+ for (var first = 1; iIdx < iLen; iIdx++, first = 0) {
+ first && stops.length && setStop(iVals[iIdx], "outOfRange");
+ setStop(iVals[iIdx], "inRange");
+ }
+ for (var first = 1; oIdx < oLen; oIdx++) {
+ if (!iVals.length || iVals[iVals.length - 1] < oVals[oIdx]) {
+ if (first) {
+ stops.length && setStop(stops[stops.length - 1].value, "outOfRange");
+ first = 0;
+ }
+ setStop(oVals[oIdx], "outOfRange");
+ }
+ }
+ var stopsLen = stops.length;
+ return {
+ stops,
+ outerColors: [stopsLen ? stops[0].color : "transparent", stopsLen ? stops[stopsLen - 1].color : "transparent"]
+ };
+ };
+ ContinuousModel2.type = "visualMap.continuous";
+ ContinuousModel2.defaultOption = inheritDefaultOption(VisualMapModel_default.defaultOption, {
+ align: "auto",
+ calculable: false,
+ hoverLink: true,
+ realtime: true,
+ handleIcon: "path://M-11.39,9.77h0a3.5,3.5,0,0,1-3.5,3.5h-22a3.5,3.5,0,0,1-3.5-3.5h0a3.5,3.5,0,0,1,3.5-3.5h22A3.5,3.5,0,0,1-11.39,9.77Z",
+ handleSize: "120%",
+ handleStyle: {
+ borderColor: "#fff",
+ borderWidth: 1
+ },
+ indicatorIcon: "circle",
+ indicatorSize: "50%",
+ indicatorStyle: {
+ borderColor: "#fff",
+ borderWidth: 2,
+ shadowBlur: 2,
+ shadowOffsetX: 1,
+ shadowOffsetY: 1,
+ shadowColor: "rgba(0,0,0,0.2)"
+ }
+ });
+ return ContinuousModel2;
+}(VisualMapModel_default);
+function getColorStopValues(visualMapModel, valueState, dataExtent) {
+ if (dataExtent[0] === dataExtent[1]) {
+ return dataExtent.slice();
+ }
+ var count2 = 200;
+ var step = (dataExtent[1] - dataExtent[0]) / count2;
+ var value = dataExtent[0];
+ var stopValues = [];
+ for (var i = 0; i <= count2 && value < dataExtent[1]; i++) {
+ stopValues.push(value);
+ value += step;
+ }
+ stopValues.push(dataExtent[1]);
+ return stopValues;
+}
+var ContinuousModel_default = ContinuousModel;
+
+// node_modules/echarts/lib/component/visualMap/VisualMapView.js
+var VisualMapView = function(_super) {
+ __extends(VisualMapView2, _super);
+ function VisualMapView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = VisualMapView2.type;
+ _this.autoPositionValues = {
+ left: 1,
+ right: 1,
+ top: 1,
+ bottom: 1
+ };
+ return _this;
+ }
+ VisualMapView2.prototype.init = function(ecModel, api) {
+ this.ecModel = ecModel;
+ this.api = api;
+ };
+ VisualMapView2.prototype.render = function(visualMapModel, ecModel, api, payload) {
+ this.visualMapModel = visualMapModel;
+ if (visualMapModel.get("show") === false) {
+ this.group.removeAll();
+ return;
+ }
+ this.doRender(visualMapModel, ecModel, api, payload);
+ };
+ VisualMapView2.prototype.renderBackground = function(group) {
+ var visualMapModel = this.visualMapModel;
+ var padding = normalizeCssArray2(visualMapModel.get("padding") || 0);
+ var rect = group.getBoundingRect();
+ group.add(new Rect_default({
+ z2: -1,
+ silent: true,
+ shape: {
+ x: rect.x - padding[3],
+ y: rect.y - padding[0],
+ width: rect.width + padding[3] + padding[1],
+ height: rect.height + padding[0] + padding[2]
+ },
+ style: {
+ fill: visualMapModel.get("backgroundColor"),
+ stroke: visualMapModel.get("borderColor"),
+ lineWidth: visualMapModel.get("borderWidth")
+ }
+ }));
+ };
+ VisualMapView2.prototype.getControllerVisual = function(targetValue, visualCluster, opts) {
+ opts = opts || {};
+ var forceState = opts.forceState;
+ var visualMapModel = this.visualMapModel;
+ var visualObj = {};
+ if (visualCluster === "color") {
+ var defaultColor = visualMapModel.get("contentColor");
+ visualObj.color = defaultColor;
+ }
+ function getter(key) {
+ return visualObj[key];
+ }
+ function setter(key, value) {
+ visualObj[key] = value;
+ }
+ var mappings = visualMapModel.controllerVisuals[forceState || visualMapModel.getValueState(targetValue)];
+ var visualTypes = VisualMapping_default.prepareVisualTypes(mappings);
+ each(visualTypes, function(type) {
+ var visualMapping = mappings[type];
+ if (opts.convertOpacityToAlpha && type === "opacity") {
+ type = "colorAlpha";
+ visualMapping = mappings.__alphaForOpacity;
+ }
+ if (VisualMapping_default.dependsOn(type, visualCluster)) {
+ visualMapping && visualMapping.applyVisual(targetValue, getter, setter);
+ }
+ });
+ return visualObj[visualCluster];
+ };
+ VisualMapView2.prototype.positionGroup = function(group) {
+ var model = this.visualMapModel;
+ var api = this.api;
+ positionElement(group, model.getBoxLayoutParams(), {
+ width: api.getWidth(),
+ height: api.getHeight()
+ });
+ };
+ VisualMapView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) {
+ };
+ VisualMapView2.type = "visualMap";
+ return VisualMapView2;
+}(Component_default2);
+var VisualMapView_default = VisualMapView;
+
+// node_modules/echarts/lib/component/visualMap/helper.js
+var paramsSet = [["left", "right", "width"], ["top", "bottom", "height"]];
+function getItemAlign(visualMapModel, api, itemSize) {
+ var modelOption = visualMapModel.option;
+ var itemAlign = modelOption.align;
+ if (itemAlign != null && itemAlign !== "auto") {
+ return itemAlign;
+ }
+ var ecSize = {
+ width: api.getWidth(),
+ height: api.getHeight()
+ };
+ var realIndex = modelOption.orient === "horizontal" ? 1 : 0;
+ var reals = paramsSet[realIndex];
+ var fakeValue = [0, null, 10];
+ var layoutInput = {};
+ for (var i = 0; i < 3; i++) {
+ layoutInput[paramsSet[1 - realIndex][i]] = fakeValue[i];
+ layoutInput[reals[i]] = i === 2 ? itemSize[0] : modelOption[reals[i]];
+ }
+ var rParam = [["x", "width", 3], ["y", "height", 0]][realIndex];
+ var rect = getLayoutRect(layoutInput, ecSize, modelOption.padding);
+ return reals[(rect.margin[rParam[2]] || 0) + rect[rParam[0]] + rect[rParam[1]] * 0.5 < ecSize[rParam[1]] * 0.5 ? 0 : 1];
+}
+function makeHighDownBatch(batch, visualMapModel) {
+ each(batch || [], function(batchItem) {
+ if (batchItem.dataIndex != null) {
+ batchItem.dataIndexInside = batchItem.dataIndex;
+ batchItem.dataIndex = null;
+ }
+ batchItem.highlightKey = "visualMap" + (visualMapModel ? visualMapModel.componentIndex : "");
+ });
+ return batch;
+}
+
+// node_modules/echarts/lib/component/visualMap/ContinuousView.js
+var linearMap3 = linearMap;
+var each15 = each;
+var mathMin11 = Math.min;
+var mathMax11 = Math.max;
+var HOVER_LINK_SIZE = 12;
+var HOVER_LINK_OUT = 6;
+var ContinuousView = function(_super) {
+ __extends(ContinuousView2, _super);
+ function ContinuousView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = ContinuousView2.type;
+ _this._shapes = {};
+ _this._dataInterval = [];
+ _this._handleEnds = [];
+ _this._hoverLinkDataIndices = [];
+ return _this;
+ }
+ ContinuousView2.prototype.init = function(ecModel, api) {
+ _super.prototype.init.call(this, ecModel, api);
+ this._hoverLinkFromSeriesMouseOver = bind(this._hoverLinkFromSeriesMouseOver, this);
+ this._hideIndicator = bind(this._hideIndicator, this);
+ };
+ ContinuousView2.prototype.doRender = function(visualMapModel, ecModel, api, payload) {
+ if (!payload || payload.type !== "selectDataRange" || payload.from !== this.uid) {
+ this._buildView();
+ }
+ };
+ ContinuousView2.prototype._buildView = function() {
+ this.group.removeAll();
+ var visualMapModel = this.visualMapModel;
+ var thisGroup = this.group;
+ this._orient = visualMapModel.get("orient");
+ this._useHandle = visualMapModel.get("calculable");
+ this._resetInterval();
+ this._renderBar(thisGroup);
+ var dataRangeText = visualMapModel.get("text");
+ this._renderEndsText(thisGroup, dataRangeText, 0);
+ this._renderEndsText(thisGroup, dataRangeText, 1);
+ this._updateView(true);
+ this.renderBackground(thisGroup);
+ this._updateView();
+ this._enableHoverLinkToSeries();
+ this._enableHoverLinkFromSeries();
+ this.positionGroup(thisGroup);
+ };
+ ContinuousView2.prototype._renderEndsText = function(group, dataRangeText, endsIndex) {
+ if (!dataRangeText) {
+ return;
+ }
+ var text = dataRangeText[1 - endsIndex];
+ text = text != null ? text + "" : "";
+ var visualMapModel = this.visualMapModel;
+ var textGap = visualMapModel.get("textGap");
+ var itemSize = visualMapModel.itemSize;
+ var barGroup = this._shapes.mainGroup;
+ var position2 = this._applyTransform([itemSize[0] / 2, endsIndex === 0 ? -textGap : itemSize[1] + textGap], barGroup);
+ var align = this._applyTransform(endsIndex === 0 ? "bottom" : "top", barGroup);
+ var orient = this._orient;
+ var textStyleModel = this.visualMapModel.textStyleModel;
+ this.group.add(new Text_default({
+ style: createTextStyle(textStyleModel, {
+ x: position2[0],
+ y: position2[1],
+ verticalAlign: orient === "horizontal" ? "middle" : align,
+ align: orient === "horizontal" ? align : "center",
+ text
+ })
+ }));
+ };
+ ContinuousView2.prototype._renderBar = function(targetGroup) {
+ var visualMapModel = this.visualMapModel;
+ var shapes = this._shapes;
+ var itemSize = visualMapModel.itemSize;
+ var orient = this._orient;
+ var useHandle = this._useHandle;
+ var itemAlign = getItemAlign(visualMapModel, this.api, itemSize);
+ var mainGroup = shapes.mainGroup = this._createBarGroup(itemAlign);
+ var gradientBarGroup = new Group_default();
+ mainGroup.add(gradientBarGroup);
+ gradientBarGroup.add(shapes.outOfRange = createPolygon());
+ gradientBarGroup.add(shapes.inRange = createPolygon(null, useHandle ? getCursor2(this._orient) : null, bind(this._dragHandle, this, "all", false), bind(this._dragHandle, this, "all", true)));
+ gradientBarGroup.setClipPath(new Rect_default({
+ shape: {
+ x: 0,
+ y: 0,
+ width: itemSize[0],
+ height: itemSize[1],
+ r: 3
+ }
+ }));
+ var textRect = visualMapModel.textStyleModel.getTextRect("\u56FD");
+ var textSize = mathMax11(textRect.width, textRect.height);
+ if (useHandle) {
+ shapes.handleThumbs = [];
+ shapes.handleLabels = [];
+ shapes.handleLabelPoints = [];
+ this._createHandle(visualMapModel, mainGroup, 0, itemSize, textSize, orient);
+ this._createHandle(visualMapModel, mainGroup, 1, itemSize, textSize, orient);
+ }
+ this._createIndicator(visualMapModel, mainGroup, itemSize, textSize, orient);
+ targetGroup.add(mainGroup);
+ };
+ ContinuousView2.prototype._createHandle = function(visualMapModel, mainGroup, handleIndex, itemSize, textSize, orient) {
+ var onDrift = bind(this._dragHandle, this, handleIndex, false);
+ var onDragEnd = bind(this._dragHandle, this, handleIndex, true);
+ var handleSize = parsePercent(visualMapModel.get("handleSize"), itemSize[0]);
+ var handleThumb = createSymbol(visualMapModel.get("handleIcon"), -handleSize / 2, -handleSize / 2, handleSize, handleSize, null, true);
+ var cursor = getCursor2(this._orient);
+ handleThumb.attr({
+ cursor,
+ draggable: true,
+ drift: onDrift,
+ ondragend: onDragEnd,
+ onmousemove: function(e2) {
+ stop(e2.event);
+ }
+ });
+ handleThumb.x = itemSize[0] / 2;
+ handleThumb.useStyle(visualMapModel.getModel("handleStyle").getItemStyle());
+ handleThumb.setStyle({
+ strokeNoScale: true,
+ strokeFirst: true
+ });
+ handleThumb.style.lineWidth *= 2;
+ handleThumb.ensureState("emphasis").style = visualMapModel.getModel(["emphasis", "handleStyle"]).getItemStyle();
+ setAsHighDownDispatcher(handleThumb, true);
+ mainGroup.add(handleThumb);
+ var textStyleModel = this.visualMapModel.textStyleModel;
+ var handleLabel = new Text_default({
+ cursor,
+ draggable: true,
+ drift: onDrift,
+ onmousemove: function(e2) {
+ stop(e2.event);
+ },
+ ondragend: onDragEnd,
+ style: createTextStyle(textStyleModel, {
+ x: 0,
+ y: 0,
+ text: ""
+ })
+ });
+ handleLabel.ensureState("blur").style = {
+ opacity: 0.1
+ };
+ handleLabel.stateTransition = {
+ duration: 200
+ };
+ this.group.add(handleLabel);
+ var handleLabelPoint = [handleSize, 0];
+ var shapes = this._shapes;
+ shapes.handleThumbs[handleIndex] = handleThumb;
+ shapes.handleLabelPoints[handleIndex] = handleLabelPoint;
+ shapes.handleLabels[handleIndex] = handleLabel;
+ };
+ ContinuousView2.prototype._createIndicator = function(visualMapModel, mainGroup, itemSize, textSize, orient) {
+ var scale4 = parsePercent(visualMapModel.get("indicatorSize"), itemSize[0]);
+ var indicator = createSymbol(visualMapModel.get("indicatorIcon"), -scale4 / 2, -scale4 / 2, scale4, scale4, null, true);
+ indicator.attr({
+ cursor: "move",
+ invisible: true,
+ silent: true,
+ x: itemSize[0] / 2
+ });
+ var indicatorStyle = visualMapModel.getModel("indicatorStyle").getItemStyle();
+ if (indicator instanceof Image_default) {
+ var pathStyle = indicator.style;
+ indicator.useStyle(extend({
+ image: pathStyle.image,
+ x: pathStyle.x,
+ y: pathStyle.y,
+ width: pathStyle.width,
+ height: pathStyle.height
+ }, indicatorStyle));
+ } else {
+ indicator.useStyle(indicatorStyle);
+ }
+ mainGroup.add(indicator);
+ var textStyleModel = this.visualMapModel.textStyleModel;
+ var indicatorLabel = new Text_default({
+ silent: true,
+ invisible: true,
+ style: createTextStyle(textStyleModel, {
+ x: 0,
+ y: 0,
+ text: ""
+ })
+ });
+ this.group.add(indicatorLabel);
+ var indicatorLabelPoint = [(orient === "horizontal" ? textSize / 2 : HOVER_LINK_OUT) + itemSize[0] / 2, 0];
+ var shapes = this._shapes;
+ shapes.indicator = indicator;
+ shapes.indicatorLabel = indicatorLabel;
+ shapes.indicatorLabelPoint = indicatorLabelPoint;
+ this._firstShowIndicator = true;
+ };
+ ContinuousView2.prototype._dragHandle = function(handleIndex, isEnd, dx, dy) {
+ if (!this._useHandle) {
+ return;
+ }
+ this._dragging = !isEnd;
+ if (!isEnd) {
+ var vertex = this._applyTransform([dx, dy], this._shapes.mainGroup, true);
+ this._updateInterval(handleIndex, vertex[1]);
+ this._hideIndicator();
+ this._updateView();
+ }
+ if (isEnd === !this.visualMapModel.get("realtime")) {
+ this.api.dispatchAction({
+ type: "selectDataRange",
+ from: this.uid,
+ visualMapId: this.visualMapModel.id,
+ selected: this._dataInterval.slice()
+ });
+ }
+ if (isEnd) {
+ !this._hovering && this._clearHoverLinkToSeries();
+ } else if (useHoverLinkOnHandle(this.visualMapModel)) {
+ this._doHoverLinkToSeries(this._handleEnds[handleIndex], false);
+ }
+ };
+ ContinuousView2.prototype._resetInterval = function() {
+ var visualMapModel = this.visualMapModel;
+ var dataInterval = this._dataInterval = visualMapModel.getSelected();
+ var dataExtent = visualMapModel.getExtent();
+ var sizeExtent = [0, visualMapModel.itemSize[1]];
+ this._handleEnds = [linearMap3(dataInterval[0], dataExtent, sizeExtent, true), linearMap3(dataInterval[1], dataExtent, sizeExtent, true)];
+ };
+ ContinuousView2.prototype._updateInterval = function(handleIndex, delta) {
+ delta = delta || 0;
+ var visualMapModel = this.visualMapModel;
+ var handleEnds = this._handleEnds;
+ var sizeExtent = [0, visualMapModel.itemSize[1]];
+ sliderMove(
+ delta,
+ handleEnds,
+ sizeExtent,
+ handleIndex,
+ 0
+ );
+ var dataExtent = visualMapModel.getExtent();
+ this._dataInterval = [linearMap3(handleEnds[0], sizeExtent, dataExtent, true), linearMap3(handleEnds[1], sizeExtent, dataExtent, true)];
+ };
+ ContinuousView2.prototype._updateView = function(forSketch) {
+ var visualMapModel = this.visualMapModel;
+ var dataExtent = visualMapModel.getExtent();
+ var shapes = this._shapes;
+ var outOfRangeHandleEnds = [0, visualMapModel.itemSize[1]];
+ var inRangeHandleEnds = forSketch ? outOfRangeHandleEnds : this._handleEnds;
+ var visualInRange = this._createBarVisual(this._dataInterval, dataExtent, inRangeHandleEnds, "inRange");
+ var visualOutOfRange = this._createBarVisual(dataExtent, dataExtent, outOfRangeHandleEnds, "outOfRange");
+ shapes.inRange.setStyle({
+ fill: visualInRange.barColor
+ }).setShape("points", visualInRange.barPoints);
+ shapes.outOfRange.setStyle({
+ fill: visualOutOfRange.barColor
+ }).setShape("points", visualOutOfRange.barPoints);
+ this._updateHandle(inRangeHandleEnds, visualInRange);
+ };
+ ContinuousView2.prototype._createBarVisual = function(dataInterval, dataExtent, handleEnds, forceState) {
+ var opts = {
+ forceState,
+ convertOpacityToAlpha: true
+ };
+ var colorStops = this._makeColorGradient(dataInterval, opts);
+ var symbolSizes = [this.getControllerVisual(dataInterval[0], "symbolSize", opts), this.getControllerVisual(dataInterval[1], "symbolSize", opts)];
+ var barPoints = this._createBarPoints(handleEnds, symbolSizes);
+ return {
+ barColor: new LinearGradient_default(0, 0, 0, 1, colorStops),
+ barPoints,
+ handlesColor: [colorStops[0].color, colorStops[colorStops.length - 1].color]
+ };
+ };
+ ContinuousView2.prototype._makeColorGradient = function(dataInterval, opts) {
+ var sampleNumber = 100;
+ var colorStops = [];
+ var step = (dataInterval[1] - dataInterval[0]) / sampleNumber;
+ colorStops.push({
+ color: this.getControllerVisual(dataInterval[0], "color", opts),
+ offset: 0
+ });
+ for (var i = 1; i < sampleNumber; i++) {
+ var currValue = dataInterval[0] + step * i;
+ if (currValue > dataInterval[1]) {
+ break;
+ }
+ colorStops.push({
+ color: this.getControllerVisual(currValue, "color", opts),
+ offset: i / sampleNumber
+ });
+ }
+ colorStops.push({
+ color: this.getControllerVisual(dataInterval[1], "color", opts),
+ offset: 1
+ });
+ return colorStops;
+ };
+ ContinuousView2.prototype._createBarPoints = function(handleEnds, symbolSizes) {
+ var itemSize = this.visualMapModel.itemSize;
+ return [[itemSize[0] - symbolSizes[0], handleEnds[0]], [itemSize[0], handleEnds[0]], [itemSize[0], handleEnds[1]], [itemSize[0] - symbolSizes[1], handleEnds[1]]];
+ };
+ ContinuousView2.prototype._createBarGroup = function(itemAlign) {
+ var orient = this._orient;
+ var inverse = this.visualMapModel.get("inverse");
+ return new Group_default(orient === "horizontal" && !inverse ? {
+ scaleX: itemAlign === "bottom" ? 1 : -1,
+ rotation: Math.PI / 2
+ } : orient === "horizontal" && inverse ? {
+ scaleX: itemAlign === "bottom" ? -1 : 1,
+ rotation: -Math.PI / 2
+ } : orient === "vertical" && !inverse ? {
+ scaleX: itemAlign === "left" ? 1 : -1,
+ scaleY: -1
+ } : {
+ scaleX: itemAlign === "left" ? 1 : -1
+ });
+ };
+ ContinuousView2.prototype._updateHandle = function(handleEnds, visualInRange) {
+ if (!this._useHandle) {
+ return;
+ }
+ var shapes = this._shapes;
+ var visualMapModel = this.visualMapModel;
+ var handleThumbs = shapes.handleThumbs;
+ var handleLabels = shapes.handleLabels;
+ var itemSize = visualMapModel.itemSize;
+ var dataExtent = visualMapModel.getExtent();
+ var align = this._applyTransform("left", shapes.mainGroup);
+ each15([0, 1], function(handleIndex) {
+ var handleThumb = handleThumbs[handleIndex];
+ handleThumb.setStyle("fill", visualInRange.handlesColor[handleIndex]);
+ handleThumb.y = handleEnds[handleIndex];
+ var val = linearMap3(handleEnds[handleIndex], [0, itemSize[1]], dataExtent, true);
+ var symbolSize = this.getControllerVisual(val, "symbolSize");
+ handleThumb.scaleX = handleThumb.scaleY = symbolSize / itemSize[0];
+ handleThumb.x = itemSize[0] - symbolSize / 2;
+ var textPoint = applyTransform2(shapes.handleLabelPoints[handleIndex], getTransform(handleThumb, this.group));
+ if (this._orient === "horizontal") {
+ var minimumOffset = align === "left" || align === "top" ? (itemSize[0] - symbolSize) / 2 : (itemSize[0] - symbolSize) / -2;
+ textPoint[1] += minimumOffset;
+ }
+ handleLabels[handleIndex].setStyle({
+ x: textPoint[0],
+ y: textPoint[1],
+ text: visualMapModel.formatValueText(this._dataInterval[handleIndex]),
+ verticalAlign: "middle",
+ align: this._orient === "vertical" ? this._applyTransform("left", shapes.mainGroup) : "center"
+ });
+ }, this);
+ };
+ ContinuousView2.prototype._showIndicator = function(cursorValue, textValue, rangeSymbol, halfHoverLinkSize) {
+ var visualMapModel = this.visualMapModel;
+ var dataExtent = visualMapModel.getExtent();
+ var itemSize = visualMapModel.itemSize;
+ var sizeExtent = [0, itemSize[1]];
+ var shapes = this._shapes;
+ var indicator = shapes.indicator;
+ if (!indicator) {
+ return;
+ }
+ indicator.attr("invisible", false);
+ var opts = {
+ convertOpacityToAlpha: true
+ };
+ var color = this.getControllerVisual(cursorValue, "color", opts);
+ var symbolSize = this.getControllerVisual(cursorValue, "symbolSize");
+ var y = linearMap3(cursorValue, dataExtent, sizeExtent, true);
+ var x = itemSize[0] - symbolSize / 2;
+ var oldIndicatorPos = {
+ x: indicator.x,
+ y: indicator.y
+ };
+ indicator.y = y;
+ indicator.x = x;
+ var textPoint = applyTransform2(shapes.indicatorLabelPoint, getTransform(indicator, this.group));
+ var indicatorLabel = shapes.indicatorLabel;
+ indicatorLabel.attr("invisible", false);
+ var align = this._applyTransform("left", shapes.mainGroup);
+ var orient = this._orient;
+ var isHorizontal = orient === "horizontal";
+ indicatorLabel.setStyle({
+ text: (rangeSymbol ? rangeSymbol : "") + visualMapModel.formatValueText(textValue),
+ verticalAlign: isHorizontal ? align : "middle",
+ align: isHorizontal ? "center" : align
+ });
+ var indicatorNewProps = {
+ x,
+ y,
+ style: {
+ fill: color
+ }
+ };
+ var labelNewProps = {
+ style: {
+ x: textPoint[0],
+ y: textPoint[1]
+ }
+ };
+ if (visualMapModel.ecModel.isAnimationEnabled() && !this._firstShowIndicator) {
+ var animationCfg = {
+ duration: 100,
+ easing: "cubicInOut",
+ additive: true
+ };
+ indicator.x = oldIndicatorPos.x;
+ indicator.y = oldIndicatorPos.y;
+ indicator.animateTo(indicatorNewProps, animationCfg);
+ indicatorLabel.animateTo(labelNewProps, animationCfg);
+ } else {
+ indicator.attr(indicatorNewProps);
+ indicatorLabel.attr(labelNewProps);
+ }
+ this._firstShowIndicator = false;
+ var handleLabels = this._shapes.handleLabels;
+ if (handleLabels) {
+ for (var i = 0; i < handleLabels.length; i++) {
+ this.api.enterBlur(handleLabels[i]);
+ }
+ }
+ };
+ ContinuousView2.prototype._enableHoverLinkToSeries = function() {
+ var self2 = this;
+ this._shapes.mainGroup.on("mousemove", function(e2) {
+ self2._hovering = true;
+ if (!self2._dragging) {
+ var itemSize = self2.visualMapModel.itemSize;
+ var pos = self2._applyTransform([e2.offsetX, e2.offsetY], self2._shapes.mainGroup, true, true);
+ pos[1] = mathMin11(mathMax11(0, pos[1]), itemSize[1]);
+ self2._doHoverLinkToSeries(pos[1], 0 <= pos[0] && pos[0] <= itemSize[0]);
+ }
+ }).on("mouseout", function() {
+ self2._hovering = false;
+ !self2._dragging && self2._clearHoverLinkToSeries();
+ });
+ };
+ ContinuousView2.prototype._enableHoverLinkFromSeries = function() {
+ var zr = this.api.getZr();
+ if (this.visualMapModel.option.hoverLink) {
+ zr.on("mouseover", this._hoverLinkFromSeriesMouseOver, this);
+ zr.on("mouseout", this._hideIndicator, this);
+ } else {
+ this._clearHoverLinkFromSeries();
+ }
+ };
+ ContinuousView2.prototype._doHoverLinkToSeries = function(cursorPos, hoverOnBar) {
+ var visualMapModel = this.visualMapModel;
+ var itemSize = visualMapModel.itemSize;
+ if (!visualMapModel.option.hoverLink) {
+ return;
+ }
+ var sizeExtent = [0, itemSize[1]];
+ var dataExtent = visualMapModel.getExtent();
+ cursorPos = mathMin11(mathMax11(sizeExtent[0], cursorPos), sizeExtent[1]);
+ var halfHoverLinkSize = getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent);
+ var hoverRange = [cursorPos - halfHoverLinkSize, cursorPos + halfHoverLinkSize];
+ var cursorValue = linearMap3(cursorPos, sizeExtent, dataExtent, true);
+ var valueRange = [linearMap3(hoverRange[0], sizeExtent, dataExtent, true), linearMap3(hoverRange[1], sizeExtent, dataExtent, true)];
+ hoverRange[0] < sizeExtent[0] && (valueRange[0] = -Infinity);
+ hoverRange[1] > sizeExtent[1] && (valueRange[1] = Infinity);
+ if (hoverOnBar) {
+ if (valueRange[0] === -Infinity) {
+ this._showIndicator(cursorValue, valueRange[1], "< ", halfHoverLinkSize);
+ } else if (valueRange[1] === Infinity) {
+ this._showIndicator(cursorValue, valueRange[0], "> ", halfHoverLinkSize);
+ } else {
+ this._showIndicator(cursorValue, cursorValue, "\u2248 ", halfHoverLinkSize);
+ }
+ }
+ var oldBatch = this._hoverLinkDataIndices;
+ var newBatch = [];
+ if (hoverOnBar || useHoverLinkOnHandle(visualMapModel)) {
+ newBatch = this._hoverLinkDataIndices = visualMapModel.findTargetDataIndices(valueRange);
+ }
+ var resultBatches = compressBatches(oldBatch, newBatch);
+ this._dispatchHighDown("downplay", makeHighDownBatch(resultBatches[0], visualMapModel));
+ this._dispatchHighDown("highlight", makeHighDownBatch(resultBatches[1], visualMapModel));
+ };
+ ContinuousView2.prototype._hoverLinkFromSeriesMouseOver = function(e2) {
+ var ecData;
+ findEventDispatcher(e2.target, function(target) {
+ var currECData = getECData(target);
+ if (currECData.dataIndex != null) {
+ ecData = currECData;
+ return true;
+ }
+ }, true);
+ if (!ecData) {
+ return;
+ }
+ var dataModel = this.ecModel.getSeriesByIndex(ecData.seriesIndex);
+ var visualMapModel = this.visualMapModel;
+ if (!visualMapModel.isTargetSeries(dataModel)) {
+ return;
+ }
+ var data = dataModel.getData(ecData.dataType);
+ var value = data.getStore().get(visualMapModel.getDataDimensionIndex(data), ecData.dataIndex);
+ if (!isNaN(value)) {
+ this._showIndicator(value, value);
+ }
+ };
+ ContinuousView2.prototype._hideIndicator = function() {
+ var shapes = this._shapes;
+ shapes.indicator && shapes.indicator.attr("invisible", true);
+ shapes.indicatorLabel && shapes.indicatorLabel.attr("invisible", true);
+ var handleLabels = this._shapes.handleLabels;
+ if (handleLabels) {
+ for (var i = 0; i < handleLabels.length; i++) {
+ this.api.leaveBlur(handleLabels[i]);
+ }
+ }
+ };
+ ContinuousView2.prototype._clearHoverLinkToSeries = function() {
+ this._hideIndicator();
+ var indices = this._hoverLinkDataIndices;
+ this._dispatchHighDown("downplay", makeHighDownBatch(indices, this.visualMapModel));
+ indices.length = 0;
+ };
+ ContinuousView2.prototype._clearHoverLinkFromSeries = function() {
+ this._hideIndicator();
+ var zr = this.api.getZr();
+ zr.off("mouseover", this._hoverLinkFromSeriesMouseOver);
+ zr.off("mouseout", this._hideIndicator);
+ };
+ ContinuousView2.prototype._applyTransform = function(vertex, element, inverse, global2) {
+ var transform2 = getTransform(element, global2 ? null : this.group);
+ return isArray(vertex) ? applyTransform2(vertex, transform2, inverse) : transformDirection(vertex, transform2, inverse);
+ };
+ ContinuousView2.prototype._dispatchHighDown = function(type, batch) {
+ batch && batch.length && this.api.dispatchAction({
+ type,
+ batch
+ });
+ };
+ ContinuousView2.prototype.dispose = function() {
+ this._clearHoverLinkFromSeries();
+ this._clearHoverLinkToSeries();
+ };
+ ContinuousView2.type = "visualMap.continuous";
+ return ContinuousView2;
+}(VisualMapView_default);
+function createPolygon(points4, cursor, onDrift, onDragEnd) {
+ return new Polygon_default({
+ shape: {
+ points: points4
+ },
+ draggable: !!onDrift,
+ cursor,
+ drift: onDrift,
+ onmousemove: function(e2) {
+ stop(e2.event);
+ },
+ ondragend: onDragEnd
+ });
+}
+function getHalfHoverLinkSize(visualMapModel, dataExtent, sizeExtent) {
+ var halfHoverLinkSize = HOVER_LINK_SIZE / 2;
+ var hoverLinkDataSize = visualMapModel.get("hoverLinkDataSize");
+ if (hoverLinkDataSize) {
+ halfHoverLinkSize = linearMap3(hoverLinkDataSize, dataExtent, sizeExtent, true) / 2;
+ }
+ return halfHoverLinkSize;
+}
+function useHoverLinkOnHandle(visualMapModel) {
+ var hoverLinkOnHandle = visualMapModel.get("hoverLinkOnHandle");
+ return !!(hoverLinkOnHandle == null ? visualMapModel.get("realtime") : hoverLinkOnHandle);
+}
+function getCursor2(orient) {
+ return orient === "vertical" ? "ns-resize" : "ew-resize";
+}
+var ContinuousView_default = ContinuousView;
+
+// node_modules/echarts/lib/component/visualMap/visualMapAction.js
+var visualMapActionInfo = {
+ type: "selectDataRange",
+ event: "dataRangeSelected",
+ update: "update"
+};
+var visualMapActionHander = function(payload, ecModel) {
+ ecModel.eachComponent({
+ mainType: "visualMap",
+ query: payload
+ }, function(model) {
+ model.setSelected(payload.selected);
+ });
+};
+
+// node_modules/echarts/lib/component/visualMap/visualEncoding.js
+var visualMapEncodingHandlers = [
+ {
+ createOnAllSeries: true,
+ reset: function(seriesModel, ecModel) {
+ var resetDefines = [];
+ ecModel.eachComponent("visualMap", function(visualMapModel) {
+ var pipelineContext = seriesModel.pipelineContext;
+ if (!visualMapModel.isTargetSeries(seriesModel) || pipelineContext && pipelineContext.large) {
+ return;
+ }
+ resetDefines.push(incrementalApplyVisual(visualMapModel.stateList, visualMapModel.targetVisuals, bind(visualMapModel.getValueState, visualMapModel), visualMapModel.getDataDimensionIndex(seriesModel.getData())));
+ });
+ return resetDefines;
+ }
+ },
+ {
+ createOnAllSeries: true,
+ reset: function(seriesModel, ecModel) {
+ var data = seriesModel.getData();
+ var visualMetaList = [];
+ ecModel.eachComponent("visualMap", function(visualMapModel) {
+ if (visualMapModel.isTargetSeries(seriesModel)) {
+ var visualMeta = visualMapModel.getVisualMeta(bind(getColorVisual, null, seriesModel, visualMapModel)) || {
+ stops: [],
+ outerColors: []
+ };
+ var dimIdx = visualMapModel.getDataDimensionIndex(data);
+ if (dimIdx >= 0) {
+ visualMeta.dimension = dimIdx;
+ visualMetaList.push(visualMeta);
+ }
+ }
+ });
+ seriesModel.getData().setVisual("visualMeta", visualMetaList);
+ }
+ }
+];
+function getColorVisual(seriesModel, visualMapModel, value, valueState) {
+ var mappings = visualMapModel.targetVisuals[valueState];
+ var visualTypes = VisualMapping_default.prepareVisualTypes(mappings);
+ var resultVisual = {
+ color: getVisualFromData(seriesModel.getData(), "color")
+ };
+ for (var i = 0, len2 = visualTypes.length; i < len2; i++) {
+ var type = visualTypes[i];
+ var mapping = mappings[type === "opacity" ? "__alphaForOpacity" : type];
+ mapping && mapping.applyVisual(value, getVisual, setVisual);
+ }
+ return resultVisual.color;
+ function getVisual(key) {
+ return resultVisual[key];
+ }
+ function setVisual(key, value2) {
+ resultVisual[key] = value2;
+ }
+}
+
+// node_modules/echarts/lib/component/visualMap/preprocessor.js
+var each16 = each;
+function visualMapPreprocessor(option) {
+ var visualMap = option && option.visualMap;
+ if (!isArray(visualMap)) {
+ visualMap = visualMap ? [visualMap] : [];
+ }
+ each16(visualMap, function(opt) {
+ if (!opt) {
+ return;
+ }
+ if (has2(opt, "splitList") && !has2(opt, "pieces")) {
+ opt.pieces = opt.splitList;
+ delete opt.splitList;
+ }
+ var pieces = opt.pieces;
+ if (pieces && isArray(pieces)) {
+ each16(pieces, function(piece) {
+ if (isObject(piece)) {
+ if (has2(piece, "start") && !has2(piece, "min")) {
+ piece.min = piece.start;
+ }
+ if (has2(piece, "end") && !has2(piece, "max")) {
+ piece.max = piece.end;
+ }
+ }
+ });
+ }
+ });
+}
+function has2(obj, name) {
+ return obj && obj.hasOwnProperty && obj.hasOwnProperty(name);
+}
+
+// node_modules/echarts/lib/component/visualMap/installCommon.js
+var installed2 = false;
+function installCommon2(registers) {
+ if (installed2) {
+ return;
+ }
+ installed2 = true;
+ registers.registerSubTypeDefaulter("visualMap", function(option) {
+ return !option.categories && (!(option.pieces ? option.pieces.length > 0 : option.splitNumber > 0) || option.calculable) ? "continuous" : "piecewise";
+ });
+ registers.registerAction(visualMapActionInfo, visualMapActionHander);
+ each(visualMapEncodingHandlers, function(handler) {
+ registers.registerVisual(registers.PRIORITY.VISUAL.COMPONENT, handler);
+ });
+ registers.registerPreprocessor(visualMapPreprocessor);
+}
+
+// node_modules/echarts/lib/component/visualMap/installVisualMapContinuous.js
+function install50(registers) {
+ registers.registerComponentModel(ContinuousModel_default);
+ registers.registerComponentView(ContinuousView_default);
+ installCommon2(registers);
+}
+
+// node_modules/echarts/lib/component/visualMap/PiecewiseModel.js
+var PiecewiseModel = function(_super) {
+ __extends(PiecewiseModel2, _super);
+ function PiecewiseModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = PiecewiseModel2.type;
+ _this._pieceList = [];
+ return _this;
+ }
+ PiecewiseModel2.prototype.optionUpdated = function(newOption, isInit) {
+ _super.prototype.optionUpdated.apply(this, arguments);
+ this.resetExtent();
+ var mode = this._mode = this._determineMode();
+ this._pieceList = [];
+ resetMethods[this._mode].call(this, this._pieceList);
+ this._resetSelected(newOption, isInit);
+ var categories = this.option.categories;
+ this.resetVisual(function(mappingOption, state) {
+ if (mode === "categories") {
+ mappingOption.mappingMethod = "category";
+ mappingOption.categories = clone(categories);
+ } else {
+ mappingOption.dataExtent = this.getExtent();
+ mappingOption.mappingMethod = "piecewise";
+ mappingOption.pieceList = map(this._pieceList, function(piece) {
+ piece = clone(piece);
+ if (state !== "inRange") {
+ piece.visual = null;
+ }
+ return piece;
+ });
+ }
+ });
+ };
+ PiecewiseModel2.prototype.completeVisualOption = function() {
+ var option = this.option;
+ var visualTypesInPieces = {};
+ var visualTypes = VisualMapping_default.listVisualTypes();
+ var isCategory2 = this.isCategory();
+ each(option.pieces, function(piece) {
+ each(visualTypes, function(visualType) {
+ if (piece.hasOwnProperty(visualType)) {
+ visualTypesInPieces[visualType] = 1;
+ }
+ });
+ });
+ each(visualTypesInPieces, function(v, visualType) {
+ var exists = false;
+ each(this.stateList, function(state) {
+ exists = exists || has3(option, state, visualType) || has3(option.target, state, visualType);
+ }, this);
+ !exists && each(this.stateList, function(state) {
+ (option[state] || (option[state] = {}))[visualType] = visualDefault_default.get(visualType, state === "inRange" ? "active" : "inactive", isCategory2);
+ });
+ }, this);
+ function has3(obj, state, visualType) {
+ return obj && obj[state] && obj[state].hasOwnProperty(visualType);
+ }
+ _super.prototype.completeVisualOption.apply(this, arguments);
+ };
+ PiecewiseModel2.prototype._resetSelected = function(newOption, isInit) {
+ var thisOption = this.option;
+ var pieceList = this._pieceList;
+ var selected = (isInit ? thisOption : newOption).selected || {};
+ thisOption.selected = selected;
+ each(pieceList, function(piece, index) {
+ var key = this.getSelectedMapKey(piece);
+ if (!selected.hasOwnProperty(key)) {
+ selected[key] = true;
+ }
+ }, this);
+ if (thisOption.selectedMode === "single") {
+ var hasSel_1 = false;
+ each(pieceList, function(piece, index) {
+ var key = this.getSelectedMapKey(piece);
+ if (selected[key]) {
+ hasSel_1 ? selected[key] = false : hasSel_1 = true;
+ }
+ }, this);
+ }
+ };
+ PiecewiseModel2.prototype.getItemSymbol = function() {
+ return this.get("itemSymbol");
+ };
+ PiecewiseModel2.prototype.getSelectedMapKey = function(piece) {
+ return this._mode === "categories" ? piece.value + "" : piece.index + "";
+ };
+ PiecewiseModel2.prototype.getPieceList = function() {
+ return this._pieceList;
+ };
+ PiecewiseModel2.prototype._determineMode = function() {
+ var option = this.option;
+ return option.pieces && option.pieces.length > 0 ? "pieces" : this.option.categories ? "categories" : "splitNumber";
+ };
+ PiecewiseModel2.prototype.setSelected = function(selected) {
+ this.option.selected = clone(selected);
+ };
+ PiecewiseModel2.prototype.getValueState = function(value) {
+ var index = VisualMapping_default.findPieceIndex(value, this._pieceList);
+ return index != null ? this.option.selected[this.getSelectedMapKey(this._pieceList[index])] ? "inRange" : "outOfRange" : "outOfRange";
+ };
+ PiecewiseModel2.prototype.findTargetDataIndices = function(pieceIndex) {
+ var result = [];
+ var pieceList = this._pieceList;
+ this.eachTargetSeries(function(seriesModel) {
+ var dataIndices = [];
+ var data = seriesModel.getData();
+ data.each(this.getDataDimensionIndex(data), function(value, dataIndex) {
+ var pIdx = VisualMapping_default.findPieceIndex(value, pieceList);
+ pIdx === pieceIndex && dataIndices.push(dataIndex);
+ }, this);
+ result.push({
+ seriesId: seriesModel.id,
+ dataIndex: dataIndices
+ });
+ }, this);
+ return result;
+ };
+ PiecewiseModel2.prototype.getRepresentValue = function(piece) {
+ var representValue;
+ if (this.isCategory()) {
+ representValue = piece.value;
+ } else {
+ if (piece.value != null) {
+ representValue = piece.value;
+ } else {
+ var pieceInterval = piece.interval || [];
+ representValue = pieceInterval[0] === -Infinity && pieceInterval[1] === Infinity ? 0 : (pieceInterval[0] + pieceInterval[1]) / 2;
+ }
+ }
+ return representValue;
+ };
+ PiecewiseModel2.prototype.getVisualMeta = function(getColorVisual2) {
+ if (this.isCategory()) {
+ return;
+ }
+ var stops = [];
+ var outerColors = ["", ""];
+ var visualMapModel = this;
+ function setStop(interval, valueState) {
+ var representValue = visualMapModel.getRepresentValue({
+ interval
+ });
+ if (!valueState) {
+ valueState = visualMapModel.getValueState(representValue);
+ }
+ var color = getColorVisual2(representValue, valueState);
+ if (interval[0] === -Infinity) {
+ outerColors[0] = color;
+ } else if (interval[1] === Infinity) {
+ outerColors[1] = color;
+ } else {
+ stops.push({
+ value: interval[0],
+ color
+ }, {
+ value: interval[1],
+ color
+ });
+ }
+ }
+ var pieceList = this._pieceList.slice();
+ if (!pieceList.length) {
+ pieceList.push({
+ interval: [-Infinity, Infinity]
+ });
+ } else {
+ var edge = pieceList[0].interval[0];
+ edge !== -Infinity && pieceList.unshift({
+ interval: [-Infinity, edge]
+ });
+ edge = pieceList[pieceList.length - 1].interval[1];
+ edge !== Infinity && pieceList.push({
+ interval: [edge, Infinity]
+ });
+ }
+ var curr = -Infinity;
+ each(pieceList, function(piece) {
+ var interval = piece.interval;
+ if (interval) {
+ interval[0] > curr && setStop([curr, interval[0]], "outOfRange");
+ setStop(interval.slice());
+ curr = interval[1];
+ }
+ }, this);
+ return {
+ stops,
+ outerColors
+ };
+ };
+ PiecewiseModel2.type = "visualMap.piecewise";
+ PiecewiseModel2.defaultOption = inheritDefaultOption(VisualMapModel_default.defaultOption, {
+ selected: null,
+ minOpen: false,
+ maxOpen: false,
+ align: "auto",
+ itemWidth: 20,
+ itemHeight: 14,
+ itemSymbol: "roundRect",
+ pieces: null,
+ categories: null,
+ splitNumber: 5,
+ selectedMode: "multiple",
+ itemGap: 10,
+ hoverLink: true
+ });
+ return PiecewiseModel2;
+}(VisualMapModel_default);
+var resetMethods = {
+ splitNumber: function(outPieceList) {
+ var thisOption = this.option;
+ var precision = Math.min(thisOption.precision, 20);
+ var dataExtent = this.getExtent();
+ var splitNumber = thisOption.splitNumber;
+ splitNumber = Math.max(parseInt(splitNumber, 10), 1);
+ thisOption.splitNumber = splitNumber;
+ var splitStep = (dataExtent[1] - dataExtent[0]) / splitNumber;
+ while (+splitStep.toFixed(precision) !== splitStep && precision < 5) {
+ precision++;
+ }
+ thisOption.precision = precision;
+ splitStep = +splitStep.toFixed(precision);
+ if (thisOption.minOpen) {
+ outPieceList.push({
+ interval: [-Infinity, dataExtent[0]],
+ close: [0, 0]
+ });
+ }
+ for (var index = 0, curr = dataExtent[0]; index < splitNumber; curr += splitStep, index++) {
+ var max3 = index === splitNumber - 1 ? dataExtent[1] : curr + splitStep;
+ outPieceList.push({
+ interval: [curr, max3],
+ close: [1, 1]
+ });
+ }
+ if (thisOption.maxOpen) {
+ outPieceList.push({
+ interval: [dataExtent[1], Infinity],
+ close: [0, 0]
+ });
+ }
+ reformIntervals(outPieceList);
+ each(outPieceList, function(piece, index2) {
+ piece.index = index2;
+ piece.text = this.formatValueText(piece.interval);
+ }, this);
+ },
+ categories: function(outPieceList) {
+ var thisOption = this.option;
+ each(thisOption.categories, function(cate) {
+ outPieceList.push({
+ text: this.formatValueText(cate, true),
+ value: cate
+ });
+ }, this);
+ normalizeReverse(thisOption, outPieceList);
+ },
+ pieces: function(outPieceList) {
+ var thisOption = this.option;
+ each(thisOption.pieces, function(pieceListItem, index) {
+ if (!isObject(pieceListItem)) {
+ pieceListItem = {
+ value: pieceListItem
+ };
+ }
+ var item = {
+ text: "",
+ index
+ };
+ if (pieceListItem.label != null) {
+ item.text = pieceListItem.label;
+ }
+ if (pieceListItem.hasOwnProperty("value")) {
+ var value = item.value = pieceListItem.value;
+ item.interval = [value, value];
+ item.close = [1, 1];
+ } else {
+ var interval = item.interval = [];
+ var close_1 = item.close = [0, 0];
+ var closeList = [1, 0, 1];
+ var infinityList = [-Infinity, Infinity];
+ var useMinMax = [];
+ for (var lg = 0; lg < 2; lg++) {
+ var names = [["gte", "gt", "min"], ["lte", "lt", "max"]][lg];
+ for (var i = 0; i < 3 && interval[lg] == null; i++) {
+ interval[lg] = pieceListItem[names[i]];
+ close_1[lg] = closeList[i];
+ useMinMax[lg] = i === 2;
+ }
+ interval[lg] == null && (interval[lg] = infinityList[lg]);
+ }
+ useMinMax[0] && interval[1] === Infinity && (close_1[0] = 0);
+ useMinMax[1] && interval[0] === -Infinity && (close_1[1] = 0);
+ if (true) {
+ if (interval[0] > interval[1]) {
+ console.warn("Piece " + index + "is illegal: " + interval + " lower bound should not greater then uppper bound.");
+ }
+ }
+ if (interval[0] === interval[1] && close_1[0] && close_1[1]) {
+ item.value = interval[0];
+ }
+ }
+ item.visual = VisualMapping_default.retrieveVisuals(pieceListItem);
+ outPieceList.push(item);
+ }, this);
+ normalizeReverse(thisOption, outPieceList);
+ reformIntervals(outPieceList);
+ each(outPieceList, function(piece) {
+ var close = piece.close;
+ var edgeSymbols = [["<", "\u2264"][close[1]], [">", "\u2265"][close[0]]];
+ piece.text = piece.text || this.formatValueText(piece.value != null ? piece.value : piece.interval, false, edgeSymbols);
+ }, this);
+ }
+};
+function normalizeReverse(thisOption, pieceList) {
+ var inverse = thisOption.inverse;
+ if (thisOption.orient === "vertical" ? !inverse : inverse) {
+ pieceList.reverse();
+ }
+}
+var PiecewiseModel_default = PiecewiseModel;
+
+// node_modules/echarts/lib/component/visualMap/PiecewiseView.js
+var PiecewiseVisualMapView = function(_super) {
+ __extends(PiecewiseVisualMapView2, _super);
+ function PiecewiseVisualMapView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = PiecewiseVisualMapView2.type;
+ return _this;
+ }
+ PiecewiseVisualMapView2.prototype.doRender = function() {
+ var thisGroup = this.group;
+ thisGroup.removeAll();
+ var visualMapModel = this.visualMapModel;
+ var textGap = visualMapModel.get("textGap");
+ var textStyleModel = visualMapModel.textStyleModel;
+ var textFont = textStyleModel.getFont();
+ var textFill = textStyleModel.getTextColor();
+ var itemAlign = this._getItemAlign();
+ var itemSize = visualMapModel.itemSize;
+ var viewData = this._getViewData();
+ var endsText = viewData.endsText;
+ var showLabel = retrieve(visualMapModel.get("showLabel", true), !endsText);
+ var silent = !visualMapModel.get("selectedMode");
+ endsText && this._renderEndsText(thisGroup, endsText[0], itemSize, showLabel, itemAlign);
+ each(viewData.viewPieceList, function(item) {
+ var piece = item.piece;
+ var itemGroup = new Group_default();
+ itemGroup.onclick = bind(this._onItemClick, this, piece);
+ this._enableHoverLink(itemGroup, item.indexInModelPieceList);
+ var representValue = visualMapModel.getRepresentValue(piece);
+ this._createItemSymbol(itemGroup, representValue, [0, 0, itemSize[0], itemSize[1]], silent);
+ if (showLabel) {
+ var visualState = this.visualMapModel.getValueState(representValue);
+ itemGroup.add(new Text_default({
+ style: {
+ x: itemAlign === "right" ? -textGap : itemSize[0] + textGap,
+ y: itemSize[1] / 2,
+ text: piece.text,
+ verticalAlign: "middle",
+ align: itemAlign,
+ font: textFont,
+ fill: textFill,
+ opacity: visualState === "outOfRange" ? 0.5 : 1
+ },
+ silent
+ }));
+ }
+ thisGroup.add(itemGroup);
+ }, this);
+ endsText && this._renderEndsText(thisGroup, endsText[1], itemSize, showLabel, itemAlign);
+ box(visualMapModel.get("orient"), thisGroup, visualMapModel.get("itemGap"));
+ this.renderBackground(thisGroup);
+ this.positionGroup(thisGroup);
+ };
+ PiecewiseVisualMapView2.prototype._enableHoverLink = function(itemGroup, pieceIndex) {
+ var _this = this;
+ itemGroup.on("mouseover", function() {
+ return onHoverLink("highlight");
+ }).on("mouseout", function() {
+ return onHoverLink("downplay");
+ });
+ var onHoverLink = function(method) {
+ var visualMapModel = _this.visualMapModel;
+ visualMapModel.option.hoverLink && _this.api.dispatchAction({
+ type: method,
+ batch: makeHighDownBatch(visualMapModel.findTargetDataIndices(pieceIndex), visualMapModel)
+ });
+ };
+ };
+ PiecewiseVisualMapView2.prototype._getItemAlign = function() {
+ var visualMapModel = this.visualMapModel;
+ var modelOption = visualMapModel.option;
+ if (modelOption.orient === "vertical") {
+ return getItemAlign(visualMapModel, this.api, visualMapModel.itemSize);
+ } else {
+ var align = modelOption.align;
+ if (!align || align === "auto") {
+ align = "left";
+ }
+ return align;
+ }
+ };
+ PiecewiseVisualMapView2.prototype._renderEndsText = function(group, text, itemSize, showLabel, itemAlign) {
+ if (!text) {
+ return;
+ }
+ var itemGroup = new Group_default();
+ var textStyleModel = this.visualMapModel.textStyleModel;
+ itemGroup.add(new Text_default({
+ style: createTextStyle(textStyleModel, {
+ x: showLabel ? itemAlign === "right" ? itemSize[0] : 0 : itemSize[0] / 2,
+ y: itemSize[1] / 2,
+ verticalAlign: "middle",
+ align: showLabel ? itemAlign : "center",
+ text
+ })
+ }));
+ group.add(itemGroup);
+ };
+ PiecewiseVisualMapView2.prototype._getViewData = function() {
+ var visualMapModel = this.visualMapModel;
+ var viewPieceList = map(visualMapModel.getPieceList(), function(piece, index) {
+ return {
+ piece,
+ indexInModelPieceList: index
+ };
+ });
+ var endsText = visualMapModel.get("text");
+ var orient = visualMapModel.get("orient");
+ var inverse = visualMapModel.get("inverse");
+ if (orient === "horizontal" ? inverse : !inverse) {
+ viewPieceList.reverse();
+ } else if (endsText) {
+ endsText = endsText.slice().reverse();
+ }
+ return {
+ viewPieceList,
+ endsText
+ };
+ };
+ PiecewiseVisualMapView2.prototype._createItemSymbol = function(group, representValue, shapeParam, silent) {
+ var itemSymbol = createSymbol(
+ this.getControllerVisual(representValue, "symbol"),
+ shapeParam[0],
+ shapeParam[1],
+ shapeParam[2],
+ shapeParam[3],
+ this.getControllerVisual(representValue, "color")
+ );
+ itemSymbol.silent = silent;
+ group.add(itemSymbol);
+ };
+ PiecewiseVisualMapView2.prototype._onItemClick = function(piece) {
+ var visualMapModel = this.visualMapModel;
+ var option = visualMapModel.option;
+ var selectedMode = option.selectedMode;
+ if (!selectedMode) {
+ return;
+ }
+ var selected = clone(option.selected);
+ var newKey = visualMapModel.getSelectedMapKey(piece);
+ if (selectedMode === "single" || selectedMode === true) {
+ selected[newKey] = true;
+ each(selected, function(o, key) {
+ selected[key] = key === newKey;
+ });
+ } else {
+ selected[newKey] = !selected[newKey];
+ }
+ this.api.dispatchAction({
+ type: "selectDataRange",
+ from: this.uid,
+ visualMapId: this.visualMapModel.id,
+ selected
+ });
+ };
+ PiecewiseVisualMapView2.type = "visualMap.piecewise";
+ return PiecewiseVisualMapView2;
+}(VisualMapView_default);
+var PiecewiseView_default = PiecewiseVisualMapView;
+
+// node_modules/echarts/lib/component/visualMap/installVisualMapPiecewise.js
+function install51(registers) {
+ registers.registerComponentModel(PiecewiseModel_default);
+ registers.registerComponentView(PiecewiseView_default);
+ installCommon2(registers);
+}
+
+// node_modules/echarts/lib/component/visualMap/install.js
+function install52(registers) {
+ use(install50);
+ use(install51);
+}
+
+// node_modules/echarts/lib/visual/aria.js
+var DEFAULT_OPTION = {
+ label: {
+ enabled: true
+ },
+ decal: {
+ show: false
+ }
+};
+var inner22 = makeInner();
+var decalPaletteScope = {};
+function ariaVisual(ecModel, api) {
+ var ariaModel = ecModel.getModel("aria");
+ if (!ariaModel.get("enabled")) {
+ return;
+ }
+ var defaultOption3 = clone(DEFAULT_OPTION);
+ merge(defaultOption3.label, ecModel.getLocaleModel().get("aria"), false);
+ merge(ariaModel.option, defaultOption3, false);
+ setDecal();
+ setLabel();
+ function setDecal() {
+ var decalModel = ariaModel.getModel("decal");
+ var useDecal = decalModel.get("show");
+ if (useDecal) {
+ var paletteScopeGroupByType_1 = createHashMap();
+ ecModel.eachSeries(function(seriesModel) {
+ if (seriesModel.isColorBySeries()) {
+ return;
+ }
+ var decalScope = paletteScopeGroupByType_1.get(seriesModel.type);
+ if (!decalScope) {
+ decalScope = {};
+ paletteScopeGroupByType_1.set(seriesModel.type, decalScope);
+ }
+ inner22(seriesModel).scope = decalScope;
+ });
+ ecModel.eachRawSeries(function(seriesModel) {
+ if (ecModel.isSeriesFiltered(seriesModel)) {
+ return;
+ }
+ if (isFunction(seriesModel.enableAriaDecal)) {
+ seriesModel.enableAriaDecal();
+ return;
+ }
+ var data = seriesModel.getData();
+ if (!seriesModel.isColorBySeries()) {
+ var dataAll_1 = seriesModel.getRawData();
+ var idxMap_1 = {};
+ var decalScope_1 = inner22(seriesModel).scope;
+ data.each(function(idx) {
+ var rawIdx = data.getRawIndex(idx);
+ idxMap_1[rawIdx] = idx;
+ });
+ var dataCount_1 = dataAll_1.count();
+ dataAll_1.each(function(rawIdx) {
+ var idx = idxMap_1[rawIdx];
+ var name = dataAll_1.getName(rawIdx) || rawIdx + "";
+ var paletteDecal2 = getDecalFromPalette(seriesModel.ecModel, name, decalScope_1, dataCount_1);
+ var specifiedDecal2 = data.getItemVisual(idx, "decal");
+ data.setItemVisual(idx, "decal", mergeDecal(specifiedDecal2, paletteDecal2));
+ });
+ } else {
+ var paletteDecal = getDecalFromPalette(seriesModel.ecModel, seriesModel.name, decalPaletteScope, ecModel.getSeriesCount());
+ var specifiedDecal = data.getVisual("decal");
+ data.setVisual("decal", mergeDecal(specifiedDecal, paletteDecal));
+ }
+ function mergeDecal(specifiedDecal2, paletteDecal2) {
+ var resultDecal = specifiedDecal2 ? extend(extend({}, paletteDecal2), specifiedDecal2) : paletteDecal2;
+ resultDecal.dirty = true;
+ return resultDecal;
+ }
+ });
+ }
+ }
+ function setLabel() {
+ var dom = api.getZr().dom;
+ if (!dom) {
+ return;
+ }
+ var labelLocale = ecModel.getLocaleModel().get("aria");
+ var labelModel = ariaModel.getModel("label");
+ labelModel.option = defaults(labelModel.option, labelLocale);
+ if (!labelModel.get("enabled")) {
+ return;
+ }
+ dom.setAttribute("role", "img");
+ if (labelModel.get("description")) {
+ dom.setAttribute("aria-label", labelModel.get("description"));
+ return;
+ }
+ var seriesCnt = ecModel.getSeriesCount();
+ var maxDataCnt = labelModel.get(["data", "maxCount"]) || 10;
+ var maxSeriesCnt = labelModel.get(["series", "maxCount"]) || 10;
+ var displaySeriesCnt = Math.min(seriesCnt, maxSeriesCnt);
+ var ariaLabel;
+ if (seriesCnt < 1) {
+ return;
+ } else {
+ var title = getTitle();
+ if (title) {
+ var withTitle = labelModel.get(["general", "withTitle"]);
+ ariaLabel = replace(withTitle, {
+ title
+ });
+ } else {
+ ariaLabel = labelModel.get(["general", "withoutTitle"]);
+ }
+ var seriesLabels_1 = [];
+ var prefix = seriesCnt > 1 ? labelModel.get(["series", "multiple", "prefix"]) : labelModel.get(["series", "single", "prefix"]);
+ ariaLabel += replace(prefix, {
+ seriesCount: seriesCnt
+ });
+ ecModel.eachSeries(function(seriesModel, idx) {
+ if (idx < displaySeriesCnt) {
+ var seriesLabel = void 0;
+ var seriesName = seriesModel.get("name");
+ var withName = seriesName ? "withName" : "withoutName";
+ seriesLabel = seriesCnt > 1 ? labelModel.get(["series", "multiple", withName]) : labelModel.get(["series", "single", withName]);
+ seriesLabel = replace(seriesLabel, {
+ seriesId: seriesModel.seriesIndex,
+ seriesName: seriesModel.get("name"),
+ seriesType: getSeriesTypeName(seriesModel.subType)
+ });
+ var data = seriesModel.getData();
+ if (data.count() > maxDataCnt) {
+ var partialLabel = labelModel.get(["data", "partialData"]);
+ seriesLabel += replace(partialLabel, {
+ displayCnt: maxDataCnt
+ });
+ } else {
+ seriesLabel += labelModel.get(["data", "allData"]);
+ }
+ var middleSeparator_1 = labelModel.get(["data", "separator", "middle"]);
+ var endSeparator_1 = labelModel.get(["data", "separator", "end"]);
+ var excludeDimensionId_1 = labelModel.get(["data", "excludeDimensionId"]);
+ var dataLabels = [];
+ for (var i = 0; i < data.count(); i++) {
+ if (i < maxDataCnt) {
+ var name_1 = data.getName(i);
+ var value = !excludeDimensionId_1 ? data.getValues(i) : filter(data.getValues(i), function(v, j) {
+ return indexOf(excludeDimensionId_1, j) === -1;
+ });
+ var dataLabel = labelModel.get(["data", name_1 ? "withName" : "withoutName"]);
+ dataLabels.push(replace(dataLabel, {
+ name: name_1,
+ value: value.join(middleSeparator_1)
+ }));
+ }
+ }
+ seriesLabel += dataLabels.join(middleSeparator_1) + endSeparator_1;
+ seriesLabels_1.push(seriesLabel);
+ }
+ });
+ var separatorModel = labelModel.getModel(["series", "multiple", "separator"]);
+ var middleSeparator = separatorModel.get("middle");
+ var endSeparator = separatorModel.get("end");
+ ariaLabel += seriesLabels_1.join(middleSeparator) + endSeparator;
+ dom.setAttribute("aria-label", ariaLabel);
+ }
+ }
+ function replace(str, keyValues) {
+ if (!isString(str)) {
+ return str;
+ }
+ var result = str;
+ each(keyValues, function(value, key) {
+ result = result.replace(new RegExp("\\{\\s*" + key + "\\s*\\}", "g"), value);
+ });
+ return result;
+ }
+ function getTitle() {
+ var title = ecModel.get("title");
+ if (title && title.length) {
+ title = title[0];
+ }
+ return title && title.text;
+ }
+ function getSeriesTypeName(type) {
+ var typeNames = ecModel.getLocaleModel().get(["series", "typeNames"]);
+ return typeNames[type] || typeNames.chart;
+ }
+}
+
+// node_modules/echarts/lib/component/aria/preprocessor.js
+function ariaPreprocessor(option) {
+ if (!option || !option.aria) {
+ return;
+ }
+ var aria = option.aria;
+ if (aria.show != null) {
+ aria.enabled = aria.show;
+ }
+ aria.label = aria.label || {};
+ each(["description", "general", "series", "data"], function(name) {
+ if (aria[name] != null) {
+ aria.label[name] = aria[name];
+ }
+ });
+}
+
+// node_modules/echarts/lib/component/aria/install.js
+function install53(registers) {
+ registers.registerPreprocessor(ariaPreprocessor);
+ registers.registerVisual(registers.PRIORITY.VISUAL.ARIA, ariaVisual);
+}
+
+// node_modules/echarts/lib/util/conditionalExpression.js
+var RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {
+ value: "eq",
+ "<": "lt",
+ "<=": "lte",
+ ">": "gt",
+ ">=": "gte",
+ "=": "eq",
+ "!=": "ne",
+ "<>": "ne"
+};
+var RegExpEvaluator = function() {
+ function RegExpEvaluator2(rVal) {
+ var condValue = this._condVal = isString(rVal) ? new RegExp(rVal) : isRegExp(rVal) ? rVal : null;
+ if (condValue == null) {
+ var errMsg = "";
+ if (true) {
+ errMsg = makePrintable("Illegal regexp", rVal, "in");
+ }
+ throwError(errMsg);
+ }
+ }
+ RegExpEvaluator2.prototype.evaluate = function(lVal) {
+ var type = typeof lVal;
+ return isString(type) ? this._condVal.test(lVal) : isNumber(type) ? this._condVal.test(lVal + "") : false;
+ };
+ return RegExpEvaluator2;
+}();
+var ConstConditionInternal = function() {
+ function ConstConditionInternal2() {
+ }
+ ConstConditionInternal2.prototype.evaluate = function() {
+ return this.value;
+ };
+ return ConstConditionInternal2;
+}();
+var AndConditionInternal = function() {
+ function AndConditionInternal2() {
+ }
+ AndConditionInternal2.prototype.evaluate = function() {
+ var children = this.children;
+ for (var i = 0; i < children.length; i++) {
+ if (!children[i].evaluate()) {
+ return false;
+ }
+ }
+ return true;
+ };
+ return AndConditionInternal2;
+}();
+var OrConditionInternal = function() {
+ function OrConditionInternal2() {
+ }
+ OrConditionInternal2.prototype.evaluate = function() {
+ var children = this.children;
+ for (var i = 0; i < children.length; i++) {
+ if (children[i].evaluate()) {
+ return true;
+ }
+ }
+ return false;
+ };
+ return OrConditionInternal2;
+}();
+var NotConditionInternal = function() {
+ function NotConditionInternal2() {
+ }
+ NotConditionInternal2.prototype.evaluate = function() {
+ return !this.child.evaluate();
+ };
+ return NotConditionInternal2;
+}();
+var RelationalConditionInternal = function() {
+ function RelationalConditionInternal2() {
+ }
+ RelationalConditionInternal2.prototype.evaluate = function() {
+ var needParse = !!this.valueParser;
+ var getValue = this.getValue;
+ var tarValRaw = getValue(this.valueGetterParam);
+ var tarValParsed = needParse ? this.valueParser(tarValRaw) : null;
+ for (var i = 0; i < this.subCondList.length; i++) {
+ if (!this.subCondList[i].evaluate(needParse ? tarValParsed : tarValRaw)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ return RelationalConditionInternal2;
+}();
+function parseOption(exprOption, getters) {
+ if (exprOption === true || exprOption === false) {
+ var cond = new ConstConditionInternal();
+ cond.value = exprOption;
+ return cond;
+ }
+ var errMsg = "";
+ if (!isObjectNotArray(exprOption)) {
+ if (true) {
+ errMsg = makePrintable("Illegal config. Expect a plain object but actually", exprOption);
+ }
+ throwError(errMsg);
+ }
+ if (exprOption.and) {
+ return parseAndOrOption("and", exprOption, getters);
+ } else if (exprOption.or) {
+ return parseAndOrOption("or", exprOption, getters);
+ } else if (exprOption.not) {
+ return parseNotOption(exprOption, getters);
+ }
+ return parseRelationalOption(exprOption, getters);
+}
+function parseAndOrOption(op, exprOption, getters) {
+ var subOptionArr = exprOption[op];
+ var errMsg = "";
+ if (true) {
+ errMsg = makePrintable('"and"/"or" condition should only be `' + op + ": [...]` and must not be empty array.", "Illegal condition:", exprOption);
+ }
+ if (!isArray(subOptionArr)) {
+ throwError(errMsg);
+ }
+ if (!subOptionArr.length) {
+ throwError(errMsg);
+ }
+ var cond = op === "and" ? new AndConditionInternal() : new OrConditionInternal();
+ cond.children = map(subOptionArr, function(subOption) {
+ return parseOption(subOption, getters);
+ });
+ if (!cond.children.length) {
+ throwError(errMsg);
+ }
+ return cond;
+}
+function parseNotOption(exprOption, getters) {
+ var subOption = exprOption.not;
+ var errMsg = "";
+ if (true) {
+ errMsg = makePrintable('"not" condition should only be `not: {}`.', "Illegal condition:", exprOption);
+ }
+ if (!isObjectNotArray(subOption)) {
+ throwError(errMsg);
+ }
+ var cond = new NotConditionInternal();
+ cond.child = parseOption(subOption, getters);
+ if (!cond.child) {
+ throwError(errMsg);
+ }
+ return cond;
+}
+function parseRelationalOption(exprOption, getters) {
+ var errMsg = "";
+ var valueGetterParam = getters.prepareGetValue(exprOption);
+ var subCondList = [];
+ var exprKeys = keys(exprOption);
+ var parserName = exprOption.parser;
+ var valueParser = parserName ? getRawValueParser(parserName) : null;
+ for (var i = 0; i < exprKeys.length; i++) {
+ var keyRaw = exprKeys[i];
+ if (keyRaw === "parser" || getters.valueGetterAttrMap.get(keyRaw)) {
+ continue;
+ }
+ var op = hasOwn(RELATIONAL_EXPRESSION_OP_ALIAS_MAP, keyRaw) ? RELATIONAL_EXPRESSION_OP_ALIAS_MAP[keyRaw] : keyRaw;
+ var condValueRaw = exprOption[keyRaw];
+ var condValueParsed = valueParser ? valueParser(condValueRaw) : condValueRaw;
+ var evaluator = createFilterComparator(op, condValueParsed) || op === "reg" && new RegExpEvaluator(condValueParsed);
+ if (!evaluator) {
+ if (true) {
+ errMsg = makePrintable('Illegal relational operation: "' + keyRaw + '" in condition:', exprOption);
+ }
+ throwError(errMsg);
+ }
+ subCondList.push(evaluator);
+ }
+ if (!subCondList.length) {
+ if (true) {
+ errMsg = makePrintable("Relational condition must have at least one operator.", "Illegal condition:", exprOption);
+ }
+ throwError(errMsg);
+ }
+ var cond = new RelationalConditionInternal();
+ cond.valueGetterParam = valueGetterParam;
+ cond.valueParser = valueParser;
+ cond.getValue = getters.getValue;
+ cond.subCondList = subCondList;
+ return cond;
+}
+function isObjectNotArray(val) {
+ return isObject(val) && !isArrayLike(val);
+}
+var ConditionalExpressionParsed = function() {
+ function ConditionalExpressionParsed2(exprOption, getters) {
+ this._cond = parseOption(exprOption, getters);
+ }
+ ConditionalExpressionParsed2.prototype.evaluate = function() {
+ return this._cond.evaluate();
+ };
+ return ConditionalExpressionParsed2;
+}();
+function parseConditionalExpression(exprOption, getters) {
+ return new ConditionalExpressionParsed(exprOption, getters);
+}
+
+// node_modules/echarts/lib/component/transform/filterTransform.js
+var filterTransform = {
+ type: "echarts:filter",
+ transform: function(params) {
+ var upstream = params.upstream;
+ var rawItem;
+ var condition = parseConditionalExpression(params.config, {
+ valueGetterAttrMap: createHashMap({
+ dimension: true
+ }),
+ prepareGetValue: function(exprOption) {
+ var errMsg = "";
+ var dimLoose = exprOption.dimension;
+ if (!hasOwn(exprOption, "dimension")) {
+ if (true) {
+ errMsg = makePrintable('Relation condition must has prop "dimension" specified.', "Illegal condition:", exprOption);
+ }
+ throwError(errMsg);
+ }
+ var dimInfo = upstream.getDimensionInfo(dimLoose);
+ if (!dimInfo) {
+ if (true) {
+ errMsg = makePrintable("Can not find dimension info via: " + dimLoose + ".\n", "Existing dimensions: ", upstream.cloneAllDimensionInfo(), ".\n", "Illegal condition:", exprOption, ".\n");
+ }
+ throwError(errMsg);
+ }
+ return {
+ dimIdx: dimInfo.index
+ };
+ },
+ getValue: function(param) {
+ return upstream.retrieveValueFromItem(rawItem, param.dimIdx);
+ }
+ });
+ var resultData = [];
+ for (var i = 0, len2 = upstream.count(); i < len2; i++) {
+ rawItem = upstream.getRawDataItem(i);
+ if (condition.evaluate()) {
+ resultData.push(rawItem);
+ }
+ }
+ return {
+ data: resultData
+ };
+ }
+};
+
+// node_modules/echarts/lib/component/transform/sortTransform.js
+var sampleLog = "";
+if (true) {
+ sampleLog = ["Valid config is like:", '{ dimension: "age", order: "asc" }', 'or [{ dimension: "age", order: "asc"], { dimension: "date", order: "desc" }]'].join(" ");
+}
+var sortTransform = {
+ type: "echarts:sort",
+ transform: function(params) {
+ var upstream = params.upstream;
+ var config = params.config;
+ var errMsg = "";
+ var orderExprList = normalizeToArray(config);
+ if (!orderExprList.length) {
+ if (true) {
+ errMsg = "Empty `config` in sort transform.";
+ }
+ throwError(errMsg);
+ }
+ var orderDefList = [];
+ each(orderExprList, function(orderExpr) {
+ var dimLoose = orderExpr.dimension;
+ var order = orderExpr.order;
+ var parserName = orderExpr.parser;
+ var incomparable = orderExpr.incomparable;
+ if (dimLoose == null) {
+ if (true) {
+ errMsg = 'Sort transform config must has "dimension" specified.' + sampleLog;
+ }
+ throwError(errMsg);
+ }
+ if (order !== "asc" && order !== "desc") {
+ if (true) {
+ errMsg = 'Sort transform config must has "order" specified.' + sampleLog;
+ }
+ throwError(errMsg);
+ }
+ if (incomparable && incomparable !== "min" && incomparable !== "max") {
+ var errMsg_1 = "";
+ if (true) {
+ errMsg_1 = 'incomparable must be "min" or "max" rather than "' + incomparable + '".';
+ }
+ throwError(errMsg_1);
+ }
+ if (order !== "asc" && order !== "desc") {
+ var errMsg_2 = "";
+ if (true) {
+ errMsg_2 = 'order must be "asc" or "desc" rather than "' + order + '".';
+ }
+ throwError(errMsg_2);
+ }
+ var dimInfo = upstream.getDimensionInfo(dimLoose);
+ if (!dimInfo) {
+ if (true) {
+ errMsg = makePrintable("Can not find dimension info via: " + dimLoose + ".\n", "Existing dimensions: ", upstream.cloneAllDimensionInfo(), ".\n", "Illegal config:", orderExpr, ".\n");
+ }
+ throwError(errMsg);
+ }
+ var parser = parserName ? getRawValueParser(parserName) : null;
+ if (parserName && !parser) {
+ if (true) {
+ errMsg = makePrintable("Invalid parser name " + parserName + ".\n", "Illegal config:", orderExpr, ".\n");
+ }
+ throwError(errMsg);
+ }
+ orderDefList.push({
+ dimIdx: dimInfo.index,
+ parser,
+ comparator: new SortOrderComparator(order, incomparable)
+ });
+ });
+ var sourceFormat = upstream.sourceFormat;
+ if (sourceFormat !== SOURCE_FORMAT_ARRAY_ROWS && sourceFormat !== SOURCE_FORMAT_OBJECT_ROWS) {
+ if (true) {
+ errMsg = 'sourceFormat "' + sourceFormat + '" is not supported yet';
+ }
+ throwError(errMsg);
+ }
+ var resultData = [];
+ for (var i = 0, len2 = upstream.count(); i < len2; i++) {
+ resultData.push(upstream.getRawDataItem(i));
+ }
+ resultData.sort(function(item0, item1) {
+ for (var i2 = 0; i2 < orderDefList.length; i2++) {
+ var orderDef = orderDefList[i2];
+ var val0 = upstream.retrieveValueFromItem(item0, orderDef.dimIdx);
+ var val1 = upstream.retrieveValueFromItem(item1, orderDef.dimIdx);
+ if (orderDef.parser) {
+ val0 = orderDef.parser(val0);
+ val1 = orderDef.parser(val1);
+ }
+ var result = orderDef.comparator.evaluate(val0, val1);
+ if (result !== 0) {
+ return result;
+ }
+ }
+ return 0;
+ });
+ return {
+ data: resultData
+ };
+ }
+};
+
+// node_modules/echarts/lib/component/transform/install.js
+function install54(registers) {
+ registers.registerTransform(filterTransform);
+ registers.registerTransform(sortTransform);
+}
+
+// node_modules/echarts/lib/component/dataset/install.js
+var DatasetModel = function(_super) {
+ __extends(DatasetModel2, _super);
+ function DatasetModel2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "dataset";
+ return _this;
+ }
+ DatasetModel2.prototype.init = function(option, parentModel, ecModel) {
+ _super.prototype.init.call(this, option, parentModel, ecModel);
+ this._sourceManager = new SourceManager(this);
+ disableTransformOptionMerge(this);
+ };
+ DatasetModel2.prototype.mergeOption = function(newOption, ecModel) {
+ _super.prototype.mergeOption.call(this, newOption, ecModel);
+ disableTransformOptionMerge(this);
+ };
+ DatasetModel2.prototype.optionUpdated = function() {
+ this._sourceManager.dirty();
+ };
+ DatasetModel2.prototype.getSourceManager = function() {
+ return this._sourceManager;
+ };
+ DatasetModel2.type = "dataset";
+ DatasetModel2.defaultOption = {
+ seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN
+ };
+ return DatasetModel2;
+}(Component_default);
+var DatasetView = function(_super) {
+ __extends(DatasetView2, _super);
+ function DatasetView2() {
+ var _this = _super !== null && _super.apply(this, arguments) || this;
+ _this.type = "dataset";
+ return _this;
+ }
+ DatasetView2.type = "dataset";
+ return DatasetView2;
+}(Component_default2);
+function install55(registers) {
+ registers.registerComponentModel(DatasetModel);
+ registers.registerComponentView(DatasetView);
+}
+
+// node_modules/zrender/lib/tool/convertPath.js
+var CMD5 = PathProxy_default.CMD;
+function aroundEqual(a, b) {
+ return Math.abs(a - b) < 1e-5;
+}
+function pathToBezierCurves(path) {
+ var data = path.data;
+ var len2 = path.len();
+ var bezierArrayGroups = [];
+ var currentSubpath;
+ var xi = 0;
+ var yi = 0;
+ var x0 = 0;
+ var y0 = 0;
+ function createNewSubpath(x, y) {
+ if (currentSubpath && currentSubpath.length > 2) {
+ bezierArrayGroups.push(currentSubpath);
+ }
+ currentSubpath = [x, y];
+ }
+ function addLine(x02, y02, x12, y12) {
+ if (!(aroundEqual(x02, x12) && aroundEqual(y02, y12))) {
+ currentSubpath.push(x02, y02, x12, y12, x12, y12);
+ }
+ }
+ function addArc(startAngle2, endAngle2, cx2, cy2, rx2, ry2) {
+ var delta = Math.abs(endAngle2 - startAngle2);
+ var len3 = Math.tan(delta / 4) * 4 / 3;
+ var dir3 = endAngle2 < startAngle2 ? -1 : 1;
+ var c1 = Math.cos(startAngle2);
+ var s1 = Math.sin(startAngle2);
+ var c2 = Math.cos(endAngle2);
+ var s2 = Math.sin(endAngle2);
+ var x12 = c1 * rx2 + cx2;
+ var y12 = s1 * ry2 + cy2;
+ var x4 = c2 * rx2 + cx2;
+ var y4 = s2 * ry2 + cy2;
+ var hx = rx2 * len3 * dir3;
+ var hy = ry2 * len3 * dir3;
+ currentSubpath.push(x12 - hx * s1, y12 + hy * c1, x4 + hx * s2, y4 - hy * c2, x4, y4);
+ }
+ var x1;
+ var y1;
+ var x2;
+ var y2;
+ for (var i = 0; i < len2; ) {
+ var cmd = data[i++];
+ var isFirst = i === 1;
+ if (isFirst) {
+ xi = data[i];
+ yi = data[i + 1];
+ x0 = xi;
+ y0 = yi;
+ if (cmd === CMD5.L || cmd === CMD5.C || cmd === CMD5.Q) {
+ currentSubpath = [x0, y0];
+ }
+ }
+ switch (cmd) {
+ case CMD5.M:
+ xi = x0 = data[i++];
+ yi = y0 = data[i++];
+ createNewSubpath(x0, y0);
+ break;
+ case CMD5.L:
+ x1 = data[i++];
+ y1 = data[i++];
+ addLine(xi, yi, x1, y1);
+ xi = x1;
+ yi = y1;
+ break;
+ case CMD5.C:
+ currentSubpath.push(data[i++], data[i++], data[i++], data[i++], xi = data[i++], yi = data[i++]);
+ break;
+ case CMD5.Q:
+ x1 = data[i++];
+ y1 = data[i++];
+ x2 = data[i++];
+ y2 = data[i++];
+ currentSubpath.push(xi + 2 / 3 * (x1 - xi), yi + 2 / 3 * (y1 - yi), x2 + 2 / 3 * (x1 - x2), y2 + 2 / 3 * (y1 - y2), x2, y2);
+ xi = x2;
+ yi = y2;
+ break;
+ case CMD5.A:
+ var cx = data[i++];
+ var cy = data[i++];
+ var rx = data[i++];
+ var ry = data[i++];
+ var startAngle = data[i++];
+ var endAngle = data[i++] + startAngle;
+ i += 1;
+ var anticlockwise = !data[i++];
+ x1 = Math.cos(startAngle) * rx + cx;
+ y1 = Math.sin(startAngle) * ry + cy;
+ if (isFirst) {
+ x0 = x1;
+ y0 = y1;
+ createNewSubpath(x0, y0);
+ } else {
+ addLine(xi, yi, x1, y1);
+ }
+ xi = Math.cos(endAngle) * rx + cx;
+ yi = Math.sin(endAngle) * ry + cy;
+ var step = (anticlockwise ? -1 : 1) * Math.PI / 2;
+ for (var angle = startAngle; anticlockwise ? angle > endAngle : angle < endAngle; angle += step) {
+ var nextAngle = anticlockwise ? Math.max(angle + step, endAngle) : Math.min(angle + step, endAngle);
+ addArc(angle, nextAngle, cx, cy, rx, ry);
+ }
+ break;
+ case CMD5.R:
+ x0 = xi = data[i++];
+ y0 = yi = data[i++];
+ x1 = x0 + data[i++];
+ y1 = y0 + data[i++];
+ createNewSubpath(x1, y0);
+ addLine(x1, y0, x1, y1);
+ addLine(x1, y1, x0, y1);
+ addLine(x0, y1, x0, y0);
+ addLine(x0, y0, x1, y0);
+ break;
+ case CMD5.Z:
+ currentSubpath && addLine(xi, yi, x0, y0);
+ xi = x0;
+ yi = y0;
+ break;
+ }
+ }
+ if (currentSubpath && currentSubpath.length > 2) {
+ bezierArrayGroups.push(currentSubpath);
+ }
+ return bezierArrayGroups;
+}
+function adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, out2, scale4) {
+ if (aroundEqual(x0, x1) && aroundEqual(y0, y1) && aroundEqual(x2, x3) && aroundEqual(y2, y3)) {
+ out2.push(x3, y3);
+ return;
+ }
+ var PIXEL_DISTANCE = 2 / scale4;
+ var PIXEL_DISTANCE_SQR = PIXEL_DISTANCE * PIXEL_DISTANCE;
+ var dx = x3 - x0;
+ var dy = y3 - y0;
+ var d = Math.sqrt(dx * dx + dy * dy);
+ dx /= d;
+ dy /= d;
+ var dx1 = x1 - x0;
+ var dy1 = y1 - y0;
+ var dx2 = x2 - x3;
+ var dy2 = y2 - y3;
+ var cp1LenSqr = dx1 * dx1 + dy1 * dy1;
+ var cp2LenSqr = dx2 * dx2 + dy2 * dy2;
+ if (cp1LenSqr < PIXEL_DISTANCE_SQR && cp2LenSqr < PIXEL_DISTANCE_SQR) {
+ out2.push(x3, y3);
+ return;
+ }
+ var projLen1 = dx * dx1 + dy * dy1;
+ var projLen2 = -dx * dx2 - dy * dy2;
+ var d1Sqr = cp1LenSqr - projLen1 * projLen1;
+ var d2Sqr = cp2LenSqr - projLen2 * projLen2;
+ if (d1Sqr < PIXEL_DISTANCE_SQR && projLen1 >= 0 && d2Sqr < PIXEL_DISTANCE_SQR && projLen2 >= 0) {
+ out2.push(x3, y3);
+ return;
+ }
+ var tmpSegX = [];
+ var tmpSegY = [];
+ cubicSubdivide(x0, x1, x2, x3, 0.5, tmpSegX);
+ cubicSubdivide(y0, y1, y2, y3, 0.5, tmpSegY);
+ adpativeBezier(tmpSegX[0], tmpSegY[0], tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], tmpSegX[3], tmpSegY[3], out2, scale4);
+ adpativeBezier(tmpSegX[4], tmpSegY[4], tmpSegX[5], tmpSegY[5], tmpSegX[6], tmpSegY[6], tmpSegX[7], tmpSegY[7], out2, scale4);
+}
+function pathToPolygons(path, scale4) {
+ var bezierArrayGroups = pathToBezierCurves(path);
+ var polygons = [];
+ scale4 = scale4 || 1;
+ for (var i = 0; i < bezierArrayGroups.length; i++) {
+ var beziers = bezierArrayGroups[i];
+ var polygon = [];
+ var x0 = beziers[0];
+ var y0 = beziers[1];
+ polygon.push(x0, y0);
+ for (var k = 2; k < beziers.length; ) {
+ var x1 = beziers[k++];
+ var y1 = beziers[k++];
+ var x2 = beziers[k++];
+ var y2 = beziers[k++];
+ var x3 = beziers[k++];
+ var y3 = beziers[k++];
+ adpativeBezier(x0, y0, x1, y1, x2, y2, x3, y3, polygon, scale4);
+ x0 = x3;
+ y0 = y3;
+ }
+ polygons.push(polygon);
+ }
+ return polygons;
+}
+
+// node_modules/zrender/lib/tool/dividePath.js
+function getDividingGrids(dimSize, rowDim, count2) {
+ var rowSize = dimSize[rowDim];
+ var columnSize = dimSize[1 - rowDim];
+ var ratio = Math.abs(rowSize / columnSize);
+ var rowCount = Math.ceil(Math.sqrt(ratio * count2));
+ var columnCount = Math.floor(count2 / rowCount);
+ if (columnCount === 0) {
+ columnCount = 1;
+ rowCount = count2;
+ }
+ var grids = [];
+ for (var i = 0; i < rowCount; i++) {
+ grids.push(columnCount);
+ }
+ var currentCount = rowCount * columnCount;
+ var remained = count2 - currentCount;
+ if (remained > 0) {
+ for (var i = 0; i < remained; i++) {
+ grids[i % rowCount] += 1;
+ }
+ }
+ return grids;
+}
+function divideSector(sectorShape, count2, outShapes) {
+ var r0 = sectorShape.r0;
+ var r = sectorShape.r;
+ var startAngle = sectorShape.startAngle;
+ var endAngle = sectorShape.endAngle;
+ var angle = Math.abs(endAngle - startAngle);
+ var arcLen = angle * r;
+ var deltaR = r - r0;
+ var isAngleRow = arcLen > Math.abs(deltaR);
+ var grids = getDividingGrids([arcLen, deltaR], isAngleRow ? 0 : 1, count2);
+ var rowSize = (isAngleRow ? angle : deltaR) / grids.length;
+ for (var row = 0; row < grids.length; row++) {
+ var columnSize = (isAngleRow ? deltaR : angle) / grids[row];
+ for (var column = 0; column < grids[row]; column++) {
+ var newShape = {};
+ if (isAngleRow) {
+ newShape.startAngle = startAngle + rowSize * row;
+ newShape.endAngle = startAngle + rowSize * (row + 1);
+ newShape.r0 = r0 + columnSize * column;
+ newShape.r = r0 + columnSize * (column + 1);
+ } else {
+ newShape.startAngle = startAngle + columnSize * column;
+ newShape.endAngle = startAngle + columnSize * (column + 1);
+ newShape.r0 = r0 + rowSize * row;
+ newShape.r = r0 + rowSize * (row + 1);
+ }
+ newShape.clockwise = sectorShape.clockwise;
+ newShape.cx = sectorShape.cx;
+ newShape.cy = sectorShape.cy;
+ outShapes.push(newShape);
+ }
+ }
+}
+function divideRect(rectShape, count2, outShapes) {
+ var width = rectShape.width;
+ var height = rectShape.height;
+ var isHorizontalRow = width > height;
+ var grids = getDividingGrids([width, height], isHorizontalRow ? 0 : 1, count2);
+ var rowSizeDim = isHorizontalRow ? "width" : "height";
+ var columnSizeDim = isHorizontalRow ? "height" : "width";
+ var rowDim = isHorizontalRow ? "x" : "y";
+ var columnDim = isHorizontalRow ? "y" : "x";
+ var rowSize = rectShape[rowSizeDim] / grids.length;
+ for (var row = 0; row < grids.length; row++) {
+ var columnSize = rectShape[columnSizeDim] / grids[row];
+ for (var column = 0; column < grids[row]; column++) {
+ var newShape = {};
+ newShape[rowDim] = row * rowSize;
+ newShape[columnDim] = column * columnSize;
+ newShape[rowSizeDim] = rowSize;
+ newShape[columnSizeDim] = columnSize;
+ newShape.x += rectShape.x;
+ newShape.y += rectShape.y;
+ outShapes.push(newShape);
+ }
+ }
+}
+function crossProduct2d2(x1, y1, x2, y2) {
+ return x1 * y2 - x2 * y1;
+}
+function lineLineIntersect2(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {
+ var mx = a2x - a1x;
+ var my = a2y - a1y;
+ var nx = b2x - b1x;
+ var ny = b2y - b1y;
+ var nmCrossProduct = crossProduct2d2(nx, ny, mx, my);
+ if (Math.abs(nmCrossProduct) < 1e-6) {
+ return null;
+ }
+ var b1a1x = a1x - b1x;
+ var b1a1y = a1y - b1y;
+ var p = crossProduct2d2(b1a1x, b1a1y, nx, ny) / nmCrossProduct;
+ if (p < 0 || p > 1) {
+ return null;
+ }
+ return new Point_default(p * mx + a1x, p * my + a1y);
+}
+function projPtOnLine(pt, lineA, lineB) {
+ var dir3 = new Point_default();
+ Point_default.sub(dir3, lineB, lineA);
+ dir3.normalize();
+ var dir22 = new Point_default();
+ Point_default.sub(dir22, pt, lineA);
+ var len2 = dir22.dot(dir3);
+ return len2;
+}
+function addToPoly(poly, pt) {
+ var last = poly[poly.length - 1];
+ if (last && last[0] === pt[0] && last[1] === pt[1]) {
+ return;
+ }
+ poly.push(pt);
+}
+function splitPolygonByLine(points4, lineA, lineB) {
+ var len2 = points4.length;
+ var intersections = [];
+ for (var i = 0; i < len2; i++) {
+ var p0 = points4[i];
+ var p1 = points4[(i + 1) % len2];
+ var intersectionPt = lineLineIntersect2(p0[0], p0[1], p1[0], p1[1], lineA.x, lineA.y, lineB.x, lineB.y);
+ if (intersectionPt) {
+ intersections.push({
+ projPt: projPtOnLine(intersectionPt, lineA, lineB),
+ pt: intersectionPt,
+ idx: i
+ });
+ }
+ }
+ if (intersections.length < 2) {
+ return [{ points: points4 }, { points: points4 }];
+ }
+ intersections.sort(function(a, b) {
+ return a.projPt - b.projPt;
+ });
+ var splitPt0 = intersections[0];
+ var splitPt1 = intersections[intersections.length - 1];
+ if (splitPt1.idx < splitPt0.idx) {
+ var tmp = splitPt0;
+ splitPt0 = splitPt1;
+ splitPt1 = tmp;
+ }
+ var splitPt0Arr = [splitPt0.pt.x, splitPt0.pt.y];
+ var splitPt1Arr = [splitPt1.pt.x, splitPt1.pt.y];
+ var newPolyA = [splitPt0Arr];
+ var newPolyB = [splitPt1Arr];
+ for (var i = splitPt0.idx + 1; i <= splitPt1.idx; i++) {
+ addToPoly(newPolyA, points4[i].slice());
+ }
+ addToPoly(newPolyA, splitPt1Arr);
+ addToPoly(newPolyA, splitPt0Arr);
+ for (var i = splitPt1.idx + 1; i <= splitPt0.idx + len2; i++) {
+ addToPoly(newPolyB, points4[i % len2].slice());
+ }
+ addToPoly(newPolyB, splitPt0Arr);
+ addToPoly(newPolyB, splitPt1Arr);
+ return [{
+ points: newPolyA
+ }, {
+ points: newPolyB
+ }];
+}
+function binaryDividePolygon(polygonShape) {
+ var points4 = polygonShape.points;
+ var min3 = [];
+ var max3 = [];
+ fromPoints(points4, min3, max3);
+ var boundingRect = new BoundingRect_default(min3[0], min3[1], max3[0] - min3[0], max3[1] - min3[1]);
+ var width = boundingRect.width;
+ var height = boundingRect.height;
+ var x = boundingRect.x;
+ var y = boundingRect.y;
+ var pt02 = new Point_default();
+ var pt12 = new Point_default();
+ if (width > height) {
+ pt02.x = pt12.x = x + width / 2;
+ pt02.y = y;
+ pt12.y = y + height;
+ } else {
+ pt02.y = pt12.y = y + height / 2;
+ pt02.x = x;
+ pt12.x = x + width;
+ }
+ return splitPolygonByLine(points4, pt02, pt12);
+}
+function binaryDivideRecursive(divider, shape, count2, out2) {
+ if (count2 === 1) {
+ out2.push(shape);
+ } else {
+ var mid = Math.floor(count2 / 2);
+ var sub2 = divider(shape);
+ binaryDivideRecursive(divider, sub2[0], mid, out2);
+ binaryDivideRecursive(divider, sub2[1], count2 - mid, out2);
+ }
+ return out2;
+}
+function clone5(path, count2) {
+ var paths = [];
+ for (var i = 0; i < count2; i++) {
+ paths.push(clonePath(path));
+ }
+ return paths;
+}
+function copyPathProps(source, target) {
+ target.setStyle(source.style);
+ target.z = source.z;
+ target.z2 = source.z2;
+ target.zlevel = source.zlevel;
+}
+function polygonConvert(points4) {
+ var out2 = [];
+ for (var i = 0; i < points4.length; ) {
+ out2.push([points4[i++], points4[i++]]);
+ }
+ return out2;
+}
+function split(path, count2) {
+ var outShapes = [];
+ var shape = path.shape;
+ var OutShapeCtor;
+ switch (path.type) {
+ case "rect":
+ divideRect(shape, count2, outShapes);
+ OutShapeCtor = Rect_default;
+ break;
+ case "sector":
+ divideSector(shape, count2, outShapes);
+ OutShapeCtor = Sector_default;
+ break;
+ case "circle":
+ divideSector({
+ r0: 0,
+ r: shape.r,
+ startAngle: 0,
+ endAngle: Math.PI * 2,
+ cx: shape.cx,
+ cy: shape.cy
+ }, count2, outShapes);
+ OutShapeCtor = Sector_default;
+ break;
+ default:
+ var m2 = path.getComputedTransform();
+ var scale4 = m2 ? Math.sqrt(Math.max(m2[0] * m2[0] + m2[1] * m2[1], m2[2] * m2[2] + m2[3] * m2[3])) : 1;
+ var polygons = map(pathToPolygons(path.getUpdatedPathProxy(), scale4), function(poly) {
+ return polygonConvert(poly);
+ });
+ var polygonCount = polygons.length;
+ if (polygonCount === 0) {
+ binaryDivideRecursive(binaryDividePolygon, {
+ points: polygons[0]
+ }, count2, outShapes);
+ } else if (polygonCount === count2) {
+ for (var i = 0; i < polygonCount; i++) {
+ outShapes.push({
+ points: polygons[i]
+ });
+ }
+ } else {
+ var totalArea_1 = 0;
+ var items = map(polygons, function(poly) {
+ var min3 = [];
+ var max3 = [];
+ fromPoints(poly, min3, max3);
+ var area = (max3[1] - min3[1]) * (max3[0] - min3[0]);
+ totalArea_1 += area;
+ return { poly, area };
+ });
+ items.sort(function(a, b) {
+ return b.area - a.area;
+ });
+ var left = count2;
+ for (var i = 0; i < polygonCount; i++) {
+ var item = items[i];
+ if (left <= 0) {
+ break;
+ }
+ var selfCount = i === polygonCount - 1 ? left : Math.ceil(item.area / totalArea_1 * count2);
+ if (selfCount < 0) {
+ continue;
+ }
+ binaryDivideRecursive(binaryDividePolygon, {
+ points: item.poly
+ }, selfCount, outShapes);
+ left -= selfCount;
+ }
+ ;
+ }
+ OutShapeCtor = Polygon_default;
+ break;
+ }
+ if (!OutShapeCtor) {
+ return clone5(path, count2);
+ }
+ var out2 = [];
+ for (var i = 0; i < outShapes.length; i++) {
+ var subPath = new OutShapeCtor();
+ subPath.setShape(outShapes[i]);
+ copyPathProps(path, subPath);
+ out2.push(subPath);
+ }
+ return out2;
+}
+
+// node_modules/zrender/lib/tool/morphPath.js
+function alignSubpath(subpath1, subpath2) {
+ var len1 = subpath1.length;
+ var len2 = subpath2.length;
+ if (len1 === len2) {
+ return [subpath1, subpath2];
+ }
+ var tmpSegX = [];
+ var tmpSegY = [];
+ var shorterPath = len1 < len2 ? subpath1 : subpath2;
+ var shorterLen = Math.min(len1, len2);
+ var diff = Math.abs(len2 - len1) / 6;
+ var shorterBezierCount = (shorterLen - 2) / 6;
+ var eachCurveSubDivCount = Math.ceil(diff / shorterBezierCount) + 1;
+ var newSubpath = [shorterPath[0], shorterPath[1]];
+ var remained = diff;
+ for (var i = 2; i < shorterLen; ) {
+ var x0 = shorterPath[i - 2];
+ var y0 = shorterPath[i - 1];
+ var x1 = shorterPath[i++];
+ var y1 = shorterPath[i++];
+ var x2 = shorterPath[i++];
+ var y2 = shorterPath[i++];
+ var x3 = shorterPath[i++];
+ var y3 = shorterPath[i++];
+ if (remained <= 0) {
+ newSubpath.push(x1, y1, x2, y2, x3, y3);
+ continue;
+ }
+ var actualSubDivCount = Math.min(remained, eachCurveSubDivCount - 1) + 1;
+ for (var k = 1; k <= actualSubDivCount; k++) {
+ var p = k / actualSubDivCount;
+ cubicSubdivide(x0, x1, x2, x3, p, tmpSegX);
+ cubicSubdivide(y0, y1, y2, y3, p, tmpSegY);
+ x0 = tmpSegX[3];
+ y0 = tmpSegY[3];
+ newSubpath.push(tmpSegX[1], tmpSegY[1], tmpSegX[2], tmpSegY[2], x0, y0);
+ x1 = tmpSegX[5];
+ y1 = tmpSegY[5];
+ x2 = tmpSegX[6];
+ y2 = tmpSegY[6];
+ }
+ remained -= actualSubDivCount - 1;
+ }
+ return shorterPath === subpath1 ? [newSubpath, subpath2] : [subpath1, newSubpath];
+}
+function createSubpath(lastSubpathSubpath, otherSubpath) {
+ var len2 = lastSubpathSubpath.length;
+ var lastX = lastSubpathSubpath[len2 - 2];
+ var lastY = lastSubpathSubpath[len2 - 1];
+ var newSubpath = [];
+ for (var i = 0; i < otherSubpath.length; ) {
+ newSubpath[i++] = lastX;
+ newSubpath[i++] = lastY;
+ }
+ return newSubpath;
+}
+function alignBezierCurves(array1, array2) {
+ var _a2;
+ var lastSubpath1;
+ var lastSubpath2;
+ var newArray1 = [];
+ var newArray2 = [];
+ for (var i = 0; i < Math.max(array1.length, array2.length); i++) {
+ var subpath1 = array1[i];
+ var subpath2 = array2[i];
+ var newSubpath1 = void 0;
+ var newSubpath2 = void 0;
+ if (!subpath1) {
+ newSubpath1 = createSubpath(lastSubpath1 || subpath2, subpath2);
+ newSubpath2 = subpath2;
+ } else if (!subpath2) {
+ newSubpath2 = createSubpath(lastSubpath2 || subpath1, subpath1);
+ newSubpath1 = subpath1;
+ } else {
+ _a2 = alignSubpath(subpath1, subpath2), newSubpath1 = _a2[0], newSubpath2 = _a2[1];
+ lastSubpath1 = newSubpath1;
+ lastSubpath2 = newSubpath2;
+ }
+ newArray1.push(newSubpath1);
+ newArray2.push(newSubpath2);
+ }
+ return [newArray1, newArray2];
+}
+function centroid2(array) {
+ var signedArea = 0;
+ var cx = 0;
+ var cy = 0;
+ var len2 = array.length;
+ for (var i = 0, j = len2 - 2; i < len2; j = i, i += 2) {
+ var x0 = array[j];
+ var y0 = array[j + 1];
+ var x1 = array[i];
+ var y1 = array[i + 1];
+ var a = x0 * y1 - x1 * y0;
+ signedArea += a;
+ cx += (x0 + x1) * a;
+ cy += (y0 + y1) * a;
+ }
+ if (signedArea === 0) {
+ return [array[0] || 0, array[1] || 0];
+ }
+ return [cx / signedArea / 3, cy / signedArea / 3, signedArea];
+}
+function findBestRingOffset(fromSubBeziers, toSubBeziers, fromCp, toCp) {
+ var bezierCount = (fromSubBeziers.length - 2) / 6;
+ var bestScore = Infinity;
+ var bestOffset = 0;
+ var len2 = fromSubBeziers.length;
+ var len22 = len2 - 2;
+ for (var offset = 0; offset < bezierCount; offset++) {
+ var cursorOffset = offset * 6;
+ var score = 0;
+ for (var k = 0; k < len2; k += 2) {
+ var idx = k === 0 ? cursorOffset : (cursorOffset + k - 2) % len22 + 2;
+ var x0 = fromSubBeziers[idx] - fromCp[0];
+ var y0 = fromSubBeziers[idx + 1] - fromCp[1];
+ var x1 = toSubBeziers[k] - toCp[0];
+ var y1 = toSubBeziers[k + 1] - toCp[1];
+ var dx = x1 - x0;
+ var dy = y1 - y0;
+ score += dx * dx + dy * dy;
+ }
+ if (score < bestScore) {
+ bestScore = score;
+ bestOffset = offset;
+ }
+ }
+ return bestOffset;
+}
+function reverse(array) {
+ var newArr = [];
+ var len2 = array.length;
+ for (var i = 0; i < len2; i += 2) {
+ newArr[i] = array[len2 - i - 2];
+ newArr[i + 1] = array[len2 - i - 1];
+ }
+ return newArr;
+}
+function findBestMorphingRotation(fromArr, toArr2, searchAngleIteration, searchAngleRange) {
+ var result = [];
+ var fromNeedsReverse;
+ for (var i = 0; i < fromArr.length; i++) {
+ var fromSubpathBezier = fromArr[i];
+ var toSubpathBezier = toArr2[i];
+ var fromCp = centroid2(fromSubpathBezier);
+ var toCp = centroid2(toSubpathBezier);
+ if (fromNeedsReverse == null) {
+ fromNeedsReverse = fromCp[2] < 0 !== toCp[2] < 0;
+ }
+ var newFromSubpathBezier = [];
+ var newToSubpathBezier = [];
+ var bestAngle = 0;
+ var bestScore = Infinity;
+ var tmpArr2 = [];
+ var len2 = fromSubpathBezier.length;
+ if (fromNeedsReverse) {
+ fromSubpathBezier = reverse(fromSubpathBezier);
+ }
+ var offset = findBestRingOffset(fromSubpathBezier, toSubpathBezier, fromCp, toCp) * 6;
+ var len22 = len2 - 2;
+ for (var k = 0; k < len22; k += 2) {
+ var idx = (offset + k) % len22 + 2;
+ newFromSubpathBezier[k + 2] = fromSubpathBezier[idx] - fromCp[0];
+ newFromSubpathBezier[k + 3] = fromSubpathBezier[idx + 1] - fromCp[1];
+ }
+ newFromSubpathBezier[0] = fromSubpathBezier[offset] - fromCp[0];
+ newFromSubpathBezier[1] = fromSubpathBezier[offset + 1] - fromCp[1];
+ if (searchAngleIteration > 0) {
+ var step = searchAngleRange / searchAngleIteration;
+ for (var angle = -searchAngleRange / 2; angle <= searchAngleRange / 2; angle += step) {
+ var sa = Math.sin(angle);
+ var ca = Math.cos(angle);
+ var score = 0;
+ for (var k = 0; k < fromSubpathBezier.length; k += 2) {
+ var x0 = newFromSubpathBezier[k];
+ var y0 = newFromSubpathBezier[k + 1];
+ var x1 = toSubpathBezier[k] - toCp[0];
+ var y1 = toSubpathBezier[k + 1] - toCp[1];
+ var newX1 = x1 * ca - y1 * sa;
+ var newY1 = x1 * sa + y1 * ca;
+ tmpArr2[k] = newX1;
+ tmpArr2[k + 1] = newY1;
+ var dx = newX1 - x0;
+ var dy = newY1 - y0;
+ score += dx * dx + dy * dy;
+ }
+ if (score < bestScore) {
+ bestScore = score;
+ bestAngle = angle;
+ for (var m2 = 0; m2 < tmpArr2.length; m2++) {
+ newToSubpathBezier[m2] = tmpArr2[m2];
+ }
+ }
+ }
+ } else {
+ for (var i_1 = 0; i_1 < len2; i_1 += 2) {
+ newToSubpathBezier[i_1] = toSubpathBezier[i_1] - toCp[0];
+ newToSubpathBezier[i_1 + 1] = toSubpathBezier[i_1 + 1] - toCp[1];
+ }
+ }
+ result.push({
+ from: newFromSubpathBezier,
+ to: newToSubpathBezier,
+ fromCp,
+ toCp,
+ rotation: -bestAngle
+ });
+ }
+ return result;
+}
+function isCombineMorphing(path) {
+ return path.__isCombineMorphing;
+}
+var SAVED_METHOD_PREFIX = "__mOriginal_";
+function saveAndModifyMethod(obj, methodName, modifiers) {
+ var savedMethodName = SAVED_METHOD_PREFIX + methodName;
+ var originalMethod = obj[savedMethodName] || obj[methodName];
+ if (!obj[savedMethodName]) {
+ obj[savedMethodName] = obj[methodName];
+ }
+ var replace = modifiers.replace;
+ var after = modifiers.after;
+ var before = modifiers.before;
+ obj[methodName] = function() {
+ var args = arguments;
+ var res;
+ before && before.apply(this, args);
+ if (replace) {
+ res = replace.apply(this, args);
+ } else {
+ res = originalMethod.apply(this, args);
+ }
+ after && after.apply(this, args);
+ return res;
+ };
+}
+function restoreMethod(obj, methodName) {
+ var savedMethodName = SAVED_METHOD_PREFIX + methodName;
+ if (obj[savedMethodName]) {
+ obj[methodName] = obj[savedMethodName];
+ obj[savedMethodName] = null;
+ }
+}
+function applyTransformOnBeziers(bezierCurves, mm) {
+ for (var i = 0; i < bezierCurves.length; i++) {
+ var subBeziers = bezierCurves[i];
+ for (var k = 0; k < subBeziers.length; ) {
+ var x = subBeziers[k];
+ var y = subBeziers[k + 1];
+ subBeziers[k++] = mm[0] * x + mm[2] * y + mm[4];
+ subBeziers[k++] = mm[1] * x + mm[3] * y + mm[5];
+ }
+ }
+}
+function prepareMorphPath(fromPath, toPath) {
+ var fromPathProxy = fromPath.getUpdatedPathProxy();
+ var toPathProxy = toPath.getUpdatedPathProxy();
+ var _a2 = alignBezierCurves(pathToBezierCurves(fromPathProxy), pathToBezierCurves(toPathProxy)), fromBezierCurves = _a2[0], toBezierCurves = _a2[1];
+ var fromPathTransform = fromPath.getComputedTransform();
+ var toPathTransform = toPath.getComputedTransform();
+ function updateIdentityTransform() {
+ this.transform = null;
+ }
+ fromPathTransform && applyTransformOnBeziers(fromBezierCurves, fromPathTransform);
+ toPathTransform && applyTransformOnBeziers(toBezierCurves, toPathTransform);
+ saveAndModifyMethod(toPath, "updateTransform", { replace: updateIdentityTransform });
+ toPath.transform = null;
+ var morphingData = findBestMorphingRotation(fromBezierCurves, toBezierCurves, 10, Math.PI);
+ var tmpArr2 = [];
+ saveAndModifyMethod(toPath, "buildPath", { replace: function(path) {
+ var t = toPath.__morphT;
+ var onet = 1 - t;
+ var newCp = [];
+ for (var i = 0; i < morphingData.length; i++) {
+ var item = morphingData[i];
+ var from = item.from;
+ var to = item.to;
+ var angle = item.rotation * t;
+ var fromCp = item.fromCp;
+ var toCp = item.toCp;
+ var sa = Math.sin(angle);
+ var ca = Math.cos(angle);
+ lerp(newCp, fromCp, toCp, t);
+ for (var m2 = 0; m2 < from.length; m2 += 2) {
+ var x0_1 = from[m2];
+ var y0_1 = from[m2 + 1];
+ var x1 = to[m2];
+ var y1 = to[m2 + 1];
+ var x = x0_1 * onet + x1 * t;
+ var y = y0_1 * onet + y1 * t;
+ tmpArr2[m2] = x * ca - y * sa + newCp[0];
+ tmpArr2[m2 + 1] = x * sa + y * ca + newCp[1];
+ }
+ var x0 = tmpArr2[0];
+ var y0 = tmpArr2[1];
+ path.moveTo(x0, y0);
+ for (var m2 = 2; m2 < from.length; ) {
+ var x1 = tmpArr2[m2++];
+ var y1 = tmpArr2[m2++];
+ var x2 = tmpArr2[m2++];
+ var y2 = tmpArr2[m2++];
+ var x3 = tmpArr2[m2++];
+ var y3 = tmpArr2[m2++];
+ if (x0 === x1 && y0 === y1 && x2 === x3 && y2 === y3) {
+ path.lineTo(x3, y3);
+ } else {
+ path.bezierCurveTo(x1, y1, x2, y2, x3, y3);
+ }
+ x0 = x3;
+ y0 = y3;
+ }
+ }
+ } });
+}
+function morphPath(fromPath, toPath, animationOpts) {
+ if (!fromPath || !toPath) {
+ return toPath;
+ }
+ var oldDone = animationOpts.done;
+ var oldDuring = animationOpts.during;
+ prepareMorphPath(fromPath, toPath);
+ toPath.__morphT = 0;
+ function restoreToPath() {
+ restoreMethod(toPath, "buildPath");
+ restoreMethod(toPath, "updateTransform");
+ toPath.__morphT = -1;
+ toPath.createPathProxy();
+ toPath.dirtyShape();
+ }
+ toPath.animateTo({
+ __morphT: 1
+ }, defaults({
+ during: function(p) {
+ toPath.dirtyShape();
+ oldDuring && oldDuring(p);
+ },
+ done: function() {
+ restoreToPath();
+ oldDone && oldDone();
+ }
+ }, animationOpts));
+ return toPath;
+}
+function hilbert(x, y, minX, minY, maxX, maxY) {
+ var bits = 16;
+ x = maxX === minX ? 0 : Math.round(32767 * (x - minX) / (maxX - minX));
+ y = maxY === minY ? 0 : Math.round(32767 * (y - minY) / (maxY - minY));
+ var d = 0;
+ var tmp;
+ for (var s = (1 << bits) / 2; s > 0; s /= 2) {
+ var rx = 0;
+ var ry = 0;
+ if ((x & s) > 0) {
+ rx = 1;
+ }
+ if ((y & s) > 0) {
+ ry = 1;
+ }
+ d += s * s * (3 * rx ^ ry);
+ if (ry === 0) {
+ if (rx === 1) {
+ x = s - 1 - x;
+ y = s - 1 - y;
+ }
+ tmp = x;
+ x = y;
+ y = tmp;
+ }
+ }
+ return d;
+}
+function sortPaths(pathList) {
+ var xMin = Infinity;
+ var yMin = Infinity;
+ var xMax = -Infinity;
+ var yMax = -Infinity;
+ var cps = map(pathList, function(path) {
+ var rect = path.getBoundingRect();
+ var m2 = path.getComputedTransform();
+ var x = rect.x + rect.width / 2 + (m2 ? m2[4] : 0);
+ var y = rect.y + rect.height / 2 + (m2 ? m2[5] : 0);
+ xMin = Math.min(x, xMin);
+ yMin = Math.min(y, yMin);
+ xMax = Math.max(x, xMax);
+ yMax = Math.max(y, yMax);
+ return [x, y];
+ });
+ var items = map(cps, function(cp, idx) {
+ return {
+ cp,
+ z: hilbert(cp[0], cp[1], xMin, yMin, xMax, yMax),
+ path: pathList[idx]
+ };
+ });
+ return items.sort(function(a, b) {
+ return a.z - b.z;
+ }).map(function(item) {
+ return item.path;
+ });
+}
+function defaultDividePath(param) {
+ return split(param.path, param.count);
+}
+function createEmptyReturn() {
+ return {
+ fromIndividuals: [],
+ toIndividuals: [],
+ count: 0
+ };
+}
+function combineMorph(fromList, toPath, animationOpts) {
+ var fromPathList = [];
+ function addFromPath(fromList2) {
+ for (var i2 = 0; i2 < fromList2.length; i2++) {
+ var from2 = fromList2[i2];
+ if (isCombineMorphing(from2)) {
+ addFromPath(from2.childrenRef());
+ } else if (from2 instanceof Path_default) {
+ fromPathList.push(from2);
+ }
+ }
+ }
+ addFromPath(fromList);
+ var separateCount = fromPathList.length;
+ if (!separateCount) {
+ return createEmptyReturn();
+ }
+ var dividePath = animationOpts.dividePath || defaultDividePath;
+ var toSubPathList = dividePath({
+ path: toPath,
+ count: separateCount
+ });
+ if (toSubPathList.length !== separateCount) {
+ console.error("Invalid morphing: unmatched splitted path");
+ return createEmptyReturn();
+ }
+ fromPathList = sortPaths(fromPathList);
+ toSubPathList = sortPaths(toSubPathList);
+ var oldDone = animationOpts.done;
+ var oldDuring = animationOpts.during;
+ var individualDelay = animationOpts.individualDelay;
+ var identityTransform = new Transformable_default();
+ for (var i = 0; i < separateCount; i++) {
+ var from = fromPathList[i];
+ var to = toSubPathList[i];
+ to.parent = toPath;
+ to.copyTransform(identityTransform);
+ if (!individualDelay) {
+ prepareMorphPath(from, to);
+ }
+ }
+ toPath.__isCombineMorphing = true;
+ toPath.childrenRef = function() {
+ return toSubPathList;
+ };
+ function addToSubPathListToZr(zr) {
+ for (var i2 = 0; i2 < toSubPathList.length; i2++) {
+ toSubPathList[i2].addSelfToZr(zr);
+ }
+ }
+ saveAndModifyMethod(toPath, "addSelfToZr", {
+ after: function(zr) {
+ addToSubPathListToZr(zr);
+ }
+ });
+ saveAndModifyMethod(toPath, "removeSelfFromZr", {
+ after: function(zr) {
+ for (var i2 = 0; i2 < toSubPathList.length; i2++) {
+ toSubPathList[i2].removeSelfFromZr(zr);
+ }
+ }
+ });
+ function restoreToPath() {
+ toPath.__isCombineMorphing = false;
+ toPath.__morphT = -1;
+ toPath.childrenRef = null;
+ restoreMethod(toPath, "addSelfToZr");
+ restoreMethod(toPath, "removeSelfFromZr");
+ }
+ var toLen = toSubPathList.length;
+ if (individualDelay) {
+ var animating_1 = toLen;
+ var eachDone = function() {
+ animating_1--;
+ if (animating_1 === 0) {
+ restoreToPath();
+ oldDone && oldDone();
+ }
+ };
+ for (var i = 0; i < toLen; i++) {
+ var indivdualAnimationOpts = individualDelay ? defaults({
+ delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toSubPathList[i]),
+ done: eachDone
+ }, animationOpts) : animationOpts;
+ morphPath(fromPathList[i], toSubPathList[i], indivdualAnimationOpts);
+ }
+ } else {
+ toPath.__morphT = 0;
+ toPath.animateTo({
+ __morphT: 1
+ }, defaults({
+ during: function(p) {
+ for (var i2 = 0; i2 < toLen; i2++) {
+ var child = toSubPathList[i2];
+ child.__morphT = toPath.__morphT;
+ child.dirtyShape();
+ }
+ oldDuring && oldDuring(p);
+ },
+ done: function() {
+ restoreToPath();
+ for (var i2 = 0; i2 < fromList.length; i2++) {
+ restoreMethod(fromList[i2], "updateTransform");
+ }
+ oldDone && oldDone();
+ }
+ }, animationOpts));
+ }
+ if (toPath.__zr) {
+ addToSubPathListToZr(toPath.__zr);
+ }
+ return {
+ fromIndividuals: fromPathList,
+ toIndividuals: toSubPathList,
+ count: toLen
+ };
+}
+function separateMorph(fromPath, toPathList, animationOpts) {
+ var toLen = toPathList.length;
+ var fromPathList = [];
+ var dividePath = animationOpts.dividePath || defaultDividePath;
+ function addFromPath(fromList) {
+ for (var i2 = 0; i2 < fromList.length; i2++) {
+ var from = fromList[i2];
+ if (isCombineMorphing(from)) {
+ addFromPath(from.childrenRef());
+ } else if (from instanceof Path_default) {
+ fromPathList.push(from);
+ }
+ }
+ }
+ if (isCombineMorphing(fromPath)) {
+ addFromPath(fromPath.childrenRef());
+ var fromLen = fromPathList.length;
+ if (fromLen < toLen) {
+ var k = 0;
+ for (var i = fromLen; i < toLen; i++) {
+ fromPathList.push(clonePath(fromPathList[k++ % fromLen]));
+ }
+ }
+ fromPathList.length = toLen;
+ } else {
+ fromPathList = dividePath({ path: fromPath, count: toLen });
+ var fromPathTransform = fromPath.getComputedTransform();
+ for (var i = 0; i < fromPathList.length; i++) {
+ fromPathList[i].setLocalTransform(fromPathTransform);
+ }
+ if (fromPathList.length !== toLen) {
+ console.error("Invalid morphing: unmatched splitted path");
+ return createEmptyReturn();
+ }
+ }
+ fromPathList = sortPaths(fromPathList);
+ toPathList = sortPaths(toPathList);
+ var individualDelay = animationOpts.individualDelay;
+ for (var i = 0; i < toLen; i++) {
+ var indivdualAnimationOpts = individualDelay ? defaults({
+ delay: (animationOpts.delay || 0) + individualDelay(i, toLen, fromPathList[i], toPathList[i])
+ }, animationOpts) : animationOpts;
+ morphPath(fromPathList[i], toPathList[i], indivdualAnimationOpts);
+ }
+ return {
+ fromIndividuals: fromPathList,
+ toIndividuals: toPathList,
+ count: toPathList.length
+ };
+}
+
+// node_modules/echarts/lib/animation/morphTransitionHelper.js
+function isMultiple(elements) {
+ return isArray(elements[0]);
+}
+function prepareMorphBatches(one, many) {
+ var batches = [];
+ var batchCount = one.length;
+ for (var i = 0; i < batchCount; i++) {
+ batches.push({
+ one: one[i],
+ many: []
+ });
+ }
+ for (var i = 0; i < many.length; i++) {
+ var len2 = many[i].length;
+ var k = void 0;
+ for (k = 0; k < len2; k++) {
+ batches[k % batchCount].many.push(many[i][k]);
+ }
+ }
+ var off = 0;
+ for (var i = batchCount - 1; i >= 0; i--) {
+ if (!batches[i].many.length) {
+ var moveFrom = batches[off].many;
+ if (moveFrom.length <= 1) {
+ if (off) {
+ off = 0;
+ } else {
+ return batches;
+ }
+ }
+ var len2 = moveFrom.length;
+ var mid = Math.ceil(len2 / 2);
+ batches[i].many = moveFrom.slice(mid, len2);
+ batches[off].many = moveFrom.slice(0, mid);
+ off++;
+ }
+ }
+ return batches;
+}
+var pathDividers = {
+ clone: function(params) {
+ var ret = [];
+ var approxOpacity = 1 - Math.pow(1 - params.path.style.opacity, 1 / params.count);
+ for (var i = 0; i < params.count; i++) {
+ var cloned = clonePath(params.path);
+ cloned.setStyle("opacity", approxOpacity);
+ ret.push(cloned);
+ }
+ return ret;
+ },
+ split: null
+};
+function applyMorphAnimation(from, to, divideShape, seriesModel, dataIndex, animateOtherProps) {
+ if (!from.length || !to.length) {
+ return;
+ }
+ var updateAnimationCfg = getAnimationConfig("update", seriesModel, dataIndex);
+ if (!(updateAnimationCfg && updateAnimationCfg.duration > 0)) {
+ return;
+ }
+ var animationDelay = seriesModel.getModel("universalTransition").get("delay");
+ var animationCfg = Object.assign({
+ setToFinal: true
+ }, updateAnimationCfg);
+ var many;
+ var one;
+ if (isMultiple(from)) {
+ many = from;
+ one = to;
+ }
+ if (isMultiple(to)) {
+ many = to;
+ one = from;
+ }
+ function morphOneBatch(batch, fromIsMany2, animateIndex2, animateCount2, forceManyOne) {
+ var batchMany = batch.many;
+ var batchOne = batch.one;
+ if (batchMany.length === 1 && !forceManyOne) {
+ var batchFrom = fromIsMany2 ? batchMany[0] : batchOne;
+ var batchTo = fromIsMany2 ? batchOne : batchMany[0];
+ if (isCombineMorphing(batchFrom)) {
+ morphOneBatch({
+ many: [batchFrom],
+ one: batchTo
+ }, true, animateIndex2, animateCount2, true);
+ } else {
+ var individualAnimationCfg = animationDelay ? defaults({
+ delay: animationDelay(animateIndex2, animateCount2)
+ }, animationCfg) : animationCfg;
+ morphPath(batchFrom, batchTo, individualAnimationCfg);
+ animateOtherProps(batchFrom, batchTo, batchFrom, batchTo, individualAnimationCfg);
+ }
+ } else {
+ var separateAnimationCfg = defaults({
+ dividePath: pathDividers[divideShape],
+ individualDelay: animationDelay && function(idx, count3, fromPath, toPath) {
+ return animationDelay(idx + animateIndex2, animateCount2);
+ }
+ }, animationCfg);
+ var _a2 = fromIsMany2 ? combineMorph(batchMany, batchOne, separateAnimationCfg) : separateMorph(batchOne, batchMany, separateAnimationCfg), fromIndividuals = _a2.fromIndividuals, toIndividuals = _a2.toIndividuals;
+ var count2 = fromIndividuals.length;
+ for (var k = 0; k < count2; k++) {
+ var individualAnimationCfg = animationDelay ? defaults({
+ delay: animationDelay(k, count2)
+ }, animationCfg) : animationCfg;
+ animateOtherProps(fromIndividuals[k], toIndividuals[k], fromIsMany2 ? batchMany[k] : batch.one, fromIsMany2 ? batch.one : batchMany[k], individualAnimationCfg);
+ }
+ }
+ }
+ var fromIsMany = many ? many === from : from.length > to.length;
+ var morphBatches = many ? prepareMorphBatches(one, many) : prepareMorphBatches(fromIsMany ? to : from, [fromIsMany ? from : to]);
+ var animateCount = 0;
+ for (var i = 0; i < morphBatches.length; i++) {
+ animateCount += morphBatches[i].many.length;
+ }
+ var animateIndex = 0;
+ for (var i = 0; i < morphBatches.length; i++) {
+ morphOneBatch(morphBatches[i], fromIsMany, animateIndex, animateCount);
+ animateIndex += morphBatches[i].many.length;
+ }
+}
+function getPathList(elements) {
+ if (!elements) {
+ return [];
+ }
+ if (isArray(elements)) {
+ var pathList_1 = [];
+ for (var i = 0; i < elements.length; i++) {
+ pathList_1.push(getPathList(elements[i]));
+ }
+ return pathList_1;
+ }
+ var pathList = [];
+ elements.traverse(function(el) {
+ if (el instanceof Path_default && !el.disableMorphing && !el.invisible && !el.ignore) {
+ pathList.push(el);
+ }
+ });
+ return pathList;
+}
+
+// node_modules/echarts/lib/animation/universalTransition.js
+var DATA_COUNT_THRESHOLD = 1e4;
+var TRANSITION_NONE = 0;
+var TRANSITION_P2C = 1;
+var TRANSITION_C2P = 2;
+var getUniversalTransitionGlobalStore = makeInner();
+function getDimension(data, visualDimension) {
+ var dimensions = data.dimensions;
+ for (var i = 0; i < dimensions.length; i++) {
+ var dimInfo = data.getDimensionInfo(dimensions[i]);
+ if (dimInfo && dimInfo.otherDims[visualDimension] === 0) {
+ return dimensions[i];
+ }
+ }
+}
+function getValueByDimension(data, dataIndex, dimension) {
+ var dimInfo = data.getDimensionInfo(dimension);
+ var dimOrdinalMeta = dimInfo && dimInfo.ordinalMeta;
+ if (dimInfo) {
+ var value = data.get(dimInfo.name, dataIndex);
+ if (dimOrdinalMeta) {
+ return dimOrdinalMeta.categories[value] || value + "";
+ }
+ return value + "";
+ }
+}
+function getGroupId(data, dataIndex, dataGroupId, isChild) {
+ var visualDimension = isChild ? "itemChildGroupId" : "itemGroupId";
+ var groupIdDim = getDimension(data, visualDimension);
+ if (groupIdDim) {
+ var groupId = getValueByDimension(data, dataIndex, groupIdDim);
+ return groupId;
+ }
+ var rawDataItem = data.getRawDataItem(dataIndex);
+ var property = isChild ? "childGroupId" : "groupId";
+ if (rawDataItem && rawDataItem[property]) {
+ return rawDataItem[property] + "";
+ }
+ if (isChild) {
+ return;
+ }
+ return dataGroupId || data.getId(dataIndex);
+}
+function flattenDataDiffItems(list) {
+ var items = [];
+ each(list, function(seriesInfo) {
+ var data = seriesInfo.data;
+ var dataGroupId = seriesInfo.dataGroupId;
+ if (data.count() > DATA_COUNT_THRESHOLD) {
+ if (true) {
+ warn("Universal transition is disabled on large data > 10k.");
+ }
+ return;
+ }
+ var indices = data.getIndices();
+ for (var dataIndex = 0; dataIndex < indices.length; dataIndex++) {
+ items.push({
+ data,
+ groupId: getGroupId(data, dataIndex, dataGroupId, false),
+ childGroupId: getGroupId(data, dataIndex, dataGroupId, true),
+ divide: seriesInfo.divide,
+ dataIndex
+ });
+ }
+ });
+ return items;
+}
+function fadeInElement(newEl2, newSeries, newIndex) {
+ newEl2.traverse(function(el) {
+ if (el instanceof Path_default) {
+ initProps(el, {
+ style: {
+ opacity: 0
+ }
+ }, newSeries, {
+ dataIndex: newIndex,
+ isFrom: true
+ });
+ }
+ });
+}
+function removeEl2(el) {
+ if (el.parent) {
+ var computedTransform = el.getComputedTransform();
+ el.setLocalTransform(computedTransform);
+ el.parent.remove(el);
+ }
+}
+function stopAnimation(el) {
+ el.stopAnimation();
+ if (el.isGroup) {
+ el.traverse(function(child) {
+ child.stopAnimation();
+ });
+ }
+}
+function animateElementStyles(el, dataIndex, seriesModel) {
+ var animationConfig = getAnimationConfig("update", seriesModel, dataIndex);
+ animationConfig && el.traverse(function(child) {
+ if (child instanceof Displayable_default) {
+ var oldStyle = getOldStyle(child);
+ if (oldStyle) {
+ child.animateFrom({
+ style: oldStyle
+ }, animationConfig);
+ }
+ }
+ });
+}
+function isAllIdSame(oldDiffItems, newDiffItems) {
+ var len2 = oldDiffItems.length;
+ if (len2 !== newDiffItems.length) {
+ return false;
+ }
+ for (var i = 0; i < len2; i++) {
+ var oldItem = oldDiffItems[i];
+ var newItem = newDiffItems[i];
+ if (oldItem.data.getId(oldItem.dataIndex) !== newItem.data.getId(newItem.dataIndex)) {
+ return false;
+ }
+ }
+ return true;
+}
+function transitionBetween(oldList, newList, api) {
+ var oldDiffItems = flattenDataDiffItems(oldList);
+ var newDiffItems = flattenDataDiffItems(newList);
+ function updateMorphingPathProps(from, to, rawFrom, rawTo, animationCfg) {
+ if (rawFrom || from) {
+ to.animateFrom({
+ style: rawFrom && rawFrom !== from ? extend(extend({}, rawFrom.style), from.style) : from.style
+ }, animationCfg);
+ }
+ }
+ var hasMorphAnimation = false;
+ var direction = TRANSITION_NONE;
+ var oldGroupIds = createHashMap();
+ var oldChildGroupIds = createHashMap();
+ oldDiffItems.forEach(function(item) {
+ item.groupId && oldGroupIds.set(item.groupId, true);
+ item.childGroupId && oldChildGroupIds.set(item.childGroupId, true);
+ });
+ for (var i = 0; i < newDiffItems.length; i++) {
+ var newGroupId = newDiffItems[i].groupId;
+ if (oldChildGroupIds.get(newGroupId)) {
+ direction = TRANSITION_P2C;
+ break;
+ }
+ var newChildGroupId = newDiffItems[i].childGroupId;
+ if (newChildGroupId && oldGroupIds.get(newChildGroupId)) {
+ direction = TRANSITION_C2P;
+ break;
+ }
+ }
+ function createKeyGetter(isOld, onlyGetId) {
+ return function(diffItem) {
+ var data = diffItem.data;
+ var dataIndex = diffItem.dataIndex;
+ if (onlyGetId) {
+ return data.getId(dataIndex);
+ }
+ if (isOld) {
+ return direction === TRANSITION_P2C ? diffItem.childGroupId : diffItem.groupId;
+ } else {
+ return direction === TRANSITION_C2P ? diffItem.childGroupId : diffItem.groupId;
+ }
+ };
+ }
+ var useId = isAllIdSame(oldDiffItems, newDiffItems);
+ var isElementStillInChart = {};
+ if (!useId) {
+ for (var i = 0; i < newDiffItems.length; i++) {
+ var newItem = newDiffItems[i];
+ var el = newItem.data.getItemGraphicEl(newItem.dataIndex);
+ if (el) {
+ isElementStillInChart[el.id] = true;
+ }
+ }
+ }
+ function updateOneToOne(newIndex, oldIndex) {
+ var oldItem = oldDiffItems[oldIndex];
+ var newItem2 = newDiffItems[newIndex];
+ var newSeries = newItem2.data.hostModel;
+ var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);
+ var newEl2 = newItem2.data.getItemGraphicEl(newItem2.dataIndex);
+ if (oldEl === newEl2) {
+ newEl2 && animateElementStyles(newEl2, newItem2.dataIndex, newSeries);
+ return;
+ }
+ if (oldEl && isElementStillInChart[oldEl.id]) {
+ return;
+ }
+ if (newEl2) {
+ stopAnimation(newEl2);
+ if (oldEl) {
+ stopAnimation(oldEl);
+ removeEl2(oldEl);
+ hasMorphAnimation = true;
+ applyMorphAnimation(getPathList(oldEl), getPathList(newEl2), newItem2.divide, newSeries, newIndex, updateMorphingPathProps);
+ } else {
+ fadeInElement(newEl2, newSeries, newIndex);
+ }
+ }
+ }
+ new DataDiffer_default(oldDiffItems, newDiffItems, createKeyGetter(true, useId), createKeyGetter(false, useId), null, "multiple").update(updateOneToOne).updateManyToOne(function(newIndex, oldIndices) {
+ var newItem2 = newDiffItems[newIndex];
+ var newData = newItem2.data;
+ var newSeries = newData.hostModel;
+ var newEl2 = newData.getItemGraphicEl(newItem2.dataIndex);
+ var oldElsList = filter(map(oldIndices, function(idx) {
+ return oldDiffItems[idx].data.getItemGraphicEl(oldDiffItems[idx].dataIndex);
+ }), function(oldEl) {
+ return oldEl && oldEl !== newEl2 && !isElementStillInChart[oldEl.id];
+ });
+ if (newEl2) {
+ stopAnimation(newEl2);
+ if (oldElsList.length) {
+ each(oldElsList, function(oldEl) {
+ stopAnimation(oldEl);
+ removeEl2(oldEl);
+ });
+ hasMorphAnimation = true;
+ applyMorphAnimation(getPathList(oldElsList), getPathList(newEl2), newItem2.divide, newSeries, newIndex, updateMorphingPathProps);
+ } else {
+ fadeInElement(newEl2, newSeries, newItem2.dataIndex);
+ }
+ }
+ }).updateOneToMany(function(newIndices, oldIndex) {
+ var oldItem = oldDiffItems[oldIndex];
+ var oldEl = oldItem.data.getItemGraphicEl(oldItem.dataIndex);
+ if (oldEl && isElementStillInChart[oldEl.id]) {
+ return;
+ }
+ var newElsList = filter(map(newIndices, function(idx) {
+ return newDiffItems[idx].data.getItemGraphicEl(newDiffItems[idx].dataIndex);
+ }), function(el2) {
+ return el2 && el2 !== oldEl;
+ });
+ var newSeris = newDiffItems[newIndices[0]].data.hostModel;
+ if (newElsList.length) {
+ each(newElsList, function(newEl2) {
+ return stopAnimation(newEl2);
+ });
+ if (oldEl) {
+ stopAnimation(oldEl);
+ removeEl2(oldEl);
+ hasMorphAnimation = true;
+ applyMorphAnimation(
+ getPathList(oldEl),
+ getPathList(newElsList),
+ oldItem.divide,
+ newSeris,
+ newIndices[0],
+ updateMorphingPathProps
+ );
+ } else {
+ each(newElsList, function(newEl2) {
+ return fadeInElement(newEl2, newSeris, newIndices[0]);
+ });
+ }
+ }
+ }).updateManyToMany(function(newIndices, oldIndices) {
+ new DataDiffer_default(oldIndices, newIndices, function(rawIdx) {
+ return oldDiffItems[rawIdx].data.getId(oldDiffItems[rawIdx].dataIndex);
+ }, function(rawIdx) {
+ return newDiffItems[rawIdx].data.getId(newDiffItems[rawIdx].dataIndex);
+ }).update(function(newIndex, oldIndex) {
+ updateOneToOne(newIndices[newIndex], oldIndices[oldIndex]);
+ }).execute();
+ }).execute();
+ if (hasMorphAnimation) {
+ each(newList, function(_a2) {
+ var data = _a2.data;
+ var seriesModel = data.hostModel;
+ var view = seriesModel && api.getViewOfSeriesModel(seriesModel);
+ var animationCfg = getAnimationConfig("update", seriesModel, 0);
+ if (view && seriesModel.isAnimationEnabled() && animationCfg && animationCfg.duration > 0) {
+ view.group.traverse(function(el2) {
+ if (el2 instanceof Path_default && !el2.animators.length) {
+ el2.animateFrom({
+ style: {
+ opacity: 0
+ }
+ }, animationCfg);
+ }
+ });
+ }
+ });
+ }
+}
+function getSeriesTransitionKey(series) {
+ var seriesKey = series.getModel("universalTransition").get("seriesKey");
+ if (!seriesKey) {
+ return series.id;
+ }
+ return seriesKey;
+}
+function convertArraySeriesKeyToString(seriesKey) {
+ if (isArray(seriesKey)) {
+ return seriesKey.sort().join(",");
+ }
+ return seriesKey;
+}
+function getDivideShapeFromData(data) {
+ if (data.hostModel) {
+ return data.hostModel.getModel("universalTransition").get("divideShape");
+ }
+}
+function findTransitionSeriesBatches(globalStore, params) {
+ var updateBatches = createHashMap();
+ var oldDataMap = createHashMap();
+ var oldDataMapForSplit = createHashMap();
+ each(globalStore.oldSeries, function(series, idx) {
+ var oldDataGroupId = globalStore.oldDataGroupIds[idx];
+ var oldData = globalStore.oldData[idx];
+ var transitionKey = getSeriesTransitionKey(series);
+ var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
+ oldDataMap.set(transitionKeyStr, {
+ dataGroupId: oldDataGroupId,
+ data: oldData
+ });
+ if (isArray(transitionKey)) {
+ each(transitionKey, function(key) {
+ oldDataMapForSplit.set(key, {
+ key: transitionKeyStr,
+ dataGroupId: oldDataGroupId,
+ data: oldData
+ });
+ });
+ }
+ });
+ function checkTransitionSeriesKeyDuplicated(transitionKeyStr) {
+ if (updateBatches.get(transitionKeyStr)) {
+ warn("Duplicated seriesKey in universalTransition " + transitionKeyStr);
+ }
+ }
+ each(params.updatedSeries, function(series) {
+ if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {
+ var newDataGroupId = series.get("dataGroupId");
+ var newData = series.getData();
+ var transitionKey = getSeriesTransitionKey(series);
+ var transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
+ var oldData = oldDataMap.get(transitionKeyStr);
+ if (oldData) {
+ if (true) {
+ checkTransitionSeriesKeyDuplicated(transitionKeyStr);
+ }
+ updateBatches.set(transitionKeyStr, {
+ oldSeries: [{
+ dataGroupId: oldData.dataGroupId,
+ divide: getDivideShapeFromData(oldData.data),
+ data: oldData.data
+ }],
+ newSeries: [{
+ dataGroupId: newDataGroupId,
+ divide: getDivideShapeFromData(newData),
+ data: newData
+ }]
+ });
+ } else {
+ if (isArray(transitionKey)) {
+ if (true) {
+ checkTransitionSeriesKeyDuplicated(transitionKeyStr);
+ }
+ var oldSeries_1 = [];
+ each(transitionKey, function(key) {
+ var oldData2 = oldDataMap.get(key);
+ if (oldData2.data) {
+ oldSeries_1.push({
+ dataGroupId: oldData2.dataGroupId,
+ divide: getDivideShapeFromData(oldData2.data),
+ data: oldData2.data
+ });
+ }
+ });
+ if (oldSeries_1.length) {
+ updateBatches.set(transitionKeyStr, {
+ oldSeries: oldSeries_1,
+ newSeries: [{
+ dataGroupId: newDataGroupId,
+ data: newData,
+ divide: getDivideShapeFromData(newData)
+ }]
+ });
+ }
+ } else {
+ var oldData_1 = oldDataMapForSplit.get(transitionKey);
+ if (oldData_1) {
+ var batch = updateBatches.get(oldData_1.key);
+ if (!batch) {
+ batch = {
+ oldSeries: [{
+ dataGroupId: oldData_1.dataGroupId,
+ data: oldData_1.data,
+ divide: getDivideShapeFromData(oldData_1.data)
+ }],
+ newSeries: []
+ };
+ updateBatches.set(oldData_1.key, batch);
+ }
+ batch.newSeries.push({
+ dataGroupId: newDataGroupId,
+ data: newData,
+ divide: getDivideShapeFromData(newData)
+ });
+ }
+ }
+ }
+ }
+ });
+ return updateBatches;
+}
+function querySeries(series, finder) {
+ for (var i = 0; i < series.length; i++) {
+ var found = finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id;
+ if (found) {
+ return i;
+ }
+ }
+}
+function transitionSeriesFromOpt(transitionOpt, globalStore, params, api) {
+ var from = [];
+ var to = [];
+ each(normalizeToArray(transitionOpt.from), function(finder) {
+ var idx = querySeries(globalStore.oldSeries, finder);
+ if (idx >= 0) {
+ from.push({
+ dataGroupId: globalStore.oldDataGroupIds[idx],
+ data: globalStore.oldData[idx],
+ divide: getDivideShapeFromData(globalStore.oldData[idx]),
+ groupIdDim: finder.dimension
+ });
+ }
+ });
+ each(normalizeToArray(transitionOpt.to), function(finder) {
+ var idx = querySeries(params.updatedSeries, finder);
+ if (idx >= 0) {
+ var data = params.updatedSeries[idx].getData();
+ to.push({
+ dataGroupId: globalStore.oldDataGroupIds[idx],
+ data,
+ divide: getDivideShapeFromData(data),
+ groupIdDim: finder.dimension
+ });
+ }
+ });
+ if (from.length > 0 && to.length > 0) {
+ transitionBetween(from, to, api);
+ }
+}
+function installUniversalTransition(registers) {
+ registers.registerUpdateLifecycle("series:beforeupdate", function(ecMOdel, api, params) {
+ each(normalizeToArray(params.seriesTransition), function(transOpt) {
+ each(normalizeToArray(transOpt.to), function(finder) {
+ var series = params.updatedSeries;
+ for (var i = 0; i < series.length; i++) {
+ if (finder.seriesIndex != null && finder.seriesIndex === series[i].seriesIndex || finder.seriesId != null && finder.seriesId === series[i].id) {
+ series[i][SERIES_UNIVERSAL_TRANSITION_PROP] = true;
+ }
+ }
+ });
+ });
+ });
+ registers.registerUpdateLifecycle("series:transition", function(ecModel, api, params) {
+ var globalStore = getUniversalTransitionGlobalStore(api);
+ if (globalStore.oldSeries && params.updatedSeries && params.optionChanged) {
+ var transitionOpt = params.seriesTransition;
+ if (transitionOpt) {
+ each(normalizeToArray(transitionOpt), function(opt) {
+ transitionSeriesFromOpt(opt, globalStore, params, api);
+ });
+ } else {
+ var updateBatches_1 = findTransitionSeriesBatches(globalStore, params);
+ each(updateBatches_1.keys(), function(key) {
+ var batch = updateBatches_1.get(key);
+ transitionBetween(batch.oldSeries, batch.newSeries, api);
+ });
+ }
+ each(params.updatedSeries, function(series) {
+ if (series[SERIES_UNIVERSAL_TRANSITION_PROP]) {
+ series[SERIES_UNIVERSAL_TRANSITION_PROP] = false;
+ }
+ });
+ }
+ var allSeries = ecModel.getSeries();
+ var savedSeries = globalStore.oldSeries = [];
+ var savedDataGroupIds = globalStore.oldDataGroupIds = [];
+ var savedData = globalStore.oldData = [];
+ for (var i = 0; i < allSeries.length; i++) {
+ var data = allSeries[i].getData();
+ if (data.count() < DATA_COUNT_THRESHOLD) {
+ savedSeries.push(allSeries[i]);
+ savedDataGroupIds.push(allSeries[i].get("dataGroupId"));
+ savedData.push(data);
+ }
+ }
+ });
+}
+
+// node_modules/echarts/index.js
+use([install2]);
+use([install]);
+use([install3, install4, install5, install7, install9, install11, install12, install13, install14, install15, install16, install18, install19, install20, install21, install22, install23, install24, install25, install26, install27, install28]);
+use(install30);
+use(install31);
+use(install10);
+use(install32);
+use(install17);
+use(install33);
+use(install34);
+use(install36);
+use(install37);
+use(install29);
+use(install38);
+use(install39);
+use(install40);
+use(install41);
+use(install42);
+use(install43);
+use(install46);
+use(install49);
+use(install47);
+use(install48);
+use(install52);
+use(install50);
+use(install51);
+use(install53);
+use(install54);
+use(install55);
+use(installUniversalTransition);
+use(installLabelLayout);
+export {
+ Axis_default as Axis,
+ Chart_default as ChartView,
+ Component_default as ComponentModel,
+ Component_default2 as ComponentView,
+ SeriesData_default as List,
+ Model_default as Model,
+ PRIORITY,
+ Series_default as SeriesModel,
+ color_exports as color,
+ connect,
+ dataTool,
+ dependencies,
+ disConnect,
+ disconnect,
+ dispose2 as dispose,
+ env_default as env,
+ extendChartView,
+ extendComponentModel,
+ extendComponentView,
+ extendSeriesModel,
+ format_exports2 as format,
+ getCoordinateSystemDimensions,
+ getInstanceByDom,
+ getInstanceById,
+ getMap,
+ graphic_exports2 as graphic,
+ helper_exports2 as helper,
+ init2 as init,
+ brushSingle as innerDrawElementOnCanvas,
+ matrix_exports as matrix,
+ number_exports2 as number,
+ parseGeoJSON,
+ parseGeoJSON as parseGeoJson,
+ registerAction,
+ registerCoordinateSystem,
+ registerLayout,
+ registerLoading,
+ registerLocale,
+ registerMap,
+ registerPostInit,
+ registerPostUpdate,
+ registerPreprocessor,
+ registerProcessor,
+ registerTheme,
+ registerTransform,
+ registerUpdateLifecycle,
+ registerVisual,
+ setCanvasCreator,
+ setPlatformAPI,
+ throttle,
+ time_exports as time,
+ use,
+ util_exports2 as util,
+ vector_exports as vector,
+ version2 as version,
+ util_exports as zrUtil,
+ zrender_exports as zrender
+};
+/*!
+* ZRender, a high performance 2d drawing library.
+*
+* Copyright (c) 2013, Baidu Inc.
+* All rights reserved.
+*
+* LICENSE
+* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt
+*/
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+//# sourceMappingURL=echarts.js.map
diff --git a/frontend/dashboard/node_modules/.vite/deps/echarts.js.map b/frontend/dashboard/node_modules/.vite/deps/echarts.js.map
new file mode 100644
index 0000000..66970f2
--- /dev/null
+++ b/frontend/dashboard/node_modules/.vite/deps/echarts.js.map
@@ -0,0 +1,7 @@
+{
+ "version": 3,
+ "sources": ["../../tslib/tslib.es6.js", "../../zrender/lib/zrender.js", "../../zrender/lib/core/env.js", "../../zrender/lib/core/util.js", "../../zrender/lib/core/platform.js", "../../zrender/lib/core/vector.js", "../../zrender/lib/mixin/Draggable.js", "../../zrender/lib/core/Eventful.js", "../../zrender/lib/core/fourPointsTransform.js", "../../zrender/lib/core/dom.js", "../../zrender/lib/core/event.js", "../../zrender/lib/core/GestureMgr.js", "../../zrender/lib/core/matrix.js", "../../zrender/lib/core/Point.js", "../../zrender/lib/core/BoundingRect.js", "../../zrender/lib/Handler.js", "../../zrender/lib/core/timsort.js", "../../zrender/lib/graphic/constants.js", "../../zrender/lib/Storage.js", "../../zrender/lib/animation/requestAnimationFrame.js", "../../zrender/lib/animation/easing.js", "../../zrender/lib/core/curve.js", "../../zrender/lib/animation/cubicEasing.js", "../../zrender/lib/animation/Clip.js", "../../zrender/lib/tool/color.js", "../../zrender/lib/core/LRU.js", "../../zrender/lib/svg/helper.js", "../../zrender/lib/animation/Animator.js", "../../zrender/lib/animation/Animation.js", "../../zrender/lib/dom/HandlerProxy.js", "../../zrender/lib/config.js", "../../zrender/lib/core/Transformable.js", "../../zrender/lib/contain/text.js", "../../zrender/lib/Element.js", "../../zrender/lib/graphic/Group.js", "../../echarts/lib/util/number.js", "../../echarts/lib/util/log.js", "../../echarts/lib/util/model.js", "../../echarts/lib/util/clazz.js", "../../echarts/lib/model/mixin/makeStyleMapper.js", "../../echarts/lib/model/mixin/areaStyle.js", "../../zrender/lib/graphic/helper/image.js", "../../zrender/lib/graphic/helper/parseText.js", "../../zrender/lib/graphic/Displayable.js", "../../zrender/lib/core/bbox.js", "../../zrender/lib/core/PathProxy.js", "../../zrender/lib/contain/line.js", "../../zrender/lib/contain/cubic.js", "../../zrender/lib/contain/quadratic.js", "../../zrender/lib/contain/util.js", "../../zrender/lib/contain/arc.js", "../../zrender/lib/contain/windingLine.js", "../../zrender/lib/contain/path.js", "../../zrender/lib/graphic/Path.js", "../../zrender/lib/graphic/TSpan.js", "../../zrender/lib/graphic/Image.js", "../../zrender/lib/graphic/helper/roundRect.js", "../../zrender/lib/graphic/helper/subPixelOptimize.js", "../../zrender/lib/graphic/shape/Rect.js", "../../zrender/lib/graphic/Text.js", "../../echarts/lib/util/innerStore.js", "../../echarts/lib/util/states.js", "../../echarts/lib/util/graphic.js", "../../zrender/lib/tool/transformPath.js", "../../zrender/lib/tool/path.js", "../../zrender/lib/graphic/shape/Circle.js", "../../zrender/lib/graphic/shape/Ellipse.js", "../../zrender/lib/graphic/helper/roundSector.js", "../../zrender/lib/graphic/shape/Sector.js", "../../zrender/lib/graphic/shape/Ring.js", "../../zrender/lib/graphic/helper/smoothBezier.js", "../../zrender/lib/graphic/helper/poly.js", "../../zrender/lib/graphic/shape/Polygon.js", "../../zrender/lib/graphic/shape/Polyline.js", "../../zrender/lib/graphic/shape/Line.js", "../../zrender/lib/graphic/shape/BezierCurve.js", "../../zrender/lib/graphic/shape/Arc.js", "../../zrender/lib/graphic/CompoundPath.js", "../../zrender/lib/graphic/Gradient.js", "../../zrender/lib/graphic/LinearGradient.js", "../../zrender/lib/graphic/RadialGradient.js", "../../zrender/lib/core/OrientedBoundingRect.js", "../../zrender/lib/graphic/IncrementalDisplayable.js", "../../echarts/lib/animation/basicTransition.js", "../../echarts/lib/label/labelStyle.js", "../../echarts/lib/model/mixin/textStyle.js", "../../echarts/lib/model/mixin/lineStyle.js", "../../echarts/lib/model/mixin/itemStyle.js", "../../echarts/lib/model/Model.js", "../../echarts/lib/util/component.js", "../../echarts/lib/i18n/langEN.js", "../../echarts/lib/i18n/langZH.js", "../../echarts/lib/core/locale.js", "../../echarts/lib/util/time.js", "../../echarts/lib/legacy/getTextRect.js", "../../echarts/lib/util/format.js", "../../echarts/lib/util/layout.js", "../../echarts/lib/model/Component.js", "../../echarts/lib/model/globalDefault.js", "../../echarts/lib/util/types.js", "../../echarts/lib/data/helper/sourceHelper.js", "../../echarts/lib/model/internalComponentCreator.js", "../../echarts/lib/model/mixin/palette.js", "../../echarts/lib/model/Global.js", "../../echarts/lib/core/ExtensionAPI.js", "../../echarts/lib/core/CoordinateSystem.js", "../../echarts/lib/model/OptionManager.js", "../../echarts/lib/preprocessor/helper/compatStyle.js", "../../echarts/lib/preprocessor/backwardCompat.js", "../../echarts/lib/processor/dataStack.js", "../../echarts/lib/data/Source.js", "../../echarts/lib/data/helper/dataProvider.js", "../../echarts/lib/model/mixin/dataFormat.js", "../../echarts/lib/core/task.js", "../../echarts/lib/data/helper/dataValueHelper.js", "../../echarts/lib/data/helper/transform.js", "../../echarts/lib/data/DataStore.js", "../../echarts/lib/data/helper/sourceManager.js", "../../echarts/lib/component/tooltip/tooltipMarkup.js", "../../echarts/lib/component/tooltip/seriesFormatTooltip.js", "../../echarts/lib/model/Series.js", "../../echarts/lib/view/Component.js", "../../echarts/lib/chart/helper/createRenderPlanner.js", "../../echarts/lib/view/Chart.js", "../../echarts/lib/util/throttle.js", "../../echarts/lib/visual/style.js", "../../echarts/lib/loading/default.js", "../../echarts/lib/core/Scheduler.js", "../../echarts/lib/theme/light.js", "../../echarts/lib/theme/dark.js", "../../echarts/lib/util/ECEventProcessor.js", "../../echarts/lib/visual/symbol.js", "../../echarts/lib/visual/helper.js", "../../echarts/lib/legacy/dataSelectAction.js", "../../echarts/lib/util/event.js", "../../zrender/lib/core/WeakMap.js", "../../echarts/lib/util/symbol.js", "../../zrender/lib/canvas/helper.js", "../../zrender/lib/canvas/dashStyle.js", "../../zrender/lib/canvas/graphic.js", "../../echarts/lib/util/decal.js", "../../echarts/lib/visual/decal.js", "../../echarts/lib/core/lifecycle.js", "../../echarts/lib/core/impl.js", "../../echarts/lib/core/echarts.js", "../../echarts/lib/extension.js", "../../echarts/lib/data/DataDiffer.js", "../../echarts/lib/data/helper/dimensionHelper.js", "../../echarts/lib/data/SeriesDimensionDefine.js", "../../echarts/lib/data/helper/SeriesDataSchema.js", "../../echarts/lib/data/SeriesData.js", "../../echarts/lib/export/api/helper.js", "../../echarts/lib/data/helper/createDimensions.js", "../../echarts/lib/model/referHelper.js", "../../echarts/lib/data/helper/dataStackHelper.js", "../../echarts/lib/chart/helper/createSeriesData.js", "../../echarts/lib/scale/Scale.js", "../../echarts/lib/data/OrdinalMeta.js", "../../echarts/lib/scale/helper.js", "../../echarts/lib/scale/Ordinal.js", "../../echarts/lib/scale/Interval.js", "../../echarts/lib/util/vendor.js", "../../echarts/lib/layout/barGrid.js", "../../echarts/lib/scale/Time.js", "../../echarts/lib/scale/Log.js", "../../echarts/lib/coord/scaleRawExtentInfo.js", "../../echarts/lib/coord/axisHelper.js", "../../echarts/lib/coord/axisModelCommonMixin.js", "../../zrender/lib/contain/polygon.js", "../../echarts/lib/coord/geo/Region.js", "../../echarts/lib/coord/geo/parseGeoJson.js", "../../echarts/lib/export/api/number.js", "../../echarts/lib/export/api/time.js", "../../echarts/lib/export/api/graphic.js", "../../echarts/lib/export/api/format.js", "../../echarts/lib/export/api/util.js", "../../echarts/lib/coord/axisTickLabelBuilder.js", "../../echarts/lib/coord/Axis.js", "../../echarts/lib/export/api.js", "../../echarts/lib/label/labelGuideHelper.js", "../../echarts/lib/label/labelLayoutHelper.js", "../../echarts/lib/label/LabelManager.js", "../../echarts/lib/label/installLabelLayout.js", "../../echarts/lib/export/core.js", "../../zrender/lib/svg/SVGPathRebuilder.js", "../../zrender/lib/svg/mapStyleToAttrs.js", "../../zrender/lib/svg/core.js", "../../zrender/lib/svg/cssClassId.js", "../../zrender/lib/svg/cssAnimation.js", "../../zrender/lib/svg/cssEmphasis.js", "../../zrender/lib/svg/graphic.js", "../../zrender/lib/svg/domapi.js", "../../zrender/lib/svg/patch.js", "../../zrender/lib/svg/Painter.js", "../../echarts/lib/renderer/installSVGRenderer.js", "../../zrender/lib/canvas/Layer.js", "../../zrender/lib/canvas/Painter.js", "../../echarts/lib/renderer/installCanvasRenderer.js", "../../echarts/lib/chart/line/LineSeries.js", "../../echarts/lib/chart/helper/labelHelper.js", "../../echarts/lib/chart/helper/Symbol.js", "../../echarts/lib/chart/helper/SymbolDraw.js", "../../echarts/lib/chart/line/helper.js", "../../echarts/lib/chart/line/lineAnimationDiff.js", "../../echarts/lib/chart/line/poly.js", "../../echarts/lib/chart/helper/createClipPathFromCoordSys.js", "../../echarts/lib/coord/CoordinateSystem.js", "../../echarts/lib/chart/line/LineView.js", "../../echarts/lib/layout/points.js", "../../echarts/lib/processor/dataSample.js", "../../echarts/lib/chart/line/install.js", "../../echarts/lib/chart/bar/BaseBarSeries.js", "../../echarts/lib/chart/bar/BarSeries.js", "../../echarts/lib/util/shape/sausage.js", "../../echarts/lib/label/sectorLabel.js", "../../echarts/lib/chart/helper/sectorHelper.js", "../../echarts/lib/chart/bar/BarView.js", "../../echarts/lib/chart/bar/install.js", "../../echarts/lib/chart/pie/pieLayout.js", "../../echarts/lib/processor/dataFilter.js", "../../echarts/lib/chart/pie/labelLayout.js", "../../echarts/lib/chart/pie/PieView.js", "../../echarts/lib/chart/helper/createSeriesDataSimply.js", "../../echarts/lib/visual/LegendVisualProvider.js", "../../echarts/lib/chart/pie/PieSeries.js", "../../echarts/lib/processor/negativeDataFilter.js", "../../echarts/lib/chart/pie/install.js", "../../echarts/lib/chart/scatter/ScatterSeries.js", "../../echarts/lib/chart/helper/LargeSymbolDraw.js", "../../echarts/lib/chart/scatter/ScatterView.js", "../../echarts/lib/coord/cartesian/GridModel.js", "../../echarts/lib/coord/cartesian/AxisModel.js", "../../echarts/lib/coord/axisDefault.js", "../../echarts/lib/coord/axisCommonTypes.js", "../../echarts/lib/coord/axisModelCreator.js", "../../echarts/lib/coord/cartesian/Cartesian.js", "../../echarts/lib/coord/cartesian/Cartesian2D.js", "../../echarts/lib/coord/cartesian/Axis2D.js", "../../echarts/lib/coord/cartesian/cartesianAxisHelper.js", "../../echarts/lib/coord/axisAlignTicks.js", "../../echarts/lib/coord/cartesian/Grid.js", "../../echarts/lib/component/axis/AxisBuilder.js", "../../echarts/lib/component/axisPointer/modelHelper.js", "../../echarts/lib/component/axis/AxisView.js", "../../echarts/lib/component/axis/axisSplitHelper.js", "../../echarts/lib/component/axis/CartesianAxisView.js", "../../echarts/lib/component/grid/installSimple.js", "../../echarts/lib/chart/scatter/install.js", "../../echarts/lib/chart/radar/radarLayout.js", "../../echarts/lib/chart/radar/backwardCompat.js", "../../echarts/lib/chart/radar/RadarView.js", "../../echarts/lib/chart/radar/RadarSeries.js", "../../echarts/lib/coord/radar/RadarModel.js", "../../echarts/lib/component/radar/RadarView.js", "../../echarts/lib/coord/radar/IndicatorAxis.js", "../../echarts/lib/coord/radar/Radar.js", "../../echarts/lib/component/radar/install.js", "../../echarts/lib/chart/radar/install.js", "../../echarts/lib/component/helper/interactionMutex.js", "../../echarts/lib/component/helper/RoamController.js", "../../echarts/lib/component/helper/roamHelper.js", "../../echarts/lib/component/helper/cursorHelper.js", "../../zrender/lib/tool/parseXML.js", "../../zrender/lib/tool/parseSVG.js", "../../echarts/lib/coord/geo/GeoSVGResource.js", "../../echarts/lib/coord/geo/fix/nanhai.js", "../../echarts/lib/coord/geo/fix/textCoord.js", "../../echarts/lib/coord/geo/fix/diaoyuIsland.js", "../../echarts/lib/coord/geo/GeoJSONResource.js", "../../echarts/lib/coord/geo/geoSourceManager.js", "../../echarts/lib/component/helper/MapDraw.js", "../../echarts/lib/chart/map/MapView.js", "../../echarts/lib/chart/map/MapSeries.js", "../../echarts/lib/chart/map/mapDataStatistic.js", "../../echarts/lib/chart/map/mapSymbolLayout.js", "../../echarts/lib/coord/View.js", "../../echarts/lib/coord/geo/Geo.js", "../../echarts/lib/coord/geo/geoCreator.js", "../../echarts/lib/coord/geo/GeoModel.js", "../../echarts/lib/action/roamHelper.js", "../../echarts/lib/component/geo/GeoView.js", "../../echarts/lib/component/geo/install.js", "../../echarts/lib/chart/map/install.js", "../../echarts/lib/chart/tree/layoutHelper.js", "../../echarts/lib/chart/tree/TreeView.js", "../../echarts/lib/data/helper/linkSeriesData.js", "../../echarts/lib/data/Tree.js", "../../echarts/lib/chart/helper/treeHelper.js", "../../echarts/lib/chart/tree/TreeSeries.js", "../../echarts/lib/chart/tree/traversalHelper.js", "../../echarts/lib/chart/tree/treeLayout.js", "../../echarts/lib/chart/tree/treeVisual.js", "../../echarts/lib/chart/tree/treeAction.js", "../../echarts/lib/chart/tree/install.js", "../../echarts/lib/chart/treemap/treemapAction.js", "../../echarts/lib/chart/helper/enableAriaDecalForTree.js", "../../echarts/lib/chart/treemap/TreemapSeries.js", "../../echarts/lib/chart/treemap/Breadcrumb.js", "../../echarts/lib/util/animation.js", "../../echarts/lib/chart/treemap/TreemapView.js", "../../echarts/lib/visual/VisualMapping.js", "../../echarts/lib/chart/treemap/treemapVisual.js", "../../echarts/lib/chart/treemap/treemapLayout.js", "../../echarts/lib/chart/treemap/install.js", "../../echarts/lib/chart/graph/categoryFilter.js", "../../echarts/lib/chart/graph/categoryVisual.js", "../../echarts/lib/chart/graph/edgeVisual.js", "../../echarts/lib/chart/helper/multipleGraphEdgeHelper.js", "../../echarts/lib/chart/graph/simpleLayoutHelper.js", "../../echarts/lib/chart/graph/simpleLayout.js", "../../echarts/lib/chart/graph/graphHelper.js", "../../echarts/lib/chart/graph/circularLayoutHelper.js", "../../echarts/lib/chart/graph/circularLayout.js", "../../echarts/lib/chart/graph/forceHelper.js", "../../echarts/lib/chart/graph/forceLayout.js", "../../echarts/lib/chart/graph/createView.js", "../../echarts/lib/chart/helper/LinePath.js", "../../echarts/lib/chart/helper/Line.js", "../../echarts/lib/chart/helper/LineDraw.js", "../../echarts/lib/chart/graph/adjustEdge.js", "../../echarts/lib/chart/graph/GraphView.js", "../../echarts/lib/data/Graph.js", "../../echarts/lib/chart/helper/createGraphFromNodeEdge.js", "../../echarts/lib/chart/graph/GraphSeries.js", "../../echarts/lib/chart/graph/install.js", "../../echarts/lib/chart/gauge/PointerPath.js", "../../echarts/lib/chart/gauge/GaugeView.js", "../../echarts/lib/chart/gauge/GaugeSeries.js", "../../echarts/lib/chart/gauge/install.js", "../../echarts/lib/chart/funnel/FunnelView.js", "../../echarts/lib/chart/funnel/FunnelSeries.js", "../../echarts/lib/chart/funnel/funnelLayout.js", "../../echarts/lib/chart/funnel/install.js", "../../echarts/lib/chart/parallel/ParallelView.js", "../../echarts/lib/chart/parallel/ParallelSeries.js", "../../echarts/lib/chart/parallel/parallelVisual.js", "../../echarts/lib/coord/parallel/parallelPreprocessor.js", "../../echarts/lib/component/parallel/ParallelView.js", "../../echarts/lib/coord/parallel/ParallelModel.js", "../../echarts/lib/coord/parallel/ParallelAxis.js", "../../echarts/lib/component/helper/sliderMove.js", "../../echarts/lib/coord/parallel/Parallel.js", "../../echarts/lib/coord/parallel/parallelCreator.js", "../../echarts/lib/coord/parallel/AxisModel.js", "../../echarts/lib/component/helper/BrushController.js", "../../echarts/lib/component/helper/brushHelper.js", "../../echarts/lib/component/axis/ParallelAxisView.js", "../../echarts/lib/component/axis/parallelAxisAction.js", "../../echarts/lib/component/parallel/install.js", "../../echarts/lib/chart/parallel/install.js", "../../echarts/lib/chart/sankey/SankeyView.js", "../../echarts/lib/chart/sankey/SankeySeries.js", "../../echarts/lib/chart/sankey/sankeyLayout.js", "../../echarts/lib/chart/sankey/sankeyVisual.js", "../../echarts/lib/chart/sankey/install.js", "../../echarts/lib/chart/helper/whiskerBoxCommon.js", "../../echarts/lib/chart/boxplot/BoxplotSeries.js", "../../echarts/lib/chart/boxplot/BoxplotView.js", "../../echarts/lib/chart/boxplot/boxplotLayout.js", "../../echarts/lib/chart/boxplot/prepareBoxplotData.js", "../../echarts/lib/chart/boxplot/boxplotTransform.js", "../../echarts/lib/chart/boxplot/install.js", "../../echarts/lib/chart/candlestick/candlestickVisual.js", "../../echarts/lib/chart/candlestick/CandlestickView.js", "../../echarts/lib/chart/candlestick/CandlestickSeries.js", "../../echarts/lib/chart/candlestick/preprocessor.js", "../../echarts/lib/chart/candlestick/candlestickLayout.js", "../../echarts/lib/chart/candlestick/install.js", "../../echarts/lib/chart/helper/EffectSymbol.js", "../../echarts/lib/chart/effectScatter/EffectScatterView.js", "../../echarts/lib/chart/effectScatter/EffectScatterSeries.js", "../../echarts/lib/chart/effectScatter/install.js", "../../echarts/lib/chart/helper/EffectLine.js", "../../echarts/lib/chart/helper/Polyline.js", "../../echarts/lib/chart/helper/EffectPolyline.js", "../../echarts/lib/chart/helper/LargeLineDraw.js", "../../echarts/lib/chart/lines/linesLayout.js", "../../echarts/lib/chart/lines/LinesView.js", "../../echarts/lib/chart/lines/LinesSeries.js", "../../echarts/lib/chart/lines/linesVisual.js", "../../echarts/lib/chart/lines/install.js", "../../echarts/lib/chart/heatmap/HeatmapLayer.js", "../../echarts/lib/chart/heatmap/HeatmapView.js", "../../echarts/lib/chart/heatmap/HeatmapSeries.js", "../../echarts/lib/chart/heatmap/install.js", "../../echarts/lib/chart/bar/PictorialBarView.js", "../../echarts/lib/chart/bar/PictorialBarSeries.js", "../../echarts/lib/chart/bar/installPictorialBar.js", "../../echarts/lib/chart/themeRiver/ThemeRiverView.js", "../../echarts/lib/chart/themeRiver/ThemeRiverSeries.js", "../../echarts/lib/chart/themeRiver/themeRiverLayout.js", "../../echarts/lib/chart/themeRiver/install.js", "../../echarts/lib/chart/sunburst/SunburstPiece.js", "../../echarts/lib/chart/sunburst/sunburstAction.js", "../../echarts/lib/chart/sunburst/SunburstView.js", "../../echarts/lib/chart/sunburst/SunburstSeries.js", "../../echarts/lib/chart/sunburst/sunburstLayout.js", "../../echarts/lib/chart/sunburst/sunburstVisual.js", "../../echarts/lib/chart/sunburst/install.js", "../../echarts/lib/chart/custom/CustomSeries.js", "../../echarts/lib/coord/cartesian/prepareCustom.js", "../../echarts/lib/coord/geo/prepareCustom.js", "../../echarts/lib/coord/single/prepareCustom.js", "../../echarts/lib/coord/polar/prepareCustom.js", "../../echarts/lib/coord/calendar/prepareCustom.js", "../../echarts/lib/util/styleCompat.js", "../../echarts/lib/animation/customGraphicTransition.js", "../../echarts/lib/animation/customGraphicKeyframeAnimation.js", "../../echarts/lib/chart/custom/CustomView.js", "../../echarts/lib/chart/custom/install.js", "../../echarts/lib/component/axisPointer/BaseAxisPointer.js", "../../echarts/lib/component/axisPointer/viewHelper.js", "../../echarts/lib/component/axisPointer/CartesianAxisPointer.js", "../../echarts/lib/component/axisPointer/AxisPointerModel.js", "../../echarts/lib/component/axisPointer/globalListener.js", "../../echarts/lib/component/axisPointer/AxisPointerView.js", "../../echarts/lib/component/axisPointer/findPointFromSeries.js", "../../echarts/lib/component/axisPointer/axisTrigger.js", "../../echarts/lib/component/axisPointer/install.js", "../../echarts/lib/component/grid/install.js", "../../echarts/lib/component/axisPointer/PolarAxisPointer.js", "../../echarts/lib/coord/polar/PolarModel.js", "../../echarts/lib/coord/polar/AxisModel.js", "../../echarts/lib/coord/polar/RadiusAxis.js", "../../echarts/lib/coord/polar/AngleAxis.js", "../../echarts/lib/coord/polar/Polar.js", "../../echarts/lib/coord/polar/polarCreator.js", "../../echarts/lib/component/axis/AngleAxisView.js", "../../echarts/lib/component/axis/RadiusAxisView.js", "../../echarts/lib/layout/barPolar.js", "../../echarts/lib/component/polar/install.js", "../../echarts/lib/coord/single/singleAxisHelper.js", "../../echarts/lib/component/axis/SingleAxisView.js", "../../echarts/lib/coord/single/AxisModel.js", "../../echarts/lib/coord/single/SingleAxis.js", "../../echarts/lib/coord/single/Single.js", "../../echarts/lib/coord/single/singleCreator.js", "../../echarts/lib/component/axisPointer/SingleAxisPointer.js", "../../echarts/lib/component/singleAxis/install.js", "../../echarts/lib/coord/calendar/CalendarModel.js", "../../echarts/lib/component/calendar/CalendarView.js", "../../echarts/lib/coord/calendar/Calendar.js", "../../echarts/lib/component/calendar/install.js", "../../echarts/lib/component/graphic/GraphicModel.js", "../../echarts/lib/component/graphic/GraphicView.js", "../../echarts/lib/component/graphic/install.js", "../../echarts/lib/component/dataZoom/helper.js", "../../echarts/lib/component/dataZoom/DataZoomModel.js", "../../echarts/lib/component/dataZoom/SelectZoomModel.js", "../../echarts/lib/component/dataZoom/DataZoomView.js", "../../echarts/lib/component/dataZoom/SelectZoomView.js", "../../echarts/lib/component/dataZoom/AxisProxy.js", "../../echarts/lib/component/dataZoom/dataZoomProcessor.js", "../../echarts/lib/component/dataZoom/dataZoomAction.js", "../../echarts/lib/component/dataZoom/installCommon.js", "../../echarts/lib/component/dataZoom/installDataZoomSelect.js", "../../echarts/lib/component/toolbox/featureManager.js", "../../echarts/lib/component/toolbox/ToolboxModel.js", "../../echarts/lib/component/helper/listComponent.js", "../../echarts/lib/component/toolbox/ToolboxView.js", "../../echarts/lib/component/toolbox/feature/SaveAsImage.js", "../../echarts/lib/component/toolbox/feature/MagicType.js", "../../echarts/lib/component/toolbox/feature/DataView.js", "../../echarts/lib/component/dataZoom/history.js", "../../echarts/lib/component/toolbox/feature/Restore.js", "../../echarts/lib/component/helper/BrushTargetManager.js", "../../echarts/lib/component/toolbox/feature/DataZoom.js", "../../echarts/lib/component/toolbox/install.js", "../../echarts/lib/component/tooltip/TooltipModel.js", "../../echarts/lib/component/tooltip/helper.js", "../../echarts/lib/component/tooltip/TooltipHTMLContent.js", "../../echarts/lib/component/tooltip/TooltipRichContent.js", "../../echarts/lib/component/tooltip/TooltipView.js", "../../echarts/lib/component/tooltip/install.js", "../../echarts/lib/component/brush/preprocessor.js", "../../echarts/lib/visual/visualSolution.js", "../../echarts/lib/component/brush/selector.js", "../../echarts/lib/component/brush/visualEncoding.js", "../../echarts/lib/component/brush/BrushView.js", "../../echarts/lib/component/brush/BrushModel.js", "../../echarts/lib/component/toolbox/feature/Brush.js", "../../echarts/lib/component/brush/install.js", "../../echarts/lib/component/title/install.js", "../../echarts/lib/component/timeline/TimelineModel.js", "../../echarts/lib/component/timeline/SliderTimelineModel.js", "../../echarts/lib/component/timeline/TimelineView.js", "../../echarts/lib/component/timeline/TimelineAxis.js", "../../echarts/lib/component/timeline/SliderTimelineView.js", "../../echarts/lib/component/timeline/timelineAction.js", "../../echarts/lib/component/timeline/preprocessor.js", "../../echarts/lib/component/timeline/install.js", "../../echarts/lib/component/marker/checkMarkerInSeries.js", "../../echarts/lib/component/marker/MarkerModel.js", "../../echarts/lib/component/marker/MarkPointModel.js", "../../echarts/lib/component/marker/markerHelper.js", "../../echarts/lib/component/marker/MarkerView.js", "../../echarts/lib/component/marker/MarkPointView.js", "../../echarts/lib/component/marker/installMarkPoint.js", "../../echarts/lib/component/marker/MarkLineModel.js", "../../echarts/lib/component/marker/MarkLineView.js", "../../echarts/lib/component/marker/installMarkLine.js", "../../echarts/lib/component/marker/MarkAreaModel.js", "../../echarts/lib/component/marker/MarkAreaView.js", "../../echarts/lib/component/marker/installMarkArea.js", "../../echarts/lib/component/legend/LegendModel.js", "../../echarts/lib/component/legend/LegendView.js", "../../echarts/lib/component/legend/legendFilter.js", "../../echarts/lib/component/legend/legendAction.js", "../../echarts/lib/component/legend/installLegendPlain.js", "../../echarts/lib/component/legend/ScrollableLegendModel.js", "../../echarts/lib/component/legend/ScrollableLegendView.js", "../../echarts/lib/component/legend/scrollableLegendAction.js", "../../echarts/lib/component/legend/installLegendScroll.js", "../../echarts/lib/component/legend/install.js", "../../echarts/lib/component/dataZoom/InsideZoomModel.js", "../../echarts/lib/component/dataZoom/roams.js", "../../echarts/lib/component/dataZoom/InsideZoomView.js", "../../echarts/lib/component/dataZoom/installDataZoomInside.js", "../../echarts/lib/component/dataZoom/SliderZoomModel.js", "../../echarts/lib/component/dataZoom/SliderZoomView.js", "../../echarts/lib/component/dataZoom/installDataZoomSlider.js", "../../echarts/lib/component/dataZoom/install.js", "../../echarts/lib/visual/visualDefault.js", "../../echarts/lib/component/visualMap/VisualMapModel.js", "../../echarts/lib/component/visualMap/ContinuousModel.js", "../../echarts/lib/component/visualMap/VisualMapView.js", "../../echarts/lib/component/visualMap/helper.js", "../../echarts/lib/component/visualMap/ContinuousView.js", "../../echarts/lib/component/visualMap/visualMapAction.js", "../../echarts/lib/component/visualMap/visualEncoding.js", "../../echarts/lib/component/visualMap/preprocessor.js", "../../echarts/lib/component/visualMap/installCommon.js", "../../echarts/lib/component/visualMap/installVisualMapContinuous.js", "../../echarts/lib/component/visualMap/PiecewiseModel.js", "../../echarts/lib/component/visualMap/PiecewiseView.js", "../../echarts/lib/component/visualMap/installVisualMapPiecewise.js", "../../echarts/lib/component/visualMap/install.js", "../../echarts/lib/visual/aria.js", "../../echarts/lib/component/aria/preprocessor.js", "../../echarts/lib/component/aria/install.js", "../../echarts/lib/util/conditionalExpression.js", "../../echarts/lib/component/transform/filterTransform.js", "../../echarts/lib/component/transform/sortTransform.js", "../../echarts/lib/component/transform/install.js", "../../echarts/lib/component/dataset/install.js", "../../zrender/lib/tool/convertPath.js", "../../zrender/lib/tool/dividePath.js", "../../zrender/lib/tool/morphPath.js", "../../echarts/lib/animation/morphTransitionHelper.js", "../../echarts/lib/animation/universalTransition.js", "../../echarts/index.js"],
+ "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nimport env from './core/env.js';\nimport * as zrUtil from './core/util.js';\nimport Handler from './Handler.js';\nimport Storage from './Storage.js';\nimport Animation, { getTime } from './animation/Animation.js';\nimport HandlerProxy from './dom/HandlerProxy.js';\nimport { lum } from './tool/color.js';\nimport { DARK_MODE_THRESHOLD } from './config.js';\nimport Group from './graphic/Group.js';\nvar painterCtors = {};\nvar instances = {};\nfunction delInstance(id) {\n delete instances[id];\n}\nfunction isDarkMode(backgroundColor) {\n if (!backgroundColor) {\n return false;\n }\n if (typeof backgroundColor === 'string') {\n return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\n }\n else if (backgroundColor.colorStops) {\n var colorStops = backgroundColor.colorStops;\n var totalLum = 0;\n var len = colorStops.length;\n for (var i = 0; i < len; i++) {\n totalLum += lum(colorStops[i].color, 1);\n }\n totalLum /= len;\n return totalLum < DARK_MODE_THRESHOLD;\n }\n return false;\n}\nvar ZRender = (function () {\n function ZRender(id, dom, opts) {\n var _this = this;\n this._sleepAfterStill = 10;\n this._stillFrameAccum = 0;\n this._needsRefresh = true;\n this._needsRefreshHover = true;\n this._darkMode = false;\n opts = opts || {};\n this.dom = dom;\n this.id = id;\n var storage = new Storage();\n var rendererType = opts.renderer || 'canvas';\n if (!painterCtors[rendererType]) {\n rendererType = zrUtil.keys(painterCtors)[0];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!painterCtors[rendererType]) {\n throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\n }\n }\n opts.useDirtyRect = opts.useDirtyRect == null\n ? false\n : opts.useDirtyRect;\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n var ssrMode = opts.ssr || painter.ssrOnly;\n this.storage = storage;\n this.painter = painter;\n var handlerProxy = (!env.node && !env.worker && !ssrMode)\n ? new HandlerProxy(painter.getViewportRoot(), painter.root)\n : null;\n var useCoarsePointer = opts.useCoarsePointer;\n var usePointerSize = (useCoarsePointer == null || useCoarsePointer === 'auto')\n ? env.touchEventsSupported\n : !!useCoarsePointer;\n var defaultPointerSize = 44;\n var pointerSize;\n if (usePointerSize) {\n pointerSize = zrUtil.retrieve2(opts.pointerSize, defaultPointerSize);\n }\n this.handler = new Handler(storage, painter, handlerProxy, painter.root, pointerSize);\n this.animation = new Animation({\n stage: {\n update: ssrMode ? null : function () { return _this._flush(true); }\n }\n });\n if (!ssrMode) {\n this.animation.start();\n }\n }\n ZRender.prototype.add = function (el) {\n if (this._disposed || !el) {\n return;\n }\n this.storage.addRoot(el);\n el.addSelfToZr(this);\n this.refresh();\n };\n ZRender.prototype.remove = function (el) {\n if (this._disposed || !el) {\n return;\n }\n this.storage.delRoot(el);\n el.removeSelfFromZr(this);\n this.refresh();\n };\n ZRender.prototype.configLayer = function (zLevel, config) {\n if (this._disposed) {\n return;\n }\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n this.refresh();\n };\n ZRender.prototype.setBackgroundColor = function (backgroundColor) {\n if (this._disposed) {\n return;\n }\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n this.refresh();\n this._backgroundColor = backgroundColor;\n this._darkMode = isDarkMode(backgroundColor);\n };\n ZRender.prototype.getBackgroundColor = function () {\n return this._backgroundColor;\n };\n ZRender.prototype.setDarkMode = function (darkMode) {\n this._darkMode = darkMode;\n };\n ZRender.prototype.isDarkMode = function () {\n return this._darkMode;\n };\n ZRender.prototype.refreshImmediately = function (fromInside) {\n if (this._disposed) {\n return;\n }\n if (!fromInside) {\n this.animation.update(true);\n }\n this._needsRefresh = false;\n this.painter.refresh();\n this._needsRefresh = false;\n };\n ZRender.prototype.refresh = function () {\n if (this._disposed) {\n return;\n }\n this._needsRefresh = true;\n this.animation.start();\n };\n ZRender.prototype.flush = function () {\n if (this._disposed) {\n return;\n }\n this._flush(false);\n };\n ZRender.prototype._flush = function (fromInside) {\n var triggerRendered;\n var start = getTime();\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately(fromInside);\n }\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n var end = getTime();\n if (triggerRendered) {\n this._stillFrameAccum = 0;\n this.trigger('rendered', {\n elapsedTime: end - start\n });\n }\n else if (this._sleepAfterStill > 0) {\n this._stillFrameAccum++;\n if (this._stillFrameAccum > this._sleepAfterStill) {\n this.animation.stop();\n }\n }\n };\n ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\n this._sleepAfterStill = stillFramesCount;\n };\n ZRender.prototype.wakeUp = function () {\n if (this._disposed) {\n return;\n }\n this.animation.start();\n this._stillFrameAccum = 0;\n };\n ZRender.prototype.refreshHover = function () {\n this._needsRefreshHover = true;\n };\n ZRender.prototype.refreshHoverImmediately = function () {\n if (this._disposed) {\n return;\n }\n this._needsRefreshHover = false;\n if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\n this.painter.refreshHover();\n }\n };\n ZRender.prototype.resize = function (opts) {\n if (this._disposed) {\n return;\n }\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n };\n ZRender.prototype.clearAnimation = function () {\n if (this._disposed) {\n return;\n }\n this.animation.clear();\n };\n ZRender.prototype.getWidth = function () {\n if (this._disposed) {\n return;\n }\n return this.painter.getWidth();\n };\n ZRender.prototype.getHeight = function () {\n if (this._disposed) {\n return;\n }\n return this.painter.getHeight();\n };\n ZRender.prototype.setCursorStyle = function (cursorStyle) {\n if (this._disposed) {\n return;\n }\n this.handler.setCursorStyle(cursorStyle);\n };\n ZRender.prototype.findHover = function (x, y) {\n if (this._disposed) {\n return;\n }\n return this.handler.findHover(x, y);\n };\n ZRender.prototype.on = function (eventName, eventHandler, context) {\n if (!this._disposed) {\n this.handler.on(eventName, eventHandler, context);\n }\n return this;\n };\n ZRender.prototype.off = function (eventName, eventHandler) {\n if (this._disposed) {\n return;\n }\n this.handler.off(eventName, eventHandler);\n };\n ZRender.prototype.trigger = function (eventName, event) {\n if (this._disposed) {\n return;\n }\n this.handler.trigger(eventName, event);\n };\n ZRender.prototype.clear = function () {\n if (this._disposed) {\n return;\n }\n var roots = this.storage.getRoots();\n for (var i = 0; i < roots.length; i++) {\n if (roots[i] instanceof Group) {\n roots[i].removeSelfFromZr(this);\n }\n }\n this.storage.delAllRoots();\n this.painter.clear();\n };\n ZRender.prototype.dispose = function () {\n if (this._disposed) {\n return;\n }\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation =\n this.storage =\n this.painter =\n this.handler = null;\n this._disposed = true;\n delInstance(this.id);\n };\n return ZRender;\n}());\nexport function init(dom, opts) {\n var zr = new ZRender(zrUtil.guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\nexport function dispose(zr) {\n zr.dispose();\n}\nexport function disposeAll() {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n instances = {};\n}\nexport function getInstance(id) {\n return instances[id];\n}\nexport function registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\nvar ssrDataGetter;\nexport function getElementSSRData(el) {\n if (typeof ssrDataGetter === 'function') {\n return ssrDataGetter(el);\n }\n}\nexport function registerSSRDataGetter(getter) {\n ssrDataGetter = getter;\n}\nexport var version = '5.6.1';\n;\n", "var Browser = (function () {\n function Browser() {\n this.firefox = false;\n this.ie = false;\n this.edge = false;\n this.newEdge = false;\n this.weChat = false;\n }\n return Browser;\n}());\nvar Env = (function () {\n function Env() {\n this.browser = new Browser();\n this.node = false;\n this.wxa = false;\n this.worker = false;\n this.svgSupported = false;\n this.touchEventsSupported = false;\n this.pointerEventsSupported = false;\n this.domSupported = false;\n this.transformSupported = false;\n this.transform3dSupported = false;\n this.hasGlobalWindow = typeof window !== 'undefined';\n }\n return Env;\n}());\nvar env = new Env();\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n env.wxa = true;\n env.touchEventsSupported = true;\n}\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\n env.worker = true;\n}\nelse if (!env.hasGlobalWindow || 'Deno' in window) {\n env.node = true;\n env.svgSupported = true;\n}\nelse {\n detect(navigator.userAgent, env);\n}\nfunction detect(ua, env) {\n var browser = env.browser;\n var firefox = ua.match(/Firefox\\/([\\d.]+)/);\n var ie = ua.match(/MSIE\\s([\\d.]+)/)\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge?\\/([\\d.]+)/);\n var weChat = (/micromessenger/i).test(ua);\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n }\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n browser.newEdge = +edge[1].split('.')[0] > 18;\n }\n if (weChat) {\n browser.weChat = true;\n }\n env.svgSupported = typeof SVGRect !== 'undefined';\n env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\n env.pointerEventsSupported = 'onpointerdown' in window\n && (browser.edge || (browser.ie && +browser.version >= 11));\n env.domSupported = typeof document !== 'undefined';\n var style = document.documentElement.style;\n env.transform3dSupported = ((browser.ie && 'transition' in style)\n || browser.edge\n || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix()))\n || 'MozPerspective' in style)\n && !('OTransition' in style);\n env.transformSupported = env.transform3dSupported\n || (browser.ie && +browser.version >= 9);\n}\nexport default env;\n", "import { platformApi } from './platform.js';\nvar BUILTIN_OBJECT = reduce([\n 'Function',\n 'RegExp',\n 'Date',\n 'Error',\n 'CanvasGradient',\n 'CanvasPattern',\n 'Image',\n 'Canvas'\n], function (obj, val) {\n obj['[object ' + val + ']'] = true;\n return obj;\n}, {});\nvar TYPED_ARRAY = reduce([\n 'Int8',\n 'Uint8',\n 'Uint8Clamped',\n 'Int16',\n 'Uint16',\n 'Int32',\n 'Uint32',\n 'Float32',\n 'Float64'\n], function (obj, val) {\n obj['[object ' + val + 'Array]'] = true;\n return obj;\n}, {});\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar ctorFunction = function () { }.constructor;\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\nvar protoKey = '__proto__';\nvar idStart = 0x0907;\nexport function guid() {\n return idStart++;\n}\nexport function logError() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n console.error.apply(console, args);\n }\n}\nexport function clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n var result = source;\n var typeStr = objToString.call(source);\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n if (Ctor.from) {\n result = Ctor.from(source);\n }\n else {\n result = new Ctor(source.length);\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = source[i];\n }\n }\n }\n }\n else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n result[key] = clone(source[key]);\n }\n }\n }\n return result;\n}\nexport function merge(target, source, overwrite) {\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n var targetProp = target[key];\n var sourceProp = source[key];\n if (isObject(sourceProp)\n && isObject(targetProp)\n && !isArray(sourceProp)\n && !isArray(targetProp)\n && !isDom(sourceProp)\n && !isDom(targetProp)\n && !isBuiltInObject(sourceProp)\n && !isBuiltInObject(targetProp)\n && !isPrimitive(sourceProp)\n && !isPrimitive(targetProp)) {\n merge(targetProp, sourceProp, overwrite);\n }\n else if (overwrite || !(key in target)) {\n target[key] = clone(source[key]);\n }\n }\n }\n return target;\n}\nexport function mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n return result;\n}\nexport function extend(target, source) {\n if (Object.assign) {\n Object.assign(target, source);\n }\n else {\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\nexport function defaults(target, source, overlay) {\n var keysArr = keys(source);\n for (var i = 0, len = keysArr.length; i < len; i++) {\n var key = keysArr[i];\n if ((overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n return target;\n}\nexport var createCanvas = platformApi.createCanvas;\nexport function indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n return -1;\n}\nexport function inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n function F() { }\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\nexport function mixin(target, source, override) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n if (Object.getOwnPropertyNames) {\n var keyList = Object.getOwnPropertyNames(source);\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i];\n if (key !== 'constructor') {\n if ((override ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n }\n }\n else {\n defaults(target, source, override);\n }\n}\nexport function isArrayLike(data) {\n if (!data) {\n return false;\n }\n if (typeof data === 'string') {\n return false;\n }\n return typeof data.length === 'number';\n}\nexport function each(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n if (arr.forEach && arr.forEach === nativeForEach) {\n arr.forEach(cb, context);\n }\n else if (arr.length === +arr.length) {\n for (var i = 0, len = arr.length; i < len; i++) {\n cb.call(context, arr[i], i, arr);\n }\n }\n else {\n for (var key in arr) {\n if (arr.hasOwnProperty(key)) {\n cb.call(context, arr[key], key, arr);\n }\n }\n }\n}\nexport function map(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.map && arr.map === nativeMap) {\n return arr.map(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n result.push(cb.call(context, arr[i], i, arr));\n }\n return result;\n }\n}\nexport function reduce(arr, cb, memo, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n memo = cb.call(context, memo, arr[i], i, arr);\n }\n return memo;\n}\nexport function filter(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.filter && arr.filter === nativeFilter) {\n return arr.filter(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n result.push(arr[i]);\n }\n }\n return result;\n }\n}\nexport function find(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n return arr[i];\n }\n }\n}\nexport function keys(obj) {\n if (!obj) {\n return [];\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keyList = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keyList.push(key);\n }\n }\n return keyList;\n}\nfunction bindPolyfill(func, context) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport var bind = (protoFunction && isFunction(protoFunction.bind))\n ? protoFunction.call.bind(protoFunction.bind)\n : bindPolyfill;\nfunction curry(func) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport { curry };\nexport function isArray(value) {\n if (Array.isArray) {\n return Array.isArray(value);\n }\n return objToString.call(value) === '[object Array]';\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isStringSafe(value) {\n return objToString.call(value) === '[object String]';\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\nexport function isObject(value) {\n var type = typeof value;\n return type === 'function' || (!!value && type === 'object');\n}\nexport function isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\nexport function isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\nexport function isDom(value) {\n return typeof value === 'object'\n && typeof value.nodeType === 'number'\n && typeof value.ownerDocument === 'object';\n}\nexport function isGradientObject(value) {\n return value.colorStops != null;\n}\nexport function isImagePatternObject(value) {\n return value.image != null;\n}\nexport function isRegExp(value) {\n return objToString.call(value) === '[object RegExp]';\n}\nexport function eqNaN(value) {\n return value !== value;\n}\nexport function retrieve() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n for (var i = 0, len = args.length; i < len; i++) {\n if (args[i] != null) {\n return args[i];\n }\n }\n}\nexport function retrieve2(value0, value1) {\n return value0 != null\n ? value0\n : value1;\n}\nexport function retrieve3(value0, value1, value2) {\n return value0 != null\n ? value0\n : value1 != null\n ? value1\n : value2;\n}\nexport function slice(arr) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return nativeSlice.apply(arr, args);\n}\nexport function normalizeCssArray(val) {\n if (typeof (val) === 'number') {\n return [val, val, val, val];\n }\n var len = val.length;\n if (len === 2) {\n return [val[0], val[1], val[0], val[1]];\n }\n else if (len === 3) {\n return [val[0], val[1], val[2], val[1]];\n }\n return val;\n}\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\nexport function trim(str) {\n if (str == null) {\n return null;\n }\n else if (typeof str.trim === 'function') {\n return str.trim();\n }\n else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\nvar primitiveKey = '__ec_primitive__';\nexport function setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\nexport function isPrimitive(obj) {\n return obj[primitiveKey];\n}\nvar MapPolyfill = (function () {\n function MapPolyfill() {\n this.data = {};\n }\n MapPolyfill.prototype[\"delete\"] = function (key) {\n var existed = this.has(key);\n if (existed) {\n delete this.data[key];\n }\n return existed;\n };\n MapPolyfill.prototype.has = function (key) {\n return this.data.hasOwnProperty(key);\n };\n MapPolyfill.prototype.get = function (key) {\n return this.data[key];\n };\n MapPolyfill.prototype.set = function (key, value) {\n this.data[key] = value;\n return this;\n };\n MapPolyfill.prototype.keys = function () {\n return keys(this.data);\n };\n MapPolyfill.prototype.forEach = function (callback) {\n var data = this.data;\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n callback(data[key], key);\n }\n }\n };\n return MapPolyfill;\n}());\nvar isNativeMapSupported = typeof Map === 'function';\nfunction maybeNativeMap() {\n return (isNativeMapSupported ? new Map() : new MapPolyfill());\n}\nvar HashMap = (function () {\n function HashMap(obj) {\n var isArr = isArray(obj);\n this.data = maybeNativeMap();\n var thisMap = this;\n (obj instanceof HashMap)\n ? obj.each(visit)\n : (obj && each(obj, visit));\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n }\n HashMap.prototype.hasKey = function (key) {\n return this.data.has(key);\n };\n HashMap.prototype.get = function (key) {\n return this.data.get(key);\n };\n HashMap.prototype.set = function (key, value) {\n this.data.set(key, value);\n return value;\n };\n HashMap.prototype.each = function (cb, context) {\n this.data.forEach(function (value, key) {\n cb.call(context, value, key);\n });\n };\n HashMap.prototype.keys = function () {\n var keys = this.data.keys();\n return isNativeMapSupported\n ? Array.from(keys)\n : keys;\n };\n HashMap.prototype.removeKey = function (key) {\n this.data[\"delete\"](key);\n };\n return HashMap;\n}());\nexport { HashMap };\nexport function createHashMap(obj) {\n return new HashMap(obj);\n}\nexport function concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n var offset = a.length;\n for (var i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n return newArray;\n}\nexport function createObject(proto, properties) {\n var obj;\n if (Object.create) {\n obj = Object.create(proto);\n }\n else {\n var StyleCtor = function () { };\n StyleCtor.prototype = proto;\n obj = new StyleCtor();\n }\n if (properties) {\n extend(obj, properties);\n }\n return obj;\n}\nexport function disableUserSelect(dom) {\n var domStyle = dom.style;\n domStyle.webkitUserSelect = 'none';\n domStyle.userSelect = 'none';\n domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\n domStyle['-webkit-touch-callout'] = 'none';\n}\nexport function hasOwn(own, prop) {\n return own.hasOwnProperty(prop);\n}\nexport function noop() { }\nexport var RADIAN_TO_DEGREE = 180 / Math.PI;\n", "export var DEFAULT_FONT_SIZE = 12;\nexport var DEFAULT_FONT_FAMILY = 'sans-serif';\nexport var DEFAULT_FONT = DEFAULT_FONT_SIZE + \"px \" + DEFAULT_FONT_FAMILY;\nvar OFFSET = 20;\nvar SCALE = 100;\nvar defaultWidthMapStr = \"007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\\\\\WQb\\\\0FWLg\\\\bWb\\\\WQ\\\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\\\FFF5.5N\";\nfunction getTextWidthMap(mapStr) {\n var map = {};\n if (typeof JSON === 'undefined') {\n return map;\n }\n for (var i = 0; i < mapStr.length; i++) {\n var char = String.fromCharCode(i + 32);\n var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE;\n map[char] = size;\n }\n return map;\n}\nexport var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr);\nexport var platformApi = {\n createCanvas: function () {\n return typeof document !== 'undefined'\n && document.createElement('canvas');\n },\n measureText: (function () {\n var _ctx;\n var _cachedFont;\n return function (text, font) {\n if (!_ctx) {\n var canvas = platformApi.createCanvas();\n _ctx = canvas && canvas.getContext('2d');\n }\n if (_ctx) {\n if (_cachedFont !== font) {\n _cachedFont = _ctx.font = font || DEFAULT_FONT;\n }\n return _ctx.measureText(text);\n }\n else {\n text = text || '';\n font = font || DEFAULT_FONT;\n var res = /((?:\\d+)?\\.?\\d*)px/.exec(font);\n var fontSize = res && +res[1] || DEFAULT_FONT_SIZE;\n var width = 0;\n if (font.indexOf('mono') >= 0) {\n width = fontSize * text.length;\n }\n else {\n for (var i = 0; i < text.length; i++) {\n var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]];\n width += preCalcWidth == null ? fontSize : (preCalcWidth * fontSize);\n }\n }\n return { width: width };\n }\n };\n })(),\n loadImage: function (src, onload, onerror) {\n var image = new Image();\n image.onload = onload;\n image.onerror = onerror;\n image.src = src;\n return image;\n }\n};\nexport function setPlatformAPI(newPlatformApis) {\n for (var key in platformApi) {\n if (newPlatformApis[key]) {\n platformApi[key] = newPlatformApis[key];\n }\n }\n}\n", "export function create(x, y) {\n if (x == null) {\n x = 0;\n }\n if (y == null) {\n y = 0;\n }\n return [x, y];\n}\nexport function copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\nexport function clone(v) {\n return [v[0], v[1]];\n}\nexport function set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\nexport function add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\nexport function scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\nexport function sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\nexport function len(v) {\n return Math.sqrt(lenSquare(v));\n}\nexport var length = len;\nexport function lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\nexport var lengthSquare = lenSquare;\nexport function mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\nexport function div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\nexport function dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\nexport function scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\nexport function normalize(out, v) {\n var d = len(v);\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n }\n else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n return out;\n}\nexport function distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\nexport var dist = distance;\nexport function distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\nexport var distSquare = distanceSquare;\nexport function negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\nexport function lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\nexport function applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nexport function min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\nexport function max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n", "var Param = (function () {\n function Param(target, e) {\n this.target = target;\n this.topTarget = e && e.topTarget;\n }\n return Param;\n}());\nvar Draggable = (function () {\n function Draggable(handler) {\n this.handler = handler;\n handler.on('mousedown', this._dragStart, this);\n handler.on('mousemove', this._drag, this);\n handler.on('mouseup', this._dragEnd, this);\n }\n Draggable.prototype._dragStart = function (e) {\n var draggingTarget = e.target;\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget;\n }\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\n }\n };\n Draggable.prototype._drag = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\n }\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n };\n Draggable.prototype._dragEnd = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\n if (this._dropTarget) {\n this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\n }\n this._draggingTarget = null;\n this._dropTarget = null;\n };\n return Draggable;\n}());\nexport default Draggable;\n", "var Eventful = (function () {\n function Eventful(eventProcessors) {\n if (eventProcessors) {\n this._$eventProcessor = eventProcessors;\n }\n }\n Eventful.prototype.on = function (event, query, handler, context) {\n if (!this._$handlers) {\n this._$handlers = {};\n }\n var _h = this._$handlers;\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n if (!handler || !event) {\n return this;\n }\n var eventProcessor = this._$eventProcessor;\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n if (!_h[event]) {\n _h[event] = [];\n }\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return this;\n }\n }\n var wrap = {\n h: handler,\n query: query,\n ctx: (context || this),\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n (lastWrap && lastWrap.callAtLast)\n ? _h[event].splice(lastIndex, 0, wrap)\n : _h[event].push(wrap);\n return this;\n };\n Eventful.prototype.isSilent = function (eventName) {\n var _h = this._$handlers;\n return !_h || !_h[eventName] || !_h[eventName].length;\n };\n Eventful.prototype.off = function (eventType, handler) {\n var _h = this._$handlers;\n if (!_h) {\n return this;\n }\n if (!eventType) {\n this._$handlers = {};\n return this;\n }\n if (handler) {\n if (_h[eventType]) {\n var newList = [];\n for (var i = 0, l = _h[eventType].length; i < l; i++) {\n if (_h[eventType][i].h !== handler) {\n newList.push(_h[eventType][i]);\n }\n }\n _h[eventType] = newList;\n }\n if (_h[eventType] && _h[eventType].length === 0) {\n delete _h[eventType];\n }\n }\n else {\n delete _h[eventType];\n }\n return this;\n };\n Eventful.prototype.trigger = function (eventType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[eventType];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(eventType, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(hItem.ctx);\n break;\n case 1:\n hItem.h.call(hItem.ctx, args[0]);\n break;\n case 2:\n hItem.h.call(hItem.ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(eventType);\n return this;\n };\n Eventful.prototype.triggerWithContext = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var ctx = args[argLen - 1];\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(type, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(ctx);\n break;\n case 1:\n hItem.h.call(ctx, args[0]);\n break;\n case 2:\n hItem.h.call(ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(ctx, args.slice(1, argLen - 1));\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(type);\n return this;\n };\n return Eventful;\n}());\nexport default Eventful;\n", "var LN2 = Math.log(2);\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n if (rank === 1) {\n var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n var subRowMask = rowMask | (1 << rowStart);\n var subRowStart = rowStart + 1;\n while (rowMask & (1 << subRowStart)) {\n subRowStart++;\n }\n var sum = 0;\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n detCache[cacheKey] = sum;\n return sum;\n}\nexport function buildTransformer(src, dest) {\n var mA = [\n [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\n [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\n [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\n [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\n [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\n [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\n [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\n [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\n ];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n if (det === 0) {\n return;\n }\n var vh = [];\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1)\n * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\n / det * dest[i];\n }\n }\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n", "import env from './env.js';\nimport { buildTransformer } from './fourPointsTransform.js';\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\nexport function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\n && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\nexport function transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n return false;\n}\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n if (markers) {\n return markers;\n }\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = [\n 'position: absolute',\n 'visibility: hidden',\n 'padding: 0',\n 'margin: 0',\n 'border-width: 0',\n 'user-select: none',\n 'width:0',\n 'height:0',\n propLR[idxLR] + ':0',\n propTB[idxTB] + ':0',\n propLR[1 - idxLR] + ':auto',\n propTB[1 - idxTB] + ':auto',\n ''\n ].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n return markers;\n}\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var srcCoords = [];\n var destCoords = [];\n var oldCoordTheSame = true;\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n }\n return (oldCoordTheSame && transformer)\n ? transformer\n : (saved.srcCoords = srcCoords,\n saved[transformerName] = inverse\n ? buildTransformer(destCoords, srcCoords)\n : buildTransformer(srcCoords, destCoords));\n}\nexport function isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\nexport function encodeHTML(source) {\n return source == null\n ? ''\n : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n", "import Eventful from './Eventful.js';\nimport env from './env.js';\nimport { isCanvasEl, transformCoordWithViewport } from './dom.js';\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\nvar firefoxNotSupportOffsetXY = env.browser.firefox\n && +env.browser.version.split('.')[0] < 39;\nexport function clientToLocal(el, e, out, calculate) {\n out = out || {};\n if (calculate) {\n calculateZrXY(el, e, out);\n }\n else if (firefoxNotSupportOffsetXY\n && e.layerX != null\n && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n }\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n }\n else {\n calculateZrXY(el, e, out);\n }\n return out;\n}\nfunction calculateZrXY(el, e, out) {\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n if (isCanvasEl(el)) {\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n }\n else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n out.zrX = out.zrY = 0;\n}\nexport function getNativeEvent(e) {\n return e\n || window.event;\n}\nexport function normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n if (e.zrX != null) {\n return e;\n }\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n var wheelDelta = getWheelDeltaMayPolyfill(e);\n e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\n }\n else {\n var touch = eventType !== 'touchend'\n ? e.targetTouches[0]\n : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n }\n var button = e.button;\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\n }\n return e;\n}\nfunction getWheelDeltaMayPolyfill(e) {\n var rawWheelDelta = e.wheelDelta;\n if (rawWheelDelta) {\n return rawWheelDelta;\n }\n var deltaX = e.deltaX;\n var deltaY = e.deltaY;\n if (deltaX == null || deltaY == null) {\n return rawWheelDelta;\n }\n var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\n var sign = deltaY > 0 ? -1\n : deltaY < 0 ? 1\n : deltaX > 0 ? -1\n : 1;\n return 3 * delta * sign;\n}\nexport function addEventListener(el, name, handler, opt) {\n el.addEventListener(name, handler, opt);\n}\nexport function removeEventListener(el, name, handler, opt) {\n el.removeEventListener(name, handler, opt);\n}\nexport var stop = function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n};\nexport function isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\nexport { Eventful as Dispatcher };\n", "import * as eventUtil from './event.js';\nvar GestureMgr = (function () {\n function GestureMgr() {\n this._track = [];\n }\n GestureMgr.prototype.recognize = function (event, target, root) {\n this._doTrack(event, target, root);\n return this._recognize(event);\n };\n GestureMgr.prototype.clear = function () {\n this._track.length = 0;\n return this;\n };\n GestureMgr.prototype._doTrack = function (event, target, root) {\n var touches = event.touches;\n if (!touches) {\n return;\n }\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n this._track.push(trackItem);\n };\n GestureMgr.prototype._recognize = function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n };\n return GestureMgr;\n}());\nexport { GestureMgr };\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction center(pointPair) {\n return [\n (pointPair[0][0] + pointPair[1][0]) / 2,\n (pointPair[0][1] + pointPair[1][1]) / 2\n ];\n}\nvar recognizers = {\n pinch: function (tracks, event) {\n var trackLen = tracks.length;\n if (!trackLen) {\n return;\n }\n var pinchEnd = (tracks[trackLen - 1] || {}).points;\n var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\n if (pinchPre\n && pinchPre.length > 1\n && pinchEnd\n && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: tracks[0].target,\n event: event\n };\n }\n }\n};\n", "export function create() {\n return [1, 0, 0, 1, 0, 0];\n}\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\nexport function copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\nexport function mul(out, m1, m2) {\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\nexport function translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\nexport function rotate(out, a, rad, pivot) {\n if (pivot === void 0) { pivot = [0, 0]; }\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0];\n out[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1];\n return out;\n}\nexport function scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\nexport function invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\nexport function clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n", "var Point = (function () {\n function Point(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n Point.prototype.copy = function (other) {\n this.x = other.x;\n this.y = other.y;\n return this;\n };\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n Point.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Point.prototype.equal = function (other) {\n return other.x === this.x && other.y === this.y;\n };\n Point.prototype.add = function (other) {\n this.x += other.x;\n this.y += other.y;\n return this;\n };\n Point.prototype.scale = function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n };\n Point.prototype.scaleAndAdd = function (other, scalar) {\n this.x += other.x * scalar;\n this.y += other.y * scalar;\n };\n Point.prototype.sub = function (other) {\n this.x -= other.x;\n this.y -= other.y;\n return this;\n };\n Point.prototype.dot = function (other) {\n return this.x * other.x + this.y * other.y;\n };\n Point.prototype.len = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n Point.prototype.lenSquare = function () {\n return this.x * this.x + this.y * this.y;\n };\n Point.prototype.normalize = function () {\n var len = this.len();\n this.x /= len;\n this.y /= len;\n return this;\n };\n Point.prototype.distance = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Point.prototype.distanceSquare = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return dx * dx + dy * dy;\n };\n Point.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n Point.prototype.transform = function (m) {\n if (!m) {\n return;\n }\n var x = this.x;\n var y = this.y;\n this.x = m[0] * x + m[2] * y + m[4];\n this.y = m[1] * x + m[3] * y + m[5];\n return this;\n };\n Point.prototype.toArray = function (out) {\n out[0] = this.x;\n out[1] = this.y;\n return out;\n };\n Point.prototype.fromArray = function (input) {\n this.x = input[0];\n this.y = input[1];\n };\n Point.set = function (p, x, y) {\n p.x = x;\n p.y = y;\n };\n Point.copy = function (p, p2) {\n p.x = p2.x;\n p.y = p2.y;\n };\n Point.len = function (p) {\n return Math.sqrt(p.x * p.x + p.y * p.y);\n };\n Point.lenSquare = function (p) {\n return p.x * p.x + p.y * p.y;\n };\n Point.dot = function (p0, p1) {\n return p0.x * p1.x + p0.y * p1.y;\n };\n Point.add = function (out, p0, p1) {\n out.x = p0.x + p1.x;\n out.y = p0.y + p1.y;\n };\n Point.sub = function (out, p0, p1) {\n out.x = p0.x - p1.x;\n out.y = p0.y - p1.y;\n };\n Point.scale = function (out, p0, scalar) {\n out.x = p0.x * scalar;\n out.y = p0.y * scalar;\n };\n Point.scaleAndAdd = function (out, p0, p1, scalar) {\n out.x = p0.x + p1.x * scalar;\n out.y = p0.y + p1.y * scalar;\n };\n Point.lerp = function (out, p0, p1, t) {\n var onet = 1 - t;\n out.x = onet * p0.x + t * p1.x;\n out.y = onet * p0.y + t * p1.y;\n };\n return Point;\n}());\nexport default Point;\n", "import * as matrix from './matrix.js';\nimport Point from './Point.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar lt = new Point();\nvar rb = new Point();\nvar lb = new Point();\nvar rt = new Point();\nvar minTv = new Point();\nvar maxTv = new Point();\nvar BoundingRect = (function () {\n function BoundingRect(x, y, width, height) {\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BoundingRect.prototype.union = function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n if (isFinite(this.x) && isFinite(this.width)) {\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n }\n else {\n this.width = other.width;\n }\n if (isFinite(this.y) && isFinite(this.height)) {\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n }\n else {\n this.height = other.height;\n }\n this.x = x;\n this.y = y;\n };\n BoundingRect.prototype.applyTransform = function (m) {\n BoundingRect.applyTransform(this, this, m);\n };\n BoundingRect.prototype.calculateTransform = function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create();\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n };\n BoundingRect.prototype.intersect = function (b, mtv) {\n if (!b) {\n return false;\n }\n if (!(b instanceof BoundingRect)) {\n b = BoundingRect.create(b);\n }\n var a = this;\n var ax0 = a.x;\n var ax1 = a.x + a.width;\n var ay0 = a.y;\n var ay1 = a.y + a.height;\n var bx0 = b.x;\n var bx1 = b.x + b.width;\n var by0 = b.y;\n var by1 = b.y + b.height;\n var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n if (mtv) {\n var dMin = Infinity;\n var dMax = 0;\n var d0 = Math.abs(ax1 - bx0);\n var d1 = Math.abs(bx1 - ax0);\n var d2 = Math.abs(ay1 - by0);\n var d3 = Math.abs(by1 - ay0);\n var dx = Math.min(d0, d1);\n var dy = Math.min(d2, d3);\n if (ax1 < bx0 || bx1 < ax0) {\n if (dx > dMax) {\n dMax = dx;\n if (d0 < d1) {\n Point.set(maxTv, -d0, 0);\n }\n else {\n Point.set(maxTv, d1, 0);\n }\n }\n }\n else {\n if (dx < dMin) {\n dMin = dx;\n if (d0 < d1) {\n Point.set(minTv, d0, 0);\n }\n else {\n Point.set(minTv, -d1, 0);\n }\n }\n }\n if (ay1 < by0 || by1 < ay0) {\n if (dy > dMax) {\n dMax = dy;\n if (d2 < d3) {\n Point.set(maxTv, 0, -d2);\n }\n else {\n Point.set(maxTv, 0, d3);\n }\n }\n }\n else {\n if (dx < dMin) {\n dMin = dx;\n if (d2 < d3) {\n Point.set(minTv, 0, d2);\n }\n else {\n Point.set(minTv, 0, -d3);\n }\n }\n }\n }\n if (mtv) {\n Point.copy(mtv, overlap ? minTv : maxTv);\n }\n return overlap;\n };\n BoundingRect.prototype.contain = function (x, y) {\n var rect = this;\n return x >= rect.x\n && x <= (rect.x + rect.width)\n && y >= rect.y\n && y <= (rect.y + rect.height);\n };\n BoundingRect.prototype.clone = function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n };\n BoundingRect.prototype.copy = function (other) {\n BoundingRect.copy(this, other);\n };\n BoundingRect.prototype.plain = function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n };\n BoundingRect.prototype.isFinite = function () {\n return isFinite(this.x)\n && isFinite(this.y)\n && isFinite(this.width)\n && isFinite(this.height);\n };\n BoundingRect.prototype.isZero = function () {\n return this.width === 0 || this.height === 0;\n };\n BoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n };\n BoundingRect.copy = function (target, source) {\n target.x = source.x;\n target.y = source.y;\n target.width = source.width;\n target.height = source.height;\n };\n BoundingRect.applyTransform = function (target, source, m) {\n if (!m) {\n if (target !== source) {\n BoundingRect.copy(target, source);\n }\n return;\n }\n if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\n var sx = m[0];\n var sy = m[3];\n var tx = m[4];\n var ty = m[5];\n target.x = source.x * sx + tx;\n target.y = source.y * sy + ty;\n target.width = source.width * sx;\n target.height = source.height * sy;\n if (target.width < 0) {\n target.x += target.width;\n target.width = -target.width;\n }\n if (target.height < 0) {\n target.y += target.height;\n target.height = -target.height;\n }\n return;\n }\n lt.x = lb.x = source.x;\n lt.y = rt.y = source.y;\n rb.x = rt.x = source.x + source.width;\n rb.y = lb.y = source.y + source.height;\n lt.transform(m);\n rt.transform(m);\n rb.transform(m);\n lb.transform(m);\n target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\n target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\n var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\n var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\n target.width = maxX - target.x;\n target.height = maxY - target.y;\n };\n return BoundingRect;\n}());\nexport default BoundingRect;\n", "import { __extends } from \"tslib\";\nimport * as util from './core/util.js';\nimport * as vec2 from './core/vector.js';\nimport Draggable from './mixin/Draggable.js';\nimport Eventful from './core/Eventful.js';\nimport * as eventTool from './core/event.js';\nimport { GestureMgr } from './core/GestureMgr.js';\nimport BoundingRect from './core/BoundingRect.js';\nvar SILENT = 'silent';\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n target: targetInfo.target,\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\nvar EmptyProxy = (function (_super) {\n __extends(EmptyProxy, _super);\n function EmptyProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handler = null;\n return _this;\n }\n EmptyProxy.prototype.dispose = function () { };\n EmptyProxy.prototype.setCursor = function () { };\n return EmptyProxy;\n}(Eventful));\nvar HoveredResult = (function () {\n function HoveredResult(x, y) {\n this.x = x;\n this.y = y;\n }\n return HoveredResult;\n}());\nvar handlerNames = [\n 'click', 'dblclick', 'mousewheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n];\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar Handler = (function (_super) {\n __extends(Handler, _super);\n function Handler(storage, painter, proxy, painterRoot, pointerSize) {\n var _this = _super.call(this) || this;\n _this._hovered = new HoveredResult(0, 0);\n _this.storage = storage;\n _this.painter = painter;\n _this.painterRoot = painterRoot;\n _this._pointerSize = pointerSize;\n proxy = proxy || new EmptyProxy();\n _this.proxy = null;\n _this.setHandlerProxy(proxy);\n _this._draggingMgr = new Draggable(_this);\n return _this;\n }\n Handler.prototype.setHandlerProxy = function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this);\n proxy.handler = this;\n }\n this.proxy = proxy;\n };\n Handler.prototype.mousemove = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target;\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n }\n this.dispatchToElement(hovered, 'mousemove', event);\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n };\n Handler.prototype.mouseout = function (event) {\n var eventControl = event.zrEventControl;\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n if (eventControl !== 'no_globalout') {\n this.trigger('globalout', { type: 'globalout', event: event });\n }\n };\n Handler.prototype.resize = function () {\n this._hovered = new HoveredResult(0, 0);\n };\n Handler.prototype.dispatch = function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n };\n Handler.prototype.dispose = function () {\n this.proxy.dispose();\n this.storage = null;\n this.proxy = null;\n this.painter = null;\n };\n Handler.prototype.setCursorStyle = function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n };\n Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n if (el && el.silent) {\n return;\n }\n var eventKey = ('on' + eventName);\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n while (el) {\n el[eventKey]\n && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.__hostTarget ? el.__hostTarget : el.parent;\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n if (!eventPacket.cancelBubble) {\n this.trigger(eventName, eventPacket);\n if (this.painter && this.painter.eachOtherLayer) {\n this.painter.eachOtherLayer(function (layer) {\n if (typeof (layer[eventKey]) === 'function') {\n layer[eventKey].call(layer, eventPacket);\n }\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n }\n };\n Handler.prototype.findHover = function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = new HoveredResult(x, y);\n setHoverTarget(list, out, x, y, exclude);\n if (this._pointerSize && !out.target) {\n var candidates = [];\n var pointerSize = this._pointerSize;\n var targetSizeHalf = pointerSize / 2;\n var pointerRect = new BoundingRect(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize);\n for (var i = list.length - 1; i >= 0; i--) {\n var el = list[i];\n if (el !== exclude\n && !el.ignore\n && !el.ignoreCoarsePointer\n && (!el.parent || !el.parent.ignoreCoarsePointer)) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n if (tmpRect.intersect(pointerRect)) {\n candidates.push(el);\n }\n }\n }\n if (candidates.length) {\n var rStep = 4;\n var thetaStep = Math.PI / 12;\n var PI2 = Math.PI * 2;\n for (var r = 0; r < targetSizeHalf; r += rStep) {\n for (var theta = 0; theta < PI2; theta += thetaStep) {\n var x1 = x + r * Math.cos(theta);\n var y1 = y + r * Math.sin(theta);\n setHoverTarget(candidates, out, x1, y1, exclude);\n if (out.target) {\n return out;\n }\n }\n }\n }\n }\n return out;\n };\n Handler.prototype.processGesture = function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear();\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n var res = new HoveredResult();\n res.target = gestureInfo.target;\n this.dispatchToElement(res, type, gestureInfo.event);\n }\n };\n return Handler;\n}(Eventful));\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n if (name !== 'mouseup' || !isOutside) {\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY];\n this._upEl = hoveredTarget;\n }\n else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n }\n else if (name === 'click') {\n if (this._downEl !== this._upEl\n || !this._downPoint\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n this._downPoint = null;\n }\n this.dispatchToElement(hovered, name, event);\n };\n});\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent = void 0;\n var ignoreClip = false;\n while (el) {\n if (el.ignoreClip) {\n ignoreClip = true;\n }\n if (!ignoreClip) {\n var clipPath = el.getClipPath();\n if (clipPath && !clipPath.contain(x, y)) {\n return false;\n }\n }\n if (el.silent) {\n isSilent = true;\n }\n var hostEl = el.__hostTarget;\n el = hostEl ? hostEl : el.parent;\n }\n return isSilent ? SILENT : true;\n }\n return false;\n}\nfunction setHoverTarget(list, out, x, y, exclude) {\n for (var i = list.length - 1; i >= 0; i--) {\n var el = list[i];\n var hoverCheckResult = void 0;\n if (el !== exclude\n && !el.ignore\n && (hoverCheckResult = isHover(el, x, y))) {\n !out.topTarget && (out.topTarget = el);\n if (hoverCheckResult !== SILENT) {\n out.target = el;\n break;\n }\n }\n }\n}\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\nexport default Handler;\n", "var DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nfunction minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n}\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n }\n else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n}\nfunction reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n while (left < right) {\n mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n }\n else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n}\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n }\n else {\n offset = m;\n }\n }\n return offset;\n}\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n }\n else {\n lastOffset = m + 1;\n }\n }\n return offset;\n}\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var runStart;\n var runLength;\n var stackSize = 0;\n var tmp = [];\n runStart = [];\n runLength = [];\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\n || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n }\n else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n mergeAt(n);\n }\n }\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n mergeAt(n);\n }\n }\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n }\n else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n }\n else if (length1 === 0) {\n throw new Error();\n }\n else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var _minGallop = minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n if (minGallop < 1) {\n minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n }\n else if (length2 === 0) {\n throw new Error();\n }\n else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n return {\n mergeRuns: mergeRuns,\n forceMergeRuns: forceMergeRuns,\n pushRun: pushRun\n };\n}\nexport default function sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n}\n", "export var REDRAW_BIT = 1;\nexport var STYLE_CHANGED_BIT = 2;\nexport var SHAPE_CHANGED_BIT = 4;\n", "import * as util from './core/util.js';\nimport timsort from './core/timsort.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nvar invalidZErrorLogged = false;\nfunction logInvalidZError() {\n if (invalidZErrorLogged) {\n return;\n }\n invalidZErrorLogged = true;\n console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\n}\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n return a.z2 - b.z2;\n }\n return a.z - b.z;\n }\n return a.zlevel - b.zlevel;\n}\nvar Storage = (function () {\n function Storage() {\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n this.displayableSortFunc = shapeCompareFunc;\n }\n Storage.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n };\n Storage.prototype.getDisplayList = function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n var displayList = this._displayList;\n if (update || !displayList.length) {\n this.updateDisplayList(includeIgnore);\n }\n return displayList;\n };\n Storage.prototype.updateDisplayList = function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n displayList.length = this._displayListLen;\n timsort(displayList, shapeCompareFunc);\n };\n Storage.prototype._updateAndAddDisplayable = function (el, clipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n el.beforeUpdate();\n el.update();\n el.afterUpdate();\n var userSetClipPath = el.getClipPath();\n if (el.ignoreClip) {\n clipPaths = null;\n }\n else if (userSetClipPath) {\n if (clipPaths) {\n clipPaths = clipPaths.slice();\n }\n else {\n clipPaths = [];\n }\n var currentClipPath = userSetClipPath;\n var parentClipPath = el;\n while (currentClipPath) {\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n clipPaths.push(currentClipPath);\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.getClipPath();\n }\n }\n if (el.childrenRef) {\n var children = el.childrenRef();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (el.__dirty) {\n child.__dirty |= REDRAW_BIT;\n }\n this._updateAndAddDisplayable(child, clipPaths, includeIgnore);\n }\n el.__dirty = 0;\n }\n else {\n var disp = el;\n if (clipPaths && clipPaths.length) {\n disp.__clipPaths = clipPaths;\n }\n else if (disp.__clipPaths && disp.__clipPaths.length > 0) {\n disp.__clipPaths = [];\n }\n if (isNaN(disp.z)) {\n logInvalidZError();\n disp.z = 0;\n }\n if (isNaN(disp.z2)) {\n logInvalidZError();\n disp.z2 = 0;\n }\n if (isNaN(disp.zlevel)) {\n logInvalidZError();\n disp.zlevel = 0;\n }\n this._displayList[this._displayListLen++] = disp;\n }\n var decalEl = el.getDecalElement && el.getDecalElement();\n if (decalEl) {\n this._updateAndAddDisplayable(decalEl, clipPaths, includeIgnore);\n }\n var textGuide = el.getTextGuideLine();\n if (textGuide) {\n this._updateAndAddDisplayable(textGuide, clipPaths, includeIgnore);\n }\n var textEl = el.getTextContent();\n if (textEl) {\n this._updateAndAddDisplayable(textEl, clipPaths, includeIgnore);\n }\n };\n Storage.prototype.addRoot = function (el) {\n if (el.__zr && el.__zr.storage === this) {\n return;\n }\n this._roots.push(el);\n };\n Storage.prototype.delRoot = function (el) {\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n return;\n }\n var idx = util.indexOf(this._roots, el);\n if (idx >= 0) {\n this._roots.splice(idx, 1);\n }\n };\n Storage.prototype.delAllRoots = function () {\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n };\n Storage.prototype.getRoots = function () {\n return this._roots;\n };\n Storage.prototype.dispose = function () {\n this._displayList = null;\n this._roots = null;\n };\n return Storage;\n}());\nexport default Storage;\n", "import env from '../core/env.js';\nvar requestAnimationFrame;\nrequestAnimationFrame = (env.hasGlobalWindow\n && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\n || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame)) || function (func) {\n return setTimeout(func, 16);\n};\nexport default requestAnimationFrame;\n", "var easingFuncs = {\n linear: function (k) {\n return k;\n },\n quadraticIn: function (k) {\n return k * k;\n },\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n return -0.5 * (--k * (k - 2) - 1);\n },\n cubicIn: function (k) {\n return k * k * k;\n },\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n quarticIn: function (k) {\n return k * k * k * k;\n },\n quarticOut: function (k) {\n return 1 - (--k * k * k * k);\n },\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n circularOut: function (k) {\n return Math.sqrt(1 - (--k * k));\n },\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return -(a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return (a * Math.pow(2, -10 * k)\n * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\n },\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n bounceIn: function (k) {\n return 1 - easingFuncs.bounceOut(1 - k);\n },\n bounceOut: function (k) {\n if (k < (1 / 2.75)) {\n return 7.5625 * k * k;\n }\n else if (k < (2 / 2.75)) {\n return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\n }\n else if (k < (2.5 / 2.75)) {\n return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\n }\n else {\n return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\n }\n },\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easingFuncs.bounceIn(k * 2) * 0.5;\n }\n return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nexport default easingFuncs;\n", "import { create as v2Create, distSquare as v2DistSquare } from './vector.js';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\nvar _v0 = v2Create();\nvar _v1 = v2Create();\nvar _v2 = v2Create();\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nexport function cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1)\n + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\n + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n }\n else {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = B * B - 4 * A * C;\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K;\n var t2 = -K / 2;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n }\n else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n }\n else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n prev = t - interval;\n next = t + interval;\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n }\n return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = cubicAt(x0, x1, x2, x3, t);\n var y = cubicAt(y0, y1, y2, y3, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n if (divider === 0) {\n return 0.5;\n }\n else {\n return (p0 - p1) / divider;\n }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n }\n return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = quadraticAt(x0, x1, x2, t);\n var y = quadraticAt(y0, y1, y2, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\n", "import { cubicAt, cubicRootAt } from '../core/curve.js';\nimport { trim } from '../core/util.js';\nvar regexp = /cubic-bezier\\(([0-9,\\.e ]+)\\)/;\nexport function createCubicEasingFunc(cubicEasingStr) {\n var cubic = cubicEasingStr && regexp.exec(cubicEasingStr);\n if (cubic) {\n var points = cubic[1].split(',');\n var a_1 = +trim(points[0]);\n var b_1 = +trim(points[1]);\n var c_1 = +trim(points[2]);\n var d_1 = +trim(points[3]);\n if (isNaN(a_1 + b_1 + c_1 + d_1)) {\n return;\n }\n var roots_1 = [];\n return function (p) {\n return p <= 0\n ? 0 : p >= 1\n ? 1\n : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]);\n };\n }\n}\n", "import easingFuncs from './easing.js';\nimport { isFunction, noop } from '../core/util.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nvar Clip = (function () {\n function Clip(opts) {\n this._inited = false;\n this._startTime = 0;\n this._pausedTime = 0;\n this._paused = false;\n this._life = opts.life || 1000;\n this._delay = opts.delay || 0;\n this.loop = opts.loop || false;\n this.onframe = opts.onframe || noop;\n this.ondestroy = opts.ondestroy || noop;\n this.onrestart = opts.onrestart || noop;\n opts.easing && this.setEasing(opts.easing);\n }\n Clip.prototype.step = function (globalTime, deltaTime) {\n if (!this._inited) {\n this._startTime = globalTime + this._delay;\n this._inited = true;\n }\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n var life = this._life;\n var elapsedTime = globalTime - this._startTime - this._pausedTime;\n var percent = elapsedTime / life;\n if (percent < 0) {\n percent = 0;\n }\n percent = Math.min(percent, 1);\n var easingFunc = this.easingFunc;\n var schedule = easingFunc ? easingFunc(percent) : percent;\n this.onframe(schedule);\n if (percent === 1) {\n if (this.loop) {\n var remainder = elapsedTime % life;\n this._startTime = globalTime - remainder;\n this._pausedTime = 0;\n this.onrestart();\n }\n else {\n return true;\n }\n }\n return false;\n };\n Clip.prototype.pause = function () {\n this._paused = true;\n };\n Clip.prototype.resume = function () {\n this._paused = false;\n };\n Clip.prototype.setEasing = function (easing) {\n this.easing = easing;\n this.easingFunc = isFunction(easing)\n ? easing\n : easingFuncs[easing] || createCubicEasingFunc(easing);\n };\n return Clip;\n}());\nexport default Clip;\n", "import LRU from '../core/LRU.js';\nimport { extend, isGradientObject, isString, map } from '../core/util.js';\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\n};\nfunction clampCssByte(i) {\n i = Math.round(i);\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clampCssAngle(i) {\n i = Math.round(i);\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\nfunction clampCssFloat(f) {\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parseCssInt(val) {\n var str = val;\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n return clampCssByte(parseInt(str, 10));\n}\nfunction parseCssFloat(val) {\n var str = val;\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n return clampCssFloat(parseFloat(str));\n}\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n }\n else if (h > 1) {\n h -= 1;\n }\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n if (h * 2 < 1) {\n return m2;\n }\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n return m1;\n}\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\nfunction putToCache(colorStr, rgbaArr) {\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\n}\nexport function parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n if (cached) {\n return copyRgba(rgbaArr, cached);\n }\n colorStr = colorStr + '';\n var str = colorStr.replace(/ /g, '').toLowerCase();\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n var strLen = str.length;\n if (str.charAt(0) === '#') {\n if (strLen === 4 || strLen === 5) {\n var iv = parseInt(str.slice(1, 4), 16);\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n else if (strLen === 7 || strLen === 9) {\n var iv = parseInt(str.slice(1, 7), 16);\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n return;\n }\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === strLen) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1;\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n return params.length === 3\n ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\n : setRgba(rgbaArr, 0, 0, 0, 1);\n }\n alpha = parseCssFloat(params.pop());\n case 'rgb':\n if (params.length >= 3) {\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3]));\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n else {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n default:\n return;\n }\n }\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\nfunction hsla2rgba(hsla, rgba) {\n var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n return rgba;\n}\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n }\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B);\n var vMax = Math.max(R, G, B);\n var delta = vMax - vMin;\n var L = (vMax + vMin) / 2;\n var H;\n var S;\n if (delta === 0) {\n H = 0;\n S = 0;\n }\n else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n }\n else {\n S = delta / (2 - vMax - vMin);\n }\n var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\n var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\n var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\n if (R === vMax) {\n H = deltaB - deltaG;\n }\n else if (G === vMax) {\n H = (1 / 3) + deltaR - deltaB;\n }\n else if (B === vMax) {\n H = (2 / 3) + deltaG - deltaR;\n }\n if (H < 0) {\n H += 1;\n }\n if (H > 1) {\n H -= 1;\n }\n }\n var hsla = [H * 360, S, L];\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n return hsla;\n}\nexport function lift(color, level) {\n var colorArr = parse(color);\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n }\n else {\n colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\n }\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n }\n else if (colorArr[i] < 0) {\n colorArr[i] = 0;\n }\n }\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\nexport function toHex(color) {\n var colorArr = parse(color);\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\n }\n}\nexport function fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length)\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\nexport var fastMapToColor = fastLerp;\nexport function lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length)\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([\n clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\n clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\n clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\n clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\n ], 'rgba');\n return fullOutput\n ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n }\n : color;\n}\nexport var mapToColor = lerp;\nexport function modifyHSL(color, h, s, l) {\n var colorArr = parse(color);\n if (color) {\n colorArr = rgba2hsla(colorArr);\n h != null && (colorArr[0] = clampCssAngle(h));\n s != null && (colorArr[1] = parseCssFloat(s));\n l != null && (colorArr[2] = parseCssFloat(l));\n return stringify(hsla2rgba(colorArr), 'rgba');\n }\n}\nexport function modifyAlpha(color, alpha) {\n var colorArr = parse(color);\n if (colorArr && alpha != null) {\n colorArr[3] = clampCssFloat(alpha);\n return stringify(colorArr, 'rgba');\n }\n}\nexport function stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n return type + '(' + colorStr + ')';\n}\nexport function lum(color, backgroundLum) {\n var arr = parse(color);\n return arr\n ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\n + (1 - arr[3]) * backgroundLum\n : 0;\n}\nexport function random() {\n return stringify([\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255)\n ], 'rgb');\n}\nvar liftedColorCache = new LRU(100);\nexport function liftColor(color) {\n if (isString(color)) {\n var liftedColor = liftedColorCache.get(color);\n if (!liftedColor) {\n liftedColor = lift(color, -0.1);\n liftedColorCache.put(color, liftedColor);\n }\n return liftedColor;\n }\n else if (isGradientObject(color)) {\n var ret = extend({}, color);\n ret.colorStops = map(color.colorStops, function (stop) { return ({\n offset: stop.offset,\n color: lift(stop.color, -0.1)\n }); });\n return ret;\n }\n return color;\n}\n", "var Entry = (function () {\n function Entry(val) {\n this.value = val;\n }\n return Entry;\n}());\nexport { Entry };\nvar LinkedList = (function () {\n function LinkedList() {\n this._len = 0;\n }\n LinkedList.prototype.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n };\n LinkedList.prototype.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n }\n else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n this._len++;\n };\n LinkedList.prototype.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this.head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this.tail = prev;\n }\n entry.next = entry.prev = null;\n this._len--;\n };\n LinkedList.prototype.len = function () {\n return this._len;\n };\n LinkedList.prototype.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n };\n return LinkedList;\n}());\nexport { LinkedList };\nvar LRU = (function () {\n function LRU(maxSize) {\n this._list = new LinkedList();\n this._maxSize = 10;\n this._map = {};\n this._maxSize = maxSize;\n }\n LRU.prototype.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n if (map[key] == null) {\n var len = list.len();\n var entry = this._lastRemovedEntry;\n if (len >= this._maxSize && len > 0) {\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n if (entry) {\n entry.value = value;\n }\n else {\n entry = new Entry(value);\n }\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n return removed;\n };\n LRU.prototype.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n if (entry != null) {\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n return entry.value;\n }\n };\n LRU.prototype.clear = function () {\n this._list.clear();\n this._map = {};\n };\n LRU.prototype.len = function () {\n return this._list.len();\n };\n return LRU;\n}());\nexport default LRU;\n", "import { RADIAN_TO_DEGREE, retrieve2, logError, isFunction } from '../core/util.js';\nimport { parse } from '../tool/color.js';\nimport env from '../core/env.js';\nvar mathRound = Math.round;\nexport function normalizeColor(color) {\n var opacity;\n if (!color || color === 'transparent') {\n color = 'none';\n }\n else if (typeof color === 'string' && color.indexOf('rgba') > -1) {\n var arr = parse(color);\n if (arr) {\n color = 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')';\n opacity = arr[3];\n }\n }\n return {\n color: color,\n opacity: opacity == null ? 1 : opacity\n };\n}\nvar EPSILON = 1e-4;\nexport function isAroundZero(transform) {\n return transform < EPSILON && transform > -EPSILON;\n}\nexport function round3(transform) {\n return mathRound(transform * 1e3) / 1e3;\n}\nexport function round4(transform) {\n return mathRound(transform * 1e4) / 1e4;\n}\nexport function round1(transform) {\n return mathRound(transform * 10) / 10;\n}\nexport function getMatrixStr(m) {\n return 'matrix('\n + round3(m[0]) + ','\n + round3(m[1]) + ','\n + round3(m[2]) + ','\n + round3(m[3]) + ','\n + round4(m[4]) + ','\n + round4(m[5])\n + ')';\n}\nexport var TEXT_ALIGN_TO_ANCHOR = {\n left: 'start',\n right: 'end',\n center: 'middle',\n middle: 'middle'\n};\nexport function adjustTextY(y, lineHeight, textBaseline) {\n if (textBaseline === 'top') {\n y += lineHeight / 2;\n }\n else if (textBaseline === 'bottom') {\n y -= lineHeight / 2;\n }\n return y;\n}\nexport function hasShadow(style) {\n return style\n && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\n}\nexport function getShadowKey(displayable) {\n var style = displayable.style;\n var globalScale = displayable.getGlobalScale();\n return [\n style.shadowColor,\n (style.shadowBlur || 0).toFixed(2),\n (style.shadowOffsetX || 0).toFixed(2),\n (style.shadowOffsetY || 0).toFixed(2),\n globalScale[0],\n globalScale[1]\n ].join(',');\n}\nexport function getClipPathsKey(clipPaths) {\n var key = [];\n if (clipPaths) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n key.push(clipPath.id);\n }\n }\n return key.join(',');\n}\nexport function isImagePattern(val) {\n return val && (!!val.image);\n}\nexport function isSVGPattern(val) {\n return val && (!!val.svgElement);\n}\nexport function isPattern(val) {\n return isImagePattern(val) || isSVGPattern(val);\n}\nexport function isLinearGradient(val) {\n return val.type === 'linear';\n}\nexport function isRadialGradient(val) {\n return val.type === 'radial';\n}\nexport function isGradient(val) {\n return val && (val.type === 'linear'\n || val.type === 'radial');\n}\nexport function getIdURL(id) {\n return \"url(#\" + id + \")\";\n}\nexport function getPathPrecision(el) {\n var scale = el.getGlobalScale();\n var size = Math.max(scale[0], scale[1]);\n return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1);\n}\nexport function getSRTTransformString(transform) {\n var x = transform.x || 0;\n var y = transform.y || 0;\n var rotation = (transform.rotation || 0) * RADIAN_TO_DEGREE;\n var scaleX = retrieve2(transform.scaleX, 1);\n var scaleY = retrieve2(transform.scaleY, 1);\n var skewX = transform.skewX || 0;\n var skewY = transform.skewY || 0;\n var res = [];\n if (x || y) {\n res.push(\"translate(\" + x + \"px,\" + y + \"px)\");\n }\n if (rotation) {\n res.push(\"rotate(\" + rotation + \")\");\n }\n if (scaleX !== 1 || scaleY !== 1) {\n res.push(\"scale(\" + scaleX + \",\" + scaleY + \")\");\n }\n if (skewX || skewY) {\n res.push(\"skew(\" + mathRound(skewX * RADIAN_TO_DEGREE) + \"deg, \" + mathRound(skewY * RADIAN_TO_DEGREE) + \"deg)\");\n }\n return res.join(' ');\n}\nexport var encodeBase64 = (function () {\n if (env.hasGlobalWindow && isFunction(window.btoa)) {\n return function (str) {\n return window.btoa(unescape(encodeURIComponent(str)));\n };\n }\n if (typeof Buffer !== 'undefined') {\n return function (str) {\n return Buffer.from(str).toString('base64');\n };\n }\n return function (str) {\n if (process.env.NODE_ENV !== 'production') {\n logError('Base64 isn\\'t natively supported in the current environment.');\n }\n return null;\n };\n})();\n", "import Clip from './Clip.js';\nimport * as color from '../tool/color.js';\nimport { eqNaN, extend, isArrayLike, isFunction, isGradientObject, isNumber, isString, keys, logError, map } from '../core/util.js';\nimport easingFuncs from './easing.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nimport { isLinearGradient, isRadialGradient } from '../svg/helper.js';\n;\nvar arraySlice = Array.prototype.slice;\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\nfunction interpolate1DArray(out, p0, p1, percent) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n return out;\n}\nfunction interpolate2DArray(out, p0, p1, percent) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n return out;\n}\nfunction add1DArray(out, p0, p1, sign) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = p0[i] + p1[i] * sign;\n }\n return out;\n}\nfunction add2DArray(out, p0, p1, sign) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = p0[i][j] + p1[i][j] * sign;\n }\n }\n return out;\n}\nfunction fillColorStops(val0, val1) {\n var len0 = val0.length;\n var len1 = val1.length;\n var shorterArr = len0 > len1 ? val1 : val0;\n var shorterLen = Math.min(len0, len1);\n var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 };\n for (var i = shorterLen; i < Math.max(len0, len1); i++) {\n shorterArr.push({\n offset: last.offset,\n color: last.color.slice()\n });\n }\n}\nfunction fillArray(val0, val1, arrDim) {\n var arr0 = val0;\n var arr1 = val1;\n if (!arr0.push || !arr1.push) {\n return;\n }\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n if (arr0Len !== arr1Len) {\n var isPreviousLarger = arr0Len > arr1Len;\n if (isPreviousLarger) {\n arr0.length = arr1Len;\n }\n else {\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n }\n var len2 = arr0[0] && arr0[0].length;\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n }\n else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\nexport function cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n if (isArrayLike(value[0])) {\n var ret = [];\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n return ret;\n }\n return arraySlice.call(value);\n }\n return value;\n}\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]) || 0;\n rgba[1] = Math.floor(rgba[1]) || 0;\n rgba[2] = Math.floor(rgba[2]) || 0;\n rgba[3] = rgba[3] == null ? 1 : rgba[3];\n return 'rgba(' + rgba.join(',') + ')';\n}\nfunction guessArrayDim(value) {\n return isArrayLike(value && value[0]) ? 2 : 1;\n}\nvar VALUE_TYPE_NUMBER = 0;\nvar VALUE_TYPE_1D_ARRAY = 1;\nvar VALUE_TYPE_2D_ARRAY = 2;\nvar VALUE_TYPE_COLOR = 3;\nvar VALUE_TYPE_LINEAR_GRADIENT = 4;\nvar VALUE_TYPE_RADIAL_GRADIENT = 5;\nvar VALUE_TYPE_UNKOWN = 6;\nfunction isGradientValueType(valType) {\n return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT;\n}\nfunction isArrayValueType(valType) {\n return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY;\n}\nvar tmpRgba = [0, 0, 0, 0];\nvar Track = (function () {\n function Track(propName) {\n this.keyframes = [];\n this.discrete = false;\n this._invalid = false;\n this._needsSort = false;\n this._lastFr = 0;\n this._lastFrP = 0;\n this.propName = propName;\n }\n Track.prototype.isFinished = function () {\n return this._finished;\n };\n Track.prototype.setFinished = function () {\n this._finished = true;\n if (this._additiveTrack) {\n this._additiveTrack.setFinished();\n }\n };\n Track.prototype.needsAnimate = function () {\n return this.keyframes.length >= 1;\n };\n Track.prototype.getAdditiveTrack = function () {\n return this._additiveTrack;\n };\n Track.prototype.addKeyframe = function (time, rawValue, easing) {\n this._needsSort = true;\n var keyframes = this.keyframes;\n var len = keyframes.length;\n var discrete = false;\n var valType = VALUE_TYPE_UNKOWN;\n var value = rawValue;\n if (isArrayLike(rawValue)) {\n var arrayDim = guessArrayDim(rawValue);\n valType = arrayDim;\n if (arrayDim === 1 && !isNumber(rawValue[0])\n || arrayDim === 2 && !isNumber(rawValue[0][0])) {\n discrete = true;\n }\n }\n else {\n if (isNumber(rawValue) && !eqNaN(rawValue)) {\n valType = VALUE_TYPE_NUMBER;\n }\n else if (isString(rawValue)) {\n if (!isNaN(+rawValue)) {\n valType = VALUE_TYPE_NUMBER;\n }\n else {\n var colorArray = color.parse(rawValue);\n if (colorArray) {\n value = colorArray;\n valType = VALUE_TYPE_COLOR;\n }\n }\n }\n else if (isGradientObject(rawValue)) {\n var parsedGradient = extend({}, value);\n parsedGradient.colorStops = map(rawValue.colorStops, function (colorStop) { return ({\n offset: colorStop.offset,\n color: color.parse(colorStop.color)\n }); });\n if (isLinearGradient(rawValue)) {\n valType = VALUE_TYPE_LINEAR_GRADIENT;\n }\n else if (isRadialGradient(rawValue)) {\n valType = VALUE_TYPE_RADIAL_GRADIENT;\n }\n value = parsedGradient;\n }\n }\n if (len === 0) {\n this.valType = valType;\n }\n else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {\n discrete = true;\n }\n this.discrete = this.discrete || discrete;\n var kf = {\n time: time,\n value: value,\n rawValue: rawValue,\n percent: 0\n };\n if (easing) {\n kf.easing = easing;\n kf.easingFunc = isFunction(easing)\n ? easing\n : easingFuncs[easing] || createCubicEasingFunc(easing);\n }\n keyframes.push(kf);\n return kf;\n };\n Track.prototype.prepare = function (maxTime, additiveTrack) {\n var kfs = this.keyframes;\n if (this._needsSort) {\n kfs.sort(function (a, b) {\n return a.time - b.time;\n });\n }\n var valType = this.valType;\n var kfsLen = kfs.length;\n var lastKf = kfs[kfsLen - 1];\n var isDiscrete = this.discrete;\n var isArr = isArrayValueType(valType);\n var isGradient = isGradientValueType(valType);\n for (var i = 0; i < kfsLen; i++) {\n var kf = kfs[i];\n var value = kf.value;\n var lastValue = lastKf.value;\n kf.percent = kf.time / maxTime;\n if (!isDiscrete) {\n if (isArr && i !== kfsLen - 1) {\n fillArray(value, lastValue, valType);\n }\n else if (isGradient) {\n fillColorStops(value.colorStops, lastValue.colorStops);\n }\n }\n }\n if (!isDiscrete\n && valType !== VALUE_TYPE_RADIAL_GRADIENT\n && additiveTrack\n && this.needsAnimate()\n && additiveTrack.needsAnimate()\n && valType === additiveTrack.valType\n && !additiveTrack._finished) {\n this._additiveTrack = additiveTrack;\n var startValue = kfs[0].value;\n for (var i = 0; i < kfsLen; i++) {\n if (valType === VALUE_TYPE_NUMBER) {\n kfs[i].additiveValue = kfs[i].value - startValue;\n }\n else if (valType === VALUE_TYPE_COLOR) {\n kfs[i].additiveValue =\n add1DArray([], kfs[i].value, startValue, -1);\n }\n else if (isArrayValueType(valType)) {\n kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY\n ? add1DArray([], kfs[i].value, startValue, -1)\n : add2DArray([], kfs[i].value, startValue, -1);\n }\n }\n }\n };\n Track.prototype.step = function (target, percent) {\n if (this._finished) {\n return;\n }\n if (this._additiveTrack && this._additiveTrack._finished) {\n this._additiveTrack = null;\n }\n var isAdditive = this._additiveTrack != null;\n var valueKey = isAdditive ? 'additiveValue' : 'value';\n var valType = this.valType;\n var keyframes = this.keyframes;\n var kfsNum = keyframes.length;\n var propName = this.propName;\n var isValueColor = valType === VALUE_TYPE_COLOR;\n var frameIdx;\n var lastFrame = this._lastFr;\n var mathMin = Math.min;\n var frame;\n var nextFrame;\n if (kfsNum === 1) {\n frame = nextFrame = keyframes[0];\n }\n else {\n if (percent < 0) {\n frameIdx = 0;\n }\n else if (percent < this._lastFrP) {\n var start = mathMin(lastFrame + 1, kfsNum - 1);\n for (frameIdx = start; frameIdx >= 0; frameIdx--) {\n if (keyframes[frameIdx].percent <= percent) {\n break;\n }\n }\n frameIdx = mathMin(frameIdx, kfsNum - 2);\n }\n else {\n for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {\n if (keyframes[frameIdx].percent > percent) {\n break;\n }\n }\n frameIdx = mathMin(frameIdx - 1, kfsNum - 2);\n }\n nextFrame = keyframes[frameIdx + 1];\n frame = keyframes[frameIdx];\n }\n if (!(frame && nextFrame)) {\n return;\n }\n this._lastFr = frameIdx;\n this._lastFrP = percent;\n var interval = (nextFrame.percent - frame.percent);\n var w = interval === 0 ? 1 : mathMin((percent - frame.percent) / interval, 1);\n if (nextFrame.easingFunc) {\n w = nextFrame.easingFunc(w);\n }\n var targetArr = isAdditive ? this._additiveValue\n : (isValueColor ? tmpRgba : target[propName]);\n if ((isArrayValueType(valType) || isValueColor) && !targetArr) {\n targetArr = this._additiveValue = [];\n }\n if (this.discrete) {\n target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue;\n }\n else if (isArrayValueType(valType)) {\n valType === VALUE_TYPE_1D_ARRAY\n ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\n : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n }\n else if (isGradientValueType(valType)) {\n var val = frame[valueKey];\n var nextVal_1 = nextFrame[valueKey];\n var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT;\n target[propName] = {\n type: isLinearGradient_1 ? 'linear' : 'radial',\n x: interpolateNumber(val.x, nextVal_1.x, w),\n y: interpolateNumber(val.y, nextVal_1.y, w),\n colorStops: map(val.colorStops, function (colorStop, idx) {\n var nextColorStop = nextVal_1.colorStops[idx];\n return {\n offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w),\n color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w))\n };\n }),\n global: nextVal_1.global\n };\n if (isLinearGradient_1) {\n target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w);\n target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w);\n }\n else {\n target[propName].r = interpolateNumber(val.r, nextVal_1.r, w);\n }\n }\n else if (isValueColor) {\n interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n if (!isAdditive) {\n target[propName] = rgba2String(targetArr);\n }\n }\n else {\n var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\n if (isAdditive) {\n this._additiveValue = value;\n }\n else {\n target[propName] = value;\n }\n }\n if (isAdditive) {\n this._addToTarget(target);\n }\n };\n Track.prototype._addToTarget = function (target) {\n var valType = this.valType;\n var propName = this.propName;\n var additiveValue = this._additiveValue;\n if (valType === VALUE_TYPE_NUMBER) {\n target[propName] = target[propName] + additiveValue;\n }\n else if (valType === VALUE_TYPE_COLOR) {\n color.parse(target[propName], tmpRgba);\n add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\n target[propName] = rgba2String(tmpRgba);\n }\n else if (valType === VALUE_TYPE_1D_ARRAY) {\n add1DArray(target[propName], target[propName], additiveValue, 1);\n }\n else if (valType === VALUE_TYPE_2D_ARRAY) {\n add2DArray(target[propName], target[propName], additiveValue, 1);\n }\n };\n return Track;\n}());\nvar Animator = (function () {\n function Animator(target, loop, allowDiscreteAnimation, additiveTo) {\n this._tracks = {};\n this._trackKeys = [];\n this._maxTime = 0;\n this._started = 0;\n this._clip = null;\n this._target = target;\n this._loop = loop;\n if (loop && additiveTo) {\n logError('Can\\' use additive animation on looped animation.');\n return;\n }\n this._additiveAnimators = additiveTo;\n this._allowDiscrete = allowDiscreteAnimation;\n }\n Animator.prototype.getMaxTime = function () {\n return this._maxTime;\n };\n Animator.prototype.getDelay = function () {\n return this._delay;\n };\n Animator.prototype.getLoop = function () {\n return this._loop;\n };\n Animator.prototype.getTarget = function () {\n return this._target;\n };\n Animator.prototype.changeTarget = function (target) {\n this._target = target;\n };\n Animator.prototype.when = function (time, props, easing) {\n return this.whenWithKeys(time, props, keys(props), easing);\n };\n Animator.prototype.whenWithKeys = function (time, props, propNames, easing) {\n var tracks = this._tracks;\n for (var i = 0; i < propNames.length; i++) {\n var propName = propNames[i];\n var track = tracks[propName];\n if (!track) {\n track = tracks[propName] = new Track(propName);\n var initialValue = void 0;\n var additiveTrack = this._getAdditiveTrack(propName);\n if (additiveTrack) {\n var addtiveTrackKfs = additiveTrack.keyframes;\n var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1];\n initialValue = lastFinalKf && lastFinalKf.value;\n if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {\n initialValue = rgba2String(initialValue);\n }\n }\n else {\n initialValue = this._target[propName];\n }\n if (initialValue == null) {\n continue;\n }\n if (time > 0) {\n track.addKeyframe(0, cloneValue(initialValue), easing);\n }\n this._trackKeys.push(propName);\n }\n track.addKeyframe(time, cloneValue(props[propName]), easing);\n }\n this._maxTime = Math.max(this._maxTime, time);\n return this;\n };\n Animator.prototype.pause = function () {\n this._clip.pause();\n this._paused = true;\n };\n Animator.prototype.resume = function () {\n this._clip.resume();\n this._paused = false;\n };\n Animator.prototype.isPaused = function () {\n return !!this._paused;\n };\n Animator.prototype.duration = function (duration) {\n this._maxTime = duration;\n this._force = true;\n return this;\n };\n Animator.prototype._doneCallback = function () {\n this._setTracksFinished();\n this._clip = null;\n var doneList = this._doneCbs;\n if (doneList) {\n var len = doneList.length;\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n }\n };\n Animator.prototype._abortedCallback = function () {\n this._setTracksFinished();\n var animation = this.animation;\n var abortedList = this._abortedCbs;\n if (animation) {\n animation.removeClip(this._clip);\n }\n this._clip = null;\n if (abortedList) {\n for (var i = 0; i < abortedList.length; i++) {\n abortedList[i].call(this);\n }\n }\n };\n Animator.prototype._setTracksFinished = function () {\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < tracksKeys.length; i++) {\n tracks[tracksKeys[i]].setFinished();\n }\n };\n Animator.prototype._getAdditiveTrack = function (trackName) {\n var additiveTrack;\n var additiveAnimators = this._additiveAnimators;\n if (additiveAnimators) {\n for (var i = 0; i < additiveAnimators.length; i++) {\n var track = additiveAnimators[i].getTrack(trackName);\n if (track) {\n additiveTrack = track;\n }\n }\n }\n return additiveTrack;\n };\n Animator.prototype.start = function (easing) {\n if (this._started > 0) {\n return;\n }\n this._started = 1;\n var self = this;\n var tracks = [];\n var maxTime = this._maxTime || 0;\n for (var i = 0; i < this._trackKeys.length; i++) {\n var propName = this._trackKeys[i];\n var track = this._tracks[propName];\n var additiveTrack = this._getAdditiveTrack(propName);\n var kfs = track.keyframes;\n var kfsNum = kfs.length;\n track.prepare(maxTime, additiveTrack);\n if (track.needsAnimate()) {\n if (!this._allowDiscrete && track.discrete) {\n var lastKf = kfs[kfsNum - 1];\n if (lastKf) {\n self._target[track.propName] = lastKf.rawValue;\n }\n track.setFinished();\n }\n else {\n tracks.push(track);\n }\n }\n }\n if (tracks.length || this._force) {\n var clip = new Clip({\n life: maxTime,\n loop: this._loop,\n delay: this._delay || 0,\n onframe: function (percent) {\n self._started = 2;\n var additiveAnimators = self._additiveAnimators;\n if (additiveAnimators) {\n var stillHasAdditiveAnimator = false;\n for (var i = 0; i < additiveAnimators.length; i++) {\n if (additiveAnimators[i]._clip) {\n stillHasAdditiveAnimator = true;\n break;\n }\n }\n if (!stillHasAdditiveAnimator) {\n self._additiveAnimators = null;\n }\n }\n for (var i = 0; i < tracks.length; i++) {\n tracks[i].step(self._target, percent);\n }\n var onframeList = self._onframeCbs;\n if (onframeList) {\n for (var i = 0; i < onframeList.length; i++) {\n onframeList[i](self._target, percent);\n }\n }\n },\n ondestroy: function () {\n self._doneCallback();\n }\n });\n this._clip = clip;\n if (this.animation) {\n this.animation.addClip(clip);\n }\n if (easing) {\n clip.setEasing(easing);\n }\n }\n else {\n this._doneCallback();\n }\n return this;\n };\n Animator.prototype.stop = function (forwardToLast) {\n if (!this._clip) {\n return;\n }\n var clip = this._clip;\n if (forwardToLast) {\n clip.onframe(1);\n }\n this._abortedCallback();\n };\n Animator.prototype.delay = function (time) {\n this._delay = time;\n return this;\n };\n Animator.prototype.during = function (cb) {\n if (cb) {\n if (!this._onframeCbs) {\n this._onframeCbs = [];\n }\n this._onframeCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.done = function (cb) {\n if (cb) {\n if (!this._doneCbs) {\n this._doneCbs = [];\n }\n this._doneCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.aborted = function (cb) {\n if (cb) {\n if (!this._abortedCbs) {\n this._abortedCbs = [];\n }\n this._abortedCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.getClip = function () {\n return this._clip;\n };\n Animator.prototype.getTrack = function (propName) {\n return this._tracks[propName];\n };\n Animator.prototype.getTracks = function () {\n var _this = this;\n return map(this._trackKeys, function (key) { return _this._tracks[key]; });\n };\n Animator.prototype.stopTracks = function (propNames, forwardToLast) {\n if (!propNames.length || !this._clip) {\n return true;\n }\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < propNames.length; i++) {\n var track = tracks[propNames[i]];\n if (track && !track.isFinished()) {\n if (forwardToLast) {\n track.step(this._target, 1);\n }\n else if (this._started === 1) {\n track.step(this._target, 0);\n }\n track.setFinished();\n }\n }\n var allAborted = true;\n for (var i = 0; i < tracksKeys.length; i++) {\n if (!tracks[tracksKeys[i]].isFinished()) {\n allAborted = false;\n break;\n }\n }\n if (allAborted) {\n this._abortedCallback();\n }\n return allAborted;\n };\n Animator.prototype.saveTo = function (target, trackKeys, firstOrLast) {\n if (!target) {\n return;\n }\n trackKeys = trackKeys || this._trackKeys;\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track || track.isFinished()) {\n continue;\n }\n var kfs = track.keyframes;\n var kf = kfs[firstOrLast ? 0 : kfs.length - 1];\n if (kf) {\n target[propName] = cloneValue(kf.rawValue);\n }\n }\n };\n Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\n trackKeys = trackKeys || keys(finalProps);\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track) {\n continue;\n }\n var kfs = track.keyframes;\n if (kfs.length > 1) {\n var lastKf = kfs.pop();\n track.addKeyframe(lastKf.time, finalProps[propName]);\n track.prepare(this._maxTime, track.getAdditiveTrack());\n }\n }\n };\n return Animator;\n}());\nexport default Animator;\n", "import { __extends } from \"tslib\";\nimport Eventful from '../core/Eventful.js';\nimport requestAnimationFrame from './requestAnimationFrame.js';\nimport Animator from './Animator.js';\nexport function getTime() {\n return new Date().getTime();\n}\nvar Animation = (function (_super) {\n __extends(Animation, _super);\n function Animation(opts) {\n var _this = _super.call(this) || this;\n _this._running = false;\n _this._time = 0;\n _this._pausedTime = 0;\n _this._pauseStart = 0;\n _this._paused = false;\n opts = opts || {};\n _this.stage = opts.stage || {};\n return _this;\n }\n Animation.prototype.addClip = function (clip) {\n if (clip.animation) {\n this.removeClip(clip);\n }\n if (!this._head) {\n this._head = this._tail = clip;\n }\n else {\n this._tail.next = clip;\n clip.prev = this._tail;\n clip.next = null;\n this._tail = clip;\n }\n clip.animation = this;\n };\n Animation.prototype.addAnimator = function (animator) {\n animator.animation = this;\n var clip = animator.getClip();\n if (clip) {\n this.addClip(clip);\n }\n };\n Animation.prototype.removeClip = function (clip) {\n if (!clip.animation) {\n return;\n }\n var prev = clip.prev;\n var next = clip.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this._head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this._tail = prev;\n }\n clip.next = clip.prev = clip.animation = null;\n };\n Animation.prototype.removeAnimator = function (animator) {\n var clip = animator.getClip();\n if (clip) {\n this.removeClip(clip);\n }\n animator.animation = null;\n };\n Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\n var time = getTime() - this._pausedTime;\n var delta = time - this._time;\n var clip = this._head;\n while (clip) {\n var nextClip = clip.next;\n var finished = clip.step(time, delta);\n if (finished) {\n clip.ondestroy();\n this.removeClip(clip);\n clip = nextClip;\n }\n else {\n clip = nextClip;\n }\n }\n this._time = time;\n if (!notTriggerFrameAndStageUpdate) {\n this.trigger('frame', delta);\n this.stage.update && this.stage.update();\n }\n };\n Animation.prototype._startLoop = function () {\n var self = this;\n this._running = true;\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self.update();\n }\n }\n requestAnimationFrame(step);\n };\n Animation.prototype.start = function () {\n if (this._running) {\n return;\n }\n this._time = getTime();\n this._pausedTime = 0;\n this._startLoop();\n };\n Animation.prototype.stop = function () {\n this._running = false;\n };\n Animation.prototype.pause = function () {\n if (!this._paused) {\n this._pauseStart = getTime();\n this._paused = true;\n }\n };\n Animation.prototype.resume = function () {\n if (this._paused) {\n this._pausedTime += getTime() - this._pauseStart;\n this._paused = false;\n }\n };\n Animation.prototype.clear = function () {\n var clip = this._head;\n while (clip) {\n var nextClip = clip.next;\n clip.prev = clip.next = clip.animation = null;\n clip = nextClip;\n }\n this._head = this._tail = null;\n };\n Animation.prototype.isFinished = function () {\n return this._head == null;\n };\n Animation.prototype.animate = function (target, options) {\n options = options || {};\n this.start();\n var animator = new Animator(target, options.loop);\n this.addAnimator(animator);\n return animator;\n };\n return Animation;\n}(Eventful));\nexport default Animation;\n", "import { __extends } from \"tslib\";\nimport { addEventListener, removeEventListener, normalizeEvent, getNativeEvent } from '../core/event.js';\nimport * as zrUtil from '../core/util.js';\nimport Eventful from '../core/Eventful.js';\nimport env from '../core/env.js';\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\nvar localNativeListenerNames = (function () {\n var mouseHandlerNames = [\n 'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n ];\n var touchHandlerNames = [\n 'touchstart', 'touchend', 'touchmove'\n ];\n var pointerEventNameMap = {\n pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n})();\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\nvar wheelEventSupported = false;\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n}\nfunction setTouchTimer(scope) {\n scope.touching = true;\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n}\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n}\nfunction normalizeGlobalEvent(instance, event) {\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n while (elTmp && elTmp.nodeType !== 9\n && !(isLocal = elTmp.domBelongToZr\n || (elTmp !== el && elTmp === instance.painterRoot))) {\n elTmp = elTmp.parentNode;\n }\n return isLocal;\n}\nvar FakeGlobalEvent = (function () {\n function FakeGlobalEvent(instance, event) {\n this.stopPropagation = zrUtil.noop;\n this.stopImmediatePropagation = zrUtil.noop;\n this.preventDefault = zrUtil.noop;\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType;\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n }\n return FakeGlobalEvent;\n}());\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this.__mayPointerCapture;\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n this.__togglePointerCapture(true);\n }\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event);\n var element = event.toElement || event.relatedTarget;\n if (!isLocalEl(this, element)) {\n if (this.__pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n }\n this.trigger('mouseout', event);\n }\n },\n wheel: function (event) {\n wheelEventSupported = true;\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n mousewheel: function (event) {\n if (wheelEventSupported) {\n return;\n }\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n touchstart: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.__lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start');\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change');\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event);\n if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event);\n },\n pointermove: function (event) {\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\nzrUtil.each(['click', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\nvar globalDOMHandlers = {\n pointermove: function (event) {\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this.__pointerCapturing;\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n if (env.pointerEventsSupported) {\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n });\n });\n }\n else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n });\n }\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n if (!scope.touching) {\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\nfunction mountGlobalDOMEventListeners(instance, scope) {\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n }\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event);\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\n }\n}\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, nativeEventName, listener, opt);\n}\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n scope.mounted = {};\n}\nvar DOMHandlerScope = (function () {\n function DOMHandlerScope(domTarget, domHandlers) {\n this.mounted = {};\n this.listenerOpts = {};\n this.touching = false;\n this.domTarget = domTarget;\n this.domHandlers = domHandlers;\n }\n return DOMHandlerScope;\n}());\nvar HandlerDomProxy = (function (_super) {\n __extends(HandlerDomProxy, _super);\n function HandlerDomProxy(dom, painterRoot) {\n var _this = _super.call(this) || this;\n _this.__pointerCapturing = false;\n _this.dom = dom;\n _this.painterRoot = painterRoot;\n _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n if (globalEventSupported) {\n _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n mountLocalDOMEventListeners(_this, _this._localHandlerScope);\n return _this;\n }\n HandlerDomProxy.prototype.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n };\n HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n };\n HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\n this.__mayPointerCapture = null;\n if (globalEventSupported\n && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\n this.__pointerCapturing = isPointerCapturing;\n var globalHandlerScope = this._globalHandlerScope;\n isPointerCapturing\n ? mountGlobalDOMEventListeners(this, globalHandlerScope)\n : unmountDOMEventListeners(globalHandlerScope);\n }\n };\n return HandlerDomProxy;\n}(Eventful));\nexport default HandlerDomProxy;\n", "import env from './core/env.js';\nvar dpr = 1;\nif (env.hasGlobalWindow) {\n dpr = Math.max(window.devicePixelRatio\n || (window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI)\n || 1, 1);\n}\nexport var debugMode = 0;\nexport var devicePixelRatio = dpr;\nexport var DARK_MODE_THRESHOLD = 0.4;\nexport var DARK_LABEL_COLOR = '#333';\nexport var LIGHT_LABEL_COLOR = '#ccc';\nexport var LIGHTER_LABEL_COLOR = '#eee';\n", "import * as matrix from './matrix.js';\nimport * as vector from './vector.js';\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nvar scaleTmp = [];\nvar tmpTransform = [];\nvar originTransform = matrix.create();\nvar abs = Math.abs;\nvar Transformable = (function () {\n function Transformable() {\n }\n Transformable.prototype.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n };\n Transformable.prototype.setPosition = function (arr) {\n this.x = arr[0];\n this.y = arr[1];\n };\n Transformable.prototype.setScale = function (arr) {\n this.scaleX = arr[0];\n this.scaleY = arr[1];\n };\n Transformable.prototype.setSkew = function (arr) {\n this.skewX = arr[0];\n this.skewY = arr[1];\n };\n Transformable.prototype.setOrigin = function (arr) {\n this.originX = arr[0];\n this.originY = arr[1];\n };\n Transformable.prototype.needLocalTransform = function () {\n return isNotAroundZero(this.rotation)\n || isNotAroundZero(this.x)\n || isNotAroundZero(this.y)\n || isNotAroundZero(this.scaleX - 1)\n || isNotAroundZero(this.scaleY - 1)\n || isNotAroundZero(this.skewX)\n || isNotAroundZero(this.skewY);\n };\n Transformable.prototype.updateTransform = function () {\n var parentTransform = this.parent && this.parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n if (!(needLocalTransform || parentTransform)) {\n if (m) {\n mIdentity(m);\n this.invTransform = null;\n }\n return;\n }\n m = m || matrix.create();\n if (needLocalTransform) {\n this.getLocalTransform(m);\n }\n else {\n mIdentity(m);\n }\n if (parentTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parentTransform, m);\n }\n else {\n matrix.copy(m, parentTransform);\n }\n }\n this.transform = m;\n this._resolveGlobalScaleRatio(m);\n };\n Transformable.prototype._resolveGlobalScaleRatio = function (m) {\n var globalScaleRatio = this.globalScaleRatio;\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n };\n Transformable.prototype.getComputedTransform = function () {\n var transformNode = this;\n var ancestors = [];\n while (transformNode) {\n ancestors.push(transformNode);\n transformNode = transformNode.parent;\n }\n while (transformNode = ancestors.pop()) {\n transformNode.updateTransform();\n }\n return this.transform;\n };\n Transformable.prototype.setLocalTransform = function (m) {\n if (!m) {\n return;\n }\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var rotation = Math.atan2(m[1], m[0]);\n var shearX = Math.PI / 2 + rotation - Math.atan2(m[3], m[2]);\n sy = Math.sqrt(sy) * Math.cos(shearX);\n sx = Math.sqrt(sx);\n this.skewX = shearX;\n this.skewY = 0;\n this.rotation = -rotation;\n this.x = +m[4];\n this.y = +m[5];\n this.scaleX = sx;\n this.scaleY = sy;\n this.originX = 0;\n this.originY = 0;\n };\n Transformable.prototype.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n var parent = this.parent;\n var m = this.transform;\n if (parent && parent.transform) {\n parent.invTransform = parent.invTransform || matrix.create();\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n var ox = this.originX;\n var oy = this.originY;\n if (ox || oy) {\n originTransform[4] = ox;\n originTransform[5] = oy;\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= ox;\n tmpTransform[5] -= oy;\n m = tmpTransform;\n }\n this.setLocalTransform(m);\n };\n Transformable.prototype.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n return out;\n };\n Transformable.prototype.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n return v2;\n };\n Transformable.prototype.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n return v2;\n };\n Transformable.prototype.getLineScale = function () {\n var m = this.transform;\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\n ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\n : 1;\n };\n Transformable.prototype.copyTransform = function (source) {\n copyTransform(this, source);\n };\n Transformable.getLocalTransform = function (target, m) {\n m = m || [];\n var ox = target.originX || 0;\n var oy = target.originY || 0;\n var sx = target.scaleX;\n var sy = target.scaleY;\n var ax = target.anchorX;\n var ay = target.anchorY;\n var rotation = target.rotation || 0;\n var x = target.x;\n var y = target.y;\n var skewX = target.skewX ? Math.tan(target.skewX) : 0;\n var skewY = target.skewY ? Math.tan(-target.skewY) : 0;\n if (ox || oy || ax || ay) {\n var dx = ox + ax;\n var dy = oy + ay;\n m[4] = -dx * sx - skewX * dy * sy;\n m[5] = -dy * sy - skewY * dx * sx;\n }\n else {\n m[4] = m[5] = 0;\n }\n m[0] = sx;\n m[3] = sy;\n m[1] = skewY * sx;\n m[2] = skewX * sy;\n rotation && matrix.rotate(m, m, rotation);\n m[4] += ox + x;\n m[5] += oy + y;\n return m;\n };\n Transformable.initDefaultProps = (function () {\n var proto = Transformable.prototype;\n proto.scaleX =\n proto.scaleY =\n proto.globalScaleRatio = 1;\n proto.x =\n proto.y =\n proto.originX =\n proto.originY =\n proto.skewX =\n proto.skewY =\n proto.rotation =\n proto.anchorX =\n proto.anchorY = 0;\n })();\n return Transformable;\n}());\n;\nexport var TRANSFORMABLE_PROPS = [\n 'x', 'y', 'originX', 'originY', 'anchorX', 'anchorY', 'rotation', 'scaleX', 'scaleY', 'skewX', 'skewY'\n];\nexport function copyTransform(target, source) {\n for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {\n var propName = TRANSFORMABLE_PROPS[i];\n target[propName] = source[propName];\n }\n}\nexport default Transformable;\n", "import BoundingRect from '../core/BoundingRect.js';\nimport LRU from '../core/LRU.js';\nimport { DEFAULT_FONT, platformApi } from '../core/platform.js';\nvar textWidthCache = {};\nexport function getWidth(text, font) {\n font = font || DEFAULT_FONT;\n var cacheOfFont = textWidthCache[font];\n if (!cacheOfFont) {\n cacheOfFont = textWidthCache[font] = new LRU(500);\n }\n var width = cacheOfFont.get(text);\n if (width == null) {\n width = platformApi.measureText(text, font).width;\n cacheOfFont.put(text, width);\n }\n return width;\n}\nexport function innerGetBoundingRect(text, font, textAlign, textBaseline) {\n var width = getWidth(text, font);\n var height = getLineHeight(font);\n var x = adjustTextX(0, width, textAlign);\n var y = adjustTextY(0, height, textBaseline);\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n}\nexport function getBoundingRect(text, font, textAlign, textBaseline) {\n var textLines = ((text || '') + '').split('\\n');\n var len = textLines.length;\n if (len === 1) {\n return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\n }\n else {\n var uniondRect = new BoundingRect(0, 0, 0, 0);\n for (var i = 0; i < textLines.length; i++) {\n var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\n i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\n }\n return uniondRect;\n }\n}\nexport function adjustTextX(x, width, textAlign) {\n if (textAlign === 'right') {\n x -= width;\n }\n else if (textAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nexport function adjustTextY(y, height, verticalAlign) {\n if (verticalAlign === 'middle') {\n y -= height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y -= height;\n }\n return y;\n}\nexport function getLineHeight(font) {\n return getWidth('\u56FD', font);\n}\nexport function measureText(text, font) {\n return platformApi.measureText(text, font);\n}\nexport function parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n return parseFloat(value);\n }\n return value;\n}\nexport function calculateTextPosition(out, opts, rect) {\n var textPosition = opts.position || 'inside';\n var distance = opts.distance != null ? opts.distance : 5;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var x = rect.x;\n var y = rect.y;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n if (textPosition instanceof Array) {\n x += parsePercent(textPosition[0], rect.width);\n y += parsePercent(textPosition[1], rect.height);\n textAlign = null;\n textVerticalAlign = null;\n }\n else {\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n }\n out = out || {};\n out.x = x;\n out.y = y;\n out.align = textAlign;\n out.verticalAlign = textVerticalAlign;\n return out;\n}\n", "import Transformable, { TRANSFORMABLE_PROPS } from './core/Transformable.js';\nimport Animator, { cloneValue } from './animation/Animator.js';\nimport BoundingRect from './core/BoundingRect.js';\nimport Eventful from './core/Eventful.js';\nimport { calculateTextPosition, parsePercent } from './contain/text.js';\nimport { guid, isObject, keys, extend, indexOf, logError, mixin, isArrayLike, isTypedArray, isGradientObject, filter, reduce } from './core/util.js';\nimport { LIGHT_LABEL_COLOR, DARK_LABEL_COLOR } from './config.js';\nimport { parse, stringify } from './tool/color.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nexport var PRESERVED_NORMAL_STATE = '__zr_normal__';\nvar PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(['ignore']);\nvar DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) {\n obj[key] = true;\n return obj;\n}, { ignore: false });\nvar tmpTextPosCalcRes = {};\nvar tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\nvar Element = (function () {\n function Element(props) {\n this.id = guid();\n this.animators = [];\n this.currentStates = [];\n this.states = {};\n this._init(props);\n }\n Element.prototype._init = function (props) {\n this.attr(props);\n };\n Element.prototype.drift = function (dx, dy, e) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n case 'vertical':\n dx = 0;\n break;\n }\n var m = this.transform;\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.markRedraw();\n };\n Element.prototype.beforeUpdate = function () { };\n Element.prototype.afterUpdate = function () { };\n Element.prototype.update = function () {\n this.updateTransform();\n if (this.__dirty) {\n this.updateInnerText();\n }\n };\n Element.prototype.updateInnerText = function (forceUpdate) {\n var textEl = this._textContent;\n if (textEl && (!textEl.ignore || forceUpdate)) {\n if (!this.textConfig) {\n this.textConfig = {};\n }\n var textConfig = this.textConfig;\n var isLocal = textConfig.local;\n var innerTransformable = textEl.innerTransformable;\n var textAlign = void 0;\n var textVerticalAlign = void 0;\n var textStyleChanged = false;\n innerTransformable.parent = isLocal ? this : null;\n var innerOrigin = false;\n innerTransformable.copyTransform(textEl);\n if (textConfig.position != null) {\n var layoutRect = tmpBoundingRect;\n if (textConfig.layoutRect) {\n layoutRect.copy(textConfig.layoutRect);\n }\n else {\n layoutRect.copy(this.getBoundingRect());\n }\n if (!isLocal) {\n layoutRect.applyTransform(this.transform);\n }\n if (this.calculateTextPosition) {\n this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n }\n else {\n calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n }\n innerTransformable.x = tmpTextPosCalcRes.x;\n innerTransformable.y = tmpTextPosCalcRes.y;\n textAlign = tmpTextPosCalcRes.align;\n textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\n var textOrigin = textConfig.origin;\n if (textOrigin && textConfig.rotation != null) {\n var relOriginX = void 0;\n var relOriginY = void 0;\n if (textOrigin === 'center') {\n relOriginX = layoutRect.width * 0.5;\n relOriginY = layoutRect.height * 0.5;\n }\n else {\n relOriginX = parsePercent(textOrigin[0], layoutRect.width);\n relOriginY = parsePercent(textOrigin[1], layoutRect.height);\n }\n innerOrigin = true;\n innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x);\n innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y);\n }\n }\n if (textConfig.rotation != null) {\n innerTransformable.rotation = textConfig.rotation;\n }\n var textOffset = textConfig.offset;\n if (textOffset) {\n innerTransformable.x += textOffset[0];\n innerTransformable.y += textOffset[1];\n if (!innerOrigin) {\n innerTransformable.originX = -textOffset[0];\n innerTransformable.originY = -textOffset[1];\n }\n }\n var isInside = textConfig.inside == null\n ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\n : textConfig.inside;\n var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\n var textFill = void 0;\n var textStroke = void 0;\n var autoStroke = void 0;\n if (isInside && this.canBeInsideText()) {\n textFill = textConfig.insideFill;\n textStroke = textConfig.insideStroke;\n if (textFill == null || textFill === 'auto') {\n textFill = this.getInsideTextFill();\n }\n if (textStroke == null || textStroke === 'auto') {\n textStroke = this.getInsideTextStroke(textFill);\n autoStroke = true;\n }\n }\n else {\n textFill = textConfig.outsideFill;\n textStroke = textConfig.outsideStroke;\n if (textFill == null || textFill === 'auto') {\n textFill = this.getOutsideFill();\n }\n if (textStroke == null || textStroke === 'auto') {\n textStroke = this.getOutsideStroke(textFill);\n autoStroke = true;\n }\n }\n textFill = textFill || '#000';\n if (textFill !== innerTextDefaultStyle.fill\n || textStroke !== innerTextDefaultStyle.stroke\n || autoStroke !== innerTextDefaultStyle.autoStroke\n || textAlign !== innerTextDefaultStyle.align\n || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\n textStyleChanged = true;\n innerTextDefaultStyle.fill = textFill;\n innerTextDefaultStyle.stroke = textStroke;\n innerTextDefaultStyle.autoStroke = autoStroke;\n innerTextDefaultStyle.align = textAlign;\n innerTextDefaultStyle.verticalAlign = textVerticalAlign;\n textEl.setDefaultTextStyle(innerTextDefaultStyle);\n }\n textEl.__dirty |= REDRAW_BIT;\n if (textStyleChanged) {\n textEl.dirtyStyle(true);\n }\n }\n };\n Element.prototype.canBeInsideText = function () {\n return true;\n };\n Element.prototype.getInsideTextFill = function () {\n return '#fff';\n };\n Element.prototype.getInsideTextStroke = function (textFill) {\n return '#000';\n };\n Element.prototype.getOutsideFill = function () {\n return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\n };\n Element.prototype.getOutsideStroke = function (textFill) {\n var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\n var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\n if (!colorArr) {\n colorArr = [255, 255, 255, 1];\n }\n var alpha = colorArr[3];\n var isDark = this.__zr.isDarkMode();\n for (var i = 0; i < 3; i++) {\n colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\n }\n colorArr[3] = 1;\n return stringify(colorArr, 'rgba');\n };\n Element.prototype.traverse = function (cb, context) { };\n Element.prototype.attrKV = function (key, value) {\n if (key === 'textConfig') {\n this.setTextConfig(value);\n }\n else if (key === 'textContent') {\n this.setTextContent(value);\n }\n else if (key === 'clipPath') {\n this.setClipPath(value);\n }\n else if (key === 'extra') {\n this.extra = this.extra || {};\n extend(this.extra, value);\n }\n else {\n this[key] = value;\n }\n };\n Element.prototype.hide = function () {\n this.ignore = true;\n this.markRedraw();\n };\n Element.prototype.show = function () {\n this.ignore = false;\n this.markRedraw();\n };\n Element.prototype.attr = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.attrKV(keyOrObj, value);\n }\n else if (isObject(keyOrObj)) {\n var obj = keyOrObj;\n var keysArr = keys(obj);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n this.attrKV(key, keyOrObj[key]);\n }\n }\n this.markRedraw();\n return this;\n };\n Element.prototype.saveCurrentToNormalState = function (toState) {\n this._innerSaveToNormal(toState);\n var normalState = this._normalState;\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n var fromStateTransition = animator.__fromStateTransition;\n if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\n continue;\n }\n var targetName = animator.targetName;\n var target = targetName\n ? normalState[targetName] : normalState;\n animator.saveTo(target);\n }\n };\n Element.prototype._innerSaveToNormal = function (toState) {\n var normalState = this._normalState;\n if (!normalState) {\n normalState = this._normalState = {};\n }\n if (toState.textConfig && !normalState.textConfig) {\n normalState.textConfig = this.textConfig;\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\n for (var i = 0; i < primaryKeys.length; i++) {\n var key = primaryKeys[i];\n if (toState[key] != null && !(key in normalState)) {\n normalState[key] = this[key];\n }\n }\n };\n Element.prototype.hasState = function () {\n return this.currentStates.length > 0;\n };\n Element.prototype.getState = function (name) {\n return this.states[name];\n };\n Element.prototype.ensureState = function (name) {\n var states = this.states;\n if (!states[name]) {\n states[name] = {};\n }\n return states[name];\n };\n Element.prototype.clearStates = function (noAnimation) {\n this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\n };\n Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) {\n var toNormalState = stateName === PRESERVED_NORMAL_STATE;\n var hasStates = this.hasState();\n if (!hasStates && toNormalState) {\n return;\n }\n var currentStates = this.currentStates;\n var animationCfg = this.stateTransition;\n if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\n return;\n }\n var state;\n if (this.stateProxy && !toNormalState) {\n state = this.stateProxy(stateName);\n }\n if (!state) {\n state = (this.states && this.states[stateName]);\n }\n if (!state && !toNormalState) {\n logError(\"State \" + stateName + \" not exists.\");\n return;\n }\n if (!toNormalState) {\n this.saveCurrentToNormalState(state);\n }\n var useHoverLayer = !!((state && state.hoverLayer) || forceUseHoverLayer);\n if (useHoverLayer) {\n this._toggleHoverLayerFlag(true);\n }\n this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n }\n if (textGuide) {\n textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n }\n if (toNormalState) {\n this.currentStates = [];\n this._normalState = {};\n }\n else {\n if (!keepCurrentStates) {\n this.currentStates = [stateName];\n }\n else {\n this.currentStates.push(stateName);\n }\n }\n this._updateAnimationTargets();\n this.markRedraw();\n if (!useHoverLayer && this.__inHover) {\n this._toggleHoverLayerFlag(false);\n this.__dirty &= ~REDRAW_BIT;\n }\n return state;\n };\n Element.prototype.useStates = function (states, noAnimation, forceUseHoverLayer) {\n if (!states.length) {\n this.clearStates();\n }\n else {\n var stateObjects = [];\n var currentStates = this.currentStates;\n var len = states.length;\n var notChange = len === currentStates.length;\n if (notChange) {\n for (var i = 0; i < len; i++) {\n if (states[i] !== currentStates[i]) {\n notChange = false;\n break;\n }\n }\n }\n if (notChange) {\n return;\n }\n for (var i = 0; i < len; i++) {\n var stateName = states[i];\n var stateObj = void 0;\n if (this.stateProxy) {\n stateObj = this.stateProxy(stateName, states);\n }\n if (!stateObj) {\n stateObj = this.states[stateName];\n }\n if (stateObj) {\n stateObjects.push(stateObj);\n }\n }\n var lastStateObj = stateObjects[len - 1];\n var useHoverLayer = !!((lastStateObj && lastStateObj.hoverLayer) || forceUseHoverLayer);\n if (useHoverLayer) {\n this._toggleHoverLayerFlag(true);\n }\n var mergedState = this._mergeStates(stateObjects);\n var animationCfg = this.stateTransition;\n this.saveCurrentToNormalState(mergedState);\n this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.useStates(states, noAnimation, useHoverLayer);\n }\n if (textGuide) {\n textGuide.useStates(states, noAnimation, useHoverLayer);\n }\n this._updateAnimationTargets();\n this.currentStates = states.slice();\n this.markRedraw();\n if (!useHoverLayer && this.__inHover) {\n this._toggleHoverLayerFlag(false);\n this.__dirty &= ~REDRAW_BIT;\n }\n }\n };\n Element.prototype.isSilent = function () {\n var isSilent = this.silent;\n var ancestor = this.parent;\n while (!isSilent && ancestor) {\n if (ancestor.silent) {\n isSilent = true;\n break;\n }\n ancestor = ancestor.parent;\n }\n return isSilent;\n };\n Element.prototype._updateAnimationTargets = function () {\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n if (animator.targetName) {\n animator.changeTarget(this[animator.targetName]);\n }\n }\n };\n Element.prototype.removeState = function (state) {\n var idx = indexOf(this.currentStates, state);\n if (idx >= 0) {\n var currentStates = this.currentStates.slice();\n currentStates.splice(idx, 1);\n this.useStates(currentStates);\n }\n };\n Element.prototype.replaceState = function (oldState, newState, forceAdd) {\n var currentStates = this.currentStates.slice();\n var idx = indexOf(currentStates, oldState);\n var newStateExists = indexOf(currentStates, newState) >= 0;\n if (idx >= 0) {\n if (!newStateExists) {\n currentStates[idx] = newState;\n }\n else {\n currentStates.splice(idx, 1);\n }\n }\n else if (forceAdd && !newStateExists) {\n currentStates.push(newState);\n }\n this.useStates(currentStates);\n };\n Element.prototype.toggleState = function (state, enable) {\n if (enable) {\n this.useState(state, true);\n }\n else {\n this.removeState(state);\n }\n };\n Element.prototype._mergeStates = function (states) {\n var mergedState = {};\n var mergedTextConfig;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n extend(mergedState, state);\n if (state.textConfig) {\n mergedTextConfig = mergedTextConfig || {};\n extend(mergedTextConfig, state.textConfig);\n }\n }\n if (mergedTextConfig) {\n mergedState.textConfig = mergedTextConfig;\n }\n return mergedState;\n };\n Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n var needsRestoreToNormal = !(state && keepCurrentStates);\n if (state && state.textConfig) {\n this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\n extend(this.textConfig, state.textConfig);\n }\n else if (needsRestoreToNormal) {\n if (normalState.textConfig) {\n this.textConfig = normalState.textConfig;\n }\n }\n var transitionTarget = {};\n var hasTransition = false;\n for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\n var key = PRIMARY_STATES_KEYS[i];\n var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\n if (state && state[key] != null) {\n if (propNeedsTransition) {\n hasTransition = true;\n transitionTarget[key] = state[key];\n }\n else {\n this[key] = state[key];\n }\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n if (propNeedsTransition) {\n hasTransition = true;\n transitionTarget[key] = normalState[key];\n }\n else {\n this[key] = normalState[key];\n }\n }\n }\n }\n if (!transition) {\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n var targetName = animator.targetName;\n if (!animator.getLoop()) {\n animator.__changeFinalValue(targetName\n ? (state || normalState)[targetName]\n : (state || normalState));\n }\n }\n }\n if (hasTransition) {\n this._transitionState(stateName, transitionTarget, animationCfg);\n }\n };\n Element.prototype._attachComponent = function (componentEl) {\n if (componentEl.__zr && !componentEl.__hostTarget) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Text element has been added to zrender.');\n }\n return;\n }\n if (componentEl === this) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Recursive component attachment.');\n }\n return;\n }\n var zr = this.__zr;\n if (zr) {\n componentEl.addSelfToZr(zr);\n }\n componentEl.__zr = zr;\n componentEl.__hostTarget = this;\n };\n Element.prototype._detachComponent = function (componentEl) {\n if (componentEl.__zr) {\n componentEl.removeSelfFromZr(componentEl.__zr);\n }\n componentEl.__zr = null;\n componentEl.__hostTarget = null;\n };\n Element.prototype.getClipPath = function () {\n return this._clipPath;\n };\n Element.prototype.setClipPath = function (clipPath) {\n if (this._clipPath && this._clipPath !== clipPath) {\n this.removeClipPath();\n }\n this._attachComponent(clipPath);\n this._clipPath = clipPath;\n this.markRedraw();\n };\n Element.prototype.removeClipPath = function () {\n var clipPath = this._clipPath;\n if (clipPath) {\n this._detachComponent(clipPath);\n this._clipPath = null;\n this.markRedraw();\n }\n };\n Element.prototype.getTextContent = function () {\n return this._textContent;\n };\n Element.prototype.setTextContent = function (textEl) {\n var previousTextContent = this._textContent;\n if (previousTextContent === textEl) {\n return;\n }\n if (previousTextContent && previousTextContent !== textEl) {\n this.removeTextContent();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (textEl.__zr && !textEl.__hostTarget) {\n throw new Error('Text element has been added to zrender.');\n }\n }\n textEl.innerTransformable = new Transformable();\n this._attachComponent(textEl);\n this._textContent = textEl;\n this.markRedraw();\n };\n Element.prototype.setTextConfig = function (cfg) {\n if (!this.textConfig) {\n this.textConfig = {};\n }\n extend(this.textConfig, cfg);\n this.markRedraw();\n };\n Element.prototype.removeTextConfig = function () {\n this.textConfig = null;\n this.markRedraw();\n };\n Element.prototype.removeTextContent = function () {\n var textEl = this._textContent;\n if (textEl) {\n textEl.innerTransformable = null;\n this._detachComponent(textEl);\n this._textContent = null;\n this._innerTextDefaultStyle = null;\n this.markRedraw();\n }\n };\n Element.prototype.getTextGuideLine = function () {\n return this._textGuide;\n };\n Element.prototype.setTextGuideLine = function (guideLine) {\n if (this._textGuide && this._textGuide !== guideLine) {\n this.removeTextGuideLine();\n }\n this._attachComponent(guideLine);\n this._textGuide = guideLine;\n this.markRedraw();\n };\n Element.prototype.removeTextGuideLine = function () {\n var textGuide = this._textGuide;\n if (textGuide) {\n this._detachComponent(textGuide);\n this._textGuide = null;\n this.markRedraw();\n }\n };\n Element.prototype.markRedraw = function () {\n this.__dirty |= REDRAW_BIT;\n var zr = this.__zr;\n if (zr) {\n if (this.__inHover) {\n zr.refreshHover();\n }\n else {\n zr.refresh();\n }\n }\n if (this.__hostTarget) {\n this.__hostTarget.markRedraw();\n }\n };\n Element.prototype.dirty = function () {\n this.markRedraw();\n };\n Element.prototype._toggleHoverLayerFlag = function (inHover) {\n this.__inHover = inHover;\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.__inHover = inHover;\n }\n if (textGuide) {\n textGuide.__inHover = inHover;\n }\n };\n Element.prototype.addSelfToZr = function (zr) {\n if (this.__zr === zr) {\n return;\n }\n this.__zr = zr;\n var animators = this.animators;\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n if (this._clipPath) {\n this._clipPath.addSelfToZr(zr);\n }\n if (this._textContent) {\n this._textContent.addSelfToZr(zr);\n }\n if (this._textGuide) {\n this._textGuide.addSelfToZr(zr);\n }\n };\n Element.prototype.removeSelfFromZr = function (zr) {\n if (!this.__zr) {\n return;\n }\n this.__zr = null;\n var animators = this.animators;\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n if (this._clipPath) {\n this._clipPath.removeSelfFromZr(zr);\n }\n if (this._textContent) {\n this._textContent.removeSelfFromZr(zr);\n }\n if (this._textGuide) {\n this._textGuide.removeSelfFromZr(zr);\n }\n };\n Element.prototype.animate = function (key, loop, allowDiscreteAnimation) {\n var target = key ? this[key] : this;\n if (process.env.NODE_ENV !== 'production') {\n if (!target) {\n logError('Property \"'\n + key\n + '\" is not existed in element '\n + this.id);\n return;\n }\n }\n var animator = new Animator(target, loop, allowDiscreteAnimation);\n key && (animator.targetName = key);\n this.addAnimator(animator, key);\n return animator;\n };\n Element.prototype.addAnimator = function (animator, key) {\n var zr = this.__zr;\n var el = this;\n animator.during(function () {\n el.updateDuringAnimation(key);\n }).done(function () {\n var animators = el.animators;\n var idx = indexOf(animators, animator);\n if (idx >= 0) {\n animators.splice(idx, 1);\n }\n });\n this.animators.push(animator);\n if (zr) {\n zr.animation.addAnimator(animator);\n }\n zr && zr.wakeUp();\n };\n Element.prototype.updateDuringAnimation = function (key) {\n this.markRedraw();\n };\n Element.prototype.stopAnimation = function (scope, forwardToLast) {\n var animators = this.animators;\n var len = animators.length;\n var leftAnimators = [];\n for (var i = 0; i < len; i++) {\n var animator = animators[i];\n if (!scope || scope === animator.scope) {\n animator.stop(forwardToLast);\n }\n else {\n leftAnimators.push(animator);\n }\n }\n this.animators = leftAnimators;\n return this;\n };\n Element.prototype.animateTo = function (target, cfg, animationProps) {\n animateTo(this, target, cfg, animationProps);\n };\n Element.prototype.animateFrom = function (target, cfg, animationProps) {\n animateTo(this, target, cfg, animationProps, true);\n };\n Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\n var animators = animateTo(this, target, cfg, animationProps);\n for (var i = 0; i < animators.length; i++) {\n animators[i].__fromStateTransition = stateName;\n }\n };\n Element.prototype.getBoundingRect = function () {\n return null;\n };\n Element.prototype.getPaintRect = function () {\n return null;\n };\n Element.initDefaultProps = (function () {\n var elProto = Element.prototype;\n elProto.type = 'element';\n elProto.name = '';\n elProto.ignore =\n elProto.silent =\n elProto.isGroup =\n elProto.draggable =\n elProto.dragging =\n elProto.ignoreClip =\n elProto.__inHover = false;\n elProto.__dirty = REDRAW_BIT;\n var logs = {};\n function logDeprecatedError(key, xKey, yKey) {\n if (!logs[key + xKey + yKey]) {\n console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\n logs[key + xKey + yKey] = true;\n }\n }\n function createLegacyProperty(key, privateKey, xKey, yKey) {\n Object.defineProperty(elProto, key, {\n get: function () {\n if (process.env.NODE_ENV !== 'production') {\n logDeprecatedError(key, xKey, yKey);\n }\n if (!this[privateKey]) {\n var pos = this[privateKey] = [];\n enhanceArray(this, pos);\n }\n return this[privateKey];\n },\n set: function (pos) {\n if (process.env.NODE_ENV !== 'production') {\n logDeprecatedError(key, xKey, yKey);\n }\n this[xKey] = pos[0];\n this[yKey] = pos[1];\n this[privateKey] = pos;\n enhanceArray(this, pos);\n }\n });\n function enhanceArray(self, pos) {\n Object.defineProperty(pos, 0, {\n get: function () {\n return self[xKey];\n },\n set: function (val) {\n self[xKey] = val;\n }\n });\n Object.defineProperty(pos, 1, {\n get: function () {\n return self[yKey];\n },\n set: function (val) {\n self[yKey] = val;\n }\n });\n }\n }\n if (Object.defineProperty) {\n createLegacyProperty('position', '_legacyPos', 'x', 'y');\n createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\n createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\n }\n })();\n return Element;\n}());\nmixin(Element, Eventful);\nmixin(Element, Transformable);\nfunction animateTo(animatable, target, cfg, animationProps, reverse) {\n cfg = cfg || {};\n var animators = [];\n animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\n var finishCount = animators.length;\n var doneHappened = false;\n var cfgDone = cfg.done;\n var cfgAborted = cfg.aborted;\n var doneCb = function () {\n doneHappened = true;\n finishCount--;\n if (finishCount <= 0) {\n doneHappened\n ? (cfgDone && cfgDone())\n : (cfgAborted && cfgAborted());\n }\n };\n var abortedCb = function () {\n finishCount--;\n if (finishCount <= 0) {\n doneHappened\n ? (cfgDone && cfgDone())\n : (cfgAborted && cfgAborted());\n }\n };\n if (!finishCount) {\n cfgDone && cfgDone();\n }\n if (animators.length > 0 && cfg.during) {\n animators[0].during(function (target, percent) {\n cfg.during(percent);\n });\n }\n for (var i = 0; i < animators.length; i++) {\n var animator = animators[i];\n if (doneCb) {\n animator.done(doneCb);\n }\n if (abortedCb) {\n animator.aborted(abortedCb);\n }\n if (cfg.force) {\n animator.duration(cfg.duration);\n }\n animator.start(cfg.easing);\n }\n return animators;\n}\nfunction copyArrShallow(source, target, len) {\n for (var i = 0; i < len; i++) {\n source[i] = target[i];\n }\n}\nfunction is2DArray(value) {\n return isArrayLike(value[0]);\n}\nfunction copyValue(target, source, key) {\n if (isArrayLike(source[key])) {\n if (!isArrayLike(target[key])) {\n target[key] = [];\n }\n if (isTypedArray(source[key])) {\n var len = source[key].length;\n if (target[key].length !== len) {\n target[key] = new (source[key].constructor)(len);\n copyArrShallow(target[key], source[key], len);\n }\n }\n else {\n var sourceArr = source[key];\n var targetArr = target[key];\n var len0 = sourceArr.length;\n if (is2DArray(sourceArr)) {\n var len1 = sourceArr[0].length;\n for (var i = 0; i < len0; i++) {\n if (!targetArr[i]) {\n targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\n }\n else {\n copyArrShallow(targetArr[i], sourceArr[i], len1);\n }\n }\n }\n else {\n copyArrShallow(targetArr, sourceArr, len0);\n }\n targetArr.length = sourceArr.length;\n }\n }\n else {\n target[key] = source[key];\n }\n}\nfunction isValueSame(val1, val2) {\n return val1 === val2\n || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2);\n}\nfunction is1DArraySame(arr0, arr1) {\n var len = arr0.length;\n if (len !== arr1.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n return true;\n}\nfunction animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse) {\n var targetKeys = keys(target);\n var duration = cfg.duration;\n var delay = cfg.delay;\n var additive = cfg.additive;\n var setToFinal = cfg.setToFinal;\n var animateAll = !isObject(animationProps);\n var existsAnimators = animatable.animators;\n var animationKeys = [];\n for (var k = 0; k < targetKeys.length; k++) {\n var innerKey = targetKeys[k];\n var targetVal = target[innerKey];\n if (targetVal != null && animateObj[innerKey] != null\n && (animateAll || animationProps[innerKey])) {\n if (isObject(targetVal)\n && !isArrayLike(targetVal)\n && !isGradientObject(targetVal)) {\n if (topKey) {\n if (!reverse) {\n animateObj[innerKey] = targetVal;\n animatable.updateDuringAnimation(topKey);\n }\n continue;\n }\n animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse);\n }\n else {\n animationKeys.push(innerKey);\n }\n }\n else if (!reverse) {\n animateObj[innerKey] = targetVal;\n animatable.updateDuringAnimation(topKey);\n animationKeys.push(innerKey);\n }\n }\n var keyLen = animationKeys.length;\n if (!additive && keyLen) {\n for (var i = 0; i < existsAnimators.length; i++) {\n var animator = existsAnimators[i];\n if (animator.targetName === topKey) {\n var allAborted = animator.stopTracks(animationKeys);\n if (allAborted) {\n var idx = indexOf(existsAnimators, animator);\n existsAnimators.splice(idx, 1);\n }\n }\n }\n }\n if (!cfg.force) {\n animationKeys = filter(animationKeys, function (key) { return !isValueSame(target[key], animateObj[key]); });\n keyLen = animationKeys.length;\n }\n if (keyLen > 0\n || (cfg.force && !animators.length)) {\n var revertedSource = void 0;\n var reversedTarget = void 0;\n var sourceClone = void 0;\n if (reverse) {\n reversedTarget = {};\n if (setToFinal) {\n revertedSource = {};\n }\n for (var i = 0; i < keyLen; i++) {\n var innerKey = animationKeys[i];\n reversedTarget[innerKey] = animateObj[innerKey];\n if (setToFinal) {\n revertedSource[innerKey] = target[innerKey];\n }\n else {\n animateObj[innerKey] = target[innerKey];\n }\n }\n }\n else if (setToFinal) {\n sourceClone = {};\n for (var i = 0; i < keyLen; i++) {\n var innerKey = animationKeys[i];\n sourceClone[innerKey] = cloneValue(animateObj[innerKey]);\n copyValue(animateObj, target, innerKey);\n }\n }\n var animator = new Animator(animateObj, false, false, additive ? filter(existsAnimators, function (animator) { return animator.targetName === topKey; }) : null);\n animator.targetName = topKey;\n if (cfg.scope) {\n animator.scope = cfg.scope;\n }\n if (setToFinal && revertedSource) {\n animator.whenWithKeys(0, revertedSource, animationKeys);\n }\n if (sourceClone) {\n animator.whenWithKeys(0, sourceClone, animationKeys);\n }\n animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animationKeys).delay(delay || 0);\n animatable.addAnimator(animator, topKey);\n animators.push(animator);\n }\n}\nexport default Element;\n", "import { __extends } from \"tslib\";\nimport * as zrUtil from '../core/util.js';\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar Group = (function (_super) {\n __extends(Group, _super);\n function Group(opts) {\n var _this = _super.call(this) || this;\n _this.isGroup = true;\n _this._children = [];\n _this.attr(opts);\n return _this;\n }\n Group.prototype.childrenRef = function () {\n return this._children;\n };\n Group.prototype.children = function () {\n return this._children.slice();\n };\n Group.prototype.childAt = function (idx) {\n return this._children[idx];\n };\n Group.prototype.childOfName = function (name) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n };\n Group.prototype.childCount = function () {\n return this._children.length;\n };\n Group.prototype.add = function (child) {\n if (child) {\n if (child !== this && child.parent !== this) {\n this._children.push(child);\n this._doAdd(child);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (child.__hostTarget) {\n throw 'This elemenet has been used as an attachment';\n }\n }\n }\n return this;\n };\n Group.prototype.addBefore = function (child, nextSibling) {\n if (child && child !== this && child.parent !== this\n && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n if (idx >= 0) {\n children.splice(idx, 0, child);\n this._doAdd(child);\n }\n }\n return this;\n };\n Group.prototype.replace = function (oldChild, newChild) {\n var idx = zrUtil.indexOf(this._children, oldChild);\n if (idx >= 0) {\n this.replaceAt(newChild, idx);\n }\n return this;\n };\n Group.prototype.replaceAt = function (child, index) {\n var children = this._children;\n var old = children[index];\n if (child && child !== this && child.parent !== this && child !== old) {\n children[index] = child;\n old.parent = null;\n var zr = this.__zr;\n if (zr) {\n old.removeSelfFromZr(zr);\n }\n this._doAdd(child);\n }\n return this;\n };\n Group.prototype._doAdd = function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n child.parent = this;\n var zr = this.__zr;\n if (zr && zr !== child.__zr) {\n child.addSelfToZr(zr);\n }\n zr && zr.refresh();\n };\n Group.prototype.remove = function (child) {\n var zr = this.__zr;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n if (idx < 0) {\n return this;\n }\n children.splice(idx, 1);\n child.parent = null;\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n zr && zr.refresh();\n return this;\n };\n Group.prototype.removeAll = function () {\n var children = this._children;\n var zr = this.__zr;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n child.parent = null;\n }\n children.length = 0;\n return this;\n };\n Group.prototype.eachChild = function (cb, context) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n return this;\n };\n Group.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n var stopped = cb.call(context, child);\n if (child.isGroup && !stopped) {\n child.traverse(cb, context);\n }\n }\n return this;\n };\n Group.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.addSelfToZr(zr);\n }\n };\n Group.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.removeSelfFromZr(zr);\n }\n };\n Group.prototype.getBoundingRect = function (includeChildren) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.ignore || child.invisible) {\n continue;\n }\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n BoundingRect.applyTransform(tmpRect, childRect, transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n return rect || tmpRect;\n };\n return Group;\n}(Element));\nGroup.prototype.type = 'group';\nexport default Group;\n", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n/*\r\n* A third-party license is embedded for some of the code in this file:\r\n* The method \"quantile\" was copied from \"d3.js\".\r\n* (See more details in the comment of the method below.)\r\n* The use of the source code of this file is also subject to the terms\r\n* and consitions of the license of \"d3.js\" (BSD-3Clause, see\r\n* ).\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar RADIAN_EPSILON = 1e-4;\n// Although chrome already enlarge this number to 100 for `toFixed`, but\n// we sill follow the spec for compatibility.\nvar ROUND_SUPPORTED_PRECISION_MAX = 20;\nfunction _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n/**\r\n * Linear mapping a value from domain to range\r\n * @param val\r\n * @param domain Domain extent domain[0] can be bigger than domain[1]\r\n * @param range Range extent range[0] can be bigger than range[1]\r\n * @param clamp Default to be false\r\n */\nexport function linearMap(val, domain, range, clamp) {\n var d0 = domain[0];\n var d1 = domain[1];\n var r0 = range[0];\n var r1 = range[1];\n var subDomain = d1 - d0;\n var subRange = r1 - r0;\n if (subDomain === 0) {\n return subRange === 0 ? r0 : (r0 + r1) / 2;\n }\n // Avoid accuracy problem in edge, such as\n // 146.39 - 62.83 === 83.55999999999999.\n // See echarts/test/ut/spec/util/number.js#linearMap#accuracyError\n // It is a little verbose for efficiency considering this method\n // is a hotspot.\n if (clamp) {\n if (subDomain > 0) {\n if (val <= d0) {\n return r0;\n } else if (val >= d1) {\n return r1;\n }\n } else {\n if (val >= d0) {\n return r0;\n } else if (val <= d1) {\n return r1;\n }\n }\n } else {\n if (val === d0) {\n return r0;\n }\n if (val === d1) {\n return r1;\n }\n }\n return (val - d0) / subDomain * subRange + r0;\n}\n/**\r\n * Convert a percent string to absolute number.\r\n * Returns NaN if percent is not a valid string or number\r\n */\nexport function parsePercent(percent, all) {\n switch (percent) {\n case 'center':\n case 'middle':\n percent = '50%';\n break;\n case 'left':\n case 'top':\n percent = '0%';\n break;\n case 'right':\n case 'bottom':\n percent = '100%';\n break;\n }\n if (zrUtil.isString(percent)) {\n if (_trim(percent).match(/%$/)) {\n return parseFloat(percent) / 100 * all;\n }\n return parseFloat(percent);\n }\n return percent == null ? NaN : +percent;\n}\nexport function round(x, precision, returnStr) {\n if (precision == null) {\n precision = 10;\n }\n // Avoid range error\n precision = Math.min(Math.max(0, precision), ROUND_SUPPORTED_PRECISION_MAX);\n // PENDING: 1.005.toFixed(2) is '1.00' rather than '1.01'\n x = (+x).toFixed(precision);\n return returnStr ? x : +x;\n}\n/**\r\n * Inplacd asc sort arr.\r\n * The input arr will be modified.\r\n */\nexport function asc(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n return arr;\n}\n/**\r\n * Get precision.\r\n */\nexport function getPrecision(val) {\n val = +val;\n if (isNaN(val)) {\n return 0;\n }\n // It is much faster than methods converting number to string as follows\n // let tmp = val.toString();\n // return tmp.length - 1 - tmp.indexOf('.');\n // especially when precision is low\n // Notice:\n // (1) If the loop count is over about 20, it is slower than `getPrecisionSafe`.\n // (see https://jsbench.me/2vkpcekkvw/1)\n // (2) If the val is less than for example 1e-15, the result may be incorrect.\n // (see test/ut/spec/util/number.test.ts `getPrecision_equal_random`)\n if (val > 1e-14) {\n var e = 1;\n for (var i = 0; i < 15; i++, e *= 10) {\n if (Math.round(val * e) / e === val) {\n return i;\n }\n }\n }\n return getPrecisionSafe(val);\n}\n/**\r\n * Get precision with slow but safe method\r\n */\nexport function getPrecisionSafe(val) {\n // toLowerCase for: '3.4E-12'\n var str = val.toString().toLowerCase();\n // Consider scientific notation: '3.4e-12' '3.4e+12'\n var eIndex = str.indexOf('e');\n var exp = eIndex > 0 ? +str.slice(eIndex + 1) : 0;\n var significandPartLen = eIndex > 0 ? eIndex : str.length;\n var dotIndex = str.indexOf('.');\n var decimalPartLen = dotIndex < 0 ? 0 : significandPartLen - 1 - dotIndex;\n return Math.max(0, decimalPartLen - exp);\n}\n/**\r\n * Minimal dicernible data precisioin according to a single pixel.\r\n */\nexport function getPixelPrecision(dataExtent, pixelExtent) {\n var log = Math.log;\n var LN10 = Math.LN10;\n var dataQuantity = Math.floor(log(dataExtent[1] - dataExtent[0]) / LN10);\n var sizeQuantity = Math.round(log(Math.abs(pixelExtent[1] - pixelExtent[0])) / LN10);\n // toFixed() digits argument must be between 0 and 20.\n var precision = Math.min(Math.max(-dataQuantity + sizeQuantity, 0), 20);\n return !isFinite(precision) ? 20 : precision;\n}\n/**\r\n * Get a data of given precision, assuring the sum of percentages\r\n * in valueList is 1.\r\n * The largest remainder method is used.\r\n * https://en.wikipedia.org/wiki/Largest_remainder_method\r\n *\r\n * @param valueList a list of all data\r\n * @param idx index of the data to be processed in valueList\r\n * @param precision integer number showing digits of precision\r\n * @return percent ranging from 0 to 100\r\n */\nexport function getPercentWithPrecision(valueList, idx, precision) {\n if (!valueList[idx]) {\n return 0;\n }\n var seats = getPercentSeats(valueList, precision);\n return seats[idx] || 0;\n}\n/**\r\n * Get a data of given precision, assuring the sum of percentages\r\n * in valueList is 1.\r\n * The largest remainder method is used.\r\n * https://en.wikipedia.org/wiki/Largest_remainder_method\r\n *\r\n * @param valueList a list of all data\r\n * @param precision integer number showing digits of precision\r\n * @return {Array}\r\n */\nexport function getPercentSeats(valueList, precision) {\n var sum = zrUtil.reduce(valueList, function (acc, val) {\n return acc + (isNaN(val) ? 0 : val);\n }, 0);\n if (sum === 0) {\n return [];\n }\n var digits = Math.pow(10, precision);\n var votesPerQuota = zrUtil.map(valueList, function (val) {\n return (isNaN(val) ? 0 : val) / sum * digits * 100;\n });\n var targetSeats = digits * 100;\n var seats = zrUtil.map(votesPerQuota, function (votes) {\n // Assign automatic seats.\n return Math.floor(votes);\n });\n var currentSum = zrUtil.reduce(seats, function (acc, val) {\n return acc + val;\n }, 0);\n var remainder = zrUtil.map(votesPerQuota, function (votes, idx) {\n return votes - seats[idx];\n });\n // Has remainding votes.\n while (currentSum < targetSeats) {\n // Find next largest remainder.\n var max = Number.NEGATIVE_INFINITY;\n var maxId = null;\n for (var i = 0, len = remainder.length; i < len; ++i) {\n if (remainder[i] > max) {\n max = remainder[i];\n maxId = i;\n }\n }\n // Add a vote to max remainder.\n ++seats[maxId];\n remainder[maxId] = 0;\n ++currentSum;\n }\n return zrUtil.map(seats, function (seat) {\n return seat / digits;\n });\n}\n/**\r\n * Solve the floating point adding problem like 0.1 + 0.2 === 0.30000000000000004\r\n * See \r\n */\nexport function addSafe(val0, val1) {\n var maxPrecision = Math.max(getPrecision(val0), getPrecision(val1));\n // const multiplier = Math.pow(10, maxPrecision);\n // return (Math.round(val0 * multiplier) + Math.round(val1 * multiplier)) / multiplier;\n var sum = val0 + val1;\n // // PENDING: support more?\n return maxPrecision > ROUND_SUPPORTED_PRECISION_MAX ? sum : round(sum, maxPrecision);\n}\n// Number.MAX_SAFE_INTEGER, ie do not support.\nexport var MAX_SAFE_INTEGER = 9007199254740991;\n/**\r\n * To 0 - 2 * PI, considering negative radian.\r\n */\nexport function remRadian(radian) {\n var pi2 = Math.PI * 2;\n return (radian % pi2 + pi2) % pi2;\n}\n/**\r\n * @param {type} radian\r\n * @return {boolean}\r\n */\nexport function isRadianAroundZero(val) {\n return val > -RADIAN_EPSILON && val < RADIAN_EPSILON;\n}\n// eslint-disable-next-line\nvar TIME_REG = /^(?:(\\d{4})(?:[-\\/](\\d{1,2})(?:[-\\/](\\d{1,2})(?:[T ](\\d{1,2})(?::(\\d{1,2})(?::(\\d{1,2})(?:[.,](\\d+))?)?)?(Z|[\\+\\-]\\d\\d:?\\d\\d)?)?)?)?)?$/; // jshint ignore:line\n/**\r\n * @param value valid type: number | string | Date, otherwise return `new Date(NaN)`\r\n * These values can be accepted:\r\n * + An instance of Date, represent a time in its own time zone.\r\n * + Or string in a subset of ISO 8601, only including:\r\n * + only year, month, date: '2012-03', '2012-03-01', '2012-03-01 05', '2012-03-01 05:06',\r\n * + separated with T or space: '2012-03-01T12:22:33.123', '2012-03-01 12:22:33.123',\r\n * + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',\r\n * all of which will be treated as local time if time zone is not specified\r\n * (see ).\r\n * + Or other string format, including (all of which will be treated as local time):\r\n * '2012', '2012-3-1', '2012/3/1', '2012/03/01',\r\n * '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'\r\n * + a timestamp, which represent a time in UTC.\r\n * @return date Never be null/undefined. If invalid, return `new Date(NaN)`.\r\n */\nexport function parseDate(value) {\n if (value instanceof Date) {\n return value;\n } else if (zrUtil.isString(value)) {\n // Different browsers parse date in different way, so we parse it manually.\n // Some other issues:\n // new Date('1970-01-01') is UTC,\n // new Date('1970/01/01') and new Date('1970-1-01') is local.\n // See issue #3623\n var match = TIME_REG.exec(value);\n if (!match) {\n // return Invalid Date.\n return new Date(NaN);\n }\n // Use local time when no timezone offset is specified.\n if (!match[8]) {\n // match[n] can only be string or undefined.\n // But take care of '12' + 1 => '121'.\n return new Date(+match[1], +(match[2] || 1) - 1, +match[3] || 1, +match[4] || 0, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0);\n }\n // Timezoneoffset of Javascript Date has considered DST (Daylight Saving Time,\n // https://tc39.github.io/ecma262/#sec-daylight-saving-time-adjustment).\n // For example, system timezone is set as \"Time Zone: America/Toronto\",\n // then these code will get different result:\n // `new Date(1478411999999).getTimezoneOffset(); // get 240`\n // `new Date(1478412000000).getTimezoneOffset(); // get 300`\n // So we should not use `new Date`, but use `Date.UTC`.\n else {\n var hour = +match[4] || 0;\n if (match[8].toUpperCase() !== 'Z') {\n hour -= +match[8].slice(0, 3);\n }\n return new Date(Date.UTC(+match[1], +(match[2] || 1) - 1, +match[3] || 1, hour, +(match[5] || 0), +match[6] || 0, match[7] ? +match[7].substring(0, 3) : 0));\n }\n } else if (value == null) {\n return new Date(NaN);\n }\n return new Date(Math.round(value));\n}\n/**\r\n * Quantity of a number. e.g. 0.1, 1, 10, 100\r\n *\r\n * @param val\r\n * @return\r\n */\nexport function quantity(val) {\n return Math.pow(10, quantityExponent(val));\n}\n/**\r\n * Exponent of the quantity of a number\r\n * e.g., 1234 equals to 1.234*10^3, so quantityExponent(1234) is 3\r\n *\r\n * @param val non-negative value\r\n * @return\r\n */\nexport function quantityExponent(val) {\n if (val === 0) {\n return 0;\n }\n var exp = Math.floor(Math.log(val) / Math.LN10);\n /**\r\n * exp is expected to be the rounded-down result of the base-10 log of val.\r\n * But due to the precision loss with Math.log(val), we need to restore it\r\n * using 10^exp to make sure we can get val back from exp. #11249\r\n */\n if (val / Math.pow(10, exp) >= 10) {\n exp++;\n }\n return exp;\n}\n/**\r\n * find a \u201Cnice\u201D number approximately equal to x. Round the number if round = true,\r\n * take ceiling if round = false. The primary observation is that the \u201Cnicest\u201D\r\n * numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers.\r\n *\r\n * See \"Nice Numbers for Graph Labels\" of Graphic Gems.\r\n *\r\n * @param val Non-negative value.\r\n * @param round\r\n * @return Niced number\r\n */\nexport function nice(val, round) {\n var exponent = quantityExponent(val);\n var exp10 = Math.pow(10, exponent);\n var f = val / exp10; // 1 <= f < 10\n var nf;\n if (round) {\n if (f < 1.5) {\n nf = 1;\n } else if (f < 2.5) {\n nf = 2;\n } else if (f < 4) {\n nf = 3;\n } else if (f < 7) {\n nf = 5;\n } else {\n nf = 10;\n }\n } else {\n if (f < 1) {\n nf = 1;\n } else if (f < 2) {\n nf = 2;\n } else if (f < 3) {\n nf = 3;\n } else if (f < 5) {\n nf = 5;\n } else {\n nf = 10;\n }\n }\n val = nf * exp10;\n // Fix 3 * 0.1 === 0.30000000000000004 issue (see IEEE 754).\n // 20 is the uppper bound of toFixed.\n return exponent >= -20 ? +val.toFixed(exponent < 0 ? -exponent : 0) : val;\n}\n/**\r\n * This code was copied from \"d3.js\"\r\n * .\r\n * See the license statement at the head of this file.\r\n * @param ascArr\r\n */\nexport function quantile(ascArr, p) {\n var H = (ascArr.length - 1) * p + 1;\n var h = Math.floor(H);\n var v = +ascArr[h - 1];\n var e = H - h;\n return e ? v + e * (ascArr[h] - v) : v;\n}\n/**\r\n * Order intervals asc, and split them when overlap.\r\n * expect(numberUtil.reformIntervals([\r\n * {interval: [18, 62], close: [1, 1]},\r\n * {interval: [-Infinity, -70], close: [0, 0]},\r\n * {interval: [-70, -26], close: [1, 1]},\r\n * {interval: [-26, 18], close: [1, 1]},\r\n * {interval: [62, 150], close: [1, 1]},\r\n * {interval: [106, 150], close: [1, 1]},\r\n * {interval: [150, Infinity], close: [0, 0]}\r\n * ])).toEqual([\r\n * {interval: [-Infinity, -70], close: [0, 0]},\r\n * {interval: [-70, -26], close: [1, 1]},\r\n * {interval: [-26, 18], close: [0, 1]},\r\n * {interval: [18, 62], close: [0, 1]},\r\n * {interval: [62, 150], close: [0, 1]},\r\n * {interval: [150, Infinity], close: [0, 0]}\r\n * ]);\r\n * @param list, where `close` mean open or close\r\n * of the interval, and Infinity can be used.\r\n * @return The origin list, which has been reformed.\r\n */\nexport function reformIntervals(list) {\n list.sort(function (a, b) {\n return littleThan(a, b, 0) ? -1 : 1;\n });\n var curr = -Infinity;\n var currClose = 1;\n for (var i = 0; i < list.length;) {\n var interval = list[i].interval;\n var close_1 = list[i].close;\n for (var lg = 0; lg < 2; lg++) {\n if (interval[lg] <= curr) {\n interval[lg] = curr;\n close_1[lg] = !lg ? 1 - currClose : 1;\n }\n curr = interval[lg];\n currClose = close_1[lg];\n }\n if (interval[0] === interval[1] && close_1[0] * close_1[1] !== 1) {\n list.splice(i, 1);\n } else {\n i++;\n }\n }\n return list;\n function littleThan(a, b, lg) {\n return a.interval[lg] < b.interval[lg] || a.interval[lg] === b.interval[lg] && (a.close[lg] - b.close[lg] === (!lg ? 1 : -1) || !lg && littleThan(a, b, 1));\n }\n}\n/**\r\n * [Numeric is defined as]:\r\n * `parseFloat(val) == val`\r\n * For example:\r\n * numeric:\r\n * typeof number except NaN, '-123', '123', '2e3', '-2e3', '011', 'Infinity', Infinity,\r\n * and they rounded by white-spaces or line-terminal like ' -123 \\n ' (see es spec)\r\n * not-numeric:\r\n * null, undefined, [], {}, true, false, 'NaN', NaN, '123ab',\r\n * empty string, string with only white-spaces or line-terminal (see es spec),\r\n * 0x12, '0x12', '-0x12', 012, '012', '-012',\r\n * non-string, ...\r\n *\r\n * @test See full test cases in `test/ut/spec/util/number.js`.\r\n * @return Must be a typeof number. If not numeric, return NaN.\r\n */\nexport function numericToNumber(val) {\n var valFloat = parseFloat(val);\n return valFloat == val // eslint-disable-line eqeqeq\n && (valFloat !== 0 || !zrUtil.isString(val) || val.indexOf('x') <= 0) // For case ' 0x0 '.\n ? valFloat : NaN;\n}\n/**\r\n * Definition of \"numeric\": see `numericToNumber`.\r\n */\nexport function isNumeric(val) {\n return !isNaN(numericToNumber(val));\n}\n/**\r\n * Use random base to prevent users hard code depending on\r\n * this auto generated marker id.\r\n * @return An positive integer.\r\n */\nexport function getRandomIdBase() {\n return Math.round(Math.random() * 9);\n}\n/**\r\n * Get the greatest common divisor.\r\n *\r\n * @param {number} a one number\r\n * @param {number} b the other number\r\n */\nexport function getGreatestCommonDividor(a, b) {\n if (b === 0) {\n return a;\n }\n return getGreatestCommonDividor(b, a % b);\n}\n/**\r\n * Get the least common multiple.\r\n *\r\n * @param {number} a one number\r\n * @param {number} b the other number\r\n */\nexport function getLeastCommonMultiple(a, b) {\n if (a == null) {\n return b;\n }\n if (b == null) {\n return a;\n }\n return a * b / getGreatestCommonDividor(a, b);\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { map, isString, isFunction, eqNaN, isRegExp } from 'zrender/lib/core/util.js';\nvar ECHARTS_PREFIX = '[ECharts] ';\nvar storedLogs = {};\nvar hasConsole = typeof console !== 'undefined'\n// eslint-disable-next-line\n&& console.warn && console.log;\nfunction outputLog(type, str, onlyOnce) {\n if (hasConsole) {\n if (onlyOnce) {\n if (storedLogs[str]) {\n return;\n }\n storedLogs[str] = true;\n }\n // eslint-disable-next-line\n console[type](ECHARTS_PREFIX + str);\n }\n}\nexport function log(str, onlyOnce) {\n outputLog('log', str, onlyOnce);\n}\nexport function warn(str, onlyOnce) {\n outputLog('warn', str, onlyOnce);\n}\nexport function error(str, onlyOnce) {\n outputLog('error', str, onlyOnce);\n}\nexport function deprecateLog(str) {\n if (process.env.NODE_ENV !== 'production') {\n // Not display duplicate message.\n outputLog('warn', 'DEPRECATED: ' + str, true);\n }\n}\nexport function deprecateReplaceLog(oldOpt, newOpt, scope) {\n if (process.env.NODE_ENV !== 'production') {\n deprecateLog((scope ? \"[\" + scope + \"]\" : '') + (oldOpt + \" is deprecated, use \" + newOpt + \" instead.\"));\n }\n}\n/**\r\n * If in __DEV__ environment, get console printable message for users hint.\r\n * Parameters are separated by ' '.\r\n * @usage\r\n * makePrintable('This is an error on', someVar, someObj);\r\n *\r\n * @param hintInfo anything about the current execution context to hint users.\r\n * @throws Error\r\n */\nexport function makePrintable() {\n var hintInfo = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n hintInfo[_i] = arguments[_i];\n }\n var msg = '';\n if (process.env.NODE_ENV !== 'production') {\n // Fuzzy stringify for print.\n // This code only exist in dev environment.\n var makePrintableStringIfPossible_1 = function (val) {\n return val === void 0 ? 'undefined' : val === Infinity ? 'Infinity' : val === -Infinity ? '-Infinity' : eqNaN(val) ? 'NaN' : val instanceof Date ? 'Date(' + val.toISOString() + ')' : isFunction(val) ? 'function () { ... }' : isRegExp(val) ? val + '' : null;\n };\n msg = map(hintInfo, function (arg) {\n if (isString(arg)) {\n // Print without quotation mark for some statement.\n return arg;\n } else {\n var printableStr = makePrintableStringIfPossible_1(arg);\n if (printableStr != null) {\n return printableStr;\n } else if (typeof JSON !== 'undefined' && JSON.stringify) {\n try {\n return JSON.stringify(arg, function (n, val) {\n var printableStr = makePrintableStringIfPossible_1(val);\n return printableStr == null ? val : printableStr;\n });\n // In most cases the info object is small, so do not line break.\n } catch (err) {\n return '?';\n }\n } else {\n return '?';\n }\n }\n }).join(' ');\n }\n return msg;\n}\n/**\r\n * @throws Error\r\n */\nexport function throwError(msg) {\n throw new Error(msg);\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { each, isObject, isArray, createHashMap, map, assert, isString, indexOf, isStringSafe, isNumber } from 'zrender/lib/core/util.js';\nimport env from 'zrender/lib/core/env.js';\nimport { isNumeric, getRandomIdBase, getPrecision, round } from './number.js';\nimport { warn } from './log.js';\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\n/**\r\n * Make the name displayable. But we should\r\n * make sure it is not duplicated with user\r\n * specified name, so use '\\0';\r\n */\nvar DUMMY_COMPONENT_NAME_PREFIX = 'series\\0';\nvar INTERNAL_COMPONENT_ID_PREFIX = '\\0_ec_\\0';\n/**\r\n * If value is not array, then translate it to array.\r\n * @param {*} value\r\n * @return {Array} [value] or value\r\n */\nexport function normalizeToArray(value) {\n return value instanceof Array ? value : value == null ? [] : [value];\n}\n/**\r\n * Sync default option between normal and emphasis like `position` and `show`\r\n * In case some one will write code like\r\n * label: {\r\n * show: false,\r\n * position: 'outside',\r\n * fontSize: 18\r\n * },\r\n * emphasis: {\r\n * label: { show: true }\r\n * }\r\n */\nexport function defaultEmphasis(opt, key, subOpts) {\n // Caution: performance sensitive.\n if (opt) {\n opt[key] = opt[key] || {};\n opt.emphasis = opt.emphasis || {};\n opt.emphasis[key] = opt.emphasis[key] || {};\n // Default emphasis option from normal\n for (var i = 0, len = subOpts.length; i < len; i++) {\n var subOptName = subOpts[i];\n if (!opt.emphasis[key].hasOwnProperty(subOptName) && opt[key].hasOwnProperty(subOptName)) {\n opt.emphasis[key][subOptName] = opt[key][subOptName];\n }\n }\n }\n}\nexport var TEXT_STYLE_OPTIONS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'rich', 'tag', 'color', 'textBorderColor', 'textBorderWidth', 'width', 'height', 'lineHeight', 'align', 'verticalAlign', 'baseline', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY', 'backgroundColor', 'borderColor', 'borderWidth', 'borderRadius', 'padding'];\n// modelUtil.LABEL_OPTIONS = modelUtil.TEXT_STYLE_OPTIONS.concat([\n// 'position', 'offset', 'rotate', 'origin', 'show', 'distance', 'formatter',\n// 'fontStyle', 'fontWeight', 'fontSize', 'fontFamily',\n// // FIXME: deprecated, check and remove it.\n// 'textStyle'\n// ]);\n/**\r\n * The method does not ensure performance.\r\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\r\n * This helper method retrieves value from data.\r\n */\nexport function getDataItemValue(dataItem) {\n return isObject(dataItem) && !isArray(dataItem) && !(dataItem instanceof Date) ? dataItem.value : dataItem;\n}\n/**\r\n * data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]\r\n * This helper method determine if dataItem has extra option besides value\r\n */\nexport function isDataItemOption(dataItem) {\n return isObject(dataItem) && !(dataItem instanceof Array);\n // // markLine data can be array\n // && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));\n}\n;\n/**\r\n * Mapping to existings for merge.\r\n *\r\n * Mode \"normalMege\":\r\n * The mapping result (merge result) will keep the order of the existing\r\n * component, rather than the order of new option. Because we should ensure\r\n * some specified index reference (like xAxisIndex) keep work.\r\n * And in most cases, \"merge option\" is used to update partial option but not\r\n * be expected to change the order.\r\n *\r\n * Mode \"replaceMege\":\r\n * (1) Only the id mapped components will be merged.\r\n * (2) Other existing components (except internal components) will be removed.\r\n * (3) Other new options will be used to create new component.\r\n * (4) The index of the existing components will not be modified.\r\n * That means their might be \"hole\" after the removal.\r\n * The new components are created first at those available index.\r\n *\r\n * Mode \"replaceAll\":\r\n * This mode try to support that reproduce an echarts instance from another\r\n * echarts instance (via `getOption`) in some simple cases.\r\n * In this scenario, the `result` index are exactly the consistent with the `newCmptOptions`,\r\n * which ensures the component index referring (like `xAxisIndex: ?`) corrent. That is,\r\n * the \"hole\" in `newCmptOptions` will also be kept.\r\n * On the contrary, other modes try best to eliminate holes.\r\n * PENDING: This is an experimental mode yet.\r\n *\r\n * @return See the comment of .\r\n */\nexport function mappingToExists(existings, newCmptOptions, mode) {\n var isNormalMergeMode = mode === 'normalMerge';\n var isReplaceMergeMode = mode === 'replaceMerge';\n var isReplaceAllMode = mode === 'replaceAll';\n existings = existings || [];\n newCmptOptions = (newCmptOptions || []).slice();\n var existingIdIdxMap = createHashMap();\n // Validate id and name on user input option.\n each(newCmptOptions, function (cmptOption, index) {\n if (!isObject(cmptOption)) {\n newCmptOptions[index] = null;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // There is some legacy case that name is set as `false`.\n // But should work normally rather than throw error.\n if (cmptOption.id != null && !isValidIdOrName(cmptOption.id)) {\n warnInvalidateIdOrName(cmptOption.id);\n }\n if (cmptOption.name != null && !isValidIdOrName(cmptOption.name)) {\n warnInvalidateIdOrName(cmptOption.name);\n }\n }\n });\n var result = prepareResult(existings, existingIdIdxMap, mode);\n if (isNormalMergeMode || isReplaceMergeMode) {\n mappingById(result, existings, existingIdIdxMap, newCmptOptions);\n }\n if (isNormalMergeMode) {\n mappingByName(result, newCmptOptions);\n }\n if (isNormalMergeMode || isReplaceMergeMode) {\n mappingByIndex(result, newCmptOptions, isReplaceMergeMode);\n } else if (isReplaceAllMode) {\n mappingInReplaceAllMode(result, newCmptOptions);\n }\n makeIdAndName(result);\n // The array `result` MUST NOT contain elided items, otherwise the\n // forEach will omit those items and result in incorrect result.\n return result;\n}\nfunction prepareResult(existings, existingIdIdxMap, mode) {\n var result = [];\n if (mode === 'replaceAll') {\n return result;\n }\n // Do not use native `map` to in case that the array `existings`\n // contains elided items, which will be omitted.\n for (var index = 0; index < existings.length; index++) {\n var existing = existings[index];\n // Because of replaceMerge, `existing` may be null/undefined.\n if (existing && existing.id != null) {\n existingIdIdxMap.set(existing.id, index);\n }\n // For non-internal-componnets:\n // Mode \"normalMerge\": all existings kept.\n // Mode \"replaceMerge\": all existing removed unless mapped by id.\n // For internal-components:\n // go with \"replaceMerge\" approach in both mode.\n result.push({\n existing: mode === 'replaceMerge' || isComponentIdInternal(existing) ? null : existing,\n newOption: null,\n keyInfo: null,\n brandNew: null\n });\n }\n return result;\n}\nfunction mappingById(result, existings, existingIdIdxMap, newCmptOptions) {\n // Mapping by id if specified.\n each(newCmptOptions, function (cmptOption, index) {\n if (!cmptOption || cmptOption.id == null) {\n return;\n }\n var optionId = makeComparableKey(cmptOption.id);\n var existingIdx = existingIdIdxMap.get(optionId);\n if (existingIdx != null) {\n var resultItem = result[existingIdx];\n assert(!resultItem.newOption, 'Duplicated option on id \"' + optionId + '\".');\n resultItem.newOption = cmptOption;\n // In both mode, if id matched, new option will be merged to\n // the existings rather than creating new component model.\n resultItem.existing = existings[existingIdx];\n newCmptOptions[index] = null;\n }\n });\n}\nfunction mappingByName(result, newCmptOptions) {\n // Mapping by name if specified.\n each(newCmptOptions, function (cmptOption, index) {\n if (!cmptOption || cmptOption.name == null) {\n return;\n }\n for (var i = 0; i < result.length; i++) {\n var existing = result[i].existing;\n if (!result[i].newOption // Consider name: two map to one.\n // Can not match when both ids existing but different.\n && existing && (existing.id == null || cmptOption.id == null) && !isComponentIdInternal(cmptOption) && !isComponentIdInternal(existing) && keyExistAndEqual('name', existing, cmptOption)) {\n result[i].newOption = cmptOption;\n newCmptOptions[index] = null;\n return;\n }\n }\n });\n}\nfunction mappingByIndex(result, newCmptOptions, brandNew) {\n each(newCmptOptions, function (cmptOption) {\n if (!cmptOption) {\n return;\n }\n // Find the first place that not mapped by id and not internal component (consider the \"hole\").\n var resultItem;\n var nextIdx = 0;\n while (\n // Be `!resultItem` only when `nextIdx >= result.length`.\n (resultItem = result[nextIdx]\n // (1) Existing models that already have id should be able to mapped to. Because\n // after mapping performed, model will always be assigned with an id if user not given.\n // After that all models have id.\n // (2) If new option has id, it can only set to a hole or append to the last. It should\n // not be merged to the existings with different id. Because id should not be overwritten.\n // (3) Name can be overwritten, because axis use name as 'show label text'.\n ) && (resultItem.newOption || isComponentIdInternal(resultItem.existing) ||\n // In mode \"replaceMerge\", here no not-mapped-non-internal-existing.\n resultItem.existing && cmptOption.id != null && !keyExistAndEqual('id', cmptOption, resultItem.existing))) {\n nextIdx++;\n }\n if (resultItem) {\n resultItem.newOption = cmptOption;\n resultItem.brandNew = brandNew;\n } else {\n result.push({\n newOption: cmptOption,\n brandNew: brandNew,\n existing: null,\n keyInfo: null\n });\n }\n nextIdx++;\n });\n}\nfunction mappingInReplaceAllMode(result, newCmptOptions) {\n each(newCmptOptions, function (cmptOption) {\n // The feature \"reproduce\" requires \"hole\" will also reproduced\n // in case that component index referring are broken.\n result.push({\n newOption: cmptOption,\n brandNew: true,\n existing: null,\n keyInfo: null\n });\n });\n}\n/**\r\n * Make id and name for mapping result (result of mappingToExists)\r\n * into `keyInfo` field.\r\n */\nfunction makeIdAndName(mapResult) {\n // We use this id to hash component models and view instances\n // in echarts. id can be specified by user, or auto generated.\n // The id generation rule ensures new view instance are able\n // to mapped to old instance when setOption are called in\n // no-merge mode. So we generate model id by name and plus\n // type in view id.\n // name can be duplicated among components, which is convenient\n // to specify multi components (like series) by one name.\n // Ensure that each id is distinct.\n var idMap = createHashMap();\n each(mapResult, function (item) {\n var existing = item.existing;\n existing && idMap.set(existing.id, item);\n });\n each(mapResult, function (item) {\n var opt = item.newOption;\n // Force ensure id not duplicated.\n assert(!opt || opt.id == null || !idMap.get(opt.id) || idMap.get(opt.id) === item, 'id duplicates: ' + (opt && opt.id));\n opt && opt.id != null && idMap.set(opt.id, item);\n !item.keyInfo && (item.keyInfo = {});\n });\n // Make name and id.\n each(mapResult, function (item, index) {\n var existing = item.existing;\n var opt = item.newOption;\n var keyInfo = item.keyInfo;\n if (!isObject(opt)) {\n return;\n }\n // Name can be overwritten. Consider case: axis.name = '20km'.\n // But id generated by name will not be changed, which affect\n // only in that case: setOption with 'not merge mode' and view\n // instance will be recreated, which can be accepted.\n keyInfo.name = opt.name != null ? makeComparableKey(opt.name) : existing ? existing.name\n // Avoid that different series has the same name,\n // because name may be used like in color pallet.\n : DUMMY_COMPONENT_NAME_PREFIX + index;\n if (existing) {\n keyInfo.id = makeComparableKey(existing.id);\n } else if (opt.id != null) {\n keyInfo.id = makeComparableKey(opt.id);\n } else {\n // Consider this situatoin:\n // optionA: [{name: 'a'}, {name: 'a'}, {..}]\n // optionB [{..}, {name: 'a'}, {name: 'a'}]\n // Series with the same name between optionA and optionB\n // should be mapped.\n var idNum = 0;\n do {\n keyInfo.id = '\\0' + keyInfo.name + '\\0' + idNum++;\n } while (idMap.get(keyInfo.id));\n }\n idMap.set(keyInfo.id, item);\n });\n}\nfunction keyExistAndEqual(attr, obj1, obj2) {\n var key1 = convertOptionIdName(obj1[attr], null);\n var key2 = convertOptionIdName(obj2[attr], null);\n // See `MappingExistingItem`. `id` and `name` trade string equals to number.\n return key1 != null && key2 != null && key1 === key2;\n}\n/**\r\n * @return return null if not exist.\r\n */\nfunction makeComparableKey(val) {\n if (process.env.NODE_ENV !== 'production') {\n if (val == null) {\n throw new Error();\n }\n }\n return convertOptionIdName(val, '');\n}\nexport function convertOptionIdName(idOrName, defaultValue) {\n if (idOrName == null) {\n return defaultValue;\n }\n return isString(idOrName) ? idOrName : isNumber(idOrName) || isStringSafe(idOrName) ? idOrName + '' : defaultValue;\n}\nfunction warnInvalidateIdOrName(idOrName) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`' + idOrName + '` is invalid id or name. Must be a string or number.');\n }\n}\nfunction isValidIdOrName(idOrName) {\n return isStringSafe(idOrName) || isNumeric(idOrName);\n}\nexport function isNameSpecified(componentModel) {\n var name = componentModel.name;\n // Is specified when `indexOf` get -1 or > 0.\n return !!(name && name.indexOf(DUMMY_COMPONENT_NAME_PREFIX));\n}\n/**\r\n * @public\r\n * @param {Object} cmptOption\r\n * @return {boolean}\r\n */\nexport function isComponentIdInternal(cmptOption) {\n return cmptOption && cmptOption.id != null && makeComparableKey(cmptOption.id).indexOf(INTERNAL_COMPONENT_ID_PREFIX) === 0;\n}\nexport function makeInternalComponentId(idSuffix) {\n return INTERNAL_COMPONENT_ID_PREFIX + idSuffix;\n}\nexport function setComponentTypeToKeyInfo(mappingResult, mainType, componentModelCtor) {\n // Set mainType and complete subType.\n each(mappingResult, function (item) {\n var newOption = item.newOption;\n if (isObject(newOption)) {\n item.keyInfo.mainType = mainType;\n item.keyInfo.subType = determineSubType(mainType, newOption, item.existing, componentModelCtor);\n }\n });\n}\nfunction determineSubType(mainType, newCmptOption, existComponent, componentModelCtor) {\n var subType = newCmptOption.type ? newCmptOption.type : existComponent ? existComponent.subType\n // Use determineSubType only when there is no existComponent.\n : componentModelCtor.determineSubType(mainType, newCmptOption);\n // tooltip, markline, markpoint may always has no subType\n return subType;\n}\n/**\r\n * A helper for removing duplicate items between batchA and batchB,\r\n * and in themselves, and categorize by series.\r\n *\r\n * @param batchA Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\r\n * @param batchB Like: [{seriesId: 2, dataIndex: [32, 4, 5]}, ...]\r\n * @return result: [resultBatchA, resultBatchB]\r\n */\nexport function compressBatches(batchA, batchB) {\n var mapA = {};\n var mapB = {};\n makeMap(batchA || [], mapA);\n makeMap(batchB || [], mapB, mapA);\n return [mapToArray(mapA), mapToArray(mapB)];\n function makeMap(sourceBatch, map, otherMap) {\n for (var i = 0, len = sourceBatch.length; i < len; i++) {\n var seriesId = convertOptionIdName(sourceBatch[i].seriesId, null);\n if (seriesId == null) {\n return;\n }\n var dataIndices = normalizeToArray(sourceBatch[i].dataIndex);\n var otherDataIndices = otherMap && otherMap[seriesId];\n for (var j = 0, lenj = dataIndices.length; j < lenj; j++) {\n var dataIndex = dataIndices[j];\n if (otherDataIndices && otherDataIndices[dataIndex]) {\n otherDataIndices[dataIndex] = null;\n } else {\n (map[seriesId] || (map[seriesId] = {}))[dataIndex] = 1;\n }\n }\n }\n }\n function mapToArray(map, isData) {\n var result = [];\n for (var i in map) {\n if (map.hasOwnProperty(i) && map[i] != null) {\n if (isData) {\n result.push(+i);\n } else {\n var dataIndices = mapToArray(map[i], true);\n dataIndices.length && result.push({\n seriesId: i,\n dataIndex: dataIndices\n });\n }\n }\n }\n return result;\n }\n}\n/**\r\n * @param payload Contains dataIndex (means rawIndex) / dataIndexInside / name\r\n * each of which can be Array or primary type.\r\n * @return dataIndex If not found, return undefined/null.\r\n */\nexport function queryDataIndex(data, payload) {\n if (payload.dataIndexInside != null) {\n return payload.dataIndexInside;\n } else if (payload.dataIndex != null) {\n return isArray(payload.dataIndex) ? map(payload.dataIndex, function (value) {\n return data.indexOfRawIndex(value);\n }) : data.indexOfRawIndex(payload.dataIndex);\n } else if (payload.name != null) {\n return isArray(payload.name) ? map(payload.name, function (value) {\n return data.indexOfName(value);\n }) : data.indexOfName(payload.name);\n }\n}\n/**\r\n * Enable property storage to any host object.\r\n * Notice: Serialization is not supported.\r\n *\r\n * For example:\r\n * let inner = zrUitl.makeInner();\r\n *\r\n * function some1(hostObj) {\r\n * inner(hostObj).someProperty = 1212;\r\n * ...\r\n * }\r\n * function some2() {\r\n * let fields = inner(this);\r\n * fields.someProperty1 = 1212;\r\n * fields.someProperty2 = 'xx';\r\n * ...\r\n * }\r\n *\r\n * @return {Function}\r\n */\nexport function makeInner() {\n var key = '__ec_inner_' + innerUniqueIndex++;\n return function (hostObj) {\n return hostObj[key] || (hostObj[key] = {});\n };\n}\nvar innerUniqueIndex = getRandomIdBase();\n/**\r\n * The same behavior as `component.getReferringComponents`.\r\n */\nexport function parseFinder(ecModel, finderInput, opt) {\n var _a = preParseFinder(finderInput, opt),\n mainTypeSpecified = _a.mainTypeSpecified,\n queryOptionMap = _a.queryOptionMap,\n others = _a.others;\n var result = others;\n var defaultMainType = opt ? opt.defaultMainType : null;\n if (!mainTypeSpecified && defaultMainType) {\n queryOptionMap.set(defaultMainType, {});\n }\n queryOptionMap.each(function (queryOption, mainType) {\n var queryResult = queryReferringComponents(ecModel, mainType, queryOption, {\n useDefault: defaultMainType === mainType,\n enableAll: opt && opt.enableAll != null ? opt.enableAll : true,\n enableNone: opt && opt.enableNone != null ? opt.enableNone : true\n });\n result[mainType + 'Models'] = queryResult.models;\n result[mainType + 'Model'] = queryResult.models[0];\n });\n return result;\n}\nexport function preParseFinder(finderInput, opt) {\n var finder;\n if (isString(finderInput)) {\n var obj = {};\n obj[finderInput + 'Index'] = 0;\n finder = obj;\n } else {\n finder = finderInput;\n }\n var queryOptionMap = createHashMap();\n var others = {};\n var mainTypeSpecified = false;\n each(finder, function (value, key) {\n // Exclude 'dataIndex' and other illgal keys.\n if (key === 'dataIndex' || key === 'dataIndexInside') {\n others[key] = value;\n return;\n }\n var parsedKey = key.match(/^(\\w+)(Index|Id|Name)$/) || [];\n var mainType = parsedKey[1];\n var queryType = (parsedKey[2] || '').toLowerCase();\n if (!mainType || !queryType || opt && opt.includeMainTypes && indexOf(opt.includeMainTypes, mainType) < 0) {\n return;\n }\n mainTypeSpecified = mainTypeSpecified || !!mainType;\n var queryOption = queryOptionMap.get(mainType) || queryOptionMap.set(mainType, {});\n queryOption[queryType] = value;\n });\n return {\n mainTypeSpecified: mainTypeSpecified,\n queryOptionMap: queryOptionMap,\n others: others\n };\n}\nexport var SINGLE_REFERRING = {\n useDefault: true,\n enableAll: false,\n enableNone: false\n};\nexport var MULTIPLE_REFERRING = {\n useDefault: false,\n enableAll: true,\n enableNone: true\n};\nexport function queryReferringComponents(ecModel, mainType, userOption, opt) {\n opt = opt || SINGLE_REFERRING;\n var indexOption = userOption.index;\n var idOption = userOption.id;\n var nameOption = userOption.name;\n var result = {\n models: null,\n specified: indexOption != null || idOption != null || nameOption != null\n };\n if (!result.specified) {\n // Use the first as default if `useDefault`.\n var firstCmpt = void 0;\n result.models = opt.useDefault && (firstCmpt = ecModel.getComponent(mainType)) ? [firstCmpt] : [];\n return result;\n }\n if (indexOption === 'none' || indexOption === false) {\n assert(opt.enableNone, '`\"none\"` or `false` is not a valid value on index option.');\n result.models = [];\n return result;\n }\n // `queryComponents` will return all components if\n // both all of index/id/name are null/undefined.\n if (indexOption === 'all') {\n assert(opt.enableAll, '`\"all\"` is not a valid value on index option.');\n indexOption = idOption = nameOption = null;\n }\n result.models = ecModel.queryComponents({\n mainType: mainType,\n index: indexOption,\n id: idOption,\n name: nameOption\n });\n return result;\n}\nexport function setAttribute(dom, key, value) {\n dom.setAttribute ? dom.setAttribute(key, value) : dom[key] = value;\n}\nexport function getAttribute(dom, key) {\n return dom.getAttribute ? dom.getAttribute(key) : dom[key];\n}\nexport function getTooltipRenderMode(renderModeOption) {\n if (renderModeOption === 'auto') {\n // Using html when `document` exists, use richText otherwise\n return env.domSupported ? 'html' : 'richText';\n } else {\n return renderModeOption || 'html';\n }\n}\n/**\r\n * Group a list by key.\r\n */\nexport function groupData(array, getKey // return key\n) {\n var buckets = createHashMap();\n var keys = [];\n each(array, function (item) {\n var key = getKey(item);\n (buckets.get(key) || (keys.push(key), buckets.set(key, []))).push(item);\n });\n return {\n keys: keys,\n buckets: buckets\n };\n}\n/**\r\n * Interpolate raw values of a series with percent\r\n *\r\n * @param data data\r\n * @param labelModel label model of the text element\r\n * @param sourceValue start value. May be null/undefined when init.\r\n * @param targetValue end value\r\n * @param percent 0~1 percentage; 0 uses start value while 1 uses end value\r\n * @return interpolated values\r\n * If `sourceValue` and `targetValue` are `number`, return `number`.\r\n * If `sourceValue` and `targetValue` are `string`, return `string`.\r\n * If `sourceValue` and `targetValue` are `(string | number)[]`, return `(string | number)[]`.\r\n * Other cases do not supported.\r\n */\nexport function interpolateRawValues(data, precision, sourceValue, targetValue, percent) {\n var isAutoPrecision = precision == null || precision === 'auto';\n if (targetValue == null) {\n return targetValue;\n }\n if (isNumber(targetValue)) {\n var value = interpolateNumber(sourceValue || 0, targetValue, percent);\n return round(value, isAutoPrecision ? Math.max(getPrecision(sourceValue || 0), getPrecision(targetValue)) : precision);\n } else if (isString(targetValue)) {\n return percent < 1 ? sourceValue : targetValue;\n } else {\n var interpolated = [];\n var leftArr = sourceValue;\n var rightArr = targetValue;\n var length_1 = Math.max(leftArr ? leftArr.length : 0, rightArr.length);\n for (var i = 0; i < length_1; ++i) {\n var info = data.getDimensionInfo(i);\n // Don't interpolate ordinal dims\n if (info && info.type === 'ordinal') {\n // In init, there is no `sourceValue`, but should better not to get undefined result.\n interpolated[i] = (percent < 1 && leftArr ? leftArr : rightArr)[i];\n } else {\n var leftVal = leftArr && leftArr[i] ? leftArr[i] : 0;\n var rightVal = rightArr[i];\n var value = interpolateNumber(leftVal, rightVal, percent);\n interpolated[i] = round(value, isAutoPrecision ? Math.max(getPrecision(leftVal), getPrecision(rightVal)) : precision);\n }\n }\n return interpolated;\n }\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { __extends } from \"tslib\";\nimport * as zrUtil from 'zrender/lib/core/util.js';\nvar TYPE_DELIMITER = '.';\nvar IS_CONTAINER = '___EC__COMPONENT__CONTAINER___';\nvar IS_EXTENDED_CLASS = '___EC__EXTENDED_CLASS___';\n/**\r\n * Notice, parseClassType('') should returns {main: '', sub: ''}\r\n * @public\r\n */\nexport function parseClassType(componentType) {\n var ret = {\n main: '',\n sub: ''\n };\n if (componentType) {\n var typeArr = componentType.split(TYPE_DELIMITER);\n ret.main = typeArr[0] || '';\n ret.sub = typeArr[1] || '';\n }\n return ret;\n}\n/**\r\n * @public\r\n */\nfunction checkClassType(componentType) {\n zrUtil.assert(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(componentType), 'componentType \"' + componentType + '\" illegal');\n}\nexport function isExtendedClass(clz) {\n return !!(clz && clz[IS_EXTENDED_CLASS]);\n}\n/**\r\n * Implements `ExtendableConstructor` for `rootClz`.\r\n *\r\n * @usage\r\n * ```ts\r\n * class Xxx {}\r\n * type XxxConstructor = typeof Xxx & ExtendableConstructor\r\n * enableClassExtend(Xxx as XxxConstructor);\r\n * ```\r\n */\nexport function enableClassExtend(rootClz, mandatoryMethods) {\n rootClz.$constructor = rootClz; // FIXME: not necessary?\n rootClz.extend = function (proto) {\n if (process.env.NODE_ENV !== 'production') {\n zrUtil.each(mandatoryMethods, function (method) {\n if (!proto[method]) {\n console.warn('Method `' + method + '` should be implemented' + (proto.type ? ' in ' + proto.type : '') + '.');\n }\n });\n }\n var superClass = this;\n var ExtendedClass;\n if (isESClass(superClass)) {\n ExtendedClass = /** @class */function (_super) {\n __extends(class_1, _super);\n function class_1() {\n return _super.apply(this, arguments) || this;\n }\n return class_1;\n }(superClass);\n } else {\n // For backward compat, we both support ts class inheritance and this\n // \"extend\" approach.\n // The constructor should keep the same behavior as ts class inheritance:\n // If this constructor/$constructor is not declared, auto invoke the super\n // constructor.\n // If this constructor/$constructor is declared, it is responsible for\n // calling the super constructor.\n ExtendedClass = function () {\n (proto.$constructor || superClass).apply(this, arguments);\n };\n zrUtil.inherits(ExtendedClass, this);\n }\n zrUtil.extend(ExtendedClass.prototype, proto);\n ExtendedClass[IS_EXTENDED_CLASS] = true;\n ExtendedClass.extend = this.extend;\n ExtendedClass.superCall = superCall;\n ExtendedClass.superApply = superApply;\n ExtendedClass.superClass = superClass;\n return ExtendedClass;\n };\n}\nfunction isESClass(fn) {\n return zrUtil.isFunction(fn) && /^class\\s/.test(Function.prototype.toString.call(fn));\n}\n/**\r\n * A work around to both support ts extend and this extend mechanism.\r\n * on sub-class.\r\n * @usage\r\n * ```ts\r\n * class Component { ... }\r\n * classUtil.enableClassExtend(Component);\r\n * classUtil.enableClassManagement(Component, {registerWhenExtend: true});\r\n *\r\n * class Series extends Component { ... }\r\n * // Without calling `markExtend`, `registerWhenExtend` will not work.\r\n * Component.markExtend(Series);\r\n * ```\r\n */\nexport function mountExtend(SubClz, SupperClz) {\n SubClz.extend = SupperClz.extend;\n}\n// A random offset.\nvar classBase = Math.round(Math.random() * 10);\n/**\r\n * Implements `CheckableConstructor` for `target`.\r\n * Can not use instanceof, consider different scope by\r\n * cross domain or es module import in ec extensions.\r\n * Mount a method \"isInstance()\" to Clz.\r\n *\r\n * @usage\r\n * ```ts\r\n * class Xxx {}\r\n * type XxxConstructor = typeof Xxx & CheckableConstructor;\r\n * enableClassCheck(Xxx as XxxConstructor)\r\n * ```\r\n */\nexport function enableClassCheck(target) {\n var classAttr = ['__\\0is_clz', classBase++].join('_');\n target.prototype[classAttr] = true;\n if (process.env.NODE_ENV !== 'production') {\n zrUtil.assert(!target.isInstance, 'The method \"is\" can not be defined.');\n }\n target.isInstance = function (obj) {\n return !!(obj && obj[classAttr]);\n };\n}\n// superCall should have class info, which can not be fetched from 'this'.\n// Consider this case:\n// class A has method f,\n// class B inherits class A, overrides method f, f call superApply('f'),\n// class C inherits class B, does not override method f,\n// then when method of class C is called, dead loop occurred.\nfunction superCall(context, methodName) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return this.superClass.prototype[methodName].apply(context, args);\n}\nfunction superApply(context, methodName, args) {\n return this.superClass.prototype[methodName].apply(context, args);\n}\n/**\r\n * Implements `ClassManager` for `target`\r\n *\r\n * @usage\r\n * ```ts\r\n * class Xxx {}\r\n * type XxxConstructor = typeof Xxx & ClassManager\r\n * enableClassManagement(Xxx as XxxConstructor);\r\n * ```\r\n */\nexport function enableClassManagement(target) {\n /**\r\n * Component model classes\r\n * key: componentType,\r\n * value:\r\n * componentClass, when componentType is 'a'\r\n * or Object., when componentType is 'a.b'\r\n */\n var storage = {};\n target.registerClass = function (clz) {\n // `type` should not be a \"instance member\".\n // If using TS class, should better declared as `static type = 'series.pie'`.\n // otherwise users have to mount `type` on prototype manually.\n // For backward compat and enable instance visit type via `this.type`,\n // we still support fetch `type` from prototype.\n var componentFullType = clz.type || clz.prototype.type;\n if (componentFullType) {\n checkClassType(componentFullType);\n // If only static type declared, we assign it to prototype mandatorily.\n clz.prototype.type = componentFullType;\n var componentTypeInfo = parseClassType(componentFullType);\n if (!componentTypeInfo.sub) {\n if (process.env.NODE_ENV !== 'production') {\n if (storage[componentTypeInfo.main]) {\n console.warn(componentTypeInfo.main + ' exists.');\n }\n }\n storage[componentTypeInfo.main] = clz;\n } else if (componentTypeInfo.sub !== IS_CONTAINER) {\n var container = makeContainer(componentTypeInfo);\n container[componentTypeInfo.sub] = clz;\n }\n }\n return clz;\n };\n target.getClass = function (mainType, subType, throwWhenNotFound) {\n var clz = storage[mainType];\n if (clz && clz[IS_CONTAINER]) {\n clz = subType ? clz[subType] : null;\n }\n if (throwWhenNotFound && !clz) {\n throw new Error(!subType ? mainType + '.' + 'type should be specified.' : 'Component ' + mainType + '.' + (subType || '') + ' is used but not imported.');\n }\n return clz;\n };\n target.getClassesByMainType = function (componentType) {\n var componentTypeInfo = parseClassType(componentType);\n var result = [];\n var obj = storage[componentTypeInfo.main];\n if (obj && obj[IS_CONTAINER]) {\n zrUtil.each(obj, function (o, type) {\n type !== IS_CONTAINER && result.push(o);\n });\n } else {\n result.push(obj);\n }\n return result;\n };\n target.hasClass = function (componentType) {\n // Just consider componentType.main.\n var componentTypeInfo = parseClassType(componentType);\n return !!storage[componentTypeInfo.main];\n };\n /**\r\n * @return Like ['aa', 'bb'], but can not be ['aa.xx']\r\n */\n target.getAllClassMainTypes = function () {\n var types = [];\n zrUtil.each(storage, function (obj, type) {\n types.push(type);\n });\n return types;\n };\n /**\r\n * If a main type is container and has sub types\r\n */\n target.hasSubTypes = function (componentType) {\n var componentTypeInfo = parseClassType(componentType);\n var obj = storage[componentTypeInfo.main];\n return obj && obj[IS_CONTAINER];\n };\n function makeContainer(componentTypeInfo) {\n var container = storage[componentTypeInfo.main];\n if (!container || !container[IS_CONTAINER]) {\n container = storage[componentTypeInfo.main] = {};\n container[IS_CONTAINER] = true;\n }\n return container;\n }\n}\n// /**\n// * @param {string|Array.} properties\n// */\n// export function setReadOnly(obj, properties) {\n// FIXME It seems broken in IE8 simulation of IE11\n// if (!zrUtil.isArray(properties)) {\n// properties = properties != null ? [properties] : [];\n// }\n// zrUtil.each(properties, function (prop) {\n// let value = obj[prop];\n// Object.defineProperty\n// && Object.defineProperty(obj, prop, {\n// value: value, writable: false\n// });\n// zrUtil.isArray(obj[prop])\n// && Object.freeze\n// && Object.freeze(obj[prop]);\n// });\n// }", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\n// TODO Parse shadow style\n// TODO Only shallow path support\nimport * as zrUtil from 'zrender/lib/core/util.js';\nexport default function makeStyleMapper(properties, ignoreParent) {\n // Normalize\n for (var i = 0; i < properties.length; i++) {\n if (!properties[i][1]) {\n properties[i][1] = properties[i][0];\n }\n }\n ignoreParent = ignoreParent || false;\n return function (model, excludes, includes) {\n var style = {};\n for (var i = 0; i < properties.length; i++) {\n var propName = properties[i][1];\n if (excludes && zrUtil.indexOf(excludes, propName) >= 0 || includes && zrUtil.indexOf(includes, propName) < 0) {\n continue;\n }\n var val = model.getShallow(propName, ignoreParent);\n if (val != null) {\n style[properties[i][0]] = val;\n }\n }\n // TODO Text or image?\n return style;\n };\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport makeStyleMapper from './makeStyleMapper.js';\nexport var AREA_STYLE_KEY_MAP = [['fill', 'color'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['opacity'], ['shadowColor']\n// Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n];\nvar getAreaStyle = makeStyleMapper(AREA_STYLE_KEY_MAP);\nvar AreaStyleMixin = /** @class */function () {\n function AreaStyleMixin() {}\n AreaStyleMixin.prototype.getAreaStyle = function (excludes, includes) {\n return getAreaStyle(this, excludes, includes);\n };\n return AreaStyleMixin;\n}();\n;\nexport { AreaStyleMixin };", "import LRU from '../../core/LRU.js';\nimport { platformApi } from '../../core/platform.js';\nvar globalImageCache = new LRU(50);\nexport function findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n }\n else {\n return newImageOrSrc;\n }\n}\nexport function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n }\n else if (typeof newImageOrSrc === 'string') {\n if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\n return image;\n }\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n }\n else {\n image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);\n image.__zrImageSrc = newImageOrSrc;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n }\n return image;\n }\n else {\n return newImageOrSrc;\n }\n}\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n cachedImgObj.pending.length = 0;\n}\nexport function isImageReady(image) {\n return image && image.width && image.height;\n}\n", "import * as imageHelper from '../helper/image.js';\nimport { extend, retrieve2, retrieve3, reduce } from '../../core/util.js';\nimport { getLineHeight, getWidth, parsePercent } from '../../contain/text.js';\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nexport function truncateText(text, containerWidth, font, ellipsis, options) {\n var out = {};\n truncateText2(out, text, containerWidth, font, ellipsis, options);\n return out.text;\n}\nfunction truncateText2(out, text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n out.text = '';\n out.isTruncated = false;\n return;\n }\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\n var isTruncated = false;\n var truncateOut = {};\n for (var i = 0, len = textLines.length; i < len; i++) {\n truncateSingleLine(truncateOut, textLines[i], options);\n textLines[i] = truncateOut.textLine;\n isTruncated = isTruncated || truncateOut.isTruncated;\n }\n out.text = textLines.join('\\n');\n out.isTruncated = isTruncated;\n}\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = options || {};\n var preparedOpts = extend({}, options);\n preparedOpts.font = font;\n ellipsis = retrieve2(ellipsis, '...');\n preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\n preparedOpts.cnCharWidth = getWidth('\u56FD', font);\n var ascCharWidth = preparedOpts.ascCharWidth = getWidth('a', font);\n preparedOpts.placeholder = retrieve2(options.placeholder, '');\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n var ellipsisWidth = getWidth(ellipsis, font);\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n contentWidth = containerWidth - ellipsisWidth;\n preparedOpts.ellipsis = ellipsis;\n preparedOpts.ellipsisWidth = ellipsisWidth;\n preparedOpts.contentWidth = contentWidth;\n preparedOpts.containerWidth = containerWidth;\n return preparedOpts;\n}\nfunction truncateSingleLine(out, textLine, options) {\n var containerWidth = options.containerWidth;\n var font = options.font;\n var contentWidth = options.contentWidth;\n if (!containerWidth) {\n out.textLine = '';\n out.isTruncated = false;\n return;\n }\n var lineWidth = getWidth(textLine, font);\n if (lineWidth <= containerWidth) {\n out.textLine = textLine;\n out.isTruncated = false;\n return;\n }\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n var subLength = j === 0\n ? estimateLength(textLine, contentWidth, options.ascCharWidth, options.cnCharWidth)\n : lineWidth > 0\n ? Math.floor(textLine.length * contentWidth / lineWidth)\n : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = getWidth(textLine, font);\n }\n if (textLine === '') {\n textLine = options.placeholder;\n }\n out.textLine = textLine;\n out.isTruncated = true;\n}\nfunction estimateLength(text, contentWidth, ascCharWidth, cnCharWidth) {\n var width = 0;\n var i = 0;\n for (var len = text.length; i < len && width < contentWidth; i++) {\n var charCode = text.charCodeAt(i);\n width += (0 <= charCode && charCode <= 127) ? ascCharWidth : cnCharWidth;\n }\n return i;\n}\nexport function parsePlainText(text, style) {\n text != null && (text += '');\n var overflow = style.overflow;\n var padding = style.padding;\n var font = style.font;\n var truncate = overflow === 'truncate';\n var calculatedLineHeight = getLineHeight(font);\n var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\n var bgColorDrawn = !!(style.backgroundColor);\n var truncateLineOverflow = style.lineOverflow === 'truncate';\n var isTruncated = false;\n var width = style.width;\n var lines;\n if (width != null && (overflow === 'break' || overflow === 'breakAll')) {\n lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\n }\n else {\n lines = text ? text.split('\\n') : [];\n }\n var contentHeight = lines.length * lineHeight;\n var height = retrieve2(style.height, contentHeight);\n if (contentHeight > height && truncateLineOverflow) {\n var lineCount = Math.floor(height / lineHeight);\n isTruncated = isTruncated || (lines.length > lineCount);\n lines = lines.slice(0, lineCount);\n }\n if (text && truncate && width != null) {\n var options = prepareTruncateOptions(width, font, style.ellipsis, {\n minChar: style.truncateMinChar,\n placeholder: style.placeholder\n });\n var singleOut = {};\n for (var i = 0; i < lines.length; i++) {\n truncateSingleLine(singleOut, lines[i], options);\n lines[i] = singleOut.textLine;\n isTruncated = isTruncated || singleOut.isTruncated;\n }\n }\n var outerHeight = height;\n var contentWidth = 0;\n for (var i = 0; i < lines.length; i++) {\n contentWidth = Math.max(getWidth(lines[i], font), contentWidth);\n }\n if (width == null) {\n width = contentWidth;\n }\n var outerWidth = contentWidth;\n if (padding) {\n outerHeight += padding[0] + padding[2];\n outerWidth += padding[1] + padding[3];\n width += padding[1] + padding[3];\n }\n if (bgColorDrawn) {\n outerWidth = width;\n }\n return {\n lines: lines,\n height: height,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n calculatedLineHeight: calculatedLineHeight,\n contentWidth: contentWidth,\n contentHeight: contentHeight,\n width: width,\n isTruncated: isTruncated\n };\n}\nvar RichTextToken = (function () {\n function RichTextToken() {\n }\n return RichTextToken;\n}());\nvar RichTextLine = (function () {\n function RichTextLine(tokens) {\n this.tokens = [];\n if (tokens) {\n this.tokens = tokens;\n }\n }\n return RichTextLine;\n}());\nvar RichTextContentBlock = (function () {\n function RichTextContentBlock() {\n this.width = 0;\n this.height = 0;\n this.contentWidth = 0;\n this.contentHeight = 0;\n this.outerWidth = 0;\n this.outerHeight = 0;\n this.lines = [];\n this.isTruncated = false;\n }\n return RichTextContentBlock;\n}());\nexport { RichTextContentBlock };\nexport function parseRichText(text, style) {\n var contentBlock = new RichTextContentBlock();\n text != null && (text += '');\n if (!text) {\n return contentBlock;\n }\n var topWidth = style.width;\n var topHeight = style.height;\n var overflow = style.overflow;\n var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\n ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\n : null;\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\n }\n pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\n }\n var pendingList = [];\n var calculatedHeight = 0;\n var calculatedWidth = 0;\n var stlPadding = style.padding;\n var truncate = overflow === 'truncate';\n var truncateLine = style.lineOverflow === 'truncate';\n var tmpTruncateOut = {};\n function finishLine(line, lineWidth, lineHeight) {\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n calculatedHeight += lineHeight;\n calculatedWidth = Math.max(calculatedWidth, lineWidth);\n }\n outer: for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {};\n var textPadding = token.textPadding = tokenStyle.padding;\n var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\n var font = token.font = tokenStyle.font || style.font;\n token.contentHeight = getLineHeight(font);\n var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\n token.innerHeight = tokenHeight;\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\n token.align = tokenStyle && tokenStyle.align || style.align;\n token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\n if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\n var originalLength = contentBlock.lines.length;\n if (j > 0) {\n line.tokens = line.tokens.slice(0, j);\n finishLine(line, lineWidth, lineHeight);\n contentBlock.lines = contentBlock.lines.slice(0, i + 1);\n }\n else {\n contentBlock.lines = contentBlock.lines.slice(0, i);\n }\n contentBlock.isTruncated = contentBlock.isTruncated || (contentBlock.lines.length < originalLength);\n break outer;\n }\n var styleTokenWidth = tokenStyle.width;\n var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\n if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\n token.percentWidth = styleTokenWidth;\n pendingList.push(token);\n token.contentWidth = getWidth(token.text, font);\n }\n else {\n if (tokenWidthNotSpecified) {\n var textBackgroundColor = tokenStyle.backgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image;\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n if (imageHelper.isImageReady(bgImg)) {\n token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n var remainTruncWidth = truncate && topWidth != null\n ? topWidth - lineWidth : null;\n if (remainTruncWidth != null && remainTruncWidth < token.width) {\n if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\n token.text = '';\n token.width = token.contentWidth = 0;\n }\n else {\n truncateText2(tmpTruncateOut, token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\n token.text = tmpTruncateOut.text;\n contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated;\n token.width = token.contentWidth = getWidth(token.text, font);\n }\n }\n else {\n token.contentWidth = getWidth(token.text, font);\n }\n }\n token.width += paddingH;\n lineWidth += token.width;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n finishLine(line, lineWidth, lineHeight);\n }\n contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\n contentBlock.contentHeight = calculatedHeight;\n contentBlock.contentWidth = calculatedWidth;\n if (stlPadding) {\n contentBlock.outerWidth += stlPadding[1] + stlPadding[3];\n contentBlock.outerHeight += stlPadding[0] + stlPadding[2];\n }\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth;\n token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\n }\n return contentBlock;\n}\nfunction pushTokens(block, str, style, wrapInfo, styleName) {\n var isEmptyStr = str === '';\n var tokenStyle = styleName && style.rich[styleName] || {};\n var lines = block.lines;\n var font = tokenStyle.font || style.font;\n var newLine = false;\n var strLines;\n var linesWidths;\n if (wrapInfo) {\n var tokenPadding = tokenStyle.padding;\n var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\n if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\n var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\n if (lines.length > 0) {\n if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\n strLines = str.split('\\n');\n newLine = true;\n }\n }\n wrapInfo.accumWidth = outerWidth_1;\n }\n else {\n var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\n wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\n linesWidths = res.linesWidths;\n strLines = res.lines;\n }\n }\n else {\n strLines = str.split('\\n');\n }\n for (var i = 0; i < strLines.length; i++) {\n var text = strLines[i];\n var token = new RichTextToken();\n token.styleName = styleName;\n token.text = text;\n token.isLineHolder = !text && !isEmptyStr;\n if (typeof tokenStyle.width === 'number') {\n token.width = tokenStyle.width;\n }\n else {\n token.width = linesWidths\n ? linesWidths[i]\n : getWidth(text, font);\n }\n if (!i && !newLine) {\n var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\n var tokensLen = tokens.length;\n (tokensLen === 1 && tokens[0].isLineHolder)\n ? (tokens[0] = token)\n : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\n }\n else {\n lines.push(new RichTextLine([token]));\n }\n }\n}\nfunction isAlphabeticLetter(ch) {\n var code = ch.charCodeAt(0);\n return code >= 0x20 && code <= 0x24F\n || code >= 0x370 && code <= 0x10FF\n || code >= 0x1200 && code <= 0x13FF\n || code >= 0x1E00 && code <= 0x206F;\n}\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\n obj[ch] = true;\n return obj;\n}, {});\nfunction isWordBreakChar(ch) {\n if (isAlphabeticLetter(ch)) {\n if (breakCharMap[ch]) {\n return true;\n }\n return false;\n }\n return true;\n}\nfunction wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\n var lines = [];\n var linesWidths = [];\n var line = '';\n var currentWord = '';\n var currentWordWidth = 0;\n var accumWidth = 0;\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch === '\\n') {\n if (currentWord) {\n line += currentWord;\n accumWidth += currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = '';\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = 0;\n continue;\n }\n var chWidth = getWidth(ch, font);\n var inWord = isBreakAll ? false : !isWordBreakChar(ch);\n if (!lines.length\n ? lastAccumWidth + accumWidth + chWidth > lineWidth\n : accumWidth + chWidth > lineWidth) {\n if (!accumWidth) {\n if (inWord) {\n lines.push(currentWord);\n linesWidths.push(currentWordWidth);\n currentWord = ch;\n currentWordWidth = chWidth;\n }\n else {\n lines.push(ch);\n linesWidths.push(chWidth);\n }\n }\n else if (line || currentWord) {\n if (inWord) {\n if (!line) {\n line = currentWord;\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth - currentWordWidth);\n currentWord += ch;\n currentWordWidth += chWidth;\n line = '';\n accumWidth = currentWordWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = ch;\n accumWidth = chWidth;\n }\n }\n continue;\n }\n accumWidth += chWidth;\n if (inWord) {\n currentWord += ch;\n currentWordWidth += chWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n line += ch;\n }\n }\n if (!lines.length && !line) {\n line = text;\n currentWord = '';\n currentWordWidth = 0;\n }\n if (currentWord) {\n line += currentWord;\n }\n if (line) {\n lines.push(line);\n linesWidths.push(accumWidth);\n }\n if (lines.length === 1) {\n accumWidth += lastAccumWidth;\n }\n return {\n accumWidth: accumWidth,\n lines: lines,\n linesWidths: linesWidths\n };\n}\n", "import { __extends } from \"tslib\";\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { keys, extend, createObject } from '../core/util.js';\nimport { REDRAW_BIT, STYLE_CHANGED_BIT } from './constants.js';\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\nexport var DEFAULT_COMMON_STYLE = {\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: '#000',\n opacity: 1,\n blend: 'source-over'\n};\nexport var DEFAULT_COMMON_ANIMATION_PROPS = {\n style: {\n shadowBlur: true,\n shadowOffsetX: true,\n shadowOffsetY: true,\n shadowColor: true,\n opacity: true\n }\n};\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\nvar PRIMARY_STATES_KEYS = ['z', 'z2', 'invisible'];\nvar PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ['invisible'];\nvar Displayable = (function (_super) {\n __extends(Displayable, _super);\n function Displayable(props) {\n return _super.call(this, props) || this;\n }\n Displayable.prototype._init = function (props) {\n var keysArr = keys(props);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n if (key === 'style') {\n this.useStyle(props[key]);\n }\n else {\n _super.prototype.attrKV.call(this, key, props[key]);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Displayable.prototype.beforeBrush = function () { };\n Displayable.prototype.afterBrush = function () { };\n Displayable.prototype.innerBeforeBrush = function () { };\n Displayable.prototype.innerAfterBrush = function () { };\n Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\n var m = this.transform;\n if (this.ignore\n || this.invisible\n || this.style.opacity === 0\n || (this.culling\n && isDisplayableCulled(this, viewWidth, viewHeight))\n || (m && !m[0] && !m[3])) {\n return false;\n }\n if (considerClipPath && this.__clipPaths) {\n for (var i = 0; i < this.__clipPaths.length; ++i) {\n if (this.__clipPaths[i].isZeroArea()) {\n return false;\n }\n }\n }\n if (considerAncestors && this.parent) {\n var parent_1 = this.parent;\n while (parent_1) {\n if (parent_1.ignore) {\n return false;\n }\n parent_1 = parent_1.parent;\n }\n }\n return true;\n };\n Displayable.prototype.contain = function (x, y) {\n return this.rectContain(x, y);\n };\n Displayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n Displayable.prototype.rectContain = function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n };\n Displayable.prototype.getPaintRect = function () {\n var rect = this._paintRect;\n if (!this._paintRect || this.__dirty) {\n var transform = this.transform;\n var elRect = this.getBoundingRect();\n var style = this.style;\n var shadowSize = style.shadowBlur || 0;\n var shadowOffsetX = style.shadowOffsetX || 0;\n var shadowOffsetY = style.shadowOffsetY || 0;\n rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\n if (transform) {\n BoundingRect.applyTransform(rect, elRect, transform);\n }\n else {\n rect.copy(elRect);\n }\n if (shadowSize || shadowOffsetX || shadowOffsetY) {\n rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\n rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\n rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\n rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\n }\n var tolerance = this.dirtyRectTolerance;\n if (!rect.isZero()) {\n rect.x = Math.floor(rect.x - tolerance);\n rect.y = Math.floor(rect.y - tolerance);\n rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\n rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\n }\n }\n return rect;\n };\n Displayable.prototype.setPrevPaintRect = function (paintRect) {\n if (paintRect) {\n this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\n this._prevPaintRect.copy(paintRect);\n }\n else {\n this._prevPaintRect = null;\n }\n };\n Displayable.prototype.getPrevPaintRect = function () {\n return this._prevPaintRect;\n };\n Displayable.prototype.animateStyle = function (loop) {\n return this.animate('style', loop);\n };\n Displayable.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else {\n this.markRedraw();\n }\n };\n Displayable.prototype.attrKV = function (key, value) {\n if (key !== 'style') {\n _super.prototype.attrKV.call(this, key, value);\n }\n else {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n this.setStyle(value);\n }\n }\n };\n Displayable.prototype.setStyle = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.style[keyOrObj] = value;\n }\n else {\n extend(this.style, keyOrObj);\n }\n this.dirtyStyle();\n return this;\n };\n Displayable.prototype.dirtyStyle = function (notRedraw) {\n if (!notRedraw) {\n this.markRedraw();\n }\n this.__dirty |= STYLE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n };\n Displayable.prototype.dirty = function () {\n this.dirtyStyle();\n };\n Displayable.prototype.styleChanged = function () {\n return !!(this.__dirty & STYLE_CHANGED_BIT);\n };\n Displayable.prototype.styleUpdated = function () {\n this.__dirty &= ~STYLE_CHANGED_BIT;\n };\n Displayable.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_COMMON_STYLE, obj);\n };\n Displayable.prototype.useStyle = function (obj) {\n if (!obj[STYLE_MAGIC_KEY]) {\n obj = this.createStyle(obj);\n }\n if (this.__inHover) {\n this.__hoverStyle = obj;\n }\n else {\n this.style = obj;\n }\n this.dirtyStyle();\n };\n Displayable.prototype.isStyleObject = function (obj) {\n return obj[STYLE_MAGIC_KEY];\n };\n Displayable.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.style && !normalState.style) {\n normalState.style = this._mergeStyle(this.createStyle(), this.style);\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetStyle;\n if (state && state.style) {\n if (transition) {\n if (keepCurrentStates) {\n targetStyle = state.style;\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else if (needsRestoreToNormal) {\n targetStyle = normalState.style;\n }\n if (targetStyle) {\n if (transition) {\n var sourceStyle = this.style;\n this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\n if (needsRestoreToNormal) {\n var changedKeys = keys(sourceStyle);\n for (var i = 0; i < changedKeys.length; i++) {\n var key = changedKeys[i];\n if (key in targetStyle) {\n targetStyle[key] = targetStyle[key];\n this.style[key] = sourceStyle[key];\n }\n }\n }\n var targetKeys = keys(targetStyle);\n for (var i = 0; i < targetKeys.length; i++) {\n var key = targetKeys[i];\n this.style[key] = this.style[key];\n }\n this._transitionState(stateName, {\n style: targetStyle\n }, animationCfg, this.getAnimationStyleProps());\n }\n else {\n this.useStyle(targetStyle);\n }\n }\n var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS;\n for (var i = 0; i < statesKeys.length; i++) {\n var key = statesKeys[i];\n if (state && state[key] != null) {\n this[key] = state[key];\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n this[key] = normalState[key];\n }\n }\n }\n };\n Displayable.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedStyle;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.style) {\n mergedStyle = mergedStyle || {};\n this._mergeStyle(mergedStyle, state.style);\n }\n }\n if (mergedStyle) {\n mergedState.style = mergedStyle;\n }\n return mergedState;\n };\n Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n extend(targetStyle, sourceStyle);\n return targetStyle;\n };\n Displayable.prototype.getAnimationStyleProps = function () {\n return DEFAULT_COMMON_ANIMATION_PROPS;\n };\n Displayable.initDefaultProps = (function () {\n var dispProto = Displayable.prototype;\n dispProto.type = 'displayable';\n dispProto.invisible = false;\n dispProto.z = 0;\n dispProto.z2 = 0;\n dispProto.zlevel = 0;\n dispProto.culling = false;\n dispProto.cursor = 'pointer';\n dispProto.rectHover = false;\n dispProto.incremental = false;\n dispProto._rect = null;\n dispProto.dirtyRectTolerance = 0;\n dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT;\n })();\n return Displayable;\n}(Element));\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\nexport default Displayable;\n", "import * as vec2 from './vector.js';\nimport * as curve from './curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\nexport function fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n for (var i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\nexport function fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\nvar xDim = [];\nvar yDim = [];\nexport function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n for (var i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n for (var i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\nexport function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt;\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\nexport function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end);\n startAngle = startAngle % (PI2);\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n endAngle = endAngle % (PI2);\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n }\n else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n }\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n", "import * as vec2 from './vector.js';\nimport BoundingRect from './BoundingRect.js';\nimport { devicePixelRatio as dpr } from '../config.js';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox.js';\nimport { cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve.js';\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\nfunction modPI2(radian) {\n var n = Math.round(radian / PI * 1e8) / 1e8;\n return (n % 2) * PI;\n}\nexport function normalizeArcAngles(angles, anticlockwise) {\n var newStartAngle = modPI2(angles[0]);\n if (newStartAngle < 0) {\n newStartAngle += PI2;\n }\n var delta = newStartAngle - angles[0];\n var newEndAngle = angles[1];\n newEndAngle += delta;\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n newEndAngle = newStartAngle + PI2;\n }\n else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n newEndAngle = newStartAngle - PI2;\n }\n else if (!anticlockwise && newStartAngle > newEndAngle) {\n newEndAngle = newStartAngle + (PI2 - modPI2(newStartAngle - newEndAngle));\n }\n else if (anticlockwise && newStartAngle < newEndAngle) {\n newEndAngle = newStartAngle - (PI2 - modPI2(newEndAngle - newStartAngle));\n }\n angles[0] = newStartAngle;\n angles[1] = newEndAngle;\n}\nvar PathProxy = (function () {\n function PathProxy(notSaveData) {\n this.dpr = 1;\n this._xi = 0;\n this._yi = 0;\n this._x0 = 0;\n this._y0 = 0;\n this._len = 0;\n if (notSaveData) {\n this._saveData = false;\n }\n if (this._saveData) {\n this.data = [];\n }\n }\n PathProxy.prototype.increaseVersion = function () {\n this._version++;\n };\n PathProxy.prototype.getVersion = function () {\n return this._version;\n };\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n if (segmentIgnoreThreshold > 0) {\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n }\n };\n PathProxy.prototype.setDPR = function (dpr) {\n this.dpr = dpr;\n };\n PathProxy.prototype.setContext = function (ctx) {\n this._ctx = ctx;\n };\n PathProxy.prototype.getContext = function () {\n return this._ctx;\n };\n PathProxy.prototype.beginPath = function () {\n this._ctx && this._ctx.beginPath();\n this.reset();\n return this;\n };\n PathProxy.prototype.reset = function () {\n if (this._saveData) {\n this._len = 0;\n }\n if (this._pathSegLen) {\n this._pathSegLen = null;\n this._pathLen = 0;\n }\n this._version++;\n };\n PathProxy.prototype.moveTo = function (x, y) {\n this._drawPendingPt();\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y);\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n };\n PathProxy.prototype.lineTo = function (x, y) {\n var dx = mathAbs(x - this._xi);\n var dy = mathAbs(y - this._yi);\n var exceedUnit = dx > this._ux || dy > this._uy;\n this.addData(CMD.L, x, y);\n if (this._ctx && exceedUnit) {\n this._ctx.lineTo(x, y);\n }\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n this._pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > this._pendingPtDist) {\n this._pendingPtX = x;\n this._pendingPtY = y;\n this._pendingPtDist = d2;\n }\n }\n return this;\n };\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n this._drawPendingPt();\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n if (this._ctx) {\n this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n this._xi = x3;\n this._yi = y3;\n return this;\n };\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n this._drawPendingPt();\n this.addData(CMD.Q, x1, y1, x2, y2);\n if (this._ctx) {\n this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n this._xi = x2;\n this._yi = y2;\n return this;\n };\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this._drawPendingPt();\n tmpAngles[0] = startAngle;\n tmpAngles[1] = endAngle;\n normalizeArcAngles(tmpAngles, anticlockwise);\n startAngle = tmpAngles[0];\n endAngle = tmpAngles[1];\n var delta = endAngle - startAngle;\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n };\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n this._drawPendingPt();\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n return this;\n };\n PathProxy.prototype.rect = function (x, y, w, h) {\n this._drawPendingPt();\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n };\n PathProxy.prototype.closePath = function () {\n this._drawPendingPt();\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n if (ctx) {\n ctx.closePath();\n }\n this._xi = x0;\n this._yi = y0;\n return this;\n };\n PathProxy.prototype.fill = function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n };\n PathProxy.prototype.stroke = function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n };\n PathProxy.prototype.len = function () {\n return this._len;\n };\n PathProxy.prototype.setData = function (data) {\n var len = data.length;\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n this._len = len;\n };\n PathProxy.prototype.appendPath = function (path) {\n if (!(path instanceof Array)) {\n path = [path];\n }\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n if (hasTypedArray && (this.data instanceof Float32Array)) {\n this.data = new Float32Array(offset + appendSize);\n }\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n this._len = offset;\n };\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n if (!this._saveData) {\n return;\n }\n var data = this.data;\n if (this._len + arguments.length > data.length) {\n this._expandData();\n data = this.data;\n }\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n };\n PathProxy.prototype._drawPendingPt = function () {\n if (this._pendingPtDist > 0) {\n this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);\n this._pendingPtDist = 0;\n }\n };\n PathProxy.prototype._expandData = function () {\n if (!(this.data instanceof Array)) {\n var newData = [];\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n this.data = newData;\n }\n };\n PathProxy.prototype.toStatic = function () {\n if (!this._saveData) {\n return;\n }\n this._drawPendingPt();\n var data = this.data;\n if (data instanceof Array) {\n data.length = this._len;\n if (hasTypedArray && this._len > 11) {\n this.data = new Float32Array(data);\n }\n }\n };\n PathProxy.prototype.getBoundingRect = function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var i;\n for (i = 0; i < this._len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n case CMD.L:\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n }\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n }\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n };\n PathProxy.prototype._calculateLength = function () {\n var data = this.data;\n var len = this._len;\n var ux = this._ux;\n var uy = this._uy;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n if (!this._pathSegLen) {\n this._pathSegLen = [];\n }\n var pathSegLen = this._pathSegLen;\n var pathTotalLen = 0;\n var segCount = 0;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var l = -1;\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n break;\n case CMD.L: {\n var x2 = data[i++];\n var y2 = data[i++];\n var dx = x2 - xi;\n var dy = y2 - yi;\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x2;\n yi = y2;\n }\n break;\n }\n case CMD.C: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3 = data[i++];\n var y3 = data[i++];\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var delta = data[i++];\n var endAngle = delta + startAngle;\n i += 1;\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R: {\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n l = width * 2 + height * 2;\n break;\n }\n case CMD.Z: {\n var dx = x0 - xi;\n var dy = y0 - yi;\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (l >= 0) {\n pathSegLen[segCount++] = l;\n pathTotalLen += l;\n }\n }\n this._pathLen = pathTotalLen;\n return pathTotalLen;\n };\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\n var d = this.data;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var drawPart = percent < 1;\n var pathSegLen;\n var pathTotalLen;\n var accumLength = 0;\n var segCount = 0;\n var displayedLength;\n var pendingPtDist = 0;\n var pendingPtX;\n var pendingPtY;\n if (drawPart) {\n if (!this._pathSegLen) {\n this._calculateLength();\n }\n pathSegLen = this._pathSegLen;\n pathTotalLen = this._pathLen;\n displayedLength = percent * pathTotalLen;\n if (!displayedLength) {\n return;\n }\n }\n lo: for (var i = 0; i < len;) {\n var cmd = d[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n if (cmd !== CMD.L && pendingPtDist > 0) {\n ctx.lineTo(pendingPtX, pendingPtY);\n pendingPtDist = 0;\n }\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n case CMD.L: {\n x = d[i++];\n y = d[i++];\n var dx = mathAbs(x - xi);\n var dy = mathAbs(y - yi);\n if (dx > ux || dy > uy) {\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > pendingPtDist) {\n pendingPtX = x;\n pendingPtY = y;\n pendingPtDist = d2;\n }\n }\n break;\n }\n case CMD.C: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n var x3 = d[i++];\n var y3 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n break lo;\n }\n accumLength += l;\n }\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n break lo;\n }\n accumLength += l;\n }\n ctx.quadraticCurveTo(x1, y1, x2, y2);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var startAngle = d[i++];\n var delta = d[i++];\n var psi = d[i++];\n var anticlockwise = !d[i++];\n var r = (rx > ry) ? rx : ry;\n var isEllipse = mathAbs(rx - ry) > 1e-3;\n var endAngle = startAngle + delta;\n var breakBuild = false;\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n breakBuild = true;\n }\n accumLength += l;\n }\n if (isEllipse && ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n }\n else {\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n }\n if (breakBuild) {\n break lo;\n }\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n x = d[i++];\n y = d[i++];\n var width = d[i++];\n var height = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var d_1 = displayedLength - accumLength;\n ctx.moveTo(x, y);\n ctx.lineTo(x + mathMin(d_1, width), y);\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x + width, y + mathMin(d_1, height));\n }\n d_1 -= height;\n if (d_1 > 0) {\n ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n }\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x, y + mathMax(height - d_1, 0));\n }\n break lo;\n }\n accumLength += l;\n }\n ctx.rect(x, y, width, height);\n break;\n case CMD.Z:\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n };\n PathProxy.prototype.clone = function () {\n var newProxy = new PathProxy();\n var data = this.data;\n newProxy.data = data.slice ? data.slice()\n : Array.prototype.slice.call(data);\n newProxy._len = this._len;\n return newProxy;\n };\n PathProxy.CMD = CMD;\n PathProxy.initDefaultProps = (function () {\n var proto = PathProxy.prototype;\n proto._saveData = true;\n proto._ux = 0;\n proto._uy = 0;\n proto._pendingPtDist = 0;\n proto._version = 0;\n })();\n return PathProxy;\n}());\nexport default PathProxy;\n", "export function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n var _a = 0;\n var _b = x0;\n if ((y > y0 + _l && y > y1 + _l)\n || (y < y0 - _l && y < y1 - _l)\n || (x > x0 + _l && x > x1 + _l)\n || (x < x0 - _l && x < x1 - _l)) {\n return false;\n }\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n }\n else {\n return Math.abs(x - x0) <= _l / 2;\n }\n var tmp = _a * x - y + _b;\n var _s = tmp * tmp / (_a * _a + 1);\n return _s <= _l / 2 * _l / 2;\n}\n", "import * as curve from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\n return false;\n }\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n", "import { quadraticProjectPoint } from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\n return false;\n }\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n", "var PI2 = Math.PI * 2;\nexport function normalizeRadian(angle) {\n angle %= PI2;\n if (angle < 0) {\n angle += PI2;\n }\n return angle;\n}\n", "import { normalizeRadian } from './util.js';\nvar PI2 = Math.PI * 2;\nexport function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n if ((d - _l > r) || (d + _l < r)) {\n return false;\n }\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n return true;\n }\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n }\n else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n var angle = Math.atan2(y, x);\n if (angle < 0) {\n angle += PI2;\n }\n return (angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle);\n}\n", "export default function windingLine(x0, y0, x1, y1, x, y) {\n if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\n return 0;\n }\n if (y1 === y0) {\n return 0;\n }\n var t = (y - y0) / (y1 - y0);\n var dir = y1 < y0 ? 1 : -1;\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n var x_ = t * (x1 - x0) + x0;\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n", "import PathProxy from '../core/PathProxy.js';\nimport * as line from './line.js';\nimport * as cubic from './cubic.js';\nimport * as quadratic from './quadratic.js';\nimport * as arc from './arc.js';\nimport * as curve from '../core/curve.js';\nimport windingLine from './windingLine.js';\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n if ((y > y0 && y > y1 && y > y2 && y > y3)\n || (y < y0 && y < y1 && y < y2 && y < y3)) {\n return 0;\n }\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var w = 0;\n var nExtrema = -1;\n var y0_ = void 0;\n var y1_ = void 0;\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i];\n var unit = (t === 0 || t === 1) ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n if (x_ < x) {\n continue;\n }\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n if (nExtrema === 2) {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n }\n else {\n w += y3 < y1_ ? unit : -unit;\n }\n }\n else {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n return w;\n }\n}\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n if ((y > y0 && y > y1 && y > y2)\n || (y < y0 && y < y1 && y < y2)) {\n return 0;\n }\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n for (var i = 0; i < nRoots; i++) {\n var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n if (x_ < x) {\n continue;\n }\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n }\n else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n return w;\n }\n else {\n var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n if (x_ < x) {\n return 0;\n }\n return y2 < y0 ? unit : -unit;\n }\n }\n}\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n if (y > r || y < -r) {\n return 0;\n }\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var dTheta = Math.abs(startAngle - endAngle);\n if (dTheta < 1e-4) {\n return 0;\n }\n if (dTheta >= PI2 - 1e-4) {\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n }\n else {\n return 0;\n }\n }\n if (startAngle > endAngle) {\n var tmp_1 = startAngle;\n startAngle = endAngle;\n endAngle = tmp_1;\n }\n if (startAngle < 0) {\n startAngle += PI2;\n endAngle += PI2;\n }\n var w = 0;\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n if (angle < 0) {\n angle = PI2 + angle;\n }\n if ((angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle)) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n w += dir;\n }\n }\n }\n return w;\n}\nfunction containPath(path, lineWidth, isStroke, x, y) {\n var data = path.data;\n var len = path.len();\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (cmd === CMD.M && i > 1) {\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n }\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy;\n if (!isFirst) {\n w += windingLine(xi, yi, x1, y1, x, y);\n }\n else {\n x0 = x1;\n y0 = y1;\n }\n var _x = (x - cx) * ry / rx + cx;\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n }\n else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n x1 = x0 + width;\n y1 = y0 + height;\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y)\n || line.containStroke(x1, y0, x1, y1, lineWidth, x, y)\n || line.containStroke(x1, y1, x0, y1, lineWidth, x, y)\n || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n break;\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n return w !== 0;\n}\nexport function contain(pathProxy, x, y) {\n return containPath(pathProxy, 0, false, x, y);\n}\nexport function containStroke(pathProxy, lineWidth, x, y) {\n return containPath(pathProxy, lineWidth, true, x, y);\n}\n", "import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport * as pathContain from '../contain/path.js';\nimport { defaults, keys, extend, clone, isString, createObject } from '../core/util.js';\nimport { lum } from '../tool/color.js';\nimport { DARK_LABEL_COLOR, LIGHT_LABEL_COLOR, DARK_MODE_THRESHOLD, LIGHTER_LABEL_COLOR } from '../config.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT, STYLE_CHANGED_BIT } from './constants.js';\nimport { TRANSFORMABLE_PROPS } from '../core/Transformable.js';\nexport var DEFAULT_PATH_STYLE = defaults({\n fill: '#000',\n stroke: null,\n strokePercent: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n miterLimit: 10,\n strokeNoScale: false,\n strokeFirst: false\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_PATH_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n strokePercent: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineDashOffset: true,\n lineWidth: true,\n miterLimit: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar pathCopyParams = TRANSFORMABLE_PROPS.concat(['invisible',\n 'culling', 'z', 'z2', 'zlevel', 'parent'\n]);\nvar Path = (function (_super) {\n __extends(Path, _super);\n function Path(opts) {\n return _super.call(this, opts) || this;\n }\n Path.prototype.update = function () {\n var _this = this;\n _super.prototype.update.call(this);\n var style = this.style;\n if (style.decal) {\n var decalEl = this._decalEl = this._decalEl || new Path();\n if (decalEl.buildPath === Path.prototype.buildPath) {\n decalEl.buildPath = function (ctx) {\n _this.buildPath(ctx, _this.shape);\n };\n }\n decalEl.silent = true;\n var decalElStyle = decalEl.style;\n for (var key in style) {\n if (decalElStyle[key] !== style[key]) {\n decalElStyle[key] = style[key];\n }\n }\n decalElStyle.fill = style.fill ? style.decal : null;\n decalElStyle.decal = null;\n decalElStyle.shadowColor = null;\n style.strokeFirst && (decalElStyle.stroke = null);\n for (var i = 0; i < pathCopyParams.length; ++i) {\n decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\n }\n decalEl.__dirty |= REDRAW_BIT;\n }\n else if (this._decalEl) {\n this._decalEl = null;\n }\n };\n Path.prototype.getDecalElement = function () {\n return this._decalEl;\n };\n Path.prototype._init = function (props) {\n var keysArr = keys(props);\n this.shape = this.getDefaultShape();\n var defaultStyle = this.getDefaultStyle();\n if (defaultStyle) {\n this.useStyle(defaultStyle);\n }\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n var value = props[key];\n if (key === 'style') {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n extend(this.style, value);\n }\n }\n else if (key === 'shape') {\n extend(this.shape, value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Path.prototype.getDefaultStyle = function () {\n return null;\n };\n Path.prototype.getDefaultShape = function () {\n return {};\n };\n Path.prototype.canBeInsideText = function () {\n return this.hasFill();\n };\n Path.prototype.getInsideTextFill = function () {\n var pathFill = this.style.fill;\n if (pathFill !== 'none') {\n if (isString(pathFill)) {\n var fillLum = lum(pathFill, 0);\n if (fillLum > 0.5) {\n return DARK_LABEL_COLOR;\n }\n else if (fillLum > 0.2) {\n return LIGHTER_LABEL_COLOR;\n }\n return LIGHT_LABEL_COLOR;\n }\n else if (pathFill) {\n return LIGHT_LABEL_COLOR;\n }\n }\n return DARK_LABEL_COLOR;\n };\n Path.prototype.getInsideTextStroke = function (textFill) {\n var pathFill = this.style.fill;\n if (isString(pathFill)) {\n var zr = this.__zr;\n var isDarkMode = !!(zr && zr.isDarkMode());\n var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\n if (isDarkMode === isDarkLabel) {\n return pathFill;\n }\n }\n };\n Path.prototype.buildPath = function (ctx, shapeCfg, inBatch) { };\n Path.prototype.pathUpdated = function () {\n this.__dirty &= ~SHAPE_CHANGED_BIT;\n };\n Path.prototype.getUpdatedPathProxy = function (inBatch) {\n !this.path && this.createPathProxy();\n this.path.beginPath();\n this.buildPath(this.path, this.shape, inBatch);\n return this.path;\n };\n Path.prototype.createPathProxy = function () {\n this.path = new PathProxy(false);\n };\n Path.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n };\n Path.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n Path.prototype.getBoundingRect = function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n if (needsUpdateRect) {\n var firstInvoke = false;\n if (!this.path) {\n firstInvoke = true;\n this.createPathProxy();\n }\n var path = this.path;\n if (firstInvoke || (this.__dirty & SHAPE_CHANGED_BIT)) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n this.pathUpdated();\n }\n rect = path.getBoundingRect();\n }\n this._rect = rect;\n if (this.hasStroke() && this.path && this.path.len() > 0) {\n var rectStroke = this._rectStroke || (this._rectStroke = rect.clone());\n if (this.__dirty || needsUpdateRect) {\n rectStroke.copy(rect);\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n var w = style.lineWidth;\n if (!this.hasFill()) {\n var strokeContainThreshold = this.strokeContainThreshold;\n w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\n }\n if (lineScale > 1e-10) {\n rectStroke.width += w / lineScale;\n rectStroke.height += w / lineScale;\n rectStroke.x -= w / lineScale / 2;\n rectStroke.y -= w / lineScale / 2;\n }\n }\n return rectStroke;\n }\n return rect;\n };\n Path.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n if (rect.contain(x, y)) {\n var pathProxy = this.path;\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n if (lineScale > 1e-10) {\n if (!this.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n if (pathContain.containStroke(pathProxy, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n if (this.hasFill()) {\n return pathContain.contain(pathProxy, x, y);\n }\n }\n return false;\n };\n Path.prototype.dirtyShape = function () {\n this.__dirty |= SHAPE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n if (this._decalEl) {\n this._decalEl.dirtyShape();\n }\n this.markRedraw();\n };\n Path.prototype.dirty = function () {\n this.dirtyStyle();\n this.dirtyShape();\n };\n Path.prototype.animateShape = function (loop) {\n return this.animate('shape', loop);\n };\n Path.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else if (targetKey === 'shape') {\n this.dirtyShape();\n }\n else {\n this.markRedraw();\n }\n };\n Path.prototype.attrKV = function (key, value) {\n if (key === 'shape') {\n this.setShape(value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n };\n Path.prototype.setShape = function (keyOrObj, value) {\n var shape = this.shape;\n if (!shape) {\n shape = this.shape = {};\n }\n if (typeof keyOrObj === 'string') {\n shape[keyOrObj] = value;\n }\n else {\n extend(shape, keyOrObj);\n }\n this.dirtyShape();\n return this;\n };\n Path.prototype.shapeChanged = function () {\n return !!(this.__dirty & SHAPE_CHANGED_BIT);\n };\n Path.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_PATH_STYLE, obj);\n };\n Path.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.shape && !normalState.shape) {\n normalState.shape = extend({}, this.shape);\n }\n };\n Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetShape;\n if (state && state.shape) {\n if (transition) {\n if (keepCurrentStates) {\n targetShape = state.shape;\n }\n else {\n targetShape = extend({}, normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else {\n targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else if (needsRestoreToNormal) {\n targetShape = normalState.shape;\n }\n if (targetShape) {\n if (transition) {\n this.shape = extend({}, this.shape);\n var targetShapePrimaryProps = {};\n var shapeKeys = keys(targetShape);\n for (var i = 0; i < shapeKeys.length; i++) {\n var key = shapeKeys[i];\n if (typeof targetShape[key] === 'object') {\n this.shape[key] = targetShape[key];\n }\n else {\n targetShapePrimaryProps[key] = targetShape[key];\n }\n }\n this._transitionState(stateName, {\n shape: targetShapePrimaryProps\n }, animationCfg);\n }\n else {\n this.shape = targetShape;\n this.dirtyShape();\n }\n }\n };\n Path.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedShape;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.shape) {\n mergedShape = mergedShape || {};\n this._mergeStyle(mergedShape, state.shape);\n }\n }\n if (mergedShape) {\n mergedState.shape = mergedShape;\n }\n return mergedState;\n };\n Path.prototype.getAnimationStyleProps = function () {\n return DEFAULT_PATH_ANIMATION_PROPS;\n };\n Path.prototype.isZeroArea = function () {\n return false;\n };\n Path.extend = function (defaultProps) {\n var Sub = (function (_super) {\n __extends(Sub, _super);\n function Sub(opts) {\n var _this = _super.call(this, opts) || this;\n defaultProps.init && defaultProps.init.call(_this, opts);\n return _this;\n }\n Sub.prototype.getDefaultStyle = function () {\n return clone(defaultProps.style);\n };\n Sub.prototype.getDefaultShape = function () {\n return clone(defaultProps.shape);\n };\n return Sub;\n }(Path));\n for (var key in defaultProps) {\n if (typeof defaultProps[key] === 'function') {\n Sub.prototype[key] = defaultProps[key];\n }\n }\n return Sub;\n };\n Path.initDefaultProps = (function () {\n var pathProto = Path.prototype;\n pathProto.type = 'path';\n pathProto.strokeContainThreshold = 5;\n pathProto.segmentIgnoreThreshold = 0;\n pathProto.subPixelOptimize = false;\n pathProto.autoBatch = false;\n pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT;\n })();\n return Path;\n}(Displayable));\nexport default Path;\n", "import { __extends } from \"tslib\";\nimport Displayable from './Displayable.js';\nimport { getBoundingRect } from '../contain/text.js';\nimport { DEFAULT_PATH_STYLE } from './Path.js';\nimport { createObject, defaults } from '../core/util.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nexport var DEFAULT_TSPAN_STYLE = defaults({\n strokeFirst: true,\n font: DEFAULT_FONT,\n x: 0,\n y: 0,\n textAlign: 'left',\n textBaseline: 'top',\n miterLimit: 2\n}, DEFAULT_PATH_STYLE);\nvar TSpan = (function (_super) {\n __extends(TSpan, _super);\n function TSpan() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TSpan.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return stroke != null && stroke !== 'none' && style.lineWidth > 0;\n };\n TSpan.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n TSpan.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_TSPAN_STYLE, obj);\n };\n TSpan.prototype.setBoundingRect = function (rect) {\n this._rect = rect;\n };\n TSpan.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n var text = style.text;\n text != null ? (text += '') : (text = '');\n var rect = getBoundingRect(text, style.font, style.textAlign, style.textBaseline);\n rect.x += style.x || 0;\n rect.y += style.y || 0;\n if (this.hasStroke()) {\n var w = style.lineWidth;\n rect.x -= w / 2;\n rect.y -= w / 2;\n rect.width += w;\n rect.height += w;\n }\n this._rect = rect;\n }\n return this._rect;\n };\n TSpan.initDefaultProps = (function () {\n var tspanProto = TSpan.prototype;\n tspanProto.dirtyRectTolerance = 10;\n })();\n return TSpan;\n}(Displayable));\nTSpan.prototype.type = 'tspan';\nexport default TSpan;\n", "import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { defaults, createObject } from '../core/util.js';\nexport var DEFAULT_IMAGE_STYLE = defaults({\n x: 0,\n y: 0\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_IMAGE_ANIMATION_PROPS = {\n style: defaults({\n x: true,\n y: true,\n width: true,\n height: true,\n sx: true,\n sy: true,\n sWidth: true,\n sHeight: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nfunction isImageLike(source) {\n return !!(source\n && typeof source !== 'string'\n && source.width && source.height);\n}\nvar ZRImage = (function (_super) {\n __extends(ZRImage, _super);\n function ZRImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ZRImage.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_IMAGE_STYLE, obj);\n };\n ZRImage.prototype._getSize = function (dim) {\n var style = this.style;\n var size = style[dim];\n if (size != null) {\n return size;\n }\n var imageSource = isImageLike(style.image)\n ? style.image : this.__image;\n if (!imageSource) {\n return 0;\n }\n var otherDim = dim === 'width' ? 'height' : 'width';\n var otherDimSize = style[otherDim];\n if (otherDimSize == null) {\n return imageSource[dim];\n }\n else {\n return imageSource[dim] / imageSource[otherDim] * otherDimSize;\n }\n };\n ZRImage.prototype.getWidth = function () {\n return this._getSize('width');\n };\n ZRImage.prototype.getHeight = function () {\n return this._getSize('height');\n };\n ZRImage.prototype.getAnimationStyleProps = function () {\n return DEFAULT_IMAGE_ANIMATION_PROPS;\n };\n ZRImage.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\n }\n return this._rect;\n };\n return ZRImage;\n}(Displayable));\nZRImage.prototype.type = 'image';\nexport default ZRImage;\n", "export function buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4;\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n }\n else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n }\n else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n }\n else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n }\n else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = 0;\n }\n var total;\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n", "var round = Math.round;\nexport function subPixelOptimizeLine(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n }\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n }\n return outputShape;\n}\nexport function subPixelOptimizeRect(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = originX;\n outputShape.y = originY;\n outputShape.width = originWidth;\n outputShape.height = originHeight;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n return outputShape;\n}\nexport function subPixelOptimize(position, lineWidth, positiveOrNegative) {\n if (!lineWidth) {\n return position;\n }\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0\n ? doubledPosition / 2\n : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundRectHelper from '../helper/roundRect.js';\nimport { subPixelOptimizeRect } from '../helper/subPixelOptimize.js';\nvar RectShape = (function () {\n function RectShape() {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n }\n return RectShape;\n}());\nexport { RectShape };\nvar subPixelOptimizeOutputShape = {};\nvar Rect = (function (_super) {\n __extends(Rect, _super);\n function Rect(opts) {\n return _super.call(this, opts) || this;\n }\n Rect.prototype.getDefaultShape = function () {\n return new RectShape();\n };\n Rect.prototype.buildPath = function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = optimizedShape.x;\n y = optimizedShape.y;\n width = optimizedShape.width;\n height = optimizedShape.height;\n optimizedShape.r = shape.r;\n shape = optimizedShape;\n }\n else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n }\n else {\n roundRectHelper.buildPath(ctx, shape);\n }\n };\n Rect.prototype.isZeroArea = function () {\n return !this.shape.width || !this.shape.height;\n };\n return Rect;\n}(Path));\nRect.prototype.type = 'rect';\nexport default Rect;\n", "import { __extends } from \"tslib\";\nimport { parseRichText, parsePlainText } from './helper/parseText.js';\nimport TSpan from './TSpan.js';\nimport { retrieve2, each, normalizeCssArray, trim, retrieve3, extend, keys, defaults } from '../core/util.js';\nimport { adjustTextX, adjustTextY } from '../contain/text.js';\nimport ZRImage from './Image.js';\nimport Rect from './shape/Rect.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Displayable, { DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport { DEFAULT_FONT, DEFAULT_FONT_SIZE } from '../core/platform.js';\nvar DEFAULT_RICH_TEXT_COLOR = {\n fill: '#000'\n};\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\nexport var DEFAULT_TEXT_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineWidth: true,\n fontSize: true,\n lineHeight: true,\n width: true,\n height: true,\n textShadowColor: true,\n textShadowBlur: true,\n textShadowOffsetX: true,\n textShadowOffsetY: true,\n backgroundColor: true,\n padding: true,\n borderColor: true,\n borderWidth: true,\n borderRadius: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar ZRText = (function (_super) {\n __extends(ZRText, _super);\n function ZRText(opts) {\n var _this = _super.call(this) || this;\n _this.type = 'text';\n _this._children = [];\n _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\n _this.attr(opts);\n return _this;\n }\n ZRText.prototype.childrenRef = function () {\n return this._children;\n };\n ZRText.prototype.update = function () {\n _super.prototype.update.call(this);\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.zlevel = this.zlevel;\n child.z = this.z;\n child.z2 = this.z2;\n child.culling = this.culling;\n child.cursor = this.cursor;\n child.invisible = this.invisible;\n }\n };\n ZRText.prototype.updateTransform = function () {\n var innerTransformable = this.innerTransformable;\n if (innerTransformable) {\n innerTransformable.updateTransform();\n if (innerTransformable.transform) {\n this.transform = innerTransformable.transform;\n }\n }\n else {\n _super.prototype.updateTransform.call(this);\n }\n };\n ZRText.prototype.getLocalTransform = function (m) {\n var innerTransformable = this.innerTransformable;\n return innerTransformable\n ? innerTransformable.getLocalTransform(m)\n : _super.prototype.getLocalTransform.call(this, m);\n };\n ZRText.prototype.getComputedTransform = function () {\n if (this.__hostTarget) {\n this.__hostTarget.getComputedTransform();\n this.__hostTarget.updateInnerText(true);\n }\n return _super.prototype.getComputedTransform.call(this);\n };\n ZRText.prototype._updateSubTexts = function () {\n this._childCursor = 0;\n normalizeTextStyle(this.style);\n this.style.rich\n ? this._updateRichTexts()\n : this._updatePlainTexts();\n this._children.length = this._childCursor;\n this.styleUpdated();\n };\n ZRText.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = zr;\n }\n };\n ZRText.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = null;\n }\n };\n ZRText.prototype.getBoundingRect = function () {\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n if (!this._rect) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n this._rect = rect || tmpRect;\n }\n return this._rect;\n };\n ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\n this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\n };\n ZRText.prototype.setTextContent = function (textContent) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Can\\'t attach text on another text');\n }\n };\n ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n if (!sourceStyle) {\n return targetStyle;\n }\n var sourceRich = sourceStyle.rich;\n var targetRich = targetStyle.rich || (sourceRich && {});\n extend(targetStyle, sourceStyle);\n if (sourceRich && targetRich) {\n this._mergeRich(targetRich, sourceRich);\n targetStyle.rich = targetRich;\n }\n else if (targetRich) {\n targetStyle.rich = targetRich;\n }\n return targetStyle;\n };\n ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\n var richNames = keys(sourceRich);\n for (var i = 0; i < richNames.length; i++) {\n var richName = richNames[i];\n targetRich[richName] = targetRich[richName] || {};\n extend(targetRich[richName], sourceRich[richName]);\n }\n };\n ZRText.prototype.getAnimationStyleProps = function () {\n return DEFAULT_TEXT_ANIMATION_PROPS;\n };\n ZRText.prototype._getOrCreateChild = function (Ctor) {\n var child = this._children[this._childCursor];\n if (!child || !(child instanceof Ctor)) {\n child = new Ctor();\n }\n this._children[this._childCursor++] = child;\n child.__zr = this.__zr;\n child.parent = this;\n return child;\n };\n ZRText.prototype._updatePlainTexts = function () {\n var style = this.style;\n var textFont = style.font || DEFAULT_FONT;\n var textPadding = style.padding;\n var text = getStyleText(style);\n var contentBlock = parsePlainText(text, style);\n var needDrawBg = needDrawBackground(style);\n var bgColorDrawn = !!(style.backgroundColor);\n var outerHeight = contentBlock.outerHeight;\n var outerWidth = contentBlock.outerWidth;\n var contentWidth = contentBlock.contentWidth;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n var defaultStyle = this._defaultStyle;\n this.isTruncated = !!contentBlock.isTruncated;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.align || defaultStyle.align || 'left';\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\n var textX = baseX;\n var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\n if (needDrawBg || textPadding) {\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n textY += lineHeight / 2;\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n if (verticalAlign === 'top') {\n textY += textPadding[0];\n }\n else if (verticalAlign === 'bottom') {\n textY -= textPadding[2];\n }\n }\n var defaultLineWidth = 0;\n var useDefaultFill = false;\n var textFill = getFill('fill' in style\n ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in style\n ? style.stroke\n : (!bgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill))\n ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n : null);\n var hasShadow = style.textShadowBlur > 0;\n var fixedBoundingRect = style.width != null\n && (style.overflow === 'truncate' || style.overflow === 'break' || style.overflow === 'breakAll');\n var calculatedLineHeight = contentBlock.calculatedLineHeight;\n for (var i = 0; i < textLines.length; i++) {\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n subElStyle.text = textLines[i];\n subElStyle.x = textX;\n subElStyle.y = textY;\n if (textAlign) {\n subElStyle.textAlign = textAlign;\n }\n subElStyle.textBaseline = 'middle';\n subElStyle.opacity = style.opacity;\n subElStyle.strokeFirst = true;\n if (hasShadow) {\n subElStyle.shadowBlur = style.textShadowBlur || 0;\n subElStyle.shadowColor = style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\n }\n subElStyle.stroke = textStroke;\n subElStyle.fill = textFill;\n if (textStroke) {\n subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\n subElStyle.lineDash = style.lineDash;\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n }\n subElStyle.font = textFont;\n setSeparateFont(subElStyle, style);\n textY += lineHeight;\n if (fixedBoundingRect) {\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, contentWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, calculatedLineHeight, subElStyle.textBaseline), contentWidth, calculatedLineHeight));\n }\n }\n };\n ZRText.prototype._updateRichTexts = function () {\n var style = this.style;\n var text = getStyleText(style);\n var contentBlock = parseRichText(text, style);\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.padding;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var defaultStyle = this._defaultStyle;\n var textAlign = style.align || defaultStyle.align;\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\n this.isTruncated = !!contentBlock.isTruncated;\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n var xRight = xLeft + contentWidth;\n if (needDrawBackground(style)) {\n this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n var bgColorDrawn = !!(style.backgroundColor);\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var remainedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token = void 0;\n while (leftIndex < tokenCount\n && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\n remainedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n while (rightIndex >= 0\n && (token = tokens[rightIndex], token.align === 'right')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\n remainedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n }\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex];\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\n lineXLeft += token.width;\n leftIndex++;\n }\n lineTop += lineHeight;\n }\n };\n ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text;\n var verticalAlign = token.verticalAlign;\n var y = lineTop + lineHeight / 2;\n if (verticalAlign === 'top') {\n y = lineTop + token.height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\n needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\n ? x - token.width\n : textAlign === 'center'\n ? x - token.width / 2\n : x, y - token.height / 2, token.width, token.height);\n var bgColorDrawn = !!tokenStyle.backgroundColor;\n var textPadding = token.textPadding;\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\n }\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n var defaultStyle = this._defaultStyle;\n var useDefaultFill = false;\n var defaultLineWidth = 0;\n var textFill = getFill('fill' in tokenStyle ? tokenStyle.fill\n : 'fill' in style ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\n : 'stroke' in style ? style.stroke\n : (!bgColorDrawn\n && !parentBgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, defaultStyle.stroke)\n : null);\n var hasShadow = tokenStyle.textShadowBlur > 0\n || style.textShadowBlur > 0;\n subElStyle.text = token.text;\n subElStyle.x = x;\n subElStyle.y = y;\n if (hasShadow) {\n subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\n subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\n }\n subElStyle.textAlign = textAlign;\n subElStyle.textBaseline = 'middle';\n subElStyle.font = token.font || DEFAULT_FONT;\n subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\n setSeparateFont(subElStyle, tokenStyle);\n if (textStroke) {\n subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\n subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n subElStyle.stroke = textStroke;\n }\n if (textFill) {\n subElStyle.fill = textFill;\n }\n var textWidth = token.contentWidth;\n var textHeight = token.contentHeight;\n el.setBoundingRect(new BoundingRect(adjustTextX(subElStyle.x, textWidth, subElStyle.textAlign), adjustTextY(subElStyle.y, textHeight, subElStyle.textBaseline), textWidth, textHeight));\n };\n ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\n var textBackgroundColor = style.backgroundColor;\n var textBorderWidth = style.borderWidth;\n var textBorderColor = style.borderColor;\n var isImageBg = textBackgroundColor && textBackgroundColor.image;\n var isPlainOrGradientBg = textBackgroundColor && !isImageBg;\n var textBorderRadius = style.borderRadius;\n var self = this;\n var rectEl;\n var imgEl;\n if (isPlainOrGradientBg || style.lineHeight || (textBorderWidth && textBorderColor)) {\n rectEl = this._getOrCreateChild(Rect);\n rectEl.useStyle(rectEl.createStyle());\n rectEl.style.fill = null;\n var rectShape = rectEl.shape;\n rectShape.x = x;\n rectShape.y = y;\n rectShape.width = width;\n rectShape.height = height;\n rectShape.r = textBorderRadius;\n rectEl.dirtyShape();\n }\n if (isPlainOrGradientBg) {\n var rectStyle = rectEl.style;\n rectStyle.fill = textBackgroundColor || null;\n rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\n }\n else if (isImageBg) {\n imgEl = this._getOrCreateChild(ZRImage);\n imgEl.onload = function () {\n self.dirtyStyle();\n };\n var imgStyle = imgEl.style;\n imgStyle.image = textBackgroundColor.image;\n imgStyle.x = x;\n imgStyle.y = y;\n imgStyle.width = width;\n imgStyle.height = height;\n }\n if (textBorderWidth && textBorderColor) {\n var rectStyle = rectEl.style;\n rectStyle.lineWidth = textBorderWidth;\n rectStyle.stroke = textBorderColor;\n rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\n rectStyle.lineDash = style.borderDash;\n rectStyle.lineDashOffset = style.borderDashOffset || 0;\n rectEl.strokeContainThreshold = 0;\n if (rectEl.hasFill() && rectEl.hasStroke()) {\n rectStyle.strokeFirst = true;\n rectStyle.lineWidth *= 2;\n }\n }\n var commonStyle = (rectEl || imgEl).style;\n commonStyle.shadowBlur = style.shadowBlur || 0;\n commonStyle.shadowColor = style.shadowColor || 'transparent';\n commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\n commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\n commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\n };\n ZRText.makeFont = function (style) {\n var font = '';\n if (hasSeparateFont(style)) {\n font = [\n style.fontStyle,\n style.fontWeight,\n parseFontSize(style.fontSize),\n style.fontFamily || 'sans-serif'\n ].join(' ');\n }\n return font && trim(font) || style.textFont || style.font;\n };\n return ZRText;\n}(Displayable));\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\nvar FONT_PARTS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily'];\nexport function parseFontSize(fontSize) {\n if (typeof fontSize === 'string'\n && (fontSize.indexOf('px') !== -1\n || fontSize.indexOf('rem') !== -1\n || fontSize.indexOf('em') !== -1)) {\n return fontSize;\n }\n else if (!isNaN(+fontSize)) {\n return fontSize + 'px';\n }\n else {\n return DEFAULT_FONT_SIZE + 'px';\n }\n}\nfunction setSeparateFont(targetStyle, sourceStyle) {\n for (var i = 0; i < FONT_PARTS.length; i++) {\n var fontProp = FONT_PARTS[i];\n var val = sourceStyle[fontProp];\n if (val != null) {\n targetStyle[fontProp] = val;\n }\n }\n}\nexport function hasSeparateFont(style) {\n return style.fontSize != null || style.fontFamily || style.fontWeight;\n}\nexport function normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\nfunction normalizeStyle(style) {\n if (style) {\n style.font = ZRText.makeFont(style);\n var textAlign = style.align;\n textAlign === 'middle' && (textAlign = 'center');\n style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\n var verticalAlign = style.verticalAlign;\n verticalAlign === 'center' && (verticalAlign = 'middle');\n style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\n var textPadding = style.padding;\n if (textPadding) {\n style.padding = normalizeCssArray(style.padding);\n }\n }\n}\nfunction getStroke(stroke, lineWidth) {\n return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\n ? null\n : (stroke.image || stroke.colorStops)\n ? '#000'\n : stroke;\n}\nfunction getFill(fill) {\n return (fill == null || fill === 'none')\n ? null\n : (fill.image || fill.colorStops)\n ? '#000'\n : fill;\n}\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right'\n ? (x - textPadding[1])\n : textAlign === 'center'\n ? (x + textPadding[3] / 2 - textPadding[1] / 2)\n : (x + textPadding[3]);\n}\nfunction getStyleText(style) {\n var text = style.text;\n text != null && (text += '');\n return text;\n}\nfunction needDrawBackground(style) {\n return !!(style.backgroundColor\n || style.lineHeight\n || (style.borderWidth && style.borderColor));\n}\nexport default ZRText;\n", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { makeInner } from './model.js';\nexport var getECData = makeInner();\nexport var setCommonECData = function (seriesIndex, dataType, dataIdx, el) {\n if (el) {\n var ecData = getECData(el);\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n ecData.dataIndex = dataIdx;\n ecData.dataType = dataType;\n ecData.seriesIndex = seriesIndex;\n ecData.ssrType = 'chart';\n // TODO: not store dataIndex on children.\n if (el.type === 'group') {\n el.traverse(function (child) {\n var childECData = getECData(child);\n childECData.seriesIndex = seriesIndex;\n childECData.dataIndex = dataIdx;\n childECData.dataType = dataType;\n childECData.ssrType = 'chart';\n });\n }\n }\n};", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { extend, indexOf, isArrayLike, isObject, keys, isArray, each } from 'zrender/lib/core/util.js';\nimport { getECData } from './innerStore.js';\nimport { liftColor } from 'zrender/lib/tool/color.js';\nimport { queryDataIndex, makeInner } from './model.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport { error } from './log.js';\n// Reserve 0 as default.\nvar _highlightNextDigit = 1;\nvar _highlightKeyMap = {};\nvar getSavedStates = makeInner();\nvar getComponentStates = makeInner();\nexport var HOVER_STATE_NORMAL = 0;\nexport var HOVER_STATE_BLUR = 1;\nexport var HOVER_STATE_EMPHASIS = 2;\nexport var SPECIAL_STATES = ['emphasis', 'blur', 'select'];\nexport var DISPLAY_STATES = ['normal', 'emphasis', 'blur', 'select'];\nexport var Z2_EMPHASIS_LIFT = 10;\nexport var Z2_SELECT_LIFT = 9;\nexport var HIGHLIGHT_ACTION_TYPE = 'highlight';\nexport var DOWNPLAY_ACTION_TYPE = 'downplay';\nexport var SELECT_ACTION_TYPE = 'select';\nexport var UNSELECT_ACTION_TYPE = 'unselect';\nexport var TOGGLE_SELECT_ACTION_TYPE = 'toggleSelect';\nfunction hasFillOrStroke(fillOrStroke) {\n return fillOrStroke != null && fillOrStroke !== 'none';\n}\nfunction doChangeHoverState(el, stateName, hoverStateEnum) {\n if (el.onHoverStateChange && (el.hoverState || 0) !== hoverStateEnum) {\n el.onHoverStateChange(stateName);\n }\n el.hoverState = hoverStateEnum;\n}\nfunction singleEnterEmphasis(el) {\n // Only mark the flag.\n // States will be applied in the echarts.ts in next frame.\n doChangeHoverState(el, 'emphasis', HOVER_STATE_EMPHASIS);\n}\nfunction singleLeaveEmphasis(el) {\n // Only mark the flag.\n // States will be applied in the echarts.ts in next frame.\n if (el.hoverState === HOVER_STATE_EMPHASIS) {\n doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\n }\n}\nfunction singleEnterBlur(el) {\n doChangeHoverState(el, 'blur', HOVER_STATE_BLUR);\n}\nfunction singleLeaveBlur(el) {\n if (el.hoverState === HOVER_STATE_BLUR) {\n doChangeHoverState(el, 'normal', HOVER_STATE_NORMAL);\n }\n}\nfunction singleEnterSelect(el) {\n el.selected = true;\n}\nfunction singleLeaveSelect(el) {\n el.selected = false;\n}\nfunction updateElementState(el, updater, commonParam) {\n updater(el, commonParam);\n}\nfunction traverseUpdateState(el, updater, commonParam) {\n updateElementState(el, updater, commonParam);\n el.isGroup && el.traverse(function (child) {\n updateElementState(child, updater, commonParam);\n });\n}\nexport function setStatesFlag(el, stateName) {\n switch (stateName) {\n case 'emphasis':\n el.hoverState = HOVER_STATE_EMPHASIS;\n break;\n case 'normal':\n el.hoverState = HOVER_STATE_NORMAL;\n break;\n case 'blur':\n el.hoverState = HOVER_STATE_BLUR;\n break;\n case 'select':\n el.selected = true;\n }\n}\n/**\r\n * If we reuse elements when rerender.\r\n * DON'T forget to clearStates before we update the style and shape.\r\n * Or we may update on the wrong state instead of normal state.\r\n */\nexport function clearStates(el) {\n if (el.isGroup) {\n el.traverse(function (child) {\n child.clearStates();\n });\n } else {\n el.clearStates();\n }\n}\nfunction getFromStateStyle(el, props, toStateName, defaultValue) {\n var style = el.style;\n var fromState = {};\n for (var i = 0; i < props.length; i++) {\n var propName = props[i];\n var val = style[propName];\n fromState[propName] = val == null ? defaultValue && defaultValue[propName] : val;\n }\n for (var i = 0; i < el.animators.length; i++) {\n var animator = el.animators[i];\n if (animator.__fromStateTransition\n // Don't consider the animation to emphasis state.\n && animator.__fromStateTransition.indexOf(toStateName) < 0 && animator.targetName === 'style') {\n animator.saveTo(fromState, props);\n }\n }\n return fromState;\n}\nfunction createEmphasisDefaultState(el, stateName, targetStates, state) {\n var hasSelect = targetStates && indexOf(targetStates, 'select') >= 0;\n var cloned = false;\n if (el instanceof Path) {\n var store = getSavedStates(el);\n var fromFill = hasSelect ? store.selectFill || store.normalFill : store.normalFill;\n var fromStroke = hasSelect ? store.selectStroke || store.normalStroke : store.normalStroke;\n if (hasFillOrStroke(fromFill) || hasFillOrStroke(fromStroke)) {\n state = state || {};\n var emphasisStyle = state.style || {};\n // inherit case\n if (emphasisStyle.fill === 'inherit') {\n cloned = true;\n state = extend({}, state);\n emphasisStyle = extend({}, emphasisStyle);\n emphasisStyle.fill = fromFill;\n }\n // Apply default color lift\n else if (!hasFillOrStroke(emphasisStyle.fill) && hasFillOrStroke(fromFill)) {\n cloned = true;\n // Not modify the original value.\n state = extend({}, state);\n emphasisStyle = extend({}, emphasisStyle);\n // Already being applied 'emphasis'. DON'T lift color multiple times.\n emphasisStyle.fill = liftColor(fromFill);\n }\n // Not highlight stroke if fill has been highlighted.\n else if (!hasFillOrStroke(emphasisStyle.stroke) && hasFillOrStroke(fromStroke)) {\n if (!cloned) {\n state = extend({}, state);\n emphasisStyle = extend({}, emphasisStyle);\n }\n emphasisStyle.stroke = liftColor(fromStroke);\n }\n state.style = emphasisStyle;\n }\n }\n if (state) {\n // TODO Share with textContent?\n if (state.z2 == null) {\n if (!cloned) {\n state = extend({}, state);\n }\n var z2EmphasisLift = el.z2EmphasisLift;\n state.z2 = el.z2 + (z2EmphasisLift != null ? z2EmphasisLift : Z2_EMPHASIS_LIFT);\n }\n }\n return state;\n}\nfunction createSelectDefaultState(el, stateName, state) {\n // const hasSelect = indexOf(el.currentStates, stateName) >= 0;\n if (state) {\n // TODO Share with textContent?\n if (state.z2 == null) {\n state = extend({}, state);\n var z2SelectLift = el.z2SelectLift;\n state.z2 = el.z2 + (z2SelectLift != null ? z2SelectLift : Z2_SELECT_LIFT);\n }\n }\n return state;\n}\nfunction createBlurDefaultState(el, stateName, state) {\n var hasBlur = indexOf(el.currentStates, stateName) >= 0;\n var currentOpacity = el.style.opacity;\n var fromState = !hasBlur ? getFromStateStyle(el, ['opacity'], stateName, {\n opacity: 1\n }) : null;\n state = state || {};\n var blurStyle = state.style || {};\n if (blurStyle.opacity == null) {\n // clone state\n state = extend({}, state);\n blurStyle = extend({\n // Already being applied 'emphasis'. DON'T mul opacity multiple times.\n opacity: hasBlur ? currentOpacity : fromState.opacity * 0.1\n }, blurStyle);\n state.style = blurStyle;\n }\n return state;\n}\nfunction elementStateProxy(stateName, targetStates) {\n var state = this.states[stateName];\n if (this.style) {\n if (stateName === 'emphasis') {\n return createEmphasisDefaultState(this, stateName, targetStates, state);\n } else if (stateName === 'blur') {\n return createBlurDefaultState(this, stateName, state);\n } else if (stateName === 'select') {\n return createSelectDefaultState(this, stateName, state);\n }\n }\n return state;\n}\n/**\r\n * Set hover style (namely \"emphasis style\") of element.\r\n * @param el Should not be `zrender/graphic/Group`.\r\n * @param focus 'self' | 'selfInSeries' | 'series'\r\n */\nexport function setDefaultStateProxy(el) {\n el.stateProxy = elementStateProxy;\n var textContent = el.getTextContent();\n var textGuide = el.getTextGuideLine();\n if (textContent) {\n textContent.stateProxy = elementStateProxy;\n }\n if (textGuide) {\n textGuide.stateProxy = elementStateProxy;\n }\n}\nexport function enterEmphasisWhenMouseOver(el, e) {\n !shouldSilent(el, e)\n // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !el.__highByOuter && traverseUpdateState(el, singleEnterEmphasis);\n}\nexport function leaveEmphasisWhenMouseOut(el, e) {\n !shouldSilent(el, e)\n // \"emphasis\" event highlight has higher priority than mouse highlight.\n && !el.__highByOuter && traverseUpdateState(el, singleLeaveEmphasis);\n}\nexport function enterEmphasis(el, highlightDigit) {\n el.__highByOuter |= 1 << (highlightDigit || 0);\n traverseUpdateState(el, singleEnterEmphasis);\n}\nexport function leaveEmphasis(el, highlightDigit) {\n !(el.__highByOuter &= ~(1 << (highlightDigit || 0))) && traverseUpdateState(el, singleLeaveEmphasis);\n}\nexport function enterBlur(el) {\n traverseUpdateState(el, singleEnterBlur);\n}\nexport function leaveBlur(el) {\n traverseUpdateState(el, singleLeaveBlur);\n}\nexport function enterSelect(el) {\n traverseUpdateState(el, singleEnterSelect);\n}\nexport function leaveSelect(el) {\n traverseUpdateState(el, singleLeaveSelect);\n}\nfunction shouldSilent(el, e) {\n return el.__highDownSilentOnTouch && e.zrByTouch;\n}\nexport function allLeaveBlur(api) {\n var model = api.getModel();\n var leaveBlurredSeries = [];\n var allComponentViews = [];\n model.eachComponent(function (componentType, componentModel) {\n var componentStates = getComponentStates(componentModel);\n var isSeries = componentType === 'series';\n var view = isSeries ? api.getViewOfSeriesModel(componentModel) : api.getViewOfComponentModel(componentModel);\n !isSeries && allComponentViews.push(view);\n if (componentStates.isBlured) {\n // Leave blur anyway\n view.group.traverse(function (child) {\n singleLeaveBlur(child);\n });\n isSeries && leaveBlurredSeries.push(componentModel);\n }\n componentStates.isBlured = false;\n });\n each(allComponentViews, function (view) {\n if (view && view.toggleBlurSeries) {\n view.toggleBlurSeries(leaveBlurredSeries, false, model);\n }\n });\n}\nexport function blurSeries(targetSeriesIndex, focus, blurScope, api) {\n var ecModel = api.getModel();\n blurScope = blurScope || 'coordinateSystem';\n function leaveBlurOfIndices(data, dataIndices) {\n for (var i = 0; i < dataIndices.length; i++) {\n var itemEl = data.getItemGraphicEl(dataIndices[i]);\n itemEl && leaveBlur(itemEl);\n }\n }\n if (targetSeriesIndex == null) {\n return;\n }\n if (!focus || focus === 'none') {\n return;\n }\n var targetSeriesModel = ecModel.getSeriesByIndex(targetSeriesIndex);\n var targetCoordSys = targetSeriesModel.coordinateSystem;\n if (targetCoordSys && targetCoordSys.master) {\n targetCoordSys = targetCoordSys.master;\n }\n var blurredSeries = [];\n ecModel.eachSeries(function (seriesModel) {\n var sameSeries = targetSeriesModel === seriesModel;\n var coordSys = seriesModel.coordinateSystem;\n if (coordSys && coordSys.master) {\n coordSys = coordSys.master;\n }\n var sameCoordSys = coordSys && targetCoordSys ? coordSys === targetCoordSys : sameSeries; // If there is no coordinate system. use sameSeries instead.\n if (!(\n // Not blur other series if blurScope series\n blurScope === 'series' && !sameSeries\n // Not blur other coordinate system if blurScope is coordinateSystem\n || blurScope === 'coordinateSystem' && !sameCoordSys\n // Not blur self series if focus is series.\n || focus === 'series' && sameSeries\n // TODO blurScope: coordinate system\n )) {\n var view = api.getViewOfSeriesModel(seriesModel);\n view.group.traverse(function (child) {\n // For the elements that have been triggered by other components,\n // and are still required to be highlighted,\n // because the current is directly forced to blur the element,\n // it will cause the focus self to be unable to highlight, so skip the blur of this element.\n if (child.__highByOuter && sameSeries && focus === 'self') {\n return;\n }\n singleEnterBlur(child);\n });\n if (isArrayLike(focus)) {\n leaveBlurOfIndices(seriesModel.getData(), focus);\n } else if (isObject(focus)) {\n var dataTypes = keys(focus);\n for (var d = 0; d < dataTypes.length; d++) {\n leaveBlurOfIndices(seriesModel.getData(dataTypes[d]), focus[dataTypes[d]]);\n }\n }\n blurredSeries.push(seriesModel);\n getComponentStates(seriesModel).isBlured = true;\n }\n });\n ecModel.eachComponent(function (componentType, componentModel) {\n if (componentType === 'series') {\n return;\n }\n var view = api.getViewOfComponentModel(componentModel);\n if (view && view.toggleBlurSeries) {\n view.toggleBlurSeries(blurredSeries, true, ecModel);\n }\n });\n}\nexport function blurComponent(componentMainType, componentIndex, api) {\n if (componentMainType == null || componentIndex == null) {\n return;\n }\n var componentModel = api.getModel().getComponent(componentMainType, componentIndex);\n if (!componentModel) {\n return;\n }\n getComponentStates(componentModel).isBlured = true;\n var view = api.getViewOfComponentModel(componentModel);\n if (!view || !view.focusBlurEnabled) {\n return;\n }\n view.group.traverse(function (child) {\n singleEnterBlur(child);\n });\n}\nexport function blurSeriesFromHighlightPayload(seriesModel, payload, api) {\n var seriesIndex = seriesModel.seriesIndex;\n var data = seriesModel.getData(payload.dataType);\n if (!data) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Unknown dataType \" + payload.dataType);\n }\n return;\n }\n var dataIndex = queryDataIndex(data, payload);\n // Pick the first one if there is multiple/none exists.\n dataIndex = (isArray(dataIndex) ? dataIndex[0] : dataIndex) || 0;\n var el = data.getItemGraphicEl(dataIndex);\n if (!el) {\n var count = data.count();\n var current = 0;\n // If data on dataIndex is NaN.\n while (!el && current < count) {\n el = data.getItemGraphicEl(current++);\n }\n }\n if (el) {\n var ecData = getECData(el);\n blurSeries(seriesIndex, ecData.focus, ecData.blurScope, api);\n } else {\n // If there is no element put on the data. Try getting it from raw option\n // TODO Should put it on seriesModel?\n var focus_1 = seriesModel.get(['emphasis', 'focus']);\n var blurScope = seriesModel.get(['emphasis', 'blurScope']);\n if (focus_1 != null) {\n blurSeries(seriesIndex, focus_1, blurScope, api);\n }\n }\n}\nexport function findComponentHighDownDispatchers(componentMainType, componentIndex, name, api) {\n var ret = {\n focusSelf: false,\n dispatchers: null\n };\n if (componentMainType == null || componentMainType === 'series' || componentIndex == null || name == null) {\n return ret;\n }\n var componentModel = api.getModel().getComponent(componentMainType, componentIndex);\n if (!componentModel) {\n return ret;\n }\n var view = api.getViewOfComponentModel(componentModel);\n if (!view || !view.findHighDownDispatchers) {\n return ret;\n }\n var dispatchers = view.findHighDownDispatchers(name);\n // At presnet, the component (like Geo) only blur inside itself.\n // So we do not use `blurScope` in component.\n var focusSelf;\n for (var i = 0; i < dispatchers.length; i++) {\n if (process.env.NODE_ENV !== 'production' && !isHighDownDispatcher(dispatchers[i])) {\n error('param should be highDownDispatcher');\n }\n if (getECData(dispatchers[i]).focus === 'self') {\n focusSelf = true;\n break;\n }\n }\n return {\n focusSelf: focusSelf,\n dispatchers: dispatchers\n };\n}\nexport function handleGlobalMouseOverForHighDown(dispatcher, e, api) {\n if (process.env.NODE_ENV !== 'production' && !isHighDownDispatcher(dispatcher)) {\n error('param should be highDownDispatcher');\n }\n var ecData = getECData(dispatcher);\n var _a = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api),\n dispatchers = _a.dispatchers,\n focusSelf = _a.focusSelf;\n // If `findHighDownDispatchers` is supported on the component,\n // highlight/downplay elements with the same name.\n if (dispatchers) {\n if (focusSelf) {\n blurComponent(ecData.componentMainType, ecData.componentIndex, api);\n }\n each(dispatchers, function (dispatcher) {\n return enterEmphasisWhenMouseOver(dispatcher, e);\n });\n } else {\n // Try blur all in the related series. Then emphasis the hoverred.\n // TODO. progressive mode.\n blurSeries(ecData.seriesIndex, ecData.focus, ecData.blurScope, api);\n if (ecData.focus === 'self') {\n blurComponent(ecData.componentMainType, ecData.componentIndex, api);\n }\n // Other than series, component that not support `findHighDownDispatcher` will\n // also use it. But in this case, highlight/downplay are only supported in\n // mouse hover but not in dispatchAction.\n enterEmphasisWhenMouseOver(dispatcher, e);\n }\n}\nexport function handleGlobalMouseOutForHighDown(dispatcher, e, api) {\n if (process.env.NODE_ENV !== 'production' && !isHighDownDispatcher(dispatcher)) {\n error('param should be highDownDispatcher');\n }\n allLeaveBlur(api);\n var ecData = getECData(dispatcher);\n var dispatchers = findComponentHighDownDispatchers(ecData.componentMainType, ecData.componentIndex, ecData.componentHighDownName, api).dispatchers;\n if (dispatchers) {\n each(dispatchers, function (dispatcher) {\n return leaveEmphasisWhenMouseOut(dispatcher, e);\n });\n } else {\n leaveEmphasisWhenMouseOut(dispatcher, e);\n }\n}\nexport function toggleSelectionFromPayload(seriesModel, payload, api) {\n if (!isSelectChangePayload(payload)) {\n return;\n }\n var dataType = payload.dataType;\n var data = seriesModel.getData(dataType);\n var dataIndex = queryDataIndex(data, payload);\n if (!isArray(dataIndex)) {\n dataIndex = [dataIndex];\n }\n seriesModel[payload.type === TOGGLE_SELECT_ACTION_TYPE ? 'toggleSelect' : payload.type === SELECT_ACTION_TYPE ? 'select' : 'unselect'](dataIndex, dataType);\n}\nexport function updateSeriesElementSelection(seriesModel) {\n var allData = seriesModel.getAllData();\n each(allData, function (_a) {\n var data = _a.data,\n type = _a.type;\n data.eachItemGraphicEl(function (el, idx) {\n seriesModel.isSelected(idx, type) ? enterSelect(el) : leaveSelect(el);\n });\n });\n}\nexport function getAllSelectedIndices(ecModel) {\n var ret = [];\n ecModel.eachSeries(function (seriesModel) {\n var allData = seriesModel.getAllData();\n each(allData, function (_a) {\n var data = _a.data,\n type = _a.type;\n var dataIndices = seriesModel.getSelectedDataIndices();\n if (dataIndices.length > 0) {\n var item = {\n dataIndex: dataIndices,\n seriesIndex: seriesModel.seriesIndex\n };\n if (type != null) {\n item.dataType = type;\n }\n ret.push(item);\n }\n });\n });\n return ret;\n}\n/**\r\n * Enable the function that mouseover will trigger the emphasis state.\r\n *\r\n * NOTE:\r\n * This function should be used on the element with dataIndex, seriesIndex.\r\n *\r\n */\nexport function enableHoverEmphasis(el, focus, blurScope) {\n setAsHighDownDispatcher(el, true);\n traverseUpdateState(el, setDefaultStateProxy);\n enableHoverFocus(el, focus, blurScope);\n}\nexport function disableHoverEmphasis(el) {\n setAsHighDownDispatcher(el, false);\n}\nexport function toggleHoverEmphasis(el, focus, blurScope, isDisabled) {\n isDisabled ? disableHoverEmphasis(el) : enableHoverEmphasis(el, focus, blurScope);\n}\nexport function enableHoverFocus(el, focus, blurScope) {\n var ecData = getECData(el);\n if (focus != null) {\n // TODO dataIndex may be set after this function. This check is not useful.\n // if (ecData.dataIndex == null) {\n // if (__DEV__) {\n // console.warn('focus can only been set on element with dataIndex');\n // }\n // }\n // else {\n ecData.focus = focus;\n ecData.blurScope = blurScope;\n // }\n } else if (ecData.focus) {\n ecData.focus = null;\n }\n}\nvar OTHER_STATES = ['emphasis', 'blur', 'select'];\nvar defaultStyleGetterMap = {\n itemStyle: 'getItemStyle',\n lineStyle: 'getLineStyle',\n areaStyle: 'getAreaStyle'\n};\n/**\r\n * Set emphasis/blur/selected states of element.\r\n */\nexport function setStatesStylesFromModel(el, itemModel, styleType,\n// default itemStyle\ngetter) {\n styleType = styleType || 'itemStyle';\n for (var i = 0; i < OTHER_STATES.length; i++) {\n var stateName = OTHER_STATES[i];\n var model = itemModel.getModel([stateName, styleType]);\n var state = el.ensureState(stateName);\n // Let it throw error if getterType is not found.\n state.style = getter ? getter(model) : model[defaultStyleGetterMap[styleType]]();\n }\n}\n/**\r\n *\r\n * Set element as highlight / downplay dispatcher.\r\n * It will be checked when element received mouseover event or from highlight action.\r\n * It's in change of all highlight/downplay behavior of it's children.\r\n *\r\n * @param el\r\n * @param el.highDownSilentOnTouch\r\n * In touch device, mouseover event will be trigger on touchstart event\r\n * (see module:zrender/dom/HandlerProxy). By this mechanism, we can\r\n * conveniently use hoverStyle when tap on touch screen without additional\r\n * code for compatibility.\r\n * But if the chart/component has select feature, which usually also use\r\n * hoverStyle, there might be conflict between 'select-highlight' and\r\n * 'hover-highlight' especially when roam is enabled (see geo for example).\r\n * In this case, `highDownSilentOnTouch` should be used to disable\r\n * hover-highlight on touch device.\r\n * @param asDispatcher If `false`, do not set as \"highDownDispatcher\".\r\n */\nexport function setAsHighDownDispatcher(el, asDispatcher) {\n var disable = asDispatcher === false;\n var extendedEl = el;\n // Make `highDownSilentOnTouch` and `onStateChange` only work after\n // `setAsHighDownDispatcher` called. Avoid it is modified by user unexpectedly.\n if (el.highDownSilentOnTouch) {\n extendedEl.__highDownSilentOnTouch = el.highDownSilentOnTouch;\n }\n // Simple optimize, since this method might be\n // called for each elements of a group in some cases.\n if (!disable || extendedEl.__highDownDispatcher) {\n // Emphasis, normal can be triggered manually by API or other components like hover link.\n // el[method]('emphasis', onElementEmphasisEvent)[method]('normal', onElementNormalEvent);\n // Also keep previous record.\n extendedEl.__highByOuter = extendedEl.__highByOuter || 0;\n extendedEl.__highDownDispatcher = !disable;\n }\n}\nexport function isHighDownDispatcher(el) {\n return !!(el && el.__highDownDispatcher);\n}\n/**\r\n * Enable component highlight/downplay features:\r\n * + hover link (within the same name)\r\n * + focus blur in component\r\n */\nexport function enableComponentHighDownFeatures(el, componentModel, componentHighDownName) {\n var ecData = getECData(el);\n ecData.componentMainType = componentModel.mainType;\n ecData.componentIndex = componentModel.componentIndex;\n ecData.componentHighDownName = componentHighDownName;\n}\n/**\r\n * Support highlight/downplay record on each elements.\r\n * For the case: hover highlight/downplay (legend, visualMap, ...) and\r\n * user triggered highlight/downplay should not conflict.\r\n * Only all of the highlightDigit cleared, return to normal.\r\n * @param {string} highlightKey\r\n * @return {number} highlightDigit\r\n */\nexport function getHighlightDigit(highlightKey) {\n var highlightDigit = _highlightKeyMap[highlightKey];\n if (highlightDigit == null && _highlightNextDigit <= 32) {\n highlightDigit = _highlightKeyMap[highlightKey] = _highlightNextDigit++;\n }\n return highlightDigit;\n}\nexport function isSelectChangePayload(payload) {\n var payloadType = payload.type;\n return payloadType === SELECT_ACTION_TYPE || payloadType === UNSELECT_ACTION_TYPE || payloadType === TOGGLE_SELECT_ACTION_TYPE;\n}\nexport function isHighDownPayload(payload) {\n var payloadType = payload.type;\n return payloadType === HIGHLIGHT_ACTION_TYPE || payloadType === DOWNPLAY_ACTION_TYPE;\n}\nexport function savePathStates(el) {\n var store = getSavedStates(el);\n store.normalFill = el.style.fill;\n store.normalStroke = el.style.stroke;\n var selectState = el.states.select || {};\n store.selectFill = selectState.style && selectState.style.fill || null;\n store.selectStroke = selectState.style && selectState.style.stroke || null;\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as pathTool from 'zrender/lib/tool/path.js';\nimport * as matrix from 'zrender/lib/core/matrix.js';\nimport * as vector from 'zrender/lib/core/vector.js';\nimport Path from 'zrender/lib/graphic/Path.js';\nimport Transformable from 'zrender/lib/core/Transformable.js';\nimport ZRImage from 'zrender/lib/graphic/Image.js';\nimport Group from 'zrender/lib/graphic/Group.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\nimport Circle from 'zrender/lib/graphic/shape/Circle.js';\nimport Ellipse from 'zrender/lib/graphic/shape/Ellipse.js';\nimport Sector from 'zrender/lib/graphic/shape/Sector.js';\nimport Ring from 'zrender/lib/graphic/shape/Ring.js';\nimport Polygon from 'zrender/lib/graphic/shape/Polygon.js';\nimport Polyline from 'zrender/lib/graphic/shape/Polyline.js';\nimport Rect from 'zrender/lib/graphic/shape/Rect.js';\nimport Line from 'zrender/lib/graphic/shape/Line.js';\nimport BezierCurve from 'zrender/lib/graphic/shape/BezierCurve.js';\nimport Arc from 'zrender/lib/graphic/shape/Arc.js';\nimport CompoundPath from 'zrender/lib/graphic/CompoundPath.js';\nimport LinearGradient from 'zrender/lib/graphic/LinearGradient.js';\nimport RadialGradient from 'zrender/lib/graphic/RadialGradient.js';\nimport BoundingRect from 'zrender/lib/core/BoundingRect.js';\nimport OrientedBoundingRect from 'zrender/lib/core/OrientedBoundingRect.js';\nimport Point from 'zrender/lib/core/Point.js';\nimport IncrementalDisplayable from 'zrender/lib/graphic/IncrementalDisplayable.js';\nimport * as subPixelOptimizeUtil from 'zrender/lib/graphic/helper/subPixelOptimize.js';\nimport { extend, isArrayLike, map, defaults, isString, keys, each, hasOwn, isArray } from 'zrender/lib/core/util.js';\nimport { getECData } from './innerStore.js';\nimport { updateProps, initProps, removeElement, removeElementWithFadeOut, isElementRemoved } from '../animation/basicTransition.js';\n/**\r\n * @deprecated export for compatitable reason\r\n */\nexport { updateProps, initProps, removeElement, removeElementWithFadeOut, isElementRemoved };\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar _customShapeMap = {};\n/**\r\n * Extend shape with parameters\r\n */\nexport function extendShape(opts) {\n return Path.extend(opts);\n}\nvar extendPathFromString = pathTool.extendFromString;\n/**\r\n * Extend path\r\n */\nexport function extendPath(pathData, opts) {\n return extendPathFromString(pathData, opts);\n}\n/**\r\n * Register a user defined shape.\r\n * The shape class can be fetched by `getShapeClass`\r\n * This method will overwrite the registered shapes, including\r\n * the registered built-in shapes, if using the same `name`.\r\n * The shape can be used in `custom series` and\r\n * `graphic component` by declaring `{type: name}`.\r\n *\r\n * @param name\r\n * @param ShapeClass Can be generated by `extendShape`.\r\n */\nexport function registerShape(name, ShapeClass) {\n _customShapeMap[name] = ShapeClass;\n}\n/**\r\n * Find shape class registered by `registerShape`. Usually used in\r\n * fetching user defined shape.\r\n *\r\n * [Caution]:\r\n * (1) This method **MUST NOT be used inside echarts !!!**, unless it is prepared\r\n * to use user registered shapes.\r\n * Because the built-in shape (see `getBuiltInShape`) will be registered by\r\n * `registerShape` by default. That enables users to get both built-in\r\n * shapes as well as the shapes belonging to themsleves. But users can overwrite\r\n * the built-in shapes by using names like 'circle', 'rect' via calling\r\n * `registerShape`. So the echarts inner featrues should not fetch shapes from here\r\n * in case that it is overwritten by users, except that some features, like\r\n * `custom series`, `graphic component`, do it deliberately.\r\n *\r\n * (2) In the features like `custom series`, `graphic component`, the user input\r\n * `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic\r\n * elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names\r\n * are reserved names, that is, if some user registers a shape named `'image'`,\r\n * the shape will not be used. If we intending to add some more reserved names\r\n * in feature, that might bring break changes (disable some existing user shape\r\n * names). But that case probably rarely happens. So we don't make more mechanism\r\n * to resolve this issue here.\r\n *\r\n * @param name\r\n * @return The shape class. If not found, return nothing.\r\n */\nexport function getShapeClass(name) {\n if (_customShapeMap.hasOwnProperty(name)) {\n return _customShapeMap[name];\n }\n}\n/**\r\n * Create a path element from path data string\r\n * @param pathData\r\n * @param opts\r\n * @param rect\r\n * @param layout 'center' or 'cover' default to be cover\r\n */\nexport function makePath(pathData, opts, rect, layout) {\n var path = pathTool.createFromString(pathData, opts);\n if (rect) {\n if (layout === 'center') {\n rect = centerGraphic(rect, path.getBoundingRect());\n }\n resizePath(path, rect);\n }\n return path;\n}\n/**\r\n * Create a image element from image url\r\n * @param imageUrl image url\r\n * @param opts options\r\n * @param rect constrain rect\r\n * @param layout 'center' or 'cover'. Default to be 'cover'\r\n */\nexport function makeImage(imageUrl, rect, layout) {\n var zrImg = new ZRImage({\n style: {\n image: imageUrl,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n },\n onload: function (img) {\n if (layout === 'center') {\n var boundingRect = {\n width: img.width,\n height: img.height\n };\n zrImg.setStyle(centerGraphic(rect, boundingRect));\n }\n }\n });\n return zrImg;\n}\n/**\r\n * Get position of centered element in bounding box.\r\n *\r\n * @param rect element local bounding box\r\n * @param boundingRect constraint bounding box\r\n * @return element position containing x, y, width, and height\r\n */\nfunction centerGraphic(rect, boundingRect) {\n // Set rect to center, keep width / height ratio.\n var aspect = boundingRect.width / boundingRect.height;\n var width = rect.height * aspect;\n var height;\n if (width <= rect.width) {\n height = rect.height;\n } else {\n width = rect.width;\n height = width / aspect;\n }\n var cx = rect.x + rect.width / 2;\n var cy = rect.y + rect.height / 2;\n return {\n x: cx - width / 2,\n y: cy - height / 2,\n width: width,\n height: height\n };\n}\nexport var mergePath = pathTool.mergePath;\n/**\r\n * Resize a path to fit the rect\r\n * @param path\r\n * @param rect\r\n */\nexport function resizePath(path, rect) {\n if (!path.applyTransform) {\n return;\n }\n var pathRect = path.getBoundingRect();\n var m = pathRect.calculateTransform(rect);\n path.applyTransform(m);\n}\n/**\r\n * Sub pixel optimize line for canvas\r\n */\nexport function subPixelOptimizeLine(shape, lineWidth) {\n subPixelOptimizeUtil.subPixelOptimizeLine(shape, shape, {\n lineWidth: lineWidth\n });\n return shape;\n}\n/**\r\n * Sub pixel optimize rect for canvas\r\n */\nexport function subPixelOptimizeRect(param) {\n subPixelOptimizeUtil.subPixelOptimizeRect(param.shape, param.shape, param.style);\n return param;\n}\n/**\r\n * Sub pixel optimize for canvas\r\n *\r\n * @param position Coordinate, such as x, y\r\n * @param lineWidth Should be nonnegative integer.\r\n * @param positiveOrNegative Default false (negative).\r\n * @return Optimized position.\r\n */\nexport var subPixelOptimize = subPixelOptimizeUtil.subPixelOptimize;\n/**\r\n * Get transform matrix of target (param target),\r\n * in coordinate of its ancestor (param ancestor)\r\n *\r\n * @param target\r\n * @param [ancestor]\r\n */\nexport function getTransform(target, ancestor) {\n var mat = matrix.identity([]);\n while (target && target !== ancestor) {\n matrix.mul(mat, target.getLocalTransform(), mat);\n target = target.parent;\n }\n return mat;\n}\n/**\r\n * Apply transform to an vertex.\r\n * @param target [x, y]\r\n * @param transform Can be:\r\n * + Transform matrix: like [1, 0, 0, 1, 0, 0]\r\n * + {position, rotation, scale}, the same as `zrender/Transformable`.\r\n * @param invert Whether use invert matrix.\r\n * @return [x, y]\r\n */\nexport function applyTransform(target, transform, invert) {\n if (transform && !isArrayLike(transform)) {\n transform = Transformable.getLocalTransform(transform);\n }\n if (invert) {\n transform = matrix.invert([], transform);\n }\n return vector.applyTransform([], target, transform);\n}\n/**\r\n * @param direction 'left' 'right' 'top' 'bottom'\r\n * @param transform Transform matrix: like [1, 0, 0, 1, 0, 0]\r\n * @param invert Whether use invert matrix.\r\n * @return Transformed direction. 'left' 'right' 'top' 'bottom'\r\n */\nexport function transformDirection(direction, transform, invert) {\n // Pick a base, ensure that transform result will not be (0, 0).\n var hBase = transform[4] === 0 || transform[5] === 0 || transform[0] === 0 ? 1 : Math.abs(2 * transform[4] / transform[0]);\n var vBase = transform[4] === 0 || transform[5] === 0 || transform[2] === 0 ? 1 : Math.abs(2 * transform[4] / transform[2]);\n var vertex = [direction === 'left' ? -hBase : direction === 'right' ? hBase : 0, direction === 'top' ? -vBase : direction === 'bottom' ? vBase : 0];\n vertex = applyTransform(vertex, transform, invert);\n return Math.abs(vertex[0]) > Math.abs(vertex[1]) ? vertex[0] > 0 ? 'right' : 'left' : vertex[1] > 0 ? 'bottom' : 'top';\n}\nfunction isNotGroup(el) {\n return !el.isGroup;\n}\nfunction isPath(el) {\n return el.shape != null;\n}\n/**\r\n * Apply group transition animation from g1 to g2.\r\n * If no animatableModel, no animation.\r\n */\nexport function groupTransition(g1, g2, animatableModel) {\n if (!g1 || !g2) {\n return;\n }\n function getElMap(g) {\n var elMap = {};\n g.traverse(function (el) {\n if (isNotGroup(el) && el.anid) {\n elMap[el.anid] = el;\n }\n });\n return elMap;\n }\n function getAnimatableProps(el) {\n var obj = {\n x: el.x,\n y: el.y,\n rotation: el.rotation\n };\n if (isPath(el)) {\n obj.shape = extend({}, el.shape);\n }\n return obj;\n }\n var elMap1 = getElMap(g1);\n g2.traverse(function (el) {\n if (isNotGroup(el) && el.anid) {\n var oldEl = elMap1[el.anid];\n if (oldEl) {\n var newProp = getAnimatableProps(el);\n el.attr(getAnimatableProps(oldEl));\n updateProps(el, newProp, animatableModel, getECData(el).dataIndex);\n }\n }\n });\n}\nexport function clipPointsByRect(points, rect) {\n // FIXME: This way might be incorrect when graphic clipped by a corner\n // and when element has a border.\n return map(points, function (point) {\n var x = point[0];\n x = mathMax(x, rect.x);\n x = mathMin(x, rect.x + rect.width);\n var y = point[1];\n y = mathMax(y, rect.y);\n y = mathMin(y, rect.y + rect.height);\n return [x, y];\n });\n}\n/**\r\n * Return a new clipped rect. If rect size are negative, return undefined.\r\n */\nexport function clipRectByRect(targetRect, rect) {\n var x = mathMax(targetRect.x, rect.x);\n var x2 = mathMin(targetRect.x + targetRect.width, rect.x + rect.width);\n var y = mathMax(targetRect.y, rect.y);\n var y2 = mathMin(targetRect.y + targetRect.height, rect.y + rect.height);\n // If the total rect is cliped, nothing, including the border,\n // should be painted. So return undefined.\n if (x2 >= x && y2 >= y) {\n return {\n x: x,\n y: y,\n width: x2 - x,\n height: y2 - y\n };\n }\n}\nexport function createIcon(iconStr,\n// Support 'image://' or 'path://' or direct svg path.\nopt, rect) {\n var innerOpts = extend({\n rectHover: true\n }, opt);\n var style = innerOpts.style = {\n strokeNoScale: true\n };\n rect = rect || {\n x: -1,\n y: -1,\n width: 2,\n height: 2\n };\n if (iconStr) {\n return iconStr.indexOf('image://') === 0 ? (style.image = iconStr.slice(8), defaults(style, rect), new ZRImage(innerOpts)) : makePath(iconStr.replace('path://', ''), innerOpts, rect, 'center');\n }\n}\n/**\r\n * Return `true` if the given line (line `a`) and the given polygon\r\n * are intersect.\r\n * Note that we do not count colinear as intersect here because no\r\n * requirement for that. We could do that if required in future.\r\n */\nexport function linePolygonIntersect(a1x, a1y, a2x, a2y, points) {\n for (var i = 0, p2 = points[points.length - 1]; i < points.length; i++) {\n var p = points[i];\n if (lineLineIntersect(a1x, a1y, a2x, a2y, p[0], p[1], p2[0], p2[1])) {\n return true;\n }\n p2 = p;\n }\n}\n/**\r\n * Return `true` if the given two lines (line `a` and line `b`)\r\n * are intersect.\r\n * Note that we do not count colinear as intersect here because no\r\n * requirement for that. We could do that if required in future.\r\n */\nexport function lineLineIntersect(a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y) {\n // let `vec_m` to be `vec_a2 - vec_a1` and `vec_n` to be `vec_b2 - vec_b1`.\n var mx = a2x - a1x;\n var my = a2y - a1y;\n var nx = b2x - b1x;\n var ny = b2y - b1y;\n // `vec_m` and `vec_n` are parallel iff\n // existing `k` such that `vec_m = k \u00B7 vec_n`, equivalent to `vec_m X vec_n = 0`.\n var nmCrossProduct = crossProduct2d(nx, ny, mx, my);\n if (nearZero(nmCrossProduct)) {\n return false;\n }\n // `vec_m` and `vec_n` are intersect iff\n // existing `p` and `q` in [0, 1] such that `vec_a1 + p * vec_m = vec_b1 + q * vec_n`,\n // such that `q = ((vec_a1 - vec_b1) X vec_m) / (vec_n X vec_m)`\n // and `p = ((vec_a1 - vec_b1) X vec_n) / (vec_n X vec_m)`.\n var b1a1x = a1x - b1x;\n var b1a1y = a1y - b1y;\n var q = crossProduct2d(b1a1x, b1a1y, mx, my) / nmCrossProduct;\n if (q < 0 || q > 1) {\n return false;\n }\n var p = crossProduct2d(b1a1x, b1a1y, nx, ny) / nmCrossProduct;\n if (p < 0 || p > 1) {\n return false;\n }\n return true;\n}\n/**\r\n * Cross product of 2-dimension vector.\r\n */\nfunction crossProduct2d(x1, y1, x2, y2) {\n return x1 * y2 - x2 * y1;\n}\nfunction nearZero(val) {\n return val <= 1e-6 && val >= -1e-6;\n}\nexport function setTooltipConfig(opt) {\n var itemTooltipOption = opt.itemTooltipOption;\n var componentModel = opt.componentModel;\n var itemName = opt.itemName;\n var itemTooltipOptionObj = isString(itemTooltipOption) ? {\n formatter: itemTooltipOption\n } : itemTooltipOption;\n var mainType = componentModel.mainType;\n var componentIndex = componentModel.componentIndex;\n var formatterParams = {\n componentType: mainType,\n name: itemName,\n $vars: ['name']\n };\n formatterParams[mainType + 'Index'] = componentIndex;\n var formatterParamsExtra = opt.formatterParamsExtra;\n if (formatterParamsExtra) {\n each(keys(formatterParamsExtra), function (key) {\n if (!hasOwn(formatterParams, key)) {\n formatterParams[key] = formatterParamsExtra[key];\n formatterParams.$vars.push(key);\n }\n });\n }\n var ecData = getECData(opt.el);\n ecData.componentMainType = mainType;\n ecData.componentIndex = componentIndex;\n ecData.tooltipConfig = {\n name: itemName,\n option: defaults({\n content: itemName,\n encodeHTMLContent: true,\n formatterParams: formatterParams\n }, itemTooltipOptionObj)\n };\n}\nfunction traverseElement(el, cb) {\n var stopped;\n // TODO\n // Polyfill for fixing zrender group traverse don't visit it's root issue.\n if (el.isGroup) {\n stopped = cb(el);\n }\n if (!stopped) {\n el.traverse(cb);\n }\n}\nexport function traverseElements(els, cb) {\n if (els) {\n if (isArray(els)) {\n for (var i = 0; i < els.length; i++) {\n traverseElement(els[i], cb);\n }\n } else {\n traverseElement(els, cb);\n }\n }\n}\n// Register built-in shapes. These shapes might be overwritten\n// by users, although we do not recommend that.\nregisterShape('circle', Circle);\nregisterShape('ellipse', Ellipse);\nregisterShape('sector', Sector);\nregisterShape('ring', Ring);\nregisterShape('polygon', Polygon);\nregisterShape('polyline', Polyline);\nregisterShape('rect', Rect);\nregisterShape('line', Line);\nregisterShape('bezierCurve', BezierCurve);\nregisterShape('arc', Arc);\nexport { Group, ZRImage as Image, ZRText as Text, Circle, Ellipse, Sector, Ring, Polygon, Polyline, Rect, Line, BezierCurve, Arc, IncrementalDisplayable, CompoundPath, LinearGradient, RadialGradient, BoundingRect, OrientedBoundingRect, Point, Path };", "import PathProxy from '../core/PathProxy.js';\nimport { applyTransform as v2ApplyTransform } from '../core/vector.js';\nvar CMD = PathProxy.CMD;\nvar points = [[], [], []];\nvar mathSqrt = Math.sqrt;\nvar mathAtan2 = Math.atan2;\nexport default function transformPath(path, m) {\n if (!m) {\n return;\n }\n var data = path.data;\n var len = path.len();\n var cmd;\n var nPoint;\n var i;\n var j;\n var k;\n var p;\n var M = CMD.M;\n var C = CMD.C;\n var L = CMD.L;\n var R = CMD.R;\n var A = CMD.A;\n var Q = CMD.Q;\n for (i = 0, j = 0; i < len;) {\n cmd = data[i++];\n j = i;\n nPoint = 0;\n switch (cmd) {\n case M:\n nPoint = 1;\n break;\n case L:\n nPoint = 1;\n break;\n case C:\n nPoint = 3;\n break;\n case Q:\n nPoint = 2;\n break;\n case A:\n var x = m[4];\n var y = m[5];\n var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);\n var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);\n var angle = mathAtan2(-m[1] / sy, m[0] / sx);\n data[i] *= sx;\n data[i++] += x;\n data[i] *= sy;\n data[i++] += y;\n data[i++] *= sx;\n data[i++] *= sy;\n data[i++] += angle;\n data[i++] += angle;\n i += 2;\n j = i;\n break;\n case R:\n p[0] = data[i++];\n p[1] = data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n p[0] += data[i++];\n p[1] += data[i++];\n v2ApplyTransform(p, p, m);\n data[j++] = p[0];\n data[j++] = p[1];\n }\n for (k = 0; k < nPoint; k++) {\n var p_1 = points[k];\n p_1[0] = data[i++];\n p_1[1] = data[i++];\n v2ApplyTransform(p_1, p_1, m);\n data[j++] = p_1[0];\n data[j++] = p_1[1];\n }\n }\n path.increaseVersion();\n}\n", "import { __extends } from \"tslib\";\nimport Path from '../graphic/Path.js';\nimport PathProxy from '../core/PathProxy.js';\nimport transformPath from './transformPath.js';\nimport { extend } from '../core/util.js';\nvar mathSqrt = Math.sqrt;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI = Math.PI;\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n;\nfunction vRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n}\n;\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1)\n * Math.acos(vRatio(u, v));\n}\n;\nfunction processArc(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg, cmd, path) {\n var psi = psiDeg * (PI / 180.0);\n var xp = mathCos(psi) * (x1 - x2) / 2.0\n + mathSin(psi) * (y1 - y2) / 2.0;\n var yp = -1 * mathSin(psi) * (x1 - x2) / 2.0\n + mathCos(psi) * (y1 - y2) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= mathSqrt(lambda);\n ry *= mathSqrt(lambda);\n }\n var f = (fa === fs ? -1 : 1)\n * mathSqrt((((rx * rx) * (ry * ry))\n - ((rx * rx) * (yp * yp))\n - ((ry * ry) * (xp * xp))) / ((rx * rx) * (yp * yp)\n + (ry * ry) * (xp * xp))) || 0;\n var cxp = f * rx * yp / ry;\n var cyp = f * -ry * xp / rx;\n var cx = (x1 + x2) / 2.0\n + mathCos(psi) * cxp\n - mathSin(psi) * cyp;\n var cy = (y1 + y2) / 2.0\n + mathSin(psi) * cxp\n + mathCos(psi) * cyp;\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (dTheta < 0) {\n var n = Math.round(dTheta / PI * 1e6) / 1e6;\n dTheta = PI * 2 + (n % 2) * PI;\n }\n path.addData(cmd, cx, cy, rx, ry, theta, dTheta, psi, fs);\n}\nvar commandReg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig;\nvar numberReg = /-?([0-9]*\\.)?[0-9]+([eE]-?[0-9]+)?/g;\nfunction createPathProxyFromString(data) {\n var path = new PathProxy();\n if (!data) {\n return path;\n }\n var cpx = 0;\n var cpy = 0;\n var subpathX = cpx;\n var subpathY = cpy;\n var prevCmd;\n var CMD = PathProxy.CMD;\n var cmdList = data.match(commandReg);\n if (!cmdList) {\n return path;\n }\n for (var l = 0; l < cmdList.length; l++) {\n var cmdText = cmdList[l];\n var cmdStr = cmdText.charAt(0);\n var cmd = void 0;\n var p = cmdText.match(numberReg) || [];\n var pLen = p.length;\n for (var i = 0; i < pLen; i++) {\n p[i] = parseFloat(p[i]);\n }\n var off = 0;\n while (off < pLen) {\n var ctlPtx = void 0;\n var ctlPty = void 0;\n var rx = void 0;\n var ry = void 0;\n var psi = void 0;\n var fa = void 0;\n var fs = void 0;\n var x1 = cpx;\n var y1 = cpy;\n var len = void 0;\n var pathData = void 0;\n switch (cmdStr) {\n case 'l':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'L':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'm':\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'l';\n break;\n case 'M':\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.M;\n path.addData(cmd, cpx, cpy);\n subpathX = cpx;\n subpathY = cpy;\n cmdStr = 'L';\n break;\n case 'h':\n cpx += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'H':\n cpx = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'v':\n cpy += p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'V':\n cpy = p[off++];\n cmd = CMD.L;\n path.addData(cmd, cpx, cpy);\n break;\n case 'C':\n cmd = CMD.C;\n path.addData(cmd, p[off++], p[off++], p[off++], p[off++], p[off++], p[off++]);\n cpx = p[off - 2];\n cpy = p[off - 1];\n break;\n case 'c':\n cmd = CMD.C;\n path.addData(cmd, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy, p[off++] + cpx, p[off++] + cpy);\n cpx += p[off - 2];\n cpy += p[off - 1];\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cmd = CMD.C;\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.C) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cmd = CMD.C;\n x1 = cpx + p[off++];\n y1 = cpy + p[off++];\n cpx += p[off++];\n cpy += p[off++];\n path.addData(cmd, ctlPtx, ctlPty, x1, y1, cpx, cpy);\n break;\n case 'Q':\n x1 = p[off++];\n y1 = p[off++];\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n case 'q':\n x1 = p[off++] + cpx;\n y1 = p[off++] + cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, x1, y1, cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n len = path.len();\n pathData = path.data;\n if (prevCmd === CMD.Q) {\n ctlPtx += cpx - pathData[len - 4];\n ctlPty += cpy - pathData[len - 3];\n }\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.Q;\n path.addData(cmd, ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx = p[off++];\n cpy = p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n case 'a':\n rx = p[off++];\n ry = p[off++];\n psi = p[off++];\n fa = p[off++];\n fs = p[off++];\n x1 = cpx, y1 = cpy;\n cpx += p[off++];\n cpy += p[off++];\n cmd = CMD.A;\n processArc(x1, y1, cpx, cpy, fa, fs, rx, ry, psi, cmd, path);\n break;\n }\n }\n if (cmdStr === 'z' || cmdStr === 'Z') {\n cmd = CMD.Z;\n path.addData(cmd);\n cpx = subpathX;\n cpy = subpathY;\n }\n prevCmd = cmd;\n }\n path.toStatic();\n return path;\n}\nvar SVGPath = (function (_super) {\n __extends(SVGPath, _super);\n function SVGPath() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SVGPath.prototype.applyTransform = function (m) { };\n return SVGPath;\n}(Path));\nfunction isPathProxy(path) {\n return path.setData != null;\n}\nfunction createPathOptions(str, opts) {\n var pathProxy = createPathProxyFromString(str);\n var innerOpts = extend({}, opts);\n innerOpts.buildPath = function (path) {\n if (isPathProxy(path)) {\n path.setData(pathProxy.data);\n var ctx = path.getContext();\n if (ctx) {\n path.rebuildPath(ctx, 1);\n }\n }\n else {\n var ctx = path;\n pathProxy.rebuildPath(ctx, 1);\n }\n };\n innerOpts.applyTransform = function (m) {\n transformPath(pathProxy, m);\n this.dirtyShape();\n };\n return innerOpts;\n}\nexport function createFromString(str, opts) {\n return new SVGPath(createPathOptions(str, opts));\n}\nexport function extendFromString(str, defaultOpts) {\n var innerOpts = createPathOptions(str, defaultOpts);\n var Sub = (function (_super) {\n __extends(Sub, _super);\n function Sub(opts) {\n var _this = _super.call(this, opts) || this;\n _this.applyTransform = innerOpts.applyTransform;\n _this.buildPath = innerOpts.buildPath;\n return _this;\n }\n return Sub;\n }(SVGPath));\n return Sub;\n}\nexport function mergePath(pathEls, opts) {\n var pathList = [];\n var len = pathEls.length;\n for (var i = 0; i < len; i++) {\n var pathEl = pathEls[i];\n pathList.push(pathEl.getUpdatedPathProxy(true));\n }\n var pathBundle = new Path(opts);\n pathBundle.createPathProxy();\n pathBundle.buildPath = function (path) {\n if (isPathProxy(path)) {\n path.appendPath(pathList);\n var ctx = path.getContext();\n if (ctx) {\n path.rebuildPath(ctx, 1);\n }\n }\n };\n return pathBundle;\n}\nexport function clonePath(sourcePath, opts) {\n opts = opts || {};\n var path = new Path();\n if (sourcePath.shape) {\n path.setShape(sourcePath.shape);\n }\n path.setStyle(sourcePath.style);\n if (opts.bakeTransform) {\n transformPath(path.path, sourcePath.getComputedTransform());\n }\n else {\n if (opts.toLocal) {\n path.setLocalTransform(sourcePath.getComputedTransform());\n }\n else {\n path.copyTransform(sourcePath);\n }\n }\n path.buildPath = sourcePath.buildPath;\n path.applyTransform = path.applyTransform;\n path.z = sourcePath.z;\n path.z2 = sourcePath.z2;\n path.zlevel = sourcePath.zlevel;\n return path;\n}\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar CircleShape = (function () {\n function CircleShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n }\n return CircleShape;\n}());\nexport { CircleShape };\nvar Circle = (function (_super) {\n __extends(Circle, _super);\n function Circle(opts) {\n return _super.call(this, opts) || this;\n }\n Circle.prototype.getDefaultShape = function () {\n return new CircleShape();\n };\n Circle.prototype.buildPath = function (ctx, shape) {\n ctx.moveTo(shape.cx + shape.r, shape.cy);\n ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);\n };\n return Circle;\n}(Path));\n;\nCircle.prototype.type = 'circle';\nexport default Circle;\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar EllipseShape = (function () {\n function EllipseShape() {\n this.cx = 0;\n this.cy = 0;\n this.rx = 0;\n this.ry = 0;\n }\n return EllipseShape;\n}());\nexport { EllipseShape };\nvar Ellipse = (function (_super) {\n __extends(Ellipse, _super);\n function Ellipse(opts) {\n return _super.call(this, opts) || this;\n }\n Ellipse.prototype.getDefaultShape = function () {\n return new EllipseShape();\n };\n Ellipse.prototype.buildPath = function (ctx, shape) {\n var k = 0.5522848;\n var x = shape.cx;\n var y = shape.cy;\n var a = shape.rx;\n var b = shape.ry;\n var ox = a * k;\n var oy = b * k;\n ctx.moveTo(x - a, y);\n ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);\n ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);\n ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);\n ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);\n ctx.closePath();\n };\n return Ellipse;\n}(Path));\nEllipse.prototype.type = 'ellipse';\nexport default Ellipse;\n", "import { isArray } from '../../core/util.js';\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar mathACos = Math.acos;\nvar mathATan2 = Math.atan2;\nvar mathAbs = Math.abs;\nvar mathSqrt = Math.sqrt;\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar e = 1e-4;\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var dx10 = x1 - x0;\n var dy10 = y1 - y0;\n var dx32 = x3 - x2;\n var dy32 = y3 - y2;\n var t = dy32 * dx10 - dx32 * dy10;\n if (t * t < e) {\n return;\n }\n t = (dx32 * (y0 - y2) - dy32 * (x0 - x2)) / t;\n return [x0 + t * dx10, y0 + t * dy10];\n}\nfunction computeCornerTangents(x0, y0, x1, y1, radius, cr, clockwise) {\n var x01 = x0 - x1;\n var y01 = y0 - y1;\n var lo = (clockwise ? cr : -cr) / mathSqrt(x01 * x01 + y01 * y01);\n var ox = lo * y01;\n var oy = -lo * x01;\n var x11 = x0 + ox;\n var y11 = y0 + oy;\n var x10 = x1 + ox;\n var y10 = y1 + oy;\n var x00 = (x11 + x10) / 2;\n var y00 = (y11 + y10) / 2;\n var dx = x10 - x11;\n var dy = y10 - y11;\n var d2 = dx * dx + dy * dy;\n var r = radius - cr;\n var s = x11 * y10 - x10 * y11;\n var d = (dy < 0 ? -1 : 1) * mathSqrt(mathMax(0, r * r * d2 - s * s));\n var cx0 = (s * dy - dx * d) / d2;\n var cy0 = (-s * dx - dy * d) / d2;\n var cx1 = (s * dy + dx * d) / d2;\n var cy1 = (-s * dx + dy * d) / d2;\n var dx0 = cx0 - x00;\n var dy0 = cy0 - y00;\n var dx1 = cx1 - x00;\n var dy1 = cy1 - y00;\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\n cx0 = cx1;\n cy0 = cy1;\n }\n return {\n cx: cx0,\n cy: cy0,\n x0: -ox,\n y0: -oy,\n x1: cx0 * (radius / r - 1),\n y1: cy0 * (radius / r - 1)\n };\n}\nfunction normalizeCornerRadius(cr) {\n var arr;\n if (isArray(cr)) {\n var len = cr.length;\n if (!len) {\n return cr;\n }\n if (len === 1) {\n arr = [cr[0], cr[0], 0, 0];\n }\n else if (len === 2) {\n arr = [cr[0], cr[0], cr[1], cr[1]];\n }\n else if (len === 3) {\n arr = cr.concat(cr[2]);\n }\n else {\n arr = cr;\n }\n }\n else {\n arr = [cr, cr, cr, cr];\n }\n return arr;\n}\nexport function buildPath(ctx, shape) {\n var _a;\n var radius = mathMax(shape.r, 0);\n var innerRadius = mathMax(shape.r0 || 0, 0);\n var hasRadius = radius > 0;\n var hasInnerRadius = innerRadius > 0;\n if (!hasRadius && !hasInnerRadius) {\n return;\n }\n if (!hasRadius) {\n radius = innerRadius;\n innerRadius = 0;\n }\n if (innerRadius > radius) {\n var tmp = radius;\n radius = innerRadius;\n innerRadius = tmp;\n }\n var startAngle = shape.startAngle, endAngle = shape.endAngle;\n if (isNaN(startAngle) || isNaN(endAngle)) {\n return;\n }\n var cx = shape.cx, cy = shape.cy;\n var clockwise = !!shape.clockwise;\n var arc = mathAbs(endAngle - startAngle);\n var mod = arc > PI2 && arc % PI2;\n mod > e && (arc = mod);\n if (!(radius > e)) {\n ctx.moveTo(cx, cy);\n }\n else if (arc > PI2 - e) {\n ctx.moveTo(cx + radius * mathCos(startAngle), cy + radius * mathSin(startAngle));\n ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);\n if (innerRadius > e) {\n ctx.moveTo(cx + innerRadius * mathCos(endAngle), cy + innerRadius * mathSin(endAngle));\n ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n }\n }\n else {\n var icrStart = void 0;\n var icrEnd = void 0;\n var ocrStart = void 0;\n var ocrEnd = void 0;\n var ocrs = void 0;\n var ocre = void 0;\n var icrs = void 0;\n var icre = void 0;\n var ocrMax = void 0;\n var icrMax = void 0;\n var limitedOcrMax = void 0;\n var limitedIcrMax = void 0;\n var xre = void 0;\n var yre = void 0;\n var xirs = void 0;\n var yirs = void 0;\n var xrs = radius * mathCos(startAngle);\n var yrs = radius * mathSin(startAngle);\n var xire = innerRadius * mathCos(endAngle);\n var yire = innerRadius * mathSin(endAngle);\n var hasArc = arc > e;\n if (hasArc) {\n var cornerRadius = shape.cornerRadius;\n if (cornerRadius) {\n _a = normalizeCornerRadius(cornerRadius), icrStart = _a[0], icrEnd = _a[1], ocrStart = _a[2], ocrEnd = _a[3];\n }\n var halfRd = mathAbs(radius - innerRadius) / 2;\n ocrs = mathMin(halfRd, ocrStart);\n ocre = mathMin(halfRd, ocrEnd);\n icrs = mathMin(halfRd, icrStart);\n icre = mathMin(halfRd, icrEnd);\n limitedOcrMax = ocrMax = mathMax(ocrs, ocre);\n limitedIcrMax = icrMax = mathMax(icrs, icre);\n if (ocrMax > e || icrMax > e) {\n xre = radius * mathCos(endAngle);\n yre = radius * mathSin(endAngle);\n xirs = innerRadius * mathCos(startAngle);\n yirs = innerRadius * mathSin(startAngle);\n if (arc < PI) {\n var it_1 = intersect(xrs, yrs, xirs, yirs, xre, yre, xire, yire);\n if (it_1) {\n var x0 = xrs - it_1[0];\n var y0 = yrs - it_1[1];\n var x1 = xre - it_1[0];\n var y1 = yre - it_1[1];\n var a = 1 / mathSin(mathACos((x0 * x1 + y0 * y1) / (mathSqrt(x0 * x0 + y0 * y0) * mathSqrt(x1 * x1 + y1 * y1))) / 2);\n var b = mathSqrt(it_1[0] * it_1[0] + it_1[1] * it_1[1]);\n limitedOcrMax = mathMin(ocrMax, (radius - b) / (a + 1));\n limitedIcrMax = mathMin(icrMax, (innerRadius - b) / (a - 1));\n }\n }\n }\n }\n if (!hasArc) {\n ctx.moveTo(cx + xrs, cy + yrs);\n }\n else if (limitedOcrMax > e) {\n var crStart = mathMin(ocrStart, limitedOcrMax);\n var crEnd = mathMin(ocrEnd, limitedOcrMax);\n var ct0 = computeCornerTangents(xirs, yirs, xrs, yrs, radius, crStart, clockwise);\n var ct1 = computeCornerTangents(xre, yre, xire, yire, radius, crEnd, clockwise);\n ctx.moveTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);\n if (limitedOcrMax < ocrMax && crStart === crEnd) {\n ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedOcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n else {\n crStart > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crStart, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);\n ctx.arc(cx, cy, radius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), !clockwise);\n crEnd > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crEnd, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n }\n else {\n ctx.moveTo(cx + xrs, cy + yrs);\n ctx.arc(cx, cy, radius, startAngle, endAngle, !clockwise);\n }\n if (!(innerRadius > e) || !hasArc) {\n ctx.lineTo(cx + xire, cy + yire);\n }\n else if (limitedIcrMax > e) {\n var crStart = mathMin(icrStart, limitedIcrMax);\n var crEnd = mathMin(icrEnd, limitedIcrMax);\n var ct0 = computeCornerTangents(xire, yire, xre, yre, innerRadius, -crEnd, clockwise);\n var ct1 = computeCornerTangents(xrs, yrs, xirs, yirs, innerRadius, -crStart, clockwise);\n ctx.lineTo(cx + ct0.cx + ct0.x0, cy + ct0.cy + ct0.y0);\n if (limitedIcrMax < icrMax && crStart === crEnd) {\n ctx.arc(cx + ct0.cx, cy + ct0.cy, limitedIcrMax, mathATan2(ct0.y0, ct0.x0), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n else {\n crEnd > 0 && ctx.arc(cx + ct0.cx, cy + ct0.cy, crEnd, mathATan2(ct0.y0, ct0.x0), mathATan2(ct0.y1, ct0.x1), !clockwise);\n ctx.arc(cx, cy, innerRadius, mathATan2(ct0.cy + ct0.y1, ct0.cx + ct0.x1), mathATan2(ct1.cy + ct1.y1, ct1.cx + ct1.x1), clockwise);\n crStart > 0 && ctx.arc(cx + ct1.cx, cy + ct1.cy, crStart, mathATan2(ct1.y1, ct1.x1), mathATan2(ct1.y0, ct1.x0), !clockwise);\n }\n }\n else {\n ctx.lineTo(cx + xire, cy + yire);\n ctx.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n }\n }\n ctx.closePath();\n}\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundSectorHelper from '../helper/roundSector.js';\nvar SectorShape = (function () {\n function SectorShape() {\n this.cx = 0;\n this.cy = 0;\n this.r0 = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n this.cornerRadius = 0;\n }\n return SectorShape;\n}());\nexport { SectorShape };\nvar Sector = (function (_super) {\n __extends(Sector, _super);\n function Sector(opts) {\n return _super.call(this, opts) || this;\n }\n Sector.prototype.getDefaultShape = function () {\n return new SectorShape();\n };\n Sector.prototype.buildPath = function (ctx, shape) {\n roundSectorHelper.buildPath(ctx, shape);\n };\n Sector.prototype.isZeroArea = function () {\n return this.shape.startAngle === this.shape.endAngle\n || this.shape.r === this.shape.r0;\n };\n return Sector;\n}(Path));\nSector.prototype.type = 'sector';\nexport default Sector;\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar RingShape = (function () {\n function RingShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n this.r0 = 0;\n }\n return RingShape;\n}());\nexport { RingShape };\nvar Ring = (function (_super) {\n __extends(Ring, _super);\n function Ring(opts) {\n return _super.call(this, opts) || this;\n }\n Ring.prototype.getDefaultShape = function () {\n return new RingShape();\n };\n Ring.prototype.buildPath = function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var PI2 = Math.PI * 2;\n ctx.moveTo(x + shape.r, y);\n ctx.arc(x, y, shape.r, 0, PI2, false);\n ctx.moveTo(x + shape.r0, y);\n ctx.arc(x, y, shape.r0, 0, PI2, true);\n };\n return Ring;\n}(Path));\nRing.prototype.type = 'ring';\nexport default Ring;\n", "import { min as v2Min, max as v2Max, scale as v2Scale, distance as v2Distance, add as v2Add, clone as v2Clone, sub as v2Sub } from '../../core/vector.js';\nexport default function smoothBezier(points, smooth, isLoop, constraint) {\n var cps = [];\n var v = [];\n var v1 = [];\n var v2 = [];\n var prevPoint;\n var nextPoint;\n var min;\n var max;\n if (constraint) {\n min = [Infinity, Infinity];\n max = [-Infinity, -Infinity];\n for (var i = 0, len = points.length; i < len; i++) {\n v2Min(min, min, points[i]);\n v2Max(max, max, points[i]);\n }\n v2Min(min, min, constraint[0]);\n v2Max(max, max, constraint[1]);\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if (isLoop) {\n prevPoint = points[i ? i - 1 : len - 1];\n nextPoint = points[(i + 1) % len];\n }\n else {\n if (i === 0 || i === len - 1) {\n cps.push(v2Clone(points[i]));\n continue;\n }\n else {\n prevPoint = points[i - 1];\n nextPoint = points[i + 1];\n }\n }\n v2Sub(v, nextPoint, prevPoint);\n v2Scale(v, v, smooth);\n var d0 = v2Distance(point, prevPoint);\n var d1 = v2Distance(point, nextPoint);\n var sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n v2Scale(v1, v, -d0);\n v2Scale(v2, v, d1);\n var cp0 = v2Add([], point, v1);\n var cp1 = v2Add([], point, v2);\n if (constraint) {\n v2Max(cp0, cp0, min);\n v2Min(cp0, cp0, max);\n v2Max(cp1, cp1, min);\n v2Min(cp1, cp1, max);\n }\n cps.push(cp0);\n cps.push(cp1);\n }\n if (isLoop) {\n cps.push(cps.shift());\n }\n return cps;\n}\n", "import smoothBezier from './smoothBezier.js';\nexport function buildPath(ctx, shape, closePath) {\n var smooth = shape.smooth;\n var points = shape.points;\n if (points && points.length >= 2) {\n if (smooth) {\n var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);\n ctx.moveTo(points[0][0], points[0][1]);\n var len = points.length;\n for (var i = 0; i < (closePath ? len : len - 1); i++) {\n var cp1 = controlPoints[i * 2];\n var cp2 = controlPoints[i * 2 + 1];\n var p = points[(i + 1) % len];\n ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);\n }\n }\n else {\n ctx.moveTo(points[0][0], points[0][1]);\n for (var i = 1, l = points.length; i < l; i++) {\n ctx.lineTo(points[i][0], points[i][1]);\n }\n }\n closePath && ctx.closePath();\n }\n}\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as polyHelper from '../helper/poly.js';\nvar PolygonShape = (function () {\n function PolygonShape() {\n this.points = null;\n this.smooth = 0;\n this.smoothConstraint = null;\n }\n return PolygonShape;\n}());\nexport { PolygonShape };\nvar Polygon = (function (_super) {\n __extends(Polygon, _super);\n function Polygon(opts) {\n return _super.call(this, opts) || this;\n }\n Polygon.prototype.getDefaultShape = function () {\n return new PolygonShape();\n };\n Polygon.prototype.buildPath = function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, true);\n };\n return Polygon;\n}(Path));\n;\nPolygon.prototype.type = 'polygon';\nexport default Polygon;\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as polyHelper from '../helper/poly.js';\nvar PolylineShape = (function () {\n function PolylineShape() {\n this.points = null;\n this.percent = 1;\n this.smooth = 0;\n this.smoothConstraint = null;\n }\n return PolylineShape;\n}());\nexport { PolylineShape };\nvar Polyline = (function (_super) {\n __extends(Polyline, _super);\n function Polyline(opts) {\n return _super.call(this, opts) || this;\n }\n Polyline.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Polyline.prototype.getDefaultShape = function () {\n return new PolylineShape();\n };\n Polyline.prototype.buildPath = function (ctx, shape) {\n polyHelper.buildPath(ctx, shape, false);\n };\n return Polyline;\n}(Path));\nPolyline.prototype.type = 'polyline';\nexport default Polyline;\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport { subPixelOptimizeLine } from '../helper/subPixelOptimize.js';\nvar subPixelOptimizeOutputShape = {};\nvar LineShape = (function () {\n function LineShape() {\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.percent = 1;\n }\n return LineShape;\n}());\nexport { LineShape };\nvar Line = (function (_super) {\n __extends(Line, _super);\n function Line(opts) {\n return _super.call(this, opts) || this;\n }\n Line.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Line.prototype.getDefaultShape = function () {\n return new LineShape();\n };\n Line.prototype.buildPath = function (ctx, shape) {\n var x1;\n var y1;\n var x2;\n var y2;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeLine(subPixelOptimizeOutputShape, shape, this.style);\n x1 = optimizedShape.x1;\n y1 = optimizedShape.y1;\n x2 = optimizedShape.x2;\n y2 = optimizedShape.y2;\n }\n else {\n x1 = shape.x1;\n y1 = shape.y1;\n x2 = shape.x2;\n y2 = shape.y2;\n }\n var percent = shape.percent;\n if (percent === 0) {\n return;\n }\n ctx.moveTo(x1, y1);\n if (percent < 1) {\n x2 = x1 * (1 - percent) + x2 * percent;\n y2 = y1 * (1 - percent) + y2 * percent;\n }\n ctx.lineTo(x2, y2);\n };\n Line.prototype.pointAt = function (p) {\n var shape = this.shape;\n return [\n shape.x1 * (1 - p) + shape.x2 * p,\n shape.y1 * (1 - p) + shape.y2 * p\n ];\n };\n return Line;\n}(Path));\nLine.prototype.type = 'line';\nexport default Line;\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as vec2 from '../../core/vector.js';\nimport { quadraticSubdivide, cubicSubdivide, quadraticAt, cubicAt, quadraticDerivativeAt, cubicDerivativeAt } from '../../core/curve.js';\nvar out = [];\nvar BezierCurveShape = (function () {\n function BezierCurveShape() {\n this.x1 = 0;\n this.y1 = 0;\n this.x2 = 0;\n this.y2 = 0;\n this.cpx1 = 0;\n this.cpy1 = 0;\n this.percent = 1;\n }\n return BezierCurveShape;\n}());\nexport { BezierCurveShape };\nfunction someVectorAt(shape, t, isTangent) {\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n if (cpx2 != null || cpy2 != null) {\n return [\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.x1, shape.cpx1, shape.cpx2, shape.x2, t),\n (isTangent ? cubicDerivativeAt : cubicAt)(shape.y1, shape.cpy1, shape.cpy2, shape.y2, t)\n ];\n }\n else {\n return [\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.x1, shape.cpx1, shape.x2, t),\n (isTangent ? quadraticDerivativeAt : quadraticAt)(shape.y1, shape.cpy1, shape.y2, t)\n ];\n }\n}\nvar BezierCurve = (function (_super) {\n __extends(BezierCurve, _super);\n function BezierCurve(opts) {\n return _super.call(this, opts) || this;\n }\n BezierCurve.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n BezierCurve.prototype.getDefaultShape = function () {\n return new BezierCurveShape();\n };\n BezierCurve.prototype.buildPath = function (ctx, shape) {\n var x1 = shape.x1;\n var y1 = shape.y1;\n var x2 = shape.x2;\n var y2 = shape.y2;\n var cpx1 = shape.cpx1;\n var cpy1 = shape.cpy1;\n var cpx2 = shape.cpx2;\n var cpy2 = shape.cpy2;\n var percent = shape.percent;\n if (percent === 0) {\n return;\n }\n ctx.moveTo(x1, y1);\n if (cpx2 == null || cpy2 == null) {\n if (percent < 1) {\n quadraticSubdivide(x1, cpx1, x2, percent, out);\n cpx1 = out[1];\n x2 = out[2];\n quadraticSubdivide(y1, cpy1, y2, percent, out);\n cpy1 = out[1];\n y2 = out[2];\n }\n ctx.quadraticCurveTo(cpx1, cpy1, x2, y2);\n }\n else {\n if (percent < 1) {\n cubicSubdivide(x1, cpx1, cpx2, x2, percent, out);\n cpx1 = out[1];\n cpx2 = out[2];\n x2 = out[3];\n cubicSubdivide(y1, cpy1, cpy2, y2, percent, out);\n cpy1 = out[1];\n cpy2 = out[2];\n y2 = out[3];\n }\n ctx.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x2, y2);\n }\n };\n BezierCurve.prototype.pointAt = function (t) {\n return someVectorAt(this.shape, t, false);\n };\n BezierCurve.prototype.tangentAt = function (t) {\n var p = someVectorAt(this.shape, t, true);\n return vec2.normalize(p, p);\n };\n return BezierCurve;\n}(Path));\n;\nBezierCurve.prototype.type = 'bezier-curve';\nexport default BezierCurve;\n", "import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nvar ArcShape = (function () {\n function ArcShape() {\n this.cx = 0;\n this.cy = 0;\n this.r = 0;\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.clockwise = true;\n }\n return ArcShape;\n}());\nexport { ArcShape };\nvar Arc = (function (_super) {\n __extends(Arc, _super);\n function Arc(opts) {\n return _super.call(this, opts) || this;\n }\n Arc.prototype.getDefaultStyle = function () {\n return {\n stroke: '#000',\n fill: null\n };\n };\n Arc.prototype.getDefaultShape = function () {\n return new ArcShape();\n };\n Arc.prototype.buildPath = function (ctx, shape) {\n var x = shape.cx;\n var y = shape.cy;\n var r = Math.max(shape.r, 0);\n var startAngle = shape.startAngle;\n var endAngle = shape.endAngle;\n var clockwise = shape.clockwise;\n var unitX = Math.cos(startAngle);\n var unitY = Math.sin(startAngle);\n ctx.moveTo(unitX * r + x, unitY * r + y);\n ctx.arc(x, y, r, startAngle, endAngle, !clockwise);\n };\n return Arc;\n}(Path));\nArc.prototype.type = 'arc';\nexport default Arc;\n", "import { __extends } from \"tslib\";\nimport Path from './Path.js';\nvar CompoundPath = (function (_super) {\n __extends(CompoundPath, _super);\n function CompoundPath() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'compound';\n return _this;\n }\n CompoundPath.prototype._updatePathDirty = function () {\n var paths = this.shape.paths;\n var dirtyPath = this.shapeChanged();\n for (var i = 0; i < paths.length; i++) {\n dirtyPath = dirtyPath || paths[i].shapeChanged();\n }\n if (dirtyPath) {\n this.dirtyShape();\n }\n };\n CompoundPath.prototype.beforeBrush = function () {\n this._updatePathDirty();\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale();\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n };\n CompoundPath.prototype.buildPath = function (ctx, shape) {\n var paths = shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n };\n CompoundPath.prototype.afterBrush = function () {\n var paths = this.shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].pathUpdated();\n }\n };\n CompoundPath.prototype.getBoundingRect = function () {\n this._updatePathDirty.call(this);\n return Path.prototype.getBoundingRect.call(this);\n };\n return CompoundPath;\n}(Path));\nexport default CompoundPath;\n", "var Gradient = (function () {\n function Gradient(colorStops) {\n this.colorStops = colorStops || [];\n }\n Gradient.prototype.addColorStop = function (offset, color) {\n this.colorStops.push({\n offset: offset,\n color: color\n });\n };\n return Gradient;\n}());\nexport default Gradient;\n", "import { __extends } from \"tslib\";\nimport Gradient from './Gradient.js';\nvar LinearGradient = (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient(x, y, x2, y2, colorStops, globalCoord) {\n var _this = _super.call(this, colorStops) || this;\n _this.x = x == null ? 0 : x;\n _this.y = y == null ? 0 : y;\n _this.x2 = x2 == null ? 1 : x2;\n _this.y2 = y2 == null ? 0 : y2;\n _this.type = 'linear';\n _this.global = globalCoord || false;\n return _this;\n }\n return LinearGradient;\n}(Gradient));\nexport default LinearGradient;\n;\n", "import { __extends } from \"tslib\";\nimport Gradient from './Gradient.js';\nvar RadialGradient = (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient(x, y, r, colorStops, globalCoord) {\n var _this = _super.call(this, colorStops) || this;\n _this.x = x == null ? 0.5 : x;\n _this.y = y == null ? 0.5 : y;\n _this.r = r == null ? 0.5 : r;\n _this.type = 'radial';\n _this.global = globalCoord || false;\n return _this;\n }\n return RadialGradient;\n}(Gradient));\nexport default RadialGradient;\n", "import Point from './Point.js';\nvar extent = [0, 0];\nvar extent2 = [0, 0];\nvar minTv = new Point();\nvar maxTv = new Point();\nvar OrientedBoundingRect = (function () {\n function OrientedBoundingRect(rect, transform) {\n this._corners = [];\n this._axes = [];\n this._origin = [0, 0];\n for (var i = 0; i < 4; i++) {\n this._corners[i] = new Point();\n }\n for (var i = 0; i < 2; i++) {\n this._axes[i] = new Point();\n }\n if (rect) {\n this.fromBoundingRect(rect, transform);\n }\n }\n OrientedBoundingRect.prototype.fromBoundingRect = function (rect, transform) {\n var corners = this._corners;\n var axes = this._axes;\n var x = rect.x;\n var y = rect.y;\n var x2 = x + rect.width;\n var y2 = y + rect.height;\n corners[0].set(x, y);\n corners[1].set(x2, y);\n corners[2].set(x2, y2);\n corners[3].set(x, y2);\n if (transform) {\n for (var i = 0; i < 4; i++) {\n corners[i].transform(transform);\n }\n }\n Point.sub(axes[0], corners[1], corners[0]);\n Point.sub(axes[1], corners[3], corners[0]);\n axes[0].normalize();\n axes[1].normalize();\n for (var i = 0; i < 2; i++) {\n this._origin[i] = axes[i].dot(corners[0]);\n }\n };\n OrientedBoundingRect.prototype.intersect = function (other, mtv) {\n var overlapped = true;\n var noMtv = !mtv;\n minTv.set(Infinity, Infinity);\n maxTv.set(0, 0);\n if (!this._intersectCheckOneSide(this, other, minTv, maxTv, noMtv, 1)) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n }\n if (!this._intersectCheckOneSide(other, this, minTv, maxTv, noMtv, -1)) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n }\n if (!noMtv) {\n Point.copy(mtv, overlapped ? minTv : maxTv);\n }\n return overlapped;\n };\n OrientedBoundingRect.prototype._intersectCheckOneSide = function (self, other, minTv, maxTv, noMtv, inverse) {\n var overlapped = true;\n for (var i = 0; i < 2; i++) {\n var axis = this._axes[i];\n this._getProjMinMaxOnAxis(i, self._corners, extent);\n this._getProjMinMaxOnAxis(i, other._corners, extent2);\n if (extent[1] < extent2[0] || extent[0] > extent2[1]) {\n overlapped = false;\n if (noMtv) {\n return overlapped;\n }\n var dist0 = Math.abs(extent2[0] - extent[1]);\n var dist1 = Math.abs(extent[0] - extent2[1]);\n if (Math.min(dist0, dist1) > maxTv.len()) {\n if (dist0 < dist1) {\n Point.scale(maxTv, axis, -dist0 * inverse);\n }\n else {\n Point.scale(maxTv, axis, dist1 * inverse);\n }\n }\n }\n else if (minTv) {\n var dist0 = Math.abs(extent2[0] - extent[1]);\n var dist1 = Math.abs(extent[0] - extent2[1]);\n if (Math.min(dist0, dist1) < minTv.len()) {\n if (dist0 < dist1) {\n Point.scale(minTv, axis, dist0 * inverse);\n }\n else {\n Point.scale(minTv, axis, -dist1 * inverse);\n }\n }\n }\n }\n return overlapped;\n };\n OrientedBoundingRect.prototype._getProjMinMaxOnAxis = function (dim, corners, out) {\n var axis = this._axes[dim];\n var origin = this._origin;\n var proj = corners[0].dot(axis) + origin[dim];\n var min = proj;\n var max = proj;\n for (var i = 1; i < corners.length; i++) {\n var proj_1 = corners[i].dot(axis) + origin[dim];\n min = Math.min(proj_1, min);\n max = Math.max(proj_1, max);\n }\n out[0] = min;\n out[1] = max;\n };\n return OrientedBoundingRect;\n}());\nexport default OrientedBoundingRect;\n", "import { __extends } from \"tslib\";\nimport Displayble from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar m = [];\nvar IncrementalDisplayable = (function (_super) {\n __extends(IncrementalDisplayable, _super);\n function IncrementalDisplayable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.notClear = true;\n _this.incremental = true;\n _this._displayables = [];\n _this._temporaryDisplayables = [];\n _this._cursor = 0;\n return _this;\n }\n IncrementalDisplayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n IncrementalDisplayable.prototype.useStyle = function () {\n this.style = {};\n };\n IncrementalDisplayable.prototype.getCursor = function () {\n return this._cursor;\n };\n IncrementalDisplayable.prototype.innerAfterBrush = function () {\n this._cursor = this._displayables.length;\n };\n IncrementalDisplayable.prototype.clearDisplaybles = function () {\n this._displayables = [];\n this._temporaryDisplayables = [];\n this._cursor = 0;\n this.markRedraw();\n this.notClear = false;\n };\n IncrementalDisplayable.prototype.clearTemporalDisplayables = function () {\n this._temporaryDisplayables = [];\n };\n IncrementalDisplayable.prototype.addDisplayable = function (displayable, notPersistent) {\n if (notPersistent) {\n this._temporaryDisplayables.push(displayable);\n }\n else {\n this._displayables.push(displayable);\n }\n this.markRedraw();\n };\n IncrementalDisplayable.prototype.addDisplayables = function (displayables, notPersistent) {\n notPersistent = notPersistent || false;\n for (var i = 0; i < displayables.length; i++) {\n this.addDisplayable(displayables[i], notPersistent);\n }\n };\n IncrementalDisplayable.prototype.getDisplayables = function () {\n return this._displayables;\n };\n IncrementalDisplayable.prototype.getTemporalDisplayables = function () {\n return this._temporaryDisplayables;\n };\n IncrementalDisplayable.prototype.eachPendingDisplayable = function (cb) {\n for (var i = this._cursor; i < this._displayables.length; i++) {\n cb && cb(this._displayables[i]);\n }\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n cb && cb(this._temporaryDisplayables[i]);\n }\n };\n IncrementalDisplayable.prototype.update = function () {\n this.updateTransform();\n for (var i = this._cursor; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n for (var i = 0; i < this._temporaryDisplayables.length; i++) {\n var displayable = this._temporaryDisplayables[i];\n displayable.parent = this;\n displayable.update();\n displayable.parent = null;\n }\n };\n IncrementalDisplayable.prototype.getBoundingRect = function () {\n if (!this._rect) {\n var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity);\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n var childRect = displayable.getBoundingRect().clone();\n if (displayable.needLocalTransform()) {\n childRect.applyTransform(displayable.getLocalTransform(m));\n }\n rect.union(childRect);\n }\n this._rect = rect;\n }\n return this._rect;\n };\n IncrementalDisplayable.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n if (rect.contain(localPos[0], localPos[1])) {\n for (var i = 0; i < this._displayables.length; i++) {\n var displayable = this._displayables[i];\n if (displayable.contain(x, y)) {\n return true;\n }\n }\n }\n return false;\n };\n return IncrementalDisplayable;\n}(Displayble));\nexport default IncrementalDisplayable;\n", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { isFunction, isObject, retrieve2 } from 'zrender/lib/core/util.js';\nimport { makeInner } from '../util/model.js';\n// Stored properties for further transition.\nexport var transitionStore = makeInner();\n/**\r\n * Return null if animation is disabled.\r\n */\nexport function getAnimationConfig(animationType, animatableModel, dataIndex,\n// Extra opts can override the option in animatable model.\nextraOpts,\n// TODO It's only for pictorial bar now.\nextraDelayParams) {\n var animationPayload;\n // Check if there is global animation configuration from dataZoom/resize can override the config in option.\n // If animation is enabled. Will use this animation config in payload.\n // If animation is disabled. Just ignore it.\n if (animatableModel && animatableModel.ecModel) {\n var updatePayload = animatableModel.ecModel.getUpdatePayload();\n animationPayload = updatePayload && updatePayload.animation;\n }\n var animationEnabled = animatableModel && animatableModel.isAnimationEnabled();\n var isUpdate = animationType === 'update';\n if (animationEnabled) {\n var duration = void 0;\n var easing = void 0;\n var delay = void 0;\n if (extraOpts) {\n duration = retrieve2(extraOpts.duration, 200);\n easing = retrieve2(extraOpts.easing, 'cubicOut');\n delay = 0;\n } else {\n duration = animatableModel.getShallow(isUpdate ? 'animationDurationUpdate' : 'animationDuration');\n easing = animatableModel.getShallow(isUpdate ? 'animationEasingUpdate' : 'animationEasing');\n delay = animatableModel.getShallow(isUpdate ? 'animationDelayUpdate' : 'animationDelay');\n }\n // animation from payload has highest priority.\n if (animationPayload) {\n animationPayload.duration != null && (duration = animationPayload.duration);\n animationPayload.easing != null && (easing = animationPayload.easing);\n animationPayload.delay != null && (delay = animationPayload.delay);\n }\n if (isFunction(delay)) {\n delay = delay(dataIndex, extraDelayParams);\n }\n if (isFunction(duration)) {\n duration = duration(dataIndex);\n }\n var config = {\n duration: duration || 0,\n delay: delay,\n easing: easing\n };\n return config;\n } else {\n return null;\n }\n}\nfunction animateOrSetProps(animationType, el, props, animatableModel, dataIndex, cb, during) {\n var isFrom = false;\n var removeOpt;\n if (isFunction(dataIndex)) {\n during = cb;\n cb = dataIndex;\n dataIndex = null;\n } else if (isObject(dataIndex)) {\n cb = dataIndex.cb;\n during = dataIndex.during;\n isFrom = dataIndex.isFrom;\n removeOpt = dataIndex.removeOpt;\n dataIndex = dataIndex.dataIndex;\n }\n var isRemove = animationType === 'leave';\n if (!isRemove) {\n // Must stop the remove animation.\n el.stopAnimation('leave');\n }\n var animationConfig = getAnimationConfig(animationType, animatableModel, dataIndex, isRemove ? removeOpt || {} : null, animatableModel && animatableModel.getAnimationDelayParams ? animatableModel.getAnimationDelayParams(el, dataIndex) : null);\n if (animationConfig && animationConfig.duration > 0) {\n var duration = animationConfig.duration;\n var animationDelay = animationConfig.delay;\n var animationEasing = animationConfig.easing;\n var animateConfig = {\n duration: duration,\n delay: animationDelay || 0,\n easing: animationEasing,\n done: cb,\n force: !!cb || !!during,\n // Set to final state in update/init animation.\n // So the post processing based on the path shape can be done correctly.\n setToFinal: !isRemove,\n scope: animationType,\n during: during\n };\n isFrom ? el.animateFrom(props, animateConfig) : el.animateTo(props, animateConfig);\n } else {\n el.stopAnimation();\n // If `isFrom`, the props is the \"from\" props.\n !isFrom && el.attr(props);\n // Call during at least once.\n during && during(1);\n cb && cb();\n }\n}\n/**\r\n * Update graphic element properties with or without animation according to the\r\n * configuration in series.\r\n *\r\n * Caution: this method will stop previous animation.\r\n * So do not use this method to one element twice before\r\n * animation starts, unless you know what you are doing.\r\n * @example\r\n * graphic.updateProps(el, {\r\n * position: [100, 100]\r\n * }, seriesModel, dataIndex, function () { console.log('Animation done!'); });\r\n * // Or\r\n * graphic.updateProps(el, {\r\n * position: [100, 100]\r\n * }, seriesModel, function () { console.log('Animation done!'); });\r\n */\nfunction updateProps(el, props,\n// TODO: TYPE AnimatableModel\nanimatableModel, dataIndex, cb, during) {\n animateOrSetProps('update', el, props, animatableModel, dataIndex, cb, during);\n}\nexport { updateProps };\n/**\r\n * Init graphic element properties with or without animation according to the\r\n * configuration in series.\r\n *\r\n * Caution: this method will stop previous animation.\r\n * So do not use this method to one element twice before\r\n * animation starts, unless you know what you are doing.\r\n */\nexport function initProps(el, props, animatableModel, dataIndex, cb, during) {\n animateOrSetProps('enter', el, props, animatableModel, dataIndex, cb, during);\n}\n/**\r\n * If element is removed.\r\n * It can determine if element is having remove animation.\r\n */\nexport function isElementRemoved(el) {\n if (!el.__zr) {\n return true;\n }\n for (var i = 0; i < el.animators.length; i++) {\n var animator = el.animators[i];\n if (animator.scope === 'leave') {\n return true;\n }\n }\n return false;\n}\n/**\r\n * Remove graphic element\r\n */\nexport function removeElement(el, props, animatableModel, dataIndex, cb, during) {\n // Don't do remove animation twice.\n if (isElementRemoved(el)) {\n return;\n }\n animateOrSetProps('leave', el, props, animatableModel, dataIndex, cb, during);\n}\nfunction fadeOutDisplayable(el, animatableModel, dataIndex, done) {\n el.removeTextContent();\n el.removeTextGuideLine();\n removeElement(el, {\n style: {\n opacity: 0\n }\n }, animatableModel, dataIndex, done);\n}\nexport function removeElementWithFadeOut(el, animatableModel, dataIndex) {\n function doRemove() {\n el.parent && el.parent.remove(el);\n }\n // Hide label and labelLine first\n // TODO Also use fade out animation?\n if (!el.isGroup) {\n fadeOutDisplayable(el, animatableModel, dataIndex, doRemove);\n } else {\n el.traverse(function (disp) {\n if (!disp.isGroup) {\n // Can invoke doRemove multiple times.\n fadeOutDisplayable(disp, animatableModel, dataIndex, doRemove);\n }\n });\n }\n}\n/**\r\n * Save old style for style transition in universalTransition module.\r\n * It's used when element will be reused in each render.\r\n * For chart like map, heatmap, which will always create new element.\r\n * We don't need to save this because universalTransition can get old style from the old element\r\n */\nexport function saveOldStyle(el) {\n transitionStore(el).oldStyle = el.style;\n}\nexport function getOldStyle(el) {\n return transitionStore(el).oldStyle;\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport ZRText from 'zrender/lib/graphic/Text.js';\nimport { isFunction, retrieve2, extend, keys, trim } from 'zrender/lib/core/util.js';\nimport { SPECIAL_STATES, DISPLAY_STATES } from '../util/states.js';\nimport { deprecateReplaceLog } from '../util/log.js';\nimport { makeInner, interpolateRawValues } from '../util/model.js';\nimport { initProps, updateProps } from '../util/graphic.js';\nvar EMPTY_OBJ = {};\nexport function setLabelText(label, labelTexts) {\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n var text = labelTexts[stateName];\n var state = label.ensureState(stateName);\n state.style = state.style || {};\n state.style.text = text;\n }\n var oldStates = label.currentStates.slice();\n label.clearStates(true);\n label.setStyle({\n text: labelTexts.normal\n });\n label.useStates(oldStates, true);\n}\nfunction getLabelText(opt, stateModels, interpolatedValue) {\n var labelFetcher = opt.labelFetcher;\n var labelDataIndex = opt.labelDataIndex;\n var labelDimIndex = opt.labelDimIndex;\n var normalModel = stateModels.normal;\n var baseText;\n if (labelFetcher) {\n baseText = labelFetcher.getFormattedLabel(labelDataIndex, 'normal', null, labelDimIndex, normalModel && normalModel.get('formatter'), interpolatedValue != null ? {\n interpolatedValue: interpolatedValue\n } : null);\n }\n if (baseText == null) {\n baseText = isFunction(opt.defaultText) ? opt.defaultText(labelDataIndex, opt, interpolatedValue) : opt.defaultText;\n }\n var statesText = {\n normal: baseText\n };\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n var stateModel = stateModels[stateName];\n statesText[stateName] = retrieve2(labelFetcher ? labelFetcher.getFormattedLabel(labelDataIndex, stateName, null, labelDimIndex, stateModel && stateModel.get('formatter')) : null, baseText);\n }\n return statesText;\n}\nfunction setLabelStyle(targetEl, labelStatesModels, opt, stateSpecified\n// TODO specified position?\n) {\n opt = opt || EMPTY_OBJ;\n var isSetOnText = targetEl instanceof ZRText;\n var needsCreateText = false;\n for (var i = 0; i < DISPLAY_STATES.length; i++) {\n var stateModel = labelStatesModels[DISPLAY_STATES[i]];\n if (stateModel && stateModel.getShallow('show')) {\n needsCreateText = true;\n break;\n }\n }\n var textContent = isSetOnText ? targetEl : targetEl.getTextContent();\n if (needsCreateText) {\n if (!isSetOnText) {\n // Reuse the previous\n if (!textContent) {\n textContent = new ZRText();\n targetEl.setTextContent(textContent);\n }\n // Use same state proxy\n if (targetEl.stateProxy) {\n textContent.stateProxy = targetEl.stateProxy;\n }\n }\n var labelStatesTexts = getLabelText(opt, labelStatesModels);\n var normalModel = labelStatesModels.normal;\n var showNormal = !!normalModel.getShallow('show');\n var normalStyle = createTextStyle(normalModel, stateSpecified && stateSpecified.normal, opt, false, !isSetOnText);\n normalStyle.text = labelStatesTexts.normal;\n if (!isSetOnText) {\n // Always create new\n targetEl.setTextConfig(createTextConfig(normalModel, opt, false));\n }\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n var stateModel = labelStatesModels[stateName];\n if (stateModel) {\n var stateObj = textContent.ensureState(stateName);\n var stateShow = !!retrieve2(stateModel.getShallow('show'), showNormal);\n if (stateShow !== showNormal) {\n stateObj.ignore = !stateShow;\n }\n stateObj.style = createTextStyle(stateModel, stateSpecified && stateSpecified[stateName], opt, true, !isSetOnText);\n stateObj.style.text = labelStatesTexts[stateName];\n if (!isSetOnText) {\n var targetElEmphasisState = targetEl.ensureState(stateName);\n targetElEmphasisState.textConfig = createTextConfig(stateModel, opt, true);\n }\n }\n }\n // PENDING: if there is many requirements that emphasis position\n // need to be different from normal position, we might consider\n // auto silent is those cases.\n textContent.silent = !!normalModel.getShallow('silent');\n // Keep x and y\n if (textContent.style.x != null) {\n normalStyle.x = textContent.style.x;\n }\n if (textContent.style.y != null) {\n normalStyle.y = textContent.style.y;\n }\n textContent.ignore = !showNormal;\n // Always create new style.\n textContent.useStyle(normalStyle);\n textContent.dirty();\n if (opt.enableTextSetter) {\n labelInner(textContent).setLabelText = function (interpolatedValue) {\n var labelStatesTexts = getLabelText(opt, labelStatesModels, interpolatedValue);\n setLabelText(textContent, labelStatesTexts);\n };\n }\n } else if (textContent) {\n // Not display rich text.\n textContent.ignore = true;\n }\n targetEl.dirty();\n}\nexport { setLabelStyle };\nexport function getLabelStatesModels(itemModel, labelName) {\n labelName = labelName || 'label';\n var statesModels = {\n normal: itemModel.getModel(labelName)\n };\n for (var i = 0; i < SPECIAL_STATES.length; i++) {\n var stateName = SPECIAL_STATES[i];\n statesModels[stateName] = itemModel.getModel([stateName, labelName]);\n }\n return statesModels;\n}\n/**\r\n * Set basic textStyle properties.\r\n */\nexport function createTextStyle(textStyleModel, specifiedTextStyle,\n// Fixed style in the code. Can't be set by model.\nopt, isNotNormal, isAttached // If text is attached on an element. If so, auto color will handling in zrender.\n) {\n var textStyle = {};\n setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached);\n specifiedTextStyle && extend(textStyle, specifiedTextStyle);\n // textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);\n return textStyle;\n}\nexport function createTextConfig(textStyleModel, opt, isNotNormal) {\n opt = opt || {};\n var textConfig = {};\n var labelPosition;\n var labelRotate = textStyleModel.getShallow('rotate');\n var labelDistance = retrieve2(textStyleModel.getShallow('distance'), isNotNormal ? null : 5);\n var labelOffset = textStyleModel.getShallow('offset');\n labelPosition = textStyleModel.getShallow('position') || (isNotNormal ? null : 'inside');\n // 'outside' is not a valid zr textPostion value, but used\n // in bar series, and magric type should be considered.\n labelPosition === 'outside' && (labelPosition = opt.defaultOutsidePosition || 'top');\n if (labelPosition != null) {\n textConfig.position = labelPosition;\n }\n if (labelOffset != null) {\n textConfig.offset = labelOffset;\n }\n if (labelRotate != null) {\n labelRotate *= Math.PI / 180;\n textConfig.rotation = labelRotate;\n }\n if (labelDistance != null) {\n textConfig.distance = labelDistance;\n }\n // fill and auto is determined by the color of path fill if it's not specified by developers.\n textConfig.outsideFill = textStyleModel.get('color') === 'inherit' ? opt.inheritColor || null : 'auto';\n return textConfig;\n}\n/**\r\n * The uniform entry of set text style, that is, retrieve style definitions\r\n * from `model` and set to `textStyle` object.\r\n *\r\n * Never in merge mode, but in overwrite mode, that is, all of the text style\r\n * properties will be set. (Consider the states of normal and emphasis and\r\n * default value can be adopted, merge would make the logic too complicated\r\n * to manage.)\r\n */\nfunction setTextStyleCommon(textStyle, textStyleModel, opt, isNotNormal, isAttached) {\n // Consider there will be abnormal when merge hover style to normal style if given default value.\n opt = opt || EMPTY_OBJ;\n var ecModel = textStyleModel.ecModel;\n var globalTextStyle = ecModel && ecModel.option.textStyle;\n // Consider case:\n // {\n // data: [{\n // value: 12,\n // label: {\n // rich: {\n // // no 'a' here but using parent 'a'.\n // }\n // }\n // }],\n // rich: {\n // a: { ... }\n // }\n // }\n var richItemNames = getRichItemNames(textStyleModel);\n var richResult;\n if (richItemNames) {\n richResult = {};\n for (var name_1 in richItemNames) {\n if (richItemNames.hasOwnProperty(name_1)) {\n // Cascade is supported in rich.\n var richTextStyle = textStyleModel.getModel(['rich', name_1]);\n // In rich, never `disableBox`.\n // FIXME: consider `label: {formatter: '{a|xx}', color: 'blue', rich: {a: {}}}`,\n // the default color `'blue'` will not be adopted if no color declared in `rich`.\n // That might confuses users. So probably we should put `textStyleModel` as the\n // root ancestor of the `richTextStyle`. But that would be a break change.\n setTokenTextStyle(richResult[name_1] = {}, richTextStyle, globalTextStyle, opt, isNotNormal, isAttached, false, true);\n }\n }\n }\n if (richResult) {\n textStyle.rich = richResult;\n }\n var overflow = textStyleModel.get('overflow');\n if (overflow) {\n textStyle.overflow = overflow;\n }\n var margin = textStyleModel.get('minMargin');\n if (margin != null) {\n textStyle.margin = margin;\n }\n setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, true, false);\n}\n// Consider case:\n// {\n// data: [{\n// value: 12,\n// label: {\n// rich: {\n// // no 'a' here but using parent 'a'.\n// }\n// }\n// }],\n// rich: {\n// a: { ... }\n// }\n// }\n// TODO TextStyleModel\nfunction getRichItemNames(textStyleModel) {\n // Use object to remove duplicated names.\n var richItemNameMap;\n while (textStyleModel && textStyleModel !== textStyleModel.ecModel) {\n var rich = (textStyleModel.option || EMPTY_OBJ).rich;\n if (rich) {\n richItemNameMap = richItemNameMap || {};\n var richKeys = keys(rich);\n for (var i = 0; i < richKeys.length; i++) {\n var richKey = richKeys[i];\n richItemNameMap[richKey] = 1;\n }\n }\n textStyleModel = textStyleModel.parentModel;\n }\n return richItemNameMap;\n}\nvar TEXT_PROPS_WITH_GLOBAL = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'textShadowColor', 'textShadowBlur', 'textShadowOffsetX', 'textShadowOffsetY'];\nvar TEXT_PROPS_SELF = ['align', 'lineHeight', 'width', 'height', 'tag', 'verticalAlign', 'ellipsis'];\nvar TEXT_PROPS_BOX = ['padding', 'borderWidth', 'borderRadius', 'borderDashOffset', 'backgroundColor', 'borderColor', 'shadowColor', 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\nfunction setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isNotNormal, isAttached, isBlock, inRich) {\n // In merge mode, default value should not be given.\n globalTextStyle = !isNotNormal && globalTextStyle || EMPTY_OBJ;\n var inheritColor = opt && opt.inheritColor;\n var fillColor = textStyleModel.getShallow('color');\n var strokeColor = textStyleModel.getShallow('textBorderColor');\n var opacity = retrieve2(textStyleModel.getShallow('opacity'), globalTextStyle.opacity);\n if (fillColor === 'inherit' || fillColor === 'auto') {\n if (process.env.NODE_ENV !== 'production') {\n if (fillColor === 'auto') {\n deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\n }\n }\n if (inheritColor) {\n fillColor = inheritColor;\n } else {\n fillColor = null;\n }\n }\n if (strokeColor === 'inherit' || strokeColor === 'auto') {\n if (process.env.NODE_ENV !== 'production') {\n if (strokeColor === 'auto') {\n deprecateReplaceLog('color: \\'auto\\'', 'color: \\'inherit\\'');\n }\n }\n if (inheritColor) {\n strokeColor = inheritColor;\n } else {\n strokeColor = null;\n }\n }\n if (!isAttached) {\n // Only use default global textStyle.color if text is individual.\n // Otherwise it will use the strategy of attached text color because text may be on a path.\n fillColor = fillColor || globalTextStyle.color;\n strokeColor = strokeColor || globalTextStyle.textBorderColor;\n }\n if (fillColor != null) {\n textStyle.fill = fillColor;\n }\n if (strokeColor != null) {\n textStyle.stroke = strokeColor;\n }\n var textBorderWidth = retrieve2(textStyleModel.getShallow('textBorderWidth'), globalTextStyle.textBorderWidth);\n if (textBorderWidth != null) {\n textStyle.lineWidth = textBorderWidth;\n }\n var textBorderType = retrieve2(textStyleModel.getShallow('textBorderType'), globalTextStyle.textBorderType);\n if (textBorderType != null) {\n textStyle.lineDash = textBorderType;\n }\n var textBorderDashOffset = retrieve2(textStyleModel.getShallow('textBorderDashOffset'), globalTextStyle.textBorderDashOffset);\n if (textBorderDashOffset != null) {\n textStyle.lineDashOffset = textBorderDashOffset;\n }\n if (!isNotNormal && opacity == null && !inRich) {\n opacity = opt && opt.defaultOpacity;\n }\n if (opacity != null) {\n textStyle.opacity = opacity;\n }\n // TODO\n if (!isNotNormal && !isAttached) {\n // Set default finally.\n if (textStyle.fill == null && opt.inheritColor) {\n textStyle.fill = opt.inheritColor;\n }\n }\n // Do not use `getFont` here, because merge should be supported, where\n // part of these properties may be changed in emphasis style, and the\n // others should remain their original value got from normal style.\n for (var i = 0; i < TEXT_PROPS_WITH_GLOBAL.length; i++) {\n var key = TEXT_PROPS_WITH_GLOBAL[i];\n var val = retrieve2(textStyleModel.getShallow(key), globalTextStyle[key]);\n if (val != null) {\n textStyle[key] = val;\n }\n }\n for (var i = 0; i < TEXT_PROPS_SELF.length; i++) {\n var key = TEXT_PROPS_SELF[i];\n var val = textStyleModel.getShallow(key);\n if (val != null) {\n textStyle[key] = val;\n }\n }\n if (textStyle.verticalAlign == null) {\n var baseline = textStyleModel.getShallow('baseline');\n if (baseline != null) {\n textStyle.verticalAlign = baseline;\n }\n }\n if (!isBlock || !opt.disableBox) {\n for (var i = 0; i < TEXT_PROPS_BOX.length; i++) {\n var key = TEXT_PROPS_BOX[i];\n var val = textStyleModel.getShallow(key);\n if (val != null) {\n textStyle[key] = val;\n }\n }\n var borderType = textStyleModel.getShallow('borderType');\n if (borderType != null) {\n textStyle.borderDash = borderType;\n }\n if ((textStyle.backgroundColor === 'auto' || textStyle.backgroundColor === 'inherit') && inheritColor) {\n if (process.env.NODE_ENV !== 'production') {\n if (textStyle.backgroundColor === 'auto') {\n deprecateReplaceLog('backgroundColor: \\'auto\\'', 'backgroundColor: \\'inherit\\'');\n }\n }\n textStyle.backgroundColor = inheritColor;\n }\n if ((textStyle.borderColor === 'auto' || textStyle.borderColor === 'inherit') && inheritColor) {\n if (process.env.NODE_ENV !== 'production') {\n if (textStyle.borderColor === 'auto') {\n deprecateReplaceLog('borderColor: \\'auto\\'', 'borderColor: \\'inherit\\'');\n }\n }\n textStyle.borderColor = inheritColor;\n }\n }\n}\nexport function getFont(opt, ecModel) {\n var gTextStyleModel = ecModel && ecModel.getModel('textStyle');\n return trim([\n // FIXME in node-canvas fontWeight is before fontStyle\n opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontWeight || gTextStyleModel && gTextStyleModel.getShallow('fontWeight') || '', (opt.fontSize || gTextStyleModel && gTextStyleModel.getShallow('fontSize') || 12) + 'px', opt.fontFamily || gTextStyleModel && gTextStyleModel.getShallow('fontFamily') || 'sans-serif'].join(' '));\n}\nexport var labelInner = makeInner();\nexport function setLabelValueAnimation(label, labelStatesModels, value, getDefaultText) {\n if (!label) {\n return;\n }\n var obj = labelInner(label);\n obj.prevValue = obj.value;\n obj.value = value;\n var normalLabelModel = labelStatesModels.normal;\n obj.valueAnimation = normalLabelModel.get('valueAnimation');\n if (obj.valueAnimation) {\n obj.precision = normalLabelModel.get('precision');\n obj.defaultInterpolatedText = getDefaultText;\n obj.statesModels = labelStatesModels;\n }\n}\nexport function animateLabelValue(textEl, dataIndex, data, animatableModel, labelFetcher) {\n var labelInnerStore = labelInner(textEl);\n if (!labelInnerStore.valueAnimation || labelInnerStore.prevValue === labelInnerStore.value) {\n // Value not changed, no new label animation\n return;\n }\n var defaultInterpolatedText = labelInnerStore.defaultInterpolatedText;\n // Consider the case that being animating, do not use the `obj.value`,\n // Otherwise it will jump to the `obj.value` when this new animation started.\n var currValue = retrieve2(labelInnerStore.interpolatedValue, labelInnerStore.prevValue);\n var targetValue = labelInnerStore.value;\n function during(percent) {\n var interpolated = interpolateRawValues(data, labelInnerStore.precision, currValue, targetValue, percent);\n labelInnerStore.interpolatedValue = percent === 1 ? null : interpolated;\n var labelText = getLabelText({\n labelDataIndex: dataIndex,\n labelFetcher: labelFetcher,\n defaultText: defaultInterpolatedText ? defaultInterpolatedText(interpolated) : interpolated + ''\n }, labelInnerStore.statesModels, interpolated);\n setLabelText(textEl, labelText);\n }\n textEl.percent = 0;\n (labelInnerStore.prevValue == null ? initProps : updateProps)(textEl, {\n // percent is used to prevent animation from being aborted #15916\n percent: 1\n }, animatableModel, dataIndex, null, during);\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { getFont } from '../../label/labelStyle.js';\nimport ZRText from 'zrender/lib/graphic/Text.js';\nvar PATH_COLOR = ['textStyle', 'color'];\nvar textStyleParams = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily', 'padding', 'lineHeight', 'rich', 'width', 'height', 'overflow'];\n// TODO Performance improvement?\nvar tmpText = new ZRText();\nvar TextStyleMixin = /** @class */function () {\n function TextStyleMixin() {}\n /**\r\n * Get color property or get color from option.textStyle.color\r\n */\n // TODO Callback\n TextStyleMixin.prototype.getTextColor = function (isEmphasis) {\n var ecModel = this.ecModel;\n return this.getShallow('color') || (!isEmphasis && ecModel ? ecModel.get(PATH_COLOR) : null);\n };\n /**\r\n * Create font string from fontStyle, fontWeight, fontSize, fontFamily\r\n * @return {string}\r\n */\n TextStyleMixin.prototype.getFont = function () {\n return getFont({\n fontStyle: this.getShallow('fontStyle'),\n fontWeight: this.getShallow('fontWeight'),\n fontSize: this.getShallow('fontSize'),\n fontFamily: this.getShallow('fontFamily')\n }, this.ecModel);\n };\n TextStyleMixin.prototype.getTextRect = function (text) {\n var style = {\n text: text,\n verticalAlign: this.getShallow('verticalAlign') || this.getShallow('baseline')\n };\n for (var i = 0; i < textStyleParams.length; i++) {\n style[textStyleParams[i]] = this.getShallow(textStyleParams[i]);\n }\n tmpText.useStyle(style);\n tmpText.update();\n return tmpText.getBoundingRect();\n };\n return TextStyleMixin;\n}();\n;\nexport default TextStyleMixin;", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport makeStyleMapper from './makeStyleMapper.js';\nexport var LINE_STYLE_KEY_MAP = [['lineWidth', 'width'], ['stroke', 'color'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'type'], ['lineDashOffset', 'dashOffset'], ['lineCap', 'cap'], ['lineJoin', 'join'], ['miterLimit']\n// Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n];\nvar getLineStyle = makeStyleMapper(LINE_STYLE_KEY_MAP);\nvar LineStyleMixin = /** @class */function () {\n function LineStyleMixin() {}\n LineStyleMixin.prototype.getLineStyle = function (excludes) {\n return getLineStyle(this, excludes);\n };\n return LineStyleMixin;\n}();\n;\nexport { LineStyleMixin };", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport makeStyleMapper from './makeStyleMapper.js';\nexport var ITEM_STYLE_KEY_MAP = [['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor'], ['lineDash', 'borderType'], ['lineDashOffset', 'borderDashOffset'], ['lineCap', 'borderCap'], ['lineJoin', 'borderJoin'], ['miterLimit', 'borderMiterLimit']\n// Option decal is in `DecalObject` but style.decal is in `PatternObject`.\n// So do not transfer decal directly.\n];\nvar getItemStyle = makeStyleMapper(ITEM_STYLE_KEY_MAP);\nvar ItemStyleMixin = /** @class */function () {\n function ItemStyleMixin() {}\n ItemStyleMixin.prototype.getItemStyle = function (excludes, includes) {\n return getItemStyle(this, excludes, includes);\n };\n return ItemStyleMixin;\n}();\nexport { ItemStyleMixin };", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport env from 'zrender/lib/core/env.js';\nimport { enableClassExtend, enableClassCheck } from '../util/clazz.js';\nimport { AreaStyleMixin } from './mixin/areaStyle.js';\nimport TextStyleMixin from './mixin/textStyle.js';\nimport { LineStyleMixin } from './mixin/lineStyle.js';\nimport { ItemStyleMixin } from './mixin/itemStyle.js';\nimport { mixin, clone, merge } from 'zrender/lib/core/util.js';\nvar Model = /** @class */function () {\n function Model(option, parentModel, ecModel) {\n this.parentModel = parentModel;\n this.ecModel = ecModel;\n this.option = option;\n // Simple optimization\n // if (this.init) {\n // if (arguments.length <= 4) {\n // this.init(option, parentModel, ecModel, extraOpt);\n // }\n // else {\n // this.init.apply(this, arguments);\n // }\n // }\n }\n Model.prototype.init = function (option, parentModel, ecModel) {\n var rest = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n rest[_i - 3] = arguments[_i];\n }\n };\n /**\r\n * Merge the input option to me.\r\n */\n Model.prototype.mergeOption = function (option, ecModel) {\n merge(this.option, option, true);\n };\n // `path` can be 'a.b.c', so the return value type have to be `ModelOption`\n // TODO: TYPE strict key check?\n // get(path: string | string[], ignoreParent?: boolean): ModelOption;\n Model.prototype.get = function (path, ignoreParent) {\n if (path == null) {\n return this.option;\n }\n return this._doGet(this.parsePath(path), !ignoreParent && this.parentModel);\n };\n Model.prototype.getShallow = function (key, ignoreParent) {\n var option = this.option;\n var val = option == null ? option : option[key];\n if (val == null && !ignoreParent) {\n var parentModel = this.parentModel;\n if (parentModel) {\n // FIXME:TS do not know how to make it works\n val = parentModel.getShallow(key);\n }\n }\n return val;\n };\n // `path` can be 'a.b.c', so the return value type have to be `Model`\n // getModel(path: string | string[], parentModel?: Model): Model;\n // TODO 'a.b.c' is deprecated\n Model.prototype.getModel = function (path, parentModel) {\n var hasPath = path != null;\n var pathFinal = hasPath ? this.parsePath(path) : null;\n var obj = hasPath ? this._doGet(pathFinal) : this.option;\n parentModel = parentModel || this.parentModel && this.parentModel.getModel(this.resolveParentPath(pathFinal));\n return new Model(obj, parentModel, this.ecModel);\n };\n /**\r\n * If model has option\r\n */\n Model.prototype.isEmpty = function () {\n return this.option == null;\n };\n Model.prototype.restoreData = function () {};\n // Pending\n Model.prototype.clone = function () {\n var Ctor = this.constructor;\n return new Ctor(clone(this.option));\n };\n // setReadOnly(properties): void {\n // clazzUtil.setReadOnly(this, properties);\n // }\n // If path is null/undefined, return null/undefined.\n Model.prototype.parsePath = function (path) {\n if (typeof path === 'string') {\n return path.split('.');\n }\n return path;\n };\n // Resolve path for parent. Perhaps useful when parent use a different property.\n // Default to be a identity resolver.\n // Can be modified to a different resolver.\n Model.prototype.resolveParentPath = function (path) {\n return path;\n };\n // FIXME:TS check whether put this method here\n Model.prototype.isAnimationEnabled = function () {\n if (!env.node && this.option) {\n if (this.option.animation != null) {\n return !!this.option.animation;\n } else if (this.parentModel) {\n return this.parentModel.isAnimationEnabled();\n }\n }\n };\n Model.prototype._doGet = function (pathArr, parentModel) {\n var obj = this.option;\n if (!pathArr) {\n return obj;\n }\n for (var i = 0; i < pathArr.length; i++) {\n // Ignore empty\n if (!pathArr[i]) {\n continue;\n }\n // obj could be number/string/... (like 0)\n obj = obj && typeof obj === 'object' ? obj[pathArr[i]] : null;\n if (obj == null) {\n break;\n }\n }\n if (obj == null && parentModel) {\n obj = parentModel._doGet(this.resolveParentPath(pathArr), parentModel.parentModel);\n }\n return obj;\n };\n return Model;\n}();\n;\n// Enable Model.extend.\nenableClassExtend(Model);\nenableClassCheck(Model);\nmixin(Model, LineStyleMixin);\nmixin(Model, ItemStyleMixin);\nmixin(Model, AreaStyleMixin);\nmixin(Model, TextStyleMixin);\nexport default Model;", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { parseClassType } from './clazz.js';\nimport { makePrintable } from './log.js';\n// A random offset\nvar base = Math.round(Math.random() * 10);\n/**\r\n * @public\r\n * @param {string} type\r\n * @return {string}\r\n */\nexport function getUID(type) {\n // Considering the case of crossing js context,\n // use Math.random to make id as unique as possible.\n return [type || '', base++].join('_');\n}\n/**\r\n * Implements `SubTypeDefaulterManager` for `target`.\r\n */\nexport function enableSubTypeDefaulter(target) {\n var subTypeDefaulters = {};\n target.registerSubTypeDefaulter = function (componentType, defaulter) {\n var componentTypeInfo = parseClassType(componentType);\n subTypeDefaulters[componentTypeInfo.main] = defaulter;\n };\n target.determineSubType = function (componentType, option) {\n var type = option.type;\n if (!type) {\n var componentTypeMain = parseClassType(componentType).main;\n if (target.hasSubTypes(componentType) && subTypeDefaulters[componentTypeMain]) {\n type = subTypeDefaulters[componentTypeMain](option);\n }\n }\n return type;\n };\n}\n/**\r\n * Implements `TopologicalTravelable` for `entity`.\r\n *\r\n * Topological travel on Activity Network (Activity On Vertices).\r\n * Dependencies is defined in Model.prototype.dependencies, like ['xAxis', 'yAxis'].\r\n * If 'xAxis' or 'yAxis' is absent in componentTypeList, just ignore it in topology.\r\n * If there is circular dependencey, Error will be thrown.\r\n */\nexport function enableTopologicalTravel(entity, dependencyGetter) {\n /**\r\n * @param targetNameList Target Component type list.\r\n * Can be ['aa', 'bb', 'aa.xx']\r\n * @param fullNameList By which we can build dependency graph.\r\n * @param callback Params: componentType, dependencies.\r\n * @param context Scope of callback.\r\n */\n entity.topologicalTravel = function (targetNameList, fullNameList, callback, context) {\n if (!targetNameList.length) {\n return;\n }\n var result = makeDepndencyGraph(fullNameList);\n var graph = result.graph;\n var noEntryList = result.noEntryList;\n var targetNameSet = {};\n zrUtil.each(targetNameList, function (name) {\n targetNameSet[name] = true;\n });\n while (noEntryList.length) {\n var currComponentType = noEntryList.pop();\n var currVertex = graph[currComponentType];\n var isInTargetNameSet = !!targetNameSet[currComponentType];\n if (isInTargetNameSet) {\n callback.call(context, currComponentType, currVertex.originalDeps.slice());\n delete targetNameSet[currComponentType];\n }\n zrUtil.each(currVertex.successor, isInTargetNameSet ? removeEdgeAndAdd : removeEdge);\n }\n zrUtil.each(targetNameSet, function () {\n var errMsg = '';\n if (process.env.NODE_ENV !== 'production') {\n errMsg = makePrintable('Circular dependency may exists: ', targetNameSet, targetNameList, fullNameList);\n }\n throw new Error(errMsg);\n });\n function removeEdge(succComponentType) {\n graph[succComponentType].entryCount--;\n if (graph[succComponentType].entryCount === 0) {\n noEntryList.push(succComponentType);\n }\n }\n // Consider this case: legend depends on series, and we call\n // chart.setOption({series: [...]}), where only series is in option.\n // If we do not have 'removeEdgeAndAdd', legendModel.mergeOption will\n // not be called, but only sereis.mergeOption is called. Thus legend\n // have no chance to update its local record about series (like which\n // name of series is available in legend).\n function removeEdgeAndAdd(succComponentType) {\n targetNameSet[succComponentType] = true;\n removeEdge(succComponentType);\n }\n };\n function makeDepndencyGraph(fullNameList) {\n var graph = {};\n var noEntryList = [];\n zrUtil.each(fullNameList, function (name) {\n var thisItem = createDependencyGraphItem(graph, name);\n var originalDeps = thisItem.originalDeps = dependencyGetter(name);\n var availableDeps = getAvailableDependencies(originalDeps, fullNameList);\n thisItem.entryCount = availableDeps.length;\n if (thisItem.entryCount === 0) {\n noEntryList.push(name);\n }\n zrUtil.each(availableDeps, function (dependentName) {\n if (zrUtil.indexOf(thisItem.predecessor, dependentName) < 0) {\n thisItem.predecessor.push(dependentName);\n }\n var thatItem = createDependencyGraphItem(graph, dependentName);\n if (zrUtil.indexOf(thatItem.successor, dependentName) < 0) {\n thatItem.successor.push(name);\n }\n });\n });\n return {\n graph: graph,\n noEntryList: noEntryList\n };\n }\n function createDependencyGraphItem(graph, name) {\n if (!graph[name]) {\n graph[name] = {\n predecessor: [],\n successor: []\n };\n }\n return graph[name];\n }\n function getAvailableDependencies(originalDeps, fullNameList) {\n var availableDeps = [];\n zrUtil.each(originalDeps, function (dep) {\n zrUtil.indexOf(fullNameList, dep) >= 0 && availableDeps.push(dep);\n });\n return availableDeps;\n }\n}\nexport function inheritDefaultOption(superOption, subOption) {\n // See also `model/Component.ts#getDefaultOption`\n return zrUtil.merge(zrUtil.merge({}, superOption, true), subOption, true);\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\n/**\r\n * Language: English.\r\n */\nexport default {\n time: {\n month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthAbbr: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n dayOfWeek: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n dayOfWeekAbbr: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n },\n legend: {\n selector: {\n all: 'All',\n inverse: 'Inv'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: 'Box Select',\n polygon: 'Lasso Select',\n lineX: 'Horizontally Select',\n lineY: 'Vertically Select',\n keep: 'Keep Selections',\n clear: 'Clear Selections'\n }\n },\n dataView: {\n title: 'Data View',\n lang: ['Data View', 'Close', 'Refresh']\n },\n dataZoom: {\n title: {\n zoom: 'Zoom',\n back: 'Zoom Reset'\n }\n },\n magicType: {\n title: {\n line: 'Switch to Line Chart',\n bar: 'Switch to Bar Chart',\n stack: 'Stack',\n tiled: 'Tile'\n }\n },\n restore: {\n title: 'Restore'\n },\n saveAsImage: {\n title: 'Save as Image',\n lang: ['Right Click to Save Image']\n }\n },\n series: {\n typeNames: {\n pie: 'Pie chart',\n bar: 'Bar chart',\n line: 'Line chart',\n scatter: 'Scatter plot',\n effectScatter: 'Ripple scatter plot',\n radar: 'Radar chart',\n tree: 'Tree',\n treemap: 'Treemap',\n boxplot: 'Boxplot',\n candlestick: 'Candlestick',\n k: 'K line chart',\n heatmap: 'Heat map',\n map: 'Map',\n parallel: 'Parallel coordinate map',\n lines: 'Line graph',\n graph: 'Relationship graph',\n sankey: 'Sankey diagram',\n funnel: 'Funnel chart',\n gauge: 'Gauge',\n pictorialBar: 'Pictorial bar',\n themeRiver: 'Theme River Map',\n sunburst: 'Sunburst',\n custom: 'Custom chart',\n chart: 'Chart'\n }\n },\n aria: {\n general: {\n withTitle: 'This is a chart about \"{title}\"',\n withoutTitle: 'This is a chart'\n },\n series: {\n single: {\n prefix: '',\n withName: ' with type {seriesType} named {seriesName}.',\n withoutName: ' with type {seriesType}.'\n },\n multiple: {\n prefix: '. It consists of {seriesCount} series count.',\n withName: ' The {seriesId} series is a {seriesType} representing {seriesName}.',\n withoutName: ' The {seriesId} series is a {seriesType}.',\n separator: {\n middle: '',\n end: ''\n }\n }\n },\n data: {\n allData: 'The data is as follows: ',\n partialData: 'The first {displayCnt} items are: ',\n withName: 'the data for {name} is {value}',\n withoutName: '{value}',\n separator: {\n middle: ', ',\n end: '. '\n }\n }\n }\n};", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n * Licensed to the Apache Software Foundation (ASF) under one\r\n * or more contributor license agreements. See the NOTICE file\r\n * distributed with this work for additional information\r\n * regarding copyright ownership. The ASF licenses this file\r\n * to you under the Apache License, Version 2.0 (the\r\n * \"License\"); you may not use this file except in compliance\r\n * with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing,\r\n * software distributed under the License is distributed on an\r\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n * KIND, either express or implied. See the License for the\r\n * specific language governing permissions and limitations\r\n * under the License.\r\n */\nexport default {\n time: {\n month: ['\u4E00\u6708', '\u4E8C\u6708', '\u4E09\u6708', '\u56DB\u6708', '\u4E94\u6708', '\u516D\u6708', '\u4E03\u6708', '\u516B\u6708', '\u4E5D\u6708', '\u5341\u6708', '\u5341\u4E00\u6708', '\u5341\u4E8C\u6708'],\n monthAbbr: ['1\u6708', '2\u6708', '3\u6708', '4\u6708', '5\u6708', '6\u6708', '7\u6708', '8\u6708', '9\u6708', '10\u6708', '11\u6708', '12\u6708'],\n dayOfWeek: ['\u661F\u671F\u65E5', '\u661F\u671F\u4E00', '\u661F\u671F\u4E8C', '\u661F\u671F\u4E09', '\u661F\u671F\u56DB', '\u661F\u671F\u4E94', '\u661F\u671F\u516D'],\n dayOfWeekAbbr: ['\u65E5', '\u4E00', '\u4E8C', '\u4E09', '\u56DB', '\u4E94', '\u516D']\n },\n legend: {\n selector: {\n all: '\u5168\u9009',\n inverse: '\u53CD\u9009'\n }\n },\n toolbox: {\n brush: {\n title: {\n rect: '\u77E9\u5F62\u9009\u62E9',\n polygon: '\u5708\u9009',\n lineX: '\u6A2A\u5411\u9009\u62E9',\n lineY: '\u7EB5\u5411\u9009\u62E9',\n keep: '\u4FDD\u6301\u9009\u62E9',\n clear: '\u6E05\u9664\u9009\u62E9'\n }\n },\n dataView: {\n title: '\u6570\u636E\u89C6\u56FE',\n lang: ['\u6570\u636E\u89C6\u56FE', '\u5173\u95ED', '\u5237\u65B0']\n },\n dataZoom: {\n title: {\n zoom: '\u533A\u57DF\u7F29\u653E',\n back: '\u533A\u57DF\u7F29\u653E\u8FD8\u539F'\n }\n },\n magicType: {\n title: {\n line: '\u5207\u6362\u4E3A\u6298\u7EBF\u56FE',\n bar: '\u5207\u6362\u4E3A\u67F1\u72B6\u56FE',\n stack: '\u5207\u6362\u4E3A\u5806\u53E0',\n tiled: '\u5207\u6362\u4E3A\u5E73\u94FA'\n }\n },\n restore: {\n title: '\u8FD8\u539F'\n },\n saveAsImage: {\n title: '\u4FDD\u5B58\u4E3A\u56FE\u7247',\n lang: ['\u53F3\u952E\u53E6\u5B58\u4E3A\u56FE\u7247']\n }\n },\n series: {\n typeNames: {\n pie: '\u997C\u56FE',\n bar: '\u67F1\u72B6\u56FE',\n line: '\u6298\u7EBF\u56FE',\n scatter: '\u6563\u70B9\u56FE',\n effectScatter: '\u6D9F\u6F2A\u6563\u70B9\u56FE',\n radar: '\u96F7\u8FBE\u56FE',\n tree: '\u6811\u56FE',\n treemap: '\u77E9\u5F62\u6811\u56FE',\n boxplot: '\u7BB1\u578B\u56FE',\n candlestick: 'K\u7EBF\u56FE',\n k: 'K\u7EBF\u56FE',\n heatmap: '\u70ED\u529B\u56FE',\n map: '\u5730\u56FE',\n parallel: '\u5E73\u884C\u5750\u6807\u56FE',\n lines: '\u7EBF\u56FE',\n graph: '\u5173\u7CFB\u56FE',\n sankey: '\u6851\u57FA\u56FE',\n funnel: '\u6F0F\u6597\u56FE',\n gauge: '\u4EEA\u8868\u76D8\u56FE',\n pictorialBar: '\u8C61\u5F62\u67F1\u56FE',\n themeRiver: '\u4E3B\u9898\u6CB3\u6D41\u56FE',\n sunburst: '\u65ED\u65E5\u56FE',\n custom: '\u81EA\u5B9A\u4E49\u56FE\u8868',\n chart: '\u56FE\u8868'\n }\n },\n aria: {\n general: {\n withTitle: '\u8FD9\u662F\u4E00\u4E2A\u5173\u4E8E\u201C{title}\u201D\u7684\u56FE\u8868\u3002',\n withoutTitle: '\u8FD9\u662F\u4E00\u4E2A\u56FE\u8868\uFF0C'\n },\n series: {\n single: {\n prefix: '',\n withName: '\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\uFF0C\u8868\u793A{seriesName}\u3002',\n withoutName: '\u56FE\u8868\u7C7B\u578B\u662F{seriesType}\u3002'\n },\n multiple: {\n prefix: '\u5B83\u7531{seriesCount}\u4E2A\u56FE\u8868\u7CFB\u5217\u7EC4\u6210\u3002',\n withName: '\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A\u8868\u793A{seriesName}\u7684{seriesType}\uFF0C',\n withoutName: '\u7B2C{seriesId}\u4E2A\u7CFB\u5217\u662F\u4E00\u4E2A{seriesType}\uFF0C',\n separator: {\n middle: '\uFF1B',\n end: '\u3002'\n }\n }\n },\n data: {\n allData: '\u5176\u6570\u636E\u662F\u2014\u2014',\n partialData: '\u5176\u4E2D\uFF0C\u524D{displayCnt}\u9879\u662F\u2014\u2014',\n withName: '{name}\u7684\u6570\u636E\u662F{value}',\n withoutName: '{value}',\n separator: {\n middle: '\uFF0C',\n end: ''\n }\n }\n }\n};", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport Model from '../model/Model.js';\nimport env from 'zrender/lib/core/env.js';\n// default import ZH and EN lang\nimport langEN from '../i18n/langEN.js';\nimport langZH from '../i18n/langZH.js';\nimport { isString, clone, merge } from 'zrender/lib/core/util.js';\nvar LOCALE_ZH = 'ZH';\nvar LOCALE_EN = 'EN';\nvar DEFAULT_LOCALE = LOCALE_EN;\nvar localeStorage = {};\nvar localeModels = {};\nexport var SYSTEM_LANG = !env.domSupported ? DEFAULT_LOCALE : function () {\n var langStr = (/* eslint-disable-next-line */\n document.documentElement.lang || navigator.language || navigator.browserLanguage || DEFAULT_LOCALE).toUpperCase();\n return langStr.indexOf(LOCALE_ZH) > -1 ? LOCALE_ZH : DEFAULT_LOCALE;\n}();\nexport function registerLocale(locale, localeObj) {\n locale = locale.toUpperCase();\n localeModels[locale] = new Model(localeObj);\n localeStorage[locale] = localeObj;\n}\n// export function getLocale(locale: string) {\n// return localeStorage[locale];\n// }\nexport function createLocaleObject(locale) {\n if (isString(locale)) {\n var localeObj = localeStorage[locale.toUpperCase()] || {};\n if (locale === LOCALE_ZH || locale === LOCALE_EN) {\n return clone(localeObj);\n } else {\n return merge(clone(localeObj), clone(localeStorage[DEFAULT_LOCALE]), false);\n }\n } else {\n return merge(clone(locale), clone(localeStorage[DEFAULT_LOCALE]), false);\n }\n}\nexport function getLocaleModel(lang) {\n return localeModels[lang];\n}\nexport function getDefaultLocaleModel() {\n return localeModels[DEFAULT_LOCALE];\n}\n// Default locale\nregisterLocale(LOCALE_EN, langEN);\nregisterLocale(LOCALE_ZH, langZH);", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport * as numberUtil from './number.js';\nimport { getDefaultLocaleModel, getLocaleModel, SYSTEM_LANG } from '../core/locale.js';\nimport Model from '../model/Model.js';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = ONE_SECOND * 60;\nexport var ONE_HOUR = ONE_MINUTE * 60;\nexport var ONE_DAY = ONE_HOUR * 24;\nexport var ONE_YEAR = ONE_DAY * 365;\nexport var defaultLeveledFormatter = {\n year: '{yyyy}',\n month: '{MMM}',\n day: '{d}',\n hour: '{HH}:{mm}',\n minute: '{HH}:{mm}',\n second: '{HH}:{mm}:{ss}',\n millisecond: '{HH}:{mm}:{ss} {SSS}',\n none: '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}'\n};\nvar fullDayFormatter = '{yyyy}-{MM}-{dd}';\nexport var fullLeveledFormatter = {\n year: '{yyyy}',\n month: '{yyyy}-{MM}',\n day: fullDayFormatter,\n hour: fullDayFormatter + ' ' + defaultLeveledFormatter.hour,\n minute: fullDayFormatter + ' ' + defaultLeveledFormatter.minute,\n second: fullDayFormatter + ' ' + defaultLeveledFormatter.second,\n millisecond: defaultLeveledFormatter.none\n};\nexport var primaryTimeUnits = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond'];\nexport var timeUnits = ['year', 'half-year', 'quarter', 'month', 'week', 'half-week', 'day', 'half-day', 'quarter-day', 'hour', 'minute', 'second', 'millisecond'];\nexport function pad(str, len) {\n str += '';\n return '0000'.substr(0, len - str.length) + str;\n}\nexport function getPrimaryTimeUnit(timeUnit) {\n switch (timeUnit) {\n case 'half-year':\n case 'quarter':\n return 'month';\n case 'week':\n case 'half-week':\n return 'day';\n case 'half-day':\n case 'quarter-day':\n return 'hour';\n default:\n // year, minutes, second, milliseconds\n return timeUnit;\n }\n}\nexport function isPrimaryTimeUnit(timeUnit) {\n return timeUnit === getPrimaryTimeUnit(timeUnit);\n}\nexport function getDefaultFormatPrecisionOfInterval(timeUnit) {\n switch (timeUnit) {\n case 'year':\n case 'month':\n return 'day';\n case 'millisecond':\n return 'millisecond';\n default:\n // Also for day, hour, minute, second\n return 'second';\n }\n}\nexport function format(\n// Note: The result based on `isUTC` are totally different, which can not be just simply\n// substituted by the result without `isUTC`. So we make the param `isUTC` mandatory.\ntime, template, isUTC, lang) {\n var date = numberUtil.parseDate(time);\n var y = date[fullYearGetterName(isUTC)]();\n var M = date[monthGetterName(isUTC)]() + 1;\n var q = Math.floor((M - 1) / 3) + 1;\n var d = date[dateGetterName(isUTC)]();\n var e = date['get' + (isUTC ? 'UTC' : '') + 'Day']();\n var H = date[hoursGetterName(isUTC)]();\n var h = (H - 1) % 12 + 1;\n var m = date[minutesGetterName(isUTC)]();\n var s = date[secondsGetterName(isUTC)]();\n var S = date[millisecondsGetterName(isUTC)]();\n var a = H >= 12 ? 'pm' : 'am';\n var A = a.toUpperCase();\n var localeModel = lang instanceof Model ? lang : getLocaleModel(lang || SYSTEM_LANG) || getDefaultLocaleModel();\n var timeModel = localeModel.getModel('time');\n var month = timeModel.get('month');\n var monthAbbr = timeModel.get('monthAbbr');\n var dayOfWeek = timeModel.get('dayOfWeek');\n var dayOfWeekAbbr = timeModel.get('dayOfWeekAbbr');\n return (template || '').replace(/{a}/g, a + '').replace(/{A}/g, A + '').replace(/{yyyy}/g, y + '').replace(/{yy}/g, pad(y % 100 + '', 2)).replace(/{Q}/g, q + '').replace(/{MMMM}/g, month[M - 1]).replace(/{MMM}/g, monthAbbr[M - 1]).replace(/{MM}/g, pad(M, 2)).replace(/{M}/g, M + '').replace(/{dd}/g, pad(d, 2)).replace(/{d}/g, d + '').replace(/{eeee}/g, dayOfWeek[e]).replace(/{ee}/g, dayOfWeekAbbr[e]).replace(/{e}/g, e + '').replace(/{HH}/g, pad(H, 2)).replace(/{H}/g, H + '').replace(/{hh}/g, pad(h + '', 2)).replace(/{h}/g, h + '').replace(/{mm}/g, pad(m, 2)).replace(/{m}/g, m + '').replace(/{ss}/g, pad(s, 2)).replace(/{s}/g, s + '').replace(/{SSS}/g, pad(S, 3)).replace(/{S}/g, S + '');\n}\nexport function leveledFormat(tick, idx, formatter, lang, isUTC) {\n var template = null;\n if (zrUtil.isString(formatter)) {\n // Single formatter for all units at all levels\n template = formatter;\n } else if (zrUtil.isFunction(formatter)) {\n // Callback formatter\n template = formatter(tick.value, idx, {\n level: tick.level\n });\n } else {\n var defaults = zrUtil.extend({}, defaultLeveledFormatter);\n if (tick.level > 0) {\n for (var i = 0; i < primaryTimeUnits.length; ++i) {\n defaults[primaryTimeUnits[i]] = \"{primary|\" + defaults[primaryTimeUnits[i]] + \"}\";\n }\n }\n var mergedFormatter = formatter ? formatter.inherit === false ? formatter // Use formatter with bigger units\n : zrUtil.defaults(formatter, defaults) : defaults;\n var unit = getUnitFromValue(tick.value, isUTC);\n if (mergedFormatter[unit]) {\n template = mergedFormatter[unit];\n } else if (mergedFormatter.inherit) {\n // Unit formatter is not defined and should inherit from bigger units\n var targetId = timeUnits.indexOf(unit);\n for (var i = targetId - 1; i >= 0; --i) {\n if (mergedFormatter[unit]) {\n template = mergedFormatter[unit];\n break;\n }\n }\n template = template || defaults.none;\n }\n if (zrUtil.isArray(template)) {\n var levelId = tick.level == null ? 0 : tick.level >= 0 ? tick.level : template.length + tick.level;\n levelId = Math.min(levelId, template.length - 1);\n template = template[levelId];\n }\n }\n return format(new Date(tick.value), template, isUTC, lang);\n}\nexport function getUnitFromValue(value, isUTC) {\n var date = numberUtil.parseDate(value);\n var M = date[monthGetterName(isUTC)]() + 1;\n var d = date[dateGetterName(isUTC)]();\n var h = date[hoursGetterName(isUTC)]();\n var m = date[minutesGetterName(isUTC)]();\n var s = date[secondsGetterName(isUTC)]();\n var S = date[millisecondsGetterName(isUTC)]();\n var isSecond = S === 0;\n var isMinute = isSecond && s === 0;\n var isHour = isMinute && m === 0;\n var isDay = isHour && h === 0;\n var isMonth = isDay && d === 1;\n var isYear = isMonth && M === 1;\n if (isYear) {\n return 'year';\n } else if (isMonth) {\n return 'month';\n } else if (isDay) {\n return 'day';\n } else if (isHour) {\n return 'hour';\n } else if (isMinute) {\n return 'minute';\n } else if (isSecond) {\n return 'second';\n } else {\n return 'millisecond';\n }\n}\nexport function getUnitValue(value, unit, isUTC) {\n var date = zrUtil.isNumber(value) ? numberUtil.parseDate(value) : value;\n unit = unit || getUnitFromValue(value, isUTC);\n switch (unit) {\n case 'year':\n return date[fullYearGetterName(isUTC)]();\n case 'half-year':\n return date[monthGetterName(isUTC)]() >= 6 ? 1 : 0;\n case 'quarter':\n return Math.floor((date[monthGetterName(isUTC)]() + 1) / 4);\n case 'month':\n return date[monthGetterName(isUTC)]();\n case 'day':\n return date[dateGetterName(isUTC)]();\n case 'half-day':\n return date[hoursGetterName(isUTC)]() / 24;\n case 'hour':\n return date[hoursGetterName(isUTC)]();\n case 'minute':\n return date[minutesGetterName(isUTC)]();\n case 'second':\n return date[secondsGetterName(isUTC)]();\n case 'millisecond':\n return date[millisecondsGetterName(isUTC)]();\n }\n}\nexport function fullYearGetterName(isUTC) {\n return isUTC ? 'getUTCFullYear' : 'getFullYear';\n}\nexport function monthGetterName(isUTC) {\n return isUTC ? 'getUTCMonth' : 'getMonth';\n}\nexport function dateGetterName(isUTC) {\n return isUTC ? 'getUTCDate' : 'getDate';\n}\nexport function hoursGetterName(isUTC) {\n return isUTC ? 'getUTCHours' : 'getHours';\n}\nexport function minutesGetterName(isUTC) {\n return isUTC ? 'getUTCMinutes' : 'getMinutes';\n}\nexport function secondsGetterName(isUTC) {\n return isUTC ? 'getUTCSeconds' : 'getSeconds';\n}\nexport function millisecondsGetterName(isUTC) {\n return isUTC ? 'getUTCMilliseconds' : 'getMilliseconds';\n}\nexport function fullYearSetterName(isUTC) {\n return isUTC ? 'setUTCFullYear' : 'setFullYear';\n}\nexport function monthSetterName(isUTC) {\n return isUTC ? 'setUTCMonth' : 'setMonth';\n}\nexport function dateSetterName(isUTC) {\n return isUTC ? 'setUTCDate' : 'setDate';\n}\nexport function hoursSetterName(isUTC) {\n return isUTC ? 'setUTCHours' : 'setHours';\n}\nexport function minutesSetterName(isUTC) {\n return isUTC ? 'setUTCMinutes' : 'setMinutes';\n}\nexport function secondsSetterName(isUTC) {\n return isUTC ? 'setUTCSeconds' : 'setSeconds';\n}\nexport function millisecondsSetterName(isUTC) {\n return isUTC ? 'setUTCMilliseconds' : 'setMilliseconds';\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport { Text } from '../util/graphic.js';\nexport function getTextRect(text, font, align, verticalAlign, padding, rich, truncate, lineHeight) {\n var textEl = new Text({\n style: {\n text: text,\n font: font,\n align: align,\n verticalAlign: verticalAlign,\n padding: padding,\n rich: rich,\n overflow: truncate ? 'truncate' : null,\n lineHeight: lineHeight\n }\n });\n return textEl.getBoundingRect();\n}", "\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n\n/**\n * AUTO-GENERATED FILE. DO NOT MODIFY.\n */\n\n/*\r\n* Licensed to the Apache Software Foundation (ASF) under one\r\n* or more contributor license agreements. See the NOTICE file\r\n* distributed with this work for additional information\r\n* regarding copyright ownership. The ASF licenses this file\r\n* to you under the Apache License, Version 2.0 (the\r\n* \"License\"); you may not use this file except in compliance\r\n* with the License. You may obtain a copy of the License at\r\n*\r\n* http://www.apache.org/licenses/LICENSE-2.0\r\n*\r\n* Unless required by applicable law or agreed to in writing,\r\n* software distributed under the License is distributed on an\r\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n* KIND, either express or implied. See the License for the\r\n* specific language governing permissions and limitations\r\n* under the License.\r\n*/\nimport * as zrUtil from 'zrender/lib/core/util.js';\nimport { encodeHTML } from 'zrender/lib/core/dom.js';\nimport { parseDate, isNumeric, numericToNumber } from './number.js';\nimport { format as timeFormat, pad } from './time.js';\nimport { deprecateReplaceLog } from './log.js';\n/**\r\n * Add a comma each three digit.\r\n */\nexport function addCommas(x) {\n if (!isNumeric(x)) {\n return zrUtil.isString(x) ? x : '-';\n }\n var parts = (x + '').split('.');\n return parts[0].replace(/(\\d{1,3})(?=(?:\\d{3})+(?!\\d))/g, '$1,') + (parts.length > 1 ? '.' + parts[1] : '');\n}\nexport function toCamelCase(str, upperCaseFirst) {\n str = (str || '').toLowerCase().replace(/-(.)/g, function (match, group1) {\n return group1.toUpperCase();\n });\n if (upperCaseFirst && str) {\n str = str.charAt(0).toUpperCase() + str.slice(1);\n }\n return str;\n}\nexport var normalizeCssArray = zrUtil.normalizeCssArray;\nexport { encodeHTML };\n/**\r\n * Make value user readable for tooltip and label.\r\n * \"User readable\":\r\n * Try to not print programmer-specific text like NaN, Infinity, null, undefined.\r\n * Avoid to display an empty string, which users can not recognize there is\r\n * a value and it might look like a bug.\r\n */\nexport function makeValueReadable(value, valueType, useUTC) {\n var USER_READABLE_DEFUALT_TIME_PATTERN = '{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}';\n function stringToUserReadable(str) {\n return str && zrUtil.trim(str) ? str : '-';\n }\n function isNumberUserReadable(num) {\n return !!(num != null && !isNaN(num) && isFinite(num));\n }\n var isTypeTime = valueType === 'time';\n var isValueDate = value instanceof Date;\n if (isTypeTime || isValueDate) {\n var date = isTypeTime ? parseDate(value) : value;\n if (!isNaN(+date)) {\n return timeFormat(date, USER_READABLE_DEFUALT_TIME_PATTERN, useUTC);\n } else if (isValueDate) {\n return '-';\n }\n // In other cases, continue to try to display the value in the following code.\n }\n if (valueType === 'ordinal') {\n return zrUtil.isStringSafe(value) ? stringToUserReadable(value) : zrUtil.isNumber(value) ? isNumberUserReadable(value) ? value + '' : '-' : '-';\n }\n // By default.\n var numericResult = numericToNumber(value);\n return isNumberUserReadable(numericResult) ? addCommas(numericResult) : zrUtil.isStringSafe(value) ? stringToUserReadable(value) : typeof value === 'boolean' ? value + '' : '-';\n}\nvar TPL_VAR_ALIAS = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\nvar wrapVar = function (varName, seriesIdx) {\n return '{' + varName + (seriesIdx == null ? '' : seriesIdx) + '}';\n};\n/**\r\n * Template formatter\r\n * @param {Array.