diff --git a/.eslintrc-common.yaml b/.eslintrc-common.yaml
index 081c0bfcd3..4ae0d21d48 100644
--- a/.eslintrc-common.yaml
+++ b/.eslintrc-common.yaml
@@ -163,7 +163,7 @@ rules:
- 2
- "never"
space-unary-ops: 2
- spaced-comment: 0
+ spaced-comment: "error"
max-nested-callbacks:
- 1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 471f1aa7ec..23981bcde3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -10,7 +10,7 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- name: Fetch commit count
@@ -44,7 +44,7 @@ jobs:
- name: Collect changed files
run: |
mkdir ~/tmp/
- git diff ${{ github.event.pull_request.base.sha }} ${{ github.sha }} --name-only --relative '*src/**/*.ts' > ~/tmp/changed_files
+ git diff ${{ github.event.pull_request.base.sha }} ${{ github.sha }} --diff-filter=ACM --name-only --relative '*src/**/*.ts' > ~/tmp/changed_files
echo -e "Changed files: \n$(cat ~/tmp/changed_files)"
- name: Lint
@@ -58,7 +58,7 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- uses: actions/checkout@v3
diff --git a/.github/workflows/nightly-next.yml b/.github/workflows/nightly-next.yml
index b8c7978846..c2a6dd870f 100644
--- a/.github/workflows/nightly-next.yml
+++ b/.github/workflows/nightly-next.yml
@@ -2,7 +2,7 @@ name: Publish Nightly Next
on:
schedule:
- - cron: '0 9 * * *' # After zrender nightly published
+ - cron: '10 9 * * *' # After zrender nightly published
# committers can manually trigger with workflow_dispatch
workflow_dispatch: {}
repository_dispatch:
@@ -15,24 +15,27 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
ref: next
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
registry-url: https://registry.npmjs.org/
- name: Setup and publish nightly
run: |
+ node build/nightly/prepare.js --next
+ npm i zrender@npm:zrender-nightly@next
npm ci
+ npm ls zrender
+ node build/nightly/post.js
npm run release
npm run test
npm run test:dts
- node build/prepareNightly.js --next
npm publish --tag next
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 5f4a302383..ddbcd98412 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -15,21 +15,24 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
registry-url: https://registry.npmjs.org/
- name: Setup and publish nightly
run: |
+ node build/nightly/prepare.js
+ npm i zrender@npm:zrender-nightly
npm ci
+ npm ls zrender
+ node build/nightly/post.js
npm run release
npm run test
npm run test:dts
- node build/prepareNightly.js
npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
diff --git a/.github/workflows/source-release.yml b/.github/workflows/source-release.yml
index c98ba72345..87b85d5ccb 100644
--- a/.github/workflows/source-release.yml
+++ b/.github/workflows/source-release.yml
@@ -11,13 +11,13 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
@@ -26,7 +26,7 @@ jobs:
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Cache node modules
- uses: actions/cache@v2
+ uses: actions/cache@v3
env:
cache-name: cache-node-modules
with:
@@ -34,7 +34,7 @@ jobs:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
- - name: Prepare releaes materials
+ - name: Prepare release materials
run: |
npm i
node build/source-release/prepareReleaseMaterials.js \
@@ -44,7 +44,7 @@ jobs:
--out tmp/materials
- name: Archive materials
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: apache-echarts-${{env.RELEASE_VERSION}}-release-materials
path: |
@@ -56,13 +56,13 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
@@ -72,7 +72,7 @@ jobs:
# Get RELEASE_NOTE.txt and pack it into zip.
- name: Download materials
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: apache-echarts-${{env.RELEASE_VERSION}}-release-materials
@@ -80,7 +80,7 @@ jobs:
# Archive before run others to avoid packing unknown files.
- name: Archive source release
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: apache-echarts-${{env.RELEASE_VERSION}}-src
path: |
@@ -109,11 +109,11 @@ jobs:
strategy:
matrix:
- node-version: [12.x]
+ node-version: [16.x]
steps:
- name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2
+ uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
@@ -122,7 +122,7 @@ jobs:
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Download source release
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: apache-echarts-${{env.RELEASE_VERSION}}-src
path: tmp/echarts
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 2c293e76c8..5cf94e3b0c 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -14,7 +14,7 @@ jobs:
if: ${{ github.repository_owner == 'apache' }}
steps:
- name: Close Stale Issues
- uses: actions/stale@v5
+ uses: actions/stale@v6
with:
days-before-stale: 730
days-before-close: 7
@@ -26,5 +26,6 @@ jobs:
stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. If you wish not to mark it as stale, please leave a comment in this PR. We are sorry for this but 2 years is a long time and the code base has been changed a lot. Thanks for your contribution anyway.'
close-pr-message: 'This PR has been automatically closed because it has not had recent activity. Sorry for that and we are looking forward to your next contribution.'
exempt-issue-labels: 'FAQ,priority: high'
+ exempt-all-milestones: true
operations-per-run: 500
ascending: true
diff --git a/.huskyrc b/.huskyrc
index 92e4551cbd..3f05f5dbad 100644
--- a/.huskyrc
+++ b/.huskyrc
@@ -1,5 +1,5 @@
{
"hooks": {
- "pre-commit": "npm run lint && npm run checktype",
+ "pre-commit": "npm run lint && npm run checktype"
}
}
diff --git a/README.md b/README.md
index 8c98532b32..78472efa78 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,9 @@ Execute the instructions in the root directory of the echarts:
npm install
# Rebuild source code immediately in watch mode when changing the source code.
+# It opens the `./test` directory and you may open `-cases.html` to get the list
+# of all test cases.
+# If you wish to create a test case, run `npm run mktest:help` to learn more.
npm run dev
# Check correctness of TypeScript code.
diff --git a/src/chart/boxplot/boxplotVisual.ts b/build/nightly/post.js
similarity index 56%
rename from src/chart/boxplot/boxplotVisual.ts
rename to build/nightly/post.js
index 067738a7b0..a06bf338a6 100644
--- a/src/chart/boxplot/boxplotVisual.ts
+++ b/build/nightly/post.js
@@ -17,10 +17,14 @@
* under the License.
*/
-import GlobalModel from '../../model/Global';
-import ExtensionAPI from '../../core/ExtensionAPI';
-import BoxplotSeriesModel from './BoxplotSeries';
+const fs = require('fs');
-export default function boxplotVisual(ecModel: GlobalModel, api: ExtensionAPI) {
+const root = __dirname + '/../../';
+const echartsPkg = JSON.parse(fs.readFileSync(root + 'package.json'), 'utf-8');
+const zrenderPkg = JSON.parse(fs.readFileSync(root + 'node_modules/zrender/package.json', 'utf-8'));
-}
\ No newline at end of file
+const echartsCorePath = root + 'src/core/echarts.ts';
+const echartsCoreFile = fs.readFileSync(echartsCorePath, 'utf-8')
+ .replace(/export const version = '\S+'/, `export const version = '${echartsPkg.version}'`)
+ .replace(/(export const dependencies = {\s+zrender: ')\S+('\s+})/, `$1${zrenderPkg.version}$2`);
+fs.writeFileSync(echartsCorePath, echartsCoreFile, 'utf-8');
diff --git a/build/prepareNightly.js b/build/nightly/prepare.js
similarity index 95%
rename from build/prepareNightly.js
rename to build/nightly/prepare.js
index 0dccab4efb..edec4a966d 100644
--- a/build/prepareNightly.js
+++ b/build/nightly/prepare.js
@@ -19,7 +19,7 @@
const fs = require('fs');
-const packageJsonPath = __dirname + '/../package.json';
+const packageJsonPath = __dirname + '/../../package.json';
const nightlyPackageName = 'echarts-nightly';
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
@@ -57,8 +57,7 @@ packageJson.version = updateVersion(packageJson.version);
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
-
-const readmePath = __dirname + '/../README.md';
+const readmePath = __dirname + '/../../README.md';
const readmeAttention = `
⚠️ ATTENTION PLEASE
This is nightly build of Apache ECharts. Please DON't use it in your production environment.
@@ -70,4 +69,4 @@ ${readmeAttention}
${readmeContent}
`, 'utf-8');
-}
\ No newline at end of file
+}
diff --git a/extension-src/bmap/BMapModel.ts b/extension-src/bmap/BMapModel.ts
index 6e0f3e6be7..f84c127c8d 100644
--- a/extension-src/bmap/BMapModel.ts
+++ b/extension-src/bmap/BMapModel.ts
@@ -48,10 +48,10 @@ export default echarts.extendComponentModel({
zoom: 5,
- // 2.0 http://lbsyun.baidu.com/custom/index.htm
+ // 2.0 https://lbsyun.baidu.com/custom/index.htm
mapStyle: {},
- // 3.0 http://lbsyun.baidu.com/index.php?title=open/custom
+ // 3.0 https://lbsyun.baidu.com/index.php?title=open/custom
mapStyleV2: {},
// See https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a0b1
diff --git a/extension-src/bmap/README.md b/extension-src/bmap/README.md
index 61b9a86acf..f651075a1b 100644
--- a/extension-src/bmap/README.md
+++ b/extension-src/bmap/README.md
@@ -1,6 +1,6 @@
## 百度地图扩展
-ECharts 百度地图扩展,可以在百度地图上展现 [点图](https://echarts.apache.org/zh/option.html#series-scatter),[线图](https://echarts.apache.org/zh/option.html#series-line),[热力图](https://echarts.apache.org/zh/option.html#series-heatmap) 等可视化。
+ECharts 百度地图扩展,可以在百度地图上展现 [点图](https://echarts.apache.org/zh/option.html#series-scatter),[线图](https://echarts.apache.org/zh/option.html#series-lines),[热力图](https://echarts.apache.org/zh/option.html#series-heatmap) 等可视化。
### 示例
@@ -11,18 +11,19 @@ ECharts 百度地图扩展,可以在百度地图上展现 [点图](https://ech
[北京公交路线特效](https://echarts.apache.org/examples/zh/editor.html?c=lines-bmap-effect)
-[北京公交路线特效](https://echarts.apache.org/examples/zh/editor.html?c=lines-bmap-effect)
-
[杭州热门步行路线](https://echarts.apache.org/examples/zh/editor.html?c=heatmap-bmap)
+[在地图上显示分箱图](https://echarts.apache.org/examples/zh/editor.html?c=map-bin)
+
### 引入
可以直接引入打包好的扩展文件和百度地图的 jssdk
```html
-
-
+
+
+
@@ -46,21 +47,32 @@ require('echarts/extension/bmap/bmap');
option = {
// 加载 bmap 组件
bmap: {
- // 百度地图中心经纬度
+ // 百度地图中心经纬度。默认为 [104.114129, 37.550339]。
center: [120.13066322374, 30.240018034923],
- // 百度地图缩放
+ // 百度地图缩放级别。默认为 5。
zoom: 14,
- // 是否开启拖拽缩放,可以只设置 'scale' 或者 'move'
+ // 是否开启拖拽缩放,可以只设置 'scale' 或者 'move'。默认关闭。
roam: true,
- // 百度地图的自定义样式,见 http://developer.baidu.com/map/jsdevelop-11.htm
- mapStyle: {}
+ // 百度地图的旧版自定义样式,见 https://lbsyun.baidu.com/custom/index.htm
+ mapStyle: {},
+ // 百度地图 3.0 之后的新版自定义样式,见 https://lbsyun.baidu.com/index.php?title=open/custom
+ mapStyleV2: {},
+ // 百度地图的初始化配置,见 https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a0b1
+ mapOptions: {
+ // 禁用百度地图自带的底图可点功能
+ enableMapClick: false
+ }
},
series: [{
type: 'scatter',
// 使用百度地图坐标系
coordinateSystem: 'bmap',
// 数据格式跟在 geo 坐标系上一样,每一项都是 [经度,纬度,数值大小,其它维度...]
- data: [ [120, 30, 1] ]
+ data: [ [120, 30, 1] ],
+ // 编码数据项中第三个元素作为 value 维度
+ encode: {
+ value: 2
+ }
}]
}
diff --git a/i18n/langUA-obj.js b/i18n/langUK-obj.js
similarity index 100%
rename from i18n/langUA-obj.js
rename to i18n/langUK-obj.js
diff --git a/i18n/langUA.js b/i18n/langUK.js
similarity index 99%
rename from i18n/langUA.js
rename to i18n/langUK.js
index 4394070af4..edb8db04d0 100644
--- a/i18n/langUA.js
+++ b/i18n/langUK.js
@@ -165,6 +165,6 @@ var localeObj = {
}
};
- echarts.registerLocale('UA', localeObj);
+ echarts.registerLocale('UK', localeObj);
});
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 260b4e7178..bd4b785054 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,7 +10,7 @@
"license": "Apache-2.0",
"dependencies": {
"tslib": "2.3.0",
- "zrender": "5.4.0"
+ "zrender": "npm:zrender-nightly@^5.4.1-dev.20221104"
},
"devDependencies": {
"@babel/code-frame": "7.10.4",
@@ -19,7 +19,7 @@
"@definitelytyped/typescript-versions": "0.0.64",
"@definitelytyped/utils": "0.0.64",
"@lang/rollup-plugin-dts": "2.0.2",
- "@microsoft/api-extractor": "7.7.2",
+ "@microsoft/api-extractor": "7.31.2",
"@rollup/plugin-commonjs": "^17.0.0",
"@rollup/plugin-node-resolve": "^11.0.0",
"@rollup/plugin-replace": "^2.3.4",
@@ -38,7 +38,7 @@
"husky": "^4.2.5",
"jest": "^26.6.1",
"jest-canvas-mock": "^2.2.0",
- "jshint": "2.10.2",
+ "jshint": "2.13.5",
"magic-string": "^0.25.7",
"open": "6.4.0",
"pixelmatch": "5.0.2",
@@ -681,12 +681,6 @@
"tar-stream": "^2.1.4"
}
},
- "node_modules/@definitelytyped/utils/node_modules/@types/node": {
- "version": "12.19.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz",
- "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==",
- "dev": true
- },
"node_modules/@definitelytyped/utils/node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
@@ -1532,42 +1526,52 @@
}
},
"node_modules/@microsoft/api-extractor": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.2.tgz",
- "integrity": "sha512-W75kcjWlONyB9kQKYAfSMiG3v2JMGlgUihny8PucZqdRatcYADeQiEcX5qE5sWdNRHD/J+5INiwlooZDd82sDQ==",
+ "version": "7.31.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.31.2.tgz",
+ "integrity": "sha512-ZODCU9ckTS9brXiZpUW2iDrnAg7jLxeLBM1AkPpSZFcbG/8HGLvfKOKrd71VIJHjc52x2lB8xj7ZWksnP7AOBA==",
"dev": true,
"dependencies": {
- "@microsoft/api-extractor-model": "7.7.2",
- "@microsoft/node-core-library": "3.18.2",
- "@microsoft/ts-command-line": "4.3.7",
- "@microsoft/tsdoc": "0.12.14",
+ "@microsoft/api-extractor-model": "7.24.2",
+ "@microsoft/tsdoc": "0.14.1",
+ "@microsoft/tsdoc-config": "~0.16.1",
+ "@rushstack/node-core-library": "3.52.0",
+ "@rushstack/rig-package": "0.3.15",
+ "@rushstack/ts-command-line": "4.12.3",
"colors": "~1.2.1",
"lodash": "~4.17.15",
- "resolve": "1.8.1",
+ "resolve": "~1.17.0",
+ "semver": "~7.3.0",
"source-map": "~0.6.1",
- "typescript": "~3.7.2"
+ "typescript": "~4.7.4"
},
"bin": {
"api-extractor": "bin/api-extractor"
}
},
"node_modules/@microsoft/api-extractor-model": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.2.tgz",
- "integrity": "sha512-USwWUPV3YLS8ZOS11vFh3nzEWXC2d8OZJ6CGp0nRnCXtbqmKqAq4Jg9J5gs1PCemo7JQEbzbHGGwycC0DbRJqw==",
+ "version": "7.24.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz",
+ "integrity": "sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw==",
"dev": true,
"dependencies": {
- "@microsoft/node-core-library": "3.18.2",
- "@microsoft/tsdoc": "0.12.14"
+ "@microsoft/tsdoc": "0.14.1",
+ "@microsoft/tsdoc-config": "~0.16.1",
+ "@rushstack/node-core-library": "3.52.0"
}
},
- "node_modules/@microsoft/api-extractor/node_modules/resolve": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
- "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "node_modules/@microsoft/api-extractor/node_modules/semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"dependencies": {
- "path-parse": "^1.0.5"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/@microsoft/api-extractor/node_modules/source-map": {
@@ -1580,9 +1584,9 @@
}
},
"node_modules/@microsoft/api-extractor/node_modules/typescript": {
- "version": "3.7.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz",
- "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
@@ -1592,61 +1596,43 @@
"node": ">=4.2.0"
}
},
- "node_modules/@microsoft/node-core-library": {
- "version": "3.18.2",
- "resolved": "https://registry.npmjs.org/@microsoft/node-core-library/-/node-core-library-3.18.2.tgz",
- "integrity": "sha512-IRoRmLwNvrR0rTNavYlfNObz9pr4Epo8Hd//0SNptt7adOySd735ur7YBO7SzafeijHsD3/dC4PXLLwhIsMU7Q==",
- "dev": true,
- "dependencies": {
- "@types/node": "8.10.54",
- "colors": "~1.2.1",
- "fs-extra": "~7.0.1",
- "jju": "~1.4.0",
- "semver": "~5.3.0",
- "timsort": "~0.3.0",
- "z-schema": "~3.18.3"
- }
+ "node_modules/@microsoft/tsdoc": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz",
+ "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==",
+ "dev": true
},
- "node_modules/@microsoft/node-core-library/node_modules/fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "node_modules/@microsoft/tsdoc-config": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
+ "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
"dev": true,
"dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
+ "@microsoft/tsdoc": "0.14.2",
+ "ajv": "~6.12.6",
+ "jju": "~1.4.0",
+ "resolve": "~1.19.0"
}
},
- "node_modules/@microsoft/node-core-library/node_modules/semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
+ "node_modules/@microsoft/tsdoc-config/node_modules/@microsoft/tsdoc": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
+ "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+ "dev": true
},
- "node_modules/@microsoft/ts-command-line": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/@microsoft/ts-command-line/-/ts-command-line-4.3.7.tgz",
- "integrity": "sha512-dl7j5E4Ly4vin0dFRNyDEmslpqLTeFkSvWi1Ux2OhTXbORpaRm2qivTQzUgbPSh8Mtc1LSZGekqEMNl0e0OMNw==",
+ "node_modules/@microsoft/tsdoc-config/node_modules/resolve": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+ "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
"dev": true,
"dependencies": {
- "@types/argparse": "1.0.33",
- "argparse": "~1.0.9",
- "colors": "~1.2.1"
+ "is-core-module": "^2.1.0",
+ "path-parse": "^1.0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/@microsoft/tsdoc": {
- "version": "0.12.14",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.14.tgz",
- "integrity": "sha512-518yewjSga1jLdiLrcmpMFlaba5P+50b0TWNFUpC+SL9Yzf0kMi57qw+bMl+rQ08cGqH1vLx4eg9YFUbZXgZ0Q==",
- "dev": true
- },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
@@ -1749,15 +1735,6 @@
"node": ">=6"
}
},
- "node_modules/@rollup/plugin-node-resolve/node_modules/is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- }
- },
"node_modules/@rollup/plugin-node-resolve/node_modules/resolve": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
@@ -1804,6 +1781,94 @@
"integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
"dev": true
},
+ "node_modules/@rushstack/node-core-library": {
+ "version": "3.52.0",
+ "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz",
+ "integrity": "sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "12.20.24",
+ "colors": "~1.2.1",
+ "fs-extra": "~7.0.1",
+ "import-lazy": "~4.0.0",
+ "jju": "~1.4.0",
+ "resolve": "~1.17.0",
+ "semver": "~7.3.0",
+ "z-schema": "~5.0.2"
+ }
+ },
+ "node_modules/@rushstack/node-core-library/node_modules/fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/@rushstack/node-core-library/node_modules/import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@rushstack/node-core-library/node_modules/semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@rushstack/rig-package": {
+ "version": "0.3.15",
+ "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.15.tgz",
+ "integrity": "sha512-jxVfvO5OnkRlYRhcVDZWvwiI2l4pv37HDJRtyg5HbD8Z/I8Xj32RICgrxS5xMeGGytobrg5S6OfPOHskg7Nw+A==",
+ "dev": true,
+ "dependencies": {
+ "resolve": "~1.17.0",
+ "strip-json-comments": "~3.1.1"
+ }
+ },
+ "node_modules/@rushstack/rig-package/node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@rushstack/ts-command-line": {
+ "version": "4.12.3",
+ "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz",
+ "integrity": "sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==",
+ "dev": true,
+ "dependencies": {
+ "@types/argparse": "1.0.38",
+ "argparse": "~1.0.9",
+ "colors": "~1.2.1",
+ "string-argv": "~0.3.1"
+ }
+ },
"node_modules/@sindresorhus/is": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
@@ -1831,10 +1896,19 @@
"@sinonjs/commons": "^1.7.0"
}
},
+ "node_modules/@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/@types/argparse": {
- "version": "1.0.33",
- "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz",
- "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==",
+ "version": "1.0.38",
+ "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz",
+ "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==",
"dev": true
},
"node_modules/@types/babel__core": {
@@ -1934,9 +2008,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "8.10.54",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz",
- "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg==",
+ "version": "12.20.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz",
+ "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==",
"dev": true
},
"node_modules/@types/normalize-package-data": {
@@ -2325,6 +2399,18 @@
"integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==",
"dev": true
},
+ "node_modules/agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -4651,12 +4737,6 @@
"node": ">=6 <7 || >=8"
}
},
- "node_modules/dtslint/node_modules/@types/node": {
- "version": "12.19.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz",
- "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==",
- "dev": true
- },
"node_modules/dtslint/node_modules/fs-extra": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
@@ -4889,13 +4969,13 @@
}
},
"node_modules/escodegen": {
- "version": "1.14.3",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+ "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
"dev": true,
"dependencies": {
"esprima": "^4.0.1",
- "estraverse": "^4.2.0",
+ "estraverse": "^5.2.0",
"esutils": "^2.0.2",
"optionator": "^0.8.1"
},
@@ -4904,12 +4984,21 @@
"esgenerate": "bin/esgenerate.js"
},
"engines": {
- "node": ">=4.0"
+ "node": ">=6.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
+ "node_modules/escodegen/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/escodegen/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -6442,6 +6531,20 @@
"integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
"dev": true
},
+ "node_modules/http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "dependencies": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -6457,6 +6560,19 @@
"npm": ">=1.3.7"
}
},
+ "node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -6775,15 +6891,6 @@
"node": ">=4"
}
},
- "node_modules/ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -6833,12 +6940,15 @@
}
},
"node_modules/is-core-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz",
- "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
+ "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-data-descriptor": {
@@ -7002,9 +7112,9 @@
}
},
"node_modules/is-potential-custom-element-name": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz",
- "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
"dev": true
},
"node_modules/is-reference": {
@@ -7772,75 +7882,6 @@
"node": ">= 10.14.2"
}
},
- "node_modules/jest-environment-jsdom/node_modules/jsdom": {
- "version": "16.4.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz",
- "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==",
- "dev": true,
- "dependencies": {
- "abab": "^2.0.3",
- "acorn": "^7.1.1",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.2.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.0",
- "domexception": "^2.0.1",
- "escodegen": "^1.14.1",
- "html-encoding-sniffer": "^2.0.1",
- "is-potential-custom-element-name": "^1.0.0",
- "nwsapi": "^2.2.0",
- "parse5": "5.1.1",
- "request": "^2.88.2",
- "request-promise-native": "^1.0.8",
- "saxes": "^5.0.0",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^3.0.1",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0",
- "ws": "^7.2.3",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jest-environment-jsdom/node_modules/saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "dev": true,
- "dependencies": {
- "xmlchars": "^2.2.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dev": true,
- "dependencies": {
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/jest-environment-node": {
"version": "26.6.1",
"resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.1.tgz",
@@ -9044,7 +9085,7 @@
"node_modules/jju": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
- "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=",
+ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
"dev": true
},
"node_modules/js-tokens": {
@@ -9072,6 +9113,78 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
+ "node_modules/jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom/node_modules/acorn": {
+ "version": "8.7.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
+ "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -9085,18 +9198,17 @@
}
},
"node_modules/jshint": {
- "version": "2.10.2",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz",
- "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==",
+ "version": "2.13.5",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.13.5.tgz",
+ "integrity": "sha512-dB2n1w3OaQ35PLcBGIWXlszjbPZwsgZoxsg6G8PtNf2cFMC1l0fObkYLUuXqTTdi6tKw4sAjfUseTdmDMHQRcg==",
"dev": true,
"dependencies": {
"cli": "~1.0.0",
"console-browserify": "1.1.x",
"exit": "0.1.x",
"htmlparser2": "3.8.x",
- "lodash": "~4.17.11",
+ "lodash": "~4.17.21",
"minimatch": "~3.0.2",
- "shelljs": "0.3.x",
"strip-json-comments": "1.0.x"
},
"bin": {
@@ -9247,7 +9359,7 @@
"node_modules/levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dev": true,
"dependencies": {
"prelude-ls": "~1.1.2",
@@ -9284,13 +9396,13 @@
"node_modules/lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
"dev": true
},
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"dev": true
},
"node_modules/lodash.memoize": {
@@ -9299,12 +9411,6 @@
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
"dev": true
},
- "node_modules/lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
"node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -10118,9 +10224,9 @@
}
},
"node_modules/parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true
},
"node_modules/parseqs": {
@@ -10324,7 +10430,7 @@
"node_modules/prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"dev": true,
"engines": {
"node": ">= 0.8.0"
@@ -10636,52 +10742,6 @@
"node": ">= 6"
}
},
- "node_modules/request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.19"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request-promise-native": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142",
- "dev": true,
- "dependencies": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "engines": {
- "node": ">=0.12.0"
- },
- "peerDependencies": {
- "request": "^2.34"
- }
- },
- "node_modules/request-promise-native/node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/request/node_modules/tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
@@ -11074,6 +11134,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/seedrandom": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.3.tgz",
@@ -11238,18 +11310,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
- "dev": true,
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/shellwords": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
@@ -11556,9 +11616,9 @@
"dev": true
},
"node_modules/socket.io-client/node_modules/socket.io-parser": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
- "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz",
+ "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==",
"dev": true,
"dependencies": {
"component-emitter": "~1.3.0",
@@ -11567,14 +11627,17 @@
}
},
"node_modules/socket.io-parser": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
- "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.2.tgz",
+ "integrity": "sha512-QFZBaZDNqZXeemwejc7D39jrq2eGK/qZuVDiMPKzZK1hLlNvjGilGt4ckfQZeVX4dGmuPzCytN9ZW1nQlEWjgA==",
"dev": true,
"dependencies": {
"component-emitter": "1.2.1",
"debug": "~4.1.0",
"isarray": "2.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/socket.io-parser/node_modules/component-emitter": {
@@ -11818,15 +11881,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/strict-uri-encode": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
@@ -11845,6 +11899,15 @@
"safe-buffer": "~5.1.0"
}
},
+ "node_modules/string-argv": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
+ "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.19"
+ }
+ },
"node_modules/string-length": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz",
@@ -12294,12 +12357,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/timsort": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
- "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
- "dev": true
- },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -12379,23 +12436,23 @@
}
},
"node_modules/tough-cookie": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
- "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
"dev": true,
"dependencies": {
- "ip-regex": "^2.1.0",
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
},
"engines": {
"node": ">=6"
}
},
"node_modules/tr46": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
- "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
"dev": true,
"dependencies": {
"punycode": "^2.1.1"
@@ -12599,7 +12656,7 @@
"node_modules/type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"dev": true,
"dependencies": {
"prelude-ls": "~1.1.2"
@@ -12847,9 +12904,9 @@
}
},
"node_modules/validator": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz",
- "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==",
+ "version": "13.7.0",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+ "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
"dev": true,
"engines": {
"node": ">= 0.10"
@@ -12875,7 +12932,19 @@
"integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
"dev": true,
"dependencies": {
- "browser-process-hrtime": "^1.0.0"
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/walker": {
@@ -12912,13 +12981,13 @@
"dev": true
},
"node_modules/whatwg-url": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz",
- "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
"dev": true,
"dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^2.0.2",
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
"webidl-conversions": "^6.1.0"
},
"engines": {
@@ -13248,26 +13317,37 @@
}
},
"node_modules/z-schema": {
- "version": "3.18.4",
- "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz",
- "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz",
+ "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==",
"dev": true,
"dependencies": {
- "lodash.get": "^4.0.0",
- "lodash.isequal": "^4.0.0",
- "validator": "^8.0.0"
+ "lodash.get": "^4.4.2",
+ "lodash.isequal": "^4.5.0",
+ "validator": "^13.7.0"
},
"bin": {
"z-schema": "bin/z-schema"
},
+ "engines": {
+ "node": ">=8.0.0"
+ },
"optionalDependencies": {
- "commander": "^2.7.1"
+ "commander": "^2.20.3"
}
},
+ "node_modules/z-schema/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true,
+ "optional": true
+ },
"node_modules/zrender": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.0.tgz",
- "integrity": "sha512-rOS09Z2HSVGFs2dn/TuYk5BlCaZcVe8UDLLjj1ySYF828LATKKdxuakSZMvrDz54yiKPDYVfjdKqcX8Jky3BIA==",
+ "name": "zrender-nightly",
+ "version": "5.4.1-dev.20221104",
+ "resolved": "https://registry.npmjs.org/zrender-nightly/-/zrender-nightly-5.4.1-dev.20221104.tgz",
+ "integrity": "sha512-FigVUqINkG/qOxCGi9oYO3raMxEked55dnCAx3Gc47DKePVibOXhVeIqSCdPlu9wUJat6L9A5Jm/ImpoC8DH7A==",
"dependencies": {
"tslib": "2.3.0"
}
@@ -13856,12 +13936,6 @@
"tar-stream": "^2.1.4"
},
"dependencies": {
- "@types/node": {
- "version": "12.19.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz",
- "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==",
- "dev": true
- },
"fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
@@ -14543,29 +14617,32 @@
}
},
"@microsoft/api-extractor": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.2.tgz",
- "integrity": "sha512-W75kcjWlONyB9kQKYAfSMiG3v2JMGlgUihny8PucZqdRatcYADeQiEcX5qE5sWdNRHD/J+5INiwlooZDd82sDQ==",
+ "version": "7.31.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.31.2.tgz",
+ "integrity": "sha512-ZODCU9ckTS9brXiZpUW2iDrnAg7jLxeLBM1AkPpSZFcbG/8HGLvfKOKrd71VIJHjc52x2lB8xj7ZWksnP7AOBA==",
"dev": true,
"requires": {
- "@microsoft/api-extractor-model": "7.7.2",
- "@microsoft/node-core-library": "3.18.2",
- "@microsoft/ts-command-line": "4.3.7",
- "@microsoft/tsdoc": "0.12.14",
+ "@microsoft/api-extractor-model": "7.24.2",
+ "@microsoft/tsdoc": "0.14.1",
+ "@microsoft/tsdoc-config": "~0.16.1",
+ "@rushstack/node-core-library": "3.52.0",
+ "@rushstack/rig-package": "0.3.15",
+ "@rushstack/ts-command-line": "4.12.3",
"colors": "~1.2.1",
"lodash": "~4.17.15",
- "resolve": "1.8.1",
+ "resolve": "~1.17.0",
+ "semver": "~7.3.0",
"source-map": "~0.6.1",
- "typescript": "~3.7.2"
+ "typescript": "~4.7.4"
},
"dependencies": {
- "resolve": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
- "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
+ "semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
"dev": true,
"requires": {
- "path-parse": "^1.0.5"
+ "lru-cache": "^6.0.0"
}
},
"source-map": {
@@ -14575,74 +14652,60 @@
"dev": true
},
"typescript": {
- "version": "3.7.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz",
- "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
"dev": true
}
}
},
"@microsoft/api-extractor-model": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.2.tgz",
- "integrity": "sha512-USwWUPV3YLS8ZOS11vFh3nzEWXC2d8OZJ6CGp0nRnCXtbqmKqAq4Jg9J5gs1PCemo7JQEbzbHGGwycC0DbRJqw==",
+ "version": "7.24.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz",
+ "integrity": "sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw==",
"dev": true,
"requires": {
- "@microsoft/node-core-library": "3.18.2",
- "@microsoft/tsdoc": "0.12.14"
+ "@microsoft/tsdoc": "0.14.1",
+ "@microsoft/tsdoc-config": "~0.16.1",
+ "@rushstack/node-core-library": "3.52.0"
}
},
- "@microsoft/node-core-library": {
- "version": "3.18.2",
- "resolved": "https://registry.npmjs.org/@microsoft/node-core-library/-/node-core-library-3.18.2.tgz",
- "integrity": "sha512-IRoRmLwNvrR0rTNavYlfNObz9pr4Epo8Hd//0SNptt7adOySd735ur7YBO7SzafeijHsD3/dC4PXLLwhIsMU7Q==",
+ "@microsoft/tsdoc": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz",
+ "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==",
+ "dev": true
+ },
+ "@microsoft/tsdoc-config": {
+ "version": "0.16.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz",
+ "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==",
"dev": true,
"requires": {
- "@types/node": "8.10.54",
- "colors": "~1.2.1",
- "fs-extra": "~7.0.1",
+ "@microsoft/tsdoc": "0.14.2",
+ "ajv": "~6.12.6",
"jju": "~1.4.0",
- "semver": "~5.3.0",
- "timsort": "~0.3.0",
- "z-schema": "~3.18.3"
+ "resolve": "~1.19.0"
},
"dependencies": {
- "fs-extra": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
- "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "@microsoft/tsdoc": {
+ "version": "0.14.2",
+ "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz",
+ "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+ "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
+ "is-core-module": "^2.1.0",
+ "path-parse": "^1.0.6"
}
- },
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
- "dev": true
}
}
},
- "@microsoft/ts-command-line": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/@microsoft/ts-command-line/-/ts-command-line-4.3.7.tgz",
- "integrity": "sha512-dl7j5E4Ly4vin0dFRNyDEmslpqLTeFkSvWi1Ux2OhTXbORpaRm2qivTQzUgbPSh8Mtc1LSZGekqEMNl0e0OMNw==",
- "dev": true,
- "requires": {
- "@types/argparse": "1.0.33",
- "argparse": "~1.0.9",
- "colors": "~1.2.1"
- }
- },
- "@microsoft/tsdoc": {
- "version": "0.12.14",
- "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.14.tgz",
- "integrity": "sha512-518yewjSga1jLdiLrcmpMFlaba5P+50b0TWNFUpC+SL9Yzf0kMi57qw+bMl+rQ08cGqH1vLx4eg9YFUbZXgZ0Q==",
- "dev": true
- },
"@nodelib/fs.scandir": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
@@ -14720,15 +14783,6 @@
"integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==",
"dev": true
},
- "is-core-module": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
- "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
"resolve": {
"version": "1.19.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
@@ -14770,6 +14824,80 @@
}
}
},
+ "@rushstack/node-core-library": {
+ "version": "3.52.0",
+ "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz",
+ "integrity": "sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "12.20.24",
+ "colors": "~1.2.1",
+ "fs-extra": "~7.0.1",
+ "import-lazy": "~4.0.0",
+ "jju": "~1.4.0",
+ "resolve": "~1.17.0",
+ "semver": "~7.3.0",
+ "z-schema": "~5.0.2"
+ },
+ "dependencies": {
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "import-lazy": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz",
+ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "7.3.7",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
+ "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@rushstack/rig-package": {
+ "version": "0.3.15",
+ "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.15.tgz",
+ "integrity": "sha512-jxVfvO5OnkRlYRhcVDZWvwiI2l4pv37HDJRtyg5HbD8Z/I8Xj32RICgrxS5xMeGGytobrg5S6OfPOHskg7Nw+A==",
+ "dev": true,
+ "requires": {
+ "resolve": "~1.17.0",
+ "strip-json-comments": "~3.1.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ }
+ }
+ },
+ "@rushstack/ts-command-line": {
+ "version": "4.12.3",
+ "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz",
+ "integrity": "sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==",
+ "dev": true,
+ "requires": {
+ "@types/argparse": "1.0.38",
+ "argparse": "~1.0.9",
+ "colors": "~1.2.1",
+ "string-argv": "~0.3.1"
+ }
+ },
"@sindresorhus/is": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz",
@@ -14794,10 +14922,16 @@
"@sinonjs/commons": "^1.7.0"
}
},
+ "@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
+ "dev": true
+ },
"@types/argparse": {
- "version": "1.0.33",
- "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz",
- "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==",
+ "version": "1.0.38",
+ "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz",
+ "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==",
"dev": true
},
"@types/babel__core": {
@@ -14897,9 +15031,9 @@
"dev": true
},
"@types/node": {
- "version": "8.10.54",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz",
- "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg==",
+ "version": "12.20.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz",
+ "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==",
"dev": true
},
"@types/normalize-package-data": {
@@ -15167,6 +15301,15 @@
"integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==",
"dev": true
},
+ "agent-base": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -17092,12 +17235,6 @@
}
}
},
- "@types/node": {
- "version": "12.19.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz",
- "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==",
- "dev": true
- },
"fs-extra": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz",
@@ -17288,18 +17425,24 @@
"dev": true
},
"escodegen": {
- "version": "1.14.3",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz",
- "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+ "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
"dev": true,
"requires": {
"esprima": "^4.0.1",
- "estraverse": "^4.2.0",
+ "estraverse": "^5.2.0",
"esutils": "^2.0.2",
"optionator": "^0.8.1",
"source-map": "~0.6.1"
},
"dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -18544,6 +18687,17 @@
"integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
"dev": true
},
+ "http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "dev": true,
+ "requires": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
@@ -18555,6 +18709,16 @@
"sshpk": "^1.7.0"
}
},
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "dev": true,
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
"human-signals": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
@@ -18782,12 +18946,6 @@
"p-is-promise": "^1.1.0"
}
},
- "ip-regex": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
- "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
- "dev": true
- },
"is-accessor-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
@@ -18830,9 +18988,9 @@
}
},
"is-core-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz",
- "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
+ "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
"dev": true,
"requires": {
"has": "^1.0.3"
@@ -18961,9 +19119,9 @@
}
},
"is-potential-custom-element-name": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz",
- "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
"dev": true
},
"is-reference": {
@@ -19647,60 +19805,6 @@
"jest-mock": "^26.6.1",
"jest-util": "^26.6.1",
"jsdom": "^16.4.0"
- },
- "dependencies": {
- "jsdom": {
- "version": "16.4.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz",
- "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==",
- "dev": true,
- "requires": {
- "abab": "^2.0.3",
- "acorn": "^7.1.1",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.2.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.0",
- "domexception": "^2.0.1",
- "escodegen": "^1.14.1",
- "html-encoding-sniffer": "^2.0.1",
- "is-potential-custom-element-name": "^1.0.0",
- "nwsapi": "^2.2.0",
- "parse5": "5.1.1",
- "request": "^2.88.2",
- "request-promise-native": "^1.0.8",
- "saxes": "^5.0.0",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^3.0.1",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0",
- "ws": "^7.2.3",
- "xml-name-validator": "^3.0.0"
- }
- },
- "saxes": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
- "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
- "dev": true,
- "requires": {
- "xmlchars": "^2.2.0"
- }
- },
- "w3c-xmlserializer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
- "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
- "dev": true,
- "requires": {
- "xml-name-validator": "^3.0.0"
- }
- }
}
},
"jest-environment-node": {
@@ -20591,7 +20695,7 @@
"jju": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz",
- "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=",
+ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==",
"dev": true
},
"js-tokens": {
@@ -20616,6 +20720,60 @@
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
+ "jsdom": {
+ "version": "16.7.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz",
+ "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.5",
+ "acorn": "^8.2.4",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "form-data": "^3.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "http-proxy-agent": "^4.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.5.0",
+ "ws": "^7.4.6",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "8.7.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
+ "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
+ "dev": true
+ },
+ "form-data": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
+ "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ }
+ }
+ },
"jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -20623,18 +20781,17 @@
"dev": true
},
"jshint": {
- "version": "2.10.2",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz",
- "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==",
+ "version": "2.13.5",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.13.5.tgz",
+ "integrity": "sha512-dB2n1w3OaQ35PLcBGIWXlszjbPZwsgZoxsg6G8PtNf2cFMC1l0fObkYLUuXqTTdi6tKw4sAjfUseTdmDMHQRcg==",
"dev": true,
"requires": {
"cli": "~1.0.0",
"console-browserify": "1.1.x",
"exit": "0.1.x",
"htmlparser2": "3.8.x",
- "lodash": "~4.17.11",
+ "lodash": "~4.17.21",
"minimatch": "~3.0.2",
- "shelljs": "0.3.x",
"strip-json-comments": "1.0.x"
},
"dependencies": {
@@ -20757,7 +20914,7 @@
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2",
@@ -20788,13 +20945,13 @@
"lodash.get": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
"dev": true
},
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==",
"dev": true
},
"lodash.memoize": {
@@ -20803,12 +20960,6 @@
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
"dev": true
},
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=",
- "dev": true
- },
"lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
@@ -21466,9 +21617,9 @@
}
},
"parse5": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
- "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
"dev": true
},
"parseqs": {
@@ -21627,7 +21778,7 @@
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
"dev": true
},
"prepend-http": {
@@ -21900,38 +22051,6 @@
}
}
},
- "request-promise-core": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
- "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.19"
- }
- },
- "request-promise-native": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
- "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
- "dev": true,
- "requires": {
- "request-promise-core": "1.1.4",
- "stealthy-require": "^1.1.1",
- "tough-cookie": "^2.3.3"
- },
- "dependencies": {
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- }
- }
- },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -22235,6 +22354,15 @@
}
}
},
+ "saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dev": true,
+ "requires": {
+ "xmlchars": "^2.2.0"
+ }
+ },
"seedrandom": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.3.tgz",
@@ -22371,12 +22499,6 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
- "shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
- "dev": true
- },
"shellwords": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
@@ -22651,9 +22773,9 @@
"dev": true
},
"socket.io-parser": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
- "integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz",
+ "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==",
"dev": true,
"requires": {
"component-emitter": "~1.3.0",
@@ -22664,9 +22786,9 @@
}
},
"socket.io-parser": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz",
- "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.2.tgz",
+ "integrity": "sha512-QFZBaZDNqZXeemwejc7D39jrq2eGK/qZuVDiMPKzZK1hLlNvjGilGt4ckfQZeVX4dGmuPzCytN9ZW1nQlEWjgA==",
"dev": true,
"requires": {
"component-emitter": "1.2.1",
@@ -22875,12 +22997,6 @@
}
}
},
- "stealthy-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
- "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
- "dev": true
- },
"strict-uri-encode": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
@@ -22896,6 +23012,12 @@
"safe-buffer": "~5.1.0"
}
},
+ "string-argv": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
+ "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
+ "dev": true
+ },
"string-length": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz",
@@ -23257,12 +23379,6 @@
"integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=",
"dev": true
},
- "timsort": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
- "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
- "dev": true
- },
"tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -23329,20 +23445,20 @@
}
},
"tough-cookie": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz",
- "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
"dev": true,
"requires": {
- "ip-regex": "^2.1.0",
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
}
},
"tr46": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
- "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz",
+ "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==",
"dev": true,
"requires": {
"punycode": "^2.1.1"
@@ -23495,7 +23611,7 @@
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2"
@@ -23696,9 +23812,9 @@
}
},
"validator": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz",
- "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==",
+ "version": "13.7.0",
+ "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
+ "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
"dev": true
},
"verror": {
@@ -23721,6 +23837,15 @@
"browser-process-hrtime": "^1.0.0"
}
},
+ "w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dev": true,
+ "requires": {
+ "xml-name-validator": "^3.0.0"
+ }
+ },
"walker": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
@@ -23752,13 +23877,13 @@
"dev": true
},
"whatwg-url": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz",
- "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==",
+ "version": "8.7.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz",
+ "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==",
"dev": true,
"requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^2.0.2",
+ "lodash": "^4.7.0",
+ "tr46": "^2.1.0",
"webidl-conversions": "^6.1.0"
}
},
@@ -24015,21 +24140,30 @@
"dev": true
},
"z-schema": {
- "version": "3.18.4",
- "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz",
- "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==",
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz",
+ "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==",
"dev": true,
"requires": {
- "commander": "^2.7.1",
- "lodash.get": "^4.0.0",
- "lodash.isequal": "^4.0.0",
- "validator": "^8.0.0"
+ "commander": "^2.20.3",
+ "lodash.get": "^4.4.2",
+ "lodash.isequal": "^4.5.0",
+ "validator": "^13.7.0"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true,
+ "optional": true
+ }
}
},
"zrender": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.0.tgz",
- "integrity": "sha512-rOS09Z2HSVGFs2dn/TuYk5BlCaZcVe8UDLLjj1ySYF828LATKKdxuakSZMvrDz54yiKPDYVfjdKqcX8Jky3BIA==",
+ "version": "npm:zrender-nightly@5.4.1-dev.20221104",
+ "resolved": "https://registry.npmjs.org/zrender-nightly/-/zrender-nightly-5.4.1-dev.20221104.tgz",
+ "integrity": "sha512-FigVUqINkG/qOxCGi9oYO3raMxEked55dnCAx3Gc47DKePVibOXhVeIqSCdPlu9wUJat6L9A5Jm/ImpoC8DH7A==",
"requires": {
"tslib": "2.3.0"
}
diff --git a/package.json b/package.json
index 9ee583cf52..3bc3365d82 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,7 @@
"build:lib": "node build/build.js --prepublish",
"build:extension": "node build/build.js --type extension",
"dev:fast": "node build/build-i18n.js && node build/dev-fast.js",
- "dev": "npm run dev:fast",
+ "dev": "npx -y concurrently -n build,server \"npm run dev:fast\" \"npx -y http-server -c-1 -s -o test\"",
"prepublish": "npm run build:lib",
"release": "npm run build:lib && npm run build:i18n && npm run build && npm run build:esm && npm run build:extension",
"help": "node build/build.js --help",
@@ -64,7 +64,7 @@
},
"dependencies": {
"tslib": "2.3.0",
- "zrender": "5.4.0"
+ "zrender": "npm:zrender-nightly@^5.4.1-dev.20221104"
},
"devDependencies": {
"@babel/code-frame": "7.10.4",
@@ -73,7 +73,7 @@
"@definitelytyped/typescript-versions": "0.0.64",
"@definitelytyped/utils": "0.0.64",
"@lang/rollup-plugin-dts": "2.0.2",
- "@microsoft/api-extractor": "7.7.2",
+ "@microsoft/api-extractor": "7.31.2",
"@rollup/plugin-commonjs": "^17.0.0",
"@rollup/plugin-node-resolve": "^11.0.0",
"@rollup/plugin-replace": "^2.3.4",
@@ -92,7 +92,7 @@
"husky": "^4.2.5",
"jest": "^26.6.1",
"jest-canvas-mock": "^2.2.0",
- "jshint": "2.10.2",
+ "jshint": "2.13.5",
"magic-string": "^0.25.7",
"open": "6.4.0",
"pixelmatch": "5.0.2",
diff --git a/src/animation/customGraphicTransition.ts b/src/animation/customGraphicTransition.ts
index 73c12401aa..a2bf490c51 100644
--- a/src/animation/customGraphicTransition.ts
+++ b/src/animation/customGraphicTransition.ts
@@ -427,12 +427,12 @@ function duringCall(
return;
}
// If el is remove from zr by reason like legend, during still need to called,
- // becuase el will be added back to zr and the prop value should not be incorrect.
+ // because el will be added back to zr and the prop value should not be incorrect.
const latestUserDuring = transitionInnerStore(el).userDuring;
const scopeUserDuring = scope.userDuring;
// Ensured a during is only called once in each animation frame.
- // If a during is called multiple times in one frame, maybe some users' calulation logic
+ // If a during is called multiple times in one frame, maybe some users' calculation logic
// might be wrong (not sure whether this usage exists).
// The case of a during might be called twice can be: by default there is a animator for
// 'x', 'y' when init. Before the init animation finished, call `setOption` to start
@@ -629,4 +629,4 @@ if (__DEV__) {
+ 'Only `' + keys(TRANSFORM_PROPS_MAP).join('`, `') + '` are permitted.');
}
};
-}
\ No newline at end of file
+}
diff --git a/src/animation/universalTransition.ts b/src/animation/universalTransition.ts
index dabd7ee3ec..c82d3d78f8 100644
--- a/src/animation/universalTransition.ts
+++ b/src/animation/universalTransition.ts
@@ -43,16 +43,18 @@ import Displayable from 'zrender/src/graphic/Displayable';
const DATA_COUNT_THRESHOLD = 1e4;
-interface GlobalStore { oldSeries: SeriesModel[], oldData: SeriesData[] };
+interface GlobalStore { oldSeries: SeriesModel[], oldDataGroupIds: string[], oldData: SeriesData[] };
const getUniversalTransitionGlobalStore = makeInner();
interface DiffItem {
+ dataGroupId: string
data: SeriesData
dim: DimensionLoose
divide: UniversalTransitionOption['divideShape']
dataIndex: number
}
interface TransitionSeries {
+ dataGroupId: string
data: SeriesData
divide: UniversalTransitionOption['divideShape']
dim?: DimensionLoose
@@ -83,6 +85,7 @@ function flattenDataDiffItems(list: TransitionSeries[]) {
const groupDim = getGroupIdDimension(data);
for (let dataIndex = 0; dataIndex < indices.length; dataIndex++) {
items.push({
+ dataGroupId: seriesInfo.dataGroupId,
data,
dim: seriesInfo.dim || groupDim,
divide: seriesInfo.divide,
@@ -207,7 +210,7 @@ function transitionBetween(
// Use group id as transition key by default.
// So we can achieve multiple to multiple animation like drilldown / up naturally.
// If group id not exits. Use id instead. If so, only one to one transition will be applied.
- const dataGroupId = data.hostModel && (data.hostModel as SeriesModel).get('dataGroupId') as string;
+ const dataGroupId = diffItem.dataGroupId;
// If specified key dimension(itemGroupId by default). Use this same dimension from other data.
// PENDING: If only use key dimension of newData.
@@ -470,26 +473,35 @@ function findTransitionSeriesBatches(
) {
const updateBatches = createHashMap();
- const oldDataMap = createHashMap();
+ const oldDataMap = createHashMap<{
+ dataGroupId: string,
+ data: SeriesData
+ }>();
// Map that only store key in array seriesKey.
// Which is used to query the old data when transition from one to multiple series.
const oldDataMapForSplit = createHashMap<{
key: string,
+ dataGroupId: string,
data: SeriesData
}>();
each(globalStore.oldSeries, (series, idx) => {
+ const oldDataGroupId = globalStore.oldDataGroupIds[idx] as string;
const oldData = globalStore.oldData[idx];
const transitionKey = getSeriesTransitionKey(series);
const transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
- oldDataMap.set(transitionKeyStr, oldData);
+ oldDataMap.set(transitionKeyStr, {
+ dataGroupId: oldDataGroupId,
+ data: oldData
+ });
if (isArray(transitionKey)) {
// Same key can't in different array seriesKey.
each(transitionKey, key => {
oldDataMapForSplit.set(key, {
- data: oldData,
- key: transitionKeyStr
+ key: transitionKeyStr,
+ dataGroupId: oldDataGroupId,
+ data: oldData
});
});
}
@@ -502,6 +514,7 @@ function findTransitionSeriesBatches(
}
each(params.updatedSeries, series => {
if (series.isUniversalTransitionEnabled() && series.isAnimationEnabled()) {
+ const newDataGroupId = series.get('dataGroupId') as string;
const newData = series.getData();
const transitionKey = getSeriesTransitionKey(series);
const transitionKeyStr = convertArraySeriesKeyToString(transitionKey);
@@ -515,16 +528,18 @@ function findTransitionSeriesBatches(
// TODO check if data is same?
updateBatches.set(transitionKeyStr, {
oldSeries: [{
- divide: getDivideShapeFromData(oldData),
- data: oldData
+ dataGroupId: oldData.dataGroupId,
+ divide: getDivideShapeFromData(oldData.data),
+ data: oldData.data
}],
newSeries: [{
+ dataGroupId: newDataGroupId,
divide: getDivideShapeFromData(newData),
data: newData
}]
});
}
- else {
+ else {
// Transition from multiple series.
if (isArray(transitionKey)) {
if (__DEV__) {
@@ -533,10 +548,11 @@ function findTransitionSeriesBatches(
const oldSeries: TransitionSeries[] = [];
each(transitionKey, key => {
const oldData = oldDataMap.get(key);
- if (oldData) {
+ if (oldData.data) {
oldSeries.push({
- divide: getDivideShapeFromData(oldData),
- data: oldData
+ dataGroupId: oldData.dataGroupId,
+ divide: getDivideShapeFromData(oldData.data),
+ data: oldData.data
});
}
});
@@ -544,6 +560,7 @@ function findTransitionSeriesBatches(
updateBatches.set(transitionKeyStr, {
oldSeries,
newSeries: [{
+ dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData)
}]
@@ -558,6 +575,7 @@ function findTransitionSeriesBatches(
if (!batch) {
batch = {
oldSeries: [{
+ dataGroupId: oldData.dataGroupId,
data: oldData.data,
divide: getDivideShapeFromData(oldData.data)
}],
@@ -566,6 +584,7 @@ function findTransitionSeriesBatches(
updateBatches.set(oldData.key, batch);
}
batch.newSeries.push({
+ dataGroupId: newDataGroupId,
data: newData,
divide: getDivideShapeFromData(newData)
});
@@ -600,6 +619,7 @@ function transitionSeriesFromOpt(
const idx = querySeries(globalStore.oldSeries, finder);
if (idx >= 0) {
from.push({
+ dataGroupId: globalStore.oldDataGroupIds[idx],
data: globalStore.oldData[idx],
// TODO can specify divideShape in transition.
divide: getDivideShapeFromData(globalStore.oldData[idx]),
@@ -612,6 +632,7 @@ function transitionSeriesFromOpt(
if (idx >= 0) {
const data = params.updatedSeries[idx].getData();
to.push({
+ dataGroupId: globalStore.oldDataGroupIds[idx],
data,
divide: getDivideShapeFromData(data),
dim: finder.dimension
@@ -671,6 +692,7 @@ export function installUniversalTransition(registers: EChartsExtensionInstallReg
// Save all series of current update. Not only the updated one.
const allSeries = ecModel.getSeries();
const savedSeries: SeriesModel[] = globalStore.oldSeries = [];
+ const savedDataGroupIds: string[] = globalStore.oldDataGroupIds = [];
const savedData: SeriesData[] = globalStore.oldData = [];
for (let i = 0; i < allSeries.length; i++) {
const data = allSeries[i].getData();
@@ -678,8 +700,9 @@ export function installUniversalTransition(registers: EChartsExtensionInstallReg
// Avoid large data costing too much extra memory
if (data.count() < DATA_COUNT_THRESHOLD) {
savedSeries.push(allSeries[i]);
+ savedDataGroupIds.push(allSeries[i].get('dataGroupId') as string);
savedData.push(data);
}
}
});
-}
\ No newline at end of file
+}
diff --git a/src/chart/bar/BarView.ts b/src/chart/bar/BarView.ts
index 3cbad98de3..0de06c481f 100644
--- a/src/chart/bar/BarView.ts
+++ b/src/chart/bar/BarView.ts
@@ -698,7 +698,7 @@ const clip: {
// When xClipped or yClipped, the element will be marked as `ignore`.
// But we should also place the element at the edge of the coord sys bounding rect.
- // Beause if data changed and the bar show again, its transition animaiton
+ // Because if data changed and the bar shows again, its transition animation
// will begin at this place.
layout.x = (xClipped && x > coordSysX2) ? x2 : x;
layout.y = (yClipped && y > coordSysY2) ? y2 : y;
diff --git a/src/chart/bar/BaseBarSeries.ts b/src/chart/bar/BaseBarSeries.ts
index 45e2836a99..bff11b8837 100644
--- a/src/chart/bar/BaseBarSeries.ts
+++ b/src/chart/bar/BaseBarSeries.ts
@@ -30,6 +30,9 @@ import {
import GlobalModel from '../../model/Global';
import Cartesian2D from '../../coord/cartesian/Cartesian2D';
import SeriesData from '../../data/SeriesData';
+import {dimPermutations} from '../../component/marker/MarkAreaView';
+import { each } from 'zrender/src/core/util';
+import type Axis2D from '../../coord/cartesian/Axis2D';
export interface BaseBarSeriesOption
@@ -42,12 +45,12 @@ export interface BaseBarSeriesOption = BaseBarSeri
return createSeriesData(null, this, {useEncodeDefaulter: true});
}
- getMarkerPosition(value: ScaleDataValue[]) {
+ getMarkerPosition(
+ value: ScaleDataValue[],
+ dims?: typeof dimPermutations[number],
+ startingAtTick?: boolean
+ ) {
const coordSys = this.coordinateSystem;
if (coordSys && coordSys.clampData) {
// PENDING if clamp ?
const pt = coordSys.dataToPoint(coordSys.clampData(value));
- const data = this.getData();
- const offset = data.getLayout('offset');
- const size = data.getLayout('size');
- const offsetIndex = (coordSys as Cartesian2D).getBaseAxis().isHorizontal() ? 0 : 1;
- pt[offsetIndex] += offset + size / 2;
+ if (startingAtTick) {
+ each(coordSys.getAxes(), function (axis: Axis2D, idx: number) {
+ // If axis type is category, use tick coords instead
+ if (axis.type === 'category') {
+ const tickCoords = axis.getTicksCoords();
+ let tickIdx = coordSys.clampData(value)[idx];
+ // The index of rightmost tick of markArea is 1 larger than x1/y1 index
+ if (dims && (dims[idx] === 'x1' || dims[idx] === 'y1')) {
+ tickIdx += 1;
+ }
+ (tickIdx > tickCoords.length - 1) && (tickIdx = tickCoords.length - 1);
+ (tickIdx < 0) && (tickIdx = 0);
+ tickCoords[tickIdx] && (pt[idx] = axis.toGlobalCoord(tickCoords[tickIdx].coord));
+ }
+ });
+ }
+ else {
+ const data = this.getData();
+ const offset = data.getLayout('offset');
+ const size = data.getLayout('size');
+ const offsetIndex = (coordSys as Cartesian2D).getBaseAxis().isHorizontal() ? 0 : 1;
+ pt[offsetIndex] += offset + size / 2;
+ }
return pt;
}
return [NaN, NaN];
diff --git a/src/chart/bar/install.ts b/src/chart/bar/install.ts
index 56c07d9670..156f03e26e 100644
--- a/src/chart/bar/install.ts
+++ b/src/chart/bar/install.ts
@@ -32,7 +32,7 @@ export function install(registers: EChartsExtensionInstallRegisters) {
registers.registerSeriesModel(BarSeries);
registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar'));
- // Do layout after other overall layout, which can preapre some informations.
+ // Do layout after other overall layout, which can prepare some information.
registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('bar'));
// Down sample after filter
@@ -67,4 +67,4 @@ export function install(registers: EChartsExtensionInstallRegisters) {
);
});
-}
\ No newline at end of file
+}
diff --git a/src/chart/bar/installPictorialBar.ts b/src/chart/bar/installPictorialBar.ts
index d30ee58afe..ec49128b83 100644
--- a/src/chart/bar/installPictorialBar.ts
+++ b/src/chart/bar/installPictorialBar.ts
@@ -28,6 +28,6 @@ export function install(registers: EChartsExtensionInstallRegisters) {
registers.registerSeriesModel(PictorialBarSeriesModel);
registers.registerLayout(registers.PRIORITY.VISUAL.LAYOUT, curry(layout, 'pictorialBar'));
- // Do layout after other overall layout, which can preapre some informations.
+ // Do layout after other overall layout, which can prepare some information.
registers.registerLayout(registers.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, createProgressiveLayout('pictorialBar'));
-}
\ No newline at end of file
+}
diff --git a/src/chart/boxplot/install.ts b/src/chart/boxplot/install.ts
index e579f296f2..b5a7efcd98 100644
--- a/src/chart/boxplot/install.ts
+++ b/src/chart/boxplot/install.ts
@@ -20,14 +20,12 @@
import { EChartsExtensionInstallRegisters } from '../../extension';
import BoxplotSeriesModel from './BoxplotSeries';
import BoxplotView from './BoxplotView';
-import boxplotVisual from './boxplotVisual';
import boxplotLayout from './boxplotLayout';
import { boxplotTransform } from './boxplotTransform';
export function install(registers: EChartsExtensionInstallRegisters) {
registers.registerSeriesModel(BoxplotSeriesModel);
registers.registerChartView(BoxplotView);
- registers.registerVisual(boxplotVisual);
registers.registerLayout(boxplotLayout);
registers.registerTransform(boxplotTransform);
-}
\ No newline at end of file
+}
diff --git a/src/chart/candlestick/CandlestickSeries.ts b/src/chart/candlestick/CandlestickSeries.ts
index 6f104e5bfb..019e1c55f4 100644
--- a/src/chart/candlestick/CandlestickSeries.ts
+++ b/src/chart/candlestick/CandlestickSeries.ts
@@ -43,6 +43,7 @@ type CandlestickDataValue = OptionDataValue[];
interface CandlestickItemStyleOption extends ItemStyleOption {
color0?: ZRColor
borderColor0?: ColorString
+ borderColorDoji?: ZRColor
}
export interface CandlestickStateOption {
itemStyle?: CandlestickItemStyleOption
@@ -116,6 +117,7 @@ class CandlestickSeriesModel extends SeriesModel {
color0: '#47b262', // negative
borderColor: '#eb5454',
borderColor0: '#47b262',
+ borderColorDoji: null, // when close === open
// borderColor: '#d24040',
// borderColor0: '#398f4f',
borderWidth: 1
diff --git a/src/chart/candlestick/CandlestickView.ts b/src/chart/candlestick/CandlestickView.ts
index ed4f6660c6..3d05e81c70 100644
--- a/src/chart/candlestick/CandlestickView.ts
+++ b/src/chart/candlestick/CandlestickView.ts
@@ -368,9 +368,16 @@ function createLarge(
ignoreCoarsePointer: true
});
group.add(elN);
+ const 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;
@@ -384,8 +391,12 @@ function createLarge(
function setLargeStyle(sign: number, el: LargeBoxPath, seriesModel: CandlestickSeriesModel, data: SeriesData) {
// TODO put in visual?
- const borderColor = seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0'])
+ let borderColor = seriesModel.get(['itemStyle', sign > 0 ? 'borderColor' : 'borderColor0'])
+ // Use color for border color by default.
|| seriesModel.get(['itemStyle', sign > 0 ? 'color' : 'color0']);
+ if (sign === 0) {
+ borderColor = seriesModel.get(['itemStyle', 'borderColorDoji']);
+ }
// Color must be excluded.
// Because symbol provide setColor individually to set fill and stroke
diff --git a/src/chart/candlestick/candlestickLayout.ts b/src/chart/candlestick/candlestickLayout.ts
index 2a9afd9975..f655b381f0 100644
--- a/src/chart/candlestick/candlestickLayout.ts
+++ b/src/chart/candlestick/candlestickLayout.ts
@@ -22,7 +22,7 @@ import createRenderPlanner from '../helper/createRenderPlanner';
import {parsePercent} from '../../util/number';
import {map, retrieve2} from 'zrender/src/core/util';
import { DimensionIndex, StageHandler, StageHandlerProgressParams } from '../../util/types';
-import CandlestickSeriesModel from './CandlestickSeries';
+import CandlestickSeriesModel, { CandlestickDataItemOption } from './CandlestickSeries';
import SeriesData from '../../data/SeriesData';
import { RectLike } from 'zrender/src/core/BoundingRect';
import DataStore from '../../data/DataStore';
@@ -106,8 +106,10 @@ const candlestickLayout: StageHandler = {
subPixelOptimizePoint(ocLowPoint)
);
+ const itemModel = data.getItemModel(dataIndex);
+ const hasDojiColor = !!itemModel.get(['itemStyle', 'borderColorDoji']);
data.setItemLayout(dataIndex, {
- sign: getSign(store, dataIndex, openVal, closeVal, closeDimI),
+ sign: getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor),
initBaseline: openVal > closeVal
? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx], // open point.
ends: ends,
@@ -170,6 +172,7 @@ const candlestickLayout: StageHandler = {
const tmpOut: number[] = [];
let dataIndex;
const store = data.getStore();
+ const hasDojiColor = !!seriesModel.get(['itemStyle', 'borderColorDoji']);
while ((dataIndex = params.next()) != null) {
const axisDimVal = store.get(cDimI, dataIndex) as number;
@@ -184,7 +187,7 @@ const candlestickLayout: StageHandler = {
continue;
}
- points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI);
+ points[offset++] = getSign(store, dataIndex, openVal, closeVal, closeDimI, hasDojiColor);
tmpIn[cDimIdx] = axisDimVal;
@@ -202,10 +205,18 @@ const candlestickLayout: StageHandler = {
}
};
+/**
+ * Get the sign of a single data.
+ *
+ * @returns 0 for doji with hasDojiColor: true,
+ * 1 for positive,
+ * -1 for negative.
+ */
function getSign(
- store: DataStore, dataIndex: number, openVal: number, closeVal: number, closeDimI: DimensionIndex
-): -1 | 1 {
- let sign: -1 | 1;
+ store: DataStore, dataIndex: number, openVal: number, closeVal: number, closeDimI: DimensionIndex,
+ hasDojiColor: boolean
+): -1 | 1 | 0 {
+ let sign: -1 | 1 | 0;
if (openVal > closeVal) {
sign = -1;
}
@@ -213,11 +224,15 @@ function getSign(
sign = 1;
}
else {
- sign = dataIndex > 0
- // If close === open, compare with close of last record
- ? (store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1)
- // No record of previous, set to be positive
- : 1;
+ sign = hasDojiColor
+ // When doji color is set, use it instead of color/color0.
+ ? 0
+ : (dataIndex > 0
+ // If close === open, compare with close of last record
+ ? (store.get(closeDimI, dataIndex - 1) <= closeVal ? 1 : -1)
+ // No record of previous, set to be positive
+ : 1
+ );
}
return sign;
diff --git a/src/chart/candlestick/candlestickVisual.ts b/src/chart/candlestick/candlestickVisual.ts
index 963d3dd56e..8882d63333 100644
--- a/src/chart/candlestick/candlestickVisual.ts
+++ b/src/chart/candlestick/candlestickVisual.ts
@@ -25,6 +25,7 @@ import { extend } from 'zrender/src/core/util';
const positiveBorderColorQuery = ['itemStyle', 'borderColor'] as const;
const negativeBorderColorQuery = ['itemStyle', 'borderColor0'] as const;
+const dojiBorderColorQuery = ['itemStyle', 'borderColorDoji'] as const;
const positiveColorQuery = ['itemStyle', 'color'] as const;
const negativeColorQuery = ['itemStyle', 'color0'] as const;
@@ -47,7 +48,10 @@ const candlestickVisual: StageHandler = {
function getBorderColor(sign: number, model: Model>) {
return model.get(
- sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery
+ sign === 0 ? dojiBorderColorQuery
+ : sign > 0
+ ? positiveBorderColorQuery
+ : negativeBorderColorQuery
);
}
diff --git a/src/chart/custom/CustomView.ts b/src/chart/custom/CustomView.ts
index e0ad444a36..ee4e244cf7 100644
--- a/src/chart/custom/CustomView.ts
+++ b/src/chart/custom/CustomView.ts
@@ -305,7 +305,7 @@ export default class CustomChartView extends ChartView {
}
// Enable to give a name on a group made by `renderItem`, and listen
- // events that triggerd by its descendents.
+ // events that are triggered by its descendents.
while ((targetEl = (targetEl.__hostTarget || targetEl.parent)) && targetEl !== this.group) {
if (targetEl.name === elementName) {
return true;
@@ -382,23 +382,23 @@ function createEl(elOption: CustomElementOption): Element {
* ----------------------------------------------------------
* [STRATEGY_MERGE] Merge properties or erase all properties:
*
- * Based on the fact that the existing zr element probably be reused, we now consider whether
- * merge or erase all properties to the exsiting elements.
- * That is, if a certain props is not specified in the lastest return of `renderItem`:
+ * Based on the fact that the existing zr element probably is reused, we now consider whether
+ * merge or erase all properties to the existing elements.
+ * That is, if a certain props is not specified in the latest return of `renderItem`:
* + "Merge" means that do not modify the value on the existing element.
* + "Erase all" means that use a default value to the existing element.
*
- * "Merge" might bring some unexpected state retaining for users and "erase all" seams to be
- * more safe. "erase all" force users to specify all of the props each time, which is recommanded
+ * "Merge" might bring some unexpected state retaining for users and "erase all" seems to be
+ * more safe. "erase all" forces users to specify all of the props each time, which is recommended
* in most cases.
* But "erase all" theoretically disables the chance of performance optimization (e.g., just
* generete shape and style at the first time rather than always do that).
* So we still use "merge" rather than "erase all". If users need "erase all", they can
- * simple always set all of the props each time.
+ * simply always set all of the props each time.
* Some "object-like" config like `textConfig`, `textContent`, `style` which are not needed for
- * every elment, so we replace them only when user specify them. And the that is a total replace.
+ * every element, so we replace them only when users specify them. And that is a total replace.
*
- * TODO: there is no hint of 'isFirst' to users. So the performance enhancement can not be
+ * TODO: There is no hint of 'isFirst' to users. So the performance enhancement cannot be
* performed yet. Consider the case:
* (1) setOption to "mergeChildren" with a smaller children count
* (2) Use dataZoom to make an item disappear.
@@ -412,7 +412,7 @@ function createEl(elOption: CustomElementOption): Element {
* So we trade a {xx: null} or {xx: undefined} as "not specified" if possible rather than
* "set them to null/undefined". In most cases, props can not be cleared. Some typicall
* clearable props like `style`/`textConfig`/`textContent` we enable `false` to means
- * "clear". In some othere special cases that the prop is able to set as null/undefined,
+ * "clear". In some other special cases that the prop is able to set as null/undefined,
* but not suitable to use `false`, `hasOwnProperty` is checked.
*
* ---------------------------------------------
@@ -526,7 +526,7 @@ function updateElOnState(
}
}
else {
- // style is needed to enable defaut emphasis.
+ // style is needed to enable default emphasis.
stateObj.style = styleOpt || null;
}
// If `elOption.styleEmphasis` or `elOption.emphasis.style` is `false`,
@@ -732,9 +732,9 @@ function makeRenderItem(
}
/**
- * @deprecated The orgininal intention of `api.style` is enable to set itemStyle
- * like other series. But it not necessary and not easy to give a strict definition
- * of what it return. And since echarts5 it needs to be make compat work. So
+ * @deprecated The original intention of `api.style` is enable to set itemStyle
+ * like other series. But it is not necessary and not easy to give a strict definition
+ * of what it returns. And since echarts5 it needs to be make compat work. So
* deprecates it since echarts5.
*
* By default, `visual` is applied to style (to support visualMap).
@@ -767,7 +767,7 @@ function makeRenderItem(
const opt = {inheritColor: isString(visualColor) ? visualColor : '#000'};
const labelModel = getLabelModel(dataIndexInside, NORMAL);
- // Now that the feture of "auto adjust text fill/stroke" has been migrated to zrender
+ // Now that the feature of "auto adjust text fill/stroke" has been migrated to zrender
// since ec5, we should set `isAttached` as `false` here and make compat in
// `convertToEC4StyleForCustomSerise`.
const textStyle = labelStyleHelper.createTextStyle(labelModel, null, opt, false, true);
@@ -1134,7 +1134,7 @@ function doCreateOrUpdateAttachedTx(
isInit: boolean,
attachedTxInfo: AttachedTxInfo
): void {
- // group do not support textContent temporarily untill necessary.
+ // Group does not support textContent temporarily until necessary.
if (el.isGroup) {
return;
}
@@ -1143,7 +1143,7 @@ function doCreateOrUpdateAttachedTx(
processTxInfo(elOption, null, attachedTxInfo);
processTxInfo(elOption, EMPHASIS, attachedTxInfo);
- // If `elOption.textConfig` or `elOption.textContent` is null/undefined, it does not make sence.
+ // If `elOption.textConfig` or `elOption.textContent` is null/undefined, it does not make sense.
// So for simplicity, if "elOption hasOwnProperty of them but be null/undefined", we do not
// trade them as set to null to el.
// Especially:
@@ -1232,7 +1232,7 @@ function processTxInfo(
// `textContent: {type: 'text'}`, the "type" is easy to be missing. So we tolerate it.
!txConOptNormal.type && (txConOptNormal.type = 'text');
if (__DEV__) {
- // Do not tolerate incorret type for forward compat.
+ // Do not tolerate incorrcet type for forward compat.
assert(
txConOptNormal.type === 'text',
'textContent.type must be "text"'
@@ -1281,9 +1281,9 @@ function retrieveStyleOptionOnState(
// the element at the same index, if exists. On the other hand, if the new
// child is and empty object `{}`, it means to keep the element not changed.
//
-// For implementation simpleness, do not provide a direct way to remove sinlge
-// child (otherwise the total indicies of the children array have to be modified).
-// User can remove a single child by set its `ignore` as `true`.
+// For implementation simpleness, do not provide a direct way to remove single
+// child (otherwise the total indices of the children array have to be modified).
+// User can remove a single child by setting its `ignore` to `true`.
function mergeChildren(
api: ExtensionAPI,
el: graphicUtil.Group,
diff --git a/src/chart/gauge/GaugeView.ts b/src/chart/gauge/GaugeView.ts
index a03243e1aa..a4bb3994c9 100644
--- a/src/chart/gauge/GaugeView.ts
+++ b/src/chart/gauge/GaugeView.ts
@@ -31,7 +31,7 @@ import SeriesData from '../../data/SeriesData';
import Sausage from '../../util/shape/sausage';
import {createSymbol} from '../../util/symbol';
import ZRImage from 'zrender/src/graphic/Image';
-import {extend, isFunction, isString, isNumber} from 'zrender/src/core/util';
+import { extend, isFunction, isString, isNumber, each } from 'zrender/src/core/util';
import {setCommonECData} from '../../util/innerStore';
import { normalizeArcAngles } from 'zrender/src/core/PathProxy';
@@ -127,6 +127,7 @@ class GaugeView extends ChartView {
let prevEndAngle = startAngle;
+ const sectors: (Sausage | graphic.Sector)[] = [];
for (let i = 0; showAxis && i < colorList.length; i++) {
// Clamp
const percent = Math.min(Math.max(colorList[i][0], 0), 1);
@@ -154,11 +155,14 @@ class GaugeView extends ChartView {
['color', 'width']
));
- group.add(sector);
+ sectors.push(sector);
prevEndAngle = endAngle;
}
+ sectors.reverse();
+ each(sectors, sector => group.add(sector));
+
const getColor = function (percent: number) {
// Less than 0
if (percent <= 0) {
diff --git a/src/chart/graph/GraphView.ts b/src/chart/graph/GraphView.ts
index bd5b9669cc..d5f51eba4c 100644
--- a/src/chart/graph/GraphView.ts
+++ b/src/chart/graph/GraphView.ts
@@ -17,7 +17,6 @@
* under the License.
*/
-import * as zrUtil from 'zrender/src/core/util';
import SymbolDraw, { ListForSymbolDraw } from '../helper/SymbolDraw';
import LineDraw from '../helper/LineDraw';
import RoamController, { RoamControllerHost } from '../../component/helper/RoamController';
@@ -172,7 +171,7 @@ class GraphView extends ChartView {
}
});
}
- el.setDraggable(draggable && !!forceLayout, !!itemModel.get('cursor'));
+ el.setDraggable(draggable, !!itemModel.get('cursor'));
const focus = itemModel.get(['emphasis', 'focus']);
@@ -307,4 +306,4 @@ class GraphView extends ChartView {
}
}
-export default GraphView;
\ No newline at end of file
+export default GraphView;
diff --git a/src/chart/graph/forceHelper.ts b/src/chart/graph/forceHelper.ts
index 5e83a9b33f..71f1c564ca 100644
--- a/src/chart/graph/forceHelper.ts
+++ b/src/chart/graph/forceHelper.ts
@@ -18,7 +18,7 @@
*/
/*
-* A third-party license is embeded for some of the code in this file:
+* A third-party license is embedded for some of the code in this file:
* Some formulas were originally copied from "d3.js" with some
* modifications made for this project.
* (See more details in the comment of the method "step" below.)
diff --git a/src/chart/heatmap/HeatmapView.ts b/src/chart/heatmap/HeatmapView.ts
index 88933e278d..d0de889ba1 100644
--- a/src/chart/heatmap/HeatmapView.ts
+++ b/src/chart/heatmap/HeatmapView.ts
@@ -33,7 +33,7 @@ import { StageHandlerProgressParams, Dictionary, OptionDataValue } from '../../u
import type Cartesian2D from '../../coord/cartesian/Cartesian2D';
import type Calendar from '../../coord/calendar/Calendar';
import { setLabelStyle, getLabelStatesModels } from '../../label/labelStyle';
-import Element from 'zrender/src/Element';
+import type Element from 'zrender/src/Element';
// Coord can be 'geo' 'bmap' 'amap' 'leaflet'...
interface GeoLikeCoordSys extends CoordinateSystem {
@@ -94,7 +94,7 @@ function getIsInContinuousRange(dataExtent: number[], range: number[]) {
function isGeoCoordSys(coordSys: CoordinateSystem): coordSys is GeoLikeCoordSys {
const dimensions = coordSys.dimensions;
- // Not use coorSys.type === 'geo' because coordSys maybe extended
+ // Not use coordSys.type === 'geo' because coordSys maybe extended
return dimensions[0] === 'lng' && dimensions[1] === 'lat';
}
@@ -235,6 +235,8 @@ class HeatmapView extends ChartView {
// Ignore empty data and out of extent data
if (isNaN(data.get(dataDims[2], idx) as number)
+ || isNaN(dataDimX as number)
+ || isNaN(dataDimY as number)
|| dataDimX < xAxisExtent[0]
|| dataDimX > xAxisExtent[1]
|| dataDimY < yAxisExtent[0]
@@ -271,7 +273,7 @@ class HeatmapView extends ChartView {
});
}
- // Optimization for large datset
+ // Optimization for large dataset
if (data.hasItemOption) {
const itemModel = data.getItemModel(idx);
const emphasisModel = itemModel.getModel('emphasis');
diff --git a/src/chart/line/LineView.ts b/src/chart/line/LineView.ts
index 45414fb386..daf1cbfb52 100644
--- a/src/chart/line/LineView.ts
+++ b/src/chart/line/LineView.ts
@@ -404,7 +404,7 @@ function canShowAllSymbolForCategory(
categoryAxis: Axis2D,
data: SeriesData
) {
- // In mose cases, line is monotonous on category axis, and the label size
+ // In most cases, line is monotonous on category axis, and the label size
// is close with each other. So we check the symbol size and some of the
// label size alone with the category axis to estimate whether all symbol
// can be shown without overlap.
@@ -778,7 +778,7 @@ class LineView extends ChartView {
}
// Always update, or it is wrong in the case turning on legend
- // because points are not changed
+ // because points are not changed.
showSymbol && symbolDraw.updateData(data, {
isIgnore: isIgnoreFunc,
clipShape: clipShapeForSymbol,
@@ -788,8 +788,8 @@ class LineView extends ChartView {
}
});
- // In the case data zoom triggerred refreshing frequently
- // Data may not change if line has a category axis. So it should animate nothing
+ // In the case data zoom triggered refreshing frequently
+ // Data may not change if line has a category axis. So it should animate nothing.
if (!isPointsSame(this._stackedOnPoints, stackedOnPoints)
|| !isPointsSame(this._points, points)
) {
@@ -943,7 +943,7 @@ class LineView extends ChartView {
// Null data
return;
}
- // fix #11360: should't draw symbol outside clipShapeForSymbol
+ // fix #11360: shouldn't draw symbol outside clipShapeForSymbol
if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(x, y)) {
return;
}
diff --git a/src/chart/line/helper.ts b/src/chart/line/helper.ts
index c9ebef65e1..13a1c2c01a 100644
--- a/src/chart/line/helper.ts
+++ b/src/chart/line/helper.ts
@@ -58,11 +58,11 @@ export function prepareDataCoordInfo(
let stacked = false;
const stackResultDim = data.getCalculationInfo('stackResultDimension');
- if (isDimensionStacked(data, dims[0] /*, dims[1]*/)) { // jshint ignore:line
+ if (isDimensionStacked(data, dims[0] /* , dims[1] */)) { // jshint ignore:line
stacked = true;
dims[0] = stackResultDim;
}
- if (isDimensionStacked(data, dims[1] /*, dims[0]*/)) { // jshint ignore:line
+ if (isDimensionStacked(data, dims[1] /* , dims[0] */)) { // jshint ignore:line
stacked = true;
dims[1] = stackResultDim;
}
diff --git a/src/chart/lines/LinesSeries.ts b/src/chart/lines/LinesSeries.ts
index f97b6a0b97..2c1fc29c88 100644
--- a/src/chart/lines/LinesSeries.ts
+++ b/src/chart/lines/LinesSeries.ts
@@ -93,8 +93,8 @@ export interface LinesStateOption {
label?: SeriesLineLabelOption
}
-export interface LinesDataItemOption extends LinesStateOption,
- StatesOptionMixin, LinesStatesMixin> {
+export interface LinesDataItemOption extends LinesStateOption,
+ StatesOptionMixin {
name?: string
fromName?: string
@@ -111,7 +111,7 @@ export interface LinesDataItemOption extends LinesStateOption, LinesStateOption,
+ extends SeriesOption, LinesStateOption,
SeriesOnCartesianOptionMixin, SeriesOnGeoOptionMixin, SeriesOnPolarOptionMixin,
SeriesOnCalendarOptionMixin, SeriesLargeOptionMixin {
@@ -306,7 +306,7 @@ class LinesSeriesModel extends SeriesModel {
if (__DEV__) {
const CoordSys = CoordinateSystem.get(option.coordinateSystem);
if (!CoordSys) {
- throw new Error('Unkown coordinate system ' + option.coordinateSystem);
+ throw new Error('Unknown coordinate system ' + option.coordinateSystem);
}
}
diff --git a/src/chart/lines/LinesView.ts b/src/chart/lines/LinesView.ts
index fabb84968b..5d9cbfeefb 100644
--- a/src/chart/lines/LinesView.ts
+++ b/src/chart/lines/LinesView.ts
@@ -106,7 +106,7 @@ class LinesView extends ChartView {
const lineDraw = this._updateLineDraw(data, seriesModel);
- lineDraw.incrementalPrepareUpdate(data);
+ lineDraw.incrementalPrepareUpdate(data as any);
this._clearLayer(api);
@@ -118,7 +118,7 @@ class LinesView extends ChartView {
seriesModel: LinesSeriesModel,
ecModel: GlobalModel
) {
- this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());
+ this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData() as any);
this._finished = taskParams.end === seriesModel.getData().count();
}
diff --git a/src/chart/map/MapSeries.ts b/src/chart/map/MapSeries.ts
index acca989f1c..157678f412 100644
--- a/src/chart/map/MapSeries.ts
+++ b/src/chart/map/MapSeries.ts
@@ -286,9 +286,9 @@ class MapSeries extends SeriesModel {
// for geoJSON source: 0.75.
aspectScale: null,
- ///// Layout with center and size
- // If you wan't to put map in a fixed size box with right aspect ratio
- // This two properties may more conveninet
+ // Layout with center and size
+ // If you want to put map in a fixed size box with right aspect ratio
+ // This two properties may be more convenient.
// layoutCenter: [50%, 50%]
// layoutSize: 100
diff --git a/src/chart/map/MapView.ts b/src/chart/map/MapView.ts
index 84145b920e..dc0d6135fd 100644
--- a/src/chart/map/MapView.ts
+++ b/src/chart/map/MapView.ts
@@ -75,7 +75,7 @@ class MapView extends ChartView {
this._mapDraw = mapDraw;
}
else {
- // Remove drawed map
+ // Remove drawn map
this._mapDraw && this._mapDraw.remove();
this._mapDraw = null;
}
@@ -165,8 +165,8 @@ class MapView extends ChartView {
// FIXME
// If this is not the `mainSeries`, the item model (like label formatter)
// set on original data item will never get. But it has been working
- // like that from the begining, and this scenario is rarely encountered.
- // So it won't be fixed until have to.
+ // like that from the beginning, and this scenario is rarely encountered.
+ // So it won't be fixed until we have to.
setLabelStyle(circle, getLabelStatesModels(itemModel), {
labelFetcher: {
diff --git a/src/chart/pie/PieSeries.ts b/src/chart/pie/PieSeries.ts
index fc22425605..ed427bfff0 100644
--- a/src/chart/pie/PieSeries.ts
+++ b/src/chart/pie/PieSeries.ts
@@ -38,7 +38,7 @@ import {
SeriesLabelOption,
DefaultEmphasisFocus
} from '../../util/types';
-import SeriesData from '../../data/SeriesData';
+import type SeriesData from '../../data/SeriesData';
interface PieItemStyleOption extends ItemStyleOption {
// can be 10
@@ -100,7 +100,7 @@ export interface PieDataItemOption extends
export interface PieSeriesOption extends
Omit, ExtraStateOption>, 'labelLine'>,
PieStateOption,
- CircleLayoutOptionMixin,
+ Omit,
BoxLayoutOptionMixin,
SeriesEncodeOptionMixin {
@@ -108,6 +108,8 @@ export interface PieSeriesOption extends
roseType?: 'radius' | 'area'
+ center?: string | number | (string | number)[]
+
clockwise?: boolean
startAngle?: number
minAngle?: number
@@ -129,12 +131,14 @@ export interface PieSeriesOption extends
data?: (OptionDataValueNumeric | OptionDataValueNumeric[] | PieDataItemOption)[]
}
+const innerData = modelUtil.makeInner<{
+ seats?: number[]
+}, SeriesData>();
+
class PieSeriesModel extends SeriesModel {
static type = 'series.pie' as const;
- seats: number[];
-
/**
* @overwrite
*/
@@ -161,25 +165,30 @@ class PieSeriesModel extends SeriesModel {
* @overwrite
*/
getInitialData(this: PieSeriesModel): SeriesData {
- const data = createSeriesDataSimply(this, {
+ return createSeriesDataSimply(this, {
coordDimensions: ['value'],
encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)
});
- const valueList:number[] = [];
- data.each(data.mapDimension('value'), function (value: number) {
- valueList.push(value);
- });
-
- this.seats = getPercentSeats(valueList, data.hostModel.get('percentPrecision'));
- return data;
}
/**
* @overwrite
*/
getDataParams(dataIndex: number): PieCallbackDataParams {
+ const data = this.getData();
+ // update seats when data is changed
+ const dataInner = innerData(data);
+ let seats = dataInner.seats;
+ if (!seats) {
+ const valueList: number[] = [];
+ data.each(data.mapDimension('value'), function (value: number) {
+ valueList.push(value);
+ });
+ seats = dataInner.seats = getPercentSeats(valueList, data.hostModel.get('percentPrecision'));
+ }
const params = super.getDataParams(dataIndex) as PieCallbackDataParams;
- params.percent = this.seats[dataIndex];
+ // seats may be empty when sum is 0
+ params.percent = seats[dataIndex] || 0;
params.$vars.push('percent');
return params;
}
@@ -254,8 +263,8 @@ class PieSeriesModel extends SeriesModel {
bleedMargin: 10,
// Distance between text and label line.
distanceToLabelLine: 5
- // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调
- // 默认使用全局文本样式,详见TEXTSTYLE
+ // formatter: 标签文本格式器,同 tooltip.formatter,不支持异步回调
+ // 默认使用全局文本样式,详见 textStyle
// distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数
},
// Enabled when label.normal.position is 'outer'
diff --git a/src/chart/pie/labelLayout.ts b/src/chart/pie/labelLayout.ts
index 0c90908914..934b49cadc 100644
--- a/src/chart/pie/labelLayout.ts
+++ b/src/chart/pie/labelLayout.ts
@@ -288,12 +288,12 @@ function constrainTextWidth(
const oldHeight = textRect.height;
if (overflow && overflow.match('break')) {
// Temporarily set background to be null to calculate
- // the bounding box without backgroud.
+ // the bounding box without background.
label.setStyle('backgroundColor', null);
// Set constraining width
label.setStyle('width', availableWidth - paddingH);
- // This is the real bounding box of the text without padding
+ // This is the real bounding box of the text without padding.
const innerRect = label.getBoundingRect();
label.setStyle('width', Math.ceil(innerRect.width));
@@ -394,8 +394,11 @@ export default function pieLabelLayout(
if (Math.abs(sectorShape.endAngle - sectorShape.startAngle) < minShowLabelRadian) {
each(label.states, setNotShow);
- each(labelLine.states, setNotShow);
- label.ignore = labelLine.ignore = true;
+ label.ignore = true;
+ if (labelLine) {
+ each(labelLine.states, setNotShow);
+ labelLine.ignore = true;
+ }
return;
}
diff --git a/src/chart/pie/pieLayout.ts b/src/chart/pie/pieLayout.ts
index 0a6998c70c..c5c52ccfcd 100644
--- a/src/chart/pie/pieLayout.ts
+++ b/src/chart/pie/pieLayout.ts
@@ -41,15 +41,13 @@ export function getBasicPieLayout(seriesModel: PieSeriesModel, api: ExtensionAPI
Pick {
const viewRect = getViewRect(seriesModel, api);
+ // center can be string or number when coordinateSystem is specified
let center = seriesModel.get('center');
let radius = seriesModel.get('radius');
if (!zrUtil.isArray(radius)) {
radius = [0, radius];
}
- if (!zrUtil.isArray(center)) {
- center = [center, center];
- }
const width = parsePercent(viewRect.width, api.getWidth());
const height = parsePercent(viewRect.height, api.getHeight());
const size = Math.min(width, height);
@@ -66,6 +64,9 @@ export function getBasicPieLayout(seriesModel: PieSeriesModel, api: ExtensionAPI
cy = point[1] || 0;
}
else {
+ if (!zrUtil.isArray(center)) {
+ center = [center, center];
+ }
cx = parsePercent(center[0], width) + viewRect.x;
cy = parsePercent(center[1], height) + viewRect.y;
}
diff --git a/src/chart/sankey/SankeySeries.ts b/src/chart/sankey/SankeySeries.ts
index 2ef1e77795..bc07d45004 100644
--- a/src/chart/sankey/SankeySeries.ts
+++ b/src/chart/sankey/SankeySeries.ts
@@ -85,6 +85,7 @@ export interface SankeyEdgeItemOption extends
StatesOptionMixin,
GraphEdgeItemObject {
focusNodeAdjacency?: FocusNodeAdjacency
+ edgeLabel?: SeriesLabelOption
}
export interface SankeyLevelOption extends SankeyNodeStateOption, SankeyEdgeStateOption {
@@ -137,6 +138,10 @@ export interface SankeySeriesOption
links?: SankeyEdgeItemOption[]
levels?: SankeyLevelOption[]
+
+ edgeLabel?: SeriesLabelOption & {
+ position?: 'inside'
+ }
}
class SankeySeriesModel extends SeriesModel {
@@ -298,6 +303,11 @@ class SankeySeriesModel extends SeriesModel {
fontSize: 12
},
+ edgeLabel: {
+ show: false,
+ fontSize: 12
+ },
+
levels: [],
nodeAlign: 'justify',
diff --git a/src/chart/sankey/SankeyView.ts b/src/chart/sankey/SankeyView.ts
index 5a9110f760..5432908d48 100644
--- a/src/chart/sankey/SankeyView.ts
+++ b/src/chart/sankey/SankeyView.ts
@@ -220,6 +220,16 @@ class SankeyView extends ChartView {
}
}
+ setLabelStyle(
+ curve, getLabelStatesModels(edgeModel, 'edgeLabel'),
+ {
+ labelFetcher: seriesModel,
+ labelDataIndex: edge.dataIndex,
+ defaultText: `${edgeModel.get('value')}`
+ }
+ );
+ curve.setTextConfig({ position: 'inside' });
+
const emphasisModel = edgeModel.getModel('emphasis');
setStatesStylesFromModel(curve, edgeModel, 'lineStyle', (model) => model.getItemStyle());
diff --git a/src/chart/sankey/sankeyLayout.ts b/src/chart/sankey/sankeyLayout.ts
index c4343694b1..0ae24df1c5 100644
--- a/src/chart/sankey/sankeyLayout.ts
+++ b/src/chart/sankey/sankeyLayout.ts
@@ -122,7 +122,7 @@ function computeNodeBreadths(
const remainEdges = [];
// Storage each node's indegree.
const indegreeArr = [];
- //Used to storage the node with indegree is equal to 0.
+ // Used to storage the node with indegree is equal to 0.
let zeroIndegrees: GraphNode[] = [];
let nextTargetNode: GraphNode[] = [];
let x = 0;
diff --git a/src/chart/sankey/sankeyVisual.ts b/src/chart/sankey/sankeyVisual.ts
index 9425a615a9..a0f4add053 100644
--- a/src/chart/sankey/sankeyVisual.ts
+++ b/src/chart/sankey/sankeyVisual.ts
@@ -20,12 +20,13 @@
import * as zrUtil from 'zrender/src/core/util';
import VisualMapping from '../../visual/VisualMapping';
import GlobalModel from '../../model/Global';
-import SankeySeriesModel, { SankeyNodeItemOption } from './SankeySeries';
+import SankeySeriesModel, { SankeyEdgeItemOption, SankeyNodeItemOption } from './SankeySeries';
export default function sankeyVisual(ecModel: GlobalModel) {
ecModel.eachSeriesByType('sankey', function (seriesModel: SankeySeriesModel) {
const graph = seriesModel.getGraph();
const nodes = graph.nodes;
+ const edges = graph.edges;
if (nodes.length) {
let minValue = Infinity;
let maxValue = -Infinity;
@@ -59,5 +60,11 @@ export default function sankeyVisual(ecModel: GlobalModel) {
}
});
}
+ if (edges.length) {
+ zrUtil.each(edges, function (edge) {
+ const edgeStyle = edge.getModel().get('lineStyle');
+ edge.setVisual('style', edgeStyle);
+ });
+ }
});
}
\ No newline at end of file
diff --git a/src/chart/sunburst/SunburstSeries.ts b/src/chart/sunburst/SunburstSeries.ts
index 0887e2fd7f..402de0110d 100644
--- a/src/chart/sunburst/SunburstSeries.ts
+++ b/src/chart/sunburst/SunburstSeries.ts
@@ -238,7 +238,7 @@ class SunburstSeriesModel extends SeriesModel {
rotate: 'radial',
show: true,
opacity: 1,
- // 'left' is for inner side of inside, and 'right' is for outter
+ // 'left' is for inner side of inside, and 'right' is for outer
// side for inside
align: 'center',
position: 'inside',
@@ -269,7 +269,7 @@ class SunburstSeriesModel extends SeriesModel {
}
},
- // Animation type canbe expansion, scale
+ // Animation type can be expansion, scale.
animationType: 'expansion',
animationDuration: 1000,
animationDurationUpdate: 500,
diff --git a/src/chart/sunburst/sunburstLayout.ts b/src/chart/sunburst/sunburstLayout.ts
index f84fc3b53e..a45f211c50 100644
--- a/src/chart/sunburst/sunburstLayout.ts
+++ b/src/chart/sunburst/sunburstLayout.ts
@@ -21,9 +21,8 @@ import { parsePercent } from '../../util/number';
import * as zrUtil from 'zrender/src/core/util';
import GlobalModel from '../../model/Global';
import ExtensionAPI from '../../core/ExtensionAPI';
-import SunburstSeriesModel, { SunburstSeriesNodeItemOption, SunburstSeriesOption } from './SunburstSeries';
+import SunburstSeriesModel, { SunburstSeriesOption } from './SunburstSeries';
import { TreeNode } from '../../data/Tree';
-import SeriesModel from '../../model/Series';
// let PI2 = Math.PI * 2;
const RADIAN = Math.PI / 180;
diff --git a/src/chart/themeRiver/ThemeRiverSeries.ts b/src/chart/themeRiver/ThemeRiverSeries.ts
index f1fb0bc495..31e5b0ad37 100644
--- a/src/chart/themeRiver/ThemeRiverSeries.ts
+++ b/src/chart/themeRiver/ThemeRiverSeries.ts
@@ -156,7 +156,7 @@ class ThemeRiverSeriesModel extends SeriesModel {
/**
* @override
- * @param option the initial option that user gived
+ * @param option the initial option that user gave
* @param ecModel the model object for themeRiver option
*/
getInitialData(option: ThemeRiverSeriesOption, ecModel: GlobalModel): SeriesData {
@@ -326,4 +326,4 @@ class ThemeRiverSeriesModel extends SeriesModel {
};
}
-export default ThemeRiverSeriesModel;
\ No newline at end of file
+export default ThemeRiverSeriesModel;
diff --git a/src/chart/tree/TreeSeries.ts b/src/chart/tree/TreeSeries.ts
index 659dfc16cf..245bf91dc8 100644
--- a/src/chart/tree/TreeSeries.ts
+++ b/src/chart/tree/TreeSeries.ts
@@ -146,7 +146,7 @@ class TreeSeriesModel extends SeriesModel {
*/
getInitialData(option: TreeSeriesOption): SeriesData {
- //create an virtual root
+ // create a virtual root
const root: TreeSeriesNodeItemOption = {
name: option.name,
children: option.data
diff --git a/src/chart/tree/layoutHelper.ts b/src/chart/tree/layoutHelper.ts
index 1c56275a31..2aada604ec 100644
--- a/src/chart/tree/layoutHelper.ts
+++ b/src/chart/tree/layoutHelper.ts
@@ -18,7 +18,7 @@
*/
/*
-* A third-party license is embeded for some of the code in this file:
+* A third-party license is embedded for some of the code in this file:
* The tree layoutHelper implementation was originally copied from
* "d3.js"(https://github.com/d3/d3-hierarchy) with
* some modifications made for this project.
@@ -328,4 +328,4 @@ function defaultSeparation(node1: TreeLayoutNode, node2: TreeLayoutNode): number
interface SeparationFunc {
(node1: TreeLayoutNode, node2: TreeLayoutNode): number
-}
\ No newline at end of file
+}
diff --git a/src/chart/treemap/TreemapSeries.ts b/src/chart/treemap/TreemapSeries.ts
index 2e5f22835f..9e4dc340aa 100644
--- a/src/chart/treemap/TreemapSeries.ts
+++ b/src/chart/treemap/TreemapSeries.ts
@@ -46,7 +46,7 @@ import { normalizeToArray } from '../../util/model';
import { createTooltipMarkup } from '../../component/tooltip/tooltipMarkup';
import enableAriaDecalForTree from '../helper/enableAriaDecalForTree';
-// Only support numberic value.
+// Only support numeric value.
type TreemapSeriesDataValue = number | number[];
interface BreadcrumbItemStyleOption extends ItemStyleOption {
@@ -113,7 +113,7 @@ export interface TreemapSeriesVisualOption {
colorAlpha?: number[] | 'none'
colorSaturation?: number[] | 'none'
// A color list for a level. Each node in the level will obtain a color from the color list.
- // Only suuport ColorString for interpolation
+ // Only support ColorString for interpolation.
// color?: ColorString[]
/**
@@ -191,7 +191,7 @@ export interface TreemapSeriesOption
* Leaf node click behaviour: 'zoomToNode', 'link', false.
* If leafDepth is set and clicking a node which has children but
* be on left depth, the behaviour would be changing root. Otherwise
- * use behavious defined above.
+ * use behaviour defined above.
*/
nodeClick?: 'zoomToNode' | 'link' | false
@@ -265,14 +265,14 @@ class TreemapSeriesModel extends SeriesModel {
// bottom
emptyItemWidth: 25, // Width of empty node.
itemStyle: {
- color: 'rgba(0,0,0,0.7)', //'#5793f3',
+ color: 'rgba(0,0,0,0.7)', // '#5793f3',
textStyle: {
color: '#fff'
}
},
emphasis: {
itemStyle: {
- color: 'rgba(0,0,0,0.9)' //'#5793f3',
+ color: 'rgba(0,0,0,0.9)' // '#5793f3',
}
}
},
@@ -281,7 +281,7 @@ class TreemapSeriesModel extends SeriesModel {
// Do not use textDistance, for ellipsis rect just the same as treemap node rect.
distance: 0,
padding: 5,
- position: 'inside', // Can be [5, '5%'] or position stirng like 'insideTopLeft', ...
+ position: 'inside', // Can be [5, '5%'] or position string like 'insideTopLeft', ...
// formatter: null,
color: '#fff',
overflow: 'truncate'
diff --git a/src/chart/treemap/TreemapView.ts b/src/chart/treemap/TreemapView.ts
index 02c8f3bcee..b4f159dc24 100644
--- a/src/chart/treemap/TreemapView.ts
+++ b/src/chart/treemap/TreemapView.ts
@@ -254,9 +254,9 @@ class TreemapView extends ChartView {
);
}
- // Notice: when thisTree and oldTree are the same tree (see list.cloneShallow),
- // the oldTree is actually losted, so we can not find all of the old graphic
- // elements from tree. So we use this stragegy: make element storage, move
+ // Notice: When thisTree and oldTree are the same tree (see list.cloneShallow),
+ // the oldTree is actually losted, so we cannot find all of the old graphic
+ // elements from tree. So we use this strategy: make element storage, move
// from old storage to new storage, clear old storage.
dualTravel(
@@ -684,7 +684,7 @@ class TreemapView extends ChartView {
const point = bgEl.transformCoordToLocal(x, y);
const shape = bgEl.shape;
- // For performance consideration, dont use 'getBoundingRect'.
+ // For performance consideration, don't use 'getBoundingRect'.
if (shape.x <= point[0]
&& point[0] <= shape.x + shape.width
&& shape.y <= point[1]
@@ -1098,9 +1098,9 @@ function renderNode(
}
-// We can not set all backgroud with the same z, Because the behaviour of
+// We cannot set all background with the same z, because the behaviour of
// drill down and roll up differ background creation sequence from tree
-// hierarchy sequence, which cause that lowser background element overlap
+// hierarchy sequence, which cause lower background elements to overlap
// upper ones. So we calculate z based on depth.
// Moreover, we try to shrink down z interval to [0, 1] to avoid that
// treemap with large z overlaps other components.
diff --git a/src/chart/treemap/treemapLayout.ts b/src/chart/treemap/treemapLayout.ts
index 26003794b0..62872f37b2 100644
--- a/src/chart/treemap/treemapLayout.ts
+++ b/src/chart/treemap/treemapLayout.ts
@@ -18,7 +18,7 @@
*/
/*
-* A third-party license is embeded for some of the code in this file:
+* A third-party license is embedded for some of the code in this file:
* The treemap layout implementation was originally copied from
* "d3.js" with some modifications made for this project.
* (See more details in the comment of the method "squarify" below.)
@@ -573,7 +573,7 @@ function estimateRootSize(
containerHeight: number
) {
// If targetInfo.node exists, we zoom to the node,
- // so estimate whold width and heigth by target node.
+ // so estimate whole width and height by target node.
let currNode = (targetInfo || {}).node;
const defaultSize = [containerWidth, containerHeight];
@@ -616,7 +616,7 @@ function estimateRootSize(
return [containerWidth * scale, containerHeight * scale];
}
-// Root postion base on coord of containerGroup
+// Root position based on coord of containerGroup
function calculateRootPosition(
layoutInfo: layout.LayoutRect,
rootRect: RectLike,
diff --git a/src/chart/treemap/treemapVisual.ts b/src/chart/treemap/treemapVisual.ts
index 3554ceb86f..b7f710b824 100644
--- a/src/chart/treemap/treemapVisual.ts
+++ b/src/chart/treemap/treemapVisual.ts
@@ -226,16 +226,16 @@ function buildVisualMapping(
return mapping;
}
-// Notice: If we dont have the attribute 'colorRange', but only use
+// Notice: If we don't have the attribute 'colorRange', but only use
// attribute 'color' to represent both concepts of 'colorRange' and 'color',
// (It means 'colorRange' when 'color' is Array, means 'color' when not array),
// this problem will be encountered:
-// If a level-1 node dont have children, and its siblings has children,
-// and colorRange is set on level-1, then the node can not be colored.
+// If a level-1 node doesn't have children, and its siblings have children,
+// and colorRange is set on level-1, then the node cannot be colored.
// So we separate 'colorRange' and 'color' to different attributes.
function getRangeVisual(nodeModel: NodeModel, name: keyof TreemapVisual) {
// 'colorRange', 'colorARange', 'colorSRange'.
- // If not exsits on this node, fetch from levels and series.
+ // If not exists on this node, fetch from levels and series.
const range = nodeModel.get(name);
return (isArray(range) && range.length) ? {
name: name,
diff --git a/src/component/dataZoom/AxisProxy.ts b/src/component/dataZoom/AxisProxy.ts
index e7be785fca..8c05f8cea7 100644
--- a/src/component/dataZoom/AxisProxy.ts
+++ b/src/component/dataZoom/AxisProxy.ts
@@ -189,15 +189,20 @@ class AxisProxy {
// valueWindow[idx] = round(boundValue);
// percentWindow[idx] = round(boundPercent);
- valueWindow[idx] = boundValue;
- percentWindow[idx] = boundPercent;
+ // fallback to extent start/end when parsed value or percent is invalid
+ valueWindow[idx] = boundValue == null || isNaN(boundValue)
+ ? dataExtent[idx]
+ : boundValue;
+ percentWindow[idx] = boundPercent == null || isNaN(boundPercent)
+ ? percentExtent[idx]
+ : boundPercent;
});
asc(valueWindow);
asc(percentWindow);
// The windows from user calling of `dispatchAction` might be out of the extent,
- // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we dont restrict window
+ // or do not obey the `min/maxSpan`, `min/maxValueSpan`. But we don't restrict window
// by `zoomLock` here, because we see `zoomLock` just as a interaction constraint,
// where API is able to initialize/modify the window size even though `zoomLock`
// specified.
@@ -232,8 +237,8 @@ class AxisProxy {
}
/**
- * Notice: reset should not be called before series.restoreData() called,
- * so it is recommanded to be called in "process stage" but not "model init
+ * Notice: reset should not be called before series.restoreData() is called,
+ * so it is recommended to be called in "process stage" but not "model init
* stage".
*/
reset(dataZoomModel: DataZoomModel) {
diff --git a/src/component/dataZoom/DataZoomModel.ts b/src/component/dataZoom/DataZoomModel.ts
index 12382f3ef1..0fd8d78015 100644
--- a/src/component/dataZoom/DataZoomModel.ts
+++ b/src/component/dataZoom/DataZoomModel.ts
@@ -234,7 +234,7 @@ class DataZoomModel extends Compon
mergeOption(newOption: Opts): void {
const inputRawOption = retrieveRawOption(newOption);
- //FIX #2591
+ // FIX #2591
merge(this.option, newOption, true);
merge(this.settledOption, inputRawOption, true);
@@ -291,7 +291,7 @@ class DataZoomModel extends Compon
const refering = this.getReferringComponents(getAxisMainType(axisDim), MULTIPLE_REFERRING);
// When user set axisIndex as a empty array, we think that user specify axisIndex
// but do not want use auto mode. Because empty array may be encountered when
- // some error occured.
+ // some error occurred.
if (!refering.specified) {
return;
}
@@ -577,8 +577,8 @@ class DataZoomModel extends Compon
}
/**
- * Retrieve the those raw params from option, which will be cached separately.
- * becasue they will be overwritten by normalized/calculated values in the main
+ * Retrieve those raw params from option, which will be cached separately,
+ * because they will be overwritten by normalized/calculated values in the main
* process.
*/
function retrieveRawOption(option: T) {
@@ -592,4 +592,4 @@ function retrieveRawOption(option: T) {
return ret;
}
-export default DataZoomModel;
\ No newline at end of file
+export default DataZoomModel;
diff --git a/src/component/dataZoom/roams.ts b/src/component/dataZoom/roams.ts
index c4f281d53d..d33e1e287a 100644
--- a/src/component/dataZoom/roams.ts
+++ b/src/component/dataZoom/roams.ts
@@ -233,7 +233,7 @@ export function installDataZoomRoamProcessor(registers: EChartsExtensionInstallR
|| (apiInner.coordSysRecordMap = createHashMap());
coordSysRecordMap.each(function (coordSysRecord) {
- // `coordSysRecordMap` always exists (becuase it hold the `roam controller`, which should
+ // `coordSysRecordMap` always exists (because it holds the `roam controller`, which should
// better not re-create each time), but clear `dataZoomInfoMap` each round of the workflow.
coordSysRecord.dataZoomInfoMap = null;
});
@@ -294,4 +294,4 @@ export function installDataZoomRoamProcessor(registers: EChartsExtensionInstallR
});
});
-}
\ No newline at end of file
+}
diff --git a/src/component/graphic/GraphicModel.ts b/src/component/graphic/GraphicModel.ts
index e51a509874..fc9f220499 100644
--- a/src/component/graphic/GraphicModel.ts
+++ b/src/component/graphic/GraphicModel.ts
@@ -54,7 +54,7 @@ interface GraphicComponentBaseElementOption extends
>>,
/**
* left/right/top/bottom: (like 12, '22%', 'center', default undefined)
- * If left/rigth is set, shape.x/shape.cx/position will not be used.
+ * If left/right is set, shape.x/shape.cx/position will not be used.
* If top/bottom is set, shape.y/shape.cy/position will not be used.
* This mechanism is useful when you want to position a group/element
* against the right side or the center of this container.
@@ -132,8 +132,8 @@ export interface GraphicComponentGroupOption
/**
* width/height: (can only be pixel value, default 0)
- * Only be used to specify contianer(group) size, if needed. And
- * can not be percentage value (like '33%'). See the reason in the
+ * Is only used to specify container (group) size, if needed. And
+ * cannot be a percentage value (like '33%'). See the reason in the
* layout algorithm below.
*/
width?: number;
@@ -163,7 +163,7 @@ export interface GraphicComponentImageOption
// interface GraphicComponentImageOptionOnState extends GraphicComponentDisplayableOptionOnState {
// style?: ImageStyleProps;
// }
-interface GraphicComponentTextOption
+export interface GraphicComponentTextOption
extends Omit, TransitionOptionMixin {
type?: 'text';
style?: TextStyleProps & TransitionOptionMixin;
@@ -316,9 +316,9 @@ function setLayoutInfoToExist(
return;
}
existItem.hv = newElOption.hv = [
- // Rigid body, dont care `width`.
+ // Rigid body, don't care about `width`.
isSetLoc(newElOption, ['left', 'right']),
- // Rigid body, dont care `height`.
+ // Rigid body, don't care about `height`.
isSetLoc(newElOption, ['top', 'bottom'])
];
// Give default group size. Otherwise layout error may occur.
diff --git a/src/component/graphic/install.ts b/src/component/graphic/install.ts
index 4251932ecc..40c0e2ef02 100644
--- a/src/component/graphic/install.ts
+++ b/src/component/graphic/install.ts
@@ -43,8 +43,8 @@ export function install(registers: EChartsExtensionInstallRegisters) {
option.graphic = [{ elements: graphicOption }];
}
else {
- // Only one graphic instance can be instantiated. (We dont
- // want that too many views are created in echarts._viewMap)
+ // Only one graphic instance can be instantiated. (We don't
+ // want that too many views are created in echarts._viewMap.)
option.graphic = [(option.graphic as any)[0]];
}
}
@@ -52,4 +52,4 @@ export function install(registers: EChartsExtensionInstallRegisters) {
option.graphic = [{ elements: [graphicOption] }];
}
});
-}
\ No newline at end of file
+}
diff --git a/src/component/helper/MapDraw.ts b/src/component/helper/MapDraw.ts
index 5296014546..89827f9570 100644
--- a/src/component/helper/MapDraw.ts
+++ b/src/component/helper/MapDraw.ts
@@ -617,7 +617,7 @@ class MapDraw {
* `ignore` might have been modified by `LabelManager`, and `LabelManager#addLabelsOfSeries`
* will subsequently cache `defaultAttr` like `ignore`. If do not do this reset, the modified
* props will have no chance to be restored.
- * Note: this reset should be after `clearStates` in `renderSeries` becuase `useStates` in
+ * Note: This reset should be after `clearStates` in `renderSeries` because `useStates` in
* `renderSeries` will cache the modified `ignore` to `el._normalState`.
* TODO:
* Use clone/immutable in `LabelManager`?
@@ -672,7 +672,7 @@ function applyOptionStyleForRegion(
}
>
): void {
- // All of the path are using `itemStyle`, becuase
+ // All of the path are using `itemStyle`, because
// (1) Some SVG also use fill on polyline (The different between
// polyline and polygon is "open" or "close" but not fill or not).
// (2) For the common props like opacity, if some use itemStyle
diff --git a/src/component/legend/LegendModel.ts b/src/component/legend/LegendModel.ts
index b121c94a9a..70a6fd59ff 100644
--- a/src/component/legend/LegendModel.ts
+++ b/src/component/legend/LegendModel.ts
@@ -247,7 +247,7 @@ class LegendModel extends ComponentMode
readonly layoutMode = {
type: 'box',
// legend.width/height are maxWidth/maxHeight actually,
- // whereas realy width/height is calculated by its content.
+ // whereas real width/height is calculated by its content.
// (Setting {left: 10, right: 10} does not make sense).
// So consider the case:
// `setOption({legend: {left: 10});`
@@ -350,10 +350,11 @@ class LegendModel extends ComponentMode
*/
this._availableNames = availableNames;
- // If legend.data not specified in option, use availableNames as data,
- // which is convinient for user preparing option.
+ // If legend.data is not specified in option, use availableNames as data,
+ // which is convenient for user preparing option.
const rawData = this.get('data') || potentialData;
+ const legendNameMap = zrUtil.createHashMap();
const legendData = zrUtil.map(rawData, function (dataItem) {
// Can be string or number
if (zrUtil.isString(dataItem) || zrUtil.isNumber(dataItem)) {
@@ -361,6 +362,11 @@ class LegendModel extends ComponentMode
name: dataItem as string
};
}
+ if (legendNameMap.get(dataItem.name)) {
+ // remove legend name duplicate
+ return null;
+ }
+ legendNameMap.set(dataItem.name, true);
return new Model(dataItem, this, this.ecModel);
}, this);
@@ -368,7 +374,7 @@ class LegendModel extends ComponentMode
* @type {Array.}
* @private
*/
- this._data = legendData;
+ this._data = zrUtil.filter(legendData, item => !!item);
}
getData() {
diff --git a/src/component/legend/LegendView.ts b/src/component/legend/LegendView.ts
index 6e6c9ceb8c..5b4a342599 100644
--- a/src/component/legend/LegendView.ts
+++ b/src/component/legend/LegendView.ts
@@ -69,7 +69,7 @@ class LegendView extends ComponentView {
/**
* If first rendering, `contentGroup.position` is [0, 0], which
- * does not make sense and may cause unexepcted animation if adopted.
+ * does not make sense and may cause unexpected animation if adopted.
*/
private _isFirstRender: boolean;
@@ -199,7 +199,7 @@ class LegendView extends ComponentView {
SeriesModel;
if (legendDrawnMap.get(name)) {
- // Have been drawed
+ // Have been drawn
return;
}
@@ -510,7 +510,7 @@ class LegendView extends ComponentView {
contentPos[orientIdx] += selectorRect[wh] + selectorButtonGap;
}
- //Always align selector to content as 'middle'
+ // Always align selector to content as 'middle'
selectorPos[1 - orientIdx] += contentRect[hw] / 2 - selectorRect[hw] / 2;
selectorGroup.x = selectorPos[0];
selectorGroup.y = selectorPos[1];
@@ -663,7 +663,7 @@ function dispatchSelectAction(
name: seriesName != null ? seriesName : dataName
});
// highlight after select
- // TODO higlight immediately may cause animation loss.
+ // TODO highlight immediately may cause animation loss.
dispatchHighlightAction(seriesName, dataName, api, excludeSeriesId);
}
diff --git a/src/component/marker/MarkAreaView.ts b/src/component/marker/MarkAreaView.ts
index 785d107d87..9ecf7d32ee 100644
--- a/src/component/marker/MarkAreaView.ts
+++ b/src/component/marker/MarkAreaView.ts
@@ -66,8 +66,15 @@ const markAreaTransform = function (
maModel: MarkAreaModel,
item: MarkArea2DDataItemOption
): MarkAreaMergedItemOption {
- const lt = markerHelper.dataTransform(seriesModel, item[0]);
- const rb = markerHelper.dataTransform(seriesModel, item[1]);
+ // item may be null
+ const item0 = item[0];
+ const item1 = item[1];
+ if (!item0 || !item1) {
+ return;
+ }
+
+ const lt = markerHelper.dataTransform(seriesModel, item0);
+ const rb = markerHelper.dataTransform(seriesModel, item1);
// FIXME make sure lt is less than rb
const ltCoord = lt.coord;
@@ -133,11 +140,11 @@ function markAreaFilter(coordSys: CoordinateSystem, item: MarkAreaMergedItemOpti
) {
return true;
}
- //Directly returning true may also do the work,
- //because markArea will not be shown automatically
- //when it's not included in coordinate system.
- //But filtering ahead can avoid keeping rendering markArea
- //when there are too many of them.
+ // Directly returning true may also do the work,
+ // because markArea will not be shown automatically
+ // when it's not included in coordinate system.
+ // But filtering ahead can avoid keeping rendering markArea
+ // when there are too many of them.
return markerHelper.zoneFilter(coordSys, item0, item1);
}
return markerHelper.dataFilter(coordSys, item0)
@@ -164,9 +171,28 @@ function getSingleMarkerEndPoint(
else {
// Chart like bar may have there own marker positioning logic
if (seriesModel.getMarkerPosition) {
+ // Consider the case that user input the right-bottom point first
+ // Pick the larger x and y as 'x1' and 'y1'
+ const pointValue0 = data.getValues(['x0', 'y0'], idx);
+ const pointValue1 = data.getValues(['x1', 'y1'], idx);
+ const clampPointValue0 = coordSys.clampData(pointValue0);
+ const clampPointValue1 = coordSys.clampData(pointValue1);
+ const 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];
+ }
// Use the getMarkerPosition
point = seriesModel.getMarkerPosition(
- data.getValues(dims, idx)
+ pointValue, dims, true
);
}
else {
@@ -202,7 +228,7 @@ function getSingleMarkerEndPoint(
return point;
}
-const dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']] as const;
+export const dimPermutations = [['x0', 'y0'], ['x1', 'y0'], ['x1', 'y1'], ['x0', 'y1']] as const;
class MarkAreaView extends MarkerView {
diff --git a/src/component/marker/MarkLineModel.ts b/src/component/marker/MarkLineModel.ts
index c10025c648..903f196ec8 100644
--- a/src/component/marker/MarkLineModel.ts
+++ b/src/component/marker/MarkLineModel.ts
@@ -118,7 +118,7 @@ class MarkLineModel extends MarkerModel {
symbol: ['circle', 'arrow'],
symbolSize: [8, 16],
- //symbolRotate: 0,
+ // symbolRotate: 0,
symbolOffset: 0,
precision: 2,
diff --git a/src/component/marker/MarkPointModel.ts b/src/component/marker/MarkPointModel.ts
index 4a4a67a1a3..1b672317c7 100644
--- a/src/component/marker/MarkPointModel.ts
+++ b/src/component/marker/MarkPointModel.ts
@@ -73,8 +73,8 @@ class MarkPointModel extends MarkerModel {
z: 5,
symbol: 'pin',
symbolSize: 50,
- //symbolRotate: 0,
- //symbolOffset: [0, 0]
+ // symbolRotate: 0,
+ // symbolOffset: [0, 0]
tooltip: {
trigger: 'item'
},
diff --git a/src/component/marker/markerHelper.ts b/src/component/marker/markerHelper.ts
index 1616df4226..2777b137f4 100644
--- a/src/component/marker/markerHelper.ts
+++ b/src/component/marker/markerHelper.ts
@@ -61,7 +61,7 @@ function markerTypeCalculatorWithExtent(
): [ParsedValue[], ParsedValue] {
const coordArr: ParsedValue[] = [];
- const stacked = isDimensionStacked(data, targetDataDim /*, otherDataDim*/);
+ const stacked = isDimensionStacked(data, targetDataDim /* , otherDataDim */);
const calcDataDim = stacked
? data.getCalculationInfo('stackResultDimension')
: targetDataDim;
@@ -99,16 +99,20 @@ export function dataTransform(
seriesModel: SeriesModel,
item: MarkerPositionOption
) {
+ if (!item) {
+ return;
+ }
+
const data = seriesModel.getData();
const coordSys = seriesModel.coordinateSystem;
+ const dims = coordSys.dimensions;
// 1. If not specify the position with pixel directly
// 2. If `coord` is not a data array. Which uses `xAxis`,
// `yAxis` to specify the coord on each dimension
// parseFloat first because item.x and item.y can be percent string like '20%'
- if (item && !hasXAndY(item) && !isArray(item.coord) && coordSys) {
- const dims = coordSys.dimensions;
+ if (!hasXAndY(item) && !isArray(item.coord) && coordSys) {
const axisInfo = getAxisInfo(item, data, coordSys, seriesModel);
// Clone the option
@@ -130,21 +134,26 @@ export function dataTransform(
// Force to use the value of calculated value.
// let item use the value without stack.
item.value = coordInfo[1];
-
}
else {
// FIXME Only has one of xAxis and yAxis.
- const coord = [
+ item.coord = [
item.xAxis != null ? item.xAxis : item.radiusAxis,
item.yAxis != null ? item.yAxis : item.angleAxis
];
- // Each coord support max, min, average
- for (let i = 0; i < 2; i++) {
- if (markerTypeCalculator[coord[i] as MarkerStatisticType]) {
- coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i] as MarkerStatisticType);
- }
+ }
+ }
+ // x y is provided
+ if (item.coord == null) {
+ item.coord = [];
+ }
+ else {
+ // Each coord support max, min, average
+ const coord = item.coord;
+ for (let i = 0; i < 2; i++) {
+ if (markerTypeCalculator[coord[i] as MarkerStatisticType]) {
+ coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i] as MarkerStatisticType);
}
- item.coord = coord;
}
}
return item;
diff --git a/src/component/parallel/ParallelView.ts b/src/component/parallel/ParallelView.ts
index 7ba445e786..1d7a0c63aa 100644
--- a/src/component/parallel/ParallelView.ts
+++ b/src/component/parallel/ParallelView.ts
@@ -58,7 +58,7 @@ class ParallelView extends ComponentView {
}
/**
* @internal
- * @param {Object} [opt] If null, cancle the last action triggering for debounce.
+ * @param {Object} [opt] If null, cancel the last action triggering for debounce.
*/
_throttledDispatchExpand(this: ParallelView, opt: Omit): void {
this._dispatchExpand(opt);
@@ -105,7 +105,7 @@ const handlers: Partial> = {
&& (this._throttledDispatchExpand as ParallelView['_throttledDispatchExpand'] & ThrottleController)
.debounceNextCall(model.get('axisExpandDebounce'));
this._throttledDispatchExpand(behavior === 'none'
- ? null // Cancle the last trigger, in case that mouse slide out of the area quickly.
+ ? null // Cancel the last trigger, in case that mouse slide out of the area quickly.
: {
axisExpandWindow: result.axisExpandWindow,
// Jumping uses animation, and sliding suppresses animation.
@@ -120,4 +120,4 @@ function checkTrigger(view: ParallelView, triggerOn: ParallelCoordinateSystemOpt
return model.get('axisExpandable') && model.get('axisExpandTriggerOn') === triggerOn;
}
-export default ParallelView;
\ No newline at end of file
+export default ParallelView;
diff --git a/src/component/timeline/SliderTimelineView.ts b/src/component/timeline/SliderTimelineView.ts
index 32eb7d6fc2..f993e57138 100644
--- a/src/component/timeline/SliderTimelineView.ts
+++ b/src/component/timeline/SliderTimelineView.ts
@@ -420,7 +420,7 @@ class SliderTimelineView extends TimelineView {
this._tickSymbols = [];
- // The value is dataIndex, see the costomized scale.
+ // The value is dataIndex, see the customized scale.
each(ticks, (tick: ScaleTick) => {
const tickCoord = axis.dataToCoord(tick.value);
const itemModel = data.getItemModel(tick.value);
@@ -470,7 +470,7 @@ class SliderTimelineView extends TimelineView {
this._tickLabels = [];
each(labels, (labelItem) => {
- // The tickValue is dataIndex, see the costomized scale.
+ // The tickValue is dataIndex, see the customized scale.
const dataIndex = labelItem.tickValue;
const itemModel = data.getItemModel(dataIndex);
@@ -626,8 +626,11 @@ class SliderTimelineView extends TimelineView {
this._currentPointer.x = toCoord;
this._currentPointer.markRedraw();
- this._progressLine.shape.x2 = toCoord;
- this._progressLine.dirty();
+ const progressLine = this._progressLine;
+ if (progressLine) {
+ progressLine.shape.x2 = toCoord;
+ progressLine.dirty();
+ }
const targetDataIndex = this._findNearestTick(toCoord);
const timelineModel = this.model;
diff --git a/src/component/tooltip/TooltipHTMLContent.ts b/src/component/tooltip/TooltipHTMLContent.ts
index baca229954..02496857b0 100644
--- a/src/component/tooltip/TooltipHTMLContent.ts
+++ b/src/component/tooltip/TooltipHTMLContent.ts
@@ -93,7 +93,7 @@ function assembleArrow(
const borderStyle = `${borderColor} solid ${borderWidth}px;`;
const styleCss = [
- `position:absolute;width:${arrowSize}px;height:${arrowSize}px;`,
+ `position:absolute;width:${arrowSize}px;height:${arrowSize}px;z-index:-1;`,
`${positionStyle};${transformStyle};`,
`border-bottom:${borderStyle}`,
`border-right:${borderStyle}`,
diff --git a/src/coord/Axis.ts b/src/coord/Axis.ts
index 7a334a0a4b..a71051507c 100644
--- a/src/coord/Axis.ts
+++ b/src/coord/Axis.ts
@@ -232,7 +232,7 @@ class Axis {
* Notice here we only get the default tick model. For splitLine
* or splitArea, we should pass the splitLineModel or splitAreaModel
* manually when calling `getTicksCoords`.
- * In GL, this method may be overrided to:
+ * In GL, this method may be overridden to:
* `axisModel.getModel('axisTick', grid3DModel.getModel('axisTick'));`
*/
getTickModel(): Model {
@@ -262,7 +262,7 @@ class Axis {
/**
* Only be called in category axis.
- * Can be overrided, consider other axes like in 3D.
+ * Can be overridden, consider other axes like in 3D.
* @return Auto interval for cateogry axis tick and label
*/
calculateCategoryInterval(): ReturnType {
@@ -338,7 +338,7 @@ function fixOnBandTicksCoords(
function littleThan(a: number, b: number): boolean {
// Avoid rounding error cause calculated tick coord different with extent.
- // It may cause an extra unecessary tick added.
+ // It may cause an extra unnecessary tick added.
a = round(a);
b = round(b);
return inverse ? a > b : a < b;
diff --git a/src/coord/CoordinateSystem.ts b/src/coord/CoordinateSystem.ts
index 0ebe41e916..f89235b77b 100644
--- a/src/coord/CoordinateSystem.ts
+++ b/src/coord/CoordinateSystem.ts
@@ -57,17 +57,17 @@ export interface CoordinateSystemMaster {
update?: (ecModel: GlobalModel, api: ExtensionAPI) => void;
- // This methods is also responsible for determine whether this
- // coodinate system is applicable to the given `finder`.
- // Each coordinate system will be tried, util one returns none
+ // This methods is also responsible for determining whether this
+ // coordinate system is applicable to the given `finder`.
+ // Each coordinate system will be tried, until one returns non-
// null/undefined value.
convertToPixel?(
ecModel: GlobalModel, finder: ParsedModelFinder, value: ScaleDataValue | ScaleDataValue[]
): number | number[];
- // This methods is also responsible for determine whether this
- // coodinate system is applicable to the given `finder`.
- // Each coordinate system will be tried, util one returns none
+ // This methods is also responsible for determining whether this
+ // coordinate system is applicable to the given `finder`.
+ // Each coordinate system will be tried, until one returns non-
// null/undefined value.
convertFromPixel?(
ecModel: GlobalModel, finder: ParsedModelFinder, pixelValue: number | number[]
@@ -137,6 +137,8 @@ export interface CoordinateSystem {
// @param point Point in global pixel coordinate system.
containPoint(point: number[]): boolean;
+ getAxes?: () => Axis[];
+
getAxis?: (dim?: DimensionName) => Axis;
getBaseAxis?: () => Axis;
diff --git a/src/coord/View.ts b/src/coord/View.ts
index bb4c1affb8..60fbb0318f 100644
--- a/src/coord/View.ts
+++ b/src/coord/View.ts
@@ -232,9 +232,9 @@ class View extends Transformable implements CoordinateSystemMaster, CoordinateSy
const rawTransformable = this._rawTransformable;
const roamTransformable = this._roamTransformable;
- // Becuase roamTransformabel has `originX/originY` modified,
+ // Because roamTransformabel has `originX/originY` modified,
// but the caller of `getTransformInfo` can not handle `originX/originY`,
- // so need to recalcualte them.
+ // so need to recalculate them.
const dummyTransformable = new Transformable();
dummyTransformable.transform = roamTransformable.transform;
dummyTransformable.decomposeTransform();
@@ -310,7 +310,7 @@ class View extends Transformable implements CoordinateSystemMaster, CoordinateSy
* @return {number}
*/
// getScalarScale() {
- // // Use determinant square root of transform to mutiply scalar
+ // // Use determinant square root of transform to multiply scalar
// let m = this.transform;
// let det = Math.sqrt(Math.abs(m[0] * m[3] - m[2] * m[1]));
// return det;
diff --git a/src/coord/axisCommonTypes.ts b/src/coord/axisCommonTypes.ts
index e3241cb02e..bb4d1b7bf1 100644
--- a/src/coord/axisCommonTypes.ts
+++ b/src/coord/axisCommonTypes.ts
@@ -22,6 +22,7 @@ import {
AreaStyleOption, ComponentOption, ColorString,
AnimationOptionMixin, Dictionary, ScaleDataValue, CommonAxisPointerOption
} from '../util/types';
+import { TextStyleProps } from 'zrender/src/graphic/Text';
export const AXIS_TYPES = {value: 1, category: 1, time: 1, log: 1} as const;
@@ -90,7 +91,7 @@ export interface NumericAxisBaseOptionCommon extends AxisBaseOptionCommon {
boundaryGap?: [number | string, number | string]
/**
- * AxisTick and axisLabel and splitLine are caculated based on splitNumber.
+ * AxisTick and axisLabel and splitLine are calculated based on splitNumber.
*/
splitNumber?: number;
/**
@@ -127,7 +128,7 @@ export interface CategoryAxisBaseOption extends AxisBaseOptionCommon {
})[];
/*
* Set false to faster category collection.
- * Only usefull in the case like: category is
+ * Only useful in the case like: category is
* ['2012-01-01', '2012-01-02', ...], where the input
* data has been ensured not duplicate and is large data.
* null means "auto":
@@ -230,6 +231,7 @@ interface AxisLabelBaseOption extends Omit {
hideOverlap?: boolean;
// Color can be callback
color?: ColorString | ((value?: string | number, index?: number) => ColorString)
+ overflow?: TextStyleProps['overflow']
}
interface AxisLabelOption extends AxisLabelBaseOption {
formatter?: LabelFormatters[TType]
diff --git a/src/coord/axisDefault.ts b/src/coord/axisDefault.ts
index 05bc4083ee..4d2c6674b3 100644
--- a/src/coord/axisDefault.ts
+++ b/src/coord/axisDefault.ts
@@ -151,7 +151,7 @@ const valueAxis: AxisBaseOption = zrUtil.merge({
show: false,
// Split number of minor ticks. The value should be in range of (0, 100)
splitNumber: 5,
- // Lenght of minor tick
+ // Length of minor tick
length: 3,
// Line style
diff --git a/src/coord/axisHelper.ts b/src/coord/axisHelper.ts
index c487d52871..53485fb31e 100644
--- a/src/coord/axisHelper.ts
+++ b/src/coord/axisHelper.ts
@@ -77,7 +77,7 @@ export function getScaleExtent(scale: Scale, model: AxisBaseModel) {
// (4) Consider other chart types using `barGrid`?
// See #6728, #4862, `test/bar-overflow-time-plot.html`
const ecModel = model.ecModel;
- if (ecModel && (scaleType === 'time' /*|| scaleType === 'interval' */)) {
+ if (ecModel && (scaleType === 'time' /* || scaleType === 'interval' */)) {
const barSeriesModels = prepareLayoutBarSeries('bar', ecModel);
let isBaseAxisAndHasBarSeries = false;
@@ -147,7 +147,7 @@ function adjustScaleForOverflow(
}
// Precondition of calling this method:
-// The scale extent has been initailized using series data extent via
+// The scale extent has been initialized using series data extent via
// `scale.setExtent` or `scale.unionExtentFromData`;
export function niceScaleExtent(
scale: Scale,
@@ -364,7 +364,7 @@ export function getOptionCategoryInterval(model: Model interval
// If the axis change is caused by chart resize, the cache should not
- // be used. Otherwise some hiden labels might not be shown again.
+ // be used. Otherwise some hidden labels might not be shown again.
&& cache.axisExtent0 === axisExtent[0]
&& cache.axisExtent1 === axisExtent[1]
) {
diff --git a/src/coord/cartesian/Grid.ts b/src/coord/cartesian/Grid.ts
index 691effdd0e..d22ddef556 100644
--- a/src/coord/cartesian/Grid.ts
+++ b/src/coord/cartesian/Grid.ts
@@ -369,7 +369,7 @@ class Grid implements CoordinateSystemMaster {
y: 0
};
- /// Create axis
+ // Create axis
ecModel.eachComponent('xAxis', createAxisCreator('x'), this);
ecModel.eachComponent('yAxis', createAxisCreator('y'), this);
@@ -382,7 +382,7 @@ class Grid implements CoordinateSystemMaster {
this._axesMap = axesMap;
- /// Create cartesian2d
+ // Create cartesian2d
each(axesMap.x, (xAxis, xAxisIndex) => {
each(axesMap.y, (yAxis, yAxisIndex) => {
const key = 'x' + xAxisIndex + 'y' + yAxisIndex;
diff --git a/src/coord/cartesian/defaultAxisExtentFromData.ts b/src/coord/cartesian/defaultAxisExtentFromData.ts
index 1ca8442446..736eafee91 100644
--- a/src/coord/cartesian/defaultAxisExtentFromData.ts
+++ b/src/coord/cartesian/defaultAxisExtentFromData.ts
@@ -141,7 +141,7 @@ function calculateFilteredExtent(
let tarAxisRecord: AxisRecord;
function addCondition(axis: Axis, axisRecord: AxisRecord) {
- // But for simplicity and safty and performance, we only adopt this
+ // But for simplicity and safety and performance, we only adopt this
// feature on category axis at present.
const condExtent = axisRecord.condExtent;
const rawExtentResult = axisRecord.rawExtentResult;
diff --git a/src/coord/geo/Geo.ts b/src/coord/geo/Geo.ts
index e0b44025f7..130d959163 100644
--- a/src/coord/geo/Geo.ts
+++ b/src/coord/geo/Geo.ts
@@ -137,7 +137,7 @@ class Geo extends View {
// Ignore default aspect scale if projection exits.
this.aspectScale = projection ? 1 : zrUtil.retrieve2(opt.aspectScale, defaultParams.aspectScale);
- // Not invert longitute if projection exits.
+ // Not invert longitude if projection exits.
this._invertLongitute = projection ? false : defaultParams.invertLongitute;
}
@@ -148,7 +148,7 @@ class Geo extends View {
rect = rect.clone();
if (invertLongitute) {
- // Longitute is inverted
+ // Longitude is inverted.
rect.y = -rect.y - rect.height;
}
@@ -196,7 +196,7 @@ class Geo extends View {
*/
getGeoCoord(name: string): number[] {
const region = this._regionsMap.get(name);
- // calcualte center only on demand.
+ // Calculate center only on demand.
return this._nameCoordMap.get(name) || (region && region.getCenter());
}
diff --git a/src/coord/geo/GeoModel.ts b/src/coord/geo/GeoModel.ts
index 796f77282e..c3dde67848 100644
--- a/src/coord/geo/GeoModel.ts
+++ b/src/coord/geo/GeoModel.ts
@@ -81,9 +81,9 @@ export interface GeoCommonOptionMixin extends RoamOptionMixin {
// This parameter is used for scale this aspect
aspectScale?: number;
- ///// Layout with center and size
- // If you wan't to put map in a fixed size box with right aspect ratio
- // This two properties may more conveninet
+ // Layout with center and size
+ // If you want to put map in a fixed size box with right aspect ratio
+ // This two properties may be more convenient
// Like: `40` or `'50%'`.
layoutCenter?: (number | string)[];
// Like: `40` or `'50%'`.
@@ -156,9 +156,9 @@ class GeoModel extends ComponentModel {
// for geoJSON source: 0.75.
aspectScale: null,
- ///// Layout with center and size
- // If you wan't to put map in a fixed size box with right aspect ratio
- // This two properties may more conveninet
+ // /// Layout with center and size
+ // If you want to put map in a fixed size box with right aspect ratio
+ // This two properties may be more convenient
// layoutCenter: [50%, 50%]
// layoutSize: 100
diff --git a/src/coord/geo/GeoSVGResource.ts b/src/coord/geo/GeoSVGResource.ts
index e0e6d5900b..b423f85839 100644
--- a/src/coord/geo/GeoSVGResource.ts
+++ b/src/coord/geo/GeoSVGResource.ts
@@ -55,7 +55,7 @@ export interface GeoSVGGraphicRecord {
*/
const REGION_AVAILABLE_SVG_TAG_MAP = createHashMap([
'rect', 'circle', 'line', 'ellipse', 'polygon', 'polyline', 'path',
- // are also enabled becuase some SVG might paint text itself,
+ // are also enabled because some SVG might paint text itself,
// but still need to trigger events or tooltip.
'text', 'tspan',
// is also enabled because this case: if multiple tags share one name
@@ -168,7 +168,7 @@ export class GeoSVGResource implements GeoResource {
// If both `svgWidth/svgHeight/viewBox` are specified in a SVG file, the transform rule will be:
// 0. `boundingRect` is `(0, 0, svgWidth, svgHeight)`. Set it to Geo['_rect'] (View['_rect']).
// 1. Make a transform from `viewBox` to `boundingRect`.
- // Note: only suport `preserveAspectRatio 'xMidYMid'` here. That is, this transform will preserve
+ // Note: only support `preserveAspectRatio 'xMidYMid'` here. That is, this transform will preserve
// the aspect ratio.
// 2. Make a transform from boundingRect to Geo['_viewRect'] (View['_viewRect'])
// (`Geo`/`View` will do this job).
@@ -267,7 +267,7 @@ export class GeoSVGResource implements GeoResource {
* So we maintain graphic elements in this module, and enables `view` to use/return these
* graphics from/to the pool with it's uid.
*/
- useGraphic(hostKey: string /*, nameMap: NameMap */): GeoSVGGraphicRecord {
+ useGraphic(hostKey: string /* , nameMap: NameMap */): GeoSVGGraphicRecord {
const usedRootMap = this._usedGraphicMap;
let svgGraphic = usedRootMap.get(hostKey);
diff --git a/src/coord/geo/Region.ts b/src/coord/geo/Region.ts
index c29377ef1a..095efcd4b8 100644
--- a/src/coord/geo/Region.ts
+++ b/src/coord/geo/Region.ts
@@ -295,7 +295,7 @@ export class GeoSVGRegion extends Region {
readonly type = 'geoSVG';
// Can only be used to calculate, but not be modified.
- // Becuase this el may not belongs to this view,
+ // Because this el may not belong to this view,
// but been displaying on some other view.
private _elOnlyForCalculate: Element;
diff --git a/src/coord/geo/fix/textCoord.ts b/src/coord/geo/fix/textCoord.ts
index 813e26a44c..3c9647bc19 100644
--- a/src/coord/geo/fix/textCoord.ts
+++ b/src/coord/geo/fix/textCoord.ts
@@ -26,7 +26,7 @@ const coordsOffsetMap = {
'广东': [0, -10],
'香港': [10, 5],
'澳门': [-10, 10],
- //'北京': [-10, 0],
+ // '北京': [-10, 0],
'天津': [5, 5]
} as Dictionary;
diff --git a/src/coord/geo/geoTypes.ts b/src/coord/geo/geoTypes.ts
index db4477d9a7..b66cf6e182 100644
--- a/src/coord/geo/geoTypes.ts
+++ b/src/coord/geo/geoTypes.ts
@@ -76,7 +76,7 @@ type GeoJSONGeometry =
type GeoJSONGeometryCompressed =
// GeoJSONGeometryPoint
// | GeoJSONGeometryMultiPoint
- // Currenly only Polygon and MultiPolygon can be parsed from compression.
+ // Currently only Polygon and MultiPolygon can be parsed from compression.
| GeoJSONGeometryPolygonCompressed
| GeoJSONGeometryMultiPolygonCompressed
| GeoJSONGeometryLineStringCompressed
@@ -178,4 +178,4 @@ export interface GeoProjection {
* project will be ignored if projectStream is given.
*/
stream?(outStream: ProjectionStream): ProjectionStream
-}
\ No newline at end of file
+}
diff --git a/src/coord/parallel/Parallel.ts b/src/coord/parallel/Parallel.ts
index f8c472dad1..c694f55ff1 100644
--- a/src/coord/parallel/Parallel.ts
+++ b/src/coord/parallel/Parallel.ts
@@ -454,7 +454,7 @@ class Parallel implements CoordinateSystemMaster, CoordinateSystem {
return {behavior: 'none', axisExpandWindow: axisExpandWindow};
}
- // Conver the point from global to expand coordinates.
+ // Convert the point from global to expand coordinates.
const pointCoord = point[pixelDimIndex] - layoutInfo.layoutBase - layoutInfo.axisExpandWindow0Pos;
// For dragging operation convenience, the window should not be
diff --git a/src/coord/parallel/ParallelModel.ts b/src/coord/parallel/ParallelModel.ts
index 9044d313dd..edbe7c4846 100644
--- a/src/coord/parallel/ParallelModel.ts
+++ b/src/coord/parallel/ParallelModel.ts
@@ -70,7 +70,7 @@ class ParallelModel extends ComponentModel {
dimensions: DimensionName[];
/**
- * Coresponding to dimensions.
+ * Corresponding to dimensions.
*/
parallelAxisIndex: number[];
diff --git a/src/coord/scaleRawExtentInfo.ts b/src/coord/scaleRawExtentInfo.ts
index d0753cc985..52f6b8d062 100644
--- a/src/coord/scaleRawExtentInfo.ts
+++ b/src/coord/scaleRawExtentInfo.ts
@@ -80,7 +80,7 @@ export class ScaleRawExtentInfo {
}
/**
- * Parameters depending on ouside (like model, user callback)
+ * Parameters depending on outside (like model, user callback)
* are prepared and fixed here.
*/
private _prepareParams(
@@ -100,7 +100,7 @@ export class ScaleRawExtentInfo {
const modelMinRaw = this._modelMinRaw = model.get('min', true);
if (isFunction(modelMinRaw)) {
- // This callback alway provide users the full data extent (before data filtered).
+ // This callback always provides users the full data extent (before data is filtered).
this._modelMinNum = parseAxisModelMinMax(scale, modelMinRaw({
min: dataExtent[0],
max: dataExtent[1]
@@ -112,7 +112,7 @@ export class ScaleRawExtentInfo {
const modelMaxRaw = this._modelMaxRaw = model.get('max', true);
if (isFunction(modelMaxRaw)) {
- // This callback alway provide users the full data extent (before data filtered).
+ // This callback always provides users the full data extent (before data is filtered).
this._modelMaxNum = parseAxisModelMinMax(scale, modelMaxRaw({
min: dataExtent[0],
max: dataExtent[1]
@@ -285,7 +285,7 @@ const DATA_MIN_MAX_ATTR = { min: '_dataMin', max: '_dataMax' } as const;
* (3) `coordSys.update` use it to finally decide the scale extent.
* But the callback of `min`/`max` should not be called multiple times.
* The code below should not be implemented repeatedly either.
- * So we cache the result in the scale instance, which will be recreated at the begining
+ * So we cache the result in the scale instance, which will be recreated at the beginning
* of the workflow (because `scale` instance will be recreated each round of the workflow).
*/
export function ensureScaleRawExtentInfo(
diff --git a/src/core/CoordinateSystem.ts b/src/core/CoordinateSystem.ts
index 1e58d66478..b1f59222c3 100644
--- a/src/core/CoordinateSystem.ts
+++ b/src/core/CoordinateSystem.ts
@@ -31,8 +31,8 @@ class CoordinateSystemManager {
create(ecModel: GlobalModel, api: ExtensionAPI): void {
let coordinateSystems: CoordinateSystemMaster[] = [];
- zrUtil.each(coordinateSystemCreators, function (creater, type) {
- const list = creater.create(ecModel, api);
+ zrUtil.each(coordinateSystemCreators, function (creator, type) {
+ const list = creator.create(ecModel, api);
coordinateSystems = coordinateSystems.concat(list || []);
});
diff --git a/src/core/Scheduler.ts b/src/core/Scheduler.ts
index 4d67411a4c..745631111d 100644
--- a/src/core/Scheduler.ts
+++ b/src/core/Scheduler.ts
@@ -350,12 +350,12 @@ class Scheduler {
}
const performArgs: PerformArgs = scheduler.getPerformArgs(task, opt.block);
// FIXME
- // if intending to decalare `performRawSeries` in handlers, only
+ // if intending to declare `performRawSeries` in handlers, only
// stream-independent (specifically, data item independent) operations can be
- // performed. Because is a series is filtered, most of the tasks will not
+ // performed. Because if a series is filtered, most of the tasks will not
// be performed. A stream-dependent operation probably cause wrong biz logic.
// Perhaps we should not provide a separate callback for this case instead
- // of providing the config `performRawSeries`. The stream-dependent operaions
+ // of providing the config `performRawSeries`. The stream-dependent operations
// and stream-independent operations should better not be mixed.
performArgs.skip = !stageHandler.performRawSeries
&& ecModel.isSeriesFiltered(task.context.model);
@@ -499,8 +499,8 @@ class Scheduler {
// we set the pipeline block.
let errMsg = '';
if (__DEV__) {
- errMsg = '"createOnAllSeries" do not supported for "overallReset", '
- + 'becuase it will block all streams.';
+ errMsg = '"createOnAllSeries" is not supported for "overallReset", '
+ + 'because it will block all streams.';
}
assert(!stageHandler.createOnAllSeries, errMsg);
if (seriesType) {
@@ -509,10 +509,10 @@ class Scheduler {
else if (getTargetSeries) {
getTargetSeries(ecModel, api).each(createStub);
}
- // Otherwise, (usually it is legancy case), the overall task will only be
- // executed when upstream dirty. Otherwise the progressive rendering of all
+ // Otherwise, (usually it is legacy case), the overall task will only be
+ // executed when upstream is dirty. Otherwise the progressive rendering of all
// pipelines will be disabled unexpectedly. But it still needs stubs to receive
- // dirty info from upsteam.
+ // dirty info from upstream.
else {
overallProgress = false;
each(ecModel.getSeries(), createStub);
diff --git a/src/core/echarts.ts b/src/core/echarts.ts
index 65ac63f857..3724b48af5 100644
--- a/src/core/echarts.ts
+++ b/src/core/echarts.ts
@@ -152,7 +152,7 @@ const PRIORITY_PROCESSOR_SERIES_FILTER = 800;
// So data stack stage should be in front of data processing stage.
const PRIORITY_PROCESSOR_DATASTACK = 900;
// "Data filter" will block the stream, so it should be
-// put at the begining of data processing.
+// put at the beginning of data processing.
const PRIORITY_PROCESSOR_FILTER = 1000;
const PRIORITY_PROCESSOR_DEFAULT = 2000;
const PRIORITY_PROCESSOR_STATISTIC = 5000;
@@ -328,8 +328,8 @@ type EChartsInitOpts = {
useCoarsePointer?: boolean,
pointerSize?: number,
ssr?: boolean,
- width?: number,
- height?: number
+ width?: number | string,
+ height?: number | string
};
class ECharts extends Eventful {
@@ -541,8 +541,8 @@ class ECharts extends Eventful {
// Do not update coordinate system here. Because that coord system update in
// each frame is not a good user experience. So we follow the rule that
- // the extent of the coordinate system is determin in the first frame (the
- // frame is executed immedietely after task reset.
+ // the extent of the coordinate system is determined in the first frame (the
+ // frame is executed immediately after task reset.
// this._coordSysMgr.update(ecModel, api);
// console.log('--- ec frame visual ---', remainTime);
@@ -1382,9 +1382,9 @@ class ECharts extends Eventful {
this._zr.flush();
}
else if (flush !== false && env.browser.weChat) {
- // In WeChat embeded browser, `requestAnimationFrame` and `setInterval`
+ // In WeChat embedded browser, `requestAnimationFrame` and `setInterval`
// hang when sliding page (on touch event), which cause that zr does not
- // refresh util user interaction finished, which is not expected.
+ // refresh until user interaction finished, which is not expected.
// But `dispatchAction` may be called too frequently when pan on touch
// screen, which impacts performance if do not throttle them.
this._throttledZrFlush();
@@ -1474,7 +1474,7 @@ class ECharts extends Eventful {
: ecModel.eachSeries(doPrepare);
function doPrepare(model: ComponentModel): void {
- // By defaut view will be reused if possible for the case that `setOption` with "notMerge"
+ // By default view will be reused if possible for the case that `setOption` with "notMerge"
// mode and need to enable transition animation. (Usually, when they have the same id, or
// especially no id but have the same type & name & index. See the `model.id` generation
// rule in `makeIdAndName` and `viewId` generation rule here).
@@ -1677,20 +1677,20 @@ class ECharts extends Eventful {
// Undo (restoration of total ecModel) can be carried out in 'action' or outside API call.
// Create new coordinate system each update
- // In LineView may save the old coordinate system and use it to get the orignal point
+ // In LineView may save the old coordinate system and use it to get the original point.
coordSysMgr.create(ecModel, api);
scheduler.performDataProcessorTasks(ecModel, payload);
// Current stream render is not supported in data process. So we can update
// stream modes after data processing, where the filtered data is used to
- // deteming whether use progressive rendering.
+ // determine whether to use progressive rendering.
updateStreamModes(this, ecModel);
// We update stream modes before coordinate system updated, then the modes info
// can be fetched when coord sys updating (consider the barGrid extent fix). But
// the drawback is the full coord info can not be fetched. Fortunately this full
- // coord is not requied in stream mode updater currently.
+ // coord is not required in stream mode updater currently.
coordSysMgr.update(ecModel, api);
clearColorPalette(ecModel);
@@ -2019,8 +2019,8 @@ class ECharts extends Eventful {
ecIns.trigger('rendered', params);
- // The `finished` event should not be triggered repeatly,
- // so it should only be triggered when rendering indeed happend
+ // The `finished` event should not be triggered repeatedly,
+ // so it should only be triggered when rendering indeed happens
// in zrender. (Consider the case that dipatchAction is keep
// triggering when mouse move).
if (
@@ -2221,7 +2221,7 @@ class ECharts extends Eventful {
chartView.group.silent = !!seriesModel.get('silent');
// Should not call markRedraw on group, because it will disable zrender
- // increamental render (alway render from the __startIndex each frame)
+ // incremental render (always render from the __startIndex each frame)
// chartView.group.markRedraw();
updateBlend(seriesModel, chartView);
@@ -2335,7 +2335,7 @@ class ECharts extends Eventful {
chartView.eachRendered((el: Displayable) => {
// FIXME marker and other components
if (!el.isGroup) {
- // DONT mark the element dirty. In case element is incremental and don't wan't to rerender.
+ // DON'T mark the element dirty. In case element is incremental and don't want to rerender.
el.style.blend = blendMode;
}
});
@@ -2447,7 +2447,7 @@ class ECharts extends Eventful {
savePathStates(el);
}
- // Only updated on changed element. In case element is incremental and don't wan't to rerender.
+ // Only updated on changed element. In case element is incremental and don't want to rerender.
// TODO, a more proper way?
if (el.__dirty) {
const prevStates = el.prevStates;
@@ -2471,7 +2471,7 @@ class ECharts extends Eventful {
}
}
- // The use higlighted and selected flag to toggle states.
+ // Use highlighted and selected flag to toggle states.
if (el.__dirty) {
applyElementStates(el);
}
@@ -2734,7 +2734,7 @@ export function disConnect(groupId: string): void {
}
/**
- * Alias and backword compat
+ * Alias and backward compatibility
*/
export const disconnect = disConnect;
@@ -3016,7 +3016,7 @@ export const registerTransform = registerExternalTransform;
-// Buitlin global visual
+// Builtin global visual
registerVisual(PRIORITY_VISUAL_GLOBAL, seriesStyleTask);
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataStyleTask);
registerVisual(PRIORITY_VISUAL_CHART_DATA_CUSTOM, dataColorPaletteTask);
diff --git a/src/core/impl.ts b/src/core/impl.ts
index 4fecd09cc8..ffc8f21893 100644
--- a/src/core/impl.ts
+++ b/src/core/impl.ts
@@ -21,7 +21,7 @@ import { error } from '../util/log';
// Implementation of exported APIs. For example registerMap, getMap.
-// The implentations will be registered when installing the component.
+// The implementations will be registered when installing the component.
// Avoid these code being bundled to the core module.
const implsStore: Record = {};
@@ -43,4 +43,4 @@ export function getImpl(name: string) {
}
}
return implsStore[name];
-}
\ No newline at end of file
+}
diff --git a/src/core/task.ts b/src/core/task.ts
index 08d7e23ff6..6a25c1c127 100644
--- a/src/core/task.ts
+++ b/src/core/task.ts
@@ -331,11 +331,11 @@ export class Task {
}
setOutputEnd(end: number): void {
- // This only happend in dataTask, dataZoom, map, currently.
+ // This only happens in dataTask, dataZoom, map, currently.
// where dataZoom do not set end each time, but only set
- // when reset. So we should record the setted end, in case
+ // when reset. So we should record the set end, in case
// that the stub of dataZoom perform again and earse the
- // setted end by upstream.
+ // set end by upstream.
this._outputDueEnd = this._settedOutputEnd = end;
}
@@ -384,7 +384,7 @@ const iterator: TaskDataIterator = (function () {
-///////////////////////////////////////////////////////////
+// -----------------------------------------------------------------------------
// For stream debug (Should be commented out after used!)
// @usage: printTask(this, 'begin');
// @usage: printTask(this, null, {someExtraProp});
diff --git a/src/data/DataStore.ts b/src/data/DataStore.ts
index bb9dcf179c..abc3bb4b9e 100644
--- a/src/data/DataStore.ts
+++ b/src/data/DataStore.ts
@@ -91,7 +91,7 @@ export interface DataStoreDimensionDefine {
* For example, in `[{bb: 124, aa: 543}, ...]`, "aa" and "bb" is "object property".
*
* Deliberately name it as "property" rather than "name" to prevent it from been used in
- * SOURCE_FORMAT_ARRAY_ROWS, becuase if it comes from series, it probably
+ * SOURCE_FORMAT_ARRAY_ROWS, because if it comes from series, it probably
* can not be shared by different series.
*/
property?: string;
@@ -527,7 +527,7 @@ class DataStore {
}
/**
- * Retreive the index with given raw data index
+ * Retrieve the index with given raw data index.
*/
indexOfRawIndex(rawIndex: number): number {
if (rawIndex >= this._rawCount || rawIndex < 0) {
@@ -566,11 +566,11 @@ class DataStore {
/**
- * Retreive the index of nearest value
+ * Retrieve the index of nearest value.
* @param dim
* @param value
* @param [maxDistance=Infinity]
- * @return If and only if multiple indices has
+ * @return If and only if multiple indices have
* the same value, they are put to the result.
*/
indicesOfNearest(
diff --git a/src/data/SeriesData.ts b/src/data/SeriesData.ts
index 83421ccb53..9267177778 100644
--- a/src/data/SeriesData.ts
+++ b/src/data/SeriesData.ts
@@ -53,7 +53,7 @@ const map = zrUtil.map;
const CtorInt32Array = typeof Int32Array === 'undefined' ? Array : Int32Array;
// Use prefix to avoid index to be the same as otherIdList[idx],
-// which will cause weird udpate animation.
+// which will cause weird update animation.
const ID_PREFIX = 'e\0\0';
const INDEX_NOT_FOUND = -1;
@@ -159,12 +159,12 @@ class SeriesData<
* Name of dimensions list of SeriesData.
*
* @caution Carefully use the index of this array.
- * Becuase when DataStore is an extra high dimension(>30) dataset. We will only pick
+ * Because when DataStore is an extra high dimension(>30) dataset. We will only pick
* the used dimensions from DataStore to avoid performance issue.
*/
readonly dimensions: SeriesDimensionName[];
- // Infomation of each data dimension, like data type.
+ // Information of each data dimension, like data type.
private _dimInfos: Record;
private _dimOmitted = false;
@@ -192,7 +192,7 @@ class SeriesData<
/**
* @readonly
- * Host tree if List is used to store tree ndoes.
+ * Host tree if List is used to store tree nodes.
*/
tree?: Tree;
@@ -208,7 +208,7 @@ class SeriesData<
// Global visual properties after visual coding
private _visual: Dictionary = {};
- // Globel layout properties.
+ // Global layout properties.
private _layout: Dictionary = {};
// Item visual properties after visual coding
@@ -217,7 +217,7 @@ class SeriesData<
// Item layout properties after layout
private _itemLayouts: any[] = [];
- // Graphic elemnents
+ // Graphic elements
private _graphicEls: Element[] = [];
// key: dim, value: extent
@@ -357,7 +357,7 @@ class SeriesData<
* Because only those dimensions will have auto-generated dimension names if not
* have a user-specified name, and other dimensions will get a return of null/undefined.
*
- * @notice Becuause of this reason, should better use `getDimensionIndex` instead, for examples:
+ * @notice Because of this reason, should better use `getDimensionIndex` instead, for examples:
* ```js
* const val = data.getStore().get(data.getDimensionIndex(dim), dataIdx);
* ```
@@ -375,7 +375,7 @@ class SeriesData<
return this.dimensions[dimIdx];
}
- // Retrieve from series dimension definition becuase it probably contains
+ // Retrieve from series dimension definition because it probably contains
// generated dimension name (like 'x', 'y').
const dimName = this._dimIdxToName.get(dimIdx);
if (dimName != null) {
@@ -419,7 +419,7 @@ class SeriesData<
* + If there is the same concrete dim name defined in `series.dimensions` or `dataset.dimensions`,
* it means that concrete name.
* + If not, it will be converted to a number, which means the index of the dimension.
- * (why? because of the backward compatbility. We have been tolerating number-like string in
+ * (why? because of the backward compatibility. We have been tolerating number-like string in
* dimension setting, although now it seems that it is not a good idea.)
* For example, `visualMap[i].dimension: "1"` is the same meaning as `visualMap[i].dimension: 1`,
* if no dimension name is defined as `"1"`.
@@ -427,7 +427,7 @@ class SeriesData<
* For example, it can be be default name `"x"`, `"y"`, `"z"`, `"lng"`, `"lat"`, `"angle"`, `"radius"`,
* or customized in `dimensions` property of option like `"age"`.
*
- * @return recogonized `DimensionIndex`. Otherwise return null/undefined (means that dim is `DimensionName`).
+ * @return recognized `DimensionIndex`. Otherwise return null/undefined (means that dim is `DimensionName`).
*/
private _recognizeDimIndex(dim: DimensionLoose): DimensionIndex {
if (zrUtil.isNumber(dim)
@@ -447,7 +447,7 @@ class SeriesData<
const dimIdx = this.getDimensionIndex(dim);
if (__DEV__) {
if (dimIdx == null) {
- throw new Error('Unkown dimension ' + dim);
+ throw new Error('Unknown dimension ' + dim);
}
}
return dimIdx;
@@ -580,7 +580,7 @@ class SeriesData<
* [NaN, 43, 1],
* ['-', 'asdf', 0]
* ]
- * Each item is exaclty cooresponding to a dimension.
+ * Each item is exactly corresponding to a dimension.
*/
appendValues(values: any[][], names?: string[]): void {
const {start, end} = this._store.appendValues(values, names.length);
@@ -690,7 +690,7 @@ class SeriesData<
/**
* Calculate extent on a filtered data might be time consuming.
- * Approximate extent is only used for: calculte extent of filtered data outside.
+ * Approximate extent is only used for: calculate extent of filtered data outside.
*/
setApproximateExtent(extent: [number, number], dim: SeriesDimensionLoose): void {
dim = this.getDimension(dim);
@@ -723,7 +723,7 @@ class SeriesData<
}
/**
- * @return Never be null/undefined. `number` will be converted to string. Becuase:
+ * @return Never be null/undefined. `number` will be converted to string. Because:
* In most cases, name is used in display, where returning a string is more convenient.
* In other cases, name is used in query (see `indexOfName`), where we can keep the
* rule that name `2` equals to name `'2'`.
@@ -750,7 +750,7 @@ class SeriesData<
}
/**
- * @return Never null/undefined. `number` will be converted to string. Becuase:
+ * @return Never null/undefined. `number` will be converted to string. Because:
* In all cases having encountered at present, id is used in making diff comparison, which
* are usually based on hash map. We can keep the rule that the internal id are always string
* (treat `2` is the same as `'2'`) to make the related logic simple.
@@ -816,7 +816,7 @@ class SeriesData<
}
/**
- * If value is NaN. Inlcuding '-'
+ * If value is NaN. Including '-'
* Only check the coord dimensions.
*/
hasValue(idx: number): boolean {
@@ -833,7 +833,7 @@ class SeriesData<
}
/**
- * Retreive the index with given name
+ * Retrieve the index with given name
*/
indexOfName(name: string): number {
for (let i = 0, len = this._store.count(); i < len; i++) {
@@ -874,7 +874,7 @@ class SeriesData<
}
/**
- * Retreive the index of nearest value
+ * Retrieve the index of nearest value
* @param dim
* @param value
* @param [maxDistance=Infinity]
@@ -1069,8 +1069,8 @@ class SeriesData<
);
// If do shallow clone here, if there are too many stacked series,
- // it still cost lots of memory, becuase `_store.dimensions` are not shared.
- // We should consider there probably be shallow clone happen in each sereis
+ // it still cost lots of memory, because `_store.dimensions` are not shared.
+ // We should consider there probably be shallow clone happen in each series
// in consequent filter/map.
this._store.modify(
dimIndices,
@@ -1124,7 +1124,7 @@ class SeriesData<
*/
// TODO: Type of data item
getItemModel(idx: number): Model
> {
const hostModel = this.hostModel;
@@ -1433,7 +1433,7 @@ class SeriesData<
};
/**
- * Data in excludeDimensions is copied, otherwise transfered.
+ * Data in excludeDimensions is copied, otherwise transferred.
*/
cloneListForMapAndSample = function (original: SeriesData): SeriesData {
const list = new SeriesData(
diff --git a/src/data/Source.ts b/src/data/Source.ts
index a530a50811..7e27cc6aa8 100644
--- a/src/data/Source.ts
+++ b/src/data/Source.ts
@@ -319,7 +319,7 @@ function determineSourceDimensions(
let dimensionsDetectedCount;
let startIndex: number;
- // PEDING: could data be null/undefined here?
+ // PENDING: Could data be null/undefined here?
// currently, if `dataset.source` not specified, error thrown.
// if `series.data` not specified, nothing rendered without error thrown.
// Should test these cases.
@@ -415,7 +415,7 @@ function objectRowsCollectDimensions(data: OptionSourceDataObjectRows): Dimensio
// Consider dimensions defined like ['A', 'price', 'B', 'price', 'C', 'price'],
// which is reasonable. But dimension name is duplicated.
-// Returns undefined or an array contains only object without null/undefiend or string.
+// Returns undefined or an array contains only object without null/undefined or string.
function normalizeDimensionsOption(dimensionsDefine: DimensionDefinitionLoose[]): DimensionDefinition[] {
if (!dimensionsDefine) {
// The meaning of null/undefined is different from empty array.
@@ -432,8 +432,8 @@ function normalizeDimensionsOption(dimensionsDefine: DimensionDefinitionLoose[])
};
// User can set null in dimensions.
- // We dont auto specify name, othewise a given name may
- // cause it be refered unexpectedly.
+ // We don't auto specify name, otherwise a given name may
+ // cause it to be referred unexpectedly.
if (item.name == null) {
return item;
}
diff --git a/src/data/helper/SeriesDataSchema.ts b/src/data/helper/SeriesDataSchema.ts
index 67e9f1fc9a..975f92ba23 100644
--- a/src/data/helper/SeriesDataSchema.ts
+++ b/src/data/helper/SeriesDataSchema.ts
@@ -157,8 +157,8 @@ export class SeriesDataSchema {
// If retrieving data by index,
// use to determine whether data can be shared.
- // (Becuase in this case there might be no dimension name defined in dataset, but indices always exists).
- // (indices are always 0, 1, 2, ..., so we can ignore them to shorten the hash).
+ // (Because in this case there might be no dimension name defined in dataset, but indices always exists).
+ // (Indices are always 0, 1, 2, ..., so we can ignore them to shorten the hash).
// Otherwise if retrieving data by property name (like `data: [{aa: 123, bb: 765}, ...]`),
// use in hash.
if (willRetrieveDataByName
diff --git a/src/data/helper/createDimensions.ts b/src/data/helper/createDimensions.ts
index cd44440aa7..d480e43da7 100644
--- a/src/data/helper/createDimensions.ts
+++ b/src/data/helper/createDimensions.ts
@@ -114,7 +114,7 @@ export default function prepareSeriesDataSchema(
const resultList: SeriesDimensionDefine[] = [];
const dimCount = getDimCount(source, sysDims, dimsDef, opt.dimensionsCount);
- // Try to ignore unsed dimensions if sharing a high dimension datastore
+ // Try to ignore unused dimensions if sharing a high dimension datastore
// 30 is an experience value.
const omitUnusedDimensions = opt.canOmitUnusedDimensions && shouldOmitUnusedDimensions(dimCount);
@@ -142,7 +142,7 @@ export default function prepareSeriesDataSchema(
const userDimName = dimDefItem.name;
if (userDimName != null && dataDimNameMap.get(userDimName) != null) {
// Only if `series.dimensions` is defined in option
- // displayName, will be set, and dimension will be diplayed vertically in
+ // displayName, will be set, and dimension will be displayed vertically in
// tooltip by default.
resultItem.name = resultItem.displayName = userDimName;
}
@@ -188,7 +188,7 @@ export default function prepareSeriesDataSchema(
});
});
- // Apply templetes and default order from `sysDims`.
+ // Apply templates and default order from `sysDims`.
let availDimIdx = 0;
each(sysDims, function (sysDimItemRaw) {
let coordDim: DimensionName;
@@ -313,8 +313,8 @@ export default function prepareSeriesDataSchema(
// ]},
// series: {type: 'pie'}
// }
- // The first colum should better be treated as a "ordinal" although it
- // might not able to be detected as an "ordinal" by `guessOrdinal`.
+ // The first column should better be treated as a "ordinal" although it
+ // might not be detected as an "ordinal" by `guessOrdinal`.
|| (resultItem.isExtraCoord
&& (resultItem.otherDims.itemName != null
|| resultItem.otherDims.seriesName != null
@@ -368,7 +368,7 @@ function removeDuplication(result: SeriesDimensionDefine[]) {
// But
// (1) custom series should be considered. where other dims
// may be visited.
-// (2) sometimes user need to calcualte bubble size or use visualMap
+// (2) sometimes user need to calculate bubble size or use visualMap
// on other dimensions besides coordSys needed.
// So, dims that is not used by system, should be shared in data store?
function getDimCount(
@@ -399,10 +399,9 @@ function genCoordDimName(
map: HashMap,
fromZero: boolean
) {
- const mapData = map.data;
- if (fromZero || mapData.hasOwnProperty(name)) {
+ if (fromZero || map.hasKey(name)) {
let i = 0;
- while (mapData.hasOwnProperty(name + i)) {
+ while (map.hasKey(name + i)) {
i++;
}
name += i;
diff --git a/src/data/helper/dataProvider.ts b/src/data/helper/dataProvider.ts
index 37247edb2c..caf047fb91 100644
--- a/src/data/helper/dataProvider.ts
+++ b/src/data/helper/dataProvider.ts
@@ -399,7 +399,7 @@ export function getRawSourceDataCounter(
): RawSourceDataCounter {
const method = rawSourceDataCounterMap[getMethodMapKey(sourceFormat, seriesLayoutBy)];
if (__DEV__) {
- assert(method, 'Do not suppport count on "' + sourceFormat + '", "' + seriesLayoutBy + '".');
+ assert(method, 'Do not support count on "' + sourceFormat + '", "' + seriesLayoutBy + '".');
}
return method;
}
@@ -446,7 +446,7 @@ const rawSourceValueGetterMap: Partial unknown;
const valueParserMap = createHashMap({
'number': function (val): number {
- // Do not use `numericToNumber` here. We have by defualt `numericToNumber`.
+ // Do not use `numericToNumber` here. We have `numericToNumber` by default.
// Here the number parser can have loose rule:
// enable to cut suffix: "120px" => 120, "14%" => 14.
return parseFloat(val as string);
@@ -138,10 +138,10 @@ export class SortOrderComparator {
private _incomparable: number;
private _resultLT: -1 | 1;
/**
- * @param order by defualt: 'asc'
- * @param incomparable by defualt: Always on the tail.
+ * @param order by default: 'asc'
+ * @param incomparable by default: Always on the tail.
* That is, if 'asc' => 'max', if 'desc' => 'min'
- * See the definition of "incomparable" in [SORT_COMPARISON_RULE]
+ * See the definition of "incomparable" in [SORT_COMPARISON_RULE].
*/
constructor(order: 'asc' | 'desc', incomparable: 'min' | 'max') {
const isDesc = order === 'desc';
@@ -235,14 +235,14 @@ export type RelationalOperator = OrderRelationOperator | 'eq' | 'ne';
* "non-numeric-string" vs "others": "others" is treated as "incomparable".
* "incomparable" will be seen as -Infinity or Infinity (depends on the settings).
* MEMO:
- * non-numeric string sort make sence when need to put the items with the same tag together.
+ * Non-numeric string sort makes sense when we need to put the items with the same tag together.
* But if we support string sort, we still need to avoid the misleading like `'2' > '12'`,
* So we treat "numeric-string" sorted by number order rather than string comparison.
*
*
* [CHECK_LIST_OF_THE_RULE_DESIGN]
* + Do not support string comparison until required. And also need to
- * void the misleading of "2" > "12".
+ * avoid the misleading of "2" > "12".
* + Should avoid the misleading case:
* `" 22 " gte "22"` is `true` but `" 22 " eq "22"` is `false`.
* + JS bad case should be avoided: null <= 0, [] <= 0, ' ' <= 0, ...
diff --git a/src/data/helper/dimensionHelper.ts b/src/data/helper/dimensionHelper.ts
index e4d9899ca0..7a4276fafc 100644
--- a/src/data/helper/dimensionHelper.ts
+++ b/src/data/helper/dimensionHelper.ts
@@ -163,8 +163,8 @@ export function summarizeDimensions(
summary.encodeFirstDimNotExtra = encodeFirstDimNotExtra;
const encodeLabel = encode.label;
- // FIXME `encode.label` is not recommanded, because formatter can not be set
- // in this way. Use label.formatter instead. May be remove this approach someday.
+ // FIXME `encode.label` is not recommended, because formatter cannot be set
+ // in this way. Use label.formatter instead. Maybe remove this approach someday.
if (encodeLabel && encodeLabel.length) {
defaultedLabel = encodeLabel.slice();
}
diff --git a/src/data/helper/sourceHelper.ts b/src/data/helper/sourceHelper.ts
index e0ef9ddd0b..f0277d3a1d 100644
--- a/src/data/helper/sourceHelper.ts
+++ b/src/data/helper/sourceHelper.ts
@@ -148,9 +148,9 @@ export function makeSeriesEncodeForAxisCoordSys(
// ??? TODO give a better default series name rule?
// especially when encode x y specified.
- // consider: when mutiple series share one dimension
+ // consider: when multiple series share one dimension
// category axis, series name should better use
- // the other dimsion name. On the other hand, use
+ // the other dimension name. On the other hand, use
// both dimensions name.
}
// In category way, the first category axis.
@@ -274,8 +274,8 @@ export function makeSeriesEncodeForNameBased(
encode.value = [idxResult.v];
// `potentialNameDimIndex` has highest priority.
const nameDimIndex = potentialNameDimIndex != null ? potentialNameDimIndex : idxResult.n;
- // By default, label use itemName in charts.
- // So we dont set encodeLabel here.
+ // By default, label uses itemName in charts.
+ // So we don't set encodeLabel here.
encode.itemName = [nameDimIndex];
encode.seriesName = [nameDimIndex];
}
diff --git a/src/data/helper/sourceManager.ts b/src/data/helper/sourceManager.ts
index 611238a67f..254a3e2468 100644
--- a/src/data/helper/sourceManager.ts
+++ b/src/data/helper/sourceManager.ts
@@ -51,7 +51,7 @@ type DataStoreMap = Dictionary;
* (3) Transforms should specify `metaRawOption` in each output, just like they can be
* declared in `root-dataset`.
* (4) At present only support visit source in `SERIES_LAYOUT_BY_COLUMN` in transforms.
- * That is for reducing complexity in transfroms.
+ * That is for reducing complexity in transforms.
* PENDING: Whether to provide transposition transform?
*
* [IMPLEMENTAION_MEMO]:
@@ -236,7 +236,7 @@ export class SourceManager {
const dimensions = retrieve2(newMetaRawOption.dimensions, upMetaRawOption.dimensions);
// We share source with dataset as much as possible
- // to avoid extra memroy cost of high dimensional data.
+ // to avoid extra memory cost of high dimensional data.
const needsCreateSource = seriesLayoutBy !== upMetaRawOption.seriesLayoutBy
|| !!sourceHeader !== !!upMetaRawOption.sourceHeader
|| dimensions;
@@ -334,7 +334,7 @@ export class SourceManager {
return true;
}
- // All sourceList is from the some upsteam.
+ // All sourceList is from the some upstream.
const upSourceMgrList = this._getUpstreamSourceManagers();
for (let i = 0; i < upSourceMgrList.length; i++) {
const upSrcMgr = upSourceMgrList[i];
@@ -350,8 +350,8 @@ export class SourceManager {
}
/**
- * @param sourceIndex By defualt 0, means "main source".
- * Most cases there is only one source.
+ * @param sourceIndex By default 0, means "main source".
+ * In most cases there is only one source.
*/
getSource(sourceIndex?: number): Source {
sourceIndex = sourceIndex || 0;
@@ -423,13 +423,13 @@ export class SourceManager {
}
/**
- * PEDING: Is it fast enough?
+ * PENDING: Is it fast enough?
* If no upstream, return empty array.
*/
private _getUpstreamSourceManagers(): SourceManager[] {
// Always get the relationship from the raw option.
// Do not cache the link of the dependency graph, so that
- // no need to update them when change happen.
+ // there is no need to update them when change happens.
const sourceHost = this._sourceHost;
if (isSeries(sourceHost)) {
@@ -467,7 +467,7 @@ export class SourceManager {
}
// Call this method after `super.init` and `super.mergeOption` to
-// disable the transform merge, but do not disable transfrom clone from rawOption.
+// disable the transform merge, but do not disable transform clone from rawOption.
export function disableTransformOptionMerge(datasetModel: DatasetModel): void {
const transformOption = datasetModel.option.transform;
transformOption && setAsPrimitive(datasetModel.option.transform);
diff --git a/src/data/helper/transform.ts b/src/data/helper/transform.ts
index cfb2b188be..62bcea0b2d 100644
--- a/src/data/helper/transform.ts
+++ b/src/data/helper/transform.ts
@@ -95,8 +95,8 @@ export class ExternalSource {
* This instance is to be exposed to users.
* (1) DO NOT mount private members on this instance directly.
* If we have to use private members, we can make them in closure or use `makeInner`.
- * (2) "soruce header count" is not provided to transform, because it's complicated to manage
- * header and dimensions definition in each transfrom. Source header are all normalized to
+ * (2) "source header count" is not provided to transform, because it's complicated to manage
+ * header and dimensions definition in each transform. Source headers are all normalized to
* dimensions definitions in transforms and their downstreams.
*/
@@ -143,7 +143,7 @@ export class ExternalSource {
/**
* Only support by dimension index.
* No need to support by dimension name in transform function,
- * becuase transform function is not case-specific, no need to use name literally.
+ * because transform function is not case-specific, no need to use name literally.
*/
retrieveValue(dataIndex: number, dimIndex: DimensionIndex): OptionDataValue {
return;
@@ -180,8 +180,8 @@ function createExternalSource(internalSource: Source, externalTransform: Externa
// [MEMO]
// Create a new dimensions structure for exposing.
// Do not expose all dimension info to users directly.
- // Becuase the dimension is probably auto detected from data and not might reliable.
- // Should not lead the transformers to think that is relialbe and return it.
+ // Because the dimension is probably auto detected from data and not might reliable.
+ // Should not lead the transformers to think that is reliable and return it.
// See [DIMENSION_INHERIT_RULE] in `sourceManager.ts`.
const dimensions = [] as ExternalDimensionDefinition[];
const dimsByName = {} as Dictionary;
@@ -196,11 +196,11 @@ function createExternalSource(internalSource: Source, externalTransform: Externa
displayName: dimDef.displayName
};
dimensions.push(dimDefExt);
- // Users probably not sepcify dimension name. For simplicity, data transform
- // do not generate dimension name.
+ // Users probably do not specify dimension name. For simplicity, data transform
+ // does not generate dimension name.
if (name != null) {
// Dimension name should not be duplicated.
- // For simplicity, data transform forbid name duplication, do not generate
+ // For simplicity, data transform forbids name duplication, do not generate
// new name like module `completeDimensions.ts` did, but just tell users.
let errMsg = '';
if (hasOwn(dimsByName, name)) {
@@ -505,7 +505,7 @@ function applySingleDataTransform(
&& !result.dimensions
) {
const startIndex = firstUpSource.startIndex;
- // We copy the header of upstream to the result becuase:
+ // We copy the header of upstream to the result, because:
// (1) The returned data always does not contain header line and can not be used
// as dimension-detection. In this case we can not use "detected dimensions" of
// upstream directly, because it might be detected based on different `seriesLayoutBy`.
diff --git a/src/export/api.ts b/src/export/api.ts
index 4b777a2370..3c6e9d4b21 100644
--- a/src/export/api.ts
+++ b/src/export/api.ts
@@ -41,7 +41,7 @@ export {use} from '../extension';
export {setPlatformAPI} from 'zrender/src/core/platform';
-//////////////// Helper Methods /////////////////////
+// --------------------- Helper Methods ---------------------
export {default as parseGeoJSON} from '../coord/geo/parseGeoJson';
export {default as parseGeoJson} from '../coord/geo/parseGeoJson';
@@ -55,7 +55,7 @@ export * as util from './api/util';
export {default as env} from 'zrender/src/core/env';
-//////////////// Export for Exension Usage ////////////////
+// --------------------- Export for Extension Usage ---------------------
// export {SeriesData};
export {SeriesData as List}; // TODO: Compatitable with exists echarts-gl code
export {default as Model} from '../model/Model';
@@ -72,12 +72,12 @@ export {
export {brushSingle as innerDrawElementOnCanvas} from 'zrender/src/canvas/graphic';
-//////////////// Deprecated Extension Methods ////////////////
+// --------------------- Deprecated Extension Methods ---------------------
// Should use `ComponentModel.extend` or `class XXXX extend ComponentModel` to create class.
// Then use `registerComponentModel` in `install` parameter when `use` this extension. For example:
// class Bar3DModel extends ComponentModel {}
-// export function install(registers) { regsiters.registerComponentModel(Bar3DModel); }
+// export function install(registers) { registers.registerComponentModel(Bar3DModel); }
// echarts.use(install);
export function extendComponentModel(proto: object): ComponentModel {
const Model = (ComponentModel as ComponentModelConstructor).extend(proto) as any;
diff --git a/src/export/api/helper.ts b/src/export/api/helper.ts
index 3d63a7b140..92a4ddf66a 100644
--- a/src/export/api/helper.ts
+++ b/src/export/api/helper.ts
@@ -40,7 +40,7 @@ import { createTextStyle as innerCreateTextStyle } from '../../label/labelStyle'
import { DisplayState, TextCommonOption } from '../../util/types';
/**
- * Create a muti dimension List structure from seriesModel.
+ * Create a multi dimension List structure from seriesModel.
*/
export function createList(seriesModel: SeriesModel) {
return createSeriesData(null, seriesModel);
@@ -86,9 +86,9 @@ export function createScale(dataExtent: number[], option: object | AxisBaseModel
// FIXME
// Currently AxisModelCommonMixin has nothing to do with the
// the requirements of `axisHelper.createScaleByModel`. For
- // example the method `getCategories` and `getOrdinalMeta`
- // are required for `'category'` axis, and ecModel are required
- // for `'time'` axis. But occationally echarts-gl happened
+ // example the methods `getCategories` and `getOrdinalMeta`
+ // are required for `'category'` axis, and ecModel is required
+ // for `'time'` axis. But occasionally echarts-gl happened
// to only use `'value'` axis.
// zrUtil.mixin(axisModel, AxisModelCommonMixin);
}
@@ -103,7 +103,7 @@ export function createScale(dataExtent: number[], option: object | AxisBaseModel
/**
* Mixin common methods to axis model,
*
- * Inlcude methods
+ * Include methods
* `getFormattedLabels() => Array.`
* `getCategories() => Array.`
* `getMin(origin: boolean) => number`
@@ -127,4 +127,4 @@ export function createTextStyle(
) {
opts = opts || {};
return innerCreateTextStyle(textStyleModel, null, null, opts.state !== 'normal');
-}
\ No newline at end of file
+}
diff --git a/src/export/charts.ts b/src/export/charts.ts
index 1faf7c1b39..4356de9147 100644
--- a/src/export/charts.ts
+++ b/src/export/charts.ts
@@ -49,7 +49,7 @@ export {install as SunburstChart} from '../chart/sunburst/install';
export {install as CustomChart} from '../chart/custom/install';
-// // NOTE: Don't use XXXSeriesOption from 'option.ts' becuase they have been injected markPoint, markLine etc.
+// // NOTE: Don't use XXXSeriesOption from 'option.ts' because they have been injected markPoint, markLine etc.
// export {LineSeriesOption} from '../chart/line/LineSeries';
// export {BarSeriesOption} from '../chart/bar/BarSeries';
// export {ScatterSeriesOption} from '../chart/scatter/ScatterSeries';
@@ -96,4 +96,4 @@ export {
ThemeRiverSeriesOption,
SunburstSeriesOption,
CustomSeriesOption
-} from './option';
\ No newline at end of file
+} from './option';
diff --git a/src/export/core.ts b/src/export/core.ts
index 9c3107ecf1..c47986981c 100644
--- a/src/export/core.ts
+++ b/src/export/core.ts
@@ -30,7 +30,7 @@ use(installLabelLayout);
// Export necessary types
-export {ZRColor as Color, Payload} from '../util/types';
+export {ZRColor as Color, Payload, ECElementEvent} from '../util/types';
export {LinearGradientObject} from 'zrender/src/graphic/LinearGradient';
export {RadialGradientObject} from 'zrender/src/graphic/RadialGradient';
export {PatternObject, ImagePatternObject, SVGPatternObject} from 'zrender/src/graphic/Pattern';
@@ -115,4 +115,4 @@ export type ComposeOption =
ComposeUnitOption & {
baseOption?: ComposeUnitOption
options?: ComposeUnitOption[]
- };
\ No newline at end of file
+ };
diff --git a/src/i18n/langUA.ts b/src/i18n/langUK.ts
similarity index 100%
rename from src/i18n/langUA.ts
rename to src/i18n/langUK.ts
diff --git a/src/label/labelGuideHelper.ts b/src/label/labelGuideHelper.ts
index 13008a7642..fdb70665e1 100644
--- a/src/label/labelGuideHelper.ts
+++ b/src/label/labelGuideHelper.ts
@@ -321,7 +321,7 @@ function nearestPointOnPath(pt: Point, path: PathProxy, out: Point) {
return minDist;
}
-// Temporal varible for intermediate usage.
+// Temporal variable for intermediate usage.
const pt0 = new Point();
const pt1 = new Point();
const pt2 = new Point();
@@ -673,4 +673,4 @@ export function getLabelLineStatesModels
statesModels[stateName] = itemModel.getModel([stateName, labelLineName]);
}
return statesModels;
-}
\ No newline at end of file
+}
diff --git a/src/label/labelStyle.ts b/src/label/labelStyle.ts
index 622d574bed..007f080c4c 100644
--- a/src/label/labelStyle.ts
+++ b/src/label/labelStyle.ts
@@ -263,7 +263,7 @@ function setLabelStyle(
// PENDING: if there is many requirements that emphasis position
// need to be different from normal position, we might consider
- // auto slient is those cases.
+ // auto silent is those cases.
textContent.silent = !!normalModel.getShallow('silent');
// Keep x and y
if (textContent.style.x != null) {
diff --git a/src/layout/barGrid.ts b/src/layout/barGrid.ts
index 9ca8442e9a..726c084f82 100644
--- a/src/layout/barGrid.ts
+++ b/src/layout/barGrid.ts
@@ -347,7 +347,7 @@ function doCalBarWidthAndOffset(seriesInfoList: LayoutSeriesInfo[]) {
if (maxWidth && maxWidth < finalWidth) {
finalWidth = Math.min(maxWidth, remainedWidth);
}
- // `minWidth` has higher priority. `minWidth` decide that wheter the
+ // `minWidth` has higher priority. `minWidth` decide that whether the
// bar is able to be visible. So `minWidth` should not be restricted
// by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In
// the extreme cases for `value` axis, bars are allowed to overlap
@@ -363,7 +363,7 @@ function doCalBarWidthAndOffset(seriesInfoList: LayoutSeriesInfo[]) {
}
else {
// `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as
- // CSS does. Becuase barWidth can be a percent value, where
+ // CSS does. Because barWidth can be a percent value, where
// `barMaxWidth` can be used to restrict the final width.
let finalWidth = column.width;
if (maxWidth) {
diff --git a/src/layout/barPolar.ts b/src/layout/barPolar.ts
index bc63fcba99..48d8b4fa95 100644
--- a/src/layout/barPolar.ts
+++ b/src/layout/barPolar.ts
@@ -100,7 +100,7 @@ function barLayoutPolar(seriesType: string, ecModel: GlobalModel, api: Extension
const valueDim = data.mapDimension(valueAxis.dim);
const baseDim = data.mapDimension(baseAxis.dim);
- const stacked = isDimensionStacked(data, valueDim /*, baseDim*/);
+ const stacked = isDimensionStacked(data, valueDim /* , baseDim */);
const clampLayout = baseAxis.dim !== 'radius'
|| !seriesModel.get('roundCap', true);
diff --git a/src/model/Component.ts b/src/model/Component.ts
index e7728f0f1b..889159ff4d 100644
--- a/src/model/Component.ts
+++ b/src/model/Component.ts
@@ -50,7 +50,7 @@ const inner = makeInner<{
class ComponentModel extends Model {
- // [Caution]: Becuase this class or desecendants can be used as `XXX.extend(subProto)`,
+ // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`,
// the class members must not be initialized in constructor or declaration place.
// Otherwise there is bad case:
// class A {xxx = 1;}
@@ -72,10 +72,10 @@ class ComponentModel extends Mode
/**
* Because simplified concept is probably better, series.name (or component.name)
- * has been having too many resposibilities:
+ * has been having too many responsibilities:
* (1) Generating id (which requires name in option should not be modified).
* (2) As an index to mapping series when merging option or calling API (a name
- * can refer to more then one components, which is convinient is some case).
+ * can refer to more than one component, which is convenient is some cases).
* (3) Display.
* @readOnly But injected
*/
@@ -281,7 +281,7 @@ class ComponentModel extends Mode
getReferringComponents(mainType: ComponentMainType, opt: QueryReferringOpt): {
// Always be array rather than null/undefined, which is convenient to use.
models: ComponentModel[];
- // Whether target compoent specified
+ // Whether target component is specified
specified: boolean;
} {
const indexKey = (mainType + 'Index') as keyof Opt;
diff --git a/src/model/Global.ts b/src/model/Global.ts
index cadc98b20d..b845d7263d 100644
--- a/src/model/Global.ts
+++ b/src/model/Global.ts
@@ -164,7 +164,7 @@ class GlobalModel extends Model {
private _componentsMap: HashMap;
/**
- * `_componentsMap` might have "hole" becuase of remove.
+ * `_componentsMap` might have "hole" because of remove.
* So save components count for a certain mainType here.
*/
private _componentsCount: HashMap;
@@ -275,7 +275,7 @@ class GlobalModel extends Model {
// By design, if `setOption(option2)` at the second time, and `option2` is a `ECUnitOption`,
// it should better not have the same props with `MediaUnit['option']`.
- // Becuase either `option2` or `MediaUnit['option']` will be always merged to "current option"
+ // Because either `option2` or `MediaUnit['option']` will be always merged to "current option"
// rather than original "baseOption". If they both override a prop, the result might be
// unexpected when media state changed after `setOption` called.
// If we really need to modify a props in each `MediaUnit['option']`, use the full version
@@ -427,7 +427,7 @@ import { ${seriesImportName} } from 'echarts/charts';
echarts.use([${seriesImportName}]);`);
}
else {
- error(`Unkown series ${subType}`);
+ error(`Unknown series ${subType}`);
}
}
}
@@ -787,7 +787,7 @@ echarts.use([${seriesImportName}]);`);
/**
* After filtering, series may be different
- * frome raw series.
+ * from raw series.
*/
eachSeries(
cb: (this: T, series: SeriesModel, rawSeriesIndex: number) => void,
@@ -817,7 +817,7 @@ echarts.use([${seriesImportName}]);`);
/**
* After filtering, series may be different.
- * frome raw series.
+ * from raw series.
*/
eachSeriesByType(
subType: ComponentSubType,
@@ -921,8 +921,8 @@ echarts.use([${seriesImportName}]);`);
};
initBase = function (ecModel: GlobalModel, baseOption: ECUnitOption & AriaOptionMixin): void {
- // Using OPTION_INNER_KEY to mark that this option can not be used outside,
- // i.e. `chart.setOption(chart.getModel().option);` is forbiden.
+ // Using OPTION_INNER_KEY to mark that this option cannot be used outside,
+ // i.e. `chart.setOption(chart.getModel().option);` is forbidden.
ecModel.option = {} as ECUnitOption;
ecModel.option[OPTION_INNER_KEY] = OPTION_INNER_VALUE;
diff --git a/src/model/Model.ts b/src/model/Model.ts
index 54babe69f0..542123ce31 100644
--- a/src/model/Model.ts
+++ b/src/model/Model.ts
@@ -47,7 +47,7 @@ interface Model
extends LineStyleMixin, ItemStyleMixin, TextStyleMixin, AreaStyleMixin {}
class Model { // TODO: TYPE use unknown instead of any?
- // [Caution]: Becuase this class or desecendants can be used as `XXX.extend(subProto)`,
+ // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`,
// the class members must not be initialized in constructor or declaration place.
// Otherwise there is bad case:
// class A {xxx = 1;}
diff --git a/src/model/OptionManager.ts b/src/model/OptionManager.ts
index 21af55f54b..ef795ba58e 100644
--- a/src/model/OptionManager.ts
+++ b/src/model/OptionManager.ts
@@ -127,7 +127,7 @@ class OptionManager {
// the mapping can not be 100% consistent with ecModel, which probably brings
// potential bug!
- // The first merge is delayed, becuase in most cases, users do not call `setOption` twice.
+ // The first merge is delayed, because in most cases, users do not call `setOption` twice.
// let fakeCmptsMap = this._fakeCmptsMap;
// if (!fakeCmptsMap) {
// fakeCmptsMap = this._fakeCmptsMap = createHashMap();
@@ -140,7 +140,7 @@ class OptionManager {
// For simplicity, timeline options and media options do not support merge,
// that is, if you `setOption` twice and both has timeline options, the latter
- // timeline opitons will not be merged to the formers, but just substitude them.
+ // timeline options will not be merged to the former, but just substitute them.
if (newParsedOption.timelineOptions.length) {
optionBackup.timelineOptions = newParsedOption.timelineOptions;
}
@@ -392,10 +392,10 @@ function applyMediaQuery(query: MediaQuery, ecWidth: number, ecHeight: number):
const realMap = {
width: ecWidth,
height: ecHeight,
- aspectratio: ecWidth / ecHeight // lowser case for convenientce.
+ aspectratio: ecWidth / ecHeight // lower case for convenience.
};
- let applicatable = true;
+ let applicable = true;
each(query, function (value: number, attr) {
const matched = attr.match(QUERY_REG);
@@ -408,11 +408,11 @@ function applyMediaQuery(query: MediaQuery, ecWidth: number, ecHeight: number):
const realAttr = matched[2].toLowerCase();
if (!compare(realMap[realAttr as keyof typeof realMap], value, operator)) {
- applicatable = false;
+ applicable = false;
}
});
- return applicatable;
+ return applicable;
}
function compare(real: number, expect: number, operator: string): boolean {
@@ -449,9 +449,9 @@ function indicesEquals(indices1: number[], indices2: number[]): boolean {
* this might be the only simple way to implement that feature.
*
* MEMO: We've considered some other approaches:
- * 1. Each model handle its self restoration but not uniform treatment.
+ * 1. Each model handles its self restoration but not uniform treatment.
* (Too complex in logic and error-prone)
- * 2. Use a shadow ecModel. (Performace expensive)
+ * 2. Use a shadow ecModel. (Performance expensive)
*
* FIXME: A possible solution:
* Add a extra level of model for each component model. The inheritance chain would be:
diff --git a/src/model/Series.ts b/src/model/Series.ts
index 4c9b14186e..e2a5577b9e 100644
--- a/src/model/Series.ts
+++ b/src/model/Series.ts
@@ -57,6 +57,7 @@ import { defaultSeriesFormatTooltip } from '../component/tooltip/seriesFormatToo
import {ECSymbol} from '../util/symbol';
import {Group} from '../util/graphic';
import {LegendIconParams} from '../component/legend/LegendModel';
+import {dimPermutations} from '../component/marker/MarkAreaView';
const inner = modelUtil.makeInner<{
data: SeriesData
@@ -72,7 +73,7 @@ export const SERIES_UNIVERSAL_TRANSITION_PROP = '__universalTransitionEnabled';
interface SeriesModel {
/**
- * Convinient for override in extended class.
+ * Convenient for override in extended class.
* Implement it if needed.
*/
preventIncremental(): boolean;
@@ -99,7 +100,11 @@ interface SeriesModel {
/**
* Get position for marker
*/
- getMarkerPosition(value: ScaleDataValue[]): number[];
+ getMarkerPosition(
+ value: ScaleDataValue[],
+ dims?: typeof dimPermutations[number],
+ startingAtTick?: boolean
+ ): number[];
/**
* Get legend icon symbol according to each series type
@@ -122,7 +127,7 @@ interface SeriesModel {
class SeriesModel extends ComponentModel {
- // [Caution]: Becuase this class or desecendants can be used as `XXX.extend(subProto)`,
+ // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`,
// the class members must not be initialized in constructor or declaration place.
// Otherwise there is bad case:
// class A {xxx = 1;}
@@ -315,7 +320,7 @@ class SeriesModel extends ComponentMode
/**
* Init a data structure from data related option in series
- * Must be overriden.
+ * Must be overridden.
*/
getInitialData(option: Opt, ecModel: GlobalModel): SeriesData {
return;
@@ -422,7 +427,7 @@ class SeriesModel extends ComponentMode
/**
* Get base axis if has coordinate system and has axis.
* By default use coordSys.getBaseAxis();
- * Can be overrided for some chart.
+ * Can be overridden for some chart.
* @return {type} description
*/
getBaseAxis(): Axis {
@@ -611,7 +616,7 @@ class SeriesModel extends ComponentMode
const selectedMap = option.selectedMap;
for (let i = 0; i < len; i++) {
const dataIndex = innerDataIndices[i];
- // TODO diffrent types of data share same object.
+ // TODO different types of data share same object.
const nameOrId = getSelectionKey(data, dataIndex);
selectedMap[nameOrId] = true;
this._selectedDataIndicesMap[nameOrId] = data.getRawIndex(dataIndex);
diff --git a/src/model/internalComponentCreator.ts b/src/model/internalComponentCreator.ts
index ad8dfe5cc7..df53e66f2d 100644
--- a/src/model/internalComponentCreator.ts
+++ b/src/model/internalComponentCreator.ts
@@ -28,9 +28,9 @@ import { isComponentIdInternal } from '../util/model';
// It is added since echarts 3.
// (3) Why keep supporting "internal component" in global model rather than
// make each type components manage their models themselves?
-// Because a protential feature that reproduce a chart from a diffferent chart instance
-// might be useful in some BI analysis scenario, where the entire state need to be
-// retrieved from the current chart instance. So we'd bettern manage the all of the
+// Because a potential feature that reproduces a chart from a different chart instance
+// might be useful in some BI analysis scenario, where the entire state needs to be
+// retrieved from the current chart instance. So we'd better manage all of the
// state universally.
// (4) Internal component always merged in "replaceMerge" approach, that is, if the existing
// internal components does not matched by a new option with the same id, it will be
diff --git a/src/model/mixin/dataFormat.ts b/src/model/mixin/dataFormat.ts
index 76a8fff1c1..2c39816235 100644
--- a/src/model/mixin/dataFormat.ts
+++ b/src/model/mixin/dataFormat.ts
@@ -211,8 +211,8 @@ type TooltipFormatResult =
// compat it?
// type TooltipFormatResultLegacyObject = {
// // `html` means the markup language text, either in 'html' or 'richText'.
-// // The name `html` is not appropriate becuase in 'richText' it is not a HTML
-// // string. But still support it for backward compat.
+// // The name `html` is not appropriate because in 'richText' it is not a HTML
+// // string. But still support it for backward compatibility.
// html: string;
// markers: Dictionary;
// };
diff --git a/src/processor/dataStack.ts b/src/processor/dataStack.ts
index 824e630594..fb08154262 100644
--- a/src/processor/dataStack.ts
+++ b/src/processor/dataStack.ts
@@ -131,8 +131,8 @@ function calculateStack(stackInfoList: StackInfo[]) {
stackStrategy === 'all' // single stack group
|| (stackStrategy === 'positive' && val > 0)
|| (stackStrategy === 'negative' && val < 0)
- || (stackStrategy === 'samesign' && sum >= 0 && val > 0) // All positive stack
- || (stackStrategy === 'samesign' && sum <= 0 && val < 0) // All negative stack
+ || (stackStrategy === 'samesign' && sum > 0 && val > 0) // All positive stack
+ || (stackStrategy === 'samesign' && sum < 0 && val < 0) // All negative stack
) {
// The sum has to be very small to be affected by the
// floating arithmetic problem. An incorrect result will probably
diff --git a/src/scale/Interval.ts b/src/scale/Interval.ts
index 866051dcf2..3fc00cf142 100644
--- a/src/scale/Interval.ts
+++ b/src/scale/Interval.ts
@@ -79,8 +79,8 @@ class IntervalScale = Dictionary> e
setInterval(interval: number): void {
this._interval = interval;
- // Dropped auto calculated niceExtent and use user setted extent
- // We assume user wan't to set both interval, min, max to get a better result
+ // Dropped auto calculated niceExtent and use user-set extent.
+ // We assume user wants to set both interval, min, max to get a better result.
this._niceExtent = this._extent.slice() as [number, number];
this._intervalPrecision = helper.getIntervalPrecision(interval);
diff --git a/src/scale/Time.ts b/src/scale/Time.ts
index 5b097953e3..2458490b2e 100644
--- a/src/scale/Time.ts
+++ b/src/scale/Time.ts
@@ -18,7 +18,7 @@
*/
/*
-* A third-party license is embeded for some of the code in this file:
+* A third-party license is embedded for some of the code in this file:
* The "scaleLevels" was originally copied from "d3.js" with some
* modifications made for this project.
* (See more details in the comment on the definition of "scaleLevels" below.)
@@ -31,9 +31,9 @@
// [About UTC and local time zone]:
// In most cases, `number.parseDate` will treat input data string as local time
// (except time zone is specified in time string). And `format.formateTime` returns
-// local time by default. option.useUTC is false by default. This design have
-// concidered these common case:
-// (1) Time that is persistent in server is in UTC, but it is needed to be diplayed
+// local time by default. option.useUTC is false by default. This design has
+// considered these common cases:
+// (1) Time that is persistent in server is in UTC, but it is needed to be displayed
// in local time by default.
// (2) By default, the input data string (e.g., '2011-01-02') should be displayed
// as its original time, without any time difference.
@@ -371,7 +371,7 @@ function isUnitValueSame(
function getDateInterval(approxInterval: number, daysInMonth: number) {
approxInterval /= ONE_DAY;
return approxInterval > 16 ? 16
- // Math.floor(daysInMonth / 2) + 1 // In this case we only want one tick betwen two month.
+ // Math.floor(daysInMonth / 2) + 1 // In this case we only want one tick between two months.
: approxInterval > 7.5 ? 7 // TODO week 7 or day 8?
: approxInterval > 3.5 ? 4
: approxInterval > 1.5 ? 2 : 1;
diff --git a/src/util/ECEventProcessor.ts b/src/util/ECEventProcessor.ts
index 3b1e20e088..a0d8e91a20 100644
--- a/src/util/ECEventProcessor.ts
+++ b/src/util/ECEventProcessor.ts
@@ -145,7 +145,7 @@ export class ECEventProcessor implements EventProcessor {
}
afterTrigger() {
- // Make sure the eventInfo wont be used in next trigger.
+ // Make sure the eventInfo won't be used in next trigger.
this.eventInfo = null;
}
};
diff --git a/src/util/KDTree.ts b/src/util/KDTree.ts
index e769acbf0a..0f521b04a8 100644
--- a/src/util/KDTree.ts
+++ b/src/util/KDTree.ts
@@ -42,10 +42,10 @@ class KDTreeNode {
* @constructor
* @alias module:echarts/data/KDTree
* @param {Array} points List of points.
- * each point needs an array property to repesent the actual data
+ * each point needs an array property to represent the actual data
* @param {Number} [dimension]
* Point dimension.
- * Default will use the first point's length as dimensiont
+ * Default will use the first point's length as dimension.
*/
class KDTree {
@@ -76,7 +76,7 @@ class KDTree {
}
/**
- * Resursively build the tree
+ * Recursively build the tree.
*/
private _buildTree(points: T[], left: number, right: number, axis: number): KDTreeNode {
if (right < left) {
@@ -284,4 +284,4 @@ class KDTree {
}
-export default KDTree;
\ No newline at end of file
+export default KDTree;
diff --git a/src/util/clazz.ts b/src/util/clazz.ts
index b340fdb624..06249ab0b5 100644
--- a/src/util/clazz.ts
+++ b/src/util/clazz.ts
@@ -185,12 +185,12 @@ export function enableClassCheck(target: CheckableConstructor): void {
};
}
-// superCall should have class info, which can not be fetch from 'this'.
+// superCall should have class info, which can not be fetched from 'this'.
// Consider this case:
// class A has method f,
// class B inherits class A, overrides method f, f call superApply('f'),
-// class C inherits class B, do not overrides method f,
-// then when method of class C is called, dead loop occured.
+// class C inherits class B, does not override method f,
+// then when method of class C is called, dead loop occurred.
function superCall(this: any, context: any, methodName: string, ...args: any): any {
return this.superClass.prototype[methodName].apply(context, args);
}
@@ -242,11 +242,11 @@ export function enableClassManagement(
clz: Constructor
): Constructor {
- // `type` should not be a "instance memeber".
+ // `type` should not be a "instance member".
// If using TS class, should better declared as `static type = 'series.pie'`.
// otherwise users have to mount `type` on prototype manually.
// For backward compat and enable instance visit type via `this.type`,
- // we stil support fetch `type` from prototype.
+ // we still support fetch `type` from prototype.
const componentFullType = (clz as any).type || clz.prototype.type;
if (componentFullType) {
diff --git a/src/util/conditionalExpression.ts b/src/util/conditionalExpression.ts
index 9cbb36863f..9f7a613578 100644
--- a/src/util/conditionalExpression.ts
+++ b/src/util/conditionalExpression.ts
@@ -30,17 +30,17 @@ import {
// PENDING:
// (1) Support more parser like: `parser: 'trim'`, `parser: 'lowerCase'`, `parser: 'year'`, `parser: 'dayOfWeek'`?
-// (2) Support piped parser ?
+// (2) Support piped parser?
// (3) Support callback parser or callback condition?
-// (4) At present do not support string expression yet but only stuctured expression.
+// (4) At present do not support string expression yet but only structured expression.
/**
* The structured expression considered:
* (1) Literal simplicity
- * (2) Sementic displayed clearly
+ * (2) Semantic displayed clearly
*
- * Sementic supports:
+ * Semantic supports:
* (1) relational expression
* (2) logical expression
*
@@ -148,8 +148,8 @@ const RELATIONAL_EXPRESSION_OP_ALIAS_MAP = {
'!=': 'ne',
'<>': 'ne'
- // Might mileading for sake of the different between '==' and '===',
- // So dont support them.
+ // Might be misleading for sake of the difference between '==' and '===',
+ // so don't support them.
// '==': 'eq',
// '===': 'seq',
// '!==': 'sne'
diff --git a/src/util/decal.ts b/src/util/decal.ts
index 83d6772b15..8304762389 100644
--- a/src/util/decal.ts
+++ b/src/util/decal.ts
@@ -155,7 +155,7 @@ export function createOrUpdatePatternFromDecal(
(pattern as SVGPatternObject).svgHeight = pSize.height;
/**
- * Get minumum length that can make a repeatable pattern.
+ * Get minimum length that can make a repeatable pattern.
*
* @return {Object} pattern width and height
*/
@@ -169,7 +169,7 @@ export function createOrUpdatePatternFromDecal(
* |-- -- -- -- -- -- -- -- ...
* |--- --- --- --- --- ...
* |-- -- -- -- -- -- -- -- ...
- * So the minumum length of X is 15,
+ * So the minimum length of X is 15,
* which is the least common multiple of `3 + 2` and `2 + 1`
* |--- --- --- |--- --- ...
* |-- -- -- -- -- |-- -- -- ...
@@ -417,7 +417,7 @@ function normalizeDashArrayY(dash: DecalDashArrayY): number[] {
* For example, a line with [4, 1] has a dash line of 4 and a space of 1 after
* that, so the block length of this line is 5.
*
- * @param {number[][]} dash dash arrary of X or Y
+ * @param {number[][]} dash dash array of X or Y
* @return {number[]} block length of each line
*/
function getLineBlockLengthX(dash: number[][]): number[] {
diff --git a/src/util/format.ts b/src/util/format.ts
index 8aa00685ad..afe9625b42 100644
--- a/src/util/format.ts
+++ b/src/util/format.ts
@@ -212,7 +212,7 @@ export function getTooltipMarker(inOpt: ColorString | GetTooltipMarkerOpt, extra
else {
// Should better not to auto generate style name by auto-increment number here.
// Because this util is usually called in tooltip formatter, which is probably
- // called repeatly when mouse move and the auto-increment number increases fast.
+ // called repeatedly when mouse move and the auto-increment number increases fast.
// Users can make their own style name by theirselves, make it unique and readable.
const markerId = opt.markerId || 'markerX';
return {
diff --git a/src/util/graphic.ts b/src/util/graphic.ts
index 0c09c04fae..70ad6d8b83 100644
--- a/src/util/graphic.ts
+++ b/src/util/graphic.ts
@@ -142,10 +142,10 @@ export function registerShape(name: string, ShapeClass: {new(): Path}) {
* (2) In the features like `custom series`, `graphic component`, the user input
* `{tpye: 'xxx'}` does not only specify shapes but also specify other graphic
* elements like `'group'`, `'text'`, `'image'` or event `'path'`. Those names
- * are reserved names, that is, if some user register a shape named `'image'`,
+ * are reserved names, that is, if some user registers a shape named `'image'`,
* the shape will not be used. If we intending to add some more reserved names
* in feature, that might bring break changes (disable some existing user shape
- * names). But that case probably rearly happen. So we dont make more mechanism
+ * names). But that case probably rarely happens. So we don't make more mechanism
* to resolve this issue here.
*
* @param name
@@ -430,8 +430,8 @@ export function groupTransition(
}
export function clipPointsByRect(points: vector.VectorArray[], rect: ZRRectLike): number[][] {
- // FIXME: this way migth be incorrect when grpahic clipped by a corner.
- // and when element have border.
+ // FIXME: This way might be incorrect when graphic clipped by a corner
+ // and when element has a border.
return map(points, function (point) {
let x = point[0];
x = mathMax(x, rect.x);
@@ -527,7 +527,7 @@ export function lineLineIntersect(
const ny = b2y - b1y;
// `vec_m` and `vec_n` are parallel iff
- // exising `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.
+ // existing `k` such that `vec_m = k · vec_n`, equivalent to `vec_m X vec_n = 0`.
const nmCrossProduct = crossProduct2d(nx, ny, mx, my);
if (nearZero(nmCrossProduct)) {
return false;
@@ -634,7 +634,7 @@ export function traverseElements(els: Element | Element[] | undefined | null, cb
}
}
-// Register built-in shapes. These shapes might be overwirtten
+// Register built-in shapes. These shapes might be overwritten
// by users, although we do not recommend that.
registerShape('circle', Circle);
registerShape('ellipse', Ellipse);
@@ -669,4 +669,4 @@ export {
OrientedBoundingRect,
Point,
Path
-};
\ No newline at end of file
+};
diff --git a/src/util/layout.ts b/src/util/layout.ts
index 1c30e72948..31445d83e0 100644
--- a/src/util/layout.ts
+++ b/src/util/layout.ts
@@ -302,13 +302,13 @@ export function getLayoutRect(
* Logic:
* 1. Scale (against origin point in parent coord)
* 2. Rotate (against origin point in parent coord)
- * 3. Traslate (with el.position by this method)
- * So this method only fixes the last step 'Traslate', which does not affect
+ * 3. Translate (with el.position by this method)
+ * So this method only fixes the last step 'Translate', which does not affect
* scaling and rotating.
*
- * If be called repeatly with the same input el, the same result will be gotten.
+ * If be called repeatedly with the same input el, the same result will be gotten.
*
- * Return true if the layout happend.
+ * Return true if the layout happened.
*
* @param el Should have `getBoundingRect` method.
* @param positionInfo
diff --git a/src/util/model.ts b/src/util/model.ts
index 3fa332a02b..7b6ca499dd 100644
--- a/src/util/model.ts
+++ b/src/util/model.ts
@@ -132,9 +132,9 @@ export const TEXT_STYLE_OPTIONS = [
// ]);
/**
- * The method do not ensure performance.
+ * The method does not ensure performance.
* data could be [12, 2323, {value: 223}, [1221, 23], {value: [2, 23]}]
- * This helper method retieves value from data.
+ * This helper method retrieves value from data.
*/
export function getDataItemValue(
dataItem: OptionDataItem
@@ -154,8 +154,8 @@ export function isDataItemOption(dataItem: OptionDataItem): boolean {
// && !(dataItem[0] && isObject(dataItem[0]) && !(dataItem[0] instanceof Array));
}
-// Compatible with previous definition: id could be number (but not recommanded).
-// number and string are trade the same when compare.
+// Compatible with previous definition: id could be number (but not recommended).
+// number and string are treated the same when compared.
// number id will not be converted to string in option.
// number id will be converted to string in component instance id.
export interface MappingExistingItem {
@@ -201,17 +201,17 @@ type MappingToExistsMode = 'normalMerge' | 'replaceMerge' | 'replaceAll';
*
* Mode "replaceMege":
* (1) Only the id mapped components will be merged.
- * (2) Other existing components (except internal compoonets) will be removed.
+ * (2) Other existing components (except internal components) will be removed.
* (3) Other new options will be used to create new component.
- * (4) The index of the existing compoents will not be modified.
+ * (4) The index of the existing components will not be modified.
* That means their might be "hole" after the removal.
* The new components are created first at those available index.
*
* Mode "replaceAll":
* This mode try to support that reproduce an echarts instance from another
* echarts instance (via `getOption`) in some simple cases.
- * In this senario, the `result` index are exactly the consistent with the `newCmptOptions`,
- * which ensures the compoennt index referring (like `xAxisIndex: ?`) corrent. That is,
+ * In this scenario, the `result` index are exactly the consistent with the `newCmptOptions`,
+ * which ensures the component index referring (like `xAxisIndex: ?`) corrent. That is,
* the "hole" in `newCmptOptions` will also be kept.
* On the contrary, other modes try best to eliminate holes.
* PENDING: This is an experimental mode yet.
@@ -270,7 +270,7 @@ export function mappingToExists(
makeIdAndName(result);
// The array `result` MUST NOT contain elided items, otherwise the
- // forEach will ommit those items and result in incorrect result.
+ // forEach will omit those items and result in incorrect result.
return result;
}
@@ -286,7 +286,7 @@ function prepareResult(
}
// Do not use native `map` to in case that the array `existings`
- // contains elided items, which will be ommited.
+ // contains elided items, which will be omitted.
for (let index = 0; index < existings.length; index++) {
const existing = existings[index];
// Because of replaceMerge, `existing` may be null/undefined.
@@ -423,7 +423,7 @@ function mappingInReplaceAllMode(
): void {
each(newCmptOptions, function (cmptOption) {
// The feature "reproduce" requires "hole" will also reproduced
- // in case that compoennt index referring are broken.
+ // in case that component index referring are broken.
result.push({
newOption: cmptOption,
brandNew: true,
@@ -482,7 +482,7 @@ function makeIdAndName(
return;
}
- // name can be overwitten. Consider case: axis.name = '20km'.
+ // Name can be overwritten. Consider case: axis.name = '20km'.
// But id generated by name will not be changed, which affect
// only in that case: setOption with 'not merge mode' and view
// instance will be recreated, which can be accepted.
@@ -490,7 +490,7 @@ function makeIdAndName(
? makeComparableKey(opt.name)
: existing
? existing.name
- // Avoid diffferent series has the same name,
+ // Avoid that different series has the same name,
// because name may be used like in color pallet.
: DUMMY_COMPONENT_NAME_PREFIX + index;
@@ -912,7 +912,7 @@ export const SINGLE_REFERRING: QueryReferringOpt = { useDefault: true, enableAll
export const MULTIPLE_REFERRING: QueryReferringOpt = { useDefault: false, enableAll: true, enableNone: true };
export type QueryReferringOpt = {
- // Whether to use the first componet as the default if none of index/id/name are specified.
+ // Whether to use the first component as the default if none of index/id/name are specified.
useDefault?: boolean;
// Whether to enable `'all'` on index option.
enableAll?: boolean;
@@ -1093,4 +1093,4 @@ export function interpolateRawValues(
}
return interpolated;
}
-}
\ No newline at end of file
+}
diff --git a/src/util/number.ts b/src/util/number.ts
index bf5b2562f0..cd6f42994b 100644
--- a/src/util/number.ts
+++ b/src/util/number.ts
@@ -18,7 +18,7 @@
*/
/*
-* A third-party license is embeded for some of the code in this file:
+* A third-party license is embedded for some of the code in this file:
* The method "quantile" was copied from "d3.js".
* (See more details in the comment of the method below.)
* The use of the source code of this file is also subject to the terms
@@ -220,7 +220,7 @@ export function getPixelPrecision(dataExtent: [number, number], pixelExtent: [nu
/**
* Get a data of given precision, assuring the sum of percentages
* in valueList is 1.
- * The largest remainer method is used.
+ * The largest remainder method is used.
* https://en.wikipedia.org/wiki/Largest_remainder_method
*
* @param valueList a list of all data
@@ -241,7 +241,7 @@ export function getPercentWithPrecision(valueList: number[], idx: number, precis
/**
* Get a data of given precision, assuring the sum of percentages
* in valueList is 1.
- * The largest remainer method is used.
+ * The largest remainder method is used.
* https://en.wikipedia.org/wiki/Largest_remainder_method
*
* @param valueList a list of all data
@@ -342,7 +342,7 @@ const TIME_REG = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(
* + time zone: '2012-03-01T12:22:33Z', '2012-03-01T12:22:33+8000', '2012-03-01T12:22:33-05:00',
* all of which will be treated as local time if time zone is not specified
* (see ).
- * + Or other string format, including (all of which will be treated as loacal time):
+ * + Or other string format, including (all of which will be treated as local time):
* '2012', '2012-3-1', '2012/3/1', '2012/03/01',
* '2009/6/12 2:00', '2009/6/12 2:05:08', '2009/6/12 2:05:08.123'
* + a timestamp, which represent a time in UTC.
@@ -365,7 +365,7 @@ export function parseDate(value: unknown): Date {
return new Date(NaN);
}
- // Use local time when no timezone offset specifed.
+ // Use local time when no timezone offset is specified.
if (!match[8]) {
// match[n] can only be string or undefined.
// But take care of '12' + 1 => '121'.
@@ -583,7 +583,7 @@ export function reformIntervals(list: IntervalItem[]): IntervalItem[] {
}
/**
- * [Numberic is defined as]:
+ * [Numeric is defined as]:
* `parseFloat(val) == val`
* For example:
* numeric:
@@ -623,7 +623,7 @@ export function getRandomIdBase(): number {
}
/**
- * Get the greatest common dividor
+ * Get the greatest common divisor.
*
* @param {number} a one number
* @param {number} b the other number
@@ -636,7 +636,7 @@ export function getGreatestCommonDividor(a: number, b: number): number {
}
/**
- * Get the least common multiple
+ * Get the least common multiple.
*
* @param {number} a one number
* @param {number} b the other number
diff --git a/src/util/states.ts b/src/util/states.ts
index f3886cd78a..1748ef6f72 100644
--- a/src/util/states.ts
+++ b/src/util/states.ts
@@ -209,7 +209,7 @@ export function setStatesFlag(el: ECElement, stateName: DisplayState) {
/**
* If we reuse elements when rerender.
- * DONT forget to clearStates before we update the style and shape.
+ * DON'T forget to clearStates before we update the style and shape.
* Or we may update on the wrong state instead of normal state.
*/
export function clearStates(el: Element) {
@@ -239,7 +239,7 @@ function getFromStateStyle(
for (let i = 0; i < el.animators.length; i++) {
const animator = el.animators[i];
if (animator.__fromStateTransition
- // Dont consider the animation to emphasis state.
+ // Don't consider the animation to emphasis state.
&& animator.__fromStateTransition.indexOf(toStateName) < 0
&& animator.targetName === 'style') {
animator.saveTo(fromState, props);
@@ -365,7 +365,8 @@ function elementStateProxy(this: Displayable, stateName: string, targetStates?:
}
return state;
}
-/**FI
+
+/**
* Set hover style (namely "emphasis style") of element.
* @param el Should not be `zrender/graphic/Group`.
* @param focus 'self' | 'selfInSeries' | 'series'
@@ -842,7 +843,7 @@ export function setStatesStylesFromModel(
/**
*
* Set element as highlight / downplay dispatcher.
- * It will be checked when element recieved mouseover event or from highlight action.
+ * It will be checked when element received mouseover event or from highlight action.
* It's in change of all highlight/downplay behavior of it's children.
*
* @param el
@@ -898,9 +899,9 @@ export function enableComponentHighDownFeatures(
}
/**
- * Support hightlight/downplay record on each elements.
+ * Support highlight/downplay record on each elements.
* For the case: hover highlight/downplay (legend, visualMap, ...) and
- * user triggerred hightlight/downplay should not conflict.
+ * user triggered highlight/downplay should not conflict.
* Only all of the highlightDigit cleared, return to normal.
* @param {string} highlightKey
* @return {number} highlightDigit
diff --git a/src/util/styleCompat.ts b/src/util/styleCompat.ts
index d70a6017c9..32bf54bdcd 100644
--- a/src/util/styleCompat.ts
+++ b/src/util/styleCompat.ts
@@ -43,7 +43,7 @@ export function isEC4CompatibleStyle(
// So we provide:
// `legacy: true` force make compat.
// `legacy: false`, force do not compat.
- // `legacy` not set: auto detect wheter legacy.
+ // `legacy` not set: auto detect whether legacy.
// But in this case we do not compat (difficult to detect and rare case):
// Becuse custom series and graphic component support "merge", users may firstly
// only set `textStrokeWidth` style or secondly only set `text`.
@@ -63,7 +63,7 @@ export function isEC4CompatibleStyle(
/**
* `EC4CompatibleStyle` is style that might be in echarts4 format or echarts5 format.
* @param hostStyle The properties might be modified.
- * @return If be text el, `textContentStyle` and `textConfig` will not be retured.
+ * @return If be text el, `textContentStyle` and `textConfig` will not be returned.
* Otherwise a `textContentStyle` and `textConfig` will be created, whose props area
* retried from the `hostStyle`.
*/
@@ -93,11 +93,11 @@ export function convertFromEC4CompatibleStyle(hostStyle: ZRStyleProps, elType: s
textContent = {
type: 'text',
style: textContentStyle,
- // ec4 do not support rectText trigger.
- // And when text postion is different in normal and emphasis
+ // ec4 does not support rectText trigger.
+ // And when text position is different in normal and emphasis
// => hover text trigger emphasis;
// => text position changed, leave mouse pointer immediately;
- // That might cause state incorrect.
+ // That might cause incorrect state.
silent: true
};
textConfig = {};
@@ -138,7 +138,7 @@ function convertEC4CompatibleRichItem(out: TextStylePropsPart, richItem: Diction
// on a rect means `borderColor: 4` on the rect and `borderColor: 10` on an attached
// richText in ec5.
// (2) `out === richItem` if and only if `out` is text el or rich item.
- // So we can overwite existing props in `out` since textXXX has higher priority.
+ // So we can overwrite existing props in `out` since textXXX has higher priority.
richItem.font = richItem.textFont || richItem.font;
hasOwn(richItem, 'textStrokeWidth') && (out.lineWidth = richItem.textStrokeWidth);
hasOwn(richItem, 'textAlign') && (out.align = richItem.textAlign);
diff --git a/src/util/symbol.ts b/src/util/symbol.ts
index 602ea48e5c..fed92641e5 100644
--- a/src/util/symbol.ts
+++ b/src/util/symbol.ts
@@ -171,7 +171,7 @@ const Arrow = graphic.Path.extend({
});
/**
- * Map of path contructors
+ * Map of path constructors
*/
// TODO Use function to build symbol path.
const symbolCtors: Dictionary = {
diff --git a/src/util/types.ts b/src/util/types.ts
index 3e9eb31cf5..56c7b6983b 100644
--- a/src/util/types.ts
+++ b/src/util/types.ts
@@ -357,7 +357,7 @@ export type OrdinalNumber = number; // The number mapped from each OrdinalRawVal
* ```js
* { ordinalNumbers: [2, 5, 3, 4] }
* ```
- * means that ordinal 2 should be diplayed on tick 0,
+ * means that ordinal 2 should be displayed on tick 0,
* ordinal 5 should be displayed on tick 1, ...
*/
export type OrdinalSortInfo = {
@@ -411,7 +411,7 @@ export interface OrdinalScaleTick extends ScaleTick {
* const coord = dataToCoord(ordinalScale.getRawOrdinalNumber(tick.value)).
* ```
* Why place the tick value here rather than the raw ordinal value (like LogScale did)?
- * Becuase ordinal scale sort is the different case from LogScale, where
+ * Because ordinal scale sort is the different case from LogScale, where
* axis tick, splitArea should better not to be sorted, especially in
* anid(animation id) when `boundaryGap: true`.
* Only axis label are sorted.
@@ -517,7 +517,7 @@ export type SeriesDataType = 'main' | 'node' | 'edge';
* ```
*/
export type ECUnitOption = {
- // Exclude these reserverd word for `ECOption` to avoid to infer to "any".
+ // Exclude these reserved word for `ECOption` to avoid to infer to "any".
baseOption?: unknown
options?: unknown
media?: unknown
@@ -758,7 +758,8 @@ export type ComponentLayoutMode = {
type?: 'box',
ignoreSize?: boolean | boolean[]
};
-/******************* Mixins for Common Option Properties ********************** */
+
+// ------------------ Mixins for Common Option Properties ------------------
export type PaletteOptionMixin = ColorPaletteOptionMixin;
export interface ColorPaletteOptionMixin {
@@ -1113,12 +1114,12 @@ export interface SeriesLineLabelOption extends LineLabelOption {
export interface LabelLayoutOptionCallbackParams {
/**
* Index of data which the label represents.
- * It can be null if label does't represent any data.
+ * It can be null if label doesn't represent any data.
*/
dataIndex?: number,
/**
* Type of data which the label represents.
- * It can be null if label does't represent any data.
+ * It can be null if label doesn't represent any data.
*/
dataType?: SeriesDataType,
seriesIndex: number,
@@ -1332,7 +1333,7 @@ export type ComponentItemTooltipOption = CommonTooltipOption & {
export type ComponentItemTooltipLabelFormatterParams = {
componentType: string
name: string
- // properies key array like ['name']
+ // properties key array like ['name']
$vars: string[]
} & {
// Other properties
@@ -1374,7 +1375,7 @@ export interface CommonAxisPointerOption {
triggerTooltip?: boolean
/**
- * current value. When using axisPointer.handle, value can be set to define the initail position of axisPointer.
+ * current value. When using axisPointer.handle, value can be set to define the initial position of axisPointer.
*/
value?: ScaleDataValue
diff --git a/src/view/Chart.ts b/src/view/Chart.ts
index bb4639915d..734dece866 100644
--- a/src/view/Chart.ts
+++ b/src/view/Chart.ts
@@ -97,7 +97,7 @@ interface ChartView {
}
class ChartView {
- // [Caution]: Becuase this class or desecendants can be used as `XXX.extend(subProto)`,
+ // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`,
// the class members must not be initialized in constructor or declaration place.
// Otherwise there is bad case:
// class A {xxx = 1;}
diff --git a/src/view/Component.ts b/src/view/Component.ts
index ed7fa8ef37..9b1309fb57 100644
--- a/src/view/Component.ts
+++ b/src/view/Component.ts
@@ -62,7 +62,7 @@ interface ComponentView {
class ComponentView {
- // [Caution]: Becuase this class or desecendants can be used as `XXX.extend(subProto)`,
+ // [Caution]: Because this class or desecendants can be used as `XXX.extend(subProto)`,
// the class members must not be initialized in constructor or declaration place.
// Otherwise there is bad case:
// class A {xxx = 1;}
diff --git a/src/visual/VisualMapping.ts b/src/visual/VisualMapping.ts
index f964e3fb0a..7610bd235a 100644
--- a/src/visual/VisualMapping.ts
+++ b/src/visual/VisualMapping.ts
@@ -44,7 +44,7 @@ type NormalizedValue = number;
type MappingMethod = 'linear' | 'piecewise' | 'category' | 'fixed';
-// May include liftZ. wich is not provided to developers.
+// May include liftZ. which is not provided to developers.
interface Normalizer {
(this: VisualMapping, value?: RawValue): NormalizedValue
@@ -361,7 +361,7 @@ class VisualMapping {
}
/**
- * Convinent method.
+ * Convenient method.
* Visual can be Object or Array or primary type.
*/
static eachVisual(
diff --git a/src/visual/aria.ts b/src/visual/aria.ts
index 4c1b823f55..7237c36cdd 100644
--- a/src/visual/aria.ts
+++ b/src/visual/aria.ts
@@ -64,7 +64,7 @@ export default function ariaVisual(ecModel: GlobalModel, api: ExtensionAPI) {
const useDecal = decalModel.get('show');
if (useDecal) {
// Each type of series use one scope.
- // Pie and funnel are using diferrent scopes
+ // Pie and funnel are using different scopes.
const paletteScopeGroupByType = zrUtil.createHashMap