Commit eb697a873d88bc18e41c764df8ec6530f4d08d3e

Authored by ww
1 parent 4247063b

chore: 更新go-view基线版本至v1.2.6

Showing 49 changed files with 3698 additions and 358 deletions

Too many changes to show.

To preserve performance only 49 of 115 files are displayed.

1 1 {
2 2 "name": "go-view",
3   - "version": "1.2.0",
  3 + "version": "1.2.6",
4 4 "engines": {
5   - "node": ">=16.14 <18.0.0"
  5 + "node": ">=12.0"
6 6 },
7 7 "scripts": {
8 8 "dev": "vite --host",
... ... @@ -37,6 +37,7 @@
37 37 "html2canvas": "^1.4.1",
38 38 "jwt-decode": "^3.1.2",
39 39 "keymaster": "^1.6.2",
  40 + "mitt": "^3.0.0",
40 41 "monaco-editor": "^0.33.0",
41 42 "naive-ui": "2.34.3",
42 43 "pinia": "^2.0.13",
... ... @@ -56,6 +57,8 @@
56 57 "devDependencies": {
57 58 "@commitlint/cli": "^17.0.2",
58 59 "@commitlint/config-conventional": "^17.0.2",
  60 + "@iconify/types": "^2.0.0",
  61 + "@iconify/vue": "^4.1.1",
59 62 "@types/node": "^16.11.26",
60 63 "@types/qs": "^6.9.7",
61 64 "@types/three": "^0.144.0",
... ... @@ -64,8 +67,8 @@
64 67 "@typescript-eslint/parser": "^5.18.0",
65 68 "@vicons/carbon": "^0.12.0",
66 69 "@vicons/ionicons5": "~0.11.0",
67   - "@vitejs/plugin-vue": "^1.10.2",
68   - "@vitejs/plugin-vue-jsx": "^1.3.9",
  70 + "@vitejs/plugin-vue": "^4.2.3",
  71 + "@vitejs/plugin-vue-jsx": "^3.0.1",
69 72 "@vue/compiler-sfc": "^3.2.31",
70 73 "@vueuse/core": "^7.7.1",
71 74 "commitlint": "^17.0.2",
... ... @@ -84,7 +87,7 @@
84 87 "sass": "^1.49.11",
85 88 "sass-loader": "^12.6.0",
86 89 "typescript": "4.6.3",
87   - "vite": "2.9.9",
  90 + "vite": "4.3.6",
88 91 "vite-plugin-compression": "^0.5.1",
89 92 "vite-plugin-html": "^3.2.0",
90 93 "vite-plugin-importer": "^0.2.5",
... ...
1   -lockfileVersion: '6.0'
  1 +lockfileVersion: '6.1'
  2 +
  3 +settings:
  4 + autoInstallPeers: true
  5 + excludeLinksFromLockfile: false
2 6
3 7 dependencies:
4 8 '@amap/amap-jsapi-loader':
... ... @@ -61,6 +65,9 @@ dependencies:
61 65 keymaster:
62 66 specifier: ^1.6.2
63 67 version: 1.6.2
  68 + mitt:
  69 + specifier: ^3.0.0
  70 + version: 3.0.0
64 71 monaco-editor:
65 72 specifier: ^0.33.0
66 73 version: 0.33.0
... ... @@ -85,6 +92,9 @@ dependencies:
85 92 vue:
86 93 specifier: ^3.2.31
87 94 version: 3.2.37
  95 + vue-3d-loader:
  96 + specifier: ^2.1.7
  97 + version: 2.1.7
88 98 vue-demi:
89 99 specifier: ^0.13.1
90 100 version: 0.13.1(vue@3.2.37)
... ... @@ -111,6 +121,12 @@ devDependencies:
111 121 '@commitlint/config-conventional':
112 122 specifier: ^17.0.2
113 123 version: 17.0.2
  124 + '@iconify/types':
  125 + specifier: ^2.0.0
  126 + version: 2.0.0
  127 + '@iconify/vue':
  128 + specifier: ^4.1.1
  129 + version: 4.1.1(vue@3.2.37)
114 130 '@types/node':
115 131 specifier: ^16.11.26
116 132 version: 16.11.40
... ... @@ -136,11 +152,11 @@ devDependencies:
136 152 specifier: ~0.11.0
137 153 version: 0.11.0
138 154 '@vitejs/plugin-vue':
139   - specifier: ^1.10.2
140   - version: 1.10.2(vite@2.9.9)
  155 + specifier: ^4.2.3
  156 + version: 4.2.3(vite@4.3.6)(vue@3.2.37)
141 157 '@vitejs/plugin-vue-jsx':
142   - specifier: ^1.3.9
143   - version: 1.3.10
  158 + specifier: ^3.0.1
  159 + version: 3.0.1(vite@4.3.6)(vue@3.2.37)
144 160 '@vue/compiler-sfc':
145 161 specifier: ^3.2.31
146 162 version: 3.2.37
... ... @@ -196,20 +212,20 @@ devDependencies:
196 212 specifier: 4.6.3
197 213 version: 4.6.3
198 214 vite:
199   - specifier: 2.9.9
200   - version: 2.9.9(sass@1.52.3)
  215 + specifier: 4.3.6
  216 + version: 4.3.6(@types/node@16.11.40)(sass@1.52.3)
201 217 vite-plugin-compression:
202 218 specifier: ^0.5.1
203   - version: 0.5.1(vite@2.9.9)
  219 + version: 0.5.1(vite@4.3.6)
204 220 vite-plugin-html:
205 221 specifier: ^3.2.0
206   - version: 3.2.0(vite@2.9.9)
  222 + version: 3.2.0(vite@4.3.6)
207 223 vite-plugin-importer:
208 224 specifier: ^0.2.5
209 225 version: 0.2.5
210 226 vite-plugin-mock:
211 227 specifier: ^2.9.6
212   - version: 2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@2.9.9)
  228 + version: 2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@4.3.6)
213 229 vite-plugin-monaco-editor:
214 230 specifier: ^1.1.0
215 231 version: 1.1.0(monaco-editor@0.33.0)
... ... @@ -245,11 +261,23 @@ packages:
245 261 '@babel/highlight': 7.17.12
246 262 dev: true
247 263
  264 + /@babel/code-frame@7.22.5:
  265 + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==}
  266 + engines: {node: '>=6.9.0'}
  267 + dependencies:
  268 + '@babel/highlight': 7.22.5
  269 + dev: true
  270 +
248 271 /@babel/compat-data@7.18.5:
249 272 resolution: {integrity: sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==}
250 273 engines: {node: '>=6.9.0'}
251 274 dev: true
252 275
  276 + /@babel/compat-data@7.22.5:
  277 + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==}
  278 + engines: {node: '>=6.9.0'}
  279 + dev: true
  280 +
253 281 /@babel/core@7.18.5:
254 282 resolution: {integrity: sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==}
255 283 engines: {node: '>=6.9.0'}
... ... @@ -273,6 +301,29 @@ packages:
273 301 - supports-color
274 302 dev: true
275 303
  304 + /@babel/core@7.22.5:
  305 + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==}
  306 + engines: {node: '>=6.9.0'}
  307 + dependencies:
  308 + '@ampproject/remapping': 2.2.0
  309 + '@babel/code-frame': 7.22.5
  310 + '@babel/generator': 7.22.5
  311 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5)
  312 + '@babel/helper-module-transforms': 7.22.5
  313 + '@babel/helpers': 7.22.5
  314 + '@babel/parser': 7.22.5
  315 + '@babel/template': 7.22.5
  316 + '@babel/traverse': 7.22.5
  317 + '@babel/types': 7.22.5
  318 + convert-source-map: 1.8.0
  319 + debug: 4.3.4
  320 + gensync: 1.0.0-beta.2
  321 + json5: 2.2.3
  322 + semver: 6.3.0
  323 + transitivePeerDependencies:
  324 + - supports-color
  325 + dev: true
  326 +
276 327 /@babel/generator@7.18.2:
277 328 resolution: {integrity: sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==}
278 329 engines: {node: '>=6.9.0'}
... ... @@ -282,11 +333,21 @@ packages:
282 333 jsesc: 2.5.2
283 334 dev: true
284 335
285   - /@babel/helper-annotate-as-pure@7.16.7:
286   - resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==}
  336 + /@babel/generator@7.22.5:
  337 + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==}
287 338 engines: {node: '>=6.9.0'}
288 339 dependencies:
289   - '@babel/types': 7.18.4
  340 + '@babel/types': 7.22.5
  341 + '@jridgewell/gen-mapping': 0.3.3
  342 + '@jridgewell/trace-mapping': 0.3.17
  343 + jsesc: 2.5.2
  344 + dev: true
  345 +
  346 + /@babel/helper-annotate-as-pure@7.22.5:
  347 + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
  348 + engines: {node: '>=6.9.0'}
  349 + dependencies:
  350 + '@babel/types': 7.22.5
290 351 dev: true
291 352
292 353 /@babel/helper-compilation-targets@7.18.2(@babel/core@7.18.5):
... ... @@ -302,20 +363,36 @@ packages:
302 363 semver: 6.3.0
303 364 dev: true
304 365
305   - /@babel/helper-create-class-features-plugin@7.18.0(@babel/core@7.18.5):
306   - resolution: {integrity: sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==}
  366 + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5):
  367 + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==}
307 368 engines: {node: '>=6.9.0'}
308 369 peerDependencies:
309 370 '@babel/core': ^7.0.0
310 371 dependencies:
311   - '@babel/core': 7.18.5
312   - '@babel/helper-annotate-as-pure': 7.16.7
313   - '@babel/helper-environment-visitor': 7.18.2
314   - '@babel/helper-function-name': 7.17.9
315   - '@babel/helper-member-expression-to-functions': 7.17.7
316   - '@babel/helper-optimise-call-expression': 7.16.7
317   - '@babel/helper-replace-supers': 7.18.2
318   - '@babel/helper-split-export-declaration': 7.16.7
  372 + '@babel/compat-data': 7.22.5
  373 + '@babel/core': 7.22.5
  374 + '@babel/helper-validator-option': 7.22.5
  375 + browserslist: 4.21.7
  376 + lru-cache: 5.1.1
  377 + semver: 6.3.0
  378 + dev: true
  379 +
  380 + /@babel/helper-create-class-features-plugin@7.22.5(@babel/core@7.22.5):
  381 + resolution: {integrity: sha512-xkb58MyOYIslxu3gKmVXmjTtUPvBU4odYzbiIQbWwLKIHCsx6UGZGX6F1IznMFVnDdirseUZopzN+ZRt8Xb33Q==}
  382 + engines: {node: '>=6.9.0'}
  383 + peerDependencies:
  384 + '@babel/core': ^7.0.0
  385 + dependencies:
  386 + '@babel/core': 7.22.5
  387 + '@babel/helper-annotate-as-pure': 7.22.5
  388 + '@babel/helper-environment-visitor': 7.22.5
  389 + '@babel/helper-function-name': 7.22.5
  390 + '@babel/helper-member-expression-to-functions': 7.22.5
  391 + '@babel/helper-optimise-call-expression': 7.22.5
  392 + '@babel/helper-replace-supers': 7.22.5
  393 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
  394 + '@babel/helper-split-export-declaration': 7.22.5
  395 + semver: 6.3.0
319 396 transitivePeerDependencies:
320 397 - supports-color
321 398 dev: true
... ... @@ -325,6 +402,11 @@ packages:
325 402 engines: {node: '>=6.9.0'}
326 403 dev: true
327 404
  405 + /@babel/helper-environment-visitor@7.22.5:
  406 + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
  407 + engines: {node: '>=6.9.0'}
  408 + dev: true
  409 +
328 410 /@babel/helper-function-name@7.17.9:
329 411 resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==}
330 412 engines: {node: '>=6.9.0'}
... ... @@ -333,6 +415,14 @@ packages:
333 415 '@babel/types': 7.18.4
334 416 dev: true
335 417
  418 + /@babel/helper-function-name@7.22.5:
  419 + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==}
  420 + engines: {node: '>=6.9.0'}
  421 + dependencies:
  422 + '@babel/template': 7.22.5
  423 + '@babel/types': 7.22.5
  424 + dev: true
  425 +
336 426 /@babel/helper-hoist-variables@7.16.7:
337 427 resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==}
338 428 engines: {node: '>=6.9.0'}
... ... @@ -340,11 +430,18 @@ packages:
340 430 '@babel/types': 7.18.4
341 431 dev: true
342 432
343   - /@babel/helper-member-expression-to-functions@7.17.7:
344   - resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==}
  433 + /@babel/helper-hoist-variables@7.22.5:
  434 + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
345 435 engines: {node: '>=6.9.0'}
346 436 dependencies:
347   - '@babel/types': 7.18.4
  437 + '@babel/types': 7.22.5
  438 + dev: true
  439 +
  440 + /@babel/helper-member-expression-to-functions@7.22.5:
  441 + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==}
  442 + engines: {node: '>=6.9.0'}
  443 + dependencies:
  444 + '@babel/types': 7.22.5
348 445 dev: true
349 446
350 447 /@babel/helper-module-imports@7.16.7:
... ... @@ -354,6 +451,13 @@ packages:
354 451 '@babel/types': 7.18.4
355 452 dev: true
356 453
  454 + /@babel/helper-module-imports@7.22.5:
  455 + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==}
  456 + engines: {node: '>=6.9.0'}
  457 + dependencies:
  458 + '@babel/types': 7.22.5
  459 + dev: true
  460 +
357 461 /@babel/helper-module-transforms@7.18.0:
358 462 resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==}
359 463 engines: {node: '>=6.9.0'}
... ... @@ -370,11 +474,27 @@ packages:
370 474 - supports-color
371 475 dev: true
372 476
373   - /@babel/helper-optimise-call-expression@7.16.7:
374   - resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==}
  477 + /@babel/helper-module-transforms@7.22.5:
  478 + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==}
375 479 engines: {node: '>=6.9.0'}
376 480 dependencies:
377   - '@babel/types': 7.18.4
  481 + '@babel/helper-environment-visitor': 7.22.5
  482 + '@babel/helper-module-imports': 7.22.5
  483 + '@babel/helper-simple-access': 7.22.5
  484 + '@babel/helper-split-export-declaration': 7.22.5
  485 + '@babel/helper-validator-identifier': 7.22.5
  486 + '@babel/template': 7.22.5
  487 + '@babel/traverse': 7.22.5
  488 + '@babel/types': 7.22.5
  489 + transitivePeerDependencies:
  490 + - supports-color
  491 + dev: true
  492 +
  493 + /@babel/helper-optimise-call-expression@7.22.5:
  494 + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
  495 + engines: {node: '>=6.9.0'}
  496 + dependencies:
  497 + '@babel/types': 7.22.5
378 498 dev: true
379 499
380 500 /@babel/helper-plugin-utils@7.17.12:
... ... @@ -382,15 +502,21 @@ packages:
382 502 engines: {node: '>=6.9.0'}
383 503 dev: true
384 504
385   - /@babel/helper-replace-supers@7.18.2:
386   - resolution: {integrity: sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==}
  505 + /@babel/helper-plugin-utils@7.22.5:
  506 + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
  507 + engines: {node: '>=6.9.0'}
  508 + dev: true
  509 +
  510 + /@babel/helper-replace-supers@7.22.5:
  511 + resolution: {integrity: sha512-aLdNM5I3kdI/V9xGNyKSF3X/gTyMUBohTZ+/3QdQKAA9vxIiy12E+8E2HoOP1/DjeqU+g6as35QHJNMDDYpuCg==}
387 512 engines: {node: '>=6.9.0'}
388 513 dependencies:
389   - '@babel/helper-environment-visitor': 7.18.2
390   - '@babel/helper-member-expression-to-functions': 7.17.7
391   - '@babel/helper-optimise-call-expression': 7.16.7
392   - '@babel/traverse': 7.18.5
393   - '@babel/types': 7.18.4
  514 + '@babel/helper-environment-visitor': 7.22.5
  515 + '@babel/helper-member-expression-to-functions': 7.22.5
  516 + '@babel/helper-optimise-call-expression': 7.22.5
  517 + '@babel/template': 7.22.5
  518 + '@babel/traverse': 7.22.5
  519 + '@babel/types': 7.22.5
394 520 transitivePeerDependencies:
395 521 - supports-color
396 522 dev: true
... ... @@ -402,6 +528,20 @@ packages:
402 528 '@babel/types': 7.18.4
403 529 dev: true
404 530
  531 + /@babel/helper-simple-access@7.22.5:
  532 + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
  533 + engines: {node: '>=6.9.0'}
  534 + dependencies:
  535 + '@babel/types': 7.22.5
  536 + dev: true
  537 +
  538 + /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
  539 + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
  540 + engines: {node: '>=6.9.0'}
  541 + dependencies:
  542 + '@babel/types': 7.22.5
  543 + dev: true
  544 +
405 545 /@babel/helper-split-export-declaration@7.16.7:
406 546 resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==}
407 547 engines: {node: '>=6.9.0'}
... ... @@ -409,15 +549,37 @@ packages:
409 549 '@babel/types': 7.18.4
410 550 dev: true
411 551
  552 + /@babel/helper-split-export-declaration@7.22.5:
  553 + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==}
  554 + engines: {node: '>=6.9.0'}
  555 + dependencies:
  556 + '@babel/types': 7.22.5
  557 + dev: true
  558 +
  559 + /@babel/helper-string-parser@7.22.5:
  560 + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
  561 + engines: {node: '>=6.9.0'}
  562 + dev: true
  563 +
412 564 /@babel/helper-validator-identifier@7.16.7:
413 565 resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==}
414 566 engines: {node: '>=6.9.0'}
415 567
  568 + /@babel/helper-validator-identifier@7.22.5:
  569 + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
  570 + engines: {node: '>=6.9.0'}
  571 + dev: true
  572 +
416 573 /@babel/helper-validator-option@7.16.7:
417 574 resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==}
418 575 engines: {node: '>=6.9.0'}
419 576 dev: true
420 577
  578 + /@babel/helper-validator-option@7.22.5:
  579 + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==}
  580 + engines: {node: '>=6.9.0'}
  581 + dev: true
  582 +
421 583 /@babel/helpers@7.18.2:
422 584 resolution: {integrity: sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==}
423 585 engines: {node: '>=6.9.0'}
... ... @@ -429,6 +591,17 @@ packages:
429 591 - supports-color
430 592 dev: true
431 593
  594 + /@babel/helpers@7.22.5:
  595 + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==}
  596 + engines: {node: '>=6.9.0'}
  597 + dependencies:
  598 + '@babel/template': 7.22.5
  599 + '@babel/traverse': 7.22.5
  600 + '@babel/types': 7.22.5
  601 + transitivePeerDependencies:
  602 + - supports-color
  603 + dev: true
  604 +
432 605 /@babel/highlight@7.17.12:
433 606 resolution: {integrity: sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==}
434 607 engines: {node: '>=6.9.0'}
... ... @@ -438,6 +611,15 @@ packages:
438 611 js-tokens: 4.0.0
439 612 dev: true
440 613
  614 + /@babel/highlight@7.22.5:
  615 + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==}
  616 + engines: {node: '>=6.9.0'}
  617 + dependencies:
  618 + '@babel/helper-validator-identifier': 7.22.5
  619 + chalk: 2.4.2
  620 + js-tokens: 4.0.0
  621 + dev: true
  622 +
441 623 /@babel/parser@7.18.5:
442 624 resolution: {integrity: sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==}
443 625 engines: {node: '>=6.0.0'}
... ... @@ -445,6 +627,14 @@ packages:
445 627 dependencies:
446 628 '@babel/types': 7.18.4
447 629
  630 + /@babel/parser@7.22.5:
  631 + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==}
  632 + engines: {node: '>=6.0.0'}
  633 + hasBin: true
  634 + dependencies:
  635 + '@babel/types': 7.22.5
  636 + dev: true
  637 +
448 638 /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.5):
449 639 resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
450 640 peerDependencies:
... ... @@ -454,36 +644,37 @@ packages:
454 644 '@babel/helper-plugin-utils': 7.17.12
455 645 dev: true
456 646
457   - /@babel/plugin-syntax-jsx@7.17.12(@babel/core@7.18.5):
  647 + /@babel/plugin-syntax-jsx@7.17.12(@babel/core@7.22.5):
458 648 resolution: {integrity: sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==}
459 649 engines: {node: '>=6.9.0'}
460 650 peerDependencies:
461 651 '@babel/core': ^7.0.0-0
462 652 dependencies:
463   - '@babel/core': 7.18.5
464   - '@babel/helper-plugin-utils': 7.17.12
  653 + '@babel/core': 7.22.5
  654 + '@babel/helper-plugin-utils': 7.22.5
465 655 dev: true
466 656
467   - /@babel/plugin-syntax-typescript@7.17.12(@babel/core@7.18.5):
468   - resolution: {integrity: sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==}
  657 + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5):
  658 + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==}
469 659 engines: {node: '>=6.9.0'}
470 660 peerDependencies:
471 661 '@babel/core': ^7.0.0-0
472 662 dependencies:
473   - '@babel/core': 7.18.5
474   - '@babel/helper-plugin-utils': 7.17.12
  663 + '@babel/core': 7.22.5
  664 + '@babel/helper-plugin-utils': 7.22.5
475 665 dev: true
476 666
477   - /@babel/plugin-transform-typescript@7.18.4(@babel/core@7.18.5):
478   - resolution: {integrity: sha512-l4vHuSLUajptpHNEOUDEGsnpl9pfRLsN1XUoDQDD/YBuXTM+v37SHGS+c6n4jdcZy96QtuUuSvZYMLSSsjH8Mw==}
  667 + /@babel/plugin-transform-typescript@7.22.5(@babel/core@7.22.5):
  668 + resolution: {integrity: sha512-SMubA9S7Cb5sGSFFUlqxyClTA9zWJ8qGQrppNUm05LtFuN1ELRFNndkix4zUJrC9F+YivWwa1dHMSyo0e0N9dA==}
479 669 engines: {node: '>=6.9.0'}
480 670 peerDependencies:
481 671 '@babel/core': ^7.0.0-0
482 672 dependencies:
483   - '@babel/core': 7.18.5
484   - '@babel/helper-create-class-features-plugin': 7.18.0(@babel/core@7.18.5)
485   - '@babel/helper-plugin-utils': 7.17.12
486   - '@babel/plugin-syntax-typescript': 7.17.12(@babel/core@7.18.5)
  673 + '@babel/core': 7.22.5
  674 + '@babel/helper-annotate-as-pure': 7.22.5
  675 + '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.22.5)
  676 + '@babel/helper-plugin-utils': 7.22.5
  677 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5)
487 678 transitivePeerDependencies:
488 679 - supports-color
489 680 dev: true
... ... @@ -504,6 +695,15 @@ packages:
504 695 '@babel/types': 7.18.4
505 696 dev: true
506 697
  698 + /@babel/template@7.22.5:
  699 + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==}
  700 + engines: {node: '>=6.9.0'}
  701 + dependencies:
  702 + '@babel/code-frame': 7.22.5
  703 + '@babel/parser': 7.22.5
  704 + '@babel/types': 7.22.5
  705 + dev: true
  706 +
507 707 /@babel/traverse@7.18.5:
508 708 resolution: {integrity: sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==}
509 709 engines: {node: '>=6.9.0'}
... ... @@ -522,6 +722,24 @@ packages:
522 722 - supports-color
523 723 dev: true
524 724
  725 + /@babel/traverse@7.22.5:
  726 + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==}
  727 + engines: {node: '>=6.9.0'}
  728 + dependencies:
  729 + '@babel/code-frame': 7.22.5
  730 + '@babel/generator': 7.22.5
  731 + '@babel/helper-environment-visitor': 7.22.5
  732 + '@babel/helper-function-name': 7.22.5
  733 + '@babel/helper-hoist-variables': 7.22.5
  734 + '@babel/helper-split-export-declaration': 7.22.5
  735 + '@babel/parser': 7.22.5
  736 + '@babel/types': 7.22.5
  737 + debug: 4.3.4
  738 + globals: 11.12.0
  739 + transitivePeerDependencies:
  740 + - supports-color
  741 + dev: true
  742 +
525 743 /@babel/types@7.18.4:
526 744 resolution: {integrity: sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==}
527 745 engines: {node: '>=6.9.0'}
... ... @@ -529,6 +747,15 @@ packages:
529 747 '@babel/helper-validator-identifier': 7.16.7
530 748 to-fast-properties: 2.0.0
531 749
  750 + /@babel/types@7.22.5:
  751 + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
  752 + engines: {node: '>=6.9.0'}
  753 + dependencies:
  754 + '@babel/helper-string-parser': 7.22.5
  755 + '@babel/helper-validator-identifier': 7.22.5
  756 + to-fast-properties: 2.0.0
  757 + dev: true
  758 +
532 759 /@commitlint/cli@17.0.2:
533 760 resolution: {integrity: sha512-Axe89Js0YzGGd4gxo3JLlF7yIdjOVpG1LbOorGc6PfYF+drBh14PvarSDLzyd2TNqdylUCq9wb9/A88ZjIdyhA==}
534 761 engines: {node: '>=v14'}
... ... @@ -689,32 +916,230 @@ packages:
689 916 chalk: 4.1.2
690 917 dev: true
691 918
692   - /@cspotcode/source-map-support@0.8.1:
693   - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
  919 + /@cspotcode/source-map-support@0.8.1:
  920 + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
  921 + engines: {node: '>=12'}
  922 + dependencies:
  923 + '@jridgewell/trace-mapping': 0.3.9
  924 + dev: true
  925 +
  926 + /@css-render/plugin-bem@0.15.10(css-render@0.15.10):
  927 + resolution: {integrity: sha512-V7b08sM2PWJlXI7BJiVIa0Sg30H3u/jHay4AclNXfF2yRFwwb4ZJjggsMfzwj3WSihAdNf2WTqvOU5qsOD80Dg==}
  928 + peerDependencies:
  929 + css-render: ~0.15.10
  930 + dependencies:
  931 + css-render: 0.15.10
  932 + dev: false
  933 +
  934 + /@css-render/vue3-ssr@0.15.10(vue@3.2.37):
  935 + resolution: {integrity: sha512-keGKnkB2nyVGoA8GezMKNsmvTGXEzgLOGGlgshwOTSEzd1dsROyZ2m/khJ9jV5zbzDM4rWeAWbWF0zwHemsJcw==}
  936 + peerDependencies:
  937 + vue: ^3.0.11
  938 + dependencies:
  939 + vue: 3.2.37
  940 + dev: false
  941 +
  942 + /@emotion/hash@0.8.0:
  943 + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
  944 + dev: false
  945 +
  946 + /@esbuild/android-arm64@0.17.19:
  947 + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
  948 + engines: {node: '>=12'}
  949 + cpu: [arm64]
  950 + os: [android]
  951 + requiresBuild: true
  952 + dev: true
  953 + optional: true
  954 +
  955 + /@esbuild/android-arm@0.17.19:
  956 + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
  957 + engines: {node: '>=12'}
  958 + cpu: [arm]
  959 + os: [android]
  960 + requiresBuild: true
  961 + dev: true
  962 + optional: true
  963 +
  964 + /@esbuild/android-x64@0.17.19:
  965 + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
  966 + engines: {node: '>=12'}
  967 + cpu: [x64]
  968 + os: [android]
  969 + requiresBuild: true
  970 + dev: true
  971 + optional: true
  972 +
  973 + /@esbuild/darwin-arm64@0.17.19:
  974 + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
  975 + engines: {node: '>=12'}
  976 + cpu: [arm64]
  977 + os: [darwin]
  978 + requiresBuild: true
  979 + dev: true
  980 + optional: true
  981 +
  982 + /@esbuild/darwin-x64@0.17.19:
  983 + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
  984 + engines: {node: '>=12'}
  985 + cpu: [x64]
  986 + os: [darwin]
  987 + requiresBuild: true
  988 + dev: true
  989 + optional: true
  990 +
  991 + /@esbuild/freebsd-arm64@0.17.19:
  992 + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
  993 + engines: {node: '>=12'}
  994 + cpu: [arm64]
  995 + os: [freebsd]
  996 + requiresBuild: true
  997 + dev: true
  998 + optional: true
  999 +
  1000 + /@esbuild/freebsd-x64@0.17.19:
  1001 + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
  1002 + engines: {node: '>=12'}
  1003 + cpu: [x64]
  1004 + os: [freebsd]
  1005 + requiresBuild: true
  1006 + dev: true
  1007 + optional: true
  1008 +
  1009 + /@esbuild/linux-arm64@0.17.19:
  1010 + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
  1011 + engines: {node: '>=12'}
  1012 + cpu: [arm64]
  1013 + os: [linux]
  1014 + requiresBuild: true
  1015 + dev: true
  1016 + optional: true
  1017 +
  1018 + /@esbuild/linux-arm@0.17.19:
  1019 + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
  1020 + engines: {node: '>=12'}
  1021 + cpu: [arm]
  1022 + os: [linux]
  1023 + requiresBuild: true
  1024 + dev: true
  1025 + optional: true
  1026 +
  1027 + /@esbuild/linux-ia32@0.17.19:
  1028 + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
  1029 + engines: {node: '>=12'}
  1030 + cpu: [ia32]
  1031 + os: [linux]
  1032 + requiresBuild: true
  1033 + dev: true
  1034 + optional: true
  1035 +
  1036 + /@esbuild/linux-loong64@0.17.19:
  1037 + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
  1038 + engines: {node: '>=12'}
  1039 + cpu: [loong64]
  1040 + os: [linux]
  1041 + requiresBuild: true
  1042 + dev: true
  1043 + optional: true
  1044 +
  1045 + /@esbuild/linux-mips64el@0.17.19:
  1046 + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
  1047 + engines: {node: '>=12'}
  1048 + cpu: [mips64el]
  1049 + os: [linux]
  1050 + requiresBuild: true
  1051 + dev: true
  1052 + optional: true
  1053 +
  1054 + /@esbuild/linux-ppc64@0.17.19:
  1055 + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
  1056 + engines: {node: '>=12'}
  1057 + cpu: [ppc64]
  1058 + os: [linux]
  1059 + requiresBuild: true
  1060 + dev: true
  1061 + optional: true
  1062 +
  1063 + /@esbuild/linux-riscv64@0.17.19:
  1064 + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
  1065 + engines: {node: '>=12'}
  1066 + cpu: [riscv64]
  1067 + os: [linux]
  1068 + requiresBuild: true
  1069 + dev: true
  1070 + optional: true
  1071 +
  1072 + /@esbuild/linux-s390x@0.17.19:
  1073 + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
  1074 + engines: {node: '>=12'}
  1075 + cpu: [s390x]
  1076 + os: [linux]
  1077 + requiresBuild: true
  1078 + dev: true
  1079 + optional: true
  1080 +
  1081 + /@esbuild/linux-x64@0.17.19:
  1082 + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
  1083 + engines: {node: '>=12'}
  1084 + cpu: [x64]
  1085 + os: [linux]
  1086 + requiresBuild: true
  1087 + dev: true
  1088 + optional: true
  1089 +
  1090 + /@esbuild/netbsd-x64@0.17.19:
  1091 + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
  1092 + engines: {node: '>=12'}
  1093 + cpu: [x64]
  1094 + os: [netbsd]
  1095 + requiresBuild: true
  1096 + dev: true
  1097 + optional: true
  1098 +
  1099 + /@esbuild/openbsd-x64@0.17.19:
  1100 + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
  1101 + engines: {node: '>=12'}
  1102 + cpu: [x64]
  1103 + os: [openbsd]
  1104 + requiresBuild: true
  1105 + dev: true
  1106 + optional: true
  1107 +
  1108 + /@esbuild/sunos-x64@0.17.19:
  1109 + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
  1110 + engines: {node: '>=12'}
  1111 + cpu: [x64]
  1112 + os: [sunos]
  1113 + requiresBuild: true
  1114 + dev: true
  1115 + optional: true
  1116 +
  1117 + /@esbuild/win32-arm64@0.17.19:
  1118 + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
  1119 + engines: {node: '>=12'}
  1120 + cpu: [arm64]
  1121 + os: [win32]
  1122 + requiresBuild: true
  1123 + dev: true
  1124 + optional: true
  1125 +
  1126 + /@esbuild/win32-ia32@0.17.19:
  1127 + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
  1128 + engines: {node: '>=12'}
  1129 + cpu: [ia32]
  1130 + os: [win32]
  1131 + requiresBuild: true
  1132 + dev: true
  1133 + optional: true
  1134 +
  1135 + /@esbuild/win32-x64@0.17.19:
  1136 + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
694 1137 engines: {node: '>=12'}
695   - dependencies:
696   - '@jridgewell/trace-mapping': 0.3.9
  1138 + cpu: [x64]
  1139 + os: [win32]
  1140 + requiresBuild: true
697 1141 dev: true
698   -
699   - /@css-render/plugin-bem@0.15.10(css-render@0.15.10):
700   - resolution: {integrity: sha512-V7b08sM2PWJlXI7BJiVIa0Sg30H3u/jHay4AclNXfF2yRFwwb4ZJjggsMfzwj3WSihAdNf2WTqvOU5qsOD80Dg==}
701   - peerDependencies:
702   - css-render: ~0.15.10
703   - dependencies:
704   - css-render: 0.15.10
705   - dev: false
706   -
707   - /@css-render/vue3-ssr@0.15.10(vue@3.2.37):
708   - resolution: {integrity: sha512-keGKnkB2nyVGoA8GezMKNsmvTGXEzgLOGGlgshwOTSEzd1dsROyZ2m/khJ9jV5zbzDM4rWeAWbWF0zwHemsJcw==}
709   - peerDependencies:
710   - vue: ^3.0.11
711   - dependencies:
712   - vue: 3.2.37
713   - dev: false
714   -
715   - /@emotion/hash@0.8.0:
716   - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
717   - dev: false
  1142 + optional: true
718 1143
719 1144 /@eslint/eslintrc@1.3.0:
720 1145 resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==}
... ... @@ -748,6 +1173,19 @@ packages:
748 1173 resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
749 1174 dev: true
750 1175
  1176 + /@iconify/types@2.0.0:
  1177 + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
  1178 + dev: true
  1179 +
  1180 + /@iconify/vue@4.1.1(vue@3.2.37):
  1181 + resolution: {integrity: sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg==}
  1182 + peerDependencies:
  1183 + vue: '>=3'
  1184 + dependencies:
  1185 + '@iconify/types': 2.0.0
  1186 + vue: 3.2.37
  1187 + dev: true
  1188 +
751 1189 /@intlify/core-base@9.2.2:
752 1190 resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==}
753 1191 engines: {node: '>= 14'}
... ... @@ -803,6 +1241,15 @@ packages:
803 1241 '@jridgewell/trace-mapping': 0.3.13
804 1242 dev: true
805 1243
  1244 + /@jridgewell/gen-mapping@0.3.3:
  1245 + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
  1246 + engines: {node: '>=6.0.0'}
  1247 + dependencies:
  1248 + '@jridgewell/set-array': 1.1.1
  1249 + '@jridgewell/sourcemap-codec': 1.4.14
  1250 + '@jridgewell/trace-mapping': 0.3.17
  1251 + dev: true
  1252 +
806 1253 /@jridgewell/resolve-uri@3.0.7:
807 1254 resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==}
808 1255 engines: {node: '>=6.0.0'}
... ... @@ -1049,6 +1496,12 @@ packages:
1049 1496 '@types/node': 17.0.43
1050 1497 dev: true
1051 1498
  1499 + /@types/three@0.143.2:
  1500 + resolution: {integrity: sha512-HjsRWvd6rsXViFeOdU97/pHNDQknzJbFI0/5MrQ0joOlK0uixQH40sDJs/LwkNHhFYUvVENXAUQdKDeiQChHDw==}
  1501 + dependencies:
  1502 + '@types/webxr': 0.5.0
  1503 + dev: false
  1504 +
1052 1505 /@types/three@0.144.0:
1053 1506 resolution: {integrity: sha512-psvEs6q5rLN50jUYZ3D4pZMfxTbdt3A243blt0my7/NcL6chaCZpHe2csbCtx0SOD9fI/XnF3wnVUAYZGqCSYg==}
1054 1507 dependencies:
... ... @@ -1067,7 +1520,6 @@ packages:
1067 1520
1068 1521 /@types/webxr@0.5.0:
1069 1522 resolution: {integrity: sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==}
1070   - dev: true
1071 1523
1072 1524 /@typescript-eslint/eslint-plugin@5.28.0(@typescript-eslint/parser@5.28.0)(eslint@8.17.0)(typescript@4.6.3):
1073 1525 resolution: {integrity: sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA==}
... ... @@ -1236,27 +1688,31 @@ packages:
1236 1688 is-function: 1.0.2
1237 1689 dev: false
1238 1690
1239   - /@vitejs/plugin-vue-jsx@1.3.10:
1240   - resolution: {integrity: sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==}
1241   - engines: {node: '>=12.0.0'}
  1691 + /@vitejs/plugin-vue-jsx@3.0.1(vite@4.3.6)(vue@3.2.37):
  1692 + resolution: {integrity: sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==}
  1693 + engines: {node: ^14.18.0 || >=16.0.0}
  1694 + peerDependencies:
  1695 + vite: ^4.0.0
  1696 + vue: ^3.0.0
1242 1697 dependencies:
1243   - '@babel/core': 7.18.5
1244   - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.18.5)
1245   - '@babel/plugin-transform-typescript': 7.18.4(@babel/core@7.18.5)
1246   - '@rollup/pluginutils': 4.2.1
1247   - '@vue/babel-plugin-jsx': 1.1.1(@babel/core@7.18.5)
1248   - hash-sum: 2.0.0
  1698 + '@babel/core': 7.22.5
  1699 + '@babel/plugin-transform-typescript': 7.22.5(@babel/core@7.22.5)
  1700 + '@vue/babel-plugin-jsx': 1.1.1(@babel/core@7.22.5)
  1701 + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3)
  1702 + vue: 3.2.37
1249 1703 transitivePeerDependencies:
1250 1704 - supports-color
1251 1705 dev: true
1252 1706
1253   - /@vitejs/plugin-vue@1.10.2(vite@2.9.9):
1254   - resolution: {integrity: sha512-/QJ0Z9qfhAFtKRY+r57ziY4BSbGUTGsPRMpB/Ron3QPwBZM4OZAZHdTa4a8PafCwU5DTatXG8TMDoP8z+oDqJw==}
1255   - engines: {node: '>=12.0.0'}
  1707 + /@vitejs/plugin-vue@4.2.3(vite@4.3.6)(vue@3.2.37):
  1708 + resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==}
  1709 + engines: {node: ^14.18.0 || >=16.0.0}
1256 1710 peerDependencies:
1257   - vite: ^2.5.10
  1711 + vite: ^4.0.0
  1712 + vue: ^3.2.25
1258 1713 dependencies:
1259   - vite: 2.9.9(sass@1.52.3)
  1714 + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3)
  1715 + vue: 3.2.37
1260 1716 dev: true
1261 1717
1262 1718 /@volar/code-gen@0.38.9:
... ... @@ -1293,11 +1749,11 @@ packages:
1293 1749 resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==}
1294 1750 dev: true
1295 1751
1296   - /@vue/babel-plugin-jsx@1.1.1(@babel/core@7.18.5):
  1752 + /@vue/babel-plugin-jsx@1.1.1(@babel/core@7.22.5):
1297 1753 resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==}
1298 1754 dependencies:
1299 1755 '@babel/helper-module-imports': 7.16.7
1300   - '@babel/plugin-syntax-jsx': 7.17.12(@babel/core@7.18.5)
  1756 + '@babel/plugin-syntax-jsx': 7.17.12(@babel/core@7.22.5)
1301 1757 '@babel/template': 7.16.7
1302 1758 '@babel/traverse': 7.18.5
1303 1759 '@babel/types': 7.18.4
... ... @@ -1803,6 +2259,17 @@ packages:
1803 2259 picocolors: 1.0.0
1804 2260 dev: true
1805 2261
  2262 + /browserslist@4.21.7:
  2263 + resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==}
  2264 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
  2265 + hasBin: true
  2266 + dependencies:
  2267 + caniuse-lite: 1.0.30001497
  2268 + electron-to-chromium: 1.4.425
  2269 + node-releases: 2.0.12
  2270 + update-browserslist-db: 1.0.11(browserslist@4.21.7)
  2271 + dev: true
  2272 +
1806 2273 /buffer-from@1.1.2:
1807 2274 resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
1808 2275 dev: true
... ... @@ -1867,6 +2334,10 @@ packages:
1867 2334 resolution: {integrity: sha512-mImKeCkyGDAHNywYFA4bqnLAzTUvVkqPvhY4DV47X+Gl2c5Z8c3KNETnXp14GQt11LvxE8AwjzGxJ+rsikiOzg==}
1868 2335 dev: true
1869 2336
  2337 + /caniuse-lite@1.0.30001497:
  2338 + resolution: {integrity: sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==}
  2339 + dev: true
  2340 +
1870 2341 /capital-case@1.0.4:
1871 2342 resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==}
1872 2343 dependencies:
... ... @@ -2471,6 +2942,10 @@ packages:
2471 2942 resolution: {integrity: sha512-niPzKBSYPG06gxLKO0c2kEmgdRMTtIbNrBlvD31Ld8Q57b/K0218U4j8u/OOt25XE1eFOn47FcmQVdx9R1qqxA==}
2472 2943 dev: true
2473 2944
  2945 + /electron-to-chromium@1.4.425:
  2946 + resolution: {integrity: sha512-wv1NufHxu11zfDbY4fglYQApMswleE9FL/DSeyOyauVXDZ+Kco96JK/tPfBUaDqfRarYp2WH2hJ/5UnVywp9Jg==}
  2947 + dev: true
  2948 +
2474 2949 /emoji-regex@8.0.0:
2475 2950 resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
2476 2951 dev: true
... ... @@ -2546,218 +3021,40 @@ packages:
2546 3021 is-symbol: 1.0.4
2547 3022 dev: true
2548 3023
2549   - /esbuild-android-64@0.14.43:
2550   - resolution: {integrity: sha512-kqFXAS72K6cNrB6RiM7YJ5lNvmWRDSlpi7ZuRZ1hu1S3w0zlwcoCxWAyM23LQUyZSs1PbjHgdbbfYAN8IGh6xg==}
2551   - engines: {node: '>=12'}
2552   - cpu: [x64]
2553   - os: [android]
2554   - requiresBuild: true
2555   - dev: true
2556   - optional: true
2557   -
2558   - /esbuild-android-arm64@0.14.43:
2559   - resolution: {integrity: sha512-bKS2BBFh+7XZY9rpjiHGRNA7LvWYbZWP87pLehggTG7tTaCDvj8qQGOU/OZSjCSKDYbgY7Q+oDw8RlYQ2Jt2BA==}
2560   - engines: {node: '>=12'}
2561   - cpu: [arm64]
2562   - os: [android]
2563   - requiresBuild: true
2564   - dev: true
2565   - optional: true
2566   -
2567   - /esbuild-darwin-64@0.14.43:
2568   - resolution: {integrity: sha512-/3PSilx011ttoieRGkSZ0XV8zjBf2C9enV4ScMMbCT4dpx0mFhMOpFnCHkOK0pWGB8LklykFyHrWk2z6DENVUg==}
2569   - engines: {node: '>=12'}
2570   - cpu: [x64]
2571   - os: [darwin]
2572   - requiresBuild: true
2573   - dev: true
2574   - optional: true
2575   -
2576   - /esbuild-darwin-arm64@0.14.43:
2577   - resolution: {integrity: sha512-1HyFUKs8DMCBOvw1Qxpr5Vv/ThNcVIFb5xgXWK3pyT40WPvgYIiRTwJCvNs4l8i5qWF8/CK5bQxJVDjQvtv0Yw==}
2578   - engines: {node: '>=12'}
2579   - cpu: [arm64]
2580   - os: [darwin]
2581   - requiresBuild: true
2582   - dev: true
2583   - optional: true
2584   -
2585   - /esbuild-freebsd-64@0.14.43:
2586   - resolution: {integrity: sha512-FNWc05TPHYgaXjbPZO5/rJKSBslfG6BeMSs8GhwnqAKP56eEhvmzwnIz1QcC9cRVyO+IKqWNfmHFkCa1WJTULA==}
2587   - engines: {node: '>=12'}
2588   - cpu: [x64]
2589   - os: [freebsd]
2590   - requiresBuild: true
2591   - dev: true
2592   - optional: true
2593   -
2594   - /esbuild-freebsd-arm64@0.14.43:
2595   - resolution: {integrity: sha512-amrYopclz3VohqisOPR6hA3GOWA3LZC1WDLnp21RhNmoERmJ/vLnOpnrG2P/Zao+/erKTCUqmrCIPVtj58DRoA==}
2596   - engines: {node: '>=12'}
2597   - cpu: [arm64]
2598   - os: [freebsd]
2599   - requiresBuild: true
2600   - dev: true
2601   - optional: true
2602   -
2603   - /esbuild-linux-32@0.14.43:
2604   - resolution: {integrity: sha512-KoxoEra+9O3AKVvgDFvDkiuddCds6q71owSQEYwjtqRV7RwbPzKxJa6+uyzUulHcyGVq0g15K0oKG5CFBcvYDw==}
2605   - engines: {node: '>=12'}
2606   - cpu: [ia32]
2607   - os: [linux]
2608   - requiresBuild: true
2609   - dev: true
2610   - optional: true
2611   -
2612   - /esbuild-linux-64@0.14.43:
2613   - resolution: {integrity: sha512-EwINwGMyiJMgBby5/SbMqKcUhS5AYAZ2CpEBzSowsJPNBJEdhkCTtEjk757TN/wxgbu3QklqDM6KghY660QCUw==}
2614   - engines: {node: '>=12'}
2615   - cpu: [x64]
2616   - os: [linux]
2617   - requiresBuild: true
2618   - dev: true
2619   - optional: true
2620   -
2621   - /esbuild-linux-arm64@0.14.43:
2622   - resolution: {integrity: sha512-UlSpjMWllAc70zYbHxWuDS3FJytyuR/gHJYBr8BICcTNb/TSOYVBg6U7b3jZ3mILTrgzwJUHwhEwK18FZDouUQ==}
2623   - engines: {node: '>=12'}
2624   - cpu: [arm64]
2625   - os: [linux]
2626   - requiresBuild: true
2627   - dev: true
2628   - optional: true
2629   -
2630   - /esbuild-linux-arm@0.14.43:
2631   - resolution: {integrity: sha512-e6YzQUoDxxtyamuF12eVzzRC7bbEFSZohJ6igQB9tBqnNmIQY3fI6Cns3z2wxtbZ3f2o6idkD2fQnlvs2902Dg==}
2632   - engines: {node: '>=12'}
2633   - cpu: [arm]
2634   - os: [linux]
2635   - requiresBuild: true
2636   - dev: true
2637   - optional: true
2638   -
2639   - /esbuild-linux-mips64le@0.14.43:
2640   - resolution: {integrity: sha512-f+v8cInPEL1/SDP//CfSYzcDNgE4CY3xgDV81DWm3KAPWzhvxARrKxB1Pstf5mB56yAslJDxu7ryBUPX207EZA==}
2641   - engines: {node: '>=12'}
2642   - cpu: [mips64el]
2643   - os: [linux]
2644   - requiresBuild: true
2645   - dev: true
2646   - optional: true
2647   -
2648   - /esbuild-linux-ppc64le@0.14.43:
2649   - resolution: {integrity: sha512-5wZYMDGAL/K2pqkdIsW+I4IR41kyfHr/QshJcNpUfK3RjB3VQcPWOaZmc+74rm4ZjVirYrtz+jWw0SgxtxRanA==}
2650   - engines: {node: '>=12'}
2651   - cpu: [ppc64]
2652   - os: [linux]
2653   - requiresBuild: true
2654   - dev: true
2655   - optional: true
2656   -
2657   - /esbuild-linux-riscv64@0.14.43:
2658   - resolution: {integrity: sha512-lYcAOUxp85hC7lSjycJUVSmj4/9oEfSyXjb/ua9bNl8afonaduuqtw7hvKMoKuYnVwOCDw4RSfKpcnIRDWq+Bw==}
2659   - engines: {node: '>=12'}
2660   - cpu: [riscv64]
2661   - os: [linux]
2662   - requiresBuild: true
2663   - dev: true
2664   - optional: true
2665   -
2666   - /esbuild-linux-s390x@0.14.43:
2667   - resolution: {integrity: sha512-27e43ZhHvhFE4nM7HqtUbMRu37I/4eNSUbb8FGZWszV+uLzMIsHDwLoBiJmw7G9N+hrehNPeQ4F5Ujad0DrUKQ==}
2668   - engines: {node: '>=12'}
2669   - cpu: [s390x]
2670   - os: [linux]
2671   - requiresBuild: true
2672   - dev: true
2673   - optional: true
2674   -
2675   - /esbuild-netbsd-64@0.14.43:
2676   - resolution: {integrity: sha512-2mH4QF6hHBn5zzAfxEI/2eBC0mspVsZ6UVo821LpAJKMvLJPBk3XJO5xwg7paDqSqpl7p6IRrAenW999AEfJhQ==}
2677   - engines: {node: '>=12'}
2678   - cpu: [x64]
2679   - os: [netbsd]
2680   - requiresBuild: true
2681   - dev: true
2682   - optional: true
2683   -
2684   - /esbuild-openbsd-64@0.14.43:
2685   - resolution: {integrity: sha512-ZhQpiZjvqCqO8jKdGp9+8k9E/EHSA+zIWOg+grwZasI9RoblqJ1QiZqqi7jfd6ZrrG1UFBNGe4m0NFxCFbMVbg==}
2686   - engines: {node: '>=12'}
2687   - cpu: [x64]
2688   - os: [openbsd]
2689   - requiresBuild: true
2690   - dev: true
2691   - optional: true
2692   -
2693   - /esbuild-sunos-64@0.14.43:
2694   - resolution: {integrity: sha512-DgxSi9DaHReL9gYuul2rrQCAapgnCJkh3LSHPKsY26zytYppG0HgkgVF80zjIlvEsUbGBP/GHQzBtrezj/Zq1Q==}
2695   - engines: {node: '>=12'}
2696   - cpu: [x64]
2697   - os: [sunos]
2698   - requiresBuild: true
2699   - dev: true
2700   - optional: true
2701   -
2702   - /esbuild-windows-32@0.14.43:
2703   - resolution: {integrity: sha512-Ih3+2O5oExiqm0mY6YYE5dR0o8+AspccQ3vIAtRodwFvhuyGLjb0Hbmzun/F3Lw19nuhPMu3sW2fqIJ5xBxByw==}
2704   - engines: {node: '>=12'}
2705   - cpu: [ia32]
2706   - os: [win32]
2707   - requiresBuild: true
2708   - dev: true
2709   - optional: true
2710   -
2711   - /esbuild-windows-64@0.14.43:
2712   - resolution: {integrity: sha512-8NsuNfI8xwFuJbrCuI+aBqNTYkrWErejFO5aYM+yHqyHuL8mmepLS9EPzAzk8rvfaJrhN0+RvKWAcymViHOKEw==}
2713   - engines: {node: '>=12'}
2714   - cpu: [x64]
2715   - os: [win32]
2716   - requiresBuild: true
2717   - dev: true
2718   - optional: true
2719   -
2720   - /esbuild-windows-arm64@0.14.43:
2721   - resolution: {integrity: sha512-7ZlD7bo++kVRblJEoG+cepljkfP8bfuTPz5fIXzptwnPaFwGS6ahvfoYzY7WCf5v/1nX2X02HDraVItTgbHnKw==}
2722   - engines: {node: '>=12'}
2723   - cpu: [arm64]
2724   - os: [win32]
2725   - requiresBuild: true
2726   - dev: true
2727   - optional: true
2728   -
2729 3024 /esbuild@0.11.3:
2730 3025 resolution: {integrity: sha512-BzVRHcCtFepjS9WcqRjqoIxLqgpK21a8J4Zi4msSGxDxiXVO1IbcqT1KjhdDDnJxKfe7bvzZrvMEX+bVO0Elcw==}
2731 3026 hasBin: true
2732 3027 requiresBuild: true
2733 3028 dev: true
2734 3029
2735   - /esbuild@0.14.43:
2736   - resolution: {integrity: sha512-Uf94+kQmy/5jsFwKWiQB4hfo/RkM9Dh7b79p8yqd1tshULdr25G2szLz631NoH3s2ujnKEKVD16RmOxvCNKRFA==}
  3030 + /esbuild@0.17.19:
  3031 + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
2737 3032 engines: {node: '>=12'}
2738 3033 hasBin: true
2739 3034 requiresBuild: true
2740 3035 optionalDependencies:
2741   - esbuild-android-64: 0.14.43
2742   - esbuild-android-arm64: 0.14.43
2743   - esbuild-darwin-64: 0.14.43
2744   - esbuild-darwin-arm64: 0.14.43
2745   - esbuild-freebsd-64: 0.14.43
2746   - esbuild-freebsd-arm64: 0.14.43
2747   - esbuild-linux-32: 0.14.43
2748   - esbuild-linux-64: 0.14.43
2749   - esbuild-linux-arm: 0.14.43
2750   - esbuild-linux-arm64: 0.14.43
2751   - esbuild-linux-mips64le: 0.14.43
2752   - esbuild-linux-ppc64le: 0.14.43
2753   - esbuild-linux-riscv64: 0.14.43
2754   - esbuild-linux-s390x: 0.14.43
2755   - esbuild-netbsd-64: 0.14.43
2756   - esbuild-openbsd-64: 0.14.43
2757   - esbuild-sunos-64: 0.14.43
2758   - esbuild-windows-32: 0.14.43
2759   - esbuild-windows-64: 0.14.43
2760   - esbuild-windows-arm64: 0.14.43
  3036 + '@esbuild/android-arm': 0.17.19
  3037 + '@esbuild/android-arm64': 0.17.19
  3038 + '@esbuild/android-x64': 0.17.19
  3039 + '@esbuild/darwin-arm64': 0.17.19
  3040 + '@esbuild/darwin-x64': 0.17.19
  3041 + '@esbuild/freebsd-arm64': 0.17.19
  3042 + '@esbuild/freebsd-x64': 0.17.19
  3043 + '@esbuild/linux-arm': 0.17.19
  3044 + '@esbuild/linux-arm64': 0.17.19
  3045 + '@esbuild/linux-ia32': 0.17.19
  3046 + '@esbuild/linux-loong64': 0.17.19
  3047 + '@esbuild/linux-mips64el': 0.17.19
  3048 + '@esbuild/linux-ppc64': 0.17.19
  3049 + '@esbuild/linux-riscv64': 0.17.19
  3050 + '@esbuild/linux-s390x': 0.17.19
  3051 + '@esbuild/linux-x64': 0.17.19
  3052 + '@esbuild/netbsd-x64': 0.17.19
  3053 + '@esbuild/openbsd-x64': 0.17.19
  3054 + '@esbuild/sunos-x64': 0.17.19
  3055 + '@esbuild/win32-arm64': 0.17.19
  3056 + '@esbuild/win32-ia32': 0.17.19
  3057 + '@esbuild/win32-x64': 0.17.19
2761 3058 dev: true
2762 3059
2763 3060 /escalade@3.1.1:
... ... @@ -3469,10 +3766,6 @@ packages:
3469 3766 dependencies:
3470 3767 function-bind: 1.1.1
3471 3768
3472   - /hash-sum@2.0.0:
3473   - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
3474   - dev: true
3475   -
3476 3769 /he@1.2.0:
3477 3770 resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
3478 3771 hasBin: true
... ... @@ -3928,6 +4221,12 @@ packages:
3928 4221 hasBin: true
3929 4222 dev: true
3930 4223
  4224 + /json5@2.2.3:
  4225 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
  4226 + engines: {node: '>=6'}
  4227 + hasBin: true
  4228 + dev: true
  4229 +
3931 4230 /jsonfile@6.1.0:
3932 4231 resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
3933 4232 dependencies:
... ... @@ -4053,6 +4352,12 @@ packages:
4053 4352 tslib: 2.4.0
4054 4353 dev: true
4055 4354
  4355 + /lru-cache@5.1.1:
  4356 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
  4357 + dependencies:
  4358 + yallist: 3.1.1
  4359 + dev: true
  4360 +
4056 4361 /lru-cache@6.0.0:
4057 4362 resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
4058 4363 engines: {node: '>=10'}
... ... @@ -4185,6 +4490,10 @@ packages:
4185 4490 resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
4186 4491 dev: true
4187 4492
  4493 + /mitt@3.0.0:
  4494 + resolution: {integrity: sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==}
  4495 + dev: false
  4496 +
4188 4497 /mkdirp@1.0.4:
4189 4498 resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
4190 4499 engines: {node: '>=10'}
... ... @@ -4267,6 +4576,12 @@ packages:
4267 4576 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
4268 4577 hasBin: true
4269 4578
  4579 + /nanoid@3.3.6:
  4580 + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
  4581 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
  4582 + hasBin: true
  4583 + dev: true
  4584 +
4270 4585 /natural-compare@1.4.0:
4271 4586 resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
4272 4587 dev: true
... ... @@ -4308,6 +4623,10 @@ packages:
4308 4623 upper-case: 2.0.2
4309 4624 dev: true
4310 4625
  4626 + /node-releases@2.0.12:
  4627 + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
  4628 + dev: true
  4629 +
4311 4630 /node-releases@2.0.5:
4312 4631 resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==}
4313 4632 dev: true
... ... @@ -4697,6 +5016,15 @@ packages:
4697 5016 picocolors: 1.0.0
4698 5017 source-map-js: 1.0.2
4699 5018
  5019 + /postcss@8.4.24:
  5020 + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==}
  5021 + engines: {node: ^10 || ^12 || >=14}
  5022 + dependencies:
  5023 + nanoid: 3.3.6
  5024 + picocolors: 1.0.0
  5025 + source-map-js: 1.0.2
  5026 + dev: true
  5027 +
4700 5028 /prelude-ls@1.2.1:
4701 5029 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
4702 5030 engines: {node: '>= 0.8.0'}
... ... @@ -4904,6 +5232,14 @@ packages:
4904 5232 fsevents: 2.3.2
4905 5233 dev: true
4906 5234
  5235 + /rollup@3.24.0:
  5236 + resolution: {integrity: sha512-OgraHOIg2YpHQTjl0/ymWfFNBEyPucB7lmhXrQUh38qNOegxLapSPFs9sNr0qKR75awW41D93XafoR2QfhBdUQ==}
  5237 + engines: {node: '>=14.18.0', npm: '>=8.0.0'}
  5238 + hasBin: true
  5239 + optionalDependencies:
  5240 + fsevents: 2.3.2
  5241 + dev: true
  5242 +
4907 5243 /run-async@2.4.1:
4908 5244 resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
4909 5245 engines: {node: '>=0.12.0'}
... ... @@ -5294,6 +5630,10 @@ packages:
5294 5630 resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
5295 5631 dev: true
5296 5632
  5633 + /three@0.143.0:
  5634 + resolution: {integrity: sha512-oKcAGYHhJ46TGEuHjodo2n6TY2R6lbvrkp+feKZxqsUL/WkH7GKKaeu6RHeyb2Xjfk2dPLRKLsOP0KM2VgT8Zg==}
  5635 + dev: false
  5636 +
5297 5637 /three@0.145.0:
5298 5638 resolution: {integrity: sha512-EKoHQEtEJ4CB6b2BGMBgLZrfwLjXcSUfoI/MiIXUuRpeYsfK5aPWbYhdtIVWOH+x6X0TouldHKHBuc/LAiFzAw==}
5299 5639 dev: false
... ... @@ -5477,6 +5817,17 @@ packages:
5477 5817 engines: {node: '>= 0.8'}
5478 5818 dev: true
5479 5819
  5820 + /update-browserslist-db@1.0.11(browserslist@4.21.7):
  5821 + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
  5822 + hasBin: true
  5823 + peerDependencies:
  5824 + browserslist: '>= 4.21.0'
  5825 + dependencies:
  5826 + browserslist: 4.21.7
  5827 + escalade: 3.1.1
  5828 + picocolors: 1.0.0
  5829 + dev: true
  5830 +
5480 5831 /upper-case-first@2.0.2:
5481 5832 resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==}
5482 5833 dependencies:
... ... @@ -5571,7 +5922,7 @@ packages:
5571 5922 global: 4.4.0
5572 5923 dev: false
5573 5924
5574   - /vite-plugin-compression@0.5.1(vite@2.9.9):
  5925 + /vite-plugin-compression@0.5.1(vite@4.3.6):
5575 5926 resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==}
5576 5927 peerDependencies:
5577 5928 vite: '>=2.0.0'
... ... @@ -5579,12 +5930,12 @@ packages:
5579 5930 chalk: 4.1.2
5580 5931 debug: 4.3.4
5581 5932 fs-extra: 10.1.0
5582   - vite: 2.9.9(sass@1.52.3)
  5933 + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3)
5583 5934 transitivePeerDependencies:
5584 5935 - supports-color
5585 5936 dev: true
5586 5937
5587   - /vite-plugin-html@3.2.0(vite@2.9.9):
  5938 + /vite-plugin-html@3.2.0(vite@4.3.6):
5588 5939 resolution: {integrity: sha512-2VLCeDiHmV/BqqNn5h2V+4280KRgQzCFN47cst3WiNK848klESPQnzuC3okH5XHtgwHH/6s1Ho/YV6yIO0pgoQ==}
5589 5940 peerDependencies:
5590 5941 vite: '>=2.0.0'
... ... @@ -5601,7 +5952,7 @@ packages:
5601 5952 html-minifier-terser: 6.1.0
5602 5953 node-html-parser: 5.4.2
5603 5954 pathe: 0.2.0
5604   - vite: 2.9.9(sass@1.52.3)
  5955 + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3)
5605 5956 dev: true
5606 5957
5607 5958 /vite-plugin-importer@0.2.5:
... ... @@ -5614,7 +5965,7 @@ packages:
5614 5965 - supports-color
5615 5966 dev: true
5616 5967
5617   - /vite-plugin-mock@2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@2.9.9):
  5968 + /vite-plugin-mock@2.9.6(mockjs@1.1.0)(rollup@2.75.6)(vite@4.3.6):
5618 5969 resolution: {integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==}
5619 5970 engines: {node: '>=12.0.0'}
5620 5971 peerDependencies:
... ... @@ -5631,7 +5982,7 @@ packages:
5631 5982 fast-glob: 3.2.11
5632 5983 mockjs: 1.1.0
5633 5984 path-to-regexp: 6.2.1
5634   - vite: 2.9.9(sass@1.52.3)
  5985 + vite: 4.3.6(@types/node@16.11.40)(sass@1.52.3)
5635 5986 transitivePeerDependencies:
5636 5987 - rollup
5637 5988 - supports-color
... ... @@ -5645,26 +5996,35 @@ packages:
5645 5996 monaco-editor: 0.33.0
5646 5997 dev: true
5647 5998
5648   - /vite@2.9.9(sass@1.52.3):
5649   - resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==}
5650   - engines: {node: '>=12.2.0'}
  5999 + /vite@4.3.6(@types/node@16.11.40)(sass@1.52.3):
  6000 + resolution: {integrity: sha512-cqIyLSbA6gornMS659AXTVKF7cvSHMdKmJJwQ9DXq3lwsT1uZSdktuBRlpHQ8VnOWx0QHtjDwxPpGtyo9Fh/Qg==}
  6001 + engines: {node: ^14.18.0 || >=16.0.0}
5651 6002 hasBin: true
5652 6003 peerDependencies:
  6004 + '@types/node': '>= 14'
5653 6005 less: '*'
5654 6006 sass: '*'
5655 6007 stylus: '*'
  6008 + sugarss: '*'
  6009 + terser: ^5.4.0
5656 6010 peerDependenciesMeta:
  6011 + '@types/node':
  6012 + optional: true
5657 6013 less:
5658 6014 optional: true
5659 6015 sass:
5660 6016 optional: true
5661 6017 stylus:
5662 6018 optional: true
  6019 + sugarss:
  6020 + optional: true
  6021 + terser:
  6022 + optional: true
5663 6023 dependencies:
5664   - esbuild: 0.14.43
5665   - postcss: 8.4.14
5666   - resolve: 1.22.0
5667   - rollup: 2.75.6
  6024 + '@types/node': 16.11.40
  6025 + esbuild: 0.17.19
  6026 + postcss: 8.4.24
  6027 + rollup: 3.24.0
5668 6028 sass: 1.52.3
5669 6029 optionalDependencies:
5670 6030 fsevents: 2.3.2
... ... @@ -5679,6 +6039,14 @@ packages:
5679 6039 vue: 3.2.37
5680 6040 dev: false
5681 6041
  6042 + /vue-3d-loader@2.1.7:
  6043 + resolution: {integrity: sha512-nOwCfxs7r5u4rvb5ir1TecUG9kHnwVYRhjwvuXnSbmIh+8v5+UG90YzXWMjRX5qu9EYqJrIUAJyzE+6SRfamcw==}
  6044 + dependencies:
  6045 + '@types/three': 0.143.2
  6046 + three: 0.143.0
  6047 + vue: 3.2.37
  6048 + dev: false
  6049 +
5682 6050 /vue-demi@0.12.5(vue@3.2.37):
5683 6051 resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==}
5684 6052 engines: {node: '>=12'}
... ... @@ -5870,7 +6238,7 @@ packages:
5870 6238 '@webassemblyjs/wasm-parser': 1.11.1
5871 6239 acorn: 8.7.1
5872 6240 acorn-import-assertions: 1.8.0(acorn@8.7.1)
5873   - browserslist: 4.20.4
  6241 + browserslist: 4.21.7
5874 6242 chrome-trace-event: 1.0.3
5875 6243 enhanced-resolve: 5.12.0
5876 6244 es-module-lexer: 0.9.3
... ... @@ -5945,6 +6313,10 @@ packages:
5945 6313 engines: {node: '>=10'}
5946 6314 dev: true
5947 6315
  6316 + /yallist@3.1.1:
  6317 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
  6318 + dev: true
  6319 +
5948 6320 /yallist@4.0.0:
5949 6321 resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
5950 6322 dev: true
... ...
  1 +{
  2 + "nodes": [
  3 + {
  4 + "id": "0",
  5 + "name": "Myriel",
  6 + "symbolSize": "@integer(0, 50)",
  7 + "x": -266.82776,
  8 + "y": 299.6904,
  9 + "value": "@integer(0, 50)",
  10 + "category": 3
  11 + },
  12 + {
  13 + "id": "1",
  14 + "name": "Napoleon",
  15 + "symbolSize": "@integer(0, 50)",
  16 + "x": -418.08344,
  17 + "y": 446.8853,
  18 + "value": "@integer(0, 50)",
  19 + "category": 5
  20 + },
  21 + {
  22 + "id": "2",
  23 + "name": "MlleBaptistine",
  24 + "symbolSize": "@integer(0, 50)",
  25 + "x": -212.76357,
  26 + "y": 245.29176,
  27 + "value": "@integer(0, 50)",
  28 + "category": 1
  29 + },
  30 + {
  31 + "id": "3",
  32 + "name": "MmeMagloire",
  33 + "symbolSize": "@integer(0, 50)",
  34 + "x": -242.82404,
  35 + "y": 235.26283,
  36 + "value": "@integer(0, 50)",
  37 + "category": 1
  38 + },
  39 + {
  40 + "id": "4",
  41 + "name": "CountessDeLo",
  42 + "symbolSize": "@integer(0, 50)",
  43 + "x": -379.30386,
  44 + "y": 429.06424,
  45 + "value": "@integer(0, 50)",
  46 + "category": 0
  47 + }
  48 + ],
  49 + "links": [
  50 + {
  51 + "source": "1",
  52 + "target": "@integer(2, 4)"
  53 + },
  54 + {
  55 + "source": "2",
  56 + "target": "@integer(3, 4)"
  57 + },
  58 + {
  59 + "source": "3",
  60 + "target": "@integer(0, 2)"
  61 + },
  62 + {
  63 + "source": "3",
  64 + "target": "@integer(0, 1)"
  65 + },
  66 + {
  67 + "source": "4",
  68 + "target": "@integer(0, 3)"
  69 + }
  70 + ],
  71 + "categories": [
  72 + {
  73 + "name": "A"
  74 + },
  75 + {
  76 + "name": "B"
  77 + },
  78 + {
  79 + "name": "C"
  80 + },
  81 + {
  82 + "name": "D"
  83 + },
  84 + {
  85 + "name": "E"
  86 + },
  87 + {
  88 + "name": "F"
  89 + },
  90 + {
  91 + "name": "G"
  92 + },
  93 + {
  94 + "name": "H"
  95 + },
  96 + {
  97 + "name": "I"
  98 + }
  99 + ]
  100 + }
\ No newline at end of file
... ...
... ... @@ -19,6 +19,8 @@ export const capsuleUrl = '/mock/capsule'
19 19 export const wordCloudUrl = '/mock/wordCloud'
20 20 export const treemapUrl = '/mock/treemap'
21 21 export const threeEarth01Url = '/mock/threeEarth01Data'
  22 +export const sankeyUrl = '/mock/sankey'
  23 +export const graphUrl = '/mock/graphData'
22 24
23 25 const mockObject: MockMethod[] = [
24 26 {
... ... @@ -103,6 +105,16 @@ const mockObject: MockMethod[] = [
103 105 method: RequestHttpEnum.GET,
104 106 response: () => test.threeEarth01Data
105 107 },
  108 + {
  109 + url: sankeyUrl,
  110 + method: RequestHttpEnum.GET,
  111 + response: () => test.fetchSankey
  112 + },
  113 + {
  114 + url: graphUrl,
  115 + method: RequestHttpEnum.GET,
  116 + response: () => test.graphData
  117 + },
106 118 ]
107 119
108 120 export default mockObject
... ...
  1 +{
  2 + "label": [
  3 + {
  4 + "name": "a"
  5 + },
  6 + {
  7 + "name": "b"
  8 + },
  9 + {
  10 + "name": "a1"
  11 + },
  12 + {
  13 + "name": "a2"
  14 + },
  15 + {
  16 + "name": "b1"
  17 + },
  18 + {
  19 + "name": "b2"
  20 + }
  21 + ],
  22 + "links": [
  23 + {
  24 + "source": "a",
  25 + "target": "a1",
  26 + "value": "@integer(0, 10)"
  27 + },
  28 + {
  29 + "source": "a",
  30 + "target": "a2",
  31 + "value": "@integer(0, 10)"
  32 + },
  33 + {
  34 + "source": "b",
  35 + "target": "b1",
  36 + "value": "@integer(0, 10)"
  37 + },
  38 + {
  39 + "source": "a",
  40 + "target": "b1",
  41 + "value": "@integer(0, 10)"
  42 + },
  43 + {
  44 + "source": "b1",
  45 + "target": "a1",
  46 + "value": "@integer(0, 10)"
  47 + },
  48 + {
  49 + "source": "b1",
  50 + "target": "b2",
  51 + "value": "@integer(0, 10)"
  52 + }
  53 + ],
  54 + "levels": [
  55 + {
  56 + "depth": 0,
  57 + "itemStyle": {
  58 + "color": "#decbe4"
  59 + },
  60 + "lineStyle": {
  61 + "color": "source",
  62 + "opacity": 0.9
  63 + }
  64 + },
  65 + {
  66 + "depth": 1,
  67 + "itemStyle": {
  68 + "color": "#b3cde3"
  69 + },
  70 + "lineStyle": {
  71 + "color": "source",
  72 + "opacity": 0.6
  73 + }
  74 + },
  75 + {
  76 + "depth": 2,
  77 + "itemStyle": {
  78 + "color": "#ccebc5"
  79 + },
  80 + "lineStyle": {
  81 + "color": "source",
  82 + "opacity": 0.6
  83 + }
  84 + }
  85 + ]
  86 +}
... ...
... ... @@ -2,6 +2,8 @@ import heatmapJson from './heatMapData.json'
2 2 import scatterJson from './scatter.json'
3 3 import mapJson from './map.json'
4 4 import tTreemapJson from './treemap.json'
  5 +import sankeyJson from './sankey.json'
  6 +import graphDataJson from './graph.json'
5 7
6 8 export default {
7 9 // 单图表
... ... @@ -219,5 +221,19 @@ export default {
219 221 'endArray|10': [{ name: '@name', N: '@integer(10, 100)', E: '@integer(10, 100)' }]
220 222 }
221 223 ]
222   - }
  224 + },
  225 + // 桑基图
  226 + fetchSankey: {
  227 + code: 0,
  228 + status: 200,
  229 + msg: '请求成功',
  230 + data: sankeyJson
  231 + },
  232 + // 关系图
  233 + graphData: {
  234 + code: 0,
  235 + status: 200,
  236 + msg: '请求成功',
  237 + data: graphDataJson
  238 + },
223 239 }
... ...
... ... @@ -35,7 +35,11 @@ import Person from './person.png'
35 35
36 36 import { icon } from '@/plugins'
37 37 import { useUserStore } from '@/store/external/modules/user'
38   -const { ChatboxEllipsesIcon, PersonIcon, LogOutOutlineIcon, SettingsSharpIcon } = icon.ionicons5
  38 +const {
  39 + PersonIcon,
  40 + LogOutOutlineIcon,
  41 + SettingsSharpIcon
  42 +} = icon.ionicons5
39 43
40 44 const t = window['$t']
41 45
... ...
... ... @@ -257,9 +257,36 @@
257 257 <n-switch v-model:value="legend.show" size="small"></n-switch>
258 258 </template>
259 259 <setting-item-box name="图例文字">
260   - <setting-item>
  260 + <setting-item name="颜色">
261 261 <n-color-picker size="small" v-model:value="legend.textStyle.color"></n-color-picker>
262 262 </setting-item>
  263 + <setting-item name="大小">
  264 + <n-input-number v-model:value="legend.textStyle.fontSize" :min="1" size="small"></n-input-number>
  265 + </setting-item>
  266 + </setting-item-box>
  267 + <setting-item-box name="图例位置">
  268 + <setting-item name="x轴">
  269 + <n-select v-model:value="legend.x" size="small" :options="legendConfig.lengendX" />
  270 + </setting-item>
  271 + <setting-item name="y轴">
  272 + <n-select v-model:value="legend.y" size="small" :options="legendConfig.lengendY" />
  273 + </setting-item>
  274 + </setting-item-box>
  275 + <setting-item-box name="图例信息">
  276 + <setting-item name="方向">
  277 + <n-select v-model:value="legend.orient" size="small" :options="legendConfig.orient" />
  278 + </setting-item>
  279 + <setting-item name="形状">
  280 + <n-select v-model:value="legend.icon" size="small" :options="legendConfig.shape" />
  281 + </setting-item>
  282 + </setting-item-box>
  283 + <setting-item-box name="图例大小">
  284 + <setting-item name="宽">
  285 + <n-input-number v-model:value="legend.itemWidth" :min="1" size="small"></n-input-number>
  286 + </setting-item>
  287 + <setting-item name="高">
  288 + <n-input-number v-model:value="legend.itemHeight" :min="1" size="small"></n-input-number>
  289 + </setting-item>
263 290 </setting-item-box>
264 291 </collapse-item>
265 292
... ... @@ -309,9 +336,9 @@
309 336 </template>
310 337
311 338 <script setup lang="ts">
312   -import { PropType, computed } from 'vue'
  339 +import { PropType, computed, watch } from 'vue'
313 340 import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
314   -import { axisConfig } from '@/packages/chartConfiguration/echarts/index'
  341 +import { axisConfig, legendConfig } from '@/packages/chartConfiguration/echarts/index'
315 342 import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting'
316 343 import { icon } from '@/plugins'
317 344 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
... ... @@ -360,4 +387,14 @@ const grid = computed(() => {
360 387 const visualMap = computed(() => {
361 388 return props.optionData.visualMap
362 389 })
  390 +
  391 +// 监听legend color颜色改变type = scroll的颜色
  392 +watch(() => legend.value && legend.value.textStyle.color, (newVal) => {
  393 + if (legend.value && newVal) {
  394 + legend.value.pageTextStyle.color = newVal
  395 + }
  396 +}, {
  397 + immediate: true,
  398 + deep: true,
  399 +})
363 400 </script>
... ...
1 1 <template>
2   - <div class="go-Flipper" :class="[flipType, { go: isFlipping }]">
  2 + <div class="go-flipper" :class="[flipType, { go: isFlipping }]">
3 3 <div class="digital front" :data-front="frontTextFromData"></div>
4 4 <div class="digital back" :data-back="backTextFromData"></div>
5 5 </div>
6 6 </template>
7 7
8 8 <script lang="ts" setup>
9   -import { ref, PropType, watch } from 'vue'
10   -import { FlipType } from './index'
  9 +import { ref, PropType, watch, nextTick } from 'vue'
  10 +import { FlipType } from './index'
11 11
12 12 const props = defineProps({
13 13 flipType: {
... ... @@ -43,6 +43,10 @@ const props = defineProps({
43 43 backColor: {
44 44 type: String,
45 45 default: '#000000'
  46 + },
  47 + borderWidth: {
  48 + type: Number,
  49 + default: 2
46 50 }
47 51 })
48 52
... ... @@ -50,19 +54,27 @@ const isFlipping = ref(false)
50 54 const frontTextFromData = ref(props.count || 0)
51 55 const backTextFromData = ref(props.count || 0)
52 56
  57 +let timeoutID: any = 0
  58 +
53 59 // 翻牌
54   -const flip = (front: string | number, back: string | number) => {
  60 +const flip = async (front: string | number, back: string | number) => {
55 61 // 如果处于翻转中,则不执行
56   - if (isFlipping.value) return
  62 + if (isFlipping.value) {
  63 + isFlipping.value = false // 立即结束此次动画
  64 + clearTimeout(timeoutID) // 清除上一个计时器任务
  65 + await nextTick()
  66 + await flip(front, back) // 开始最后一次翻牌任务
  67 + return
  68 + }
  69 +
57 70 // 设置翻盘前后数据
58 71 backTextFromData.value = back
59 72 frontTextFromData.value = front
60   -
61 73 // 设置翻转状态为true
62 74 isFlipping.value = true
63 75
64 76 // 翻牌结束的行为
65   - setTimeout(() => {
  77 + timeoutID = setTimeout(() => {
66 78 isFlipping.value = false // 设置翻转状态为false
67 79 frontTextFromData.value = back
68 80 }, props.duration)
... ... @@ -86,6 +98,7 @@ $radius: v-bind('`${props.radius}px`');
86 98 $width: v-bind('`${props.width}px`');
87 99 $height: v-bind('`${props.height}px`');
88 100 $perspective: v-bind('`${props.height * 2}px`');
  101 +$borderWidth: v-bind('`${props.borderWidth * 2}px`');
89 102 $speed: v-bind('`${props.duration / 1000}s`');
90 103 $shadowColor: #000000;
91 104 $lineColor: #4a9ef8;
... ... @@ -125,13 +138,12 @@ $lineColor: #4a9ef8;
125 138 }
126 139 // #endregion
127 140
128   -.go-Flipper {
  141 +.go-flipper {
129 142 display: inline-block;
130 143 position: relative;
131 144 width: $width;
132 145 height: $height;
133 146 line-height: $height;
134   - border: solid 1px $backColor;
135 147 border-radius: $radius;
136 148 background: $frontColor;
137 149 font-size: $width;
... ... @@ -139,6 +151,17 @@ $lineColor: #4a9ef8;
139 151 box-shadow: 0 0 6px rgba($color: $shadowColor, $alpha: 0.5); // 阴影部分
140 152 text-align: center;
141 153 // font-family: 'Helvetica Neue';
  154 + &::after {
  155 + content: '';
  156 + position: absolute;
  157 + z-index: 10;
  158 + left: 0;
  159 + top: 0;
  160 + right: 0;
  161 + bottom: 0;
  162 + box-shadow: inset 0 0 $borderWidth 0 $frontColor; // 内测阴影部分
  163 + border-radius: $radius;
  164 + }
142 165
143 166 .digital:before,
144 167 .digital:after {
... ... @@ -191,6 +214,8 @@ $lineColor: #4a9ef8;
191 214 }
192 215 &.down.go .back:after {
193 216 animation: backFlipDown $speed ease-in-out both;
  217 + box-shadow: 0 2px $borderWidth 0 $frontColor;
  218 + backface-visibility: hidden;
194 219 }
195 220 /*向上翻*/
196 221 &.up .front:after {
... ... @@ -213,6 +238,8 @@ $lineColor: #4a9ef8;
213 238 }
214 239 &.up.go .back:before {
215 240 animation: backFlipUp $speed ease-in-out both;
  241 + box-shadow: 0 -2px $borderWidth 0 $frontColor;
  242 + backface-visibility: hidden;
216 243 }
217 244 }
218 245 </style>
... ...
... ... @@ -12,6 +12,7 @@ export enum DragKeyEnum {
12 12 // 不同页面保存操作
13 13 export enum SavePageEnum {
14 14 CHART = 'SaveChart',
  15 + CHART_TO_PREVIEW = 'ChartToPreview',
15 16 JSON = 'SaveJSON',
16 17 CLOSE = 'close'
17 18 }
... ...
... ... @@ -12,5 +12,7 @@ export enum StorageEnum {
12 12 // 工作台布局配置
13 13 GO_CHART_LAYOUT_STORE = 'GO_CHART_LAYOUT',
14 14 // 工作台需要保存的数据
15   - GO_CHART_STORAGE_LIST = 'GO_CHART_STORAGE_LIST'
  15 + GO_CHART_STORAGE_LIST = 'GO_CHART_STORAGE_LIST',
  16 + // 用户存储的图片媒体
  17 + GO_USER_MEDIA_PHOTOS = 'GO_USER_MEDIA_PHOTOS'
16 18 }
... ...
... ... @@ -80,10 +80,11 @@ export const originUseChartDataFetch = (
80 80 if (res) {
81 81 try {
82 82 const filter = targetComponent.filter
83   - echartsUpdateHandle(newFunctionHandle(res?.data, res, filter))
  83 + const { data } = res
  84 + echartsUpdateHandle(newFunctionHandle(data, res, filter))
84 85 // 更新回调函数
85 86 if (updateCallback) {
86   - updateCallback(newFunctionHandle(res?.data, res, filter))
  87 + updateCallback(newFunctionHandle(data, res, filter))
87 88 }
88 89 } catch (error) {
89 90 console.error(error)
... ...
... ... @@ -2,7 +2,7 @@
2 2 <router-view #default="{ Component, route }">
3 3 <transition name="fade" mode="out-in" appear>
4 4 <component
5   - v-if="route.noKeepAlive"
  5 + v-if="route.meta.noKeepAlive"
6 6 :is="Component"
7 7 :key="route.fullPath"
8 8 ></component>
... ...
1 1 export * from './axis'
2 2 export * from './line'
3   -export * from './label'
\ No newline at end of file
  3 +export * from './label'
  4 +export * from './legend'
\ No newline at end of file
... ...
  1 +export const legendConfig = {
  2 + // X轴位置
  3 + lengendX: [
  4 + {
  5 + label: '靠左',
  6 + value: 'left'
  7 + },
  8 + {
  9 + label: '居中',
  10 + value: 'center'
  11 + },
  12 + {
  13 + label: '靠右',
  14 + value: 'right'
  15 + }
  16 + ],
  17 + // y轴位置
  18 + lengendY: [
  19 + {
  20 + label: '靠上',
  21 + value: 'top'
  22 + },
  23 + {
  24 + label: '居中',
  25 + value: 'center'
  26 + },
  27 + {
  28 + label: '靠下',
  29 + value: 'bottom'
  30 + }
  31 + ],
  32 + // 排列方向
  33 + orient: [
  34 + {
  35 + label: '水平',
  36 + value: 'horizontal'
  37 + },
  38 + {
  39 + label: '垂直',
  40 + value: 'vertical'
  41 + }
  42 + ],
  43 + // 形状
  44 + shape: [
  45 + {
  46 + label: '圆形',
  47 + value: 'circle'
  48 + },
  49 + {
  50 + label: '方形',
  51 + value: 'rect'
  52 + },
  53 + {
  54 + label: '圆角方形',
  55 + value: 'roundRect'
  56 + },
  57 + {
  58 + label: '三角形',
  59 + value: 'triangle'
  60 + },
  61 + {
  62 + label: '钢笔形',
  63 + value: 'pin'
  64 + },
  65 + {
  66 + label: '箭头形',
  67 + value: 'arrow'
  68 + }
  69 + ]
  70 +}
... ...
1 1 <template>
2   - <v-chart
3   - ref="vChartRef"
4   - :init-options="initOptions"
5   - :theme="themeColor"
6   - :option="option"
7   - :manual-update="isPreview()"
  2 + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()"
8 3 :update-options="{
9 4 replaceMerge: replaceMergeArr
10   - }"
11   - autoresize
12   - ></v-chart>
  5 + }" autoresize></v-chart>
13 6 </template>
14 7
15 8 <script setup lang="ts">
... ... @@ -27,6 +20,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore
27 20 import { isPreview } from '@/utils'
28 21 import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
29 22 import isObject from 'lodash/isObject'
  23 +import cloneDeep from 'lodash/cloneDeep'
30 24
31 25 const props = defineProps({
32 26 themeSetting: {
... ... @@ -61,11 +55,23 @@ watch(
61 55 if (!isObject(newData) || !('dimensions' in newData)) return
62 56 if (Array.isArray(newData?.dimensions)) {
63 57 const seriesArr = []
64   - for (let i = 0; i < newData.dimensions.length - 1; i++) {
65   - seriesArr.push(seriesItem)
  58 + // 对oldData进行判断,防止传入错误数据之后对旧维度判断产生干扰
  59 + // 此处计算的是dimensions的Y轴维度,若是dimensions.length为0或1,则默认为1,排除X轴维度干扰
  60 + const oldDimensions = Array.isArray(oldData?.dimensions)&&oldData.dimensions.length >= 1 ? oldData.dimensions.length : 1;
  61 + const newDimensions = newData.dimensions.length >= 1 ? newData.dimensions.length : 1;
  62 + const dimensionsGap = newDimensions - oldDimensions;
  63 + if (dimensionsGap < 0) {
  64 + props.chartConfig.option.series.splice(newDimensions - 1)
  65 + } else if (dimensionsGap > 0) {
  66 + if(!oldData || !oldData?.dimensions || !Array.isArray(oldData?.dimensions) || !oldData?.dimensions.length ) {
  67 + props.chartConfig.option.series=[]
  68 + }
  69 + for (let i = 0; i < dimensionsGap; i++) {
  70 + seriesArr.push(cloneDeep(seriesItem))
  71 + }
  72 + props.chartConfig.option.series.push(...seriesArr)
66 73 }
67 74 replaceMergeArr.value = ['series']
68   - props.chartConfig.option.series = seriesArr
69 75 nextTick(() => {
70 76 replaceMergeArr.value = []
71 77 })
... ...
... ... @@ -26,6 +26,7 @@ import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore
26 26 import { isPreview } from '@/utils'
27 27 import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
28 28 import isObject from 'lodash/isObject'
  29 +import cloneDeep from 'lodash/cloneDeep'
29 30
30 31 const props = defineProps({
31 32 themeSetting: {
... ... @@ -61,7 +62,7 @@ watch(
61 62 if (Array.isArray(newData?.dimensions)) {
62 63 const seriesArr = []
63 64 for (let i = 0; i < newData.dimensions.length - 1; i++) {
64   - seriesArr.push(seriesItem)
  65 + seriesArr.push(cloneDeep(seriesItem))
65 66 }
66 67 replaceMergeArr.value = ['series']
67 68 props.chartConfig.option.series = seriesArr
... ...
... ... @@ -16,7 +16,8 @@ export enum ThemeEnum {
16 16 MACARON = 'macaron',
17 17 BLUE = 'blue',
18 18 DARKBLUE = 'darkblue',
19   - WINE = 'wine'
  19 + WINE = 'wine',
  20 + WEIXIN = 'tileLayer'
20 21 }
21 22
22 23 export enum LangEnum {
... ...
... ... @@ -8,7 +8,7 @@ import AMapLoader from '@amap/amap-jsapi-loader'
8 8 import { CreateComponentType } from '@/packages/index.d'
9 9 import { useChartDataFetch } from '@/hooks'
10 10 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
11   -import { MarkerEnum } from './config'
  11 +import { MarkerEnum, ThemeEnum } from './config'
12 12 import { isArray } from '@/utils'
13 13
14 14 const props = defineProps({
... ... @@ -51,7 +51,6 @@ const initMap = (newData: any) => {
51 51 resizeEnable: true,
52 52 zoom: amapZindex.value, // 地图显示的缩放级别
53 53 center: [amapLon.value, amapLat.value],
54   - mapStyle: `amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`, //自定义地图的显示样式
55 54 lang: lang.value,
56 55 features: features.value,
57 56 pitch: pitch.value, // 地图俯仰角度,有效范围 0 度- 83 度
... ... @@ -60,6 +59,14 @@ const initMap = (newData: any) => {
60 59 willReadFrequently: true
61 60 })
62 61 dataHandle(props.chartConfig.option.dataset)
  62 + let satellite = new AMap.TileLayer.Satellite()
  63 + let roadNet = new AMap.TileLayer.RoadNet()
  64 + if (newData.amapStyleKey === ThemeEnum.WEIXIN) {
  65 + mapIns.add([satellite, roadNet])
  66 + } else {
  67 + mapIns.remove([satellite, roadNet])
  68 + mapIns.setMapStyle(`amap://styles/${amapStyleKeyCustom.value !== '' ? amapStyleKeyCustom.value : amapStyleKey.value}`)
  69 + }
63 70 })
64 71 .catch(e => {})
65 72 }
... ...
  1 +import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
  2 +import { DialConfig } from './index'
  3 +import { CreateComponentType } from '@/packages/index.d'
  4 +import cloneDeep from 'lodash/cloneDeep'
  5 +
  6 +export const includes = []
  7 +const option = {
  8 + backgroundColor: '#0E1327',
  9 + dataset:70,
  10 + series: [{
  11 + type: "gauge",
  12 + data: [{
  13 + value: 70,
  14 + itemStyle: { // 指针样式
  15 + color: '#2AF4FF'
  16 + }
  17 + }],
  18 + min: 0, //最小刻度
  19 + max: 100, //最大刻度
  20 + splitNumber: 10, //刻度数量
  21 + center: ['50%', '55%'],
  22 + radius: '80%',
  23 + axisLine: {
  24 + lineStyle: {
  25 + color: [
  26 + [0, 'rgba(0,212,230,0.5)'],
  27 + [1, 'rgba(28,128,245,0)']
  28 + ],
  29 + width: 170
  30 + }
  31 + },
  32 + axisLabel: { // 文字样式
  33 + color: '#eee',
  34 + fontSize: 14,
  35 + },
  36 + axisTick: {
  37 + show: false,
  38 + },
  39 + splitLine: {
  40 + show: false,
  41 + },
  42 + detail: {
  43 + show: false,
  44 + },
  45 + pointer: {
  46 + length: '80%',
  47 + width: 4
  48 + },
  49 + animationDuration: 2000,
  50 + },
  51 + {
  52 + name: '外部刻度',
  53 + type: 'gauge',
  54 + center: ['50%', '55%'],
  55 + radius: '90%',
  56 + axisLine: {
  57 + show: true,
  58 + lineStyle: {
  59 + width: 25,
  60 + color: [ // 表盘外部颜色
  61 + [0, '#1369E380'],
  62 + [1, '#1369E380']
  63 + ],
  64 + }
  65 + },
  66 + axisLabel: {
  67 + show:false,
  68 + },
  69 + axisTick: {
  70 + splitNumber: 5,
  71 + lineStyle: { //刻度颜色
  72 + color: '#42E5FB',
  73 + width: 2,
  74 + },
  75 + },
  76 + splitLine: {
  77 + length: 15,
  78 + lineStyle: {
  79 + color: '#42E5FB',
  80 + }
  81 + },
  82 + },
  83 + ]
  84 +};
  85 +
  86 +export default class Config extends PublicConfigClass implements CreateComponentType {
  87 + public key: string = DialConfig.key
  88 + public chartConfig = cloneDeep(DialConfig)
  89 + // 图表配置项
  90 + public option = echartOptionProfixHandle(option, includes)
  91 +}
... ...
  1 +<template>
  2 + <!-- 遍历 seriesList -->
  3 + <CollapseItem :name="`圆环`" :expanded="true">
  4 + <SettingItemBox name="数据">
  5 + <SettingItem name="数值">
  6 + <n-input-number v-model:value="config.dataset" :min="dialConfig.min" :max="dialConfig.max" :step="1" size="small" placeholder="数值">
  7 + </n-input-number>
  8 + </SettingItem>
  9 + </SettingItemBox>
  10 + <!-- Echarts 全局设置 -->
  11 + <!-- 表盘刻度字体 -->
  12 + <SettingItemBox name="字体">
  13 + <SettingItem name="颜色">
  14 + <n-color-picker size="small" :modes="['hex']" v-model:value="dialConfig.axisLabel.color"></n-color-picker>
  15 + </SettingItem>
  16 + <SettingItem name="字体大小">
  17 + <n-input-number
  18 + v-model:value="dialConfig.axisLabel.fontSize"
  19 + :min="0"
  20 + :step="1"
  21 + size="small"
  22 + placeholder="字体大小"
  23 + >
  24 + </n-input-number>
  25 + </SettingItem>
  26 + </SettingItemBox>
  27 + <!-- 表盘 -->
  28 + <SettingItemBox name="表盘外部">
  29 + <SettingItem name="颜色" >
  30 + <n-color-picker size="small" :modes="['hex']" v-model:value="config.series[1].axisLine.lineStyle.color[1][1]"></n-color-picker>
  31 + </SettingItem>
  32 + </SettingItemBox>
  33 + <!-- 指针 -->
  34 + <SettingItemBox name="指针">
  35 + <SettingItem name="颜色" >
  36 + <n-color-picker size="small" :modes="['hex']" v-model:value="dialConfig.data[0].itemStyle.color"></n-color-picker>
  37 + </SettingItem>
  38 + <SettingItem name="宽度">
  39 + <n-input-number v-model:value="dialConfig.pointer.width" :min="0" :step="1" size="small" placeholder="数值">
  40 + </n-input-number>
  41 + </SettingItem>
  42 + </SettingItemBox>
  43 + <SettingItemBox name="刻度">
  44 + <SettingItem name="最小值">
  45 + <n-input-number v-model:value="dialConfig.min" :min="0" :step="1" size="small" placeholder="数值">
  46 + </n-input-number>
  47 + </SettingItem>
  48 + <SettingItem name="最大值">
  49 + <n-input-number v-model:value="dialConfig.max" :min="0" :step="1" size="small" placeholder="数值">
  50 + </n-input-number>
  51 + </SettingItem>
  52 + <SettingItem name="颜色" >
  53 + <n-color-picker size="small" :modes="['hex']" v-model:value="config.series[1].axisTick.lineStyle.color" @update:value="updateClick"></n-color-picker>
  54 + </SettingItem>
  55 + </SettingItemBox>
  56 +
  57 + </CollapseItem>
  58 + </template>
  59 +
  60 + <script setup lang="ts">
  61 + import { PropType, computed } from 'vue'
  62 + import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  63 + import { GlobalThemeJsonType } from '@/settings/chartThemes'
  64 +
  65 + const props = defineProps({
  66 + optionData: {
  67 + type: Object as PropType<GlobalThemeJsonType>,
  68 + required: true
  69 + }
  70 + })
  71 +
  72 + const config = computed(() => {
  73 + return props.optionData
  74 + })
  75 +
  76 + const dialConfig = computed(() => {
  77 + return props.optionData.series[0]
  78 + })
  79 +
  80 + const updateClick = (val: any) => {
  81 + props.optionData.series[1].splitLine.lineStyle.color=val
  82 + }
  83 + </script>
  84 +
\ No newline at end of file
... ...
  1 +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
  2 +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
  3 +
  4 +export const DialConfig: ConfigType = {
  5 + key: 'Dial',
  6 + chartKey: 'VDial',
  7 + conKey: 'VCDial',
  8 + title: '表盘',
  9 + category: ChatCategoryEnum.MORE,
  10 + categoryName: ChatCategoryEnumName.MORE,
  11 + package: PackagesCategoryEnum.CHARTS,
  12 + chartFrame: ChartFrameEnum.COMMON,
  13 + image:'dial.png'
  14 +}
... ...
  1 +<template>
  2 + <v-chart :theme="themeColor" :init-options="initOptions" :option="option.value" autoresize> </v-chart>
  3 +</template>
  4 +
  5 +<script setup lang="ts">
  6 +import { PropType, reactive, watch } from 'vue'
  7 +import VChart from 'vue-echarts'
  8 +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
  9 +import { use } from 'echarts/core'
  10 +import { CanvasRenderer } from 'echarts/renderers'
  11 +import { PieChart } from 'echarts/charts'
  12 +import { mergeTheme } from '@/packages/public/chart'
  13 +import config, { includes } from './config'
  14 +import { useChartDataFetch } from '@/hooks'
  15 +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
  16 +import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent, TitleComponent } from 'echarts/components'
  17 +
  18 +const props = defineProps({
  19 + themeSetting: {
  20 + type: Object,
  21 + required: true
  22 + },
  23 + themeColor: {
  24 + type: Object,
  25 + required: true
  26 + },
  27 + chartConfig: {
  28 + type: Object as PropType<config>,
  29 + required: true
  30 + }
  31 +})
  32 +
  33 +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
  34 +
  35 +use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent, TitleComponent])
  36 +
  37 +const option = reactive({
  38 + value: {}
  39 +})
  40 +
  41 +const dataHandle = (newData: any) => {
  42 + let config = props.chartConfig.option
  43 + config.series[0].data[0].value = newData
  44 + option.value = mergeTheme(props.chartConfig.option, props.themeSetting, includes)
  45 + option.value = props.chartConfig.option
  46 +}
  47 +
  48 +// 配置时
  49 +watch(
  50 + () => props.chartConfig.option.dataset,
  51 + newData => {
  52 + try {
  53 + dataHandle(newData)
  54 + } catch (error) {
  55 + console.log(error)
  56 + }
  57 + },
  58 + {
  59 + immediate: true,
  60 + deep: false
  61 + }
  62 +)
  63 +
  64 +// 预览时
  65 +useChartDataFetch(props.chartConfig, useChartEditStore, (resData: number) => {
  66 + // @ts-ignore
  67 + option.value.series[0].data[0].value = resData
  68 +})
  69 +</script>
... ...
  1 +import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
  2 +import { GraphConfig } from './index'
  3 +import { CreateComponentType } from '@/packages/index.d'
  4 +import cloneDeep from 'lodash/cloneDeep'
  5 +import dataJson from './data.json'
  6 +
  7 +export const includes = []
  8 +
  9 +// 关系图布局
  10 +export const GraphLayout = [
  11 + { label: '无', value: 'none' },
  12 + { label: '环形', value: 'circular' }
  13 +]
  14 +
  15 +// 标签开关
  16 +export const LabelSwitch = [
  17 + { label: '开启', value: 1 },
  18 + { label: '关闭', value: 0 }
  19 +]
  20 +
  21 +// 标签位置
  22 +export const LabelPosition = [
  23 + { label: '左侧', value: 'left' },
  24 + { label: '右侧', value: 'right' },
  25 + { label: '顶部', value: 'top' },
  26 + { label: '底部', value: 'bottom' },
  27 + { label: '内部', value: 'inside' },
  28 +]
  29 +
  30 +export const option = {
  31 + dataset: { ...dataJson },
  32 + tooltip: {},
  33 + legend:{
  34 + show:true,
  35 + textStyle:{
  36 + color:"#eee",
  37 + fontSize: 14 ,
  38 + },
  39 + data: dataJson.categories.map(function (a) {
  40 + return a.name;
  41 + })
  42 + },
  43 + series: [
  44 + {
  45 + type: 'graph',
  46 + layout: 'none', // none circular环形布局
  47 + data: dataJson.nodes,
  48 + links: dataJson.links,
  49 + categories: dataJson.categories,
  50 + label: { // 标签
  51 + show: 1,
  52 + position: 'right',
  53 + formatter: '{b}'
  54 + },
  55 + labelLayout: {
  56 + hideOverlap: true
  57 + },
  58 + lineStyle: {
  59 + color: 'source', // 线条颜色
  60 + curveness: 0.2 // 线条卷曲程度
  61 + }
  62 + }
  63 + ]
  64 + };
  65 +
  66 +export default class Config extends PublicConfigClass implements CreateComponentType {
  67 + public key = GraphConfig.key
  68 + public chartConfig = cloneDeep(GraphConfig)
  69 + // 图表配置项
  70 + public option = echartOptionProfixHandle(option, includes)
  71 +}
... ...
  1 +<template>
  2 + <div>
  3 + <CollapseItem name="关系图" :expanded="true">
  4 + <SettingItemBox name="样式">
  5 + <setting-item name="布局">
  6 + <n-select v-model:value="graphConfig.layout" :options="GraphLayout" size="small" />
  7 + </setting-item>
  8 + </SettingItemBox>
  9 + <SettingItemBox name="标签">
  10 + <setting-item name="展示">
  11 + <n-select v-model:value="graphConfig.label.show" :options="LabelSwitch" size="small" />
  12 + </setting-item>
  13 + <setting-item name="位置">
  14 + <n-select v-model:value="graphConfig.label.position" :options="LabelPosition" size="small" />
  15 + </setting-item>
  16 + </SettingItemBox>
  17 + <SettingItemBox name="线条">
  18 + <SettingItem name="弧线">
  19 + <!-- 需要输入两位的小数才会变化 -->
  20 + <n-input-number
  21 + v-model:value="optionData.series[0].lineStyle.curveness"
  22 + :min="0"
  23 + :step="0.01"
  24 + placeholder="弯曲程度"
  25 + size="small"
  26 + ></n-input-number>
  27 + </SettingItem>
  28 + </SettingItemBox>
  29 + <SettingItemBox name="图例">
  30 + <SettingItem name="颜色">
  31 + <n-color-picker
  32 + size="small"
  33 + :modes="['hex']"
  34 + v-model:value="optionData.legend.textStyle.color"
  35 + ></n-color-picker>
  36 + </SettingItem>
  37 + <SettingItem name="文本">
  38 + <n-input-number v-model:value="optionData.legend.textStyle.fontSize" :min="0" :step="1" size="small" placeholder="文字大小">
  39 + </n-input-number>
  40 + </SettingItem>
  41 + </SettingItemBox>
  42 + </CollapseItem>
  43 + </div>
  44 +</template>
  45 +
  46 +<script setup lang="ts">
  47 +import { PropType, computed } from 'vue'
  48 +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  49 +import { option, GraphLayout, LabelSwitch, LabelPosition } from './config'
  50 +import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  51 +
  52 +const props = defineProps({
  53 + optionData: {
  54 + type: Object as PropType<typeof option & GlobalThemeJsonType>,
  55 + required: true
  56 + }
  57 +})
  58 +
  59 +const graphConfig = computed<typeof option.series[0]>(() => {
  60 + return props.optionData.series[0]
  61 +})
  62 +</script>
... ...
  1 +{
  2 + "nodes": [
  3 + {
  4 + "id": "0",
  5 + "name": "Myriel",
  6 + "symbolSize": 19.12381,
  7 + "x": -266.82776,
  8 + "y": 299.6904,
  9 + "value": 28.685715,
  10 + "category": 0
  11 + },
  12 + {
  13 + "id": "1",
  14 + "name": "Napoleon",
  15 + "symbolSize": 2.6666666666666665,
  16 + "x": -418.08344,
  17 + "y": 446.8853,
  18 + "value": 4,
  19 + "category": 0
  20 + },
  21 + {
  22 + "id": "2",
  23 + "name": "MlleBaptistine",
  24 + "symbolSize": 6.323809333333333,
  25 + "x": -212.76357,
  26 + "y": 245.29176,
  27 + "value": 9.485714,
  28 + "category": 1
  29 + },
  30 + {
  31 + "id": "3",
  32 + "name": "MmeMagloire",
  33 + "symbolSize": 6.323809333333333,
  34 + "x": -242.82404,
  35 + "y": 235.26283,
  36 + "value": 9.485714,
  37 + "category": 1
  38 + },
  39 + {
  40 + "id": "4",
  41 + "name": "CountessDeLo",
  42 + "symbolSize": 2.6666666666666665,
  43 + "x": -379.30386,
  44 + "y": 429.06424,
  45 + "value": 4,
  46 + "category": 0
  47 + },
  48 + {
  49 + "id": "5",
  50 + "name": "Geborand",
  51 + "symbolSize": 2.6666666666666665,
  52 + "x": -417.26337,
  53 + "y": 406.03506,
  54 + "value": 4,
  55 + "category": 0
  56 + },
  57 + {
  58 + "id": "6",
  59 + "name": "Champtercier",
  60 + "symbolSize": 2.6666666666666665,
  61 + "x": -332.6012,
  62 + "y": 485.16974,
  63 + "value": 4,
  64 + "category": 0
  65 + },
  66 + {
  67 + "id": "7",
  68 + "name": "Cravatte",
  69 + "symbolSize": 2.6666666666666665,
  70 + "x": -382.69568,
  71 + "y": 475.09113,
  72 + "value": 4,
  73 + "category": 0
  74 + },
  75 + {
  76 + "id": "8",
  77 + "name": "Count",
  78 + "symbolSize": 2.6666666666666665,
  79 + "x": -320.384,
  80 + "y": 387.17325,
  81 + "value": 4,
  82 + "category": 0
  83 + },
  84 + {
  85 + "id": "9",
  86 + "name": "OldMan",
  87 + "symbolSize": 2.6666666666666665,
  88 + "x": -344.39832,
  89 + "y": 451.16772,
  90 + "value": 4,
  91 + "category": 0
  92 + },
  93 + {
  94 + "id": "10",
  95 + "name": "Labarre",
  96 + "symbolSize": 2.6666666666666665,
  97 + "x": -89.34107,
  98 + "y": 234.56128,
  99 + "value": 4,
  100 + "category": 1
  101 + },
  102 + {
  103 + "id": "11",
  104 + "name": "Valjean",
  105 + "symbolSize": 66.66666666666667,
  106 + "x": -87.93029,
  107 + "y": -6.8120565,
  108 + "value": 100,
  109 + "category": 1
  110 + },
  111 + {
  112 + "id": "12",
  113 + "name": "Marguerite",
  114 + "symbolSize": 4.495239333333333,
  115 + "x": -339.77908,
  116 + "y": -184.69139,
  117 + "value": 6.742859,
  118 + "category": 1
  119 + },
  120 + {
  121 + "id": "13",
  122 + "name": "MmeDeR",
  123 + "symbolSize": 2.6666666666666665,
  124 + "x": -194.31313,
  125 + "y": 178.55301,
  126 + "value": 4,
  127 + "category": 1
  128 + },
  129 + {
  130 + "id": "14",
  131 + "name": "Isabeau",
  132 + "symbolSize": 2.6666666666666665,
  133 + "x": -158.05168,
  134 + "y": 201.99768,
  135 + "value": 4,
  136 + "category": 1
  137 + },
  138 + {
  139 + "id": "15",
  140 + "name": "Gervais",
  141 + "symbolSize": 2.6666666666666665,
  142 + "x": -127.701546,
  143 + "y": 242.55057,
  144 + "value": 4,
  145 + "category": 1
  146 + },
  147 + {
  148 + "id": "16",
  149 + "name": "Tholomyes",
  150 + "symbolSize": 17.295237333333333,
  151 + "x": -385.2226,
  152 + "y": -393.5572,
  153 + "value": 25.942856,
  154 + "category": 2
  155 + },
  156 + {
  157 + "id": "17",
  158 + "name": "Listolier",
  159 + "symbolSize": 13.638097333333334,
  160 + "x": -516.55884,
  161 + "y": -393.98975,
  162 + "value": 20.457146,
  163 + "category": 2
  164 + },
  165 + {
  166 + "id": "18",
  167 + "name": "Fameuil",
  168 + "symbolSize": 13.638097333333334,
  169 + "x": -464.79382,
  170 + "y": -493.57944,
  171 + "value": 20.457146,
  172 + "category": 2
  173 + },
  174 + {
  175 + "id": "19",
  176 + "name": "Blacheville",
  177 + "symbolSize": 13.638097333333334,
  178 + "x": -515.1624,
  179 + "y": -456.9891,
  180 + "value": 20.457146,
  181 + "category": 2
  182 + },
  183 + {
  184 + "id": "20",
  185 + "name": "Favourite",
  186 + "symbolSize": 13.638097333333334,
  187 + "x": -408.12122,
  188 + "y": -464.5048,
  189 + "value": 20.457146,
  190 + "category": 2
  191 + },
  192 + {
  193 + "id": "21",
  194 + "name": "Dahlia",
  195 + "symbolSize": 13.638097333333334,
  196 + "x": -456.44113,
  197 + "y": -425.13303,
  198 + "value": 20.457146,
  199 + "category": 2
  200 + },
  201 + {
  202 + "id": "22",
  203 + "name": "Zephine",
  204 + "symbolSize": 13.638097333333334,
  205 + "x": -459.1107,
  206 + "y": -362.5133,
  207 + "value": 20.457146,
  208 + "category": 2
  209 + },
  210 + {
  211 + "id": "23",
  212 + "name": "Fantine",
  213 + "symbolSize": 28.266666666666666,
  214 + "x": -313.42786,
  215 + "y": -289.44803,
  216 + "value": 42.4,
  217 + "category": 2
  218 + },
  219 + {
  220 + "id": "24",
  221 + "name": "MmeThenardier",
  222 + "symbolSize": 20.95238266666667,
  223 + "x": 4.6313396,
  224 + "y": -273.8517,
  225 + "value": 31.428574,
  226 + "category": 7
  227 + },
  228 + {
  229 + "id": "25",
  230 + "name": "Thenardier",
  231 + "symbolSize": 30.095235333333335,
  232 + "x": 82.80825,
  233 + "y": -203.1144,
  234 + "value": 45.142853,
  235 + "category": 7
  236 + },
  237 + {
  238 + "id": "26",
  239 + "name": "Cosette",
  240 + "symbolSize": 20.95238266666667,
  241 + "x": 78.64646,
  242 + "y": -31.512747,
  243 + "value": 31.428574,
  244 + "category": 6
  245 + },
  246 + {
  247 + "id": "27",
  248 + "name": "Javert",
  249 + "symbolSize": 31.923806666666668,
  250 + "x": -81.46074,
  251 + "y": -204.20204,
  252 + "value": 47.88571,
  253 + "category": 7
  254 + },
  255 + {
  256 + "id": "28",
  257 + "name": "Fauchelevent",
  258 + "symbolSize": 8.152382000000001,
  259 + "x": -225.73984,
  260 + "y": 82.41631,
  261 + "value": 12.228573,
  262 + "category": 4
  263 + },
  264 + {
  265 + "id": "29",
  266 + "name": "Bamatabois",
  267 + "symbolSize": 15.466666666666667,
  268 + "x": -385.6842,
  269 + "y": -20.206686,
  270 + "value": 23.2,
  271 + "category": 3
  272 + },
  273 + {
  274 + "id": "30",
  275 + "name": "Perpetue",
  276 + "symbolSize": 4.495239333333333,
  277 + "x": -403.92447,
  278 + "y": -197.69823,
  279 + "value": 6.742859,
  280 + "category": 2
  281 + },
  282 + {
  283 + "id": "31",
  284 + "name": "Simplice",
  285 + "symbolSize": 8.152382000000001,
  286 + "x": -281.4253,
  287 + "y": -158.45137,
  288 + "value": 12.228573,
  289 + "category": 2
  290 + },
  291 + {
  292 + "id": "32",
  293 + "name": "Scaufflaire",
  294 + "symbolSize": 2.6666666666666665,
  295 + "x": -122.41348,
  296 + "y": 210.37503,
  297 + "value": 4,
  298 + "category": 1
  299 + },
  300 + {
  301 + "id": "33",
  302 + "name": "Woman1",
  303 + "symbolSize": 4.495239333333333,
  304 + "x": -234.6001,
  305 + "y": -113.15067,
  306 + "value": 6.742859,
  307 + "category": 1
  308 + },
  309 + {
  310 + "id": "34",
  311 + "name": "Judge",
  312 + "symbolSize": 11.809524666666666,
  313 + "x": -387.84915,
  314 + "y": 58.7059,
  315 + "value": 17.714287,
  316 + "category": 3
  317 + },
  318 + {
  319 + "id": "35",
  320 + "name": "Champmathieu",
  321 + "symbolSize": 11.809524666666666,
  322 + "x": -338.2307,
  323 + "y": 87.48405,
  324 + "value": 17.714287,
  325 + "category": 3
  326 + },
  327 + {
  328 + "id": "36",
  329 + "name": "Brevet",
  330 + "symbolSize": 11.809524666666666,
  331 + "x": -453.26874,
  332 + "y": 58.94648,
  333 + "value": 17.714287,
  334 + "category": 3
  335 + },
  336 + {
  337 + "id": "37",
  338 + "name": "Chenildieu",
  339 + "symbolSize": 11.809524666666666,
  340 + "x": -386.44904,
  341 + "y": 140.05937,
  342 + "value": 17.714287,
  343 + "category": 3
  344 + },
  345 + {
  346 + "id": "38",
  347 + "name": "Cochepaille",
  348 + "symbolSize": 11.809524666666666,
  349 + "x": -446.7876,
  350 + "y": 123.38005,
  351 + "value": 17.714287,
  352 + "category": 3
  353 + },
  354 + {
  355 + "id": "39",
  356 + "name": "Pontmercy",
  357 + "symbolSize": 6.323809333333333,
  358 + "x": 336.49738,
  359 + "y": -269.55914,
  360 + "value": 9.485714,
  361 + "category": 6
  362 + },
  363 + {
  364 + "id": "40",
  365 + "name": "Boulatruelle",
  366 + "symbolSize": 2.6666666666666665,
  367 + "x": 29.187843,
  368 + "y": -460.13132,
  369 + "value": 4,
  370 + "category": 7
  371 + },
  372 + {
  373 + "id": "41",
  374 + "name": "Eponine",
  375 + "symbolSize": 20.95238266666667,
  376 + "x": 238.36697,
  377 + "y": -210.00926,
  378 + "value": 31.428574,
  379 + "category": 7
  380 + },
  381 + {
  382 + "id": "42",
  383 + "name": "Anzelma",
  384 + "symbolSize": 6.323809333333333,
  385 + "x": 189.69513,
  386 + "y": -346.50662,
  387 + "value": 9.485714,
  388 + "category": 7
  389 + },
  390 + {
  391 + "id": "43",
  392 + "name": "Woman2",
  393 + "symbolSize": 6.323809333333333,
  394 + "x": -187.00418,
  395 + "y": -145.02663,
  396 + "value": 9.485714,
  397 + "category": 6
  398 + },
  399 + {
  400 + "id": "44",
  401 + "name": "MotherInnocent",
  402 + "symbolSize": 4.495239333333333,
  403 + "x": -252.99521,
  404 + "y": 129.87549,
  405 + "value": 6.742859,
  406 + "category": 4
  407 + },
  408 + {
  409 + "id": "45",
  410 + "name": "Gribier",
  411 + "symbolSize": 2.6666666666666665,
  412 + "x": -296.07935,
  413 + "y": 163.11964,
  414 + "value": 4,
  415 + "category": 4
  416 + },
  417 + {
  418 + "id": "46",
  419 + "name": "Jondrette",
  420 + "symbolSize": 2.6666666666666665,
  421 + "x": 550.3201,
  422 + "y": 522.4031,
  423 + "value": 4,
  424 + "category": 5
  425 + },
  426 + {
  427 + "id": "47",
  428 + "name": "MmeBurgon",
  429 + "symbolSize": 4.495239333333333,
  430 + "x": 488.13535,
  431 + "y": 356.8573,
  432 + "value": 6.742859,
  433 + "category": 5
  434 + },
  435 + {
  436 + "id": "48",
  437 + "name": "Gavroche",
  438 + "symbolSize": 41.06667066666667,
  439 + "x": 387.89572,
  440 + "y": 110.462326,
  441 + "value": 61.600006,
  442 + "category": 8
  443 + },
  444 + {
  445 + "id": "49",
  446 + "name": "Gillenormand",
  447 + "symbolSize": 13.638097333333334,
  448 + "x": 126.4831,
  449 + "y": 68.10622,
  450 + "value": 20.457146,
  451 + "category": 6
  452 + },
  453 + {
  454 + "id": "50",
  455 + "name": "Magnon",
  456 + "symbolSize": 4.495239333333333,
  457 + "x": 127.07365,
  458 + "y": -113.05923,
  459 + "value": 6.742859,
  460 + "category": 6
  461 + },
  462 + {
  463 + "id": "51",
  464 + "name": "MlleGillenormand",
  465 + "symbolSize": 13.638097333333334,
  466 + "x": 162.63559,
  467 + "y": 117.6565,
  468 + "value": 20.457146,
  469 + "category": 6
  470 + },
  471 + {
  472 + "id": "52",
  473 + "name": "MmePontmercy",
  474 + "symbolSize": 4.495239333333333,
  475 + "x": 353.66415,
  476 + "y": -205.89165,
  477 + "value": 6.742859,
  478 + "category": 6
  479 + },
  480 + {
  481 + "id": "53",
  482 + "name": "MlleVaubois",
  483 + "symbolSize": 2.6666666666666665,
  484 + "x": 165.43939,
  485 + "y": 339.7736,
  486 + "value": 4,
  487 + "category": 6
  488 + },
  489 + {
  490 + "id": "54",
  491 + "name": "LtGillenormand",
  492 + "symbolSize": 8.152382000000001,
  493 + "x": 137.69348,
  494 + "y": 196.1069,
  495 + "value": 12.228573,
  496 + "category": 6
  497 + },
  498 + {
  499 + "id": "55",
  500 + "name": "Marius",
  501 + "symbolSize": 35.58095333333333,
  502 + "x": 206.44687,
  503 + "y": -13.805411,
  504 + "value": 53.37143,
  505 + "category": 6
  506 + },
  507 + {
  508 + "id": "56",
  509 + "name": "BaronessT",
  510 + "symbolSize": 4.495239333333333,
  511 + "x": 194.82993,
  512 + "y": 224.78036,
  513 + "value": 6.742859,
  514 + "category": 6
  515 + },
  516 + {
  517 + "id": "57",
  518 + "name": "Mabeuf",
  519 + "symbolSize": 20.95238266666667,
  520 + "x": 597.6618,
  521 + "y": 135.18481,
  522 + "value": 31.428574,
  523 + "category": 8
  524 + },
  525 + {
  526 + "id": "58",
  527 + "name": "Enjolras",
  528 + "symbolSize": 28.266666666666666,
  529 + "x": 355.78366,
  530 + "y": -74.882454,
  531 + "value": 42.4,
  532 + "category": 8
  533 + },
  534 + {
  535 + "id": "59",
  536 + "name": "Combeferre",
  537 + "symbolSize": 20.95238266666667,
  538 + "x": 515.2961,
  539 + "y": -46.167564,
  540 + "value": 31.428574,
  541 + "category": 8
  542 + },
  543 + {
  544 + "id": "60",
  545 + "name": "Prouvaire",
  546 + "symbolSize": 17.295237333333333,
  547 + "x": 614.29285,
  548 + "y": -69.3104,
  549 + "value": 25.942856,
  550 + "category": 8
  551 + },
  552 + {
  553 + "id": "61",
  554 + "name": "Feuilly",
  555 + "symbolSize": 20.95238266666667,
  556 + "x": 550.1917,
  557 + "y": -128.17537,
  558 + "value": 31.428574,
  559 + "category": 8
  560 + },
  561 + {
  562 + "id": "62",
  563 + "name": "Courfeyrac",
  564 + "symbolSize": 24.609526666666667,
  565 + "x": 436.17184,
  566 + "y": -12.7286825,
  567 + "value": 36.91429,
  568 + "category": 8
  569 + },
  570 + {
  571 + "id": "63",
  572 + "name": "Bahorel",
  573 + "symbolSize": 22.780953333333333,
  574 + "x": 602.55225,
  575 + "y": 16.421427,
  576 + "value": 34.17143,
  577 + "category": 8
  578 + },
  579 + {
  580 + "id": "64",
  581 + "name": "Bossuet",
  582 + "symbolSize": 24.609526666666667,
  583 + "x": 455.81955,
  584 + "y": -115.45826,
  585 + "value": 36.91429,
  586 + "category": 8
  587 + },
  588 + {
  589 + "id": "65",
  590 + "name": "Joly",
  591 + "symbolSize": 22.780953333333333,
  592 + "x": 516.40784,
  593 + "y": 47.242233,
  594 + "value": 34.17143,
  595 + "category": 8
  596 + },
  597 + {
  598 + "id": "66",
  599 + "name": "Grantaire",
  600 + "symbolSize": 19.12381,
  601 + "x": 646.4313,
  602 + "y": -151.06331,
  603 + "value": 28.685715,
  604 + "category": 8
  605 + },
  606 + {
  607 + "id": "67",
  608 + "name": "MotherPlutarch",
  609 + "symbolSize": 2.6666666666666665,
  610 + "x": 668.9568,
  611 + "y": 204.65488,
  612 + "value": 4,
  613 + "category": 8
  614 + },
  615 + {
  616 + "id": "68",
  617 + "name": "Gueulemer",
  618 + "symbolSize": 19.12381,
  619 + "x": 78.4799,
  620 + "y": -347.15146,
  621 + "value": 28.685715,
  622 + "category": 7
  623 + },
  624 + {
  625 + "id": "69",
  626 + "name": "Babet",
  627 + "symbolSize": 19.12381,
  628 + "x": 150.35959,
  629 + "y": -298.50797,
  630 + "value": 28.685715,
  631 + "category": 7
  632 + },
  633 + {
  634 + "id": "70",
  635 + "name": "Claquesous",
  636 + "symbolSize": 19.12381,
  637 + "x": 137.3717,
  638 + "y": -410.2809,
  639 + "value": 28.685715,
  640 + "category": 7
  641 + },
  642 + {
  643 + "id": "71",
  644 + "name": "Montparnasse",
  645 + "symbolSize": 17.295237333333333,
  646 + "x": 234.87747,
  647 + "y": -400.85983,
  648 + "value": 25.942856,
  649 + "category": 7
  650 + },
  651 + {
  652 + "id": "72",
  653 + "name": "Toussaint",
  654 + "symbolSize": 6.323809333333333,
  655 + "x": 40.942253,
  656 + "y": 113.78272,
  657 + "value": 9.485714,
  658 + "category": 1
  659 + },
  660 + {
  661 + "id": "73",
  662 + "name": "Child1",
  663 + "symbolSize": 4.495239333333333,
  664 + "x": 437.939,
  665 + "y": 291.58234,
  666 + "value": 6.742859,
  667 + "category": 8
  668 + },
  669 + {
  670 + "id": "74",
  671 + "name": "Child2",
  672 + "symbolSize": 4.495239333333333,
  673 + "x": 466.04922,
  674 + "y": 283.3606,
  675 + "value": 6.742859,
  676 + "category": 8
  677 + },
  678 + {
  679 + "id": "75",
  680 + "name": "Brujon",
  681 + "symbolSize": 13.638097333333334,
  682 + "x": 238.79364,
  683 + "y": -314.06345,
  684 + "value": 20.457146,
  685 + "category": 7
  686 + },
  687 + {
  688 + "id": "76",
  689 + "name": "MmeHucheloup",
  690 + "symbolSize": 13.638097333333334,
  691 + "x": 712.18353,
  692 + "y": 4.8131495,
  693 + "value": 20.457146,
  694 + "category": 8
  695 + }
  696 + ],
  697 + "links": [
  698 + {
  699 + "source": "1",
  700 + "target": "0"
  701 + },
  702 + {
  703 + "source": "2",
  704 + "target": "0"
  705 + },
  706 + {
  707 + "source": "3",
  708 + "target": "0"
  709 + },
  710 + {
  711 + "source": "3",
  712 + "target": "2"
  713 + },
  714 + {
  715 + "source": "4",
  716 + "target": "0"
  717 + },
  718 + {
  719 + "source": "5",
  720 + "target": "0"
  721 + },
  722 + {
  723 + "source": "6",
  724 + "target": "0"
  725 + },
  726 + {
  727 + "source": "7",
  728 + "target": "0"
  729 + },
  730 + {
  731 + "source": "8",
  732 + "target": "0"
  733 + },
  734 + {
  735 + "source": "9",
  736 + "target": "0"
  737 + },
  738 + {
  739 + "source": "11",
  740 + "target": "0"
  741 + },
  742 + {
  743 + "source": "11",
  744 + "target": "2"
  745 + },
  746 + {
  747 + "source": "11",
  748 + "target": "3"
  749 + },
  750 + {
  751 + "source": "11",
  752 + "target": "10"
  753 + },
  754 + {
  755 + "source": "12",
  756 + "target": "11"
  757 + },
  758 + {
  759 + "source": "13",
  760 + "target": "11"
  761 + },
  762 + {
  763 + "source": "14",
  764 + "target": "11"
  765 + },
  766 + {
  767 + "source": "15",
  768 + "target": "11"
  769 + },
  770 + {
  771 + "source": "17",
  772 + "target": "16"
  773 + },
  774 + {
  775 + "source": "18",
  776 + "target": "16"
  777 + },
  778 + {
  779 + "source": "18",
  780 + "target": "17"
  781 + },
  782 + {
  783 + "source": "19",
  784 + "target": "16"
  785 + },
  786 + {
  787 + "source": "19",
  788 + "target": "17"
  789 + },
  790 + {
  791 + "source": "19",
  792 + "target": "18"
  793 + },
  794 + {
  795 + "source": "20",
  796 + "target": "16"
  797 + },
  798 + {
  799 + "source": "20",
  800 + "target": "17"
  801 + },
  802 + {
  803 + "source": "20",
  804 + "target": "18"
  805 + },
  806 + {
  807 + "source": "20",
  808 + "target": "19"
  809 + },
  810 + {
  811 + "source": "21",
  812 + "target": "16"
  813 + },
  814 + {
  815 + "source": "21",
  816 + "target": "17"
  817 + },
  818 + {
  819 + "source": "21",
  820 + "target": "18"
  821 + },
  822 + {
  823 + "source": "21",
  824 + "target": "19"
  825 + },
  826 + {
  827 + "source": "21",
  828 + "target": "20"
  829 + },
  830 + {
  831 + "source": "22",
  832 + "target": "16"
  833 + },
  834 + {
  835 + "source": "22",
  836 + "target": "17"
  837 + },
  838 + {
  839 + "source": "22",
  840 + "target": "18"
  841 + },
  842 + {
  843 + "source": "22",
  844 + "target": "19"
  845 + },
  846 + {
  847 + "source": "22",
  848 + "target": "20"
  849 + },
  850 + {
  851 + "source": "22",
  852 + "target": "21"
  853 + },
  854 + {
  855 + "source": "23",
  856 + "target": "11"
  857 + },
  858 + {
  859 + "source": "23",
  860 + "target": "12"
  861 + },
  862 + {
  863 + "source": "23",
  864 + "target": "16"
  865 + },
  866 + {
  867 + "source": "23",
  868 + "target": "17"
  869 + },
  870 + {
  871 + "source": "23",
  872 + "target": "18"
  873 + },
  874 + {
  875 + "source": "23",
  876 + "target": "19"
  877 + },
  878 + {
  879 + "source": "23",
  880 + "target": "20"
  881 + },
  882 + {
  883 + "source": "23",
  884 + "target": "21"
  885 + },
  886 + {
  887 + "source": "23",
  888 + "target": "22"
  889 + },
  890 + {
  891 + "source": "24",
  892 + "target": "11"
  893 + },
  894 + {
  895 + "source": "24",
  896 + "target": "23"
  897 + },
  898 + {
  899 + "source": "25",
  900 + "target": "11"
  901 + },
  902 + {
  903 + "source": "25",
  904 + "target": "23"
  905 + },
  906 + {
  907 + "source": "25",
  908 + "target": "24"
  909 + },
  910 + {
  911 + "source": "26",
  912 + "target": "11"
  913 + },
  914 + {
  915 + "source": "26",
  916 + "target": "16"
  917 + },
  918 + {
  919 + "source": "26",
  920 + "target": "24"
  921 + },
  922 + {
  923 + "source": "26",
  924 + "target": "25"
  925 + },
  926 + {
  927 + "source": "27",
  928 + "target": "11"
  929 + },
  930 + {
  931 + "source": "27",
  932 + "target": "23"
  933 + },
  934 + {
  935 + "source": "27",
  936 + "target": "24"
  937 + },
  938 + {
  939 + "source": "27",
  940 + "target": "25"
  941 + },
  942 + {
  943 + "source": "27",
  944 + "target": "26"
  945 + },
  946 + {
  947 + "source": "28",
  948 + "target": "11"
  949 + },
  950 + {
  951 + "source": "28",
  952 + "target": "27"
  953 + },
  954 + {
  955 + "source": "29",
  956 + "target": "11"
  957 + },
  958 + {
  959 + "source": "29",
  960 + "target": "23"
  961 + },
  962 + {
  963 + "source": "29",
  964 + "target": "27"
  965 + },
  966 + {
  967 + "source": "30",
  968 + "target": "23"
  969 + },
  970 + {
  971 + "source": "31",
  972 + "target": "11"
  973 + },
  974 + {
  975 + "source": "31",
  976 + "target": "23"
  977 + },
  978 + {
  979 + "source": "31",
  980 + "target": "27"
  981 + },
  982 + {
  983 + "source": "31",
  984 + "target": "30"
  985 + },
  986 + {
  987 + "source": "32",
  988 + "target": "11"
  989 + },
  990 + {
  991 + "source": "33",
  992 + "target": "11"
  993 + },
  994 + {
  995 + "source": "33",
  996 + "target": "27"
  997 + },
  998 + {
  999 + "source": "34",
  1000 + "target": "11"
  1001 + },
  1002 + {
  1003 + "source": "34",
  1004 + "target": "29"
  1005 + },
  1006 + {
  1007 + "source": "35",
  1008 + "target": "11"
  1009 + },
  1010 + {
  1011 + "source": "35",
  1012 + "target": "29"
  1013 + },
  1014 + {
  1015 + "source": "35",
  1016 + "target": "34"
  1017 + },
  1018 + {
  1019 + "source": "36",
  1020 + "target": "11"
  1021 + },
  1022 + {
  1023 + "source": "36",
  1024 + "target": "29"
  1025 + },
  1026 + {
  1027 + "source": "36",
  1028 + "target": "34"
  1029 + },
  1030 + {
  1031 + "source": "36",
  1032 + "target": "35"
  1033 + },
  1034 + {
  1035 + "source": "37",
  1036 + "target": "11"
  1037 + },
  1038 + {
  1039 + "source": "37",
  1040 + "target": "29"
  1041 + },
  1042 + {
  1043 + "source": "37",
  1044 + "target": "34"
  1045 + },
  1046 + {
  1047 + "source": "37",
  1048 + "target": "35"
  1049 + },
  1050 + {
  1051 + "source": "37",
  1052 + "target": "36"
  1053 + },
  1054 + {
  1055 + "source": "38",
  1056 + "target": "11"
  1057 + },
  1058 + {
  1059 + "source": "38",
  1060 + "target": "29"
  1061 + },
  1062 + {
  1063 + "source": "38",
  1064 + "target": "34"
  1065 + },
  1066 + {
  1067 + "source": "38",
  1068 + "target": "35"
  1069 + },
  1070 + {
  1071 + "source": "38",
  1072 + "target": "36"
  1073 + },
  1074 + {
  1075 + "source": "38",
  1076 + "target": "37"
  1077 + },
  1078 + {
  1079 + "source": "39",
  1080 + "target": "25"
  1081 + },
  1082 + {
  1083 + "source": "40",
  1084 + "target": "25"
  1085 + },
  1086 + {
  1087 + "source": "41",
  1088 + "target": "24"
  1089 + },
  1090 + {
  1091 + "source": "41",
  1092 + "target": "25"
  1093 + },
  1094 + {
  1095 + "source": "42",
  1096 + "target": "24"
  1097 + },
  1098 + {
  1099 + "source": "42",
  1100 + "target": "25"
  1101 + },
  1102 + {
  1103 + "source": "42",
  1104 + "target": "41"
  1105 + },
  1106 + {
  1107 + "source": "43",
  1108 + "target": "11"
  1109 + },
  1110 + {
  1111 + "source": "43",
  1112 + "target": "26"
  1113 + },
  1114 + {
  1115 + "source": "43",
  1116 + "target": "27"
  1117 + },
  1118 + {
  1119 + "source": "44",
  1120 + "target": "11"
  1121 + },
  1122 + {
  1123 + "source": "44",
  1124 + "target": "28"
  1125 + },
  1126 + {
  1127 + "source": "45",
  1128 + "target": "28"
  1129 + },
  1130 + {
  1131 + "source": "47",
  1132 + "target": "46"
  1133 + },
  1134 + {
  1135 + "source": "48",
  1136 + "target": "11"
  1137 + },
  1138 + {
  1139 + "source": "48",
  1140 + "target": "25"
  1141 + },
  1142 + {
  1143 + "source": "48",
  1144 + "target": "27"
  1145 + },
  1146 + {
  1147 + "source": "48",
  1148 + "target": "47"
  1149 + },
  1150 + {
  1151 + "source": "49",
  1152 + "target": "11"
  1153 + },
  1154 + {
  1155 + "source": "49",
  1156 + "target": "26"
  1157 + },
  1158 + {
  1159 + "source": "50",
  1160 + "target": "24"
  1161 + },
  1162 + {
  1163 + "source": "50",
  1164 + "target": "49"
  1165 + },
  1166 + {
  1167 + "source": "51",
  1168 + "target": "11"
  1169 + },
  1170 + {
  1171 + "source": "51",
  1172 + "target": "26"
  1173 + },
  1174 + {
  1175 + "source": "51",
  1176 + "target": "49"
  1177 + },
  1178 + {
  1179 + "source": "52",
  1180 + "target": "39"
  1181 + },
  1182 + {
  1183 + "source": "52",
  1184 + "target": "51"
  1185 + },
  1186 + {
  1187 + "source": "53",
  1188 + "target": "51"
  1189 + },
  1190 + {
  1191 + "source": "54",
  1192 + "target": "26"
  1193 + },
  1194 + {
  1195 + "source": "54",
  1196 + "target": "49"
  1197 + },
  1198 + {
  1199 + "source": "54",
  1200 + "target": "51"
  1201 + },
  1202 + {
  1203 + "source": "55",
  1204 + "target": "11"
  1205 + },
  1206 + {
  1207 + "source": "55",
  1208 + "target": "16"
  1209 + },
  1210 + {
  1211 + "source": "55",
  1212 + "target": "25"
  1213 + },
  1214 + {
  1215 + "source": "55",
  1216 + "target": "26"
  1217 + },
  1218 + {
  1219 + "source": "55",
  1220 + "target": "39"
  1221 + },
  1222 + {
  1223 + "source": "55",
  1224 + "target": "41"
  1225 + },
  1226 + {
  1227 + "source": "55",
  1228 + "target": "48"
  1229 + },
  1230 + {
  1231 + "source": "55",
  1232 + "target": "49"
  1233 + },
  1234 + {
  1235 + "source": "55",
  1236 + "target": "51"
  1237 + },
  1238 + {
  1239 + "source": "55",
  1240 + "target": "54"
  1241 + },
  1242 + {
  1243 + "source": "56",
  1244 + "target": "49"
  1245 + },
  1246 + {
  1247 + "source": "56",
  1248 + "target": "55"
  1249 + },
  1250 + {
  1251 + "source": "57",
  1252 + "target": "41"
  1253 + },
  1254 + {
  1255 + "source": "57",
  1256 + "target": "48"
  1257 + },
  1258 + {
  1259 + "source": "57",
  1260 + "target": "55"
  1261 + },
  1262 + {
  1263 + "source": "58",
  1264 + "target": "11"
  1265 + },
  1266 + {
  1267 + "source": "58",
  1268 + "target": "27"
  1269 + },
  1270 + {
  1271 + "source": "58",
  1272 + "target": "48"
  1273 + },
  1274 + {
  1275 + "source": "58",
  1276 + "target": "55"
  1277 + },
  1278 + {
  1279 + "source": "58",
  1280 + "target": "57"
  1281 + },
  1282 + {
  1283 + "source": "59",
  1284 + "target": "48"
  1285 + },
  1286 + {
  1287 + "source": "59",
  1288 + "target": "55"
  1289 + },
  1290 + {
  1291 + "source": "59",
  1292 + "target": "57"
  1293 + },
  1294 + {
  1295 + "source": "59",
  1296 + "target": "58"
  1297 + },
  1298 + {
  1299 + "source": "60",
  1300 + "target": "48"
  1301 + },
  1302 + {
  1303 + "source": "60",
  1304 + "target": "58"
  1305 + },
  1306 + {
  1307 + "source": "60",
  1308 + "target": "59"
  1309 + },
  1310 + {
  1311 + "source": "61",
  1312 + "target": "48"
  1313 + },
  1314 + {
  1315 + "source": "61",
  1316 + "target": "55"
  1317 + },
  1318 + {
  1319 + "source": "61",
  1320 + "target": "57"
  1321 + },
  1322 + {
  1323 + "source": "61",
  1324 + "target": "58"
  1325 + },
  1326 + {
  1327 + "source": "61",
  1328 + "target": "59"
  1329 + },
  1330 + {
  1331 + "source": "61",
  1332 + "target": "60"
  1333 + },
  1334 + {
  1335 + "source": "62",
  1336 + "target": "41"
  1337 + },
  1338 + {
  1339 + "source": "62",
  1340 + "target": "48"
  1341 + },
  1342 + {
  1343 + "source": "62",
  1344 + "target": "55"
  1345 + },
  1346 + {
  1347 + "source": "62",
  1348 + "target": "57"
  1349 + },
  1350 + {
  1351 + "source": "62",
  1352 + "target": "58"
  1353 + },
  1354 + {
  1355 + "source": "62",
  1356 + "target": "59"
  1357 + },
  1358 + {
  1359 + "source": "62",
  1360 + "target": "60"
  1361 + },
  1362 + {
  1363 + "source": "62",
  1364 + "target": "61"
  1365 + },
  1366 + {
  1367 + "source": "63",
  1368 + "target": "48"
  1369 + },
  1370 + {
  1371 + "source": "63",
  1372 + "target": "55"
  1373 + },
  1374 + {
  1375 + "source": "63",
  1376 + "target": "57"
  1377 + },
  1378 + {
  1379 + "source": "63",
  1380 + "target": "58"
  1381 + },
  1382 + {
  1383 + "source": "63",
  1384 + "target": "59"
  1385 + },
  1386 + {
  1387 + "source": "63",
  1388 + "target": "60"
  1389 + },
  1390 + {
  1391 + "source": "63",
  1392 + "target": "61"
  1393 + },
  1394 + {
  1395 + "source": "63",
  1396 + "target": "62"
  1397 + },
  1398 + {
  1399 + "source": "64",
  1400 + "target": "11"
  1401 + },
  1402 + {
  1403 + "source": "64",
  1404 + "target": "48"
  1405 + },
  1406 + {
  1407 + "source": "64",
  1408 + "target": "55"
  1409 + },
  1410 + {
  1411 + "source": "64",
  1412 + "target": "57"
  1413 + },
  1414 + {
  1415 + "source": "64",
  1416 + "target": "58"
  1417 + },
  1418 + {
  1419 + "source": "64",
  1420 + "target": "59"
  1421 + },
  1422 + {
  1423 + "source": "64",
  1424 + "target": "60"
  1425 + },
  1426 + {
  1427 + "source": "64",
  1428 + "target": "61"
  1429 + },
  1430 + {
  1431 + "source": "64",
  1432 + "target": "62"
  1433 + },
  1434 + {
  1435 + "source": "64",
  1436 + "target": "63"
  1437 + },
  1438 + {
  1439 + "source": "65",
  1440 + "target": "48"
  1441 + },
  1442 + {
  1443 + "source": "65",
  1444 + "target": "55"
  1445 + },
  1446 + {
  1447 + "source": "65",
  1448 + "target": "57"
  1449 + },
  1450 + {
  1451 + "source": "65",
  1452 + "target": "58"
  1453 + },
  1454 + {
  1455 + "source": "65",
  1456 + "target": "59"
  1457 + },
  1458 + {
  1459 + "source": "65",
  1460 + "target": "60"
  1461 + },
  1462 + {
  1463 + "source": "65",
  1464 + "target": "61"
  1465 + },
  1466 + {
  1467 + "source": "65",
  1468 + "target": "62"
  1469 + },
  1470 + {
  1471 + "source": "65",
  1472 + "target": "63"
  1473 + },
  1474 + {
  1475 + "source": "65",
  1476 + "target": "64"
  1477 + },
  1478 + {
  1479 + "source": "66",
  1480 + "target": "48"
  1481 + },
  1482 + {
  1483 + "source": "66",
  1484 + "target": "58"
  1485 + },
  1486 + {
  1487 + "source": "66",
  1488 + "target": "59"
  1489 + },
  1490 + {
  1491 + "source": "66",
  1492 + "target": "60"
  1493 + },
  1494 + {
  1495 + "source": "66",
  1496 + "target": "61"
  1497 + },
  1498 + {
  1499 + "source": "66",
  1500 + "target": "62"
  1501 + },
  1502 + {
  1503 + "source": "66",
  1504 + "target": "63"
  1505 + },
  1506 + {
  1507 + "source": "66",
  1508 + "target": "64"
  1509 + },
  1510 + {
  1511 + "source": "66",
  1512 + "target": "65"
  1513 + },
  1514 + {
  1515 + "source": "67",
  1516 + "target": "57"
  1517 + },
  1518 + {
  1519 + "source": "68",
  1520 + "target": "11"
  1521 + },
  1522 + {
  1523 + "source": "68",
  1524 + "target": "24"
  1525 + },
  1526 + {
  1527 + "source": "68",
  1528 + "target": "25"
  1529 + },
  1530 + {
  1531 + "source": "68",
  1532 + "target": "27"
  1533 + },
  1534 + {
  1535 + "source": "68",
  1536 + "target": "41"
  1537 + },
  1538 + {
  1539 + "source": "68",
  1540 + "target": "48"
  1541 + },
  1542 + {
  1543 + "source": "69",
  1544 + "target": "11"
  1545 + },
  1546 + {
  1547 + "source": "69",
  1548 + "target": "24"
  1549 + },
  1550 + {
  1551 + "source": "69",
  1552 + "target": "25"
  1553 + },
  1554 + {
  1555 + "source": "69",
  1556 + "target": "27"
  1557 + },
  1558 + {
  1559 + "source": "69",
  1560 + "target": "41"
  1561 + },
  1562 + {
  1563 + "source": "69",
  1564 + "target": "48"
  1565 + },
  1566 + {
  1567 + "source": "69",
  1568 + "target": "68"
  1569 + },
  1570 + {
  1571 + "source": "70",
  1572 + "target": "11"
  1573 + },
  1574 + {
  1575 + "source": "70",
  1576 + "target": "24"
  1577 + },
  1578 + {
  1579 + "source": "70",
  1580 + "target": "25"
  1581 + },
  1582 + {
  1583 + "source": "70",
  1584 + "target": "27"
  1585 + },
  1586 + {
  1587 + "source": "70",
  1588 + "target": "41"
  1589 + },
  1590 + {
  1591 + "source": "70",
  1592 + "target": "58"
  1593 + },
  1594 + {
  1595 + "source": "70",
  1596 + "target": "68"
  1597 + },
  1598 + {
  1599 + "source": "70",
  1600 + "target": "69"
  1601 + },
  1602 + {
  1603 + "source": "71",
  1604 + "target": "11"
  1605 + },
  1606 + {
  1607 + "source": "71",
  1608 + "target": "25"
  1609 + },
  1610 + {
  1611 + "source": "71",
  1612 + "target": "27"
  1613 + },
  1614 + {
  1615 + "source": "71",
  1616 + "target": "41"
  1617 + },
  1618 + {
  1619 + "source": "71",
  1620 + "target": "48"
  1621 + },
  1622 + {
  1623 + "source": "71",
  1624 + "target": "68"
  1625 + },
  1626 + {
  1627 + "source": "71",
  1628 + "target": "69"
  1629 + },
  1630 + {
  1631 + "source": "71",
  1632 + "target": "70"
  1633 + },
  1634 + {
  1635 + "source": "72",
  1636 + "target": "11"
  1637 + },
  1638 + {
  1639 + "source": "72",
  1640 + "target": "26"
  1641 + },
  1642 + {
  1643 + "source": "72",
  1644 + "target": "27"
  1645 + },
  1646 + {
  1647 + "source": "73",
  1648 + "target": "48"
  1649 + },
  1650 + {
  1651 + "source": "74",
  1652 + "target": "48"
  1653 + },
  1654 + {
  1655 + "source": "74",
  1656 + "target": "73"
  1657 + },
  1658 + {
  1659 + "source": "75",
  1660 + "target": "25"
  1661 + },
  1662 + {
  1663 + "source": "75",
  1664 + "target": "41"
  1665 + },
  1666 + {
  1667 + "source": "75",
  1668 + "target": "48"
  1669 + },
  1670 + {
  1671 + "source": "75",
  1672 + "target": "68"
  1673 + },
  1674 + {
  1675 + "source": "75",
  1676 + "target": "69"
  1677 + },
  1678 + {
  1679 + "source": "75",
  1680 + "target": "70"
  1681 + },
  1682 + {
  1683 + "source": "75",
  1684 + "target": "71"
  1685 + },
  1686 + {
  1687 + "source": "76",
  1688 + "target": "48"
  1689 + },
  1690 + {
  1691 + "source": "76",
  1692 + "target": "58"
  1693 + },
  1694 + {
  1695 + "source": "76",
  1696 + "target": "62"
  1697 + },
  1698 + {
  1699 + "source": "76",
  1700 + "target": "63"
  1701 + },
  1702 + {
  1703 + "source": "76",
  1704 + "target": "64"
  1705 + },
  1706 + {
  1707 + "source": "76",
  1708 + "target": "65"
  1709 + },
  1710 + {
  1711 + "source": "76",
  1712 + "target": "66"
  1713 + }
  1714 + ],
  1715 + "categories": [
  1716 + {
  1717 + "name": "A"
  1718 + },
  1719 + {
  1720 + "name": "B"
  1721 + },
  1722 + {
  1723 + "name": "C"
  1724 + },
  1725 + {
  1726 + "name": "D"
  1727 + },
  1728 + {
  1729 + "name": "E"
  1730 + },
  1731 + {
  1732 + "name": "F"
  1733 + },
  1734 + {
  1735 + "name": "G"
  1736 + },
  1737 + {
  1738 + "name": "H"
  1739 + },
  1740 + {
  1741 + "name": "I"
  1742 + }
  1743 + ]
  1744 + }
\ No newline at end of file
... ...
  1 +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
  2 +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
  3 +
  4 +export const GraphConfig: ConfigType = {
  5 + key: 'Graph',
  6 + chartKey: 'VGraph',
  7 + conKey: 'VCGraph',
  8 + title: '关系图',
  9 + category: ChatCategoryEnum.MORE,
  10 + categoryName: ChatCategoryEnumName.MORE,
  11 + package: PackagesCategoryEnum.CHARTS,
  12 + chartFrame: ChartFrameEnum.COMMON,
  13 + image: 'graph.png'
  14 +}
... ...
  1 +<template>
  2 + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart>
  3 +</template>
  4 +
  5 +<script setup lang="ts">
  6 +import { ref, computed, PropType, watch } from 'vue'
  7 +import VChart from 'vue-echarts'
  8 +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
  9 +import dataJson from './data.json'
  10 +import { use } from 'echarts/core'
  11 +import { CanvasRenderer } from 'echarts/renderers'
  12 +import { RadarChart } from 'echarts/charts'
  13 +import { includes } from './config'
  14 +import { mergeTheme, setOption } from '@/packages/public/chart'
  15 +import { useChartDataFetch } from '@/hooks'
  16 +import { CreateComponentType } from '@/packages/index.d'
  17 +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
  18 +import { isPreview } from '@/utils'
  19 +import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
  20 +
  21 +const props = defineProps({
  22 + themeSetting: {
  23 + type: Object,
  24 + required: true
  25 + },
  26 + themeColor: {
  27 + type: Object,
  28 + required: true
  29 + },
  30 + chartConfig: {
  31 + type: Object as PropType<CreateComponentType>,
  32 + required: true
  33 + }
  34 +})
  35 +
  36 +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
  37 +
  38 +use([DatasetComponent, CanvasRenderer, RadarChart, GridComponent, TooltipComponent, LegendComponent])
  39 +
  40 +const vChartRef = ref<typeof VChart>()
  41 +
  42 +const option = computed(() => {
  43 + return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
  44 +})
  45 +
  46 +const dataSetHandle = (dataset: typeof dataJson) => {
  47 + if (dataset.nodes) {
  48 + props.chartConfig.option.series[0].data = dataset.nodes
  49 + }
  50 + if (dataset.links) {
  51 + props.chartConfig.option.series[0].links = dataset.links
  52 + }
  53 + if (dataset.categories) {
  54 + props.chartConfig.option.series[0].categories = dataset.categories
  55 + // @ts-ignore
  56 + props.chartConfig.option.legend.data = dataset.categories.map((i: { name: string }) => i.name)
  57 + }
  58 + if (vChartRef.value && isPreview()) {
  59 + setOption(vChartRef.value, props.chartConfig.option)
  60 + }
  61 +}
  62 +
  63 +watch(
  64 + () => props.chartConfig.option.dataset,
  65 + newData => {
  66 + try {
  67 + dataSetHandle(newData)
  68 + } catch (error) {
  69 + console.log(error)
  70 + }
  71 + },
  72 + {
  73 + deep: false
  74 + }
  75 +)
  76 +
  77 +useChartDataFetch(props.chartConfig, useChartEditStore, (newData: typeof dataJson) => {
  78 + dataSetHandle(newData)
  79 +})
  80 +</script>
... ...
  1 +import { echartOptionProfixHandle, PublicConfigClass } from '@/packages/public'
  2 +import { SankeyConfig } from './index'
  3 +import { CreateComponentType } from '@/packages/index.d'
  4 +import cloneDeep from 'lodash/cloneDeep'
  5 +import dataJson from './data.json'
  6 +
  7 +export const includes = ['legend']
  8 +
  9 +// 图表方向
  10 +export const orientList = [
  11 + { label: '水平', value: 'horizontal' },
  12 + { label: '垂直', value: 'vertical' }
  13 +]
  14 +
  15 +// 标签展示
  16 +export const toolTipSwitch = [
  17 + { label: '开启', value: 1 },
  18 + { label: '关闭', value: 0 }
  19 +]
  20 +
  21 +export const option = {
  22 + dataset: { ...dataJson },
  23 + tooltip: {
  24 + show: 1,
  25 + trigger: 'item',
  26 + triggerOn: 'mousemove'
  27 + },
  28 + series: {
  29 + type: 'sankey',
  30 + layout: 'none',
  31 + orient:'horizontal',
  32 + data: dataJson.label,
  33 + links: dataJson.links,
  34 + levels: dataJson.levels
  35 + }
  36 +};
  37 +
  38 +export default class Config extends PublicConfigClass implements CreateComponentType {
  39 + public key = SankeyConfig.key
  40 + public chartConfig = cloneDeep(SankeyConfig)
  41 + // 图表配置项
  42 + public option = echartOptionProfixHandle(option, includes)
  43 +}
... ...
  1 +<template>
  2 + <div>
  3 + <CollapseItem name="桑基图" :expanded="true">
  4 + <SettingItemBox name="样式">
  5 + <SettingItem name="方向">
  6 + <n-select
  7 + v-model:value="sankeyConfig.orient"
  8 + size="small"
  9 + :options="orientList"
  10 + placeholder="选择方向"
  11 + />
  12 + </SettingItem>
  13 + <SettingItem name="提示标签">
  14 + <n-select
  15 + v-model:value="optionData.tooltip.show"
  16 + size="small"
  17 + :options="toolTipSwitch"
  18 + placeholder="是否开启"
  19 + />
  20 + </SettingItem>
  21 + </SettingItemBox>
  22 + </CollapseItem>
  23 + </div>
  24 +</template>
  25 +
  26 +<script setup lang="ts">
  27 +import { PropType, computed } from 'vue'
  28 +import { CollapseItem, SettingItemBox, SettingItem } from '@/components/Pages/ChartItemSetting'
  29 +import { option, orientList, toolTipSwitch } from './config'
  30 +import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  31 +
  32 +const props = defineProps({
  33 + optionData: {
  34 + type: Object as PropType<typeof option & GlobalThemeJsonType>,
  35 + required: true
  36 + }
  37 +})
  38 +
  39 +const sankeyConfig = computed<typeof option.series>(() => {
  40 + return props.optionData.series
  41 +})
  42 +
  43 +</script>
... ...
  1 +{
  2 + "label": [
  3 + {
  4 + "name": "a"
  5 + },
  6 + {
  7 + "name": "b"
  8 + },
  9 + {
  10 + "name": "a1"
  11 + },
  12 + {
  13 + "name": "a2"
  14 + },
  15 + {
  16 + "name": "b1"
  17 + },
  18 + {
  19 + "name": "b2"
  20 + }
  21 + ],
  22 + "links": [
  23 + {
  24 + "source": "a",
  25 + "target": "a1",
  26 + "value": 5
  27 + },
  28 + {
  29 + "source": "a",
  30 + "target": "a2",
  31 + "value": 3
  32 + },
  33 + {
  34 + "source": "b",
  35 + "target": "b1",
  36 + "value": 8
  37 + },
  38 + {
  39 + "source": "a",
  40 + "target": "b1",
  41 + "value": 3
  42 + },
  43 + {
  44 + "source": "b1",
  45 + "target": "a1",
  46 + "value": 1
  47 + },
  48 + {
  49 + "source": "b1",
  50 + "target": "b2",
  51 + "value": 2
  52 + }
  53 + ],
  54 + "levels": [
  55 + {
  56 + "depth": 0,
  57 + "itemStyle": {
  58 + "color": "#decbe4"
  59 + },
  60 + "lineStyle": {
  61 + "color": "source",
  62 + "opacity": 0.9
  63 + }
  64 + },
  65 + {
  66 + "depth": 1,
  67 + "itemStyle": {
  68 + "color": "#b3cde3"
  69 + },
  70 + "lineStyle": {
  71 + "color": "source",
  72 + "opacity": 0.6
  73 + }
  74 + },
  75 + {
  76 + "depth": 2,
  77 + "itemStyle": {
  78 + "color": "#ccebc5"
  79 + },
  80 + "lineStyle": {
  81 + "color": "source",
  82 + "opacity": 0.6
  83 + }
  84 + }
  85 + ]
  86 +}
... ...
  1 +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
  2 +import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
  3 +
  4 +export const SankeyConfig: ConfigType = {
  5 + key: 'Sankey',
  6 + chartKey: 'VSankey',
  7 + conKey: 'VCSankey',
  8 + title: '桑基图',
  9 + category: ChatCategoryEnum.MORE,
  10 + categoryName: ChatCategoryEnumName.MORE,
  11 + package: PackagesCategoryEnum.CHARTS,
  12 + chartFrame: ChartFrameEnum.COMMON,
  13 + image: 'sankey.png'
  14 +}
... ...
  1 +<template>
  2 + <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart>
  3 +</template>
  4 +
  5 +<script setup lang="ts">
  6 +import { ref, computed, PropType, watch } from 'vue'
  7 +import VChart from 'vue-echarts'
  8 +import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
  9 +import dataJson from './data.json'
  10 +import { use } from 'echarts/core'
  11 +import { CanvasRenderer } from 'echarts/renderers'
  12 +import { RadarChart } from 'echarts/charts'
  13 +import { includes } from './config'
  14 +import { mergeTheme, setOption } from '@/packages/public/chart'
  15 +import { useChartDataFetch } from '@/hooks'
  16 +import { CreateComponentType } from '@/packages/index.d'
  17 +import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
  18 +import { isPreview } from '@/utils'
  19 +import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
  20 +
  21 +const props = defineProps({
  22 + themeSetting: {
  23 + type: Object,
  24 + required: true
  25 + },
  26 + themeColor: {
  27 + type: Object,
  28 + required: true
  29 + },
  30 + chartConfig: {
  31 + type: Object as PropType<CreateComponentType>,
  32 + required: true
  33 + }
  34 +})
  35 +
  36 +const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
  37 +
  38 +use([DatasetComponent, CanvasRenderer, RadarChart, GridComponent, TooltipComponent, LegendComponent])
  39 +
  40 +const vChartRef = ref<typeof VChart>()
  41 +
  42 +const option = computed(() => {
  43 + return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
  44 +})
  45 +
  46 +const dataHandle = (dataset: typeof dataJson) => {
  47 + if (dataset.label) {
  48 + props.chartConfig.option.series.data = dataset.label
  49 + }
  50 + if (dataset.links) {
  51 + props.chartConfig.option.series.links = dataset.links
  52 + }
  53 + if (dataset.levels) {
  54 + props.chartConfig.option.series.levels = dataset.levels
  55 + }
  56 + if (vChartRef.value && isPreview()) {
  57 + setOption(vChartRef.value, props.chartConfig.option)
  58 + }
  59 +}
  60 +
  61 +watch(
  62 + () => props.chartConfig.option.dataset,
  63 + newData => {
  64 + try {
  65 + dataHandle(newData)
  66 + } catch (error) {
  67 + console.log(error)
  68 + }
  69 + },
  70 + {
  71 + deep: true
  72 + }
  73 +)
  74 +
  75 +useChartDataFetch(props.chartConfig, useChartEditStore, (newData: typeof dataJson) => {
  76 + dataHandle(newData)
  77 +})
  78 +</script>
... ...
... ... @@ -8,7 +8,6 @@
8 8 <SettingItemBox name="内容">
9 9 <SettingItem name="数值">
10 10 <n-input-number
11   - :disabled="true"
12 11 v-model:value="item.data[0]"
13 12 :min="0"
14 13 :step="0.01"
... ...
... ... @@ -4,5 +4,8 @@ import { FunnelConfig } from './Funnel/index'
4 4 import { HeatmapConfig } from './Heatmap/index'
5 5 import { WaterPoloConfig } from './WaterPolo/index'
6 6 import { TreeMapConfig } from './TreeMap/index'
  7 +import { DialConfig } from './Dial/index'
  8 +import { SankeyConfig } from './Sankey/index'
  9 +import { GraphConfig } from './Graph/index'
7 10
8   -export default [ProcessConfig, RadarConfig, FunnelConfig, HeatmapConfig, WaterPoloConfig, TreeMapConfig]
  11 +export default [ProcessConfig, RadarConfig, FunnelConfig, HeatmapConfig, WaterPoloConfig, TreeMapConfig, GraphConfig, SankeyConfig, DialConfig]
... ...
... ... @@ -18,7 +18,14 @@ export const PieTypeObject = {
18 18 [PieTypeEnum.ROSE]: 'rose'
19 19 }
20 20
  21 +// 其它配置
  22 +const otherConfig = {
  23 + // 轮播动画
  24 + isCarousel: false,
  25 +}
  26 +
21 27 const option = {
  28 + ...otherConfig,
22 29 type: 'ring',
23 30 tooltip: {
24 31 show: true,
... ...
... ... @@ -7,6 +7,17 @@
7 7 <n-select v-model:value="optionData.type" size="small" :options="fontWeightOptions" />
8 8 </SettingItem>
9 9 </SettingItemBox>
  10 + <SettingItemBox name="动画" :alone="true">
  11 + <SettingItem>
  12 + <n-space>
  13 + <n-switch v-model:value="optionData.isCarousel" size="small"></n-switch>
  14 + <n-text>开启<n-text :depth="3">(将自动隐藏图例)</n-text></n-text>
  15 + </n-space>
  16 + </SettingItem>
  17 + <SettingItem>
  18 + <n-text :depth="3">无鼠标点击图例场景时,可强行打开图例</n-text>
  19 + </SettingItem>
  20 + </SettingItemBox>
10 21 <SettingItemBox name="标签">
11 22 <SettingItem>
12 23 <n-space>
... ...
1 1 <template>
2   - <v-chart ref="vChartRef" :init-options="initOptions" :theme="themeColor" :option="option" :manual-update="isPreview()" autoresize></v-chart>
  2 + <v-chart ref="vChartRef" autoresize :init-options="initOptions" :theme="themeColor" :option="option"
  3 + :manual-update="isPreview()" @mouseover="handleHighlight" @mouseout="handleDownplay"></v-chart>
3 4 </template>
4 5
5 6 <script setup lang="ts">
6   -import { computed, PropType, reactive, watch } from 'vue'
  7 +import { computed, onMounted, PropType, reactive, watch } from 'vue'
7 8 import VChart from 'vue-echarts'
8 9 import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
9 10 import { use } from 'echarts/core'
... ... @@ -15,6 +16,7 @@ import { useChartDataFetch } from '@/hooks'
15 16 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
16 17 import { isPreview } from '@/utils'
17 18 import { DatasetComponent, GridComponent, TooltipComponent, LegendComponent } from 'echarts/components'
  19 +import dataJson from './data.json'
18 20
19 21 const props = defineProps({
20 22 themeSetting: {
... ... @@ -30,8 +32,10 @@ const props = defineProps({
30 32 required: true
31 33 }
32 34 })
33   -
34 35 const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
  36 +let seriesDataNum = -1
  37 +let seriesDataMaxLength = 0
  38 +let intervalInstance: any = null
35 39
36 40 use([DatasetComponent, CanvasRenderer, PieChart, GridComponent, TooltipComponent, LegendComponent])
37 41
... ... @@ -39,6 +43,54 @@ const option = computed(() => {
39 43 return mergeTheme(props.chartConfig.option, props.themeSetting, includes)
40 44 })
41 45
  46 +// 会重新选择需要选中和展示的数据
  47 +const handleSeriesData = () => {
  48 + if (seriesDataNum > -1) {
  49 + vChartRef.value?.dispatchAction({
  50 + type: 'downplay',
  51 + dataIndex: seriesDataNum
  52 + })
  53 + }
  54 + seriesDataNum = seriesDataNum >= seriesDataMaxLength - 1 ? 0 : seriesDataNum + 1
  55 + vChartRef.value?.dispatchAction({
  56 + type: 'highlight',
  57 + dataIndex: seriesDataNum
  58 + })
  59 +}
  60 +
  61 +// 新增轮播
  62 +const addPieInterval = (newData?: typeof dataJson, skipPre = false) => {
  63 + if (!skipPre && !Array.isArray(newData?.source)) return
  64 + if (!skipPre) seriesDataMaxLength = newData?.source.length || 0
  65 + clearInterval(intervalInstance)
  66 + intervalInstance = setInterval(() => {
  67 + handleSeriesData()
  68 + }, 1000)
  69 +}
  70 +
  71 +// 取消轮播
  72 +const clearPieInterval = () => {
  73 + vChartRef.value?.dispatchAction({
  74 + type: 'downplay',
  75 + dataIndex: seriesDataNum
  76 + })
  77 + clearInterval(intervalInstance)
  78 + intervalInstance = null
  79 +}
  80 +
  81 +// 处理鼠标聚焦高亮内容
  82 +const handleHighlight = () => {
  83 + clearPieInterval()
  84 +}
  85 +
  86 +// 处理鼠标取消悬浮
  87 +const handleDownplay = () => {
  88 + if (props.chartConfig.option.isCarousel && !intervalInstance) {
  89 + // 恢复轮播
  90 + addPieInterval(undefined, true)
  91 + }
  92 +}
  93 +
42 94 watch(
43 95 () => props.chartConfig.option.type,
44 96 newData => {
... ... @@ -60,5 +112,27 @@ watch(
60 112 { deep: false, immediate: true }
61 113 )
62 114
  115 +watch(
  116 + () => props.chartConfig.option.isCarousel,
  117 + newData => {
  118 + if (newData) {
  119 + addPieInterval(undefined, true)
  120 + props.chartConfig.option.legend.show = false
  121 + } else {
  122 + props.chartConfig.option.legend.show = true
  123 + clearPieInterval()
  124 + }
  125 + }
  126 +)
  127 +
63 128 const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore)
  129 +
  130 +
  131 +
  132 +onMounted(() => {
  133 + seriesDataMaxLength = dataJson.source.length
  134 + if (props.chartConfig.option.isCarousel) {
  135 + addPieInterval(undefined, true)
  136 + }
  137 +})
64 138 </script>
... ...
... ... @@ -16,6 +16,7 @@ export interface OptionType {
16 16 flipperGap: number
17 17 flipperType: FlipType
18 18 flipperSpeed: number
  19 + flipperBorderWidth: number
19 20 }
20 21
21 22 export const option: OptionType = {
... ... @@ -28,7 +29,8 @@ export const option: OptionType = {
28 29 flipperRadius: 5,
29 30 flipperGap: 10,
30 31 flipperType: 'down',
31   - flipperSpeed: 450
  32 + flipperSpeed: 450,
  33 + flipperBorderWidth: 0,
32 34 }
33 35
34 36 export default class Config extends PublicConfigClass implements CreateComponentType {
... ...
... ... @@ -16,12 +16,16 @@
16 16 <setting-item name="高度">
17 17 <n-input-number v-model:value="optionData.flipperHeight" size="small" :min="1"></n-input-number>
18 18 </setting-item>
19   - <setting-item name="间隔">
20   - <n-input-number v-model:value="optionData.flipperGap" size="small" :min="0"></n-input-number>
  19 + <setting-item name="边框">
  20 + <n-input-number v-model:value="optionData.flipperBorderWidth" size="small" :min="0" :max="10"></n-input-number>
21 21 </setting-item>
22 22 <setting-item name="圆角">
23 23 <n-input-number v-model:value="optionData.flipperRadius" size="small" :min="0"></n-input-number>
24 24 </setting-item>
  25 + <setting-item name="翻牌间隔">
  26 + <n-input-number v-model:value="optionData.flipperGap" size="small" :min="0"></n-input-number>
  27 + </setting-item>
  28 + <setting-item />
25 29 <setting-item name="背景色">
26 30 <n-color-picker
27 31 size="small"
... ...