feat: basic workflow
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+node_modules
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..3410e80
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,7 @@
+{
+ "tabWidth": 2,
+ "semi": true,
+ "singleQuote": true,
+ "trailingComma": "none",
+ "printWidth": 80
+}
diff --git a/package-lock.json b/package-lock.json
index 5c1f012..af8bb1e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1248,9 +1248,955 @@
}
},
"echarts-wordcloud": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz",
- "integrity": "sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g=="
+ "version": "file:../echarts-wordcloud",
+ "dependencies": {
+ "@discoveryjs/json-ext": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz",
+ "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg=="
+ },
+ "@types/eslint": {
+ "version": "7.2.6",
+ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz",
+ "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==",
+ "requires": {
+ "@types/estree": "*",
+ "@types/json-schema": "*"
+ }
+ },
+ "@types/eslint-scope": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz",
+ "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==",
+ "requires": {
+ "@types/eslint": "*",
+ "@types/estree": "*"
+ }
+ },
+ "@types/estree": {
+ "version": "0.0.45",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.45.tgz",
+ "integrity": "sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g=="
+ },
+ "@types/json-schema": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
+ "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw=="
+ },
+ "@types/node": {
+ "version": "14.14.20",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz",
+ "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A=="
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.1.tgz",
+ "integrity": "sha512-uMu1nCWn2Wxyy126LlGqRVlhdTOsO/bsBRI4dNq3+6SiSuRKRQX6ejjKgh82LoGAPSq72lDUiQ4FWVaf0PecYw==",
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.9.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.1",
+ "@webassemblyjs/wast-parser": "1.9.1"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.1.tgz",
+ "integrity": "sha512-5VEKu024RySmLKTTBl9q1eO/2K5jk9ZS+2HXDBLA9s9p5IjkaXxWiDb/+b7wSQp6FRdLaH1IVGIfOex58Na2pg=="
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.1.tgz",
+ "integrity": "sha512-y1lGmfm38djrScwpeL37rRR9f1D6sM8RhMpvM7CYLzOlHVboouZokXK/G88BpzW0NQBSvCCOnW5BFhten4FPfA=="
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.1.tgz",
+ "integrity": "sha512-uS6VSgieHbk/m4GSkMU5cqe/5TekdCzQso4revCIEQ3vpGZgqSSExi4jWpTWwDpAHOIAb1Jfrs0gUB9AA4n71w=="
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.1.tgz",
+ "integrity": "sha512-ZQ2ZT6Evk4DPIfD+92AraGYaFIqGm4U20e7FpXwl7WUo2Pn1mZ1v8VGH8i+Y++IQpxPbQo/UyG0Khs7eInskzA==",
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.9.1"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.1.tgz",
+ "integrity": "sha512-J32HGpveEqqcKFS0YbgicB0zAlpfIxJa5MjxDxhu3i5ltPcVfY5EPvKQ1suRguFPehxiUs+/hfkwPEXom/l0lw=="
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.1.tgz",
+ "integrity": "sha512-IEH2cMmEQKt7fqelLWB5e/cMdZXf2rST1JIrzWmf4XBt3QTxGdnnLvV4DYoN8pJjOx0VYXsWg+yF16MmJtolZg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.1.tgz",
+ "integrity": "sha512-i2rGTBqFUcSXxyjt2K4vm/3kkHwyzG6o427iCjcIKjOqpWH8SEem+xe82jUk1iydJO250/CvE5o7hzNAMZf0dQ=="
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.1.tgz",
+ "integrity": "sha512-FetqzjtXZr2d57IECK+aId3D0IcGweeM0CbAnJHkYJkcRTHP+YcMb7Wmc0j21h5UWBpwYGb9dSkK/93SRCTrGg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/helper-buffer": "1.9.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.1",
+ "@webassemblyjs/wasm-gen": "1.9.1"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.1.tgz",
+ "integrity": "sha512-EvTG9M78zP1MmkBpUjGQHZc26DzPGZSLIPxYHCjQsBMo60Qy2W34qf8z0exRDtxBbRIoiKa5dFyWer/7r1aaSQ==",
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.1.tgz",
+ "integrity": "sha512-Oc04ub0vFfLnF+2/+ki3AE+anmW4sv9uNBqb+79fgTaPv6xJsOT0dhphNfL3FrME84CbX/D1T9XT8tjFo0IIiw==",
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.1.tgz",
+ "integrity": "sha512-llkYtppagjCodFjo0alWOUhAkfOiQPQDIc5oA6C9sFAXz7vC9QhZf/f8ijQIX+A9ToM3c9Pq85X0EX7nx9gVhg=="
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.1.tgz",
+ "integrity": "sha512-S2IaD6+x9B2Xi8BCT0eGsrXXd8UxAh2LVJpg1ZMtHXnrDcsTtIX2bDjHi40Hio6Lc62dWHmKdvksI+MClCYbbw==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/helper-buffer": "1.9.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.1",
+ "@webassemblyjs/helper-wasm-section": "1.9.1",
+ "@webassemblyjs/wasm-gen": "1.9.1",
+ "@webassemblyjs/wasm-opt": "1.9.1",
+ "@webassemblyjs/wasm-parser": "1.9.1",
+ "@webassemblyjs/wast-printer": "1.9.1"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.1.tgz",
+ "integrity": "sha512-bqWI0S4lBQsEN5FTZ35vYzfKUJvtjNnBobB1agCALH30xNk1LToZ7Z8eiaR/Z5iVECTlBndoRQV3F6mbEqE/fg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.1",
+ "@webassemblyjs/ieee754": "1.9.1",
+ "@webassemblyjs/leb128": "1.9.1",
+ "@webassemblyjs/utf8": "1.9.1"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.1.tgz",
+ "integrity": "sha512-gSf7I7YWVXZ5c6XqTEqkZjVs8K1kc1k57vsB6KBQscSagDNbAdxt6MwuJoMjsE1yWY1tsuL+pga268A6u+Fdkg==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/helper-buffer": "1.9.1",
+ "@webassemblyjs/wasm-gen": "1.9.1",
+ "@webassemblyjs/wasm-parser": "1.9.1"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.1.tgz",
+ "integrity": "sha512-ImM4N2T1MEIond0MyE3rXvStVxEmivQrDKf/ggfh5pP6EHu3lL/YTAoSrR7shrbKNPpeKpGesW1LIK/L4kqduw==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/helper-api-error": "1.9.1",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.1",
+ "@webassemblyjs/ieee754": "1.9.1",
+ "@webassemblyjs/leb128": "1.9.1",
+ "@webassemblyjs/utf8": "1.9.1"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.1.tgz",
+ "integrity": "sha512-2xVxejXSvj3ls/o2TR/zI6p28qsGupjHhnHL6URULQRcXmryn3w7G83jQMcT7PHqUfyle65fZtWLukfdLdE7qw==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/floating-point-hex-parser": "1.9.1",
+ "@webassemblyjs/helper-api-error": "1.9.1",
+ "@webassemblyjs/helper-code-frame": "1.9.1",
+ "@webassemblyjs/helper-fsm": "1.9.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.1.tgz",
+ "integrity": "sha512-tDV8V15wm7mmbAH6XvQRU1X+oPGmeOzYsd6h7hlRLz6QpV4Ec/KKxM8OpLtFmQPLCreGxTp+HuxtH4pRIZyL9w==",
+ "requires": {
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/wast-parser": "1.9.1",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webpack-cli/info": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz",
+ "integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==",
+ "requires": {
+ "envinfo": "^7.7.3"
+ }
+ },
+ "@webpack-cli/serve": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.1.tgz",
+ "integrity": "sha512-Zj1z6AyS+vqV6Hfi7ngCjFGdHV5EwZNIHo6QfFTNe9PyW+zBU1zJ9BiOW1pmUEq950RC4+Dym6flyA/61/vhyw=="
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="
+ },
+ "acorn": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz",
+ "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ=="
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+ },
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
+ },
+ "browserslist": {
+ "version": "4.16.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz",
+ "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001173",
+ "colorette": "^1.2.1",
+ "electron-to-chromium": "^1.3.634",
+ "escalade": "^3.1.1",
+ "node-releases": "^1.1.69"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001173",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001173.tgz",
+ "integrity": "sha512-R3aqmjrICdGCTAnSXtNyvWYMK3YtV5jwudbq0T7nN9k4kmE4CBuwPqyJ+KBzepSTh0huivV2gLbSMEzTTmfeYw=="
+ },
+ "chrome-trace-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "colorette": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
+ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw=="
+ },
+ "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=="
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "echarts": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.0.1.tgz",
+ "integrity": "sha512-JYn22Dolt2esY2jEzUsw1OxbobuW67oGjIoTjZO3rW89SWkfJ4kbrmC2OW9JjsBrD1rdkmaWBuZZ2HgmThyxJw==",
+ "requires": {
+ "tslib": "2.0.3",
+ "zrender": "5.0.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+ }
+ }
+ },
+ "electron-to-chromium": {
+ "version": "1.3.634",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.634.tgz",
+ "integrity": "sha512-QPrWNYeE/A0xRvl/QP3E0nkaEvYUvH3gM04ZWYtIa6QlSpEetRlRI1xvQ7hiMIySHHEV+mwDSX8Kj4YZY6ZQAw=="
+ },
+ "enhanced-resolve": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.4.1.tgz",
+ "integrity": "sha512-4GbyIMzYktTFoRSmkbgZ1LU+RXwf4AQ8Z+rSuuh1dC8plp0PPeaWvx6+G4hh4KnUJ48VoxKbNyA1QQQIUpXjYA==",
+ "requires": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.2.0"
+ }
+ },
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ }
+ },
+ "envinfo": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz",
+ "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA=="
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+ },
+ "events": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz",
+ "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg=="
+ },
+ "execa": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
+ "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "fastest-levenshtein": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
+ "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
+ },
+ "find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "requires": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "get-stream": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz",
+ "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg=="
+ },
+ "glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
+ },
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
+ },
+ "import-local": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
+ "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
+ "requires": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ }
+ }
+ },
+ "interpret": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
+ "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
+ },
+ "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==",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+ },
+ "jest-worker": {
+ "version": "26.6.2",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
+ "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
+ "requires": {
+ "@types/node": "*",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^7.0.0"
+ }
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "loader-runner": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.1.0.tgz",
+ "integrity": "sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA=="
+ },
+ "locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "requires": {
+ "p-locate": "^5.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "mime-db": {
+ "version": "1.45.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz",
+ "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w=="
+ },
+ "mime-types": {
+ "version": "2.1.28",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz",
+ "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==",
+ "requires": {
+ "mime-db": "1.45.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ },
+ "node-releases": {
+ "version": "1.1.69",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.69.tgz",
+ "integrity": "sha512-DGIjo79VDEyAnRlfSqYTsy+yoHd2IOjJiKUozD2MV2D85Vso6Bug56mb9tT/fY5Urt0iqk01H7x+llAruDR2zA=="
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "requires": {
+ "yocto-queue": "^0.1.0"
+ }
+ },
+ "p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "requires": {
+ "p-limit": "^3.0.2"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
+ "pkg-dir": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
+ "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
+ "requires": {
+ "find-up": "^5.0.0"
+ }
+ },
+ "prettier": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz",
+ "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg=="
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "rechoir": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
+ "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
+ "requires": {
+ "resolve": "^1.9.0"
+ }
+ },
+ "resolve": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+ "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
+ "requires": {
+ "is-core-module": "^2.1.0",
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "requires": {
+ "resolve-from": "^5.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ },
+ "schema-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
+ "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
+ "requires": {
+ "@types/json-schema": "^7.0.6",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "serialize-javascript": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
+ "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+ },
+ "signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw=="
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-support": {
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "tapable": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz",
+ "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw=="
+ },
+ "terser": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz",
+ "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==",
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.7.2",
+ "source-map-support": "~0.5.19"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
+ "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz",
+ "integrity": "sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==",
+ "requires": {
+ "jest-worker": "^26.6.1",
+ "p-limit": "^3.0.2",
+ "schema-utils": "^3.0.0",
+ "serialize-javascript": "^5.0.1",
+ "source-map": "^0.6.1",
+ "terser": "^5.3.8"
+ }
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "uri-js": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
+ "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "v8-compile-cache": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
+ "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q=="
+ },
+ "watchpack": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz",
+ "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==",
+ "requires": {
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.1.2"
+ }
+ },
+ "webpack": {
+ "version": "5.11.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.11.1.tgz",
+ "integrity": "sha512-tNUIdAmYJv+nupRs/U/gqmADm6fgrf5xE+rSlSsf2PgsGO7j2WG7ccU6AWNlOJlHFl+HnmXlBmHIkiLf+XA9mQ==",
+ "requires": {
+ "@types/eslint-scope": "^3.7.0",
+ "@types/estree": "^0.0.45",
+ "@webassemblyjs/ast": "1.9.1",
+ "@webassemblyjs/helper-module-context": "1.9.1",
+ "@webassemblyjs/wasm-edit": "1.9.1",
+ "@webassemblyjs/wasm-parser": "1.9.1",
+ "acorn": "^8.0.4",
+ "browserslist": "^4.14.5",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.3.1",
+ "eslint-scope": "^5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.4",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^4.1.0",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "pkg-dir": "^5.0.0",
+ "schema-utils": "^3.0.0",
+ "tapable": "^2.1.1",
+ "terser-webpack-plugin": "^5.0.3",
+ "watchpack": "^2.0.0",
+ "webpack-sources": "^2.1.1"
+ }
+ },
+ "webpack-cli": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.3.1.tgz",
+ "integrity": "sha512-/F4+9QNZM/qKzzL9/06Am8NXIkGV+/NqQ62Dx7DSqudxxpAgBqYn6V7+zp+0Y7JuWksKUbczRY3wMTd+7Uj6OA==",
+ "requires": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/info": "^1.2.1",
+ "@webpack-cli/serve": "^1.2.1",
+ "colorette": "^1.2.1",
+ "commander": "^6.2.0",
+ "enquirer": "^2.3.6",
+ "execa": "^5.0.0",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^2.2.0",
+ "rechoir": "^0.7.0",
+ "v8-compile-cache": "^2.2.0",
+ "webpack-merge": "^4.2.2"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA=="
+ }
+ }
+ },
+ "webpack-merge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "webpack-sources": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz",
+ "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==",
+ "requires": {
+ "source-list-map": "^2.0.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
+ },
+ "zrender": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.0.3.tgz",
+ "integrity": "sha512-TVcN2IMdo7je3GEq/E4CER4AGBe/n50/izILdupppyHf/hVHuiXCRliqdu8+32Z1OmGg6RfKt5qQlkX+bOtU0g==",
+ "requires": {
+ "tslib": "2.0.3"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+ "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+ }
+ }
+ }
+ }
},
"element-plus": {
"version": "1.0.2-beta.71",
diff --git a/package.json b/package.json
index 172408f..1ba51f0 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
},
"dependencies": {
"echarts": "^5.2.2",
- "echarts-wordcloud": "^2.0.0",
+ "echarts-wordcloud": "file:../echarts-wordcloud",
"element-plus": "^1.0.2-beta.44",
"lodash": "^4.17.19",
"vue": "^3.0.11",
diff --git a/src/App.vue b/src/App.vue
index 75e8f66..bd3ffef 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -6,7 +6,7 @@
</h3>
<el-tabs type="card" v-model="activeName">
<el-tab-pane label="样式" name="config">
- <WConfig ref="wconfig"></WConfig>
+ <WConfig ref="wconfig" @change="onChange"></WConfig>
</el-tab-pane>
<el-tab-pane label="数据" name="data">
<WData ref="wdata" @change="onChange"></WData>
@@ -36,7 +36,7 @@
const activeName = 'config';
function onChange() {
- wchart.value?.run(wdata.value?.data);
+ wchart.value?.run(wdata.value?.data, wconfig.value?.getConfig());
}
setTimeout(() => {
diff --git a/src/components/WChart.vue b/src/components/WChart.vue
index 183452b..f351378 100644
--- a/src/components/WChart.vue
+++ b/src/components/WChart.vue
@@ -1,10 +1,9 @@
<template>
- <div>
- <div class="chart" ref="chartRef">aaa</div>
- </div>
+ <div>
+ <div class="chart" ref="chartRef">aaa</div>
+ </div>
</template>
-
<script setup lang="ts">
import { onMounted, shallowRef, ref } from 'vue';
import * as echarts from 'echarts';
@@ -17,28 +16,54 @@
const chartRef = ref<HTMLElement | null>(null);
defineExpose({
- run
+ run
});
-function run(data?: []) {
- chart.value!.setOption({
- series: [{
- type: 'wordCloud',
- data: data || []
- }]
- });
+type Config = {
+ hue: number[];
+ saturation: number[];
+ lightness: number[];
+ alpha: number[];
+ fontFamily: string;
+ fontSize: number[];
+ rotate: number[];
+ width: number;
+ height: number;
+ shape: string;
};
+function run(data?: [], config?: Config) {
+ config && console.log(config.width, config.height);
+ chart.value!.setOption({
+ series: [
+ {
+ type: 'wordCloud',
+ data: data || [],
+ // gridSize: 0,
+ sizeRange: config?.fontSize,
+ rotationRange: config?.rotate,
+ shape: config?.shape,
+ width: config?.width + '%',
+ height: config?.height + '%',
+ layoutAnimation: true,
+ keepAspect: true
+ }
+ ],
+ textStyle: {
+ fontFamily: config?.fontFamily
+ }
+ });
+}
+
onMounted(() => {
- chart.value = echarts.init(chartRef.value!);
+ chart.value = echarts.init(chartRef.value!);
});
</script>
-
<style scoped lang="scss">
.chart {
- border: 1px solid #f2eef2;
- width: 800px;
- height: 600px;
+ border: 1px solid #f2eef2;
+ width: 800px;
+ height: 600px;
}
</style>
diff --git a/src/components/WConfig.vue b/src/components/WConfig.vue
index cbd37c5..1085151 100644
--- a/src/components/WConfig.vue
+++ b/src/components/WConfig.vue
@@ -1,7 +1,7 @@
<template>
- <el-collapse>
- <el-collapse-item title="颜色" name="color">
- <!-- <h4>基础色</h4>
+ <el-collapse>
+ <el-collapse-item title="颜色" name="color">
+ <!-- <h5>基础色</h5>
<div>
<el-color-picker
v-for="(color, index) in themeColors"
@@ -18,129 +18,313 @@
</div>
</div> -->
- <h4>色相范围</h4>
- <el-row>
- <el-col :span="22" :offset="1">
- <el-slider
- v-model="hue"
- range
- show-tooltip
- :max="1"
- :step="0.05"
- input-size="medium"
- >
- </el-slider>
- </el-col>
- </el-row>
+ <h5>色相范围</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="hue"
+ range
+ show-tooltip
+ :max="1"
+ :step="0.05"
+ input-size="medium"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
- <h4>饱和度范围</h4>
- <el-row>
- <el-col :span="22" :offset="1">
- <el-slider
- v-model="saturation"
- range
- show-tooltip
- :max="1"
- :step="0.05"
- input-size="medium"
- >
- </el-slider>
- </el-col>
- </el-row>
+ <h5>饱和度范围</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="saturation"
+ range
+ show-tooltip
+ :max="1"
+ :step="0.05"
+ input-size="medium"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
- <h4>亮度范围</h4>
- <el-row>
- <el-col :span="22" :offset="1">
- <el-slider
- v-model="lightness"
- range
- show-tooltip
- :max="1"
- :step="0.05"
- input-size="medium"
- >
- </el-slider>
- </el-col>
- </el-row>
+ <h5>亮度范围</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="lightness"
+ range
+ show-tooltip
+ :max="1"
+ :step="0.05"
+ input-size="medium"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
- <h4>透明度范围</h4>
- <el-row>
- <el-col :span="22" :offset="1">
- <el-slider
- v-model="alpha"
- range
- show-tooltip
- :max="1"
- :step="0.05"
- input-size="medium"
- >
- </el-slider>
- </el-col>
- </el-row>
- </el-collapse-item>
+ <h5>透明度范围</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="alpha"
+ range
+ show-tooltip
+ :max="1"
+ :step="0.05"
+ input-size="medium"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
+ </el-collapse-item>
- <el-collapse-item title="文字" name="font">
- <!-- <h4>字体</h4> -->
- <el-row>
- <el-col :span="12">
- <el-label>字体</el-label>
- </el-col>
- <el-col :span="12">
- </el-col>
- </el-row>
+ <el-collapse-item title="文字" name="font">
+ <el-row>
+ <el-col :span="12">
+ <h5>字体</h5>
+ </el-col>
+ <el-col :span="12">
+ <el-select
+ v-model="selectedFontFamily"
+ placeholder="请选择字体"
+ @change="changeFontFamily"
+ >
+ <el-option
+ v-for="item in fontFamilies"
+ :key="item"
+ :label="item"
+ :value="item"
+ >
+ </el-option>
+ </el-select>
+ </el-col>
+ </el-row>
- </el-collapse-item>
- </el-collapse>
+ <h5>字号范围</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="fontSize"
+ range
+ show-tooltip
+ :max="100"
+ :step="1"
+ input-size="medium"
+ @change="change"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
+
+ <h5>旋转范围</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="rotate"
+ range
+ show-tooltip
+ :min="-180"
+ :max="180"
+ :step="45"
+ input-size="medium"
+ @change="change"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
+ </el-collapse-item>
+
+ <el-collapse-item title="形状" name="mask">
+ <h5>宽度(百分比)</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="width"
+ show-tooltip
+ :max="100"
+ :step="5"
+ input-size="medium"
+ @change="change"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
+
+ <h5>高度(百分比)</h5>
+ <el-row>
+ <el-col :span="22" :offset="1">
+ <el-slider
+ v-model="height"
+ show-tooltip
+ :max="100"
+ :step="5"
+ input-size="medium"
+ @change="change"
+ >
+ </el-slider>
+ </el-col>
+ </el-row>
+
+ <el-row>
+ <el-col :span="12">
+ <h5>遮罩形状</h5>
+ </el-col>
+ <el-col :span="12">
+ <el-select
+ v-model="selectedMask"
+ placeholder="请选择遮罩图形"
+ @change="changeMask"
+ >
+ <el-option
+ v-for="item in masks"
+ :key="item.value"
+ :label="item.name"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-col>
+ </el-row>
+ </el-collapse-item>
+ </el-collapse>
</template>
-
<script setup lang="ts">
-import { ref } from 'vue'
-const themeColors = ref(['#720FEB', '#EB1AA9', '#B6DA02']);
+import { ref } from "vue";
+// const themeColors = ref(['#720FEB', '#EB1AA9', '#B6DA02']);
const hue = ref([0, 255]);
const saturation = ref([0.5, 0.8]);
const lightness = ref([0.5, 0.8]);
const alpha = ref([0.5, 0.8]);
+const selectedFontFamily = ref("Arial");
+const fontSize = ref([4, 100]);
+const rotate = ref([-90, 90]);
+const width = ref(90);
+const height = ref(90);
+const selectedMask = ref("circle");
+
+const fontFamilies = [
+ "Arial",
+ "Lato",
+ "Times New Roman",
+ "Courier New",
+ "Georgia",
+ "Helvetica",
+ "Lucida Sans",
+ "Tahoma",
+ "Verdana"
+];
+const masks = [
+ {
+ name: "椭圆",
+ value: "circle"
+ },
+ {
+ name: "方形",
+ value: "square"
+ },
+ {
+ name: "菱形",
+ value: "diamond"
+ },
+ {
+ name: "三角形",
+ value: "triangle"
+ },
+ {
+ name: "五边形",
+ value: "pentagon"
+ },
+ {
+ name: "五角星",
+ value: "star"
+ },
+ {
+ name: "爱心",
+ value: "cardioid"
+ // }, {
+ // name: '自定义图片',
+ // value: 'image'
+ }
+];
+
+const emit = defineEmits(["change"]);
+
+defineExpose({ getConfig });
+
+function changeFontFamily() {
+ change();
+}
+
+function changeMask() {
+ change();
+}
+
+function change() {
+ emit("change");
+}
+
+function getConfig() {
+ return {
+ hue: hue.value,
+ saturation: saturation.value,
+ lightness: lightness.value,
+ alpha: alpha.value,
+ fontFamily: selectedFontFamily.value,
+ fontSize: fontSize.value,
+ rotate: rotate.value,
+ width: width.value,
+ height: height.value,
+ shape: selectedMask.value === "image" ? null : selectedMask.value
+ };
+}
</script>
<style lang="scss">
.title-right {
- position: absolute;
- top: 10px;
- right: 0;
+ position: absolute;
+ top: 10px;
+ right: 0;
- a {
- display: inline-block;
- }
+ a {
+ display: inline-block;
+ }
}
.el-color-picker {
- margin-right: 5px;
+ margin-right: 5px;
}
.color-picker-btn {
- display: inline-block;
- width: 30px;
- height: 30px;
- margin-right: 5px;
- padding: 3px 6px;
- box-sizing: border-box;
- vertical-align: top;
- border: 1px solid #e6e6e6;
- border-radius: 4px;
- color: #409EFF;
+ display: inline-block;
+ width: 30px;
+ height: 30px;
+ margin-right: 5px;
+ padding: 3px 6px;
+ box-sizing: border-box;
+ vertical-align: top;
+ border: 1px solid #e6e6e6;
+ border-radius: 4px;
+ color: #409eff;
}
.text-pad {
- padding: 8px 0;
+ padding: 8px 0;
}
.el-dropdown-link {
- cursor: pointer;
- color: #409EFF;
+ cursor: pointer;
+ color: #409eff;
}
.el-icon-arrow-down {
- font-size: 12px;
+ font-size: 12px;
+}
+
+h5 {
+ margin: 8px 0;
+ font-size: 13px;
+ color: #666;
}
</style>
diff --git a/src/components/WData.vue b/src/components/WData.vue
index 087c007..a7bfc47 100644
--- a/src/components/WData.vue
+++ b/src/components/WData.vue
@@ -1,196 +1,151 @@
<template>
- <div>
- <el-table class="word-table"
- :data="tableData"
- empty-text="无数据"
- >
- <el-table-column
- fixed
- prop="name"
- label="文本"
- >
- <template v-slot="scope">
- <el-input
- v-if="scope && scope.row.editAttr === 'name'"
- size="small"
- v-model="scope.row.name"
- @blur="doneEditing(scope.row)"
- >
- </el-input>
- <span
- v-if="scope && scope.row.editAttr !== 'name'"
- @click="edit(scope.row, 'name')"
- >
- {{ scope.row.name }}
- </span>
- </template>
- </el-table-column>
- <el-table-column
- prop="value"
- label="相对大小"
- >
- <template v-slot="scope">
- <el-input
- v-if="scope && scope.row.editAttr === 'value'"
- size="small"
- v-model="scope.row.value"
- @blur="doneEditing(scope.row)"
- >
- </el-input>
- <span
- v-if="scope && scope.row.editAttr !== 'value'"
- @click="edit(scope.row, 'value')"
- >
- {{ scope.row.value }}
- </span>
- </template>
- </el-table-column>
- <el-table-column
- label="操作"
- width="50"
- >
- <template v-slot="scope">
- <el-button
- type="text"
- size="small"
- @click="removeData(scope.row)"
- >
- 删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
+ <div>
+ <el-table class="word-table" :data="tableData" empty-text="无数据">
+ <el-table-column prop="name" label="文本">
+ <template v-slot="scope">
+ <el-input
+ v-if="!scope || scope.row.editAttr === 'name'"
+ size="small"
+ v-model="scope.row.name"
+ @blur="doneEditing(scope.row)"
+ >
+ </el-input>
+ <span
+ v-if="!scope || scope.row.editAttr !== 'name'"
+ @click="edit(scope.row, 'name')"
+ >
+ {{ scope.row.name }}
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="value" label="相对大小">
+ <template v-slot="scope">
+ <el-input
+ v-if="scope && scope.row.editAttr === 'value'"
+ size="small"
+ v-model="scope.row.value"
+ @blur="doneEditing(scope.row)"
+ >
+ </el-input>
+ <span
+ v-if="scope && scope.row.editAttr !== 'value'"
+ @click="edit(scope.row, 'value')"
+ >
+ {{ scope.row.value }}
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作" width="50">
+ <template v-slot="scope">
+ <el-button type="text" size="small" @click="removeData(scope.row)">
+ 删除
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
- <el-table class="word-table"
- :show-header="false"
- :data="pendingData"
- >
- <el-table-column
- fixed
- prop="name"
- label="文本"
- >
- <template v-slot="scope">
- <el-input
- size="small"
- v-model="scope.row.name"
- >
- </el-input>
- </template>
- </el-table-column>
- <el-table-column
- prop="value"
- label="大小"
- >
- <template v-slot="scope">
- <el-input
- size="small"
- v-model="scope.row.value"
- placeholder="留空则随机大小"
- >
- </el-input>
- </template>
- </el-table-column>
- <el-table-column
- label="操作"
- width="50"
- >
- <template v-slot="scope">
- <el-button
- type="text"
- size="small"
- @click="addRow()"
- >
- 添加
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="padding">
- <el-button
- type="primary"
- size="medium"
- @click="removeAll()"
- >
- 导入 .cvs
- </el-button>
- <el-button
- type="danger"
- size="medium"
- @click="removeAll()"
- >
- 清空
- </el-button>
- </div>
+ <el-table class="word-table" :show-header="false" :data="pendingData">
+ <el-table-column fixed prop="name" label="文本">
+ <template v-slot="scope">
+ <el-input size="small" v-model="scope.row.name"> </el-input>
+ </template>
+ </el-table-column>
+ <el-table-column prop="value" label="大小">
+ <template v-slot="scope">
+ <el-input
+ size="small"
+ v-model="scope.row.value"
+ placeholder="留空则随机大小"
+ >
+ </el-input>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作" width="50">
+ <template v-slot="scope">
+ <el-button type="text" size="small" @click="addRow()">
+ 添加
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <div class="padding">
+ <el-button type="primary" size="medium" @click="removeAll()">
+ 导入 .cvs
+ </el-button>
+ <el-button type="danger" size="medium" @click="removeAll()">
+ 清空
+ </el-button>
</div>
+ </div>
</template>
<script setup lang="ts">
-import { ref, defineEmits } from 'vue';
+import { ref, defineEmits } from "vue";
type WordData = {
- name?: string;
- value?: number;
- editAttr?: string;
+ name?: string;
+ value?: number;
+ editAttr?: string;
};
const tableData = ref([] as WordData[]);
const pendingData = ref([{}] as WordData[]);
-const emit = defineEmits(['change']);
+const emit = defineEmits(["change"]);
defineExpose({ data: tableData, setData });
function setData(data: WordData[]) {
- tableData.value = data;
- emit('change');
+ tableData.value = data;
+ emit("change");
}
function removeData(row: WordData) {
- tableData.value = tableData.value.filter(item => item !== row);
- emit('change');
+ tableData.value = tableData.value.filter(item => item !== row);
+ emit("change");
}
-function edit(row: WordData, attr: 'name' | 'value') {
- row.editAttr = attr;
+function edit(row: WordData, attr: "name" | "value") {
+ row.editAttr = attr;
}
function doneEditing(row: WordData) {
- row.editAttr = undefined;
- emit('change');
+ row.editAttr = undefined;
+ emit("change");
}
function addRow() {
- if (pendingData.value[0].name) {
- const rawValue = pendingData.value[0].value as unknown as string;
- const value = parseFloat(rawValue);
- if (rawValue != null && rawValue !== '' && isNaN(value)) {
- alert('请输入数字');
- return;
- }
- else {
- tableData.value.push({
- name: pendingData.value[0].name,
- value
- });
- pendingData.value = [{}];
- emit('change');
- }
+ if (pendingData.value[0].name) {
+ const rawValue = (pendingData.value[0].value as unknown) as string;
+ const value = parseFloat(rawValue);
+ if (rawValue != null && rawValue !== "" && isNaN(value)) {
+ alert("请输入数字");
+ return;
+ } else {
+ tableData.value.push({
+ name: pendingData.value[0].name,
+ value
+ });
+ pendingData.value = [{}];
+ emit("change");
}
+ }
}
function removeAll() {
- tableData.value = [];
- emit('change');
+ tableData.value = [];
+ emit("change");
}
</script>
<style lang="scss">
.word-table {
- width: 100%;
+ width: 100%;
+ max-height: 400px;
+ overflow: auto;
}
.padding {
- padding: 10px;
+ padding: 10px;
}
</style>
diff --git a/src/data/defaultData.ts b/src/data/defaultData.ts
index 7efce3e..7d803a5 100644
--- a/src/data/defaultData.ts
+++ b/src/data/defaultData.ts
@@ -1,16 +1,349 @@
-export default [{
- name: 'Apache',
- value: 300
-}, {
- name: 'ECharts',
- value: 300
-}, {
- name: 'WordCloud',
- value: 300
-}, {
- name: 'Generator',
- value: 200
-}, {
- name: 'Tool',
- value: 80
-}];
+const keywords = {
+ 'visualMap': 22199,
+ 'continuous': 10288,
+ 'contoller': 620,
+ 'series': 274470,
+ 'gauge': 12311,
+ 'detail': 1206,
+ 'piecewise': 4885,
+ 'textStyle': 32294,
+ 'markPoint': 18574,
+ 'pie': 38929,
+ 'roseType': 969,
+ 'label': 37517,
+ 'emphasis': 12053,
+ 'yAxis': 57299,
+ 'name': 15418,
+ 'type': 22905,
+ 'gridIndex': 5146,
+ 'normal': 49487,
+ 'itemStyle': 33837,
+ 'min': 4500,
+ 'silent': 5744,
+ 'animation': 4840,
+ 'offsetCenter': 232,
+ 'inverse': 3706,
+ 'borderColor': 4812,
+ 'markLine': 16578,
+ 'line': 76970,
+ 'radiusAxis': 6704,
+ 'radar': 15964,
+ 'data': 60679,
+ 'dataZoom': 24347,
+ 'tooltip': 43420,
+ 'toolbox': 25222,
+ 'geo': 16904,
+ 'parallelAxis': 4029,
+ 'parallel': 5319,
+ 'max': 3393,
+ 'bar': 43066,
+ 'heatmap': 3110,
+ 'map': 20285,
+ 'animationDuration': 3425,
+ 'animationDelay': 2431,
+ 'splitNumber': 5175,
+ 'axisLine': 12738,
+ 'lineStyle': 19601,
+ 'splitLine': 7133,
+ 'axisTick': 8831,
+ 'axisLabel': 17516,
+ 'pointer': 590,
+ 'color': 23426,
+ 'title': 38497,
+ 'formatter': 15214,
+ 'slider': 7236,
+ 'legend': 66514,
+ 'grid': 28516,
+ 'smooth': 1295,
+ 'smoothMonotone': 696,
+ 'sampling': 757,
+ 'feature': 12815,
+ 'saveAsImage': 2616,
+ 'polar': 6279,
+ 'calculable': 879,
+ 'backgroundColor': 9419,
+ 'excludeComponents': 130,
+ 'show': 20620,
+ 'text': 2592,
+ 'icon': 2782,
+ 'dimension': 478,
+ 'inRange': 1060,
+ 'animationEasing': 2983,
+ 'animationDurationUpdate': 2259,
+ 'animationDelayUpdate': 2236,
+ 'animationEasingUpdate': 2213,
+ 'xAxis': 89459,
+ 'angleAxis': 5469,
+ 'showTitle': 484,
+ 'dataView': 2754,
+ 'restore': 932,
+ 'timeline': 10104,
+ 'range': 477,
+ 'value': 5732,
+ 'precision': 878,
+ 'target': 1433,
+ 'zlevel': 5361,
+ 'symbol': 8718,
+ 'interval': 7964,
+ 'symbolSize': 5300,
+ 'showSymbol': 1247,
+ 'inside': 8913,
+ 'xAxisIndex': 3843,
+ 'orient': 4205,
+ 'boundaryGap': 5073,
+ 'nameGap': 4896,
+ 'zoomLock': 571,
+ 'hoverAnimation': 2307,
+ 'legendHoverLink': 3553,
+ 'stack': 2907,
+ 'throttle': 466,
+ 'connectNulls': 897,
+ 'clipOverflow': 826,
+ 'startValue': 551,
+ 'minInterval': 3292,
+ 'opacity': 3097,
+ 'splitArea': 4775,
+ 'filterMode': 635,
+ 'end': 409,
+ 'left': 6475,
+ 'funnel': 2238,
+ 'lines': 6403,
+ 'baseline': 431,
+ 'align': 2608,
+ 'coord': 897,
+ 'nameTextStyle': 7477,
+ 'width': 4338,
+ 'shadowBlur': 4493,
+ 'effect': 929,
+ 'period': 225,
+ 'areaColor': 631,
+ 'borderWidth': 3654,
+ 'nameLocation': 4418,
+ 'position': 11723,
+ 'containLabel': 1701,
+ 'scatter': 10718,
+ 'areaStyle': 5310,
+ 'scale': 3859,
+ 'pieces': 414,
+ 'categories': 1000,
+ 'selectedMode': 3825,
+ 'itemSymbol': 273,
+ 'effectScatter': 7147,
+ 'fontStyle': 3376,
+ 'fontSize': 3386,
+ 'margin': 1034,
+ 'iconStyle': 2257,
+ 'link': 1366,
+ 'axisPointer': 5245,
+ 'showDelay': 896,
+ 'graph': 22194,
+ 'subtext': 1442,
+ 'selected': 2881,
+ 'barCategoryGap': 827,
+ 'barGap': 1094,
+ 'barWidth': 1521,
+ 'coordinateSystem': 3622,
+ 'barBorderRadius': 284,
+ 'z': 4014,
+ 'polarIndex': 1456,
+ 'shadowOffsetX': 3046,
+ 'shadowColor': 3771,
+ 'shadowOffsetY': 2475,
+ 'height': 1988,
+ 'barMinHeight': 575,
+ 'lang': 131,
+ 'symbolRotate': 2752,
+ 'symbolOffset': 2549,
+ 'showAllSymbol': 942,
+ 'transitionDuration': 993,
+ 'bottom': 3724,
+ 'fillerColor': 229,
+ 'nameMap': 1249,
+ 'barMaxWidth': 747,
+ 'radius': 2103,
+ 'center': 2425,
+ 'magicType': 3276,
+ 'labelPrecision': 248,
+ 'option': 654,
+ 'seriesIndex': 935,
+ 'controlPosition': 121,
+ 'itemGap': 3188,
+ 'padding': 3481,
+ 'shadowStyle': 347,
+ 'boxplot': 1394,
+ 'labelFormatter': 264,
+ 'realtime': 631,
+ 'dataBackgroundColor': 239,
+ 'showDetail': 247,
+ 'showDataShadow': 217,
+ 'x': 684,
+ 'valueDim': 499,
+ 'onZero': 931,
+ 'right': 3255,
+ 'clockwise': 1035,
+ 'itemWidth': 1732,
+ 'trigger': 3840,
+ 'axis': 379,
+ 'selectedOffset': 670,
+ 'startAngle': 1293,
+ 'minAngle': 590,
+ 'top': 4637,
+ 'avoidLabelOverlap': 870,
+ 'labelLine': 3785,
+ 'sankey': 2933,
+ 'endAngle': 213,
+ 'start': 779,
+ 'roam': 1738,
+ 'fontWeight': 2828,
+ 'fontFamily': 2490,
+ 'subtextStyle': 2066,
+ 'indicator': 853,
+ 'sublink': 708,
+ 'zoom': 1038,
+ 'subtarget': 659,
+ 'length': 1060,
+ 'itemSize': 505,
+ 'controlStyle': 452,
+ 'yAxisIndex': 2529,
+ 'edgeLabel': 1188,
+ 'radiusAxisIndex': 354,
+ 'scaleLimit': 1313,
+ 'geoIndex': 535,
+ 'regions': 1892,
+ 'itemHeight': 1290,
+ 'nodes': 644,
+ 'candlestick': 3166,
+ 'crossStyle': 466,
+ 'edges': 369,
+ 'links': 3277,
+ 'layout': 846,
+ 'barBorderColor': 721,
+ 'barBorderWidth': 498,
+ 'treemap': 3865,
+ 'y': 367,
+ 'valueIndex': 704,
+ 'showLegendSymbol': 482,
+ 'mapValueCalculation': 492,
+ 'optionToContent': 264,
+ 'handleColor': 187,
+ 'handleSize': 271,
+ 'showContent': 1853,
+ 'angleAxisIndex': 406,
+ 'endValue': 327,
+ 'triggerOn': 1720,
+ 'contentToOption': 169,
+ 'buttonColor': 71,
+ 'rotate': 1144,
+ 'hoverLink': 335,
+ 'outOfRange': 491,
+ 'textareaColor': 58,
+ 'textareaBorderColor': 58,
+ 'textColor': 60,
+ 'buttonTextColor': 66,
+ 'category': 336,
+ 'hideDelay': 786,
+ 'alwaysShowContent': 1267,
+ 'extraCssText': 901,
+ 'effectType': 277,
+ 'force': 1820,
+ 'rippleEffect': 723,
+ 'edgeSymbolSize': 329,
+ 'showEffectOn': 271,
+ 'gravity': 199,
+ 'edgeLength': 193,
+ 'layoutAnimation': 152,
+ 'length2': 169,
+ 'enterable': 957,
+ 'dim': 83,
+ 'readOnly': 143,
+ 'levels': 444,
+ 'textGap': 256,
+ 'pixelRatio': 84,
+ 'nodeScaleRatio': 232,
+ 'draggable': 249,
+ 'brushType': 158,
+ 'radarIndex': 152,
+ 'large': 182,
+ 'edgeSymbol': 675,
+ 'largeThreshold': 132,
+ 'leafDepth': 73,
+ 'childrenVisibleMin': 73,
+ 'minSize': 35,
+ 'maxSize': 35,
+ 'sort': 90,
+ 'funnelAlign': 61,
+ 'source': 336,
+ 'nodeClick': 200,
+ 'curveness': 350,
+ 'areaSelectStyle': 104,
+ 'parallelIndex': 52,
+ 'initLayout': 359,
+ 'trailLength': 116,
+ 'boxWidth': 20,
+ 'back': 53,
+ 'rewind': 110,
+ 'zoomToNodeRatio': 80,
+ 'squareRatio': 60,
+ 'parallelAxisDefault': 358,
+ 'checkpointStyle': 440,
+ 'nodeWidth': 49,
+ 'color0': 62,
+ 'layoutIterations': 56,
+ 'nodeGap': 54,
+ 'color(Array': 76,
+ '<string>)': 76,
+ 'repulsion': 276,
+ 'tiled': 105,
+ 'currentIndex': 145,
+ 'axisType': 227,
+ 'loop': 97,
+ 'playInterval': 112,
+ 'borderColor0': 23,
+ 'gap': 43,
+ 'autoPlay': 123,
+ 'showPlayBtn': 25,
+ 'breadcrumb': 119,
+ 'colorMappingBy': 85,
+ 'id': 18,
+ 'blurSize': 85,
+ 'minOpacity': 50,
+ 'maxOpacity': 54,
+ 'prevIcon': 12,
+ 'children': 21,
+ 'shape': 98,
+ 'nextIcon': 12,
+ 'showNextBtn': 17,
+ 'stopIcon': 21,
+ 'visibleMin': 83,
+ 'visualDimension': 97,
+ 'colorSaturation': 56,
+ 'colorAlpha': 66,
+ 'emptyItemWidth': 10,
+ 'inactiveOpacity': 4,
+ 'activeOpacity': 4,
+ 'showPrevBtn': 19,
+ 'playIcon': 26,
+ 'ellipsis': 19,
+ 'gapWidth': 19,
+ 'borderColorSaturation': 10,
+ 'handleIcon': 2,
+ 'handleStyle': 6,
+ 'borderType': 1,
+ 'constantSpeed': 1,
+ 'polyline': 2,
+ 'blendMode': 1,
+ 'dataBackground': 1,
+ 'textAlign': 1,
+ 'textBaseline': 1,
+ 'brush': 3
+ };
+
+ const data: {name: string, value: number}[] = [];
+ for (var name in keywords) {
+ data.push({
+ name: name,
+ value: Math.floor(Math.sqrt(keywords[name as keyof typeof keywords]))
+ });
+ }
+
+export default data;
diff --git a/tsconfig.json b/tsconfig.json
index 582c895..fd7f559 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,18 +1,18 @@
{
- "compilerOptions": {
- "outDir": "./dist/",
- "sourceMap": true,
- "strict": true,
- "noImplicitReturns": true,
- "noImplicitAny": true,
- "module": "es6",
- "moduleResolution": "node",
- "target": "es6",
- "allowJs": true,
- "allowSyntheticDefaultImports": true
- },
- "include": ["src/**/*"],
- "exclude": ["node_modules"],
- "esModuleInterop": true,
+ "compilerOptions": {
+ "outDir": "./dist/",
+ "sourceMap": true,
+ "strict": true,
+ "noImplicitReturns": true,
+ "noImplicitAny": true,
+ "module": "es6",
+ "moduleResolution": "node",
+ "target": "es6",
+ "allowJs": true,
"allowSyntheticDefaultImports": true
+ },
+ "include": ["src/**/*"],
+ "exclude": ["node_modules"],
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true
}
diff --git a/vite.config.ts b/vite.config.ts
index 60d1d88..0519993 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -4,14 +4,20 @@
// https://vitejs.dev/config/
export default defineConfig({
- base: './',
- build: {
- rollupOptions: {
- input: {
- // Use body.html when deploying
- main: resolve(__dirname, '_body.html')
- }
- }
- },
- plugins: [vue()]
-});
\ No newline at end of file
+ base: './',
+ build: {
+ rollupOptions: {
+ input: {
+ // Use body.html when deploying
+ main: resolve(__dirname, '_body.html')
+ }
+ }
+ },
+ plugins: [vue()],
+ resolve: {
+ alias: {
+ 'echarts-wordcloud': '/Library/WebServer/Documents/echarts-wordcloud',
+ echarts: '/Library/WebServer/Documents/echarts'
+ }
+ }
+});